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 <[email protected]> Cc: Xueming Li <[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]> Cc: Radu Nicolau <[email protected]> Cc: Akhil Goyal <[email protected]> --- 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 <[email protected]>

