add Fix-ATR-queue-selection.patch.
This commit is contained in:
parent
0ddf9d5144
commit
51c076e0ce
58
Fix-ATR-queue-selection.patch
Normal file
58
Fix-ATR-queue-selection.patch
Normal file
@ -0,0 +1,58 @@
|
||||
From a222be597e316389f9f8c26033352c124ce93056 Mon Sep 17 00:00:00 2001
|
||||
From: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
|
||||
Date: Wed, 18 Aug 2021 10:42:16 -0700
|
||||
Subject: i40e: Fix ATR queue selection
|
||||
|
||||
Without this patch, ATR does not work. Receive/transmit uses queue
|
||||
selection based on SW DCB hashing method.
|
||||
|
||||
If traffic classes are not configured for PF, then use
|
||||
netdev_pick_tx function for selecting queue for packet transmission.
|
||||
Instead of calling i40e_swdcb_skb_tx_hash, call netdev_pick_tx,
|
||||
which ensures that packet is transmitted/received from CPU that is
|
||||
running the application.
|
||||
|
||||
Reproduction steps:
|
||||
1. Load i40e driver
|
||||
2. Map each MSI interrupt of i40e port for each CPU
|
||||
3. Disable ntuple, enable ATR i.e.:
|
||||
ethtool -K $interface ntuple off
|
||||
ethtool --set-priv-flags $interface flow-director-atr
|
||||
4. Run application that is generating traffic and is bound to a
|
||||
single CPU, i.e.:
|
||||
taskset -c 9 netperf -H 1.1.1.1 -t TCP_RR -l 10
|
||||
5. Observe behavior:
|
||||
Application's traffic should be restricted to the CPU provided in
|
||||
taskset.
|
||||
|
||||
Fixes: 89ec1f0886c1 ("i40e: Fix queue-to-TC mapping on Tx")
|
||||
Signed-off-by: Przemyslaw Patynowski <przemyslawx.patynowski@intel.com>
|
||||
Signed-off-by: Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
|
||||
Tested-by: Dave Switzer <david.switzer@intel.com>
|
||||
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
|
||||
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||
|
||||
Reference:https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a222be597e316389f9f8c26033352c124ce93056
|
||||
Conflicting:Replaced some interface for adapting to the current kernel
|
||||
---
|
||||
drivers/net/ethernet/intel/i40e/i40e_txrx.c | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
(limited to 'drivers/net/ethernet/intel/i40e')
|
||||
|
||||
diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
|
||||
index 3f25bd8c4924e..10a83e5385c70 100644
|
||||
--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
|
||||
+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
|
||||
@@ -3663,8 +3663,7 @@ u16 i40e_lan_select_queue(struct net_device *netdev,
|
||||
|
||||
/* is DCB enabled at all? */
|
||||
if (vsi->tc_config.numtc == 1)
|
||||
- return i40e_swdcb_skb_tx_hash(netdev, skb,
|
||||
- netdev->real_num_tx_queues);
|
||||
+ return fallback(netdev, skb, sb_dev);
|
||||
|
||||
prio = skb->priority;
|
||||
hw = &vsi->back->hw;
|
||||
--
|
||||
cgit 1.2.3-1.el7
|
||||
Loading…
x
Reference in New Issue
Block a user