All of lore.kernel.org
 help / color / mirror / Atom feed
From: Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>
To: dev@dpdk.org
Cc: Peter Spreadborough <peter.spreadborough@broadcom.com>,
	Randy Schacher <stuart.schacher@broadcom.com>,
	Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>
Subject: [dpdk-dev] [PATCH 03/58] net/bnxt: add mailbox selection via dev op
Date: Sun, 30 May 2021 14:28:34 +0530	[thread overview]
Message-ID: <20210530085929.29695-4-venkatkumar.duvvuru@broadcom.com> (raw)
In-Reply-To: <20210530085929.29695-1-venkatkumar.duvvuru@broadcom.com>

From: Peter Spreadborough <peter.spreadborough@broadcom.com>

Add get mailbox dev op so that mailbox offset is based on device
rather than hard coded.

Signed-off-by: Peter Spreadborough <peter.spreadborough@broadcom.com>
Signed-off-by: Randy Schacher <stuart.schacher@broadcom.com>
Signed-off-by: Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>
Reviewed-by: Farah Smith <farah.smith@broadcom.com>
---
 drivers/net/bnxt/tf_core/tf_device.c     |  21 ++
 drivers/net/bnxt/tf_core/tf_device.h     |  12 +
 drivers/net/bnxt/tf_core/tf_device_p4.c  |   8 +
 drivers/net/bnxt/tf_core/tf_device_p58.c |   7 +
 drivers/net/bnxt/tf_core/tf_msg.c        | 410 +++++++++++++++++++++--
 drivers/net/bnxt/tf_core/tf_msg.h        |  12 +-
 drivers/net/bnxt/tf_core/tf_rm.c         |   2 +
 drivers/net/bnxt/tf_core/tf_session.c    |  22 +-
 drivers/net/bnxt/tf_core/tf_tcam.c       |   4 +-
 9 files changed, 463 insertions(+), 35 deletions(-)

diff --git a/drivers/net/bnxt/tf_core/tf_device.c b/drivers/net/bnxt/tf_core/tf_device.c
index 9c63f6d5d4..5116601a69 100644
--- a/drivers/net/bnxt/tf_core/tf_device.c
+++ b/drivers/net/bnxt/tf_core/tf_device.c
@@ -461,6 +461,27 @@ tf_dev_bind(struct tf *tfp __rte_unused,
 	}
 }
 
+int
+tf_dev_bind_ops(enum tf_device_type type,
+		struct tf_dev_info *dev_handle)
+{
+	switch (type) {
+	case TF_DEVICE_TYPE_WH:
+	case TF_DEVICE_TYPE_SR:
+		dev_handle->ops = &tf_dev_ops_p4;
+		break;
+	case TF_DEVICE_TYPE_THOR:
+		dev_handle->ops = &tf_dev_ops_p58;
+		break;
+	default:
+		TFP_DRV_LOG(ERR,
+			    "No such device\n");
+		return -ENODEV;
+	}
+
+	return 0;
+}
+
 int
 tf_dev_unbind(struct tf *tfp,
 	      struct tf_dev_info *dev_handle)
diff --git a/drivers/net/bnxt/tf_core/tf_device.h b/drivers/net/bnxt/tf_core/tf_device.h
index d5ef72309f..cbacc09ea5 100644
--- a/drivers/net/bnxt/tf_core/tf_device.h
+++ b/drivers/net/bnxt/tf_core/tf_device.h
@@ -108,6 +108,10 @@ int tf_dev_bind(struct tf *tfp,
 int tf_dev_unbind(struct tf *tfp,
 		  struct tf_dev_info *dev_handle);
 
+int
+tf_dev_bind_ops(enum tf_device_type type,
+		struct tf_dev_info *dev_handle);
+
 /**
  * Truflow device specific function hooks structure
  *
@@ -724,6 +728,14 @@ struct tf_dev_ops {
 	 */
 	int (*tf_dev_get_global_cfg)(struct tf *tfp,
 				     struct tf_global_cfg_parms *parms);
+
+	/**
+	 * Get mailbox
+	 *
+	 *    returns:
+	 *      mailbox
+	 */
+	int (*tf_dev_get_mailbox)(void);
 };
 
 /**
diff --git a/drivers/net/bnxt/tf_core/tf_device_p4.c b/drivers/net/bnxt/tf_core/tf_device_p4.c
index 257a0fb2d0..6b28f6ce59 100644
--- a/drivers/net/bnxt/tf_core/tf_device_p4.c
+++ b/drivers/net/bnxt/tf_core/tf_device_p4.c
@@ -13,6 +13,7 @@
 #include "tf_em.h"
 #include "tf_if_tbl.h"
 #include "tfp.h"
+#include "tf_msg_common.h"
 
 #define TF_DEV_P4_PARIF_MAX 16
 #define TF_DEV_P4_PF_MASK 0xfUL
@@ -241,6 +242,11 @@ tf_dev_p4_map_parif(struct tf *tfp __rte_unused,
 	return 0;
 }
 
+static int tf_dev_p4_get_mailbox(void)
+{
+	return TF_KONG_MB;
+}
+
 
 /**
  * Truflow P4 device specific functions
@@ -278,6 +284,7 @@ const struct tf_dev_ops tf_dev_ops_p4_init = {
 	.tf_dev_get_if_tbl = NULL,
 	.tf_dev_set_global_cfg = NULL,
 	.tf_dev_get_global_cfg = NULL,
+	.tf_dev_get_mailbox = tf_dev_p4_get_mailbox,
 };
 
 /**
@@ -316,4 +323,5 @@ const struct tf_dev_ops tf_dev_ops_p4 = {
 	.tf_dev_get_if_tbl = tf_if_tbl_get,
 	.tf_dev_set_global_cfg = tf_global_cfg_set,
 	.tf_dev_get_global_cfg = tf_global_cfg_get,
+	.tf_dev_get_mailbox = tf_dev_p4_get_mailbox,
 };
diff --git a/drivers/net/bnxt/tf_core/tf_device_p58.c b/drivers/net/bnxt/tf_core/tf_device_p58.c
index fb5ad29a5c..b4530f8762 100644
--- a/drivers/net/bnxt/tf_core/tf_device_p58.c
+++ b/drivers/net/bnxt/tf_core/tf_device_p58.c
@@ -13,6 +13,7 @@
 #include "tf_em.h"
 #include "tf_if_tbl.h"
 #include "tfp.h"
+#include "tf_msg_common.h"
 
 #define TF_DEV_P58_PARIF_MAX 16
 #define TF_DEV_P58_PF_MASK 0xfUL
@@ -206,6 +207,10 @@ tf_dev_p58_map_parif(struct tf *tfp __rte_unused,
 	return 0;
 }
 
+static int tf_dev_p58_get_mailbox(void)
+{
+	return TF_CHIMP_MB;
+}
 
 /**
  * Truflow P58 device specific functions
@@ -243,6 +248,7 @@ const struct tf_dev_ops tf_dev_ops_p58_init = {
 	.tf_dev_get_if_tbl = NULL,
 	.tf_dev_set_global_cfg = NULL,
 	.tf_dev_get_global_cfg = NULL,
+	.tf_dev_get_mailbox = tf_dev_p58_get_mailbox,
 };
 
 /**
@@ -281,4 +287,5 @@ const struct tf_dev_ops tf_dev_ops_p58 = {
 	.tf_dev_get_if_tbl = tf_if_tbl_get,
 	.tf_dev_set_global_cfg = tf_global_cfg_set,
 	.tf_dev_get_global_cfg = tf_global_cfg_get,
+	.tf_dev_get_mailbox = tf_dev_p58_get_mailbox,
 };
diff --git a/drivers/net/bnxt/tf_core/tf_msg.c b/drivers/net/bnxt/tf_core/tf_msg.c
index f20a5113bf..1007211363 100644
--- a/drivers/net/bnxt/tf_core/tf_msg.c
+++ b/drivers/net/bnxt/tf_core/tf_msg.c
@@ -116,7 +116,8 @@ int
 tf_msg_session_open(struct tf *tfp,
 		    char *ctrl_chan_name,
 		    uint8_t *fw_session_id,
-		    uint8_t *fw_session_client_id)
+		    uint8_t *fw_session_client_id,
+		    struct tf_dev_info *dev)
 {
 	int rc;
 	struct hwrm_tf_session_open_input req = { 0 };
@@ -131,7 +132,7 @@ tf_msg_session_open(struct tf *tfp,
 	parms.req_size = sizeof(req);
 	parms.resp_data = (uint32_t *)&resp;
 	parms.resp_size = sizeof(resp);
-	parms.mailbox = TF_KONG_MB;
+	parms.mailbox = dev->ops->tf_dev_get_mailbox();
 
 	rc = tfp_send_msg_direct(tfp,
 				 &parms);
@@ -155,6 +156,7 @@ tf_msg_session_attach(struct tf *tfp __rte_unused,
 
 int
 tf_msg_session_client_register(struct tf *tfp,
+			       struct tf_session *tfs,
 			       char *ctrl_channel_name,
 			       uint8_t *fw_session_client_id)
 {
@@ -163,6 +165,16 @@ tf_msg_session_client_register(struct tf *tfp,
 	struct hwrm_tf_session_register_output resp = { 0 };
 	struct tfp_send_msg_parms parms = { 0 };
 	uint8_t fw_session_id;
+	struct tf_dev_info *dev;
+
+	/* Retrieve the device information */
+	rc = tf_session_get_device(tfs, &dev);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "Failed to lookup device, rc:%s\n",
+			    strerror(-rc));
+		return rc;
+	}
 
 	rc = tf_session_get_fw_session_id(tfp, &fw_session_id);
 	if (rc) {
@@ -183,7 +195,7 @@ tf_msg_session_client_register(struct tf *tfp,
 	parms.req_size = sizeof(req);
 	parms.resp_data = (uint32_t *)&resp;
 	parms.resp_size = sizeof(resp);
-	parms.mailbox = TF_KONG_MB;
+	parms.mailbox = dev->ops->tf_dev_get_mailbox();
 
 	rc = tfp_send_msg_direct(tfp,
 				 &parms);
@@ -198,6 +210,7 @@ tf_msg_session_client_register(struct tf *tfp,
 
 int
 tf_msg_session_client_unregister(struct tf *tfp,
+				 struct tf_session *tfs,
 				 uint8_t fw_session_client_id)
 {
 	int rc;
@@ -205,6 +218,16 @@ tf_msg_session_client_unregister(struct tf *tfp,
 	struct hwrm_tf_session_unregister_output resp = { 0 };
 	struct tfp_send_msg_parms parms = { 0 };
 	uint8_t fw_session_id;
+	struct tf_dev_info *dev;
+
+	/* Retrieve the device information */
+	rc = tf_session_get_device(tfs, &dev);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "Failed to lookup device, rc:%s\n",
+			    strerror(-rc));
+		return rc;
+	}
 
 	rc = tf_session_get_fw_session_id(tfp, &fw_session_id);
 	if (rc) {
@@ -223,7 +246,7 @@ tf_msg_session_client_unregister(struct tf *tfp,
 	parms.req_size = sizeof(req);
 	parms.resp_data = (uint32_t *)&resp;
 	parms.resp_size = sizeof(resp);
-	parms.mailbox = TF_KONG_MB;
+	parms.mailbox = dev->ops->tf_dev_get_mailbox();
 
 	rc = tfp_send_msg_direct(tfp,
 				 &parms);
@@ -232,13 +255,24 @@ tf_msg_session_client_unregister(struct tf *tfp,
 }
 
 int
-tf_msg_session_close(struct tf *tfp)
+tf_msg_session_close(struct tf *tfp,
+		     struct tf_session *tfs)
 {
 	int rc;
 	struct hwrm_tf_session_close_input req = { 0 };
 	struct hwrm_tf_session_close_output resp = { 0 };
 	struct tfp_send_msg_parms parms = { 0 };
 	uint8_t fw_session_id;
+	struct tf_dev_info *dev;
+
+	/* Retrieve the device information */
+	rc = tf_session_get_device(tfs, &dev);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "Failed to lookup device, rc:%s\n",
+			    strerror(-rc));
+		return rc;
+	}
 
 	rc = tf_session_get_fw_session_id(tfp, &fw_session_id);
 	if (rc) {
@@ -256,7 +290,7 @@ tf_msg_session_close(struct tf *tfp)
 	parms.req_size = sizeof(req);
 	parms.resp_data = (uint32_t *)&resp;
 	parms.resp_size = sizeof(resp);
-	parms.mailbox = TF_KONG_MB;
+	parms.mailbox = dev->ops->tf_dev_get_mailbox();
 
 	rc = tfp_send_msg_direct(tfp,
 				 &parms);
@@ -271,6 +305,26 @@ tf_msg_session_qcfg(struct tf *tfp)
 	struct hwrm_tf_session_qcfg_output resp = { 0 };
 	struct tfp_send_msg_parms parms = { 0 };
 	uint8_t fw_session_id;
+	struct tf_dev_info *dev;
+	struct tf_session *tfs;
+
+	/* Retrieve the session information */
+	rc = tf_session_get_session_internal(tfp, &tfs);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "Failed to lookup session, rc:%s\n",
+			    strerror(-rc));
+		return rc;
+	}
+
+	/* Retrieve the device information */
+	rc = tf_session_get_device(tfs, &dev);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "Failed to lookup device, rc:%s\n",
+			    strerror(-rc));
+		return rc;
+	}
 
 	rc = tf_session_get_fw_session_id(tfp, &fw_session_id);
 	if (rc) {
@@ -288,7 +342,7 @@ tf_msg_session_qcfg(struct tf *tfp)
 	parms.req_size = sizeof(req);
 	parms.resp_data = (uint32_t *)&resp;
 	parms.resp_size = sizeof(resp);
-	parms.mailbox = TF_KONG_MB;
+	parms.mailbox = dev->ops->tf_dev_get_mailbox();
 
 	rc = tfp_send_msg_direct(tfp,
 				 &parms);
@@ -297,6 +351,7 @@ tf_msg_session_qcfg(struct tf *tfp)
 
 int
 tf_msg_session_resc_qcaps(struct tf *tfp,
+			  struct tf_dev_info *dev,
 			  enum tf_dir dir,
 			  uint16_t size,
 			  struct tf_rm_resc_req_entry *query,
@@ -340,7 +395,7 @@ tf_msg_session_resc_qcaps(struct tf *tfp,
 	parms.req_size = sizeof(req);
 	parms.resp_data = (uint32_t *)&resp;
 	parms.resp_size = sizeof(resp);
-	parms.mailbox = TF_KONG_MB;
+	parms.mailbox = dev->ops->tf_dev_get_mailbox();
 
 	rc = tfp_send_msg_direct(tfp, &parms);
 	if (rc)
@@ -378,6 +433,7 @@ tf_msg_session_resc_qcaps(struct tf *tfp,
 
 int
 tf_msg_session_resc_alloc(struct tf *tfp,
+			  struct tf_dev_info *dev,
 			  enum tf_dir dir,
 			  uint16_t size,
 			  struct tf_rm_resc_req_entry *request,
@@ -439,7 +495,7 @@ tf_msg_session_resc_alloc(struct tf *tfp,
 	parms.req_size = sizeof(req);
 	parms.resp_data = (uint32_t *)&resp;
 	parms.resp_size = sizeof(resp);
-	parms.mailbox = TF_KONG_MB;
+	parms.mailbox = dev->ops->tf_dev_get_mailbox();
 
 	rc = tfp_send_msg_direct(tfp, &parms);
 	if (rc)
@@ -487,9 +543,31 @@ tf_msg_session_resc_flush(struct tf *tfp,
 	struct tf_msg_dma_buf resv_buf = { 0 };
 	struct tf_rm_resc_entry *resv_data;
 	int dma_size;
+	struct tf_dev_info *dev;
+	struct tf_session *tfs;
 
 	TF_CHECK_PARMS2(tfp, resv);
 
+	/* Retrieve the session information */
+	rc = tf_session_get_session_internal(tfp, &tfs);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "%s: Failed to lookup session, rc:%s\n",
+			    tf_dir_2_str(dir),
+			    strerror(-rc));
+		return rc;
+	}
+
+	/* Retrieve the device information */
+	rc = tf_session_get_device(tfs, &dev);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "%s: Failed to lookup device, rc:%s\n",
+			    tf_dir_2_str(dir),
+			    strerror(-rc));
+		return rc;
+	}
+
 	rc = tf_session_get_fw_session_id(tfp, &fw_session_id);
 	if (rc) {
 		TFP_DRV_LOG(ERR,
@@ -524,7 +602,7 @@ tf_msg_session_resc_flush(struct tf *tfp,
 	parms.req_size = sizeof(req);
 	parms.resp_data = (uint32_t *)&resp;
 	parms.resp_size = sizeof(resp);
-	parms.mailbox = TF_KONG_MB;
+	parms.mailbox = dev->ops->tf_dev_get_mailbox();
 
 	rc = tfp_send_msg_direct(tfp, &parms);
 
@@ -549,6 +627,28 @@ tf_msg_insert_em_internal_entry(struct tf *tfp,
 	uint16_t flags;
 	uint8_t fw_session_id;
 	uint8_t msg_key_size;
+	struct tf_dev_info *dev;
+	struct tf_session *tfs;
+
+	/* Retrieve the session information */
+	rc = tf_session_get_session_internal(tfp, &tfs);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "%s: Failed to lookup session, rc:%s\n",
+			    tf_dir_2_str(em_parms->dir),
+			    strerror(-rc));
+		return rc;
+	}
+
+	/* Retrieve the device information */
+	rc = tf_session_get_device(tfs, &dev);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "%s: Failed to lookup device, rc:%s\n",
+			    tf_dir_2_str(em_parms->dir),
+			    strerror(-rc));
+		return rc;
+	}
 
 	rc = tf_session_get_fw_session_id(tfp, &fw_session_id);
 	if (rc) {
@@ -593,7 +693,7 @@ tf_msg_insert_em_internal_entry(struct tf *tfp,
 	parms.req_size = sizeof(req);
 	parms.resp_data = (uint32_t *)&resp;
 	parms.resp_size = sizeof(resp);
-	parms.mailbox = TF_KONG_MB;
+	parms.mailbox = dev->ops->tf_dev_get_mailbox();
 
 	rc = tfp_send_msg_direct(tfp,
 				 &parms);
@@ -617,6 +717,28 @@ tf_msg_delete_em_entry(struct tf *tfp,
 	struct hwrm_tf_em_delete_output resp = { 0 };
 	uint16_t flags;
 	uint8_t fw_session_id;
+	struct tf_dev_info *dev;
+	struct tf_session *tfs;
+
+	/* Retrieve the session information */
+	rc = tf_session_get_session_internal(tfp, &tfs);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "%s: Failed to lookup session, rc:%s\n",
+			    tf_dir_2_str(em_parms->dir),
+			    strerror(-rc));
+		return rc;
+	}
+
+	/* Retrieve the device information */
+	rc = tf_session_get_device(tfs, &dev);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "%s: Failed to lookup device, rc:%s\n",
+			    tf_dir_2_str(em_parms->dir),
+			    strerror(-rc));
+		return rc;
+	}
 
 	rc = tf_session_get_fw_session_id(tfp, &fw_session_id);
 	if (rc) {
@@ -641,7 +763,7 @@ tf_msg_delete_em_entry(struct tf *tfp,
 	parms.req_size = sizeof(req);
 	parms.resp_data = (uint32_t *)&resp;
 	parms.resp_size = sizeof(resp);
-	parms.mailbox = TF_KONG_MB;
+	parms.mailbox = dev->ops->tf_dev_get_mailbox();
 
 	rc = tfp_send_msg_direct(tfp,
 				 &parms);
@@ -664,6 +786,26 @@ tf_msg_em_mem_rgtr(struct tf *tfp,
 	struct hwrm_tf_ctxt_mem_rgtr_input req = { 0 };
 	struct hwrm_tf_ctxt_mem_rgtr_output resp = { 0 };
 	struct tfp_send_msg_parms parms = { 0 };
+	struct tf_dev_info *dev;
+	struct tf_session *tfs;
+
+	/* Retrieve the session information */
+	rc = tf_session_get_session_internal(tfp, &tfs);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "Failed to lookup session, rc:%s\n",
+			    strerror(-rc));
+		return rc;
+	}
+
+	/* Retrieve the device information */
+	rc = tf_session_get_device(tfs, &dev);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "Failed to lookup device, rc:%s\n",
+			    strerror(-rc));
+		return rc;
+	}
 
 	req.page_level = page_lvl;
 	req.page_size = page_size;
@@ -674,7 +816,7 @@ tf_msg_em_mem_rgtr(struct tf *tfp,
 	parms.req_size = sizeof(req);
 	parms.resp_data = (uint32_t *)&resp;
 	parms.resp_size = sizeof(resp);
-	parms.mailbox = TF_KONG_MB;
+	parms.mailbox = dev->ops->tf_dev_get_mailbox();
 
 	rc = tfp_send_msg_direct(tfp,
 				 &parms);
@@ -694,6 +836,26 @@ tf_msg_em_mem_unrgtr(struct tf *tfp,
 	struct hwrm_tf_ctxt_mem_unrgtr_input req = {0};
 	struct hwrm_tf_ctxt_mem_unrgtr_output resp = {0};
 	struct tfp_send_msg_parms parms = { 0 };
+	struct tf_dev_info *dev;
+	struct tf_session *tfs;
+
+	/* Retrieve the session information */
+	rc = tf_session_get_session_internal(tfp, &tfs);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "Failed to lookup session, rc:%s\n",
+			    strerror(-rc));
+		return rc;
+	}
+
+	/* Retrieve the device information */
+	rc = tf_session_get_device(tfs, &dev);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "Failed to lookup device, rc:%s\n",
+			    strerror(-rc));
+		return rc;
+	}
 
 	req.ctx_id = tfp_cpu_to_le_32(*ctx_id);
 
@@ -702,7 +864,7 @@ tf_msg_em_mem_unrgtr(struct tf *tfp,
 	parms.req_size = sizeof(req);
 	parms.resp_data = (uint32_t *)&resp;
 	parms.resp_size = sizeof(resp);
-	parms.mailbox = TF_KONG_MB;
+	parms.mailbox = dev->ops->tf_dev_get_mailbox();
 
 	rc = tfp_send_msg_direct(tfp,
 				 &parms);
@@ -719,6 +881,28 @@ tf_msg_em_qcaps(struct tf *tfp,
 	struct hwrm_tf_ext_em_qcaps_output resp = { 0 };
 	uint32_t             flags;
 	struct tfp_send_msg_parms parms = { 0 };
+	struct tf_dev_info *dev;
+	struct tf_session *tfs;
+
+	/* Retrieve the session information */
+	rc = tf_session_get_session_internal(tfp, &tfs);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "%s: Failed to lookup session, rc:%s\n",
+			    tf_dir_2_str(dir),
+			    strerror(-rc));
+		return rc;
+	}
+
+	/* Retrieve the device information */
+	rc = tf_session_get_device(tfs, &dev);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "%s: Failed to lookup device, rc:%s\n",
+			    tf_dir_2_str(dir),
+			    strerror(-rc));
+		return rc;
+	}
 
 	flags = (dir == TF_DIR_TX ? HWRM_TF_EXT_EM_QCAPS_INPUT_FLAGS_DIR_TX :
 		 HWRM_TF_EXT_EM_QCAPS_INPUT_FLAGS_DIR_RX);
@@ -729,7 +913,7 @@ tf_msg_em_qcaps(struct tf *tfp,
 	parms.req_size = sizeof(req);
 	parms.resp_data = (uint32_t *)&resp;
 	parms.resp_size = sizeof(resp);
-	parms.mailbox = TF_KONG_MB;
+	parms.mailbox = dev->ops->tf_dev_get_mailbox();
 
 	rc = tfp_send_msg_direct(tfp,
 				 &parms);
@@ -762,6 +946,28 @@ tf_msg_em_cfg(struct tf *tfp,
 	struct hwrm_tf_ext_em_cfg_output resp = {0};
 	uint32_t flags;
 	struct tfp_send_msg_parms parms = { 0 };
+	struct tf_dev_info *dev;
+	struct tf_session *tfs;
+
+	/* Retrieve the session information */
+	rc = tf_session_get_session_internal(tfp, &tfs);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "%s: Failed to lookup session, rc:%s\n",
+			    tf_dir_2_str(dir),
+			    strerror(-rc));
+		return rc;
+	}
+
+	/* Retrieve the device information */
+	rc = tf_session_get_device(tfs, &dev);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "%s: Failed to lookup device, rc:%s\n",
+			    tf_dir_2_str(dir),
+			    strerror(-rc));
+		return rc;
+	}
 
 	flags = (dir == TF_DIR_TX ? HWRM_TF_EXT_EM_CFG_INPUT_FLAGS_DIR_TX :
 		 HWRM_TF_EXT_EM_CFG_INPUT_FLAGS_DIR_RX);
@@ -782,7 +988,7 @@ tf_msg_em_cfg(struct tf *tfp,
 	parms.req_size = sizeof(req);
 	parms.resp_data = (uint32_t *)&resp;
 	parms.resp_size = sizeof(resp);
-	parms.mailbox = TF_KONG_MB;
+	parms.mailbox = dev->ops->tf_dev_get_mailbox();
 
 	rc = tfp_send_msg_direct(tfp,
 				 &parms);
@@ -799,6 +1005,28 @@ tf_msg_em_op(struct tf *tfp,
 	struct hwrm_tf_ext_em_op_output resp = {0};
 	uint32_t flags;
 	struct tfp_send_msg_parms parms = { 0 };
+	struct tf_dev_info *dev;
+	struct tf_session *tfs;
+
+	/* Retrieve the session information */
+	rc = tf_session_get_session_internal(tfp, &tfs);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "%s: Failed to lookup session, rc:%s\n",
+			    tf_dir_2_str(dir),
+			    strerror(-rc));
+		return rc;
+	}
+
+	/* Retrieve the device information */
+	rc = tf_session_get_device(tfs, &dev);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "%s: Failed to lookup device, rc:%s\n",
+			    tf_dir_2_str(dir),
+			    strerror(-rc));
+		return rc;
+	}
 
 	flags = (dir == TF_DIR_TX ? HWRM_TF_EXT_EM_CFG_INPUT_FLAGS_DIR_TX :
 		 HWRM_TF_EXT_EM_CFG_INPUT_FLAGS_DIR_RX);
@@ -810,7 +1038,7 @@ tf_msg_em_op(struct tf *tfp,
 	parms.req_size = sizeof(req);
 	parms.resp_data = (uint32_t *)&resp;
 	parms.resp_size = sizeof(resp);
-	parms.mailbox = TF_KONG_MB;
+	parms.mailbox = dev->ops->tf_dev_get_mailbox();
 
 	rc = tfp_send_msg_direct(tfp,
 				 &parms);
@@ -819,6 +1047,7 @@ tf_msg_em_op(struct tf *tfp,
 
 int
 tf_msg_tcam_entry_set(struct tf *tfp,
+		      struct tf_dev_info *dev,
 		      struct tf_tcam_set_parms *parms)
 {
 	int rc;
@@ -877,7 +1106,7 @@ tf_msg_tcam_entry_set(struct tf *tfp,
 	mparms.req_size = sizeof(req);
 	mparms.resp_data = (uint32_t *)&resp;
 	mparms.resp_size = sizeof(resp);
-	mparms.mailbox = TF_KONG_MB;
+	mparms.mailbox = dev->ops->tf_dev_get_mailbox();
 
 	rc = tfp_send_msg_direct(tfp,
 				 &mparms);
@@ -890,6 +1119,7 @@ tf_msg_tcam_entry_set(struct tf *tfp,
 
 int
 tf_msg_tcam_entry_free(struct tf *tfp,
+		       struct tf_dev_info *dev,
 		       struct tf_tcam_free_parms *in_parms)
 {
 	int rc;
@@ -920,7 +1150,7 @@ tf_msg_tcam_entry_free(struct tf *tfp,
 	parms.req_size = sizeof(req);
 	parms.resp_data = (uint32_t *)&resp;
 	parms.resp_size = sizeof(resp);
-	parms.mailbox = TF_KONG_MB;
+	parms.mailbox = dev->ops->tf_dev_get_mailbox();
 
 	rc = tfp_send_msg_direct(tfp,
 				 &parms);
@@ -940,6 +1170,28 @@ tf_msg_set_tbl_entry(struct tf *tfp,
 	struct hwrm_tf_tbl_type_set_output resp = { 0 };
 	struct tfp_send_msg_parms parms = { 0 };
 	uint8_t fw_session_id;
+	struct tf_dev_info *dev;
+	struct tf_session *tfs;
+
+	/* Retrieve the session information */
+	rc = tf_session_get_session_internal(tfp, &tfs);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "%s: Failed to lookup session, rc:%s\n",
+			    tf_dir_2_str(dir),
+			    strerror(-rc));
+		return rc;
+	}
+
+	/* Retrieve the device information */
+	rc = tf_session_get_device(tfs, &dev);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "%s: Failed to lookup device, rc:%s\n",
+			    tf_dir_2_str(dir),
+			    strerror(-rc));
+		return rc;
+	}
 
 	rc = tf_session_get_fw_session_id(tfp, &fw_session_id);
 	if (rc) {
@@ -976,7 +1228,7 @@ tf_msg_set_tbl_entry(struct tf *tfp,
 	parms.req_size = sizeof(req);
 	parms.resp_data = (uint32_t *)&resp;
 	parms.resp_size = sizeof(resp);
-	parms.mailbox = TF_KONG_MB;
+	parms.mailbox = dev->ops->tf_dev_get_mailbox();
 
 	rc = tfp_send_msg_direct(tfp,
 				 &parms);
@@ -999,6 +1251,28 @@ tf_msg_get_tbl_entry(struct tf *tfp,
 	struct hwrm_tf_tbl_type_get_output resp = { 0 };
 	struct tfp_send_msg_parms parms = { 0 };
 	uint8_t fw_session_id;
+	struct tf_dev_info *dev;
+	struct tf_session *tfs;
+
+	/* Retrieve the session information */
+	rc = tf_session_get_session_internal(tfp, &tfs);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "%s: Failed to lookup session, rc:%s\n",
+			    tf_dir_2_str(dir),
+			    strerror(-rc));
+		return rc;
+	}
+
+	/* Retrieve the device information */
+	rc = tf_session_get_device(tfs, &dev);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "%s: Failed to lookup device, rc:%s\n",
+			    tf_dir_2_str(dir),
+			    strerror(-rc));
+		return rc;
+	}
 
 	rc = tf_session_get_fw_session_id(tfp, &fw_session_id);
 	if (rc) {
@@ -1020,7 +1294,7 @@ tf_msg_get_tbl_entry(struct tf *tfp,
 	parms.req_size = sizeof(req);
 	parms.resp_data = (uint32_t *)&resp;
 	parms.resp_size = sizeof(resp);
-	parms.mailbox = TF_KONG_MB;
+	parms.mailbox = dev->ops->tf_dev_get_mailbox();
 
 	rc = tfp_send_msg_direct(tfp,
 				 &parms);
@@ -1051,6 +1325,28 @@ tf_msg_get_global_cfg(struct tf *tfp,
 	uint32_t flags = 0;
 	uint8_t fw_session_id;
 	uint16_t resp_size = 0;
+	struct tf_dev_info *dev;
+	struct tf_session *tfs;
+
+	/* Retrieve the session information */
+	rc = tf_session_get_session_internal(tfp, &tfs);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "%s: Failed to lookup session, rc:%s\n",
+			    tf_dir_2_str(params->dir),
+			    strerror(-rc));
+		return rc;
+	}
+
+	/* Retrieve the device information */
+	rc = tf_session_get_device(tfs, &dev);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "%s: Failed to lookup device, rc:%s\n",
+			    tf_dir_2_str(params->dir),
+			    strerror(-rc));
+		return rc;
+	}
 
 	rc = tf_session_get_fw_session_id(tfp, &fw_session_id);
 	if (rc) {
@@ -1077,7 +1373,7 @@ tf_msg_get_global_cfg(struct tf *tfp,
 	parms.req_size = sizeof(req);
 	parms.resp_data = (uint32_t *)&resp;
 	parms.resp_size = sizeof(resp);
-	parms.mailbox = TF_KONG_MB;
+	parms.mailbox = dev->ops->tf_dev_get_mailbox();
 
 	rc = tfp_send_msg_direct(tfp, &parms);
 	if (rc != 0)
@@ -1108,6 +1404,28 @@ tf_msg_set_global_cfg(struct tf *tfp,
 	struct hwrm_tf_global_cfg_set_output resp = { 0 };
 	uint32_t flags = 0;
 	uint8_t fw_session_id;
+	struct tf_dev_info *dev;
+	struct tf_session *tfs;
+
+	/* Retrieve the session information */
+	rc = tf_session_get_session_internal(tfp, &tfs);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "%s: Failed to lookup session, rc:%s\n",
+			    tf_dir_2_str(params->dir),
+			    strerror(-rc));
+		return rc;
+	}
+
+	/* Retrieve the device information */
+	rc = tf_session_get_device(tfs, &dev);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "%s: Failed to lookup device, rc:%s\n",
+			    tf_dir_2_str(params->dir),
+			    strerror(-rc));
+		return rc;
+	}
 
 	rc = tf_session_get_fw_session_id(tfp, &fw_session_id);
 	if (rc) {
@@ -1156,7 +1474,7 @@ tf_msg_set_global_cfg(struct tf *tfp,
 	parms.req_size = sizeof(req);
 	parms.resp_data = (uint32_t *)&resp;
 	parms.resp_size = sizeof(resp);
-	parms.mailbox = TF_KONG_MB;
+	parms.mailbox = dev->ops->tf_dev_get_mailbox();
 
 	rc = tfp_send_msg_direct(tfp, &parms);
 
@@ -1181,6 +1499,28 @@ tf_msg_bulk_get_tbl_entry(struct tf *tfp,
 	struct tf_tbl_type_bulk_get_output resp = { 0 };
 	int data_size = 0;
 	uint8_t fw_session_id;
+	struct tf_dev_info *dev;
+	struct tf_session *tfs;
+
+	/* Retrieve the session information */
+	rc = tf_session_get_session(tfp, &tfs);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "%s: Failed to lookup session, rc:%s\n",
+			    tf_dir_2_str(dir),
+			    strerror(-rc));
+		return rc;
+	}
+
+	/* Retrieve the device information */
+	rc = tf_session_get_device(tfs, &dev);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "%s: Failed to lookup device, rc:%s\n",
+			    tf_dir_2_str(dir),
+			    strerror(-rc));
+		return rc;
+	}
 
 	rc = tf_session_get_fw_session_id(tfp, &fw_session_id);
 	if (rc) {
@@ -1203,7 +1543,7 @@ tf_msg_bulk_get_tbl_entry(struct tf *tfp,
 	req.host_addr = tfp_cpu_to_le_64(physical_mem_addr);
 
 	MSG_PREP(parms,
-		 TF_KONG_MB,
+		 dev->ops->tf_dev_get_mailbox(),
 		 HWRM_TF,
 		 HWRM_TFT_TBL_TYPE_BULK_GET,
 		 req,
@@ -1229,6 +1569,7 @@ tf_msg_get_if_tbl_entry(struct tf *tfp,
 	struct hwrm_tf_if_tbl_get_input req = { 0 };
 	struct hwrm_tf_if_tbl_get_output resp = { 0 };
 	uint32_t flags = 0;
+	struct tf_dev_info *dev;
 	struct tf_session *tfs;
 
 	/* Retrieve the session information */
@@ -1241,6 +1582,16 @@ tf_msg_get_if_tbl_entry(struct tf *tfp,
 		return rc;
 	}
 
+	/* Retrieve the device information */
+	rc = tf_session_get_device(tfs, &dev);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "%s: Failed to lookup device, rc:%s\n",
+			    tf_dir_2_str(params->dir),
+			    strerror(-rc));
+		return rc;
+	}
+
 	flags = (params->dir == TF_DIR_TX ?
 		HWRM_TF_IF_TBL_GET_INPUT_FLAGS_DIR_TX :
 		HWRM_TF_IF_TBL_GET_INPUT_FLAGS_DIR_RX);
@@ -1258,7 +1609,7 @@ tf_msg_get_if_tbl_entry(struct tf *tfp,
 	parms.req_size = sizeof(req);
 	parms.resp_data = (uint32_t *)&resp;
 	parms.resp_size = sizeof(resp);
-	parms.mailbox = TF_KONG_MB;
+	parms.mailbox = dev->ops->tf_dev_get_mailbox();
 
 	rc = tfp_send_msg_direct(tfp, &parms);
 
@@ -1268,7 +1619,7 @@ tf_msg_get_if_tbl_entry(struct tf *tfp,
 	if (parms.tf_resp_code != 0)
 		return tfp_le_to_cpu_32(parms.tf_resp_code);
 
-	tfp_memcpy(&params->data[0], resp.data, req.size);
+	tfp_memcpy(params->data, resp.data, req.size);
 
 	return tfp_le_to_cpu_32(parms.tf_resp_code);
 }
@@ -1282,6 +1633,7 @@ tf_msg_set_if_tbl_entry(struct tf *tfp,
 	struct hwrm_tf_if_tbl_set_input req = { 0 };
 	struct hwrm_tf_if_tbl_get_output resp = { 0 };
 	uint32_t flags = 0;
+	struct tf_dev_info *dev;
 	struct tf_session *tfs;
 
 	/* Retrieve the session information */
@@ -1294,6 +1646,10 @@ tf_msg_set_if_tbl_entry(struct tf *tfp,
 		return rc;
 	}
 
+	/* Retrieve the device information */
+	rc = tf_session_get_device(tfs, &dev);
+	if (rc)
+		return rc;
 
 	flags = (params->dir == TF_DIR_TX ?
 		HWRM_TF_IF_TBL_SET_INPUT_FLAGS_DIR_TX :
@@ -1313,7 +1669,7 @@ tf_msg_set_if_tbl_entry(struct tf *tfp,
 	parms.req_size = sizeof(req);
 	parms.resp_data = (uint32_t *)&resp;
 	parms.resp_size = sizeof(resp);
-	parms.mailbox = TF_KONG_MB;
+	parms.mailbox = dev->ops->tf_dev_get_mailbox();
 
 	rc = tfp_send_msg_direct(tfp, &parms);
 
diff --git a/drivers/net/bnxt/tf_core/tf_msg.h b/drivers/net/bnxt/tf_core/tf_msg.h
index 0a2566010c..25e29a554f 100644
--- a/drivers/net/bnxt/tf_core/tf_msg.h
+++ b/drivers/net/bnxt/tf_core/tf_msg.h
@@ -36,7 +36,8 @@ struct tf;
 int tf_msg_session_open(struct tf *tfp,
 			char *ctrl_chan_name,
 			uint8_t *fw_session_id,
-			uint8_t *fw_session_client_id);
+			uint8_t *fw_session_client_id,
+			struct tf_dev_info *dev);
 
 /**
  * Sends session close request to Firmware
@@ -75,6 +76,7 @@ int tf_msg_session_attach(struct tf *tfp,
  *   0 on Success else internal Truflow error
  */
 int tf_msg_session_client_register(struct tf *tfp,
+				   struct tf_session *tfs,
 				   char *ctrl_channel_name,
 				   uint8_t *fw_session_client_id);
 
@@ -92,6 +94,7 @@ int tf_msg_session_client_register(struct tf *tfp,
  *   0 on Success else internal Truflow error
  */
 int tf_msg_session_client_unregister(struct tf *tfp,
+				     struct tf_session *tfs,
 				     uint8_t fw_session_client_id);
 
 /**
@@ -103,7 +106,8 @@ int tf_msg_session_client_unregister(struct tf *tfp,
  * Returns:
  *   0 on Success else internal Truflow error
  */
-int tf_msg_session_close(struct tf *tfp);
+int tf_msg_session_close(struct tf *tfp,
+			 struct tf_session *tfs);
 
 /**
  * Sends session query config request to TF Firmware
@@ -139,6 +143,7 @@ int tf_msg_session_qcfg(struct tf *tfp);
  *   0 on Success else internal Truflow error
  */
 int tf_msg_session_resc_qcaps(struct tf *tfp,
+			      struct tf_dev_info *dev,
 			      enum tf_dir dir,
 			      uint16_t size,
 			      struct tf_rm_resc_req_entry *query,
@@ -166,6 +171,7 @@ int tf_msg_session_resc_qcaps(struct tf *tfp,
  *   0 on Success else internal Truflow error
  */
 int tf_msg_session_resc_alloc(struct tf *tfp,
+			      struct tf_dev_info *dev,
 			      enum tf_dir dir,
 			      uint16_t size,
 			      struct tf_rm_resc_req_entry *request,
@@ -368,6 +374,7 @@ int tf_msg_em_op(struct tf *tfp,
  *  0 on Success else internal Truflow error
  */
 int tf_msg_tcam_entry_set(struct tf *tfp,
+			  struct tf_dev_info *dev,
 			  struct tf_tcam_set_parms *parms);
 
 /**
@@ -383,6 +390,7 @@ int tf_msg_tcam_entry_set(struct tf *tfp,
  *  0 on Success else internal Truflow error
  */
 int tf_msg_tcam_entry_free(struct tf *tfp,
+			   struct tf_dev_info *dev,
 			   struct tf_tcam_free_parms *parms);
 
 /**
diff --git a/drivers/net/bnxt/tf_core/tf_rm.c b/drivers/net/bnxt/tf_core/tf_rm.c
index f93a6d9018..2c08fb80fe 100644
--- a/drivers/net/bnxt/tf_core/tf_rm.c
+++ b/drivers/net/bnxt/tf_core/tf_rm.c
@@ -415,6 +415,7 @@ tf_rm_create_db(struct tf *tfp,
 
 	/* Get Firmware Capabilities */
 	rc = tf_msg_session_resc_qcaps(tfp,
+				       dev,
 				       parms->dir,
 				       max_types,
 				       query,
@@ -499,6 +500,7 @@ tf_rm_create_db(struct tf *tfp,
 	}
 
 	rc = tf_msg_session_resc_alloc(tfp,
+				       dev,
 				       parms->dir,
 				       hcapi_items,
 				       req,
diff --git a/drivers/net/bnxt/tf_core/tf_session.c b/drivers/net/bnxt/tf_core/tf_session.c
index 6335ad358c..b3fa7e13ff 100644
--- a/drivers/net/bnxt/tf_core/tf_session.c
+++ b/drivers/net/bnxt/tf_core/tf_session.c
@@ -56,14 +56,19 @@ tf_session_create(struct tf *tfp,
 	uint8_t fw_session_id;
 	uint8_t fw_session_client_id;
 	union tf_session_id *session_id;
+	struct tf_dev_info dev;
 
 	TF_CHECK_PARMS2(tfp, parms);
 
+	tf_dev_bind_ops(parms->open_cfg->device_type,
+			&dev);
+
 	/* Open FW session and get a new session_id */
 	rc = tf_msg_session_open(tfp,
 				 parms->open_cfg->ctrl_chan_name,
 				 &fw_session_id,
-				 &fw_session_client_id);
+				 &fw_session_client_id,
+				 &dev);
 	if (rc) {
 		/* Log error */
 		if (rc == -EEXIST)
@@ -177,6 +182,13 @@ tf_session_create(struct tf *tfp,
 	if (rc)
 		return rc;
 
+	if (session->dev.ops->tf_dev_get_mailbox == NULL) {
+		/* Log error */
+		TFP_DRV_LOG(ERR,
+			    "No tf_dev_get_mailbox() defined for device\n");
+		goto cleanup;
+	}
+
 	session->dev_init = true;
 
 	return 0;
@@ -234,8 +246,9 @@ tf_session_client_create(struct tf *tfp,
 
 	rc = tf_msg_session_client_register
 		    (tfp,
-		    parms->ctrl_chan_name,
-		    &session_client_id.internal.fw_session_client_id);
+		     session,
+		     parms->ctrl_chan_name,
+		     &session_client_id.internal.fw_session_client_id);
 	if (rc) {
 		TFP_DRV_LOG(ERR,
 			    "Failed to create client on session, rc:%s\n",
@@ -346,6 +359,7 @@ tf_session_client_destroy(struct tf *tfp,
 
 	rc = tf_msg_session_client_unregister
 			(tfp,
+			tfs,
 			parms->session_client_id.internal.fw_session_client_id);
 
 	/* Log error, but continue. If FW fails we do not really have
@@ -534,7 +548,7 @@ tf_session_close_session(struct tf *tfp,
 			    strerror(-rc));
 	}
 
-	rc = tf_msg_session_close(tfp);
+	rc = tf_msg_session_close(tfp, tfs);
 	if (rc) {
 		/* Log error */
 		TFP_DRV_LOG(ERR,
diff --git a/drivers/net/bnxt/tf_core/tf_tcam.c b/drivers/net/bnxt/tf_core/tf_tcam.c
index 22bc01c95d..038aa40e92 100644
--- a/drivers/net/bnxt/tf_core/tf_tcam.c
+++ b/drivers/net/bnxt/tf_core/tf_tcam.c
@@ -428,7 +428,7 @@ tf_tcam_free(struct tf *tfp,
 	if (rc)
 		return rc;
 
-	rc = tf_msg_tcam_entry_free(tfp, parms);
+	rc = tf_msg_tcam_entry_free(tfp, dev, parms);
 	if (rc) {
 		/* Log error */
 		TFP_DRV_LOG(ERR,
@@ -652,7 +652,7 @@ tf_tcam_set(struct tf *tfp __rte_unused,
 	if (rc)
 		return rc;
 
-	rc = tf_msg_tcam_entry_set(tfp, parms);
+	rc = tf_msg_tcam_entry_set(tfp, dev, parms);
 	if (rc) {
 		/* Log error */
 		TFP_DRV_LOG(ERR,
-- 
2.17.1


  parent reply	other threads:[~2021-05-30  9:00 UTC|newest]

Thread overview: 129+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-30  8:58 [dpdk-dev] [PATCH 00/58] enhancements to host based flow table management Venkat Duvvuru
2021-05-30  8:58 ` [dpdk-dev] [PATCH 01/58] net/bnxt: add CFA folder to HCAPI directory Venkat Duvvuru
2021-05-30  8:58 ` [dpdk-dev] [PATCH 02/58] net/bnxt: add base TRUFLOW support for Thor Venkat Duvvuru
2021-05-30  8:58 ` Venkat Duvvuru [this message]
2021-05-30  8:58 ` [dpdk-dev] [PATCH 04/58] net/bnxt: check resource reservation in TRUFLOW Venkat Duvvuru
2021-05-30  8:58 ` [dpdk-dev] [PATCH 05/58] net/bnxt: update TRUFLOW resources Venkat Duvvuru
2021-05-30  8:58 ` [dpdk-dev] [PATCH 06/58] net/bnxt: add support for EM with FKB Venkat Duvvuru
2021-05-30  8:58 ` [dpdk-dev] [PATCH 07/58] net/bnxt: add L2 Context TCAM get support Venkat Duvvuru
2021-05-30  8:58 ` [dpdk-dev] [PATCH 08/58] net/bnxt: add action SRAM Translation Venkat Duvvuru
2021-05-30  8:58 ` [dpdk-dev] [PATCH 09/58] net/bnxt: add Thor WC TCAM support Venkat Duvvuru
2021-05-30  8:58 ` [dpdk-dev] [PATCH 10/58] net/bnxt: add 64B SRAM record management with RM Venkat Duvvuru
2021-05-30  8:58 ` [dpdk-dev] [PATCH 11/58] net/bnxt: add hashing changes for Thor Venkat Duvvuru
2021-05-30  8:58 ` [dpdk-dev] [PATCH 12/58] net/bnxt: modify TRUFLOW HWRM messages Venkat Duvvuru
2021-05-30  8:58 ` [dpdk-dev] [PATCH 13/58] net/bnxt: change RM database type Venkat Duvvuru
2021-05-30  8:58 ` [dpdk-dev] [PATCH 14/58] net/bnxt: add shared session support Venkat Duvvuru
2021-05-30  8:58 ` [dpdk-dev] [PATCH 15/58] net/bnxt: add dpool allocator for EM allocation Venkat Duvvuru
2021-05-30  8:58 ` [dpdk-dev] [PATCH 16/58] net/bnxt: update shared session functionality Venkat Duvvuru
2021-05-30  8:58 ` [dpdk-dev] [PATCH 17/58] net/bnxt: modify resource reservation strategy Venkat Duvvuru
2021-05-30  8:58 ` [dpdk-dev] [PATCH 18/58] net/bnxt: shared TCAM region support Venkat Duvvuru
2021-05-30  8:58 ` [dpdk-dev] [PATCH 19/58] net/bnxt: cleanup session open/close messages Venkat Duvvuru
2021-05-30  8:58 ` [dpdk-dev] [PATCH 20/58] net/bnxt: add WC TCAM hi/lo move support Venkat Duvvuru
2021-05-30  8:58 ` [dpdk-dev] [PATCH 21/58] net/bnxt: add API to get shared table increments Venkat Duvvuru
2021-05-30  8:58 ` [dpdk-dev] [PATCH 22/58] net/bnxt: modify host session failure cleanup Venkat Duvvuru
2021-05-30  8:58 ` [dpdk-dev] [PATCH 23/58] net/bnxt: cleanup of WC TCAM shared unbind Venkat Duvvuru
2021-05-30  8:58 ` [dpdk-dev] [PATCH 24/58] net/bnxt: add support for WC TCAM shared session Venkat Duvvuru
2021-05-30  8:58 ` [dpdk-dev] [PATCH 25/58] net/bnxt: add API to clear hi/lo WC region Venkat Duvvuru
2021-05-30  8:58 ` [dpdk-dev] [PATCH 26/58] net/bnxt: check FW capability to support TRUFLOW Venkat Duvvuru
2021-05-30  8:58 ` [dpdk-dev] [PATCH 27/58] net/bnxt: add support for generic table processing Venkat Duvvuru
2021-05-30  8:58 ` [dpdk-dev] [PATCH 28/58] net/bnxt: add support for mapper flow database opcodes Venkat Duvvuru
2021-05-30  8:59 ` [dpdk-dev] [PATCH 29/58] net/bnxt: add conditional execution and rejection Venkat Duvvuru
2021-05-30  8:59 ` [dpdk-dev] [PATCH 30/58] net/bnxt: modify TCAM opcode processing Venkat Duvvuru
2021-05-30  8:59 ` [dpdk-dev] [PATCH 31/58] net/bnxt: modify VXLAN decap for multichannel mode Venkat Duvvuru
2021-05-30  8:59 ` [dpdk-dev] [PATCH 32/58] net/bnxt: modify table processing Venkat Duvvuru
2021-05-30  8:59 ` [dpdk-dev] [PATCH 33/58] net/bnxt: modify ULP priority opcode processing Venkat Duvvuru
2021-05-30  8:59 ` [dpdk-dev] [PATCH 34/58] net/bnxt: add support for conflict resolution Venkat Duvvuru
2021-05-30  8:59 ` [dpdk-dev] [PATCH 35/58] net/bnxt: add support for conditional goto processing Venkat Duvvuru
2021-05-30  8:59 ` [dpdk-dev] [PATCH 36/58] net/bnxt: set shared handle for generic table Venkat Duvvuru
2021-05-30  8:59 ` [dpdk-dev] [PATCH 37/58] net/bnxt: modify ULP template Venkat Duvvuru
2021-05-30  8:59 ` [dpdk-dev] [PATCH 38/58] net/bnxt: add conditional opcode and L4 port fields Venkat Duvvuru
2021-05-30  8:59 ` [dpdk-dev] [PATCH 39/58] net/bnxt: refactor TF ULP Venkat Duvvuru
2021-05-30  8:59 ` [dpdk-dev] [PATCH 40/58] net/bnxt: add partial header field processing Venkat Duvvuru
2021-05-30  8:59 ` [dpdk-dev] [PATCH 41/58] net/bnxt: add support for wild card pattern match Venkat Duvvuru
2021-05-30  8:59 ` [dpdk-dev] [PATCH 42/58] net/bnxt: add support for GRE flows Venkat Duvvuru
2021-05-30  8:59 ` [dpdk-dev] [PATCH 43/58] net/bnxt: enable extended exact match support Venkat Duvvuru
2021-05-30  8:59 ` [dpdk-dev] [PATCH 44/58] net/bnxt: refactor ULP mapper and parser Venkat Duvvuru
2021-05-30  8:59 ` [dpdk-dev] [PATCH 45/58] net/bnxt: add support for generic hash table Venkat Duvvuru
2021-05-30  8:59 ` [dpdk-dev] [PATCH 46/58] net/bnxt: add support for Thor platform Venkat Duvvuru
2021-05-30  8:59 ` [dpdk-dev] [PATCH 47/58] net/bnxt: refactor flow parser in ULP Venkat Duvvuru
2021-05-30  8:59 ` [dpdk-dev] [PATCH 48/58] net/bnxt: add shared session support to ULP Venkat Duvvuru
2021-05-30  8:59 ` [dpdk-dev] [PATCH 49/58] net/bnxt: add field opcodes in ULP Venkat Duvvuru
2021-05-30  8:59 ` [dpdk-dev] [PATCH 50/58] net/bnxt: add support for application ID in ULP matcher Venkat Duvvuru
2021-05-30  8:59 ` [dpdk-dev] [PATCH 51/58] net/bnxt: process resource lists before session open Venkat Duvvuru
2021-05-30  8:59 ` [dpdk-dev] [PATCH 52/58] net/bnxt: add support for shared sessions in ULP Venkat Duvvuru
2021-05-30  8:59 ` [dpdk-dev] [PATCH 53/58] net/bnxt: add HA support " Venkat Duvvuru
2021-05-30  8:59 ` [dpdk-dev] [PATCH 54/58] net/bnxt: add support for icmp6 ULP parsing Venkat Duvvuru
2021-05-30  8:59 ` [dpdk-dev] [PATCH 55/58] net/bnxt: add support for ULP context list for timers Venkat Duvvuru
2021-05-30  8:59 ` [dpdk-dev] [PATCH 56/58] net/bnxt: cleanup ULP parser and mapper Venkat Duvvuru
2021-05-30  8:59 ` [dpdk-dev] [PATCH 57/58] net/bnxt: reorganize ULP template directory structure Venkat Duvvuru
2021-05-30  8:59 ` [dpdk-dev] [PATCH 58/58] net/bnxt: add Thor template support Venkat Duvvuru
2021-06-13  0:05 ` [dpdk-dev] [PATCH v2 00/58] enhancements to host based flow table management Ajit Khaparde
2021-06-13  0:05   ` [dpdk-dev] [PATCH v2 01/58] net/bnxt: add CFA folder to HCAPI directory Ajit Khaparde
2021-06-13  0:05   ` [dpdk-dev] [PATCH v2 02/58] net/bnxt: add base TRUFLOW support for Thor Ajit Khaparde
2021-06-13  0:05   ` [dpdk-dev] [PATCH v2 03/58] net/bnxt: add mailbox selection via dev op Ajit Khaparde
2021-06-13  0:05   ` [dpdk-dev] [PATCH v2 04/58] net/bnxt: check resource reservation in TRUFLOW Ajit Khaparde
2021-06-13  0:05   ` [dpdk-dev] [PATCH v2 05/58] net/bnxt: update TRUFLOW resources Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 06/58] net/bnxt: add support for EM with FKB Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 07/58] net/bnxt: support L2 Context TCAM ops Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 08/58] net/bnxt: add action SRAM translation Ajit Khaparde
2021-07-05 21:23     ` Thomas Monjalon
2021-07-06 22:37       ` [dpdk-dev] [PATCH v3] " Ajit Khaparde
2021-07-06 22:58       ` [dpdk-dev] [PATCH v2 08/58] " Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 09/58] net/bnxt: add Thor WC TCAM support Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 10/58] net/bnxt: add 64B SRAM record management with RM Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 11/58] net/bnxt: add hashing changes for Thor Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 12/58] net/bnxt: modify TRUFLOW HWRM messages Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 13/58] net/bnxt: change RM database type Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 14/58] net/bnxt: add shared session support Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 15/58] net/bnxt: add dpool allocator for EM allocation Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 16/58] net/bnxt: update shared session functionality Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 17/58] net/bnxt: modify resource reservation strategy Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 18/58] net/bnxt: shared TCAM region support Ajit Khaparde
2021-07-05 21:27     ` Thomas Monjalon
2021-07-06 22:39       ` [dpdk-dev] [PATCH v3] " Ajit Khaparde
2021-07-06 22:57       ` [dpdk-dev] [PATCH v2 18/58] " Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 19/58] net/bnxt: cleanup logs in session handling paths Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 20/58] net/bnxt: add WC TCAM management support Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 21/58] net/bnxt: add API to get shared table increments Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 22/58] net/bnxt: refactor host session failure cleanup Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 23/58] net/bnxt: cleanup WC TCAM shared pool Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 24/58] net/bnxt: add support for WC TCAM shared session Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 25/58] net/bnxt: add API to clear TCAM regions Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 26/58] net/bnxt: check FW capability to support TRUFLOW Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 27/58] net/bnxt: add support for generic table processing Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 28/58] net/bnxt: add support for mapper flow database opcodes Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 29/58] net/bnxt: add conditional processing of templates Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 30/58] net/bnxt: modify TCAM opcode processing Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 31/58] net/bnxt: modify VXLAN decap for multichannel mode Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 32/58] net/bnxt: modify table processing Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 33/58] net/bnxt: add ULP priority opcode processing Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 34/58] net/bnxt: add support to identify duplicate flows Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 35/58] net/bnxt: add conditional goto processing Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 36/58] net/bnxt: set shared handle for generic table Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 37/58] net/bnxt: modify ULP template Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 38/58] net/bnxt: add conditional opcode and L4 port fields Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 39/58] net/bnxt: refactor TRUFLOW processing Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 40/58] net/bnxt: add partial header field processing Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 41/58] net/bnxt: add support for wild card pattern match Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 42/58] net/bnxt: add support for GRE flows Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 43/58] net/bnxt: enable extended exact match support Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 44/58] net/bnxt: refactor ULP mapper Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 45/58] net/bnxt: add support for generic hash table Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 46/58] net/bnxt: add support for Thor platform Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 47/58] net/bnxt: refactor flow parser in ULP Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 48/58] net/bnxt: add shared session support to ULP Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 49/58] net/bnxt: add field opcodes in ULP Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 50/58] net/bnxt: add support for application ID in ULP matcher Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 51/58] net/bnxt: process resource lists before session open Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 52/58] net/bnxt: add templates for shared sessions Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 53/58] net/bnxt: add HA support in ULP Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 54/58] net/bnxt: add ICMPv6 parser to ULP Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 55/58] net/bnxt: add context list for timers Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 56/58] net/bnxt: cleanup ULP parser and mapper Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 57/58] net/bnxt: reorganize ULP template directory structure Ajit Khaparde
2021-06-13  0:06   ` [dpdk-dev] [PATCH v2 58/58] net/bnxt: add Thor template support Ajit Khaparde
2021-06-15 19:33   ` [dpdk-dev] [PATCH v2 00/58] enhancements to host based flow table management Ajit Khaparde
2021-07-07  8:43     ` Thomas Monjalon
2021-07-08  3:57       ` Ajit Khaparde
2021-07-08 12:51         ` Thomas Monjalon
2021-07-08 14:37           ` Ajit Khaparde

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210530085929.29695-4-venkatkumar.duvvuru@broadcom.com \
    --to=venkatkumar.duvvuru@broadcom.com \
    --cc=dev@dpdk.org \
    --cc=peter.spreadborough@broadcom.com \
    --cc=stuart.schacher@broadcom.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.