From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f67.google.com (mail-wm0-f67.google.com [74.125.82.67]) by dpdk.org (Postfix) with ESMTP id E92361D080 for ; Fri, 6 Apr 2018 15:22:53 +0200 (CEST) Received: by mail-wm0-f67.google.com with SMTP id o23so8027275wmf.0 for ; Fri, 06 Apr 2018 06:22:53 -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=k+DEEnco6fwzwky5gU9r3iEzolFIC3qDOG1iRE2OJH4=; b=UZAHIbE0U03vbvdah9P9pt/giHrqeFs1k8aI+TCwgSuPQ3uYKken+QU00FQ2oAMwHC akxwygG3tVcqvig7B/yuHkIu63UR1XcacQ6qslAveW8OeBtLTxxaMgMd/luGEtpAYtdT AFA6s6eyFTGNuZxNvvvjAaRyBpRVzCigEijyyY62aIFPkqaz41nQ6tu0NjXlrpArY4da sQ96UbM1bKwczEdVbwEDgN6OqzXXObT60lNzvTpgyugA54DdoI/60wDUVhJ21U5QdpK6 UYbLuxOb4f0DiLRVoUUBOM7VpEDG+2VsogFXpo0EnFtCMNJaBpx5ZU5QAGSb9faUdXEW dMzA== 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=k+DEEnco6fwzwky5gU9r3iEzolFIC3qDOG1iRE2OJH4=; b=CvHtNMu90iVPul+IFYYbTGCBQR/JFR147W8CrNOTUhn1gPKy91KBN7adoGy8xHuQT6 CI2cvglDnKxa8HidG8HSQW2PvQwOtHp8k/LzFb7T69gQ+FOXQIkH8GH5pJ6pUXA5hlu1 TQtf/4gPUQ7QHZXHOSK97hOHtgnVdpeWRKhUWr6OS5zYxNQoSJvkI/JA6OFCSl6JyuJT /6NATkrdPgCZirJoWJ6mo/WJy0tkUZZu8p5AaCPysBB8NtjW46tl6vAW2iNv3oi45fRU qSNMYXiXHIFZ+Z3OFHaYUog1qPUkgo7jxO8SoA/LHq4+5s3LamUbi3tQ3SfhxdFYqzcX T/TQ== X-Gm-Message-State: AElRT7He1bATCk5GuChF48Q39As69G+2WZUEY0wKPOJ9FMQI1hmW2lkh 9X1yczNWIE33hcXVsdYVXG/dhkiQ X-Google-Smtp-Source: AIpwx49ttSCGcQSnVPISxrVaFAYXJ3LjdH2XFERL+Urr/mKeEXUYgLlKF3ZhP5yOu3tJ1BcVZ/hdPw== X-Received: by 10.28.94.131 with SMTP id s125mr13294373wmb.83.1523020973626; Fri, 06 Apr 2018 06:22:53 -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 a63sm12862522wrc.22.2018.04.06.06.22.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 06 Apr 2018 06:22:53 -0700 (PDT) Date: Fri, 6 Apr 2018 15:22:40 +0200 From: Adrien Mazarguil To: dev@dpdk.org Cc: stable@dpdk.org, Ajit Khaparde Message-ID: <20180406131243.19037-5-adrien.mazarguil@6wind.com> References: <20180404144805.11966-1-adrien.mazarguil@6wind.com> <20180406131243.19037-1-adrien.mazarguil@6wind.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180406131243.19037-1-adrien.mazarguil@6wind.com> X-Mailer: git-send-email 2.11.0 Subject: [dpdk-dev] [PATCH v3 04/11] 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: Fri, 06 Apr 2018 13:22:54 -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 96b382ba8..0f9c1c9ae 100644 --- a/drivers/net/bnxt/bnxt_filter.c +++ b/drivers/net/bnxt/bnxt_filter.c @@ -5,6 +5,7 @@ #include +#include #include #include #include @@ -346,7 +347,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, @@ -372,7 +374,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 ? @@ -384,13 +386,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