From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id EE1A9A0561 for ; Thu, 18 Mar 2021 20:52:59 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E67D640698; Thu, 18 Mar 2021 20:52:59 +0100 (CET) Received: from mail-pj1-f48.google.com (mail-pj1-f48.google.com [209.85.216.48]) by mails.dpdk.org (Postfix) with ESMTP id 721C640698 for ; Thu, 18 Mar 2021 20:52:58 +0100 (CET) Received: by mail-pj1-f48.google.com with SMTP id a22-20020a17090aa516b02900c1215e9b33so5546696pjq.5 for ; Thu, 18 Mar 2021 12:52:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:mime-version; bh=881mbJNzvVtstNitN1Wd2PBB6+6/l71ZURPQ9sNBDBQ=; b=LTLxrDZd/2vSgpFAXtuqlt3upY170lZnIx+lZuHYhMDTQ656gCyOFc1UAO3ETuP5bb lp75EWJji084J+QLLHtN4zY5Yext2tMQ1AfNL/sWl0x4CwQRo9nvu2y3sh4NydRbuPR2 3UvFb9OSbVzudZ9NRin+GTuvfEuSvvp2IiBrQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version; bh=881mbJNzvVtstNitN1Wd2PBB6+6/l71ZURPQ9sNBDBQ=; b=KTvKQdeLRdPGUKhfkc46F4FisfiI1MJGtO56bnsUBZz+qsNk8k2b3ue/Hes7Qf8bJC vvwMsfnRRlYHFmojWuFcyRcMWQZhoGSqXtHFWRaUtcC5bzYtiGOt4xSL3BnnyZo2ja85 9REhUocFgrzfcUnoMpTzgqVxvUUJ9o7XJUMFW7CFFKyoVRyxGnklWENQ+i5fT6UAjJIv in8xMXRIswJB32Et3gV7uZ5s4Ban+F6rzsEpm79/iUS782taEI5ZwH65rQPx5NUdveHy bd6OX0DLfUJKWZ8gmB0i1urd2D4wvpQ/WAA3o6A3FJ65Q8OgzuG9xDYY7I8ODUbHsejh bNCA== X-Gm-Message-State: AOAM531IQdNmMZiUeO34l56AklAZg77OCvsrAtjDlfJ3ID6VhVFkq3SY IlMM8IuqmEKz+lVz9c6MxvAcjkLqcp2W7w== X-Google-Smtp-Source: ABdhPJz49PWoQAkOHxs75EirpHX1XG9qL+Ok4OYFcxY2cU5wEC5fD6xHQC6eTAysUurvTiZWKwmitw== X-Received: by 2002:a17:90a:6708:: with SMTP id n8mr6224489pjj.174.1616097177634; Thu, 18 Mar 2021 12:52:57 -0700 (PDT) Received: from localhost.localdomain ([192.19.231.250]) by smtp.gmail.com with ESMTPSA id e1sm3191845pfi.175.2021.03.18.12.52.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Mar 2021 12:52:57 -0700 (PDT) From: Lance Richardson To: Ajit Khaparde , Somnath Kotur Cc: dev@dpdk.org, stable@dpdk.org Date: Thu, 18 Mar 2021 15:52:51 -0400 Message-Id: <20210318195251.683450-1-lance.richardson@broadcom.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="000000000000371b0a05bdd4f27e" X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [dpdk-stable] [PATCH 1/1] net/bnxt: fix handling of null flow mask X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" --000000000000371b0a05bdd4f27e Content-Transfer-Encoding: 8bit When the mask field of an rte_flow pattern item is NULL, the default mask for that item type should be used. Fixes: 5ef3b79fdfe6 ("net/bnxt: support flow filter ops") Cc: stable@dpdk.org Signed-off-by: Lance Richardson --- drivers/net/bnxt/bnxt_flow.c | 47 +++++++++++++++++++++++++++--------- 1 file changed, 36 insertions(+), 11 deletions(-) diff --git a/drivers/net/bnxt/bnxt_flow.c b/drivers/net/bnxt/bnxt_flow.c index a8f5d91fc4..e3906b4779 100644 --- a/drivers/net/bnxt/bnxt_flow.c +++ b/drivers/net/bnxt/bnxt_flow.c @@ -188,11 +188,15 @@ bnxt_validate_and_parse_flow_type(struct bnxt *bp, PMD_DRV_LOG(DEBUG, "Parse inner header\n"); break; case RTE_FLOW_ITEM_TYPE_ETH: - if (!item->spec || !item->mask) + if (!item->spec) break; eth_spec = item->spec; - eth_mask = item->mask; + + if (item->mask) + eth_mask = item->mask; + else + eth_mask = &rte_flow_item_eth_mask; /* Source MAC address mask cannot be partially set. * Should be All 0's or all 1's. @@ -281,7 +285,12 @@ bnxt_validate_and_parse_flow_type(struct bnxt *bp, break; case RTE_FLOW_ITEM_TYPE_VLAN: vlan_spec = item->spec; - vlan_mask = item->mask; + + if (item->mask) + vlan_mask = item->mask; + else + vlan_mask = &rte_flow_item_vlan_mask; + if (en & en_ethertype) { rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, @@ -324,11 +333,15 @@ bnxt_validate_and_parse_flow_type(struct bnxt *bp, case RTE_FLOW_ITEM_TYPE_IPV4: /* If mask is not involved, we could use EM filters. */ ipv4_spec = item->spec; - ipv4_mask = item->mask; - if (!item->spec || !item->mask) + if (!item->spec) break; + if (item->mask) + ipv4_mask = item->mask; + else + ipv4_mask = &rte_flow_item_ipv4_mask; + /* Only IP DST and SRC fields are maskable. */ if (ipv4_mask->hdr.version_ihl || ipv4_mask->hdr.type_of_service || @@ -385,11 +398,15 @@ bnxt_validate_and_parse_flow_type(struct bnxt *bp, break; case RTE_FLOW_ITEM_TYPE_IPV6: ipv6_spec = item->spec; - ipv6_mask = item->mask; - if (!item->spec || !item->mask) + if (!item->spec) break; + if (item->mask) + ipv6_mask = item->mask; + else + ipv6_mask = &rte_flow_item_ipv6_mask; + /* Only IP DST and SRC fields are maskable. */ if (ipv6_mask->hdr.vtc_flow || ipv6_mask->hdr.payload_len || @@ -437,11 +454,15 @@ bnxt_validate_and_parse_flow_type(struct bnxt *bp, break; case RTE_FLOW_ITEM_TYPE_TCP: tcp_spec = item->spec; - tcp_mask = item->mask; - if (!item->spec || !item->mask) + if (!item->spec) break; + if (item->mask) + tcp_mask = item->mask; + else + tcp_mask = &rte_flow_item_tcp_mask; + /* Check TCP mask. Only DST & SRC ports are maskable */ if (tcp_mask->hdr.sent_seq || tcp_mask->hdr.recv_ack || @@ -482,11 +503,15 @@ bnxt_validate_and_parse_flow_type(struct bnxt *bp, break; case RTE_FLOW_ITEM_TYPE_UDP: udp_spec = item->spec; - udp_mask = item->mask; - if (!item->spec || !item->mask) + if (!item->spec) break; + if (item->mask) + udp_mask = item->mask; + else + udp_mask = &rte_flow_item_udp_mask; + if (udp_mask->hdr.dgram_len || udp_mask->hdr.dgram_cksum) { rte_flow_error_set(error, -- 2.25.1 --000000000000371b0a05bdd4f27e--