From 49e8206c7f86057d244b886fd6910c6d843608a9 Mon Sep 17 00:00:00 2001 From: liaichun Date: Fri, 29 Oct 2021 17:11:29 +0800 Subject: [PATCH] fix ATR queue selection Signed-off-by: liaichun Conflicts: Fix-ATR-queue-selection.patch i40e.spec --- backport-fix-ATR-queue-selection.patch | 53 ++++++++++++++++++++++++++ i40e.spec | 9 ++++- 2 files changed, 61 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..d0e971e --- /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 netdev_pick_tx(netdev, skb, sb_dev); + + prio = skb->priority; + hw = &vsi->back->hw; +-- +1.8.3.1 + diff --git a/i40e.spec b/i40e.spec index 8374228..4266a69 100644 --- a/i40e.spec +++ b/i40e.spec @@ -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 - 2.14.13-7 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:fix ATR queue selection + * Thu Sep 16 2021 xihaochen - 2.14.13-6 - Type:bugfix - ID:NA