2023-08-07 12:30:06

by Jijie Shao

[permalink] [raw]
Subject: [PATCH V2 net 3/4] net: hns3: add wait until mac link down

From: Jie Wang <[email protected]>

In some configure flow of hns3 driver, for example, change mtu, it will
disable MAC through firmware before configuration. But firmware disables
MAC asynchronously. The rx traffic may be not stopped in this case.

So fixes it by waiting until mac link is down.

Fixes: a9775bb64aa7 ("net: hns3: fix set and get link ksettings issue")
Signed-off-by: Jie Wang <[email protected]>
Signed-off-by: Jijie Shao <[email protected]>
---
.../net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
index b440e42e1d9c..a940e35aef29 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
@@ -7560,6 +7560,8 @@ static void hclge_enable_fd(struct hnae3_handle *handle, bool enable)

static void hclge_cfg_mac_mode(struct hclge_dev *hdev, bool enable)
{
+#define HCLGE_LINK_STATUS_WAIT_CNT 3
+
struct hclge_desc desc;
struct hclge_config_mac_mode_cmd *req =
(struct hclge_config_mac_mode_cmd *)desc.data;
@@ -7584,9 +7586,15 @@ static void hclge_cfg_mac_mode(struct hclge_dev *hdev, bool enable)
req->txrx_pad_fcs_loop_en = cpu_to_le32(loop_en);

ret = hclge_cmd_send(&hdev->hw, &desc, 1);
- if (ret)
+ if (ret) {
dev_err(&hdev->pdev->dev,
"mac enable fail, ret =%d.\n", ret);
+ return;
+ }
+
+ if (!enable)
+ hclge_mac_link_status_wait(hdev, HCLGE_LINK_STATUS_DOWN,
+ HCLGE_LINK_STATUS_WAIT_CNT);
}

static int hclge_config_switch_param(struct hclge_dev *hdev, int vfid,
--
2.30.0



2023-08-08 20:39:24

by Leon Romanovsky

[permalink] [raw]
Subject: Re: [PATCH V2 net 3/4] net: hns3: add wait until mac link down

On Mon, Aug 07, 2023 at 07:34:51PM +0800, Jijie Shao wrote:
> From: Jie Wang <[email protected]>
>
> In some configure flow of hns3 driver, for example, change mtu, it will
> disable MAC through firmware before configuration. But firmware disables
> MAC asynchronously. The rx traffic may be not stopped in this case.
>
> So fixes it by waiting until mac link is down.
>
> Fixes: a9775bb64aa7 ("net: hns3: fix set and get link ksettings issue")
> Signed-off-by: Jie Wang <[email protected]>
> Signed-off-by: Jijie Shao <[email protected]>
> ---
> .../net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 10 +++++++++-
> 1 file changed, 9 insertions(+), 1 deletion(-)
>

Thanks,
Reviewed-by: Leon Romanovsky <[email protected]>