| From 653df8452802e92ed3509ea1b16128979ccaf2a6 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 10 Nov 2022 14:45:52 +0800 |
| Subject: net: stmmac: ensure tx function is not running in |
| stmmac_xdp_release() |
| |
| From: Mohd Faizal Abdul Rahim <faizal.abdul.rahim@intel.com> |
| |
| [ 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 | 3 +++ |
| 1 file changed, 3 insertions(+) |
| |
| diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |
| index bc060ef558d3..02827829463f 100644 |
| --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |
| +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |
| @@ -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); |
| |
| -- |
| 2.35.1 |
| |