qdevlink = devlink_priv(dl);
        qdevlink->cdev = cdev;
 
-       devlink_register(dl);
        rc = devlink_params_register(dl, qed_devlink_params,
                                     ARRAY_SIZE(qed_devlink_params));
        if (rc)
                                           QED_DEVLINK_PARAM_ID_IWARP_CMT,
                                           value);
 
-       devlink_params_publish(dl);
        cdev->iwarp_cmt = false;
 
        qed_fw_reporters_create(dl);
-
+       devlink_register(dl);
        return dl;
 
 err_unregister:
-       devlink_unregister(dl);
        devlink_free(dl);
 
        return ERR_PTR(rc);
        if (!devlink)
                return;
 
+       devlink_unregister(devlink);
        qed_fw_reporters_destroy(devlink);
 
        devlink_params_unregister(devlink, qed_devlink_params,
                                  ARRAY_SIZE(qed_devlink_params));
 
-       devlink_unregister(devlink);
        devlink_free(devlink);
 }