From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id F1851A0487 for ; Wed, 3 Jul 2019 17:26:24 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 16BED1B995; Wed, 3 Jul 2019 17:25:20 +0200 (CEST) Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) by dpdk.org (Postfix) with ESMTP id 812A41B974 for ; Wed, 3 Jul 2019 17:25:18 +0200 (CEST) Received: by mail-wr1-f66.google.com with SMTP id n9so3329135wru.0 for ; Wed, 03 Jul 2019 08:25:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind.com; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=r3wB8WadbnCU7o5FT1pNzlmqrhR/CrCnC1+q75Bhzq8=; b=WimSzTxXf4b1pdu2Gt1c0loSBBkEbKS0sp6ED8n2nyVn8FF3XBd6b4TZXqIkGnnqPV 91hb61/nZv895RYORLAuCipt+xqG4bKzMCFniIa+n/bqeAUs8zpIbFZI33Eek/pukck2 xxvSVqYRISEMfbN4wY7cB/SG/VXsGMkVkR7oHchjICaAanxECVEtwCiWlS+0wTjiPtH8 TtDALyCcr7xvk5ePQoGI7BH2J5bmKNPNQ/yJDQUW6zu/12Hx49PlA7CdINacLEsZmMM2 RwFNrBRig+inndLVgCQhm/RaqJMaOFVVGq4LxhzgY1h5EVSTf75Jtnhxb9cU+LQ8u9Nm Io3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=r3wB8WadbnCU7o5FT1pNzlmqrhR/CrCnC1+q75Bhzq8=; b=rJBdh73Ieje0pbyL9e8LYx6+SKfT0/MwmV1gr959SW9lT0bvl3w82YC/ahiCh+xAvX w8nhp4nr4Zpu+CQFyPVvG4/oWIPq3gvnZsmoIBG3s+1MCAH/e4HyPWRuQpAaQmXT+iqa cC85HlQF4fvafVSXQGZKFJZBWDHSaEdwViTWnrXGpbKz9Sd5/CJ1RTCRgHSilde5OLh4 mdmmtcYAdRMKUN/JFKoIweilMBJCo7N/wK5/daxLs7rRVHZnavHcBN9VUUT30RF3Fhgz Ue7htmxXNwlDDpNR/Td6guIwzBCM4mHa/ibkelF1pyL7WvTVaPGACekD2dyIlC/H10co B38A== X-Gm-Message-State: APjAAAV4OJACfJbDGZfW7/wkf2AwJnSmM8ys9rKtUmv0XNbdjB2foZI3 DHFBtVp5hJ4lllsUzBwVHDzONtYKS2SfhQ== X-Google-Smtp-Source: APXvYqwbS1h4prHNiITezL/t7Na+gFiFpkbkJf1/2bkNWYiLsaxcEmM3WmTwdt1VMitTUBOjf7dm7Q== X-Received: by 2002:adf:dfc5:: with SMTP id q5mr31313077wrn.142.1562167518312; Wed, 03 Jul 2019 08:25:18 -0700 (PDT) Received: from 6wind.com (host.78.145.23.62.rev.coltfrance.com. [62.23.145.78]) by smtp.gmail.com with ESMTPSA id a81sm2706648wmh.3.2019.07.03.08.25.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Jul 2019 08:25:17 -0700 (PDT) Date: Wed, 3 Jul 2019 17:25:16 +0200 From: Adrien Mazarguil To: Xiaoyu Min Cc: orika@mellanox.com, Wenzhuo Lu , Jingjing Wu , Bernard Iremonger , John McNamara , Marko Kovacevic , dev@dpdk.org Message-ID: <20190703152516.GI4512@6wind.com> References: <20190624154018.128379-1-jackmin@mellanox.com> <5d9e2fcd3a1bf439b0cff354ca5b5bf1f43e090d.1562058723.git.jackmin@mellanox.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5d9e2fcd3a1bf439b0cff354ca5b5bf1f43e090d.1562058723.git.jackmin@mellanox.com> Subject: Re: [dpdk-dev] [PATCH v4 4/4] app/testpmd: match GRE's key and present bits X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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 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