Skip to content

Commit 8445d9d

Browse files
Jie WangPaolo Abeni
authored andcommitted
net: hns3: fix wrong use of semaphore up
Currently, if hns3 PF or VF FLR reset failed after five times retry, the reset done process will directly release the semaphore which has already released in hclge_reset_prepare_general. This will cause down operation fail. So this patch fixes it by adding reset state judgement. The up operation is only called after successful PF FLR reset. Fixes: 8627bde ("net: hns3: refactor the precedure of PF FLR") Fixes: f28368b ("net: hns3: refactor the procedure of VF FLR") Signed-off-by: Jie Wang <[email protected]> Signed-off-by: Jijie Shao <[email protected]> Signed-off-by: Paolo Abeni <[email protected]>
1 parent 7965a7f commit 8445d9d

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11516,8 +11516,8 @@ static void hclge_reset_done(struct hnae3_ae_dev *ae_dev)
1151611516
dev_err(&hdev->pdev->dev, "fail to rebuild, ret=%d\n", ret);
1151711517

1151811518
hdev->reset_type = HNAE3_NONE_RESET;
11519-
clear_bit(HCLGE_STATE_RST_HANDLING, &hdev->state);
11520-
up(&hdev->reset_sem);
11519+
if (test_and_clear_bit(HCLGE_STATE_RST_HANDLING, &hdev->state))
11520+
up(&hdev->reset_sem);
1152111521
}
1152211522

1152311523
static void hclge_clear_resetting_state(struct hclge_dev *hdev)

drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1747,8 +1747,8 @@ static void hclgevf_reset_done(struct hnae3_ae_dev *ae_dev)
17471747
ret);
17481748

17491749
hdev->reset_type = HNAE3_NONE_RESET;
1750-
clear_bit(HCLGEVF_STATE_RST_HANDLING, &hdev->state);
1751-
up(&hdev->reset_sem);
1750+
if (test_and_clear_bit(HCLGEVF_STATE_RST_HANDLING, &hdev->state))
1751+
up(&hdev->reset_sem);
17521752
}
17531753

17541754
static u32 hclgevf_get_fw_version(struct hnae3_handle *handle)

0 commit comments

Comments
 (0)