Patch "net: fec: avoid tx queue timeout when XDP is enabled" has been added to the 6.4-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    net: fec: avoid tx queue timeout when XDP is enabled

to the 6.4-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     net-fec-avoid-tx-queue-timeout-when-xdp-is-enabled.patch
and it can be found in the queue-6.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit c9296157252c237133e5f9b53c0888ccbdc21954
Author: Wei Fang <wei.fang@xxxxxxx>
Date:   Fri Jul 21 16:35:59 2023 +0800

    net: fec: avoid tx queue timeout when XDP is enabled
    
    [ Upstream commit bb7a0156365dffe2fcd63e2051145fbe4f8908b4 ]
    
    According to the implementation of XDP of FEC driver, the XDP path
    shares the transmit queues with the kernel network stack, so it is
    possible to lead to a tx timeout event when XDP uses the tx queue
    pretty much exclusively. And this event will cause the reset of the
    FEC hardware.
    To avoid timeout in this case, we use the txq_trans_cond_update()
    interface to update txq->trans_start to jiffies so that watchdog
    won't generate a transmit timeout warning.
    
    Fixes: 6d6b39f180b8 ("net: fec: add initial XDP support")
    Signed-off-by: Wei Fang <wei.fang@xxxxxxx>
    Link: https://lore.kernel.org/r/20230721083559.2857312-1-wei.fang@xxxxxxx
    Signed-off-by: Jakub Kicinski <kuba@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
index 7659888a96917..a1b0abe54a0e5 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -3908,6 +3908,8 @@ static int fec_enet_xdp_xmit(struct net_device *dev,
 
 	__netif_tx_lock(nq, cpu);
 
+	/* Avoid tx timeout as XDP shares the queue with kernel stack */
+	txq_trans_cond_update(nq);
 	for (i = 0; i < num_frames; i++) {
 		if (fec_enet_txq_xmit_frame(fep, txq, frames[i]) != 0)
 			break;



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux