return false;
 }
 
-static void hnae3_set_client_init_flag(struct hnae3_client *client,
-                                      struct hnae3_ae_dev *ae_dev, int inited)
+void hnae3_set_client_init_flag(struct hnae3_client *client,
+                               struct hnae3_ae_dev *ae_dev, int inited)
 {
        switch (client->type) {
        case HNAE3_CLIENT_KNIC:
                break;
        }
 }
+EXPORT_SYMBOL(hnae3_set_client_init_flag);
 
 static int hnae3_get_client_init_flag(struct hnae3_client *client,
                                       struct hnae3_ae_dev *ae_dev)
        /* now, (un-)instantiate client by calling lower layer */
        if (is_reg) {
                ret = ae_dev->ops->init_client_instance(client, ae_dev);
-               if (ret) {
+               if (ret)
                        dev_err(&ae_dev->pdev->dev,
                                "fail to instantiate client, ret = %d\n", ret);
-                       return ret;
-               }
 
-               hnae3_set_client_init_flag(client, ae_dev, 1);
-               return 0;
+               return ret;
        }
 
        if (hnae3_get_client_init_flag(client, ae_dev)) {
 
 
 void hnae3_unregister_client(struct hnae3_client *client);
 int hnae3_register_client(struct hnae3_client *client);
+
+void hnae3_set_client_init_flag(struct hnae3_client *client,
+                               struct hnae3_ae_dev *ae_dev, int inited);
 #endif
 
                                goto clear_nic;
                        }
 
+                       hnae3_set_client_init_flag(client, ae_dev, 1);
+
                        if (hdev->roce_client &&
                            hnae3_dev_roce_supported(hdev)) {
                                struct hnae3_client *rc = hdev->roce_client;
                                ret = rc->ops->init_instance(&vport->roce);
                                if (ret)
                                        goto clear_roce;
+
+                               hnae3_set_client_init_flag(hdev->roce_client,
+                                                          ae_dev, 1);
                        }
 
                        break;
                        if (ret)
                                goto clear_nic;
 
+                       hnae3_set_client_init_flag(client, ae_dev, 1);
+
                        break;
                case HNAE3_CLIENT_ROCE:
                        if (hnae3_dev_roce_supported(hdev)) {
                                ret = client->ops->init_instance(&vport->roce);
                                if (ret)
                                        goto clear_roce;
+
+                               hnae3_set_client_init_flag(client, ae_dev, 1);
                        }
                }
        }
 
                if (ret)
                        goto clear_nic;
 
+               hnae3_set_client_init_flag(client, ae_dev, 1);
+
                if (hdev->roce_client && hnae3_dev_roce_supported(hdev)) {
                        struct hnae3_client *rc = hdev->roce_client;
 
                        ret = rc->ops->init_instance(&hdev->roce);
                        if (ret)
                                goto clear_roce;
+
+                       hnae3_set_client_init_flag(hdev->roce_client, ae_dev,
+                                                  1);
                }
                break;
        case HNAE3_CLIENT_UNIC:
                ret = client->ops->init_instance(&hdev->nic);
                if (ret)
                        goto clear_nic;
+
+               hnae3_set_client_init_flag(client, ae_dev, 1);
                break;
        case HNAE3_CLIENT_ROCE:
                if (hnae3_dev_roce_supported(hdev)) {
                        if (ret)
                                goto clear_roce;
                }
+
+               hnae3_set_client_init_flag(client, ae_dev, 1);
        }
 
        return 0;