From 255a6c703fe13624798137994824324c9f089a81 Mon Sep 17 00:00:00 2001 From: zhongxuan Date: Fri, 29 Oct 2021 20:58:01 +0800 Subject: [PATCH] Fix ATR queue selection --- Fix-ATR-queue-selection.patch | 54 +++++++++++++++++++++++++++++++++++ i40e.spec | 9 +++++- 2 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 Fix-ATR-queue-selection.patch diff --git a/Fix-ATR-queue-selection.patch b/Fix-ATR-queue-selection.patch new file mode 100644 index 0000000..43823b2 --- /dev/null +++ b/Fix-ATR-queue-selection.patch @@ -0,0 +1,54 @@ +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 + +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 +--- +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; +-- +cgit 1.2.3-1.el7 diff --git a/i40e.spec b/i40e.spec index 86bb7de..7398b3f 100644 --- a/i40e.spec +++ b/i40e.spec @@ -9,13 +9,14 @@ Name: i40e Summary: Intel(R) 40-10 Gigabit Ethernet Connection Network Driver Version: 2.14.13 -Release: 3 +Release: 4 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 Patch0001: fix-gcc9-new-warning.patch +Patch0002: Fix-ATR-queue-selection.patch Requires: kernel, findutils, gawk, bash @@ -383,6 +384,12 @@ else fi %changelog +* Fri Oct 29 2021 zhongxuan2 - 2.14.13-4 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:fix ATR queue selection + * Fri Mar 19 2021 kwb0523 - 2.14.13-3 - Type:bugfix - ID:NA -- Gitee