On 04/10/2018 07:36 PM, Adrien Mazarguil wrote:
Since its inception, the rte_flow RSS action has been relying in part on
external struct rte_eth_rss_conf for compatibility with the legacy RSS API.
This structure lacks parameters such as the hash algorithm to use, and more
recently, a method to tell which layer RSS should be performed on [1].
Given struct rte_eth_rss_conf will never be flexible enough to represent a
complete RSS configuration (e.g. RETA table), this patch supersedes it by
extending the rte_flow RSS action directly.
A subsequent patch will add a field to use a non-default RSS hash
algorithm. To that end, a field named "types" replaces the field formerly
known as "rss_hf" and standing for "RSS hash functions" as it was
confusing. Actual RSS hash function types are defined by enum
rte_eth_hash_function.
This patch updates all PMDs and example applications accordingly.
It breaks ABI compatibility for the following public functions:
- rte_flow_copy()
- rte_flow_create()
- rte_flow_query()
- rte_flow_validate()
[1] commit 676b605182a5 ("doc: announce ethdev API change for RSS
configuration")
Signed-off-by: Adrien Mazarguil <adrien.mazarg...@6wind.com>
Cc: Xueming Li <xuemi...@mellanox.com>
Cc: Ferruh Yigit <ferruh.yi...@intel.com>
Cc: Thomas Monjalon <tho...@monjalon.net>
Cc: Wenzhuo Lu <wenzhuo...@intel.com>
Cc: Jingjing Wu <jingjing...@intel.com>
Cc: Beilei Xing <beilei.x...@intel.com>
Cc: Qi Zhang <qi.z.zh...@intel.com>
Cc: Konstantin Ananyev <konstantin.anan...@intel.com>
Cc: Nelio Laranjeiro <nelio.laranje...@6wind.com>
Cc: Yongseok Koh <ys...@mellanox.com>
Cc: Andrew Rybchenko <arybche...@solarflare.com>
Cc: Pascal Mazon <pascal.ma...@6wind.com>
Cc: Radu Nicolau <radu.nico...@intel.com>
Cc: Akhil Goyal <akhil.go...@nxp.com>
---
v3 changes:
Documentation update regarding the meaning of a 0 value for RSS types in
flow rules.
It used to implicitly mean "no RSS" but is redefined as requesting a kind
of "best-effort" mode from PMDs, i.e. anything ranging from empty to
all-inclusive RSS; what matters is it provides safe defaults that will work
regardless of PMD capabilities.
---
app/test-pmd/cmdline_flow.c | 48 +++---
app/test-pmd/config.c | 39 ++---
doc/guides/prog_guide/rte_flow.rst | 28 ++--
doc/guides/testpmd_app_ug/testpmd_funcs.rst | 6 +-
drivers/net/e1000/e1000_ethdev.h | 13 +-
drivers/net/e1000/igb_ethdev.c | 4 +-
drivers/net/e1000/igb_flow.c | 31 ++--
drivers/net/e1000/igb_rxtx.c | 51 +++++-
drivers/net/i40e/i40e_ethdev.c | 53 +++++--
drivers/net/i40e/i40e_ethdev.h | 15 +-
drivers/net/i40e/i40e_flow.c | 57 ++++---
drivers/net/ixgbe/ixgbe_ethdev.c | 4 +-
drivers/net/ixgbe/ixgbe_ethdev.h | 13 +-
drivers/net/ixgbe/ixgbe_flow.c | 30 ++--
drivers/net/ixgbe/ixgbe_rxtx.c | 51 +++++-
drivers/net/mlx4/mlx4.c | 2 +-
drivers/net/mlx4/mlx4_flow.c | 61 +++----
drivers/net/mlx4/mlx4_flow.h | 2 +-
drivers/net/mlx4/mlx4_rxq.c | 2 +-
drivers/net/mlx4/mlx4_rxtx.h | 2 +-
drivers/net/mlx5/mlx5_flow.c | 193 +++++++++++------------
drivers/net/mlx5/mlx5_rxq.c | 22 +--
drivers/net/mlx5/mlx5_rxtx.h | 26 +--
drivers/net/sfc/sfc_flow.c | 21 ++-
drivers/net/tap/tap_flow.c | 8 +-
examples/ipsec-secgw/ipsec.c | 10 +-
lib/librte_ether/rte_flow.c | 39 ++---
lib/librte_ether/rte_flow.h | 12 +-
28 files changed, 484 insertions(+), 359 deletions(-)
Generic and net/sfc;
Acked-by: Andrew Rybchenko <arybche...@solarflare.com>