]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net: stmmac: ensure tx function is not running in stmmac_xdp_release()
authorMohd Faizal Abdul Rahim <faizal.abdul.rahim@intel.com>
Thu, 10 Nov 2022 06:45:52 +0000 (14:45 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 26 Nov 2022 08:27:34 +0000 (09:27 +0100)
[ Upstream commit 77711683a50477de39757d67ab1a3638220d6860 ]

When stmmac_xdp_release() is called, there is a possibility that tx
function is still running on other queues which will lead to tx queue
timed out and reset adapter.

This commit ensure that tx function is not running xdp before release
flow continue to run.

Fixes: ac746c8520d9 ("net: stmmac: enhance XDP ZC driver level switching performance")
Signed-off-by: Song Yoong Siang <yoong.siang.song@intel.com>
Signed-off-by: Mohd Faizal Abdul Rahim <faizal.abdul.rahim@intel.com>
Signed-off-by: Noor Azura Ahmad Tarmizi <noor.azura.ahmad.tarmizi@intel.com>
Link: https://lore.kernel.org/r/20221110064552.22504-1-noor.azura.ahmad.tarmizi@linux.intel.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c

index bc060ef558d373faf1ebac1c5f4a078479c31847..02827829463f66ab3b0e70d3072faff3f57f4219 100644 (file)
@@ -6564,6 +6564,9 @@ void stmmac_xdp_release(struct net_device *dev)
        struct stmmac_priv *priv = netdev_priv(dev);
        u32 chan;
 
+       /* Ensure tx function is not running */
+       netif_tx_disable(dev);
+
        /* Disable NAPI process */
        stmmac_disable_all_queues(priv);