| From fe1d5e10fc8f7bf1d513f9ec60774b33d7ce696a Mon Sep 17 00:00:00 2001 |
| From: Yonglong Liu <liuyonglong@huawei.com> |
| Date: Tue, 28 Jul 2020 10:16:49 +0800 |
| Subject: [PATCH] net: hns3: fix a TX timeout issue |
| |
| commit a7e90ee5965fafc53d36e8b3205f08c88d7bc11f upstream. |
| |
| When the queue depth and queue parameters are modified, there is |
| a low probability that TX timeout occurs. The two operations cause |
| the link to be down or up when the watchdog is still working. All |
| queues are stopped when the link is down. After the carrier is on, |
| all queues are woken up. If the watchdog detects the link between |
| the carrier on and wakeup queues, a false TX timeout occurs. |
| |
| So fix this issue by modifying the sequence of carrier on and queue |
| wakeup, which is symmetrical to the link down action. |
| |
| Fixes: 76ad4f0ee747 ("net: hns3: Add support of HNS3 Ethernet Driver for hip08 SoC") |
| Signed-off-by: Yonglong Liu <liuyonglong@huawei.com> |
| Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c |
| index 887a36b2f699..5132431fe372 100644 |
| --- a/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c |
| +++ b/drivers/net/ethernet/hisilicon/hns3/hns3_enet.c |
| @@ -3949,8 +3949,8 @@ static void hns3_link_status_change(struct hnae3_handle *handle, bool linkup) |
| return; |
| |
| if (linkup) { |
| - netif_carrier_on(netdev); |
| netif_tx_wake_all_queues(netdev); |
| + netif_carrier_on(netdev); |
| if (netif_msg_link(handle)) |
| netdev_info(netdev, "link up\n"); |
| } else { |
| -- |
| 2.27.0 |
| |