patches for DPDK stable branches
 help / color / mirror / Atom feed
From: Adrien Mazarguil <adrien.mazarguil@6wind.com>
To: Andrew Rybchenko <arybchenko@solarflare.com>
Cc: dev@dpdk.org, stable@dpdk.org
Subject: Re: [dpdk-stable] [dpdk-dev] [PATCH] net/sfc: cut non VLAN ID bits from TCI
Date: Thu, 5 Jul 2018 13:14:49 +0200	[thread overview]
Message-ID: <20180705111449.GL4025@6wind.com> (raw)
In-Reply-To: <1530285811-2907-1-git-send-email-arybchenko@solarflare.com>

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 <arybchenko@solarflare.com>
> Reviewed-by: Roman Zhukov <roman.zhukov@oktetlabs.ru>
> 
> ---
>  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

-- 
Adrien Mazarguil
6WIND

  parent reply	other threads:[~2018-07-05 11:15 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-29 15:23 [dpdk-stable] " Andrew Rybchenko
2018-07-04 17:43 ` Ferruh Yigit
2018-07-05 11:14 ` Adrien Mazarguil [this message]
2018-07-05 19:23   ` [dpdk-stable] [dpdk-dev] " Adrien Mazarguil
2018-07-07 16:12     ` Andrew Rybchenko

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=20180705111449.GL4025@6wind.com \
    --to=adrien.mazarguil@6wind.com \
    --cc=arybchenko@solarflare.com \
    --cc=dev@dpdk.org \
    --cc=stable@dpdk.org \
    /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).