DPDK patches and discussions
 help / color / Atom feed
From: Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>
To: dev@dpdk.org
Cc: Farah Smith <farah.smith@broadcom.com>
Subject: [dpdk-dev] [PATCH 04/14] net/bnxt: map table scope API
Date: Sat, 17 Oct 2020 11:57:59 +0530
Message-ID: <1602916089-18576-5-git-send-email-venkatkumar.duvvuru@broadcom.com> (raw)
In-Reply-To: <1602916089-18576-1-git-send-email-venkatkumar.duvvuru@broadcom.com>

From: Farah Smith <farah.smith@broadcom.com>

New API to map a PARIF to an EEM table scope (set of rx and tx EEM
base addresses).  Uses HWRM_TF_GLOBAL_CFG_SET HWRM to configure.
Adjustments to tf_global_cfg_set() to reduce overhead and nominal
name clarification.

Signed-off-by: Farah Smith <farah.smith@broadcom.com>
Reviewed-by: Randy Schacher <stuart.schacher@broadcom.com>
---
 drivers/net/bnxt/tf_core/tf_core.c       | 54 +++++++++++++++-----
 drivers/net/bnxt/tf_core/tf_core.h       | 55 +++++++++++++++++---
 drivers/net/bnxt/tf_core/tf_device.h     | 43 +++++++++++++++-
 drivers/net/bnxt/tf_core/tf_device_p4.c  | 44 ++++++++++++++++
 drivers/net/bnxt/tf_core/tf_em.h         | 19 ++++++-
 drivers/net/bnxt/tf_core/tf_em_common.c  | 88 ++++++++++++++++++++++++++++++++
 drivers/net/bnxt/tf_core/tf_global_cfg.c |  4 +-
 drivers/net/bnxt/tf_core/tf_global_cfg.h | 42 ++++-----------
 drivers/net/bnxt/tf_core/tf_msg.c        | 13 ++++-
 drivers/net/bnxt/tf_core/tf_msg.h        |  4 +-
 10 files changed, 304 insertions(+), 62 deletions(-)

diff --git a/drivers/net/bnxt/tf_core/tf_core.c b/drivers/net/bnxt/tf_core/tf_core.c
index 788335b..0f49a00 100644
--- a/drivers/net/bnxt/tf_core/tf_core.c
+++ b/drivers/net/bnxt/tf_core/tf_core.c
@@ -303,7 +303,6 @@ int tf_get_global_cfg(struct tf *tfp,
 	int rc = 0;
 	struct tf_session *tfs;
 	struct tf_dev_info *dev;
-	struct tf_dev_global_cfg_parms gparms = { 0 };
 
 	TF_CHECK_PARMS2(tfp, parms);
 
@@ -342,12 +341,7 @@ int tf_get_global_cfg(struct tf *tfp,
 		return -EOPNOTSUPP;
 	}
 
-	gparms.dir = parms->dir;
-	gparms.type = parms->type;
-	gparms.offset = parms->offset;
-	gparms.config = parms->config;
-	gparms.config_sz_in_bytes = parms->config_sz_in_bytes;
-	rc = dev->ops->tf_dev_get_global_cfg(tfp, &gparms);
+	rc = dev->ops->tf_dev_get_global_cfg(tfp, parms);
 	if (rc) {
 		TFP_DRV_LOG(ERR,
 			    "%s: Global Cfg get failed, rc:%s\n",
@@ -371,7 +365,6 @@ int tf_set_global_cfg(struct tf *tfp,
 	int rc = 0;
 	struct tf_session *tfs;
 	struct tf_dev_info *dev;
-	struct tf_dev_global_cfg_parms gparms = { 0 };
 
 	TF_CHECK_PARMS2(tfp, parms);
 
@@ -410,12 +403,7 @@ int tf_set_global_cfg(struct tf *tfp,
 		return -EOPNOTSUPP;
 	}
 
-	gparms.dir = parms->dir;
-	gparms.type = parms->type;
-	gparms.offset = parms->offset;
-	gparms.config = parms->config;
-	gparms.config_sz_in_bytes = parms->config_sz_in_bytes;
-	rc = dev->ops->tf_dev_set_global_cfg(tfp, &gparms);
+	rc = dev->ops->tf_dev_set_global_cfg(tfp, parms);
 	if (rc) {
 		TFP_DRV_LOG(ERR,
 			    "%s: Global Cfg set failed, rc:%s\n",
@@ -1352,6 +1340,44 @@ tf_alloc_tbl_scope(struct tf *tfp,
 
 	return rc;
 }
+int
+tf_map_tbl_scope(struct tf *tfp,
+		   struct tf_map_tbl_scope_parms *parms)
+{
+	struct tf_session *tfs;
+	struct tf_dev_info *dev;
+	int rc;
+
+	TF_CHECK_PARMS2(tfp, parms);
+
+	/* Retrieve the session information */
+	rc = tf_session_get_session(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;
+	}
+
+	if (dev->ops->tf_dev_map_tbl_scope != NULL) {
+		rc = dev->ops->tf_dev_map_tbl_scope(tfp, parms);
+	} else {
+		TFP_DRV_LOG(ERR,
+			    "Map table scope not supported by device\n");
+		return -EINVAL;
+	}
+
+	return rc;
+}
 
 int
 tf_free_tbl_scope(struct tf *tfp,
diff --git a/drivers/net/bnxt/tf_core/tf_core.h b/drivers/net/bnxt/tf_core/tf_core.h
index 65be8f5..fa8ab52 100644
--- a/drivers/net/bnxt/tf_core/tf_core.h
+++ b/drivers/net/bnxt/tf_core/tf_core.h
@@ -898,7 +898,9 @@ struct tf_alloc_tbl_scope_parms {
 	 */
 	uint32_t tbl_scope_id;
 };
-
+/**
+ * tf_free_tbl_scope_parms definition
+ */
 struct tf_free_tbl_scope_parms {
 	/**
 	 * [in] table scope identifier
@@ -907,6 +909,21 @@ struct tf_free_tbl_scope_parms {
 };
 
 /**
+ * tf_map_tbl_scope_parms definition
+ */
+struct tf_map_tbl_scope_parms {
+	/**
+	 * [in] table scope identifier
+	 */
+	uint32_t tbl_scope_id;
+	/**
+	 * [in] Which parifs are associated with this table scope.  Bit 0
+	 *      indicates parif 0.
+	 */
+	uint16_t parif_bitmask;
+};
+
+/**
  * allocate a table scope
  *
  * On SR2 Firmware will allocate a scope ID.  On other devices, the scope
@@ -915,13 +932,13 @@ struct tf_free_tbl_scope_parms {
  * device constraints based upon calculations using either the number of flows
  * requested or the size of memory indicated.  Other parameters passed in
  * determine the configuration (maximum key size, maximum external action record
- * size.
+ * size).
  *
- * This API will allocate the table region in
- * DRAM, program the PTU page table entries, and program the number of static
- * buckets (if SR2) in the RX and TX CFAs.  Buckets are assumed to start at
- * 0 in the EM memory for the scope.  Upon successful completion of this API,
- * hash tables are fully initialized and ready for entries to be inserted.
+ * This API will allocate the table region in DRAM, program the PTU page table
+ * entries, and program the number of static buckets (if SR2) in the RX and TX
+ * CFAs.  Buckets are assumed to start at 0 in the EM memory for the scope.
+ * Upon successful completion of this API, hash tables are fully initialized and
+ * ready for entries to be inserted.
  *
  * A single API is used to allocate a common table scope identifier in both
  * receive and transmit CFA. The scope identifier is common due to nature of
@@ -944,7 +961,25 @@ struct tf_free_tbl_scope_parms {
 int tf_alloc_tbl_scope(struct tf *tfp,
 		       struct tf_alloc_tbl_scope_parms *parms);
 
+/**
+ * map a table scope (legacy device only Wh+/SR)
+ *
+ * Map a table scope to one or more partition interfaces (parifs).
+ * The parif can be remapped in the L2 context lookup for legacy devices.  This
+ * API allows a number of parifs to be mapped to the same table scope.  On
+ * legacy devices a table scope identifies one of 16 sets of EEM table base
+ * addresses and is associated with a PF communication channel.  The associated
+ * PF must be configured for the table scope to operate.
+ *
+ * An L2 context TCAM lookup returns a remapped parif value used to
+ * index into the set of 16 parif_to_pf registers which are used to map to one
+ * of the 16 table scopes.  This API allows the user to map the parifs in the
+ * mask to the previously allocated table scope (EEM table).
 
+ * Returns success or failure code.
+ */
+int tf_map_tbl_scope(struct tf *tfp,
+		      struct tf_map_tbl_scope_parms *parms);
 /**
  * free a table scope
  *
@@ -1909,6 +1944,12 @@ struct tf_global_cfg_parms {
 	 */
 	uint8_t *config;
 	/**
+	 * [in] Configuration mask
+	 * set - Read, Modify with mask and Write
+	 * get - unused
+	 */
+	uint8_t *config_mask;
+	/**
 	 * [in] struct containing size
 	 */
 	uint16_t config_sz_in_bytes;
diff --git a/drivers/net/bnxt/tf_core/tf_device.h b/drivers/net/bnxt/tf_core/tf_device.h
index fce7f25..cf7c36e 100644
--- a/drivers/net/bnxt/tf_core/tf_device.h
+++ b/drivers/net/bnxt/tf_core/tf_device.h
@@ -573,6 +573,45 @@ struct tf_dev_ops {
 	 */
 	int (*tf_dev_alloc_tbl_scope)(struct tf *tfp,
 				      struct tf_alloc_tbl_scope_parms *parms);
+	/**
+	 * Map EEM parif
+	 *
+	 * [in] tfp
+	 *   Pointer to TF handle
+	 *
+	 * [in] parms
+	 *   Pointer to table scope map parameters
+	 *
+	 * [in/out] pointer to the parif_2_pf data to be updated
+	 *
+	 * [in/out] pointer to the parif_2_pf mask to be updated
+	 *
+	 * [in] sz_in_bytes - number of bytes to be written
+	 *
+	 *    returns:
+	 *    0       - Success
+	 *    -EINVAL - Error
+	 */
+	int (*tf_dev_map_parif)(struct tf *tfp,
+				struct tf_map_tbl_scope_parms *parms,
+				uint8_t *data,
+				uint8_t *mask,
+				uint16_t sz_in_bytes);
+	/**
+	 * Map EEM table scope
+	 *
+	 * [in] tfp
+	 *   Pointer to TF handle
+	 *
+	 * [in] parms
+	 *   Pointer to table scope map parameters
+	 *
+	 *    returns:
+	 *    0       - Success
+	 *    -EINVAL - Error
+	 */
+	int (*tf_dev_map_tbl_scope)(struct tf *tfp,
+				    struct tf_map_tbl_scope_parms *parms);
 
 	/**
 	 * Free EEM table scope
@@ -642,7 +681,7 @@ struct tf_dev_ops {
 	 *    -EINVAL - Error
 	 */
 	int (*tf_dev_set_global_cfg)(struct tf *tfp,
-				     struct tf_dev_global_cfg_parms *parms);
+				     struct tf_global_cfg_parms *parms);
 
 	/**
 	 * Get global cfg
@@ -658,7 +697,7 @@ struct tf_dev_ops {
 	 *    -EINVAL - Error
 	 */
 	int (*tf_dev_get_global_cfg)(struct tf *tfp,
-				     struct tf_dev_global_cfg_parms *parms);
+				     struct tf_global_cfg_parms *parms);
 };
 
 /**
diff --git a/drivers/net/bnxt/tf_core/tf_device_p4.c b/drivers/net/bnxt/tf_core/tf_device_p4.c
index 0344565..07c8d02 100644
--- a/drivers/net/bnxt/tf_core/tf_device_p4.c
+++ b/drivers/net/bnxt/tf_core/tf_device_p4.c
@@ -12,6 +12,10 @@
 #include "tf_tcam.h"
 #include "tf_em.h"
 #include "tf_if_tbl.h"
+#include "tfp.h"
+
+#define TF_DEV_P4_PARIF_MAX 16
+#define TF_DEV_P4_PF_MASK 0xfUL
 
 /**
  * Device specific function that retrieves the MAX number of HCAPI
@@ -97,6 +101,42 @@ tf_dev_p4_get_tcam_slice_info(struct tf *tfp __rte_unused,
 	return 0;
 }
 
+static int
+tf_dev_p4_map_parif(struct tf *tfp __rte_unused,
+		    struct tf_map_tbl_scope_parms *parms,
+		    uint8_t *data,
+		    uint8_t *mask,
+		    uint16_t sz_in_bytes)
+{
+	uint32_t parif_pf[2] = { 0 };
+	uint32_t parif_pf_mask[2] = { 0 };
+	uint32_t parif;
+	uint32_t shift;
+	uint32_t scope_id = (uint32_t)(parms->tbl_scope_id);
+
+	if (sz_in_bytes != sizeof(uint64_t))
+		return -ENOTSUP;
+
+	for (parif = 0; parif < TF_DEV_P4_PARIF_MAX; parif++) {
+		if (parms->parif_bitmask & (1UL << parif)) {
+			if (parif < 8) {
+				shift = 4 * parif;
+				parif_pf_mask[0] |= TF_DEV_P4_PF_MASK << shift;
+				parif_pf[0] |= scope_id << shift;
+			} else {
+				shift = 4 * (parif - 8);
+				parif_pf_mask[1] |= TF_DEV_P4_PF_MASK << shift;
+				parif_pf[1] |= scope_id << shift;
+			}
+		}
+	}
+	tfp_memcpy(data, parif_pf, sz_in_bytes);
+	tfp_memcpy(mask, parif_pf_mask, sz_in_bytes);
+
+	return 0;
+}
+
+
 /**
  * Truflow P4 device specific functions
  */
@@ -125,6 +165,8 @@ const struct tf_dev_ops tf_dev_ops_p4_init = {
 	.tf_dev_insert_ext_em_entry = NULL,
 	.tf_dev_delete_ext_em_entry = NULL,
 	.tf_dev_alloc_tbl_scope = NULL,
+	.tf_dev_map_tbl_scope = NULL,
+	.tf_dev_map_parif = NULL,
 	.tf_dev_free_tbl_scope = NULL,
 	.tf_dev_set_if_tbl = NULL,
 	.tf_dev_get_if_tbl = NULL,
@@ -160,6 +202,8 @@ const struct tf_dev_ops tf_dev_ops_p4 = {
 	.tf_dev_insert_ext_em_entry = tf_em_insert_ext_entry,
 	.tf_dev_delete_ext_em_entry = tf_em_delete_ext_entry,
 	.tf_dev_alloc_tbl_scope = tf_em_ext_common_alloc,
+	.tf_dev_map_tbl_scope = tf_em_ext_map_tbl_scope,
+	.tf_dev_map_parif = tf_dev_p4_map_parif,
 	.tf_dev_free_tbl_scope = tf_em_ext_common_free,
 	.tf_dev_set_if_tbl = tf_if_tbl_set,
 	.tf_dev_get_if_tbl = tf_if_tbl_get,
diff --git a/drivers/net/bnxt/tf_core/tf_em.h b/drivers/net/bnxt/tf_core/tf_em.h
index 51b0813..8820b28 100644
--- a/drivers/net/bnxt/tf_core/tf_em.h
+++ b/drivers/net/bnxt/tf_core/tf_em.h
@@ -358,7 +358,7 @@ int tf_em_ext_free(struct tf *tfp,
 		   struct tf_free_tbl_scope_parms *parms);
 
 /**
- * Common free for external EEM using host or system memory
+ * Common free table scope for external EEM using host or system memory
  *
  * [in] tfp
  *   Pointer to TruFlow handle
@@ -374,7 +374,7 @@ int tf_em_ext_common_free(struct tf *tfp,
 			  struct tf_free_tbl_scope_parms *parms);
 
 /**
- * Common alloc for external EEM using host or system memory
+ * Common alloc table scope for external EEM using host or system memory
  *
  * [in] tfp
  *   Pointer to TruFlow handle
@@ -388,6 +388,21 @@ int tf_em_ext_common_free(struct tf *tfp,
  */
 int tf_em_ext_common_alloc(struct tf *tfp,
 			   struct tf_alloc_tbl_scope_parms *parms);
+/**
+ * Map a set of parifs to a set of EEM base addresses (table scope)
+ *
+ * [in] tfp
+ *   Pointer to TruFlow handle
+ *
+ * [in] parms
+ *   Pointer to input parameters
+ *
+ * Returns:
+ *   0       - Success
+ *   -EINVAL - Parameter error
+ */
+int tf_em_ext_map_tbl_scope(struct tf *tfp,
+			    struct tf_map_tbl_scope_parms *parms);
 
 /**
  * Allocate External Tbl entry from the scope pool.
diff --git a/drivers/net/bnxt/tf_core/tf_em_common.c b/drivers/net/bnxt/tf_core/tf_em_common.c
index 0f4b121..c4f3de0 100644
--- a/drivers/net/bnxt/tf_core/tf_em_common.c
+++ b/drivers/net/bnxt/tf_core/tf_em_common.c
@@ -1046,3 +1046,91 @@ tf_em_ext_common_free(struct tf *tfp,
 {
 	return tf_em_ext_free(tfp, parms);
 }
+
+int tf_em_ext_map_tbl_scope(struct tf *tfp,
+			    struct tf_map_tbl_scope_parms *parms)
+{
+	int rc = 0;
+	struct tf_session *tfs;
+	struct tf_tbl_scope_cb *tbl_scope_cb;
+	struct tf_global_cfg_parms gcfg_parms = { 0 };
+	struct tfp_calloc_parms aparms;
+	uint32_t *data, *mask;
+	uint32_t sz_in_bytes = 8;
+	struct tf_dev_info *dev;
+
+	tbl_scope_cb = tbl_scope_cb_find(parms->tbl_scope_id);
+
+	if (tbl_scope_cb == NULL) {
+		TFP_DRV_LOG(ERR, "Invalid tbl_scope_cb tbl_scope_id(%d)\n",
+			    parms->tbl_scope_id);
+		return -EINVAL;
+	}
+
+	/* Retrieve the session information */
+	rc = tf_session_get_session_internal(tfp, &tfs);
+	if (rc)
+		return rc;
+
+	/* Retrieve the device information */
+	rc = tf_session_get_device(tfs, &dev);
+	if (rc)
+		return rc;
+
+	if (dev->ops->tf_dev_map_tbl_scope == NULL) {
+		rc = -EOPNOTSUPP;
+		TFP_DRV_LOG(ERR,
+			    "Map table scope operation not supported, rc:%s\n",
+			    strerror(-rc));
+		return rc;
+	}
+
+	aparms.nitems = 2;
+	aparms.size = sizeof(uint32_t);
+	aparms.alignment = 0;
+
+	if (tfp_calloc(&aparms) != 0) {
+		TFP_DRV_LOG(ERR, "Map tbl scope alloc data error %s\n",
+			    strerror(ENOMEM));
+		return -ENOMEM;
+	}
+	data = aparms.mem_va;
+
+	if (tfp_calloc(&aparms) != 0) {
+		TFP_DRV_LOG(ERR, "Map tbl scope alloc mask error %s\n",
+			    strerror(ENOMEM));
+		rc = -ENOMEM;
+		goto clean;
+	}
+	mask = aparms.mem_va;
+
+	rc = dev->ops->tf_dev_map_parif(tfp, parms, (uint8_t *)data,
+					(uint8_t *)mask, sz_in_bytes);
+
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "Map table scope config failure, rc:%s\n",
+			    strerror(-rc));
+		goto cleaner;
+	}
+
+	gcfg_parms.type = TF_GLOBAL_CFG_INTERNAL_PARIF_2_PF;
+	gcfg_parms.offset = 0;
+	gcfg_parms.config = (uint8_t *)data;
+	gcfg_parms.config_mask = (uint8_t *)mask;
+	gcfg_parms.config_sz_in_bytes = sizeof(uint64_t);
+
+
+	rc = tf_msg_set_global_cfg(tfp, &gcfg_parms);
+	if (rc) {
+		TFP_DRV_LOG(ERR,
+			    "Map tbl scope, set failed, rc:%s\n",
+			    strerror(-rc));
+	}
+cleaner:
+	tfp_free(mask);
+clean:
+	tfp_free(data);
+
+	return rc;
+}
diff --git a/drivers/net/bnxt/tf_core/tf_global_cfg.c b/drivers/net/bnxt/tf_core/tf_global_cfg.c
index 4ed4039..ebd1a86 100644
--- a/drivers/net/bnxt/tf_core/tf_global_cfg.c
+++ b/drivers/net/bnxt/tf_core/tf_global_cfg.c
@@ -113,7 +113,7 @@ tf_global_cfg_unbind(struct tf *tfp __rte_unused)
 
 int
 tf_global_cfg_set(struct tf *tfp,
-		  struct tf_dev_global_cfg_parms *parms)
+		  struct tf_global_cfg_parms *parms)
 {
 	int rc;
 	struct tf_global_cfg_get_hcapi_parms hparms;
@@ -156,7 +156,7 @@ tf_global_cfg_set(struct tf *tfp,
 
 int
 tf_global_cfg_get(struct tf *tfp,
-		  struct tf_dev_global_cfg_parms *parms)
+		  struct tf_global_cfg_parms *parms)
 
 {
 	int rc;
diff --git a/drivers/net/bnxt/tf_core/tf_global_cfg.h b/drivers/net/bnxt/tf_core/tf_global_cfg.h
index 5c73bb1..685f38d 100644
--- a/drivers/net/bnxt/tf_core/tf_global_cfg.h
+++ b/drivers/net/bnxt/tf_core/tf_global_cfg.h
@@ -13,7 +13,15 @@
  * The global cfg module provides processing of global cfg types.
  */
 
-struct tf;
+/* struct tf; */
+
+/* Internal type not available to user
+ * but available internally within Truflow
+ */
+enum tf_global_config_internal_type {
+	TF_GLOBAL_CFG_INTERNAL_PARIF_2_PF = TF_GLOBAL_CFG_TYPE_MAX,
+	TF_GLOBAL_CFG_INTERNAL_TYPE_MAX
+};
 
 /**
  * Global cfg configuration enumeration.
@@ -62,34 +70,6 @@ struct tf_global_cfg_cfg_parms {
 };
 
 /**
- * global cfg parameters
- */
-struct tf_dev_global_cfg_parms {
-	/**
-	 * [in] Receive or transmit direction
-	 */
-	enum tf_dir dir;
-	/**
-	 * [in] Global config type
-	 */
-	enum tf_global_config_type type;
-	/**
-	 * [in] Offset @ the type
-	 */
-	uint32_t offset;
-	/**
-	 * [in/out] Value of the configuration
-	 * set - Read, Modify and Write
-	 * get - Read the full configuration
-	 */
-	uint8_t *config;
-	/**
-	 * [in] struct containing size
-	 */
-	uint16_t config_sz_in_bytes;
-};
-
-/**
  * @page global cfg
  *
  * @ref tf_global_cfg_bind
@@ -149,7 +129,7 @@ tf_global_cfg_unbind(struct tf *tfp);
  *   - (-EINVAL) on failure.
  */
 int tf_global_cfg_set(struct tf *tfp,
-		      struct tf_dev_global_cfg_parms *parms);
+		      struct tf_global_cfg_parms *parms);
 
 /**
  * Get global configuration
@@ -165,6 +145,6 @@ int tf_global_cfg_set(struct tf *tfp,
  *   - (-EINVAL) on failure.
  */
 int tf_global_cfg_get(struct tf *tfp,
-		      struct tf_dev_global_cfg_parms *parms);
+		      struct tf_global_cfg_parms *parms);
 
 #endif /* TF_GLOBAL_CFG_H */
diff --git a/drivers/net/bnxt/tf_core/tf_msg.c b/drivers/net/bnxt/tf_core/tf_msg.c
index 7c2ad17..5615eed 100644
--- a/drivers/net/bnxt/tf_core/tf_msg.c
+++ b/drivers/net/bnxt/tf_core/tf_msg.c
@@ -1075,7 +1075,7 @@ tf_msg_get_tbl_entry(struct tf *tfp,
 
 int
 tf_msg_get_global_cfg(struct tf *tfp,
-		      struct tf_dev_global_cfg_parms *params)
+		      struct tf_global_cfg_parms *params)
 {
 	int rc = 0;
 	struct tfp_send_msg_parms parms = { 0 };
@@ -1133,7 +1133,7 @@ tf_msg_get_global_cfg(struct tf *tfp,
 
 int
 tf_msg_set_global_cfg(struct tf *tfp,
-		      struct tf_dev_global_cfg_parms *params)
+		      struct tf_global_cfg_parms *params)
 {
 	int rc = 0;
 	struct tfp_send_msg_parms parms = { 0 };
@@ -1173,6 +1173,15 @@ tf_msg_set_global_cfg(struct tf *tfp,
 
 	tfp_memcpy(req.data, params->config,
 		   params->config_sz_in_bytes);
+
+	/* Only set mask if pointer is provided
+	 */
+	if (params->config_mask) {
+		tfp_memcpy(req.data + params->config_sz_in_bytes,
+			   params->config_mask,
+			   params->config_sz_in_bytes);
+	}
+
 	req.size = tfp_cpu_to_le_32(params->config_sz_in_bytes);
 
 	parms.tf_type = HWRM_TF_GLOBAL_CFG_SET;
diff --git a/drivers/net/bnxt/tf_core/tf_msg.h b/drivers/net/bnxt/tf_core/tf_msg.h
index 195710e..72bf850 100644
--- a/drivers/net/bnxt/tf_core/tf_msg.h
+++ b/drivers/net/bnxt/tf_core/tf_msg.h
@@ -462,7 +462,7 @@ int tf_msg_get_tbl_entry(struct tf *tfp,
  *   0 on Success else internal Truflow error
  */
 int tf_msg_get_global_cfg(struct tf *tfp,
-			  struct tf_dev_global_cfg_parms *params);
+			  struct tf_global_cfg_parms *params);
 
 /**
  * Sends global cfg update request to Firmware
@@ -477,7 +477,7 @@ int tf_msg_get_global_cfg(struct tf *tfp,
  *   0 on Success else internal Truflow error
  */
 int tf_msg_set_global_cfg(struct tf *tfp,
-			  struct tf_dev_global_cfg_parms *params);
+			  struct tf_global_cfg_parms *params);
 
 /**
  * Sends bulk get message of a Table Type element to the firmware.
-- 
2.7.4


  parent reply index

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-17  6:27 [dpdk-dev] [PATCH 00/14] bnxt patches Venkat Duvvuru
2020-10-17  6:27 ` [dpdk-dev] [PATCH 01/14] net/bnxt: device cleanup of FW Venkat Duvvuru
2020-10-17  6:27 ` [dpdk-dev] [PATCH 02/14] net/bnxt: add stingray support Venkat Duvvuru
2020-10-17  6:27 ` [dpdk-dev] [PATCH 03/14] net/bnxt: changes to support 2 table scopes Venkat Duvvuru
2020-10-17  6:27 ` Venkat Duvvuru [this message]
2020-10-17  6:28 ` [dpdk-dev] [PATCH 05/14] net/bnxt: table scope to PF Mapping for SR and Wh+ Venkat Duvvuru
2020-10-17  6:28 ` [dpdk-dev] [PATCH 06/14] net/bnxt: add build option for EM slot allocation Venkat Duvvuru
2020-10-17  6:28 ` [dpdk-dev] [PATCH 07/14] net/bnxt: update SR ULP resource counts Venkat Duvvuru
2020-10-17  6:28 ` [dpdk-dev] [PATCH 08/14] net/bnxt: fix infinite loop in flow query count API Venkat Duvvuru
2020-10-17  6:28 ` [dpdk-dev] [PATCH 09/14] net/bnxt: add support for parent flow accumulation counters Venkat Duvvuru
2020-10-17  6:28 ` [dpdk-dev] [PATCH 10/14] net/bnxt: use cfa pair alloc for configuring reps Venkat Duvvuru
2020-10-17  6:28 ` [dpdk-dev] [PATCH 11/14] net/bnxt: add mapper support for wildcard TCAM entry Venkat Duvvuru
2020-10-17  6:28 ` [dpdk-dev] [PATCH 12/14] net/bnxt: refactor flow id allocation Venkat Duvvuru
2020-10-17  6:28 ` [dpdk-dev] [PATCH 13/14] net/bnxt: add support for VXLAN decap templates Venkat Duvvuru
2020-10-17  6:28 ` [dpdk-dev] [PATCH 14/14] net/bnxt: add VXLAN decap offload support Venkat Duvvuru
2020-10-20 21:55 ` [dpdk-dev] [PATCH v2 00/11] bnxt fixes and enhancements to TRUFLOW support Ajit Khaparde
2020-10-20 21:55   ` [dpdk-dev] [PATCH v2 01/11] net/bnxt: add stingray support to core layer Ajit Khaparde
2020-10-21 18:07     ` Ferruh Yigit
2020-10-21 18:11       ` Ajit Khaparde
2020-10-22  9:11         ` Ferruh Yigit
2020-10-23  5:10           ` Ajit Khaparde
2020-10-20 21:55   ` [dpdk-dev] [PATCH v2 02/11] net/bnxt: changes to support two table scopes Ajit Khaparde
2020-10-20 21:55   ` [dpdk-dev] [PATCH v2 03/11] net/bnxt: add table scope to PF Mapping Ajit Khaparde
2020-10-20 21:55   ` [dpdk-dev] [PATCH v2 04/11] net/bnxt: update ULP resource counts Ajit Khaparde
2020-10-20 21:55   ` [dpdk-dev] [PATCH v2 05/11] net/bnxt: fix infinite loop in flow query count Ajit Khaparde
2020-10-20 21:55   ` [dpdk-dev] [PATCH v2 06/11] net/bnxt: add support for flow counter accumulation Ajit Khaparde
2020-10-20 21:55   ` [dpdk-dev] [PATCH v2 07/11] net/bnxt: change HWRM command to create reps Ajit Khaparde
2020-10-20 21:55   ` [dpdk-dev] [PATCH v2 08/11] net/bnxt: add mapper support for wildcard TCAM Ajit Khaparde
2020-10-20 21:55   ` [dpdk-dev] [PATCH v2 09/11] net/bnxt: refactor flow id allocation Ajit Khaparde
2020-10-20 21:55   ` [dpdk-dev] [PATCH v2 10/11] net/bnxt: add support for VXLAN decap templates Ajit Khaparde
2020-10-20 21:55   ` [dpdk-dev] [PATCH v2 11/11] net/bnxt: add VXLAN decap offload support Ajit Khaparde
2020-10-21  5:31   ` [dpdk-dev] [PATCH v2 00/11] bnxt fixes and enhancements to TRUFLOW support Ajit Khaparde
2020-10-22 22:05   ` [dpdk-dev] [PATCH v3 " Ajit Khaparde
2020-10-23  5:08     ` Ajit Khaparde
2020-10-26  3:56       ` [dpdk-dev] [PATCH v4 00/15] bnxt fixes and enhancements Ajit Khaparde
2020-10-26  3:56         ` [dpdk-dev] [PATCH v4 01/15] net/bnxt: add stingray support to core layer Ajit Khaparde
2020-10-26  3:56         ` [dpdk-dev] [PATCH v4 02/15] net/bnxt: support two table scopes Ajit Khaparde
2020-10-26  3:56         ` [dpdk-dev] [PATCH v4 03/15] net/bnxt: add table scope to PF Mapping Ajit Khaparde
2020-10-26  3:56         ` [dpdk-dev] [PATCH v4 04/15] net/bnxt: update ULP resource counts Ajit Khaparde
2020-10-26  3:56         ` [dpdk-dev] [PATCH v4 05/15] net/bnxt: fix flow query count Ajit Khaparde
2020-10-26  3:56         ` [dpdk-dev] [PATCH v4 06/15] net/bnxt: add hierarchical flow counters Ajit Khaparde
2020-10-26  3:56         ` [dpdk-dev] [PATCH v4 07/15] net/bnxt: modify HWRM command to create reps Ajit Khaparde
2020-10-26  3:56         ` [dpdk-dev] [PATCH v4 08/15] net/bnxt: add mapper support for wildcard TCAM Ajit Khaparde
2020-10-26  3:56         ` [dpdk-dev] [PATCH v4 09/15] net/bnxt: refactor flow id allocation Ajit Khaparde
2020-10-26  3:56         ` [dpdk-dev] [PATCH v4 10/15] net/bnxt: add VXLAN decap templates Ajit Khaparde
2020-10-26  3:56         ` [dpdk-dev] [PATCH v4 11/15] net/bnxt: add VXLAN decap offload support Ajit Khaparde
2020-10-26  3:56         ` [dpdk-dev] [PATCH v4 12/15] net/bnxt: increase the size of Rx CQ Ajit Khaparde
2020-10-26  3:56         ` [dpdk-dev] [PATCH v4 13/15] net/bnxt: fix to reset mbuf data offset Ajit Khaparde
2020-10-26  3:56         ` [dpdk-dev] [PATCH v4 14/15] net/bnxt: set thread safe flow ops flag Ajit Khaparde
2020-10-26  3:56         ` [dpdk-dev] [PATCH v4 15/15] net/bnxt: fix Rx performance by removing spinlock Ajit Khaparde
2020-10-26 17:42         ` [dpdk-dev] [PATCH v4 00/15] bnxt fixes and enhancements Ajit Khaparde
2020-10-22 22:05   ` [dpdk-dev] [PATCH v3 01/11] net/bnxt: add stingray support to core layer Ajit Khaparde
2020-10-23 10:54     ` Ferruh Yigit
2020-10-23 16:32       ` Ajit Khaparde
2020-10-22 22:05   ` [dpdk-dev] [PATCH v3 02/11] net/bnxt: changes to support two table scopes Ajit Khaparde
2020-10-22 22:05   ` [dpdk-dev] [PATCH v3 03/11] net/bnxt: add table scope to PF Mapping Ajit Khaparde
2020-10-22 22:05   ` [dpdk-dev] [PATCH v3 04/11] net/bnxt: update ULP resource counts Ajit Khaparde
2020-10-22 22:05   ` [dpdk-dev] [PATCH v3 05/11] net/bnxt: fix infinite loop in flow query count Ajit Khaparde
2020-10-22 22:05   ` [dpdk-dev] [PATCH v3 06/11] net/bnxt: add support for flow counter accumulation Ajit Khaparde
2020-10-22 22:05   ` [dpdk-dev] [PATCH v3 07/11] net/bnxt: change HWRM command to create reps Ajit Khaparde
2020-10-22 22:05   ` [dpdk-dev] [PATCH v3 08/11] net/bnxt: add mapper support for wildcard TCAM Ajit Khaparde
2020-10-22 22:05   ` [dpdk-dev] [PATCH v3 09/11] net/bnxt: refactor flow id allocation Ajit Khaparde
2020-10-22 22:05   ` [dpdk-dev] [PATCH v3 10/11] net/bnxt: add support for VXLAN decap templates Ajit Khaparde
2020-10-22 22:05   ` [dpdk-dev] [PATCH v3 11/11] net/bnxt: add VXLAN decap offload support Ajit Khaparde

Reply instructions:

You may reply publically 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=1602916089-18576-5-git-send-email-venkatkumar.duvvuru@broadcom.com \
    --to=venkatkumar.duvvuru@broadcom.com \
    --cc=dev@dpdk.org \
    --cc=farah.smith@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

DPDK patches and discussions

Archives are clonable:
	git clone --mirror http://inbox.dpdk.org/dev/0 dev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dev dev/ http://inbox.dpdk.org/dev \
		dev@dpdk.org
	public-inbox-index dev


Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dev


AGPL code for this site: git clone https://public-inbox.org/ public-inbox