Patch "sfc: fix considering that all channels have TX queues" has been added to the 5.18-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

    sfc: fix considering that all channels have TX queues

to the 5.18-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:
     sfc-fix-considering-that-all-channels-have-tx-queues.patch
and it can be found in the queue-5.18 subdirectory.

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



commit 261fb9514a9120ba76efa7cd10b3af34dff573da
Author: Martin Habets <habetsm.xilinx@xxxxxxxxx>
Date:   Fri May 27 10:05:28 2022 +0200

    sfc: fix considering that all channels have TX queues
    
    [ Upstream commit 2e102b53f8a778f872dc137f4c7ac548705817aa ]
    
    Normally, all channels have RX and TX queues, but this is not true if
    modparam efx_separate_tx_channels=1 is used. In that cases, some
    channels only have RX queues and others only TX queues (or more
    preciselly, they have them allocated, but not initialized).
    
    Fix efx_channel_has_tx_queues to return the correct value for this case
    too.
    
    Messages shown at probe time before the fix:
     sfc 0000:03:00.0 ens6f0np0: MC command 0x82 inlen 544 failed rc=-22 (raw=0) arg=0
     ------------[ cut here ]------------
     netdevice: ens6f0np0: failed to initialise TXQ -1
     WARNING: CPU: 1 PID: 626 at drivers/net/ethernet/sfc/ef10.c:2393 efx_ef10_tx_init+0x201/0x300 [sfc]
     [...] stripped
     RIP: 0010:efx_ef10_tx_init+0x201/0x300 [sfc]
     [...] stripped
     Call Trace:
      efx_init_tx_queue+0xaa/0xf0 [sfc]
      efx_start_channels+0x49/0x120 [sfc]
      efx_start_all+0x1f8/0x430 [sfc]
      efx_net_open+0x5a/0xe0 [sfc]
      __dev_open+0xd0/0x190
      __dev_change_flags+0x1b3/0x220
      dev_change_flags+0x21/0x60
     [...] stripped
    
    Messages shown at remove time before the fix:
     sfc 0000:03:00.0 ens6f0np0: failed to flush 10 queues
     sfc 0000:03:00.0 ens6f0np0: failed to flush queues
    
    Fixes: 8700aff08984 ("sfc: fix channel allocation with brute force")
    Reported-by: Tianhao Zhao <tizhao@xxxxxxxxxx>
    Signed-off-by: Martin Habets <habetsm.xilinx@xxxxxxxxx>
    Tested-by: Íñigo Huguet <ihuguet@xxxxxxxxxx>
    Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/sfc/net_driver.h b/drivers/net/ethernet/sfc/net_driver.h
index c75dc75e2857..d7255d54707c 100644
--- a/drivers/net/ethernet/sfc/net_driver.h
+++ b/drivers/net/ethernet/sfc/net_driver.h
@@ -1535,7 +1535,7 @@ static inline bool efx_channel_is_xdp_tx(struct efx_channel *channel)
 
 static inline bool efx_channel_has_tx_queues(struct efx_channel *channel)
 {
-	return true;
+	return channel && channel->channel >= channel->efx->tx_channel_offset;
 }
 
 static inline unsigned int efx_channel_num_tx_queues(struct efx_channel *channel)



[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