[dpdk-stable] patch 'net/i40e: fix overwriting RSS RETA' has been queued to stable release 18.08.1
Kevin Traynor
ktraynor at redhat.com
Fri Dec 14 18:51:52 CET 2018
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 <xiaoyun.li at intel.com>
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 <xiaoyun.li at intel.com>
Acked-by: Qi Zhang <qi.z.zhang at intel.com>
---
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 <xiaoyun.li at intel.com>
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 at dpdk.org
Signed-off-by: Xiaoyun Li <xiaoyun.li at intel.com>
Acked-by: Qi Zhang <qi.z.zhang at intel.com>
@@ -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;
More information about the stable
mailing list