From: Adrien Mazarguil <adrien.mazarguil@6wind.com>
To: Xiaoyu Min <jackmin@mellanox.com>
Cc: 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
Subject: Re: [dpdk-dev] [PATCH v4 4/4] app/testpmd: match GRE's key and present bits
Date: Wed, 3 Jul 2019 17:25:16 +0200 [thread overview]
Message-ID: <20190703152516.GI4512@6wind.com> (raw)
In-Reply-To: <5d9e2fcd3a1bf439b0cff354ca5b5bf1f43e090d.1562058723.git.jackmin@mellanox.com>
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?
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
spec/mask K as "0" and still provides gre_key, the PMD can safely ignore the
gre_key item.
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.
More below.
> ---
> ** This patch is based on patch [1]
>
> [1] https://patches.dpdk.org/patch/55773/
> ---
> 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.
> 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.
> + 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.
> + .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.
> - ``fuzzy``: fuzzy pattern match, expect faster than default.
>
> - ``thresh {unsigned}``: accuracy threshold.
> --
> 2.21.0
>
--
Adrien Mazarguil
6WIND
next prev parent reply other threads:[~2019-07-03 15:26 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 ` Adrien Mazarguil [this message]
2019-07-04 5:52 ` [dpdk-dev] [PATCH " Jack Min
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=20190703152516.GI4512@6wind.com \
--to=adrien.mazarguil@6wind.com \
--cc=bernard.iremonger@intel.com \
--cc=dev@dpdk.org \
--cc=jackmin@mellanox.com \
--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).