From mboxrd@z Thu Jan 1 00:00:00 1970 From: Adrien Mazarguil Subject: Re: [PATCH] net/sfc: cut non VLAN ID bits from TCI Date: Thu, 5 Jul 2018 21:23:55 +0200 Message-ID: <20180705192355.GQ4025@6wind.com> References: <1530285811-2907-1-git-send-email-arybchenko@solarflare.com> <20180705111449.GL4025@6wind.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: dev@dpdk.org, stable@dpdk.org To: Andrew Rybchenko Return-path: Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) by dpdk.org (Postfix) with ESMTP id 46ACB1BF35 for ; Thu, 5 Jul 2018 21:24:13 +0200 (CEST) Received: by mail-wr1-f66.google.com with SMTP id h9-v6so1930709wro.3 for ; Thu, 05 Jul 2018 12:24:13 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20180705111449.GL4025@6wind.com> 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 Thu, Jul 05, 2018 at 01:14:49PM +0200, Adrien Mazarguil wrote: > On Fri, Jun 29, 2018 at 04:23:31PM +0100, Andrew Rybchenko wrote: > > TCI may contain PCP or DEI bits. Matching of these bits is not > > supported, but the bits still may be set in specification value and > > not covered by mask. So, these bits should be ignored. > > > > Fixes: 894080975e1e ("net/sfc: support VLAN in flow API filters") > > Cc: stable@dpdk.org > > > > Signed-off-by: Andrew Rybchenko > > Reviewed-by: Roman Zhukov > > > > --- > > drivers/net/sfc/sfc_flow.c | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/net/sfc/sfc_flow.c b/drivers/net/sfc/sfc_flow.c > > index 5613d59a9..18387415e 100644 > > --- a/drivers/net/sfc/sfc_flow.c > > +++ b/drivers/net/sfc/sfc_flow.c > > @@ -371,7 +371,8 @@ sfc_flow_parse_vlan(const struct rte_flow_item *item, > > * the outer tag and the next matches the inner tag. > > */ > > if (mask->tci == supp_mask.tci) { > > - vid = rte_bswap16(spec->tci); > > + /* Apply mask to keep VID only */ > > + vid = rte_bswap16(spec->tci & mask->tci); > > > > if (!(efx_spec->efs_match_flags & > > EFX_FILTER_MATCH_OUTER_VID)) { > > I think there is an issue with this patch when spec->mask is user-provided, > PMDs have to trust it. They must not simply ignore bits they cannot handle > but explicitly reject the flow rule for correctness. > > Most devices cannot match PCP and DEI, this is why the default TCI mask was > modified in v18.05 by commit 0730ab674cb1 ("ethdev: fix default VLAN TCI > mask in flow API") to cover the VID part only. > > I wrote a helper for mlx5 to help with such basic sanity checks on pattern > items in a generic(ish) fashion, maybe you could reuse something. Have a > look at mlx5_nl_flow_item_mask() [1]. > > [1] "net/mlx5: add L2-L4 pattern items to switch flow rules" > https://mails.dpdk.org/archives/dev/2018-June/105579.html Seems like I misread the original patch and PMD code, both are in fact correct. Please ignore my previous comment, sorry for the noise! -- Adrien Mazarguil 6WIND