From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 80A9DA00C2; Sat, 25 Apr 2020 16:02:08 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id F2ABA1C1E5; Sat, 25 Apr 2020 16:01:53 +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 66C571C1BF for ; Sat, 25 Apr 2020 16:01:49 +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 90C3B30C026; Sat, 25 Apr 2020 06:49:57 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.10.3 rnd-relay.smtp.broadcom.com 90C3B30C026 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1587822597; bh=vpSHJ1IAKtfXmM/Mtxc2fTe6WtBJoNGMsU0ZC4+jG3g=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=DtanBzeKEHB/4eBmyKRMCg7l2XFNp5szTOf9c72C25jXVzEMXUf5zi7udiOPT2oG8 CRKa+BRVlVPzMPaFn79mUZSDaxN5DMfkv1M5vcmVpdefYEMTSQFDiL5H9RbUzMPIp+ 5vok4Ntm4QO7UN731kvX98lB+/rZfXAOP7HESrBY= Received: from localhost.localdomain (unknown [10.230.185.215]) by mail-irv-17.broadcom.com (Postfix) with ESMTP id 7FF39140069; Sat, 25 Apr 2020 07:01:47 -0700 (PDT) From: Ajit Khaparde To: dev@dpdk.org Cc: Mike Baucom , Kishore Padmanabha , Venkat Duvvuru Date: Sat, 25 Apr 2020 07:01:40 -0700 Message-Id: <20200425140141.27947-4-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20200425140141.27947-1-ajit.khaparde@broadcom.com> References: <1587786446-35230-1-git-send-email-venkatkumar.duvvuru@broadcom.com> <20200425140141.27947-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-dev] [PATCH v2 3/4] net/bnxt: ulp changes to handle action/index tables 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: Mike Baucom The ulp required changes to properly call the index table management routines and use the index for external memory indices. The ulp no longer has to account for stride as the tf_core returns the actual offset, not a 0 based index. Signed-off-by: Mike Baucom Reviewed-by: Kishore Padmanabha Reviewed-by: Venkat Duvvuru Reviewed-by: Ajit Khaparde --- drivers/net/bnxt/tf_ulp/ulp_mapper.c | 30 ++++++++++++++++++---------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/drivers/net/bnxt/tf_ulp/ulp_mapper.c b/drivers/net/bnxt/tf_ulp/ulp_mapper.c index dc7b7ca5e..9ea6fdba0 100644 --- a/drivers/net/bnxt/tf_ulp/ulp_mapper.c +++ b/drivers/net/bnxt/tf_ulp/ulp_mapper.c @@ -401,7 +401,7 @@ ulp_mapper_tcam_entry_free(struct bnxt_ulp_context *ulp __rte_unused, } static inline int32_t -ulp_mapper_index_entry_free(struct bnxt_ulp_context *ulp __rte_unused, +ulp_mapper_index_entry_free(struct bnxt_ulp_context *ulp, struct tf *tfp, struct ulp_flow_db_res_params *res) { @@ -411,6 +411,12 @@ ulp_mapper_index_entry_free(struct bnxt_ulp_context *ulp __rte_unused, .idx = (uint32_t)res->resource_hndl }; + /* + * Just set the table scope, it will be ignored if not necessary + * by the tf_free_tbl_entry + */ + bnxt_ulp_cntxt_tbl_scope_id_get(ulp, &fparms.tbl_scope_id); + return tf_free_tbl_entry(tfp, &fparms); } @@ -805,6 +811,9 @@ ulp_mapper_action_alloc_and_set(struct bnxt_ulp_mapper_parms *parms, int32_t rc = 0; int32_t trc; uint64_t idx; + uint32_t tbl_scope_id; + + bnxt_ulp_cntxt_tbl_scope_id_get(parms->ulp_ctx, &tbl_scope_id); /* Set the allocation parameters for the table*/ alloc_parms.dir = atbls->direction; @@ -812,6 +821,7 @@ ulp_mapper_action_alloc_and_set(struct bnxt_ulp_mapper_parms *parms, alloc_parms.search_enable = atbls->srch_b4_alloc; alloc_parms.result = ulp_blob_data_get(blob, &alloc_parms.result_sz_in_bytes); + alloc_parms.tbl_scope_id = tbl_scope_id; if (!alloc_parms.result) { BNXT_TF_DBG(ERR, "blob is not populated\n"); return -EINVAL; @@ -826,14 +836,10 @@ ulp_mapper_action_alloc_and_set(struct bnxt_ulp_mapper_parms *parms, } /* Need to calculate the idx for the result record */ - /* - * TBD: Need to get the stride from tflib instead of having to - * understand the construction of the pointer - */ uint64_t tmpidx = alloc_parms.idx; if (atbls->table_type == TF_TBL_TYPE_EXT) - tmpidx = (alloc_parms.idx * TF_ACTION_RECORD_SZ) >> 4; + tmpidx = TF_ACT_REC_OFFSET_2_PTR(alloc_parms.idx); else tmpidx = alloc_parms.idx; @@ -863,10 +869,7 @@ ulp_mapper_action_alloc_and_set(struct bnxt_ulp_mapper_parms *parms, set_parm.data_sz_in_bytes = length / 8; if (set_parm.type == TF_TBL_TYPE_EXT) - bnxt_ulp_cntxt_tbl_scope_id_get(parms->ulp_ctx, - &set_parm.tbl_scope_id); - else - set_parm.tbl_scope_id = 0; + set_parm.tbl_scope_id = tbl_scope_id; /* set the table entry */ rc = tf_set_tbl_entry(parms->tfp, &set_parm); @@ -1396,9 +1399,11 @@ ulp_mapper_index_tbl_process(struct bnxt_ulp_mapper_parms *parms, struct tf_alloc_tbl_entry_parms aparms = { 0 }; struct tf_set_tbl_entry_parms sparms = { 0 }; struct tf_free_tbl_entry_parms free_parms = { 0 }; - + uint32_t tbl_scope_id; struct tf *tfp = bnxt_ulp_cntxt_tfp_get(parms->ulp_ctx); + bnxt_ulp_cntxt_tbl_scope_id_get(parms->ulp_ctx, &tbl_scope_id); + if (!ulp_blob_init(&data, tbl->result_bit_size, parms->order)) { BNXT_TF_DBG(ERR, "Failed initial index table blob\n"); return -EINVAL; @@ -1427,6 +1432,7 @@ ulp_mapper_index_tbl_process(struct bnxt_ulp_mapper_parms *parms, aparms.search_enable = tbl->srch_b4_alloc; aparms.result = ulp_blob_data_get(&data, &tmplen); aparms.result_sz_in_bytes = ULP_SZ_BITS2BYTES(tbl->result_bit_size); + aparms.tbl_scope_id = tbl_scope_id; /* All failures after the alloc succeeds require a free */ rc = tf_alloc_tbl_entry(tfp, &aparms); @@ -1454,6 +1460,7 @@ ulp_mapper_index_tbl_process(struct bnxt_ulp_mapper_parms *parms, sparms.data_sz_in_bytes = ULP_SZ_BITS2BYTES(tbl->result_bit_size); sparms.idx = aparms.idx; + sparms.tbl_scope_id = tbl_scope_id; rc = tf_set_tbl_entry(tfp, &sparms); if (rc) { @@ -1494,6 +1501,7 @@ ulp_mapper_index_tbl_process(struct bnxt_ulp_mapper_parms *parms, free_parms.dir = tbl->direction; free_parms.type = tbl->table_type; free_parms.idx = aparms.idx; + free_parms.tbl_scope_id = tbl_scope_id; trc = tf_free_tbl_entry(tfp, &free_parms); if (trc) -- 2.21.1 (Apple Git-122.3)