From 02e0ccfacc8bc5d49039bb5cff5c83a662baddde Mon Sep 17 00:00:00 2001 From: liaichun Date: Sat, 6 Nov 2021 11:05:17 +0800 Subject: [PATCH] i40e:fix ATR queue selection Signed-off-by: liaichun (cherry picked from commit b5275320740b5447a78188b64724a42ad450b73d) --- backport-fix-ATR-queue-selection.patch | 53 ++++++++++++++++++++++++++ i40e.spec | 10 ++++- 2 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 backport-fix-ATR-queue-selection.patch diff --git a/backport-fix-ATR-queue-selection.patch b/backport-fix-ATR-queue-selection.patch new file mode 100644 index 0000000..3208fa4 --- /dev/null +++ b/backport-fix-ATR-queue-selection.patch @@ -0,0 +1,53 @@ +From a222be597e316389f9f8c26033352c124ce93056 Mon Sep 17 00:00:00 2001 +From: Arkadiusz Kubalewski +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 +Signed-off-by: Arkadiusz Kubalewski +Tested-by: Dave Switzer +Signed-off-by: Tony Nguyen +Signed-off-by: Jakub Kicinski +--- + 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 fallback(netdev, skb, sb_dev); + + prio = skb->priority; + hw = &vsi->back->hw; +-- +1.8.3.1 + diff --git a/i40e.spec b/i40e.spec index 1f00004..ff22022 100644 --- a/i40e.spec +++ b/i40e.spec @@ -9,12 +9,14 @@ Name: i40e Summary: Intel(R) 40-10 Gigabit Ethernet Connection Network Driver Version: 2.14.13 -Release: 2 +Release: 3 Vendor: Intel Corporation License: GPL-2.0 URL: http://support.intel.com Source0: https://downloadcenter.intel.com/download/24411/Intel-Network-Adapter-Driver-for-PCIe-40-Gigabit-Ethernet-Network-Connections-Under-Linux-/%{name}-%{version}.tar.gz +Patch6000: backport-fix-ATR-queue-selection.patch + Requires: kernel, findutils, gawk, bash BuildRequires: kernel-devel hwdata elfutils-devel @@ -381,6 +383,12 @@ else fi %changelog +* Sat Nov 6 2021 Aichun Li - 2.14.13-3 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:fix ATR queue selection + * Sat Apr 17 2021 zhujunhao - 2.14.13-2 - fix install problem -- Gitee