From 478e6e390f04d085a24f557ee11306bc1396cfa7 Mon Sep 17 00:00:00 2001 From: Yonglong Liu Date: Fri, 10 Sep 2021 20:00:03 +0800 Subject: [PATCH 102/283] net: hns3: fix speed unknown issue in bond 4 mainline inclusion from mainline-v5.14 commit b15c072a9f4a404c09ad589477f4389034742a8b category: bugfix bugzilla: https://gitee.com/src-openeuler/kernel/issues/I8EMYT CVE: NA Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b15c072a9f4a404c09ad589477f4389034742a8b ---------------------------------------------------------------------- In bond 4, when the link goes down and up repeatedly, the bond may get an unknown speed, and then this port can not work. The driver notify netif_carrier_on() before update the link state, when the bond receive carrier on, will query the speed of the port, if the query operation happens before updating the link state, will get an unknown speed. So need to notify netif_carrier_on() after update the link state. Fixes: 46a3df9f9718 ("net: hns3: Add HNS3 Acceleration Engine & Compatibility Layer Support") Fixes: e2cb1dec9779 ("net: hns3: Add HNS3 VF HCL(Hardware Compatibility Layer) Support") Signed-off-by: Yonglong Liu Signed-off-by: Guangbin Huang Signed-off-by: Jakub Kicinski Reviewed-by: Yongxin Li Signed-off-by: Junxin Chen Signed-off-by: Zheng Zengkai Signed-off-by: Xiaodong Li Conflicts: drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_mbx.c --- drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_mbx.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_mbx.c b/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_mbx.c index ec2b4e653893..244b83e22f53 100644 --- a/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_mbx.c +++ b/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_mbx.c @@ -343,6 +343,7 @@ void hclgevf_mbx_async_handler(struct hclgevf_dev *hdev) /* update upper layer with new link link status */ hclgevf_update_speed_duplex(hdev, speed, duplex); hclgevf_update_link_status(hdev, link_status); + if (flag & HCLGE_MBX_PUSH_LINK_STATUS_EN) set_bit(HCLGEVF_STATE_PF_PUSH_LINK_STATUS, &hdev->state); -- 2.34.1