net: hns3: add a resetting check in hclgevf_init_nic_client_instance()

To prevent from initializing VF NIC client in reset handling state,
this patch adds resetting check in hclgevf_init_nic_client_instance().

Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Guangbin Huang 2020-05-27 08:59:14 +08:00 committed by David S. Miller
parent 4a11c551a6
commit 4cd5beaa89

View file

@ -2713,6 +2713,7 @@ static int hclgevf_init_nic_client_instance(struct hnae3_ae_dev *ae_dev,
struct hnae3_client *client) struct hnae3_client *client)
{ {
struct hclgevf_dev *hdev = ae_dev->priv; struct hclgevf_dev *hdev = ae_dev->priv;
int rst_cnt = hdev->rst_stats.rst_cnt;
int ret; int ret;
ret = client->ops->init_instance(&hdev->nic); ret = client->ops->init_instance(&hdev->nic);
@ -2720,6 +2721,14 @@ static int hclgevf_init_nic_client_instance(struct hnae3_ae_dev *ae_dev,
return ret; return ret;
set_bit(HCLGEVF_STATE_NIC_REGISTERED, &hdev->state); set_bit(HCLGEVF_STATE_NIC_REGISTERED, &hdev->state);
if (test_bit(HCLGEVF_STATE_RST_HANDLING, &hdev->state) ||
rst_cnt != hdev->rst_stats.rst_cnt) {
clear_bit(HCLGEVF_STATE_NIC_REGISTERED, &hdev->state);
client->ops->uninit_instance(&hdev->nic, 0);
return -EBUSY;
}
hnae3_set_client_init_flag(client, ae_dev, 1); hnae3_set_client_init_flag(client, ae_dev, 1);
if (netif_msg_drv(&hdev->nic)) if (netif_msg_drv(&hdev->nic))