From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by dpdk.org (Postfix) with ESMTP id F3C115F2F for ; Fri, 14 Dec 2018 18:52:46 +0100 (CET) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 62F1988E61; Fri, 14 Dec 2018 17:52:46 +0000 (UTC) Received: from ktraynor.remote.csb (ovpn-116-106.ams2.redhat.com [10.36.116.106]) by smtp.corp.redhat.com (Postfix) with ESMTP id 538B260BF7; Fri, 14 Dec 2018 17:52:45 +0000 (UTC) From: Kevin Traynor To: Xiaoyun Li Cc: Qi Zhang , dpdk stable Date: Fri, 14 Dec 2018 17:51:52 +0000 Message-Id: <20181214175203.24908-8-ktraynor@redhat.com> In-Reply-To: <20181214175203.24908-1-ktraynor@redhat.com> References: <20181214175203.24908-1-ktraynor@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Fri, 14 Dec 2018 17:52:46 +0000 (UTC) Subject: [dpdk-stable] patch 'net/i40e: fix overwriting RSS RETA' has been queued to stable release 18.08.1 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Dec 2018 17:52:47 -0000 Hi, FYI, your patch has been queued to stable release 18.08.1 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 12/18/18. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. If the code is different (ie: not only metadata diffs), due for example to a change in context or macro names, please double check it. Thanks. Kevin Traynor --- >>From 5407bd8510903f6fbdc4b505f10363d5b190b3b1 Mon Sep 17 00:00:00 2001 From: Xiaoyun Li Date: Mon, 3 Dec 2018 16:26:32 +0800 Subject: [PATCH] net/i40e: fix overwriting RSS RETA [ upstream commit 36c5dc8e5d3c73824fc962abd26d013f00c55cb3 ] When starting the device, the RSS table is initialized. So the RSS update before dev_start would be overwritten. This patch allows users to update the RSS reta table before dev_start and adjusts the order to set entries sequentially. Fixes: 4861cde46116 ("i40e: new poll mode driver") Signed-off-by: Xiaoyun Li Acked-by: Qi Zhang --- drivers/net/i40e/i40e_ethdev.c | 21 ++++++++++++++------- drivers/net/i40e/i40e_ethdev.h | 3 +++ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c index c4097394c..d822f30d3 100644 --- a/drivers/net/i40e/i40e_ethdev.c +++ b/drivers/net/i40e/i40e_ethdev.c @@ -2364,4 +2364,6 @@ i40e_dev_stop(struct rte_eth_dev *dev) hw->adapter_stopped = 1; + + pf->adapter->rss_reta_updated = 0; } @@ -4170,4 +4172,6 @@ i40e_dev_rss_reta_update(struct rte_eth_dev *dev, ret = i40e_set_rss_lut(pf->main_vsi, lut, reta_size); + pf->adapter->rss_reta_updated = 1; + out: rte_free(lut); @@ -8361,11 +8365,14 @@ i40e_pf_config_rss(struct i40e_pf *pf) } - for (i = 0, j = 0; i < hw->func_caps.rss_table_size; i++, j++) { - if (j == num) - j = 0; - lut = (lut << 8) | (j & ((0x1 << - hw->func_caps.rss_table_entry_width) - 1)); - if ((i & 3) == 3) - I40E_WRITE_REG(hw, I40E_PFQF_HLUT(i >> 2), lut); + if (pf->adapter->rss_reta_updated == 0) { + for (i = 0, j = 0; i < hw->func_caps.rss_table_size; i++, j++) { + if (j == num) + j = 0; + lut = (lut << 8) | (j & ((0x1 << + hw->func_caps.rss_table_entry_width) - 1)); + if ((i & 3) == 3) + I40E_WRITE_REG(hw, I40E_PFQF_HLUT(i >> 2), + rte_bswap32(lut)); + } } diff --git a/drivers/net/i40e/i40e_ethdev.h b/drivers/net/i40e/i40e_ethdev.h index b876933e5..edabf0771 100644 --- a/drivers/net/i40e/i40e_ethdev.h +++ b/drivers/net/i40e/i40e_ethdev.h @@ -1079,4 +1079,7 @@ struct i40e_adapter { uint64_t flow_types_mask; uint64_t pctypes_mask; + + /* For RSS reta table update */ + uint8_t rss_reta_updated; }; -- 2.19.0 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2018-12-14 17:49:47.932173626 +0000 +++ 0008-net-i40e-fix-overwriting-RSS-RETA.patch 2018-12-14 17:49:47.000000000 +0000 @@ -1,15 +1,16 @@ -From 36c5dc8e5d3c73824fc962abd26d013f00c55cb3 Mon Sep 17 00:00:00 2001 +From 5407bd8510903f6fbdc4b505f10363d5b190b3b1 Mon Sep 17 00:00:00 2001 From: Xiaoyun Li Date: Mon, 3 Dec 2018 16:26:32 +0800 Subject: [PATCH] net/i40e: fix overwriting RSS RETA +[ upstream commit 36c5dc8e5d3c73824fc962abd26d013f00c55cb3 ] + When starting the device, the RSS table is initialized. So the RSS update before dev_start would be overwritten. This patch allows users to update the RSS reta table before dev_start and adjusts the order to set entries sequentially. Fixes: 4861cde46116 ("i40e: new poll mode driver") -Cc: stable@dpdk.org Signed-off-by: Xiaoyun Li Acked-by: Qi Zhang @@ -19,24 +20,24 @@ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c -index f61a12eb2..c1934d9c1 100644 +index c4097394c..d822f30d3 100644 --- a/drivers/net/i40e/i40e_ethdev.c +++ b/drivers/net/i40e/i40e_ethdev.c -@@ -2454,4 +2454,6 @@ i40e_dev_stop(struct rte_eth_dev *dev) +@@ -2364,4 +2364,6 @@ i40e_dev_stop(struct rte_eth_dev *dev) hw->adapter_stopped = 1; + + pf->adapter->rss_reta_updated = 0; } -@@ -4265,4 +4267,6 @@ i40e_dev_rss_reta_update(struct rte_eth_dev *dev, +@@ -4170,4 +4172,6 @@ i40e_dev_rss_reta_update(struct rte_eth_dev *dev, ret = i40e_set_rss_lut(pf->main_vsi, lut, reta_size); + pf->adapter->rss_reta_updated = 1; + out: rte_free(lut); -@@ -8502,11 +8506,14 @@ i40e_pf_config_rss(struct i40e_pf *pf) +@@ -8361,11 +8365,14 @@ i40e_pf_config_rss(struct i40e_pf *pf) } - for (i = 0, j = 0; i < hw->func_caps.rss_table_size; i++, j++) { @@ -59,12 +60,12 @@ } diff --git a/drivers/net/i40e/i40e_ethdev.h b/drivers/net/i40e/i40e_ethdev.h -index 11ecfc30d..930eb9aba 100644 +index b876933e5..edabf0771 100644 --- a/drivers/net/i40e/i40e_ethdev.h +++ b/drivers/net/i40e/i40e_ethdev.h -@@ -1082,4 +1082,7 @@ struct i40e_adapter { - /* For devargs */ - uint8_t use_latest_vec; +@@ -1079,4 +1079,7 @@ struct i40e_adapter { + uint64_t flow_types_mask; + uint64_t pctypes_mask; + + /* For RSS reta table update */ + uint8_t rss_reta_updated;