From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr0-f193.google.com (mail-wr0-f193.google.com [209.85.128.193]) by dpdk.org (Postfix) with ESMTP id 9ACCC1C71E for ; Wed, 4 Apr 2018 16:58:06 +0200 (CEST) Received: by mail-wr0-f193.google.com with SMTP id y55so23205766wry.3 for ; Wed, 04 Apr 2018 07:58:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=tTUL9VQiQpUN+d9QPuY0UzyHQFiD64aSK6hQ3QJvUZc=; b=Bl84a+1Yjn9ASupGxNqVFEyxkKCjRWue3GbQzvQ+UY7y9JrH2CMCcZyUi/EHbo66dP pZYk3OXu0HSb7eKhRbnnNBoZPwTcrFSlK2EFF4AJsvB0rZ03ep2vxIwIKGx94rbSy5GC d2vh8XGjA7FI4DrtZJBq8jEw/Z3d2db4O+rjB8dHJhlnxuy5ADRzfq+bprpdimkY4Dwx uQMsZwvCtlTydS0JB7WBd0GeeSXswuxqh7g9NBPCfkP9ATLppjz538xWT88/6ZR0kdun 9BxtRdWLZ6s2P0iTSnp0gOTtB0P0Z7xls181bEcp5bIlGOfOROkfrQnGUKghenQCKo6s 6HqA== 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=tTUL9VQiQpUN+d9QPuY0UzyHQFiD64aSK6hQ3QJvUZc=; b=gc4NZQ6iXYtZprW8BgPYGYs90t4D9Ws/noLStYhvSNDl4ZG99JboG9ec0TShEPTYC/ vB1WQqE2IIiHCW1ghljG6pXTAxOlnbd/oISXVLCUHhrM5t9GYOiR+klDQqU5B11r/GXr HVbTEH8AdYfJC/m1VGIQhr898H5/2FkLXzeHH4eQAgVfu6l2SRR5a/X03xV/kSPdOaTm HBRKP4aoOBVWDj29lraaX5fWxQ+ezRGs2yIpRF8LicTZ5tvq05MQ4oDxuvCDzK6ZM71J uhmZNGbHUyiQEEze9hEB8W3Bhmv4eBT/ivd61Yg36aBBLFrvbmyZeIF7+LQGbt7Cq4ah paJw== X-Gm-Message-State: AElRT7FPJ1osvvaI7j6Go1pn8oMPH1oVL0v74wqNe0W/aqppfboCsww0 CeYwuv8Qi03MJxlnDZKkZOAEQD4c X-Google-Smtp-Source: AIpwx4/PdrWXs1/2jy3wofbWZFasvwzDvswKYrm3IAFi6Q7d5lZyKnTinm6pwwALTy7Vb/ede3YEgw== X-Received: by 10.223.177.213 with SMTP id r21mr14140777wra.89.1522853886257; Wed, 04 Apr 2018 07:58:06 -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 u110sm7429882wrc.72.2018.04.04.07.58.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 04 Apr 2018 07:58:05 -0700 (PDT) Date: Wed, 4 Apr 2018 16:57:52 +0200 From: Adrien Mazarguil To: dev@dpdk.org Cc: stable@dpdk.org, Ajit Khaparde Message-ID: <20180404144805.11966-5-adrien.mazarguil@6wind.com> References: <20180323124725.15806-1-adrien.mazarguil@6wind.com> <20180404144805.11966-1-adrien.mazarguil@6wind.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180404144805.11966-1-adrien.mazarguil@6wind.com> X-Mailer: git-send-email 2.11.0 Subject: [dpdk-dev] [PATCH v2 04/13] net/bnxt: fix matching of flow API item masks 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: , X-List-Received-Date: Wed, 04 Apr 2018 14:58:07 -0000 Some values are interpreted without endian conversion and/or without taking the proper mask into account. Fixes: 5ef3b79fdfe6 ("net/bnxt: support flow filter ops") Cc: stable@dpdk.org Cc: Ajit Khaparde Signed-off-by: Adrien Mazarguil --- drivers/net/bnxt/bnxt_filter.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/drivers/net/bnxt/bnxt_filter.c b/drivers/net/bnxt/bnxt_filter.c index bbaae1a07..0d735edf6 100644 --- a/drivers/net/bnxt/bnxt_filter.c +++ b/drivers/net/bnxt/bnxt_filter.c @@ -33,6 +33,7 @@ #include +#include #include #include #include @@ -374,7 +375,8 @@ bnxt_validate_and_parse_flow_type(struct bnxt *bp, } /* Mask is not allowed. Only exact matches are */ - if ((eth_mask->type & UINT16_MAX) != UINT16_MAX) { + if (eth_mask->type && + eth_mask->type != RTE_BE16(0xffff)) { rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, item, @@ -400,7 +402,7 @@ bnxt_validate_and_parse_flow_type(struct bnxt *bp, * RTE_LOG(ERR, PMD, "Handle this condition\n"); * } */ - if (eth_spec->type) { + if (eth_mask->type) { filter->ethertype = rte_be_to_cpu_16(eth_spec->type); en |= use_ntuple ? @@ -412,13 +414,15 @@ bnxt_validate_and_parse_flow_type(struct bnxt *bp, case RTE_FLOW_ITEM_TYPE_VLAN: vlan_spec = item->spec; vlan_mask = item->mask; - if (vlan_mask->tci & 0xFFFF && !vlan_mask->tpid) { + if (vlan_mask->tci && + vlan_mask->tci == RTE_BE16(0x0fff) && + !vlan_mask->tpid) { /* Only the VLAN ID can be matched. */ filter->l2_ovlan = rte_be_to_cpu_16(vlan_spec->tci & - 0xFFF); + RTE_BE16(0x0fff)); en |= EM_FLOW_ALLOC_INPUT_EN_OVLAN_VID; - } else { + } else if (vlan_mask->tci || vlan_mask->tpid) { rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, item, -- 2.11.0