On 04/06/2018 04:25 PM, Adrien Mazarguil wrote:
By definition, RSS involves some kind of hash algorithm, usually Toeplitz.
Until now it could not be modified on a flow rule basis and PMDs had to
always assume RTE_ETH_HASH_FUNCTION_DEFAULT, which remains the default
behavior when unspecified (0).
This breaks ABI compatibility for the following public functions:
- rte_flow_copy()
- rte_flow_create()
- rte_flow_query()
- rte_flow_validate()
Signed-off-by: Adrien Mazarguil <[email protected]>
Cc: Ferruh Yigit <[email protected]>
Cc: Thomas Monjalon <[email protected]>
Cc: Wenzhuo Lu <[email protected]>
Cc: Jingjing Wu <[email protected]>
Cc: Beilei Xing <[email protected]>
Cc: Qi Zhang <[email protected]>
Cc: Konstantin Ananyev <[email protected]>
Cc: Nelio Laranjeiro <[email protected]>
Cc: Yongseok Koh <[email protected]>
Cc: Andrew Rybchenko <[email protected]>
Cc: Pascal Mazon <[email protected]>
---
app/test-pmd/cmdline_flow.c | 72 ++++++++++++++++++++++++
app/test-pmd/config.c | 1 +
doc/guides/prog_guide/rte_flow.rst | 2 +
doc/guides/testpmd_app_ug/testpmd_funcs.rst | 3 +
drivers/net/e1000/igb_flow.c | 4 ++
drivers/net/e1000/igb_rxtx.c | 4 +-
drivers/net/i40e/i40e_ethdev.c | 4 +-
drivers/net/i40e/i40e_flow.c | 4 ++
drivers/net/ixgbe/ixgbe_flow.c | 4 ++
drivers/net/ixgbe/ixgbe_rxtx.c | 4 +-
drivers/net/mlx4/mlx4_flow.c | 7 +++
drivers/net/mlx5/mlx5_flow.c | 13 +++++
drivers/net/sfc/sfc_flow.c | 3 +
drivers/net/tap/tap_flow.c | 6 ++
lib/librte_ether/rte_flow.c | 1 +
lib/librte_ether/rte_flow.h | 2 +
16 files changed, 131 insertions(+), 3 deletions(-)
<...>
diff --git a/drivers/net/sfc/sfc_flow.c b/drivers/net/sfc/sfc_flow.c
index 1a2c0299c..dbe4c2baa 100644
--- a/drivers/net/sfc/sfc_flow.c
+++ b/drivers/net/sfc/sfc_flow.c
@@ -1261,6 +1261,9 @@ sfc_flow_parse_rss(struct sfc_adapter *sa,
rxq_hw_index_max = rxq->hw_index;
}
+ if (rss->func)
May be it is better to compare with RTE_ETH_HASH_FUNCTION_DEFAULT
explicitly? I think it is more readable. If so, it is applicable to all
similar checks
in the patch.
In the case of sfc, please, allow RTE_ETH_HASH_FUNCTION_TOEPLITZ as well.
I'd suggest:
switch (rss->func) {
case RTE_ETH_HASH_FUNCTION_DEFAULT:
case RTE_ETH_HASH_FUNCTION_TOEPLITZ:
break;
default:
return -EINVAL;
}
+ return -EINVAL;
+
if ((rss->types & ~SFC_RSS_OFFLOADS) != 0)
return -EINVAL;
<...>