From patchwork Tue Sep 3 02:18:50 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 58428 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 18FCA1EAE6; Tue, 3 Sep 2019 04:19:24 +0200 (CEST) Received: from rnd-relay.smtp.broadcom.com (rnd-relay.smtp.broadcom.com [192.19.229.170]) by dpdk.org (Postfix) with ESMTP id 832881E8D5 for ; Tue, 3 Sep 2019 04:19:08 +0200 (CEST) Received: from nis-sj1-27.broadcom.com (nis-sj1-27.lvn.broadcom.net [10.75.144.136]) by rnd-relay.smtp.broadcom.com (Postfix) with ESMTP id 040DD30C1F3; Mon, 2 Sep 2019 19:19:01 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 rnd-relay.smtp.broadcom.com 040DD30C1F3 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1567477141; bh=jDRQO4Ttf94x8W+sYBrtuFHwWPuMKzMAvg2ouQtbXF0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=cfkGvM9xOBqxwfloUue8sF8v9UOwc8Ddjj0tzuWwVun5Eqmx0YGCCxdKkBc01CYW/ CXKc5idC4LgPIj63Z8FWbbYwSlROx3E6zf1StzjBjgWxWbxhn3yHAGpcFkAtiA/o76 6iZCke+8YYIv+bSpAt5XaO+46eFDKKXf5frqFPy8= Received: from localhost.localdomain (unknown [10.230.30.225]) by nis-sj1-27.broadcom.com (Postfix) with ESMTP id 163C6AC06AB; Mon, 2 Sep 2019 19:19:07 -0700 (PDT) From: Ajit Khaparde To: dev@dpdk.org Cc: ferruh.yigit@intel.com, Rahul Gupta , Lance Richardson Date: Mon, 2 Sep 2019 19:18:50 -0700 Message-Id: <20190903021901.25895-7-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.20.1 (Apple Git-117) In-Reply-To: <20190903021901.25895-1-ajit.khaparde@broadcom.com> References: <20190903021901.25895-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH 06/17] net/bnxt: parse priority attribute for flow creation 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" Parse priority attribute during flow creation. This information will be used to give a hint to the FW to place the flow rule accordingly in the CFA tables. Reviewed-by: Rahul Gupta Reviewed-by: Lance Richardson Signed-off-by: Ajit Khaparde --- drivers/net/bnxt/bnxt_filter.h | 1 + drivers/net/bnxt/bnxt_flow.c | 25 +++++++++++-------------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/drivers/net/bnxt/bnxt_filter.h b/drivers/net/bnxt/bnxt_filter.h index 52d3582ba..bcb9d6031 100644 --- a/drivers/net/bnxt/bnxt_filter.h +++ b/drivers/net/bnxt/bnxt_filter.h @@ -66,6 +66,7 @@ struct bnxt_filter_info { uint16_t ip_protocol; uint16_t ip_addr_type; uint16_t ethertype; + uint32_t priority; }; struct bnxt_filter_info *bnxt_alloc_filter(struct bnxt *bp); diff --git a/drivers/net/bnxt/bnxt_flow.c b/drivers/net/bnxt/bnxt_flow.c index 1328f25bc..2d107a892 100644 --- a/drivers/net/bnxt/bnxt_flow.c +++ b/drivers/net/bnxt/bnxt_flow.c @@ -225,6 +225,9 @@ bnxt_validate_and_parse_flow_type(struct bnxt *bp, valid_flags |= inner ? BNXT_FLOW_L2_INNER_DST_VALID_FLAG : BNXT_FLOW_L2_DST_VALID_FLAG; + filter->priority = attr->priority; + PMD_DRV_LOG(DEBUG, + "Creating a priority flow\n"); } if (rte_is_broadcast_ether_addr(ð_mask->src)) { @@ -710,15 +713,6 @@ bnxt_flow_parse_attr(const struct rte_flow_attr *attr, return -rte_errno; } - /* Not supported */ - if (attr->priority) { - rte_flow_error_set(error, - EINVAL, - RTE_FLOW_ERROR_TYPE_ATTR_PRIORITY, - attr, - "No support for priority."); - return -rte_errno; - } return 0; } @@ -764,13 +758,16 @@ bnxt_get_l2_filter(struct bnxt *bp, struct bnxt_filter_info *nf, memcpy(filter1->l2_addr, nf->dst_macaddr, RTE_ETHER_ADDR_LEN); } - if (nf->valid_flags & BNXT_FLOW_L2_DST_VALID_FLAG || - nf->valid_flags & BNXT_FLOW_L2_INNER_DST_VALID_FLAG) { + if (nf->priority && + (nf->valid_flags & BNXT_FLOW_L2_DST_VALID_FLAG || + nf->valid_flags & BNXT_FLOW_L2_INNER_DST_VALID_FLAG)) { /* Tell the FW where to place the filter in the table. */ - filter1->pri_hint = + if (nf->priority > 65535) { + filter1->pri_hint = HWRM_CFA_L2_FILTER_ALLOC_INPUT_PRI_HINT_BELOW_FILTER; - /* This will place the filter in TCAM */ - filter1->l2_filter_id_hint = (uint64_t)-1; + /* This will place the filter in TCAM */ + filter1->l2_filter_id_hint = (uint64_t)-1; + } } filter1->enables = HWRM_CFA_L2_FILTER_ALLOC_INPUT_ENABLES_L2_ADDR |