ethdev: add encap level to RSS flow API action
authorAdrien Mazarguil <adrien.mazarguil@6wind.com>
Wed, 25 Apr 2018 15:27:54 +0000 (17:27 +0200)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 27 Apr 2018 17:00:54 +0000 (18:00 +0100)
commit18aee2861a1f8c5f7511fed32ecc59295c26f79a
tree89945b60c6a64ba9c5d94c9b2b477302d000c228
parent929e3319342b7ae2ec0c0fc5c5a4e954037d7d29
ethdev: add encap level to RSS flow API action

RSS hash types (ETH_RSS_* macros defined in rte_ethdev.h) describe the
protocol header fields of a packet that must be taken into account while
computing RSS.

When facing encapsulated (e.g. tunneled) packets, there is an ambiguity as
to whether these should apply to inner or outer packets. Applications need
the ability to tell exactly "where" RSS must be performed.

This is addressed by adding encapsulation level information to the RSS flow
action. Its default value is 0 and stands for the usual unspecified
behavior. Other values provide a specific encapsulation level.

Contrary to the change announced by commit 676b605182a5 ("doc: announce
ethdev API change for RSS configuration"), this patch does not affect
struct rte_eth_rss_conf but struct rte_flow_action_rss as the former is not
used anymore by the RSS flow action. ABI impact is therefore limited to
rte_flow.

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 <adrien.mazarguil@6wind.com>
Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
18 files changed:
app/test-pmd/cmdline_flow.c
app/test-pmd/config.c
doc/guides/prog_guide/rte_flow.rst
doc/guides/rel_notes/deprecation.rst
doc/guides/rel_notes/release_18_05.rst
doc/guides/testpmd_app_ug/testpmd_funcs.rst
drivers/net/e1000/igb_flow.c
drivers/net/e1000/igb_rxtx.c
drivers/net/i40e/i40e_ethdev.c
drivers/net/i40e/i40e_flow.c
drivers/net/ixgbe/ixgbe_flow.c
drivers/net/ixgbe/ixgbe_rxtx.c
drivers/net/mlx4/mlx4_flow.c
drivers/net/mlx5/mlx5_flow.c
drivers/net/sfc/sfc_flow.c
drivers/net/tap/tap_flow.c
lib/librte_ether/rte_flow.c
lib/librte_ether/rte_flow.h