Patch "net: ethernet: oa_tc6: fix infinite loop error when tx credits becomes 0" has been added to the 6.12-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: ethernet: oa_tc6: fix infinite loop error when tx credits becomes 0

to the 6.12-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-ethernet-oa_tc6-fix-infinite-loop-error-when-tx-.patch
and it can be found in the queue-6.12 subdirectory.

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



commit b3c6166f35e6b02c3392e1e4e5b692f01ac925cd
Author: Parthiban Veerasooran <parthiban.veerasooran@xxxxxxxxxxxxx>
Date:   Fri Dec 13 18:01:58 2024 +0530

    net: ethernet: oa_tc6: fix infinite loop error when tx credits becomes 0
    
    [ Upstream commit 7d2f320e12744e5906a4fab40381060a81d22c12 ]
    
    SPI thread wakes up to perform SPI transfer whenever there is an TX skb
    from n/w stack or interrupt from MAC-PHY. Ethernet frame from TX skb is
    transferred based on the availability tx credits in the MAC-PHY which is
    reported from the previous SPI transfer. Sometimes there is a possibility
    that TX skb is available to transmit but there is no tx credits from
    MAC-PHY. In this case, there will not be any SPI transfer but the thread
    will be running in an endless loop until tx credits available again.
    
    So checking the availability of tx credits along with TX skb will prevent
    the above infinite loop. When the tx credits available again that will be
    notified through interrupt which will trigger the SPI transfer to get the
    available tx credits.
    
    Fixes: 53fbde8ab21e ("net: ethernet: oa_tc6: implement transmit path to transfer tx ethernet frames")
    Reviewed-by: Jacob Keller <jacob.e.keller@xxxxxxxxx>
    Signed-off-by: Parthiban Veerasooran <parthiban.veerasooran@xxxxxxxxxxxxx>
    Signed-off-by: Paolo Abeni <pabeni@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/oa_tc6.c b/drivers/net/ethernet/oa_tc6.c
index f9c0dcd965c2..4c8b0ca922b7 100644
--- a/drivers/net/ethernet/oa_tc6.c
+++ b/drivers/net/ethernet/oa_tc6.c
@@ -1111,8 +1111,9 @@ static int oa_tc6_spi_thread_handler(void *data)
 		/* This kthread will be waken up if there is a tx skb or mac-phy
 		 * interrupt to perform spi transfer with tx chunks.
 		 */
-		wait_event_interruptible(tc6->spi_wq, tc6->waiting_tx_skb ||
-					 tc6->int_flag ||
+		wait_event_interruptible(tc6->spi_wq, tc6->int_flag ||
+					 (tc6->waiting_tx_skb &&
+					 tc6->tx_credits) ||
 					 kthread_should_stop());
 
 		if (kthread_should_stop())




[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