+++ /dev/null
-From fe08aa05703e772edfc3ad7fd2b01451a397da62 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Wed, 12 Apr 2023 09:36:11 +0200
-Subject: igc: Avoid transmit queue timeout for XDP
-
-From: Kurt Kanzenbach <kurt@linutronix.de>
-
-[ Upstream commit 95b681485563c64585de78662ee52d06b7fa47d9 ]
-
-High XDP load triggers the netdev watchdog:
-
-|NETDEV WATCHDOG: enp3s0 (igc): transmit queue 2 timed out
-
-The reason is the Tx queue transmission start (txq->trans_start) is not updated
-in XDP code path. Therefore, add it for all XDP transmission functions.
-
-Signed-off-by: Kurt Kanzenbach <kurt@linutronix.de>
-Tested-by: Naama Meir <naamax.meir@linux.intel.com>
-Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
-Stable-dep-of: 78adb4bcf99e ("igc: Prevent garbled TX queue with XDP ZEROCOPY")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/net/ethernet/intel/igc/igc_main.c | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
---- a/drivers/net/ethernet/intel/igc/igc_main.c
-+++ b/drivers/net/ethernet/intel/igc/igc_main.c
-@@ -2357,6 +2357,8 @@ static int igc_xdp_xmit_back(struct igc_
- nq = txring_txq(ring);
-
- __netif_tx_lock(nq, cpu);
-+ /* Avoid transmit queue timeout since we share it with the slow path */
-+ txq_trans_cond_update(nq);
- res = igc_xdp_init_tx_descriptor(ring, xdpf);
- __netif_tx_unlock(nq);
- return res;
-@@ -2757,6 +2759,9 @@ static void igc_xdp_xmit_zc(struct igc_r
-
- __netif_tx_lock(nq, cpu);
-
-+ /* Avoid transmit queue timeout since we share it with the slow path */
-+ txq_trans_cond_update(nq);
-+
- budget = igc_desc_unused(ring);
-
- while (xsk_tx_peek_desc(pool, &xdp_desc) && budget--) {
-@@ -6251,6 +6256,9 @@ static int igc_xdp_xmit(struct net_devic
-
- __netif_tx_lock(nq, cpu);
-
-+ /* Avoid transmit queue timeout since we share it with the slow path */
-+ txq_trans_cond_update(nq);
-+
- drops = 0;
- for (i = 0; i < num_frames; i++) {
- int err;
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
- drivers/net/ethernet/intel/igc/igc_main.c | 4 ++--
+ drivers/net/ethernet/intel/igc/igc_main.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c
-index 6b747c7dc935f..67b77effb3409 100644
--- a/drivers/net/ethernet/intel/igc/igc_main.c
+++ b/drivers/net/ethernet/intel/igc/igc_main.c
-@@ -2750,9 +2750,8 @@ static void igc_xdp_xmit_zc(struct igc_ring *ring)
+@@ -2748,15 +2748,15 @@ static void igc_xdp_xmit_zc(struct igc_r
struct netdev_queue *nq = txring_txq(ring);
union igc_adv_tx_desc *tx_desc = NULL;
int cpu = smp_processor_id();
if (!netif_carrier_ok(ring->netdev))
return;
-@@ -2762,6 +2761,7 @@ static void igc_xdp_xmit_zc(struct igc_ring *ring)
- /* Avoid transmit queue timeout since we share it with the slow path */
- txq_trans_cond_update(nq);
+
+ __netif_tx_lock(nq, cpu);
+ ntu = ring->next_to_use;
budget = igc_desc_unused(ring);
while (xsk_tx_peek_desc(pool, &xdp_desc) && budget--) {
---
-2.39.2
-
security-keys-modify-mismatched-function-name.patch
octeontx2-pf-dont-allocate-bpids-for-lbk-interfaces.patch
bpf-fix-subprog-idx-logic-in-check_max_stack_depth.patch
-igc-avoid-transmit-queue-timeout-for-xdp.patch
igc-prevent-garbled-tx-queue-with-xdp-zerocopy.patch
tcp-annotate-data-races-around-tcp_rsk-req-ts_recent.patch
net-ipv4-use-kfree_sensitive-instead-of-kfree.patch