From patchwork Wed Oct 2 23:25:47 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 60472 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 C99661BFCB; Thu, 3 Oct 2019 01:26:29 +0200 (CEST) Received: from rnd-relay.smtp.broadcom.com (unknown [192.19.229.170]) by dpdk.org (Postfix) with ESMTP id 3D5711BF84 for ; Thu, 3 Oct 2019 01:26:10 +0200 (CEST) Received: from mail-irv-17.broadcom.com (mail-irv-17.lvn.broadcom.net [10.75.242.48]) by rnd-relay.smtp.broadcom.com (Postfix) with ESMTP id 6CFC230C274; Wed, 2 Oct 2019 16:24:55 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 rnd-relay.smtp.broadcom.com 6CFC230C274 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1570058695; bh=Ij/1TZoTz6wpDVX6pPG91IGVA5IoMVHVzwnYN4vX6MA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ppT+ssjSkWasVduiHFCjw924te/ooHfDQ/AgbPZeMO69Pj1ybU2wWHm0CLl+bbKLF StA3Bu7ujd2Q2gXFrmXwGwh37RJQyT+hULytm7vRpisTjm1KabLrFl5lcbSAEkWmDE eZ4dtYb72a5Pk0B3dP0ycfOWg1DRSVTLcjnPASE8= Received: from localhost.localdomain (unknown [10.230.30.225]) by mail-irv-17.broadcom.com (Postfix) with ESMTP id 80575140091; Wed, 2 Oct 2019 16:26:07 -0700 (PDT) From: Ajit Khaparde To: dev@dpdk.org Cc: ferruh.yigit@intel.com, Rahul Gupta , Lance Richardson Date: Wed, 2 Oct 2019 16:25:47 -0700 Message-Id: <20191002232601.22715-7-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.20.1 (Apple Git-117) In-Reply-To: <20191002232601.22715-1-ajit.khaparde@broadcom.com> References: <20191002232601.22715-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v2 06/20] 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 8bd9d35329..6bcdc258b7 100644 --- a/drivers/net/bnxt/bnxt_filter.h +++ b/drivers/net/bnxt/bnxt_filter.h @@ -68,6 +68,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 6703076921..0887bd7f2f 100644 --- a/drivers/net/bnxt/bnxt_flow.c +++ b/drivers/net/bnxt/bnxt_flow.c @@ -227,6 +227,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)) { @@ -712,15 +715,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; } @@ -802,13 +796,16 @@ bnxt_create_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 |