mbox series

[v6,0/9] ethdev: introduce GENEVE header TLV option item

Message ID 20210114070743.2377-1-shirik@nvidia.com (mailing list archive)
Headers show
Series ethdev: introduce GENEVE header TLV option item | expand

Message

Shiri Kuzin Jan. 14, 2021, 7:07 a.m. UTC
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.

v6:
- added testpmd support for GENEVE option length.
- updated setting GENEVE option length value.

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 (2):
  app/testpmd: add GENEVE option item support
  app/testpmd: add GENEVE header option length support

 app/test-pmd/cmdline_flow.c                   | 111 +++++++++-
 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          |  62 ++++++
 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                  | 143 ++++++++++++
 drivers/net/mlx5/mlx5_flow.h                  |  15 +-
 drivers/net/mlx5/mlx5_flow_dv.c               | 205 ++++++++++++++++++
 lib/librte_ethdev/rte_flow.c                  |   1 +
 lib/librte_ethdev/rte_flow.h                  |  27 +++
 16 files changed, 646 insertions(+), 11 deletions(-)

Comments

Ferruh Yigit Jan. 15, 2021, 1:33 a.m. UTC | #1
On 1/14/2021 7:07 AM, Shiri Kuzin wrote:
> 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.
> 
> v6:
> - added testpmd support for GENEVE option length.
> - updated setting GENEVE option length value.
> 
> 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 (2):
>    app/testpmd: add GENEVE option item support
>    app/testpmd: add GENEVE header option length support
> 

Hi Shiri,

Can you please rebase on top of latest next-net, this set conflicts with GTP 
patchset.

Thanks,
ferruh
Shiri Kuzin Jan. 17, 2021, 9:19 a.m. UTC | #2
> -----Original Message-----
> From: Ferruh Yigit <ferruh.yigit@intel.com>
> Sent: Friday, January 15, 2021 3:34 AM
> To: Shiri Kuzin <shirik@nvidia.com>; dev@dpdk.org
> Cc: Slava Ovsiienko <viacheslavo@nvidia.com>; NBU-Contact-Adrien
> Mazarguil <adrien.mazarguil@6wind.com>; Ori Kam <orika@nvidia.com>;
> NBU-Contact-Thomas Monjalon <thomas@monjalon.net>; Raslan
> Darawsheh <rasland@nvidia.com>; andrew.rybchenko@oktetlabs.ru
> Subject: Re: [PATCH v6 0/9] ethdev: introduce GENEVE header TLV option
> item
> 
> On 1/14/2021 7:07 AM, Shiri Kuzin wrote:
> > 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.
> >
> > v6:
> > - added testpmd support for GENEVE option length.
> > - updated setting GENEVE option length value.
> >
> > 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 (2):
> >    app/testpmd: add GENEVE option item support
> >    app/testpmd: add GENEVE header option length support
> >
> 
> Hi Shiri,
> 
> Can you please rebase on top of latest next-net, this set conflicts with GTP
> patchset.
> 
> Thanks,
> Ferruh


Hi Ferruh,

Sure I will send updated version.

Thanks,
Shiri.