The Geneve tunneling protocol is designed to allow the user to specify some data context on the packet. The GENEVE TLV (Type-Length-Variable) Option is the mean intended to present the user data.
In order to support GENEVE TLV Option the new rte_flow item "rte_flow_item_geneve_opt" is introduced. The new item contains the values and masks for the following fields: -option class -option type -length -data The usage example: "flow create 0 ingress pattern eth / ipv4 / udp / geneve vni is 100 / geneve-opt class is 5 length is 1 type is 0 data is 0x66998800 / end actions count / drop / end" New item will be added to testpmd to support raw encap/decap action. v5: -added Devx function to def file. v4: - fixed setting option length. - fixed testpmd calculation of GENEVE option size. - updated documentation. v3: - updated documentation. v2: - removed pedantic. Shiri Kuzin (7): lib/librte_ethdev: introduce GENEVE header TLV option item common/mlx5: check GENEVE TLV support in HCA attributes common/mlx5: create GENEVE TLV option object with DevX net/mlx5: create GENEVE TLV option management net/mlx5: add GENEVE TLV option flow validation net/mlx5: add GENEVE TLV option flow translation doc: update GENEVE TLV option support Viacheslav Ovsiienko (1): app/testpmd: add GENEVE option item support app/test-pmd/cmdline_flow.c | 101 ++++++++- doc/guides/nics/mlx5.rst | 23 +- doc/guides/rel_notes/release_21_02.rst | 8 + doc/guides/testpmd_app_ug/testpmd_funcs.rst | 8 + drivers/common/mlx5/mlx5_devx_cmds.c | 63 +++++- drivers/common/mlx5/mlx5_devx_cmds.h | 9 + drivers/common/mlx5/mlx5_prm.h | 28 ++- .../common/mlx5/rte_common_mlx5_exports.def | 1 + drivers/common/mlx5/version.map | 1 + drivers/net/mlx5/mlx5.c | 2 + drivers/net/mlx5/mlx5.h | 13 ++ drivers/net/mlx5/mlx5_flow.c | 120 +++++++++++ drivers/net/mlx5/mlx5_flow.h | 13 +- drivers/net/mlx5/mlx5_flow_dv.c | 198 +++++++++++++++++- lib/librte_ethdev/rte_flow.c | 1 + lib/librte_ethdev/rte_flow.h | 27 +++ 16 files changed, 603 insertions(+), 13 deletions(-) -- 2.21.0