rc = devlink_params_register(bp->dl, bnxt_dl_params,
                                     ARRAY_SIZE(bnxt_dl_params));
-       if (rc) {
+       if (rc)
                netdev_warn(bp->dev, "devlink_params_register failed. rc=%d\n",
                            rc);
-               return rc;
-       }
-       devlink_params_publish(bp->dl);
-
-       return 0;
+       return rc;
 }
 
 static void bnxt_dl_params_unregister(struct bnxt *bp)
            bp->hwrm_spec_code > 0x10803)
                bp->eswitch_mode = DEVLINK_ESWITCH_MODE_LEGACY;
 
-       devlink_register(dl);
        if (!BNXT_PF(bp))
-               return 0;
+               goto out;
 
        attrs.flavour = DEVLINK_PORT_FLAVOUR_PHYSICAL;
        attrs.phys.port_number = bp->pf.port_id;
        if (rc)
                goto err_dl_port_unreg;
 
+out:
+       devlink_register(dl);
        return 0;
 
 err_dl_port_unreg:
 {
        struct devlink *dl = bp->dl;
 
+       devlink_unregister(dl);
        if (BNXT_PF(bp)) {
                bnxt_dl_params_unregister(bp);
                devlink_port_unregister(&bp->dl_port);
        }
-       devlink_unregister(dl);
        devlink_free(dl);
 }