Hi Jack, I know I acked this patch, but after Dekel patch, https://patches.dpdk.org/patch/55667/
Where it was decided to remove structures for just one variable, and simply use the value. I wish if possible that you will also modify this patch to match this new convention. Thanks, Ori Kam > -----Original Message----- > From: dev <dev-boun...@dpdk.org> On Behalf Of Xiaoyu Min > Sent: Monday, June 24, 2019 6:40 PM > To: Adrien Mazarguil <adrien.mazarg...@6wind.com>; John McNamara > <john.mcnam...@intel.com>; Marko Kovacevic > <marko.kovace...@intel.com>; Thomas Monjalon <tho...@monjalon.net>; > Ferruh Yigit <ferruh.yi...@intel.com>; Andrew Rybchenko > <arybche...@solarflare.com> > Cc: dev@dpdk.org > Subject: [dpdk-dev] [PATCH 1/4] ethdev: add GRE key field to flow API > > Add new rte_flow_item_gre_key in order to match the optional key field. > > Signed-off-by: Xiaoyu Min <jack...@mellanox.com> > --- > doc/guides/prog_guide/rte_flow.rst | 9 +++++++++ > lib/librte_ethdev/rte_flow.c | 1 + > lib/librte_ethdev/rte_flow.h | 27 +++++++++++++++++++++++++++ > 3 files changed, 37 insertions(+) > > diff --git a/doc/guides/prog_guide/rte_flow.rst > b/doc/guides/prog_guide/rte_flow.rst > index a34d012e55..e900a53e3c 100644 > --- a/doc/guides/prog_guide/rte_flow.rst > +++ b/doc/guides/prog_guide/rte_flow.rst > @@ -980,6 +980,15 @@ Matches a GRE header. > - ``protocol``: protocol type. > - Default ``mask`` matches protocol only. > > +Item: ``GRE_KEY`` > +^^^^^^^^^^^^^^^^^ > + > +Matches a GRE key field. > +This should be preceded by item ``GRE`` > + > +- ``key``: key value. > +- Default ``mask`` matches key only. > + > Item: ``FUZZY`` > ^^^^^^^^^^^^^^^ > > diff --git a/lib/librte_ethdev/rte_flow.c b/lib/librte_ethdev/rte_flow.c > index 3277be1edb..1cd5f4d263 100644 > --- a/lib/librte_ethdev/rte_flow.c > +++ b/lib/librte_ethdev/rte_flow.c > @@ -55,6 +55,7 @@ static const struct rte_flow_desc_data > rte_flow_desc_item[] = { > MK_FLOW_ITEM(NVGRE, sizeof(struct rte_flow_item_nvgre)), > MK_FLOW_ITEM(MPLS, sizeof(struct rte_flow_item_mpls)), > MK_FLOW_ITEM(GRE, sizeof(struct rte_flow_item_gre)), > + MK_FLOW_ITEM(GRE_KEY, sizeof(struct rte_flow_item_gre_key)), > MK_FLOW_ITEM(FUZZY, sizeof(struct rte_flow_item_fuzzy)), > MK_FLOW_ITEM(GTP, sizeof(struct rte_flow_item_gtp)), > MK_FLOW_ITEM(GTPC, sizeof(struct rte_flow_item_gtp)), > diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h > index f3a8fb103f..a708ccd53b 100644 > --- a/lib/librte_ethdev/rte_flow.h > +++ b/lib/librte_ethdev/rte_flow.h > @@ -289,6 +289,13 @@ enum rte_flow_item_type { > */ > RTE_FLOW_ITEM_TYPE_GRE, > > + /** > + * Matches a GRE optional key field. > + * > + * See struct rte_flow_item_gre_key. > + */ > + RTE_FLOW_ITEM_TYPE_GRE_KEY, > + > /** > * [META] > * > @@ -856,6 +863,26 @@ static const struct rte_flow_item_gre > rte_flow_item_gre_mask = { > }; > #endif > > +/** > + * RTE_FLOW_ITEM_GRE_KEY. > + * > + * Matches the presence of a GRE key. > + * > + * Normally preceding by: > + * > + * - RTE_FLOW_ITEM_TYPE_GRE > + */ > +struct rte_flow_item_gre_key { > + rte_be32_t key; /**< Application specific key value (K bit). */ > +}; > + > +/** Default mask for RTE_FLOW_ITEM_TYPE_GRE_KEY. */ > +#ifndef __cplusplus > +static const struct rte_flow_item_gre_key rte_flow_item_gre_key_mask = { > + .key = RTE_BE32(UINT32_MAX), > +}; > +#endif > + > /** > * RTE_FLOW_ITEM_TYPE_FUZZY > * > -- > 2.21.0