From patchwork Thu Mar 18 19:52:51 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Richardson X-Patchwork-Id: 89510 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2A465A0561; Thu, 18 Mar 2021 20:53:00 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 188C6140F5A; Thu, 18 Mar 2021 20:53:00 +0100 (CET) Received: from mail-pj1-f42.google.com (mail-pj1-f42.google.com [209.85.216.42]) by mails.dpdk.org (Postfix) with ESMTP id 74B6F140F3F for ; Thu, 18 Mar 2021 20:52:58 +0100 (CET) Received: by mail-pj1-f42.google.com with SMTP id nh23-20020a17090b3657b02900c0d5e235a8so3706278pjb.0 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=FNxntzucitytvC6BI+sTnS1Sywi+b0Ho4CGnTVPRCP0=; b=DaCjOKj1oX8+oAdvUQF+gUz9QjEI9lkaWIDr1m5cAx+j9dULM2r1kTzoAUaAdvdaGQ SkQWJqCb99saGl28wQwcTS870FxKWg5Z4WVmuBeEll6cBM6oGzwe/AnDqGFf89jPcHb1 2KEj1tAv7ZD01E0c07S8U470/WeHnjV75X3AE= 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=FNxntzucitytvC6BI+sTnS1Sywi+b0Ho4CGnTVPRCP0=; b=rB3zFTxP1i/JqR09c3La50tMTyKQOIKno2/IOVSLbQniTzi3bAREfGq2SaiQ9ybNRu 5W5/x9AwKC926AoztQCD3LjiTJJzdPB94M8MjUDBFtVqaaAWOAv6BM0a6au5+P3Bzc3B CGnZ9OOBjh2MWShjddBRpTNM/Bwi71tcAFoegY4VQJJH9okN0faAX/KM/EjXr/1h5IQl 1nh72m9PqNO4LkO+TH2JVpLWsvL2bWA3MONcVZLlRZab9z2enkaejgPhzdAm8JYggayp YoT7j8GHeZSiz6dg4S5gHAqq7PZJ+0SlopJw1AxDQ8EGN4CJau6KltAu6/AredL9yp2I D4Uw== X-Gm-Message-State: AOAM531274+m43tQhUWhfAmajyEGYV2heZc0RTDpr4Zaqv3HttX/j7HQ Feu4xYPawwbSeyp9/3x/Wj0Zog== 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 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [dpdk-dev] [PATCH 1/1] net/bnxt: fix handling of null flow mask X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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,