struct hnae3_handle *handle = &hdev->nic;
        int ret;
 
+       if (!test_bit(HCLGEVF_STATE_NIC_REGISTERED, &hdev->state) ||
+           !client)
+               return 0;
+
        if (!client->ops->reset_notify)
                return -EOPNOTSUPP;
 
                        goto clear_nic;
 
                hnae3_set_client_init_flag(client, ae_dev, 1);
+               set_bit(HCLGEVF_STATE_NIC_REGISTERED, &hdev->state);
 
                if (netif_msg_drv(&hdev->nic))
                        hclgevf_info_show(hdev);
        /* un-init nic/unic, if this was not called by roce client */
        if (client->ops->uninit_instance && hdev->nic_client &&
            client->type != HNAE3_CLIENT_ROCE) {
+               clear_bit(HCLGEVF_STATE_NIC_REGISTERED, &hdev->state);
+
                client->ops->uninit_instance(&hdev->nic, 0);
                hdev->nic_client = NULL;
                hdev->nic.client = NULL;
 
        HCLGEVF_STATE_DOWN,
        HCLGEVF_STATE_DISABLED,
        HCLGEVF_STATE_IRQ_INITED,
+       HCLGEVF_STATE_NIC_REGISTERED,
        /* task states */
        HCLGEVF_STATE_SERVICE_SCHED,
        HCLGEVF_STATE_RST_SERVICE_SCHED,