DPDK patches and discussions
 help / color / mirror / Atom feed
From: Jack Min <jackmin@mellanox.com>
To: Adrien Mazarguil <adrien.mazarguil@6wind.com>
Cc: Ori Kam <orika@mellanox.com>, Wenzhuo Lu <wenzhuo.lu@intel.com>,
	Jingjing Wu <jingjing.wu@intel.com>,
	Bernard Iremonger <bernard.iremonger@intel.com>,
	John McNamara <john.mcnamara@intel.com>,
	Marko Kovacevic <marko.kovacevic@intel.com>,
	"dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH v4 4/4] app/testpmd: match GRE's key and present bits
Date: Thu, 4 Jul 2019 05:52:43 +0000	[thread overview]
Message-ID: <20190704055231.bpwbvbd6g2zosbl6@mellanox.com> (raw)
In-Reply-To: <20190703152516.GI4512@6wind.com>

On Wed, 19-07-03, 17:25, Adrien Mazarguil wrote:
> On Tue, Jul 02, 2019 at 05:45:55PM +0800, Xiaoyu Min wrote:
> > support matching on GRE key and present bits (C,K,S)
> > 
> > example testpmd command could be:
> >   testpmd>flow create 0 ingress group 1 pattern eth / ipv4 /
> >           gre crksv is 0x2000 crksv mask 0xb000 /
> > 	  gre_key key is 0x12345678 / end
> > 	  actions rss queues 1 0 end / mark id 196 / end
> > 
> > Which will match GRE packet with k present bit set and key value is
> > 0x12345678.
> > 
> > Signed-off-by: Xiaoyu Min <jackmin@mellanox.com>
> 
> I'm wondering... Is matching the K bit mandatory if one explicitly matches
> gre_key already or is this a specific hardware limitation in your case?
> 

If there is gre_key item MLX5 PMD will force set HW matching on K bit,
From HW perspective it is mandatory. But, from testpmd (user)
perspective, I agree with you, user needn't set matching on K bit if
they already explicitly set gre_key item.

> Perhaps we could document that the K bit is implicitly matched as "1" in the
> default mask when a gre_key pattern item is present. If a user explicitly

Yes, I should document this.
So it should be documented in __testpmd_funcs.rst__ ?

> spec/mask K as "0" and still provides gre_key, the PMD can safely ignore the
> gre_key item.
> 

Well, actullay, when a user explicitly set spec/mask K as "0" and still
provide gre_key item, MLX5 PMD will implicitly set match on K bit as
"1", just ingore the K bit set by user.
The reason is wanna keep code simple, needn't to get
information from other item (gre) inside gre_key item, or vice verse.

And, I think, when a user provides a gre_key item, most probably, they do
really wanna match on gre_key. What do you think?

> I'm asking because I think most users won't bother with the K bit when
> attempting to match some key and their rules may not behave as expected as a
> result.
> 

I see.

> More below.
> 
> > ---
> > ** This patch is based on patch [1]
> > 
> > [1] https://eur03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatches.dpdk.org%2Fpatch%2F55773%2F&amp;data=02%7C01%7Cjackmin%40mellanox.com%7C590e61b809bb42869cf508d6ffcaa82c%7Ca652971c7d2e4d9ba6a4d149256f461b%7C0%7C0%7C636977643198683579&amp;sdata=LhTsrHRfX3LHhiHRBtz4WKUUklWupJueSBgWmiHPECM%3D&amp;reserved=0
> > ---
> >  app/test-pmd/cmdline_flow.c                 | 32 +++++++++++++++++++++
> >  doc/guides/testpmd_app_ug/testpmd_funcs.rst |  4 +++
> >  2 files changed, 36 insertions(+)
> > 
> > diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c
> > index 201bd9de56..8504cc8bc1 100644
> > --- a/app/test-pmd/cmdline_flow.c
> > +++ b/app/test-pmd/cmdline_flow.c
> > @@ -148,6 +148,9 @@ enum index {
> >  	ITEM_MPLS_LABEL,
> >  	ITEM_GRE,
> >  	ITEM_GRE_PROTO,
> > +	ITEM_GRE_CRKSV,
> > +	ITEM_GRE_KEY,
> > +	ITEM_GRE_KEY_KEY,
> 
> Assuming you move the GRE_KEY definition in rte_flow.h, please keep its
> location synchronized in this list as well.
> 

I'll do this.

> >  	ITEM_FUZZY,
> >  	ITEM_FUZZY_THRESH,
> >  	ITEM_GTP,
> > @@ -595,6 +598,7 @@ static const enum index next_item[] = {
> >  	ITEM_NVGRE,
> >  	ITEM_MPLS,
> >  	ITEM_GRE,
> > +	ITEM_GRE_KEY,
> >  	ITEM_FUZZY,
> >  	ITEM_GTP,
> >  	ITEM_GTPC,
> > @@ -755,6 +759,13 @@ static const enum index item_mpls[] = {
> >  
> >  static const enum index item_gre[] = {
> >  	ITEM_GRE_PROTO,
> > +	ITEM_GRE_CRKSV,
> 
> CRKSV may be unnecessary in this patch if the K bit is documented and
> implemented as described in my previous comment.
> 

Well, actully, we also wanna testpmd can match on C,S bits with K bit
together so we can test on gre packet with key only or csum + key, or
csum + key + sequence.

> > +	ITEM_NEXT,
> > +	ZERO,
> > +};
> > +
> > +static const enum index item_gre_key[] = {
> > +	ITEM_GRE_KEY_KEY,
> >  	ITEM_NEXT,
> >  	ZERO,
> >  };
> > @@ -1898,6 +1909,27 @@ static const struct token token_list[] = {
> >  		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_gre,
> >  					     protocol)),
> >  	},
> > +	[ITEM_GRE_CRKSV] = {
> > +		.name = "crksv",
> > +		.help = "GRE's first word (bit0 - bit15)",
> > +		.next = NEXT(item_gre, NEXT_ENTRY(UNSIGNED), item_param),
> > +		.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_gre,
> > +					     c_rsvd0_ver)),
> > +	},
> > +	[ITEM_GRE_KEY] = {
> > +		.name = "gre_key",
> > +		.help = "match GRE Key",
> > +		.priv = PRIV_ITEM(GRE_KEY,
> > +				  sizeof(rte_be32_t)),
> 
> Could be a single line.
> 

Yes, I'll update it.

> > +		.next = NEXT(item_gre_key),
> > +		.call = parse_vc,
> > +	},
> > +	[ITEM_GRE_KEY_KEY] = {
> > +		.name = "key",
> > +		.help = "GRE key",
> > +		.next = NEXT(item_gre_key, NEXT_ENTRY(UNSIGNED), item_param),
> > +		.args = ARGS(ARG_ENTRY_HTON(rte_be32_t)),
> > +	},
> >  	[ITEM_FUZZY] = {
> >  		.name = "fuzzy",
> >  		.help = "fuzzy pattern match, expect faster than default",
> > diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
> > index cb83a3ce8a..fc3ba8a009 100644
> > --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
> > +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
> > @@ -3804,6 +3804,10 @@ This section lists supported pattern items and their attributes, if any.
> >  
> >    - ``protocol {unsigned}``: protocol type.
> >  
> > +- ``gre_key``: match GRE optional key field.
> > +
> > +  - ``key {unsigned}``: key value.
> > +
> 
> You should have named this field "value" then, i.e.:
> 
>  - ``value {unsigned}``: key value.
> 

OK, I'll update it.

> >  - ``fuzzy``: fuzzy pattern match, expect faster than default.
> >  
> >    - ``thresh {unsigned}``: accuracy threshold.
> > -- 
> > 2.21.0
> > 
> 
> -- 
> Adrien Mazarguil
> 6WIND

  reply	other threads:[~2019-07-04  5:52 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-24 15:40 [dpdk-dev] [PATCH 0/4] ethdev: add GRE key field to flow API Xiaoyu Min
2019-06-24 15:40 ` [dpdk-dev] [PATCH 1/4] " Xiaoyu Min
2019-06-27 12:36   ` Ori Kam
2019-07-01  5:40   ` Ori Kam
2019-07-01 11:40     ` Jack Min
2019-06-24 15:40 ` [dpdk-dev] [PATCH 2/4] net/mlx5: support match GRE protocol on DR engine Xiaoyu Min
2019-06-24 15:40 ` [dpdk-dev] [PATCH 3/4] net/mlx5: match GRE's key and present bits Xiaoyu Min
2019-06-24 15:40 ` [dpdk-dev] [PATCH 4/4] app/testpmd: " Xiaoyu Min
2019-07-01 13:11 ` [dpdk-dev] [PATCH v2 0/4] ethdev: add GRE key field to flow API Xiaoyu Min
2019-07-01 13:11 ` [dpdk-dev] [PATCH v2 1/4] " Xiaoyu Min
2019-07-01 13:11 ` [dpdk-dev] [PATCH v2 2/4] net/mlx5: support match GRE protocol on DR engine Xiaoyu Min
2019-07-01 13:11 ` [dpdk-dev] [PATCH v2 3/4] net/mlx5: match GRE's key and present bits Xiaoyu Min
2019-07-01 13:11 ` [dpdk-dev] [PATCH v2 4/4] app/testpmd: " Xiaoyu Min
2019-07-02  3:08 ` [dpdk-dev] [PATCH v3 0/4] match on GRE's key Xiaoyu Min
2019-07-02  3:08 ` [dpdk-dev] [PATCH v3 1/4] ethdev: add GRE key field to flow API Xiaoyu Min
2019-07-02  3:08 ` [dpdk-dev] [PATCH v3 2/4] net/mlx5: support match GRE protocol on DR engine Xiaoyu Min
2019-07-02  3:08 ` [dpdk-dev] [PATCH v3 3/4] net/mlx5: match GRE's key and present bits Xiaoyu Min
2019-07-02  3:08 ` [dpdk-dev] [PATCH v3 4/4] app/testpmd: " Xiaoyu Min
2019-07-02  9:45 ` [dpdk-dev] [PATCH v4 0/4] match on GRE's key Xiaoyu Min
2019-07-02  9:45   ` [dpdk-dev] [PATCH v4 1/4] ethdev: add GRE key field to flow API Xiaoyu Min
2019-07-03 14:06     ` Thomas Monjalon
2019-07-04  2:18       ` Jack Min
2019-07-03 15:25     ` Adrien Mazarguil
2019-07-04  2:43       ` Jack Min
2019-07-02  9:45   ` [dpdk-dev] [PATCH v4 2/4] net/mlx5: support match GRE protocol on DR engine Xiaoyu Min
2019-07-02  9:45   ` [dpdk-dev] [PATCH v4 3/4] net/mlx5: match GRE's key and present bits Xiaoyu Min
2019-07-02  9:45   ` [dpdk-dev] [PATCH v4 4/4] app/testpmd: " Xiaoyu Min
2019-07-02  9:53     ` [dpdk-dev] [Suspected-Phishing][PATCH " Ori Kam
2019-07-03 15:25     ` [dpdk-dev] [PATCH " Adrien Mazarguil
2019-07-04  5:52       ` Jack Min [this message]
2019-07-04  9:52         ` Adrien Mazarguil
2019-07-04 11:56           ` Jack Min
2019-07-04 12:13             ` Adrien Mazarguil
2019-07-04 13:01               ` Jack Min
2019-07-04 16:30 ` [dpdk-dev] [PATCH v5 0/4] match on GRE's key Xiaoyu Min
2019-07-04 16:30   ` [dpdk-dev] [PATCH v5 1/4] ethdev: add GRE key field to flow API Xiaoyu Min
2019-07-04 16:30   ` [dpdk-dev] [PATCH v5 2/4] net/mlx5: support match GRE protocol on DR engine Xiaoyu Min
2019-07-04 16:30   ` [dpdk-dev] [PATCH v5 3/4] net/mlx5: match GRE's key and present bits Xiaoyu Min
2019-07-04 16:30   ` [dpdk-dev] [PATCH v5 4/4] app/testpmd: " Xiaoyu Min
2019-07-05  2:14 ` [dpdk-dev] [PATCH v6 0/4] match on GRE's key Xiaoyu Min
2019-07-05  2:14   ` [dpdk-dev] [PATCH v6 1/4] ethdev: add GRE key field to flow API Xiaoyu Min
2019-07-05  8:39     ` Adrien Mazarguil
2019-07-05  2:14   ` [dpdk-dev] [PATCH v6 2/4] net/mlx5: support match GRE protocol on DR engine Xiaoyu Min
2019-07-05  2:14   ` [dpdk-dev] [PATCH v6 3/4] net/mlx5: match GRE's key and present bits Xiaoyu Min
2019-07-05  2:14   ` [dpdk-dev] [PATCH v6 4/4] app/testpmd: " Xiaoyu Min
2019-07-05  8:58     ` Adrien Mazarguil
2019-07-05  9:06       ` Jack Min
2019-07-05  9:54 ` [dpdk-dev] [PATCH v7 0/4] match on GRE's key Xiaoyu Min
2019-07-05  9:54   ` [dpdk-dev] [PATCH v7 1/4] ethdev: add GRE key field to flow API Xiaoyu Min
2019-07-09  5:21     ` [dpdk-dev] [Suspected-Phishing][PATCH " Slava Ovsiienko
2019-07-05  9:54   ` [dpdk-dev] [PATCH v7 2/4] net/mlx5: support match GRE protocol on DR engine Xiaoyu Min
2019-07-09  5:21     ` [dpdk-dev] [Suspected-Phishing][PATCH " Slava Ovsiienko
2019-07-05  9:54   ` [dpdk-dev] [PATCH v7 3/4] net/mlx5: match GRE's key and present bits Xiaoyu Min
2019-07-09  5:21     ` [dpdk-dev] [Suspected-Phishing][PATCH " Slava Ovsiienko
2019-07-05  9:54   ` [dpdk-dev] [PATCH v7 4/4] app/testpmd: " Xiaoyu Min
2019-07-09  5:21     ` [dpdk-dev] [Suspected-Phishing][PATCH " Slava Ovsiienko
2019-07-08 18:00   ` [dpdk-dev] [PATCH v7 0/4] match on GRE's key Ferruh Yigit
2019-07-09  9:02 ` [dpdk-dev] [PATCH v8 0/2] " Xiaoyu Min
2019-07-09  9:02   ` [dpdk-dev] [PATCH v8 1/2] net/mlx5: support match GRE protocol on DR engine Xiaoyu Min
2019-07-09  9:02   ` [dpdk-dev] [PATCH v8 2/2] net/mlx5: match GRE's key and present bits Xiaoyu Min
2019-07-09  9:54     ` Thomas Monjalon
2019-07-09 10:46       ` Jack Min
2019-07-09 10:59 ` [dpdk-dev] [PATCH v9 0/2] match on GRE's key Xiaoyu Min
2019-07-09 10:59   ` [dpdk-dev] [PATCH v9 1/2] net/mlx5: support match GRE protocol on DR engine Xiaoyu Min
2019-07-09 10:59   ` [dpdk-dev] [PATCH v9 2/2] net/mlx5: match GRE's key and present bits Xiaoyu Min
2019-07-11  9:14   ` [dpdk-dev] [PATCH v9 0/2] match on GRE's key Raslan Darawsheh

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190704055231.bpwbvbd6g2zosbl6@mellanox.com \
    --to=jackmin@mellanox.com \
    --cc=adrien.mazarguil@6wind.com \
    --cc=bernard.iremonger@intel.com \
    --cc=dev@dpdk.org \
    --cc=jingjing.wu@intel.com \
    --cc=john.mcnamara@intel.com \
    --cc=marko.kovacevic@intel.com \
    --cc=orika@mellanox.com \
    --cc=wenzhuo.lu@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).