net: hns3: Add a check for client instance init state
If the client instance is initializd failed, we do not need to uninit it.
This patch adds a state check to check init state of client instance.
Fixes: 38caee9d3e
("net: hns3: Add support of the HNAE3 framework")
Signed-off-by: Fuyun Liang <liangfuyun1@huawei.com>
Signed-off-by: Peng Li <lipeng321@huawei.com>
Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
3e249d3bed
Коммит
e3afa96365
|
@ -50,13 +50,22 @@ static int hnae3_match_n_instantiate(struct hnae3_client *client,
|
|||
/* 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\n");
|
||||
return ret;
|
||||
return ret;
|
||||
}
|
||||
|
||||
hnae_set_bit(ae_dev->flag, HNAE3_CLIENT_INITED_B, 1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (hnae_get_bit(ae_dev->flag, HNAE3_CLIENT_INITED_B)) {
|
||||
ae_dev->ops->uninit_client_instance(client, ae_dev);
|
||||
|
||||
hnae_set_bit(ae_dev->flag, HNAE3_CLIENT_INITED_B, 0);
|
||||
}
|
||||
|
||||
ae_dev->ops->uninit_client_instance(client, ae_dev);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -52,6 +52,7 @@
|
|||
#define HNAE3_DEV_INITED_B 0x0
|
||||
#define HNAE3_DEV_SUPPORT_ROCE_B 0x1
|
||||
#define HNAE3_DEV_SUPPORT_DCB_B 0x2
|
||||
#define HNAE3_CLIENT_INITED_B 0x3
|
||||
|
||||
#define HNAE3_DEV_SUPPORT_ROCE_DCB_BITS (BIT(HNAE3_DEV_SUPPORT_DCB_B) |\
|
||||
BIT(HNAE3_DEV_SUPPORT_ROCE_B))
|
||||
|
|
Загрузка…
Ссылка в новой задаче