From patchwork Fri Oct 23 09:32:25 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simei Su X-Patchwork-Id: 81919 X-Patchwork-Delegate: qi.z.zhang@intel.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 7714DA04DE; Fri, 23 Oct 2020 11:41:23 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 60781A8F7; Fri, 23 Oct 2020 11:41:22 +0200 (CEST) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by dpdk.org (Postfix) with ESMTP id B8D00677D for ; Fri, 23 Oct 2020 11:41:19 +0200 (CEST) IronPort-SDR: w8nUrjzEf5EH481FwRKQ8/XxrTTfhceQy5+Q6cgqt9D+lp3QcAzwwGYsujq/S+sbxDcBc4ITP0 dGZ9QRMbYxGA== X-IronPort-AV: E=McAfee;i="6000,8403,9782"; a="146943620" X-IronPort-AV: E=Sophos;i="5.77,407,1596524400"; d="scan'208";a="146943620" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Oct 2020 02:41:16 -0700 IronPort-SDR: QYUL0odUoB/xt4ZkDh6MPJTs3gaddLma5BoBF0hWqJ5sxXlBnJtlvzXz6y/luTauG0DL32OJuV LPeb25s/0gbA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,407,1596524400"; d="scan'208";a="523447950" Received: from unknown (HELO npg-dpdk-cvl-simeisu-118d193.sh.intel.com) ([10.67.119.195]) by fmsmga006.fm.intel.com with ESMTP; 23 Oct 2020 02:41:15 -0700 From: Simei Su To: qi.z.zhang@intel.com, qiming.yang@intel.com Cc: dev@dpdk.org, beilei.xing@intel.com, Simei Su Date: Fri, 23 Oct 2020 17:32:25 +0800 Message-Id: <20201023093225.250915-1-simei.su@intel.com> X-Mailer: git-send-email 2.9.5 Subject: [dpdk-dev] [PATCH] net/ice: fix a error in ACL parser 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" A ACL rule with only mask not spec is invalid. This patch corrects incomplete implementation in parsing ACL pattern. Fixes: d623d798c7e6 ("net/ice: support ACL filter in DCF") Signed-off-by: Simei Su --- drivers/net/ice/ice_acl_filter.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/net/ice/ice_acl_filter.c b/drivers/net/ice/ice_acl_filter.c index ca483f0..0915d50 100644 --- a/drivers/net/ice/ice_acl_filter.c +++ b/drivers/net/ice/ice_acl_filter.c @@ -710,7 +710,8 @@ ice_acl_parse_pattern(__rte_unused struct ice_adapter *ad, return -rte_errno; } - if (ipv4_mask->hdr.src_addr) { + if (ipv4_spec->hdr.src_addr && + ipv4_mask->hdr.src_addr) { filter->input.ip.v4.src_ip = ipv4_spec->hdr.src_addr; filter->input.mask.v4.src_ip = @@ -719,7 +720,8 @@ ice_acl_parse_pattern(__rte_unused struct ice_adapter *ad, input_set |= ICE_INSET_IPV4_SRC; } - if (ipv4_mask->hdr.dst_addr) { + if (ipv4_spec->hdr.dst_addr && + ipv4_mask->hdr.dst_addr) { filter->input.ip.v4.dst_ip = ipv4_spec->hdr.dst_addr; filter->input.mask.v4.dst_ip = @@ -755,6 +757,7 @@ ice_acl_parse_pattern(__rte_unused struct ice_adapter *ad, } if (l3 == RTE_FLOW_ITEM_TYPE_IPV4 && + tcp_spec->hdr.src_port && tcp_mask->hdr.src_port) { input_set |= ICE_INSET_TCP_SRC_PORT; filter->input.ip.v4.src_port = @@ -764,6 +767,7 @@ ice_acl_parse_pattern(__rte_unused struct ice_adapter *ad, } if (l3 == RTE_FLOW_ITEM_TYPE_IPV4 && + tcp_spec->hdr.dst_port && tcp_mask->hdr.dst_port) { input_set |= ICE_INSET_TCP_DST_PORT; filter->input.ip.v4.dst_port = @@ -792,6 +796,7 @@ ice_acl_parse_pattern(__rte_unused struct ice_adapter *ad, } if (l3 == RTE_FLOW_ITEM_TYPE_IPV4 && + udp_spec->hdr.src_port && udp_mask->hdr.src_port) { input_set |= ICE_INSET_UDP_SRC_PORT; filter->input.ip.v4.src_port = @@ -801,6 +806,7 @@ ice_acl_parse_pattern(__rte_unused struct ice_adapter *ad, } if (l3 == RTE_FLOW_ITEM_TYPE_IPV4 && + udp_spec->hdr.dst_port && udp_mask->hdr.dst_port) { input_set |= ICE_INSET_UDP_DST_PORT; filter->input.ip.v4.dst_port = @@ -819,6 +825,7 @@ ice_acl_parse_pattern(__rte_unused struct ice_adapter *ad, if (sctp_spec && sctp_mask) { if (l3 == RTE_FLOW_ITEM_TYPE_IPV4 && + sctp_spec->hdr.src_port && sctp_mask->hdr.src_port) { input_set |= ICE_INSET_SCTP_SRC_PORT; filter->input.ip.v4.src_port = @@ -828,6 +835,7 @@ ice_acl_parse_pattern(__rte_unused struct ice_adapter *ad, } if (l3 == RTE_FLOW_ITEM_TYPE_IPV4 && + sctp_spec->hdr.dst_port && sctp_mask->hdr.dst_port) { input_set |= ICE_INSET_SCTP_DST_PORT; filter->input.ip.v4.dst_port =