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>

Reply via email to