From patchwork Fri Jul 24 05:32:16 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 74713 X-Patchwork-Delegate: ajit.khaparde@broadcom.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 73E21A0518; Fri, 24 Jul 2020 07:33:19 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 71F4F1C069; Fri, 24 Jul 2020 07:33:01 +0200 (CEST) Received: from mail-vs1-f97.google.com (mail-vs1-f97.google.com [209.85.217.97]) by dpdk.org (Postfix) with ESMTP id 0BE111C033 for ; Fri, 24 Jul 2020 07:32:58 +0200 (CEST) Received: by mail-vs1-f97.google.com with SMTP id a17so4294015vsq.6 for ; Thu, 23 Jul 2020 22:32:57 -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:in-reply-to:references :mime-version:content-transfer-encoding; bh=yPlw7zKCs9xZnX0EY+Ul1xd9z8rV6ANE1DUYZEBLr44=; b=eHzGWckIIRfpaZWQqbNukAV7AgBh4sJZYppGjaByQOADGYi2w4hRvkAxT1SWiTt00q v6NFgenb6uCOVyylN3Cnwlyb33aOQfkr33ipNJv1NIEzv+F/VqL9MN0AJ9AzM8dc1Thi dZBYh5x4aqNvYaNQsajS0pn+55KF+dVfJLftc= 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=yPlw7zKCs9xZnX0EY+Ul1xd9z8rV6ANE1DUYZEBLr44=; b=HddNlYGX9vuJmv/dKP3gdyZiLaA+XBCy/RK8W9A0aWgfktAMUqGI2FQ2qTJdeATHqx mp6YyqGYKXq/tbwKFnw4vcsiWR9K6p3CdynWskt91hjq34HN687YvDkyq/3h3XJhADPj Ue6uJ6mFFEiUzy8Q44x3oOXgskuG9/RXAP92lMdq3OcyR9GCSRz0EZoMpesjIzQIoCxM JkETuJl9ZHjhVmqpVugUZPr5p/X0oux12xCjof0CTmTgZe7reF5DqW87YnJNcNjlc8dI Pn3ikeTLzoq3TKl0xeUe7H63HxN50EAlZSj6cgOsWUQSJAu5Zf2t4iTFY/1Qzl7E7cW7 IYaQ== X-Gm-Message-State: AOAM533ysPojdP4fVioFmTml4jmlkBt196F/KeWzMXpgmTP9RmlVJDML 0k5/iuiL9ry20qtqRKkI+m2GmIK3Vu/bJqy9mgeysbuoaSDudp4Tk4mjZ54DeaXvv2VE1aWAOmy rqNBu+jHEUmMvlaC+UFs3IOJ2FBgL3XpfZ+1xlZYr6VHKTSSaymJz7oY7uYBmXX0zTWOp45T8x2 N+tA== X-Google-Smtp-Source: ABdhPJxHOljz0uPUnR9CMQWWHJV2S/NLfN7fyrPr3vkcSVXamwNjvHvuNzylcZGqdU95NFnzwUOMrT2RjQlZ X-Received: by 2002:a67:2e49:: with SMTP id u70mr6742180vsu.83.1595568777219; Thu, 23 Jul 2020 22:32:57 -0700 (PDT) Received: from localhost.localdomain ([192.19.223.252]) by smtp-relay.gmail.com with ESMTPS id h17sm592840vsk.0.2020.07.23.22.32.54 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 23 Jul 2020 22:32:57 -0700 (PDT) X-Relaying-Domain: broadcom.com From: Ajit Khaparde To: dev@dpdk.org Cc: ferruh.yigit@intel.com, Kishore Padmanabha , Michael Baucom Date: Thu, 23 Jul 2020 22:32:16 -0700 Message-Id: <20200724053235.71069-4-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20200724053235.71069-1-ajit.khaparde@broadcom.com> References: <20200723115639.22357-1-somnath.kotur@broadcom.com> <20200724053235.71069-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 03/22] net/bnxt: configure parif for offload miss rules 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" From: Kishore Padmanabha PARIF is handler to a partition of the physical port. For the offload miss rules, the parif miss path needs to be considered. The higher parif are reserved for handling this. Signed-off-by: Kishore Padmanabha Reviewed-by: Michael Baucom Reviewed-by: Ajit Khaparde --- drivers/net/bnxt/tf_ulp/ulp_def_rules.c | 4 +-- drivers/net/bnxt/tf_ulp/ulp_port_db.h | 1 + drivers/net/bnxt/tf_ulp/ulp_rte_parser.c | 40 ++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 2 deletions(-) diff --git a/drivers/net/bnxt/tf_ulp/ulp_def_rules.c b/drivers/net/bnxt/tf_ulp/ulp_def_rules.c index 4d4f7c4ea..d86e4c9ae 100644 --- a/drivers/net/bnxt/tf_ulp/ulp_def_rules.c +++ b/drivers/net/bnxt/tf_ulp/ulp_def_rules.c @@ -12,8 +12,6 @@ #include "ulp_flow_db.h" #include "ulp_mapper.h" -#define BNXT_ULP_FREE_PARIF_BASE 11 - struct bnxt_ulp_def_param_handler { int32_t (*vfr_func)(struct bnxt_ulp_context *ulp_ctx, struct ulp_tlv_param *param, @@ -85,6 +83,8 @@ ulp_set_parif_in_comp_fld(struct bnxt_ulp_context *ulp_ctx, if (parif_type == BNXT_ULP_PHY_PORT_PARIF) { idx = BNXT_ULP_CF_IDX_PHY_PORT_PARIF; + /* Parif needs to be reset to a free partition */ + parif += BNXT_ULP_FREE_PARIF_BASE; } else if (parif_type == BNXT_ULP_DRV_FUNC_PARIF) { idx = BNXT_ULP_CF_IDX_DRV_FUNC_PARIF; /* Parif needs to be reset to a free partition */ diff --git a/drivers/net/bnxt/tf_ulp/ulp_port_db.h b/drivers/net/bnxt/tf_ulp/ulp_port_db.h index 393d01b7c..2b323d168 100644 --- a/drivers/net/bnxt/tf_ulp/ulp_port_db.h +++ b/drivers/net/bnxt/tf_ulp/ulp_port_db.h @@ -10,6 +10,7 @@ #define BNXT_PORT_DB_MAX_INTF_LIST 256 #define BNXT_PORT_DB_MAX_FUNC 2048 +#define BNXT_ULP_FREE_PARIF_BASE 11 enum bnxt_ulp_svif_type { BNXT_ULP_DRV_FUNC_SVIF = 0, diff --git a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c index 3891bcdc1..39f801b2f 100644 --- a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c +++ b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c @@ -158,6 +158,43 @@ bnxt_ulp_rte_parser_act_parse(const struct rte_flow_action actions[], return BNXT_TF_RC_SUCCESS; } +/* + * Function to handle the post processing of the computed + * fields for the interface. + */ +static void +bnxt_ulp_comp_fld_intf_update(struct ulp_rte_parser_params *params) +{ + uint32_t ifindex; + uint16_t port_id, parif; + enum bnxt_ulp_direction_type dir; + + /* get the direction details */ + dir = ULP_COMP_FLD_IDX_RD(params, BNXT_ULP_CF_IDX_DIRECTION); + + if (dir == BNXT_ULP_DIR_INGRESS) { + /* read the port id details */ + port_id = ULP_COMP_FLD_IDX_RD(params, + BNXT_ULP_CF_IDX_INCOMING_IF); + if (ulp_port_db_dev_port_to_ulp_index(params->ulp_ctx, + port_id, + &ifindex)) { + BNXT_TF_DBG(ERR, "ParseErr:Portid is not valid\n"); + return; + } + /* Set port PARIF */ + if (ulp_port_db_parif_get(params->ulp_ctx, ifindex, + BNXT_ULP_PHY_PORT_PARIF, &parif)) { + BNXT_TF_DBG(ERR, "ParseErr:ifindex is not valid\n"); + return; + } + /* Parif needs to be reset to a free partition */ + parif += BNXT_ULP_FREE_PARIF_BASE; + ULP_COMP_FLD_IDX_WR(params, BNXT_ULP_CF_IDX_PHY_PORT_PARIF, + parif); + } +} + /* * Function to handle the post processing of the parsing details */ @@ -213,6 +250,9 @@ bnxt_ulp_rte_parser_post_process(struct ulp_rte_parser_params *params) /* Merge the hdr_fp_bit into the proto header bit */ params->hdr_bitmap.bits |= params->hdr_fp_bit.bits; + /* Update the computed interface parameters */ + bnxt_ulp_comp_fld_intf_update(params); + /* TBD: Handle the flow rejection scenarios */ return 0; }