[1/4] ethdev: add GRE key field to flow API
Checks
Commit Message
Add new rte_flow_item_gre_key in order to match the optional key field.
Signed-off-by: Xiaoyu Min <jackmin@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(+)
Comments
> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Xiaoyu Min
> Sent: Monday, June 24, 2019 6:40 PM
> To: Adrien Mazarguil <adrien.mazarguil@6wind.com>; John McNamara
> <john.mcnamara@intel.com>; Marko Kovacevic
> <marko.kovacevic@intel.com>; Thomas Monjalon <thomas@monjalon.net>;
> Ferruh Yigit <ferruh.yigit@intel.com>; Andrew Rybchenko
> <arybchenko@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 <jackmin@mellanox.com>
> ---
Acked-by: Ori Kam <orika@mellanox.com>
Thanks,
Ori Kam
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-bounces@dpdk.org> On Behalf Of Xiaoyu Min
> Sent: Monday, June 24, 2019 6:40 PM
> To: Adrien Mazarguil <adrien.mazarguil@6wind.com>; John McNamara
> <john.mcnamara@intel.com>; Marko Kovacevic
> <marko.kovacevic@intel.com>; Thomas Monjalon <thomas@monjalon.net>;
> Ferruh Yigit <ferruh.yigit@intel.com>; Andrew Rybchenko
> <arybchenko@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 <jackmin@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
On Mon, 19-07-01, 13:40, Ori Kam wrote:
> 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.
>
>
OK, I'll remove the struct in v2 patch for the new convention.
> Thanks,
> Ori Kam
>
> > -----Original Message-----
> > From: dev <dev-bounces@dpdk.org> On Behalf Of Xiaoyu Min
> > Sent: Monday, June 24, 2019 6:40 PM
> > To: Adrien Mazarguil <adrien.mazarguil@6wind.com>; John McNamara
> > <john.mcnamara@intel.com>; Marko Kovacevic
> > <marko.kovacevic@intel.com>; Thomas Monjalon <thomas@monjalon.net>;
> > Ferruh Yigit <ferruh.yigit@intel.com>; Andrew Rybchenko
> > <arybchenko@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 <jackmin@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
>
@@ -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``
^^^^^^^^^^^^^^^
@@ -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)),
@@ -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
*