]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
net: hns3: use netif_tx_disable to stop the transmit queue
authorPeng Li <lipeng321@huawei.com>
Fri, 30 Apr 2021 09:06:20 +0000 (17:06 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 19 May 2021 08:08:26 +0000 (10:08 +0200)
[ Upstream commit b416e872be06fdace3c36cf5210130509d0f0e72 ]

Currently, netif_tx_stop_all_queues() is used to ensure that
the xmit is not running, but for the concurrent case it will
not take effect, since netif_tx_stop_all_queues() just sets
a flag without locking to indicate that the xmit queue(s)
should not be run.

So use netif_tx_disable() to replace netif_tx_stop_all_queues(),
it takes the xmit queue lock while marking the queue stopped.

Fixes: 76ad4f0ee747 ("net: hns3: Add support of HNS3 Ethernet Driver for hip08 SoC")
Signed-off-by: Peng Li <lipeng321@huawei.com>
Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c

index 3dd3b8047968430c68384e2b27b7cbbbcdd1084d..5f2948bafff21ba6e71f4fe17886da00fda240a2 100644 (file)
@@ -539,8 +539,8 @@ static int hns3_nic_net_stop(struct net_device *netdev)
        if (h->ae_algo->ops->set_timer_task)
                h->ae_algo->ops->set_timer_task(priv->ae_handle, false);
 
-       netif_tx_stop_all_queues(netdev);
        netif_carrier_off(netdev);
+       netif_tx_disable(netdev);
 
        hns3_nic_net_down(netdev);