diff --git a/drivers/net/ethernet/hisilicon/hns3/hnae3.h b/drivers/net/ethernet/hisilicon/hns3/hnae3.h index df4cec542389ff556f0e5e02daa01c7abe5220a5..db22a57ec62bf8fca416e85ea84a5340d76e38fe 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hnae3.h +++ b/drivers/net/ethernet/hisilicon/hns3/hnae3.h @@ -477,7 +477,7 @@ struct hnae3_ae_ops { u16 (*get_global_queue_id)(struct hnae3_handle *handle, u16 queue_id); int (*mac_connect_phy)(struct hnae3_handle *handle); void (*mac_disconnect_phy)(struct hnae3_handle *handle); - bool (*reset_fail)(struct hnae3_handle *handle); + bool (*reset_done)(struct hnae3_handle *handle, bool done); void (*restore_vlan_table)(struct hnae3_handle *handle); #ifdef CONFIG_HNS3_TEST int (*send_cmdq)(struct hnae3_handle *handle, void *data, int num); diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.c index 7dcbcca62023ae0a845de3bd94ef94916865db71..eaea8783aa3bc35d15da0fcba4c94f87f99c9082 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_cmd.c @@ -376,7 +376,6 @@ int hclge_cmd_init(struct hclge_dev *hdev) * reset may happen when lower level reset is being processed. */ if ((hclge_is_reset_pending(hdev))) { - set_bit(HCLGE_STATE_CMD_DISABLE, &hdev->state); ret = -EBUSY; goto err_cmd_init; } diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c index 1c3ba2898470b9dbce86917d2df503260a70251e..10e955fba5afe322cbbbf92bc066dbd2c05cc32f 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c @@ -2885,8 +2885,8 @@ static bool hclge_reset_err_handle(struct hclge_dev *hdev, bool is_timeout) hclge_clear_reset_cause(hdev); - if (handle && handle->ae_algo->ops->reset_fail) - handle->ae_algo->ops->reset_fail(handle); + if (handle && handle->ae_algo->ops->reset_done) + handle->ae_algo->ops->reset_done(handle, false); return false; } @@ -3005,9 +3005,10 @@ static void hclge_reset(struct hclge_dev *hdev) hdev->reset_fail_cnt = 0; hdev->rst_stats.reset_done_cnt++; ae_dev->reset_type = HNAE3_NONE_RESET; + del_timer(&hdev->reset_timer); - if (handle && handle->ae_algo->ops->reset_fail) - handle->ae_algo->ops->reset_fail(handle); + if (handle && handle->ae_algo->ops->reset_done) + handle->ae_algo->ops->reset_done(handle, true); return; @@ -3079,17 +3080,15 @@ static void hclge_reset_timer(struct timer_list *t) hclge_reset_event(hdev->pdev, NULL); } -bool hclge_reset_fail(struct hnae3_handle *handle) +bool hclge_reset_done(struct hnae3_handle *handle, bool done) { struct hclge_vport *vport = hclge_get_vport(handle); struct hclge_dev *hdev = vport->back; - if (hdev->reset_fail_cnt >= HCLGE_RESET_MAX_FAIL_CNT) { + if (hdev->reset_fail_cnt >= HCLGE_RESET_MAX_FAIL_CNT) dev_err(&hdev->pdev->dev, "Reset fail!\n"); - return false; - } - return true; + return done; } static void hclge_reset_subtask(struct hclge_dev *hdev) @@ -8927,7 +8926,7 @@ struct hnae3_ae_ops hclge_ops = { .get_global_queue_id = hclge_covert_handle_qid_global, .mac_connect_phy = hclge_mac_connect_phy, .mac_disconnect_phy = hclge_mac_disconnect_phy, - .reset_fail = hclge_reset_fail, + .reset_done = hclge_reset_done, .restore_vlan_table = hclge_restore_vlan_table, };