[v4,41/47] net/bnxt: tf_ulp: support a few generic template items

Message ID 20241004175338.3156160-42-sriharsha.basavapatna@broadcom.com (mailing list archive)
State Changes Requested
Delegated to: Ajit Khaparde
Headers
Series TruFlow update for Thor2 |

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

Sriharsha Basavapatna Oct. 4, 2024, 5:53 p.m. UTC
From: Kishore Padmanabha <kishore.padmanabha@broadcom.com>

This patch provides the following changes.

support generic template items
	Add support for jump action, dynamic tunnels and
	flow priority to thor2 platform.

fix generic application template
	The queue action is enabled for Thor2 platform.
	Enabled rejection check for every action template.
	Fixed dynamic vxlan ip tunnel configuration.

fix vxlan ip customer tunnel
	The upar id is not populated correctly to set the
	tunnel id in the tcam table.

fix compiler warnings
	This change fixes several compiler warnings.

Signed-off-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com>
Signed-off-by: Sriharsha Basavapatna <sriharsha.basavapatna@broadcom.com>
Reviewed-by: Michael Baucom <michael.baucom@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/tf_ulp/bnxt_ulp_tfc.c   |  9 +++++++++
 drivers/net/bnxt/tf_ulp/ulp_mapper.c     | 11 +++--------
 drivers/net/bnxt/tf_ulp/ulp_rte_parser.c | 12 ++++++++++++
 3 files changed, 24 insertions(+), 8 deletions(-)
  

Patch

diff --git a/drivers/net/bnxt/tf_ulp/bnxt_ulp_tfc.c b/drivers/net/bnxt/tf_ulp/bnxt_ulp_tfc.c
index e5bb24299e..9c9e206285 100644
--- a/drivers/net/bnxt/tf_ulp/bnxt_ulp_tfc.c
+++ b/drivers/net/bnxt/tf_ulp/bnxt_ulp_tfc.c
@@ -536,6 +536,15 @@  ulp_tfc_cntxt_app_caps_init(struct bnxt *bp, uint8_t app_id, uint32_t dev_id)
 			}
 		}
 		ulp_ctx->cfg_data->feature_bits = info[i].feature_bits;
+		bnxt_ulp_default_app_priority_set(ulp_ctx,
+						  info[i].default_priority);
+		bnxt_ulp_max_def_priority_set(ulp_ctx,
+					      info[i].max_def_priority);
+		bnxt_ulp_min_flow_priority_set(ulp_ctx,
+					       info[i].min_flow_priority);
+		bnxt_ulp_max_flow_priority_set(ulp_ctx,
+					       info[i].max_flow_priority);
+
 		bnxt_ulp_cntxt_ptr2_default_class_bits_set(ulp_ctx,
 							   info[i].default_class_bits);
 		bnxt_ulp_cntxt_ptr2_default_act_bits_set(ulp_ctx,
diff --git a/drivers/net/bnxt/tf_ulp/ulp_mapper.c b/drivers/net/bnxt/tf_ulp/ulp_mapper.c
index f0d715d369..5dfe72df17 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_mapper.c
+++ b/drivers/net/bnxt/tf_ulp/ulp_mapper.c
@@ -872,7 +872,7 @@  ulp_mapper_field_src_process(struct bnxt_ulp_mapper_parms *parms,
 	struct bnxt_ulp_mapper_data *m;
 	uint8_t bit;
 	uint32_t port_id, val_size, field_size;
-	uint16_t idx, size_idx, offset;
+	uint16_t idx = 0, size_idx = 0, offset = 0;
 	uint32_t bytelen = ULP_BITS_2_BYTE(bitlen);
 	uint8_t *buffer;
 	uint64_t lregval;
@@ -1291,7 +1291,7 @@  ulp_mapper_field_opc_next(struct bnxt_ulp_mapper_parms *parms,
 			  const char *name)
 {
 	struct bnxt_ulp_mapper_field_info *field_info;
-	uint16_t idx;
+	uint16_t idx = 0;
 
 	/* read the cond table index and count */
 	if (unlikely(ulp_operand_read(field_opr,
@@ -1594,7 +1594,7 @@  ulp_mapper_key_recipe_field_opc_next(struct bnxt_ulp_mapper_parms *parms,
 				     struct bnxt_ulp_mapper_field_info *ofld)
 {
 	struct bnxt_ulp_mapper_field_info *field_info;
-	uint16_t idx;
+	uint16_t idx = 0;
 
 	/* read the cond table index and count */
 	if (unlikely(ulp_operand_read(field_opr,
@@ -3777,11 +3777,6 @@  ulp_mapper_cond_reject_list_process(struct bnxt_ulp_mapper_parms *parms,
 	/* set the rejection result to accept */
 	*res = 0;
 
-	/* If act rej cond is not enabled then skip reject cond processing */
-	if (parms->tmpl_type == BNXT_ULP_TEMPLATE_TYPE_ACTION &&
-	    !ULP_COMP_FLD_IDX_RD(parms, BNXT_ULP_CF_IDX_ACT_REJ_COND_EN))
-		return rc;
-
 	/* get the reject condition list */
 	reject_info = ulp_mapper_tmpl_reject_list_get(parms, tid);
 
diff --git a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c
index 72d3514647..dbd8a118df 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c
+++ b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c
@@ -1298,6 +1298,7 @@  ulp_rte_l4_proto_type_update(struct ulp_rte_parser_params *params,
 			     enum bnxt_ulp_hdr_bit hdr_bit)
 {
 	uint16_t stat_port = 0;
+	struct bnxt *bp;
 
 	switch (hdr_bit) {
 	case BNXT_ULP_HDR_BIT_I_UDP:
@@ -1364,10 +1365,21 @@  ulp_rte_l4_proto_type_update(struct ulp_rte_parser_params *params,
 
 		/* if udp and equal to static vxlan port then set tunnel bits*/
 		if (stat_port && dst_port == tfp_cpu_to_be_16(stat_port)) {
+			bp = bnxt_pmd_get_bp(params->port_id);
+			if (bp == NULL) {
+				BNXT_DRV_DBG(ERR, "Invalid bp\n");
+				return;
+			}
 			ULP_BITMAP_SET(params->hdr_fp_bit.bits,
 				       BNXT_ULP_HDR_BIT_T_VXLAN);
 			ULP_BITMAP_SET(params->cf_bitmap,
 				       BNXT_ULP_CF_BIT_IS_TUNNEL);
+			if (bp->vxlan_ip_upar_in_use &
+			    HWRM_TUNNEL_DST_PORT_QUERY_OUTPUT_UPAR_IN_USE_UPAR0) {
+				ULP_COMP_FLD_IDX_WR(params,
+						    BNXT_ULP_CF_IDX_VXLAN_IP_UPAR_ID,
+						    ULP_WP_SYM_TUN_HDR_TYPE_UPAR1);
+			}
 		}
 	} else {
 		/* if dynamic Vxlan is enabled then skip dport checks */