From: Andrew Rybchenko Date: Fri, 29 Jun 2018 15:23:31 +0000 (+0100) Subject: net/sfc: cut non VLAN ID bits from TCI X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=8028142107a858a146bfdbaa010b7e77ff987342;p=dpdk.git net/sfc: cut non VLAN ID bits from TCI 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 --- diff --git a/drivers/net/sfc/sfc_flow.c b/drivers/net/sfc/sfc_flow.c index 5613d59a9c..18387415e2 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)) {