!25 fix ATR queue selection

From: @gebidelidaye
Reviewed-by: @wangxp006
Signed-off-by: @wangxp006
This commit is contained in:
openeuler-ci-bot 2021-11-04 03:38:09 +00:00 committed by Gitee
commit 62c82f05ee
2 changed files with 61 additions and 1 deletions

View File

@ -0,0 +1,53 @@
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>
---
src/i40e_txrx.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/i40e_txrx.c b/src/i40e_txrx.c
index 0ca5a17..8236cde 100644
--- a/src/i40e_txrx.c
+++ b/src/i40e_txrx.c
@@ -4189,8 +4189,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 netdev_pick_tx(netdev, skb, sb_dev);
prio = skb->priority;
hw = &vsi->back->hw;
--
1.8.3.1

View File

@ -9,7 +9,7 @@
Name: i40e
Summary: Intel(R) 40-10 Gigabit Ethernet Connection Network Driver
Version: 2.14.13
Release: 6
Release: 7
Vendor: Intel Corporation
License: GPL-2.0
URL: http://support.intel.com
@ -18,6 +18,7 @@ Source0: https://downloadcenter.intel.com/download/24411/Intel-Network-Adapter-D
Patch0001: fix-gcc9-new-warning.patch
Patch6000: backport-extend-coalesce-setting-uAPI-with-CQE-mode.patch
Patch6001: backport-fix-ATR-queue-selection.patch
Requires: kernel, findutils, gawk, bash, hwdata
@ -385,6 +386,12 @@ else
fi
%changelog
* Thu Nov 4 2021 Aichun Li <liaichun@huawei.com> - 2.14.13-7
- Type:bugfix
- ID:NA
- SUG:NA
- DESC:fix ATR queue selection
* Thu Sep 16 2021 xihaochen<xihaochen@huawei.com> - 2.14.13-6
- Type:bugfix
- ID:NA