mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-28 13:22:57 +00:00
igc: Avoid transmit queue timeout for XDP
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>
This commit is contained in:
parent
02f8fc1a67
commit
95b6814855
1 changed files with 8 additions and 0 deletions
|
@ -2411,6 +2411,8 @@ static int igc_xdp_xmit_back(struct igc_adapter *adapter, struct xdp_buff *xdp)
|
|||
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;
|
||||
|
@ -2829,6 +2831,9 @@ static void igc_xdp_xmit_zc(struct igc_ring *ring)
|
|||
|
||||
__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--) {
|
||||
|
@ -6354,6 +6359,9 @@ static int igc_xdp_xmit(struct net_device *dev, int num_frames,
|
|||
|
||||
__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;
|
||||
|
|
Loading…
Reference in a new issue