[PATCH 28/54] net/bnxt/tf_ulp: support MPLS packets
Manish Kurup
manish.kurup at broadcom.com
Tue Sep 30 02:35:38 CEST 2025
From: Shuanglin Wang <shuanglin.wang at broadcom.com>
Thor supports offloading MPLS packets and performing drop, forward,
or queue actions for matchied packets.
Signed-off-by: Shuanglin Wang <shuanglin.wang at broadcom.com>
Reviewed-by: Kishore Padmanabha <kishore.padmanabha at broadcom.com>
---
drivers/net/bnxt/tf_ulp/ulp_rte_handler_tbl.c | 4 +-
drivers/net/bnxt/tf_ulp/ulp_rte_parser.c | 52 ++++
drivers/net/bnxt/tf_ulp/ulp_rte_parser.h | 5 +
.../net/bnxt/tf_ulp/ulp_template_db_enum.h | 239 +++++++++++++++++-
drivers/net/bnxt/tf_ulp/ulp_template_struct.h | 3 +
5 files changed, 289 insertions(+), 14 deletions(-)
diff --git a/drivers/net/bnxt/tf_ulp/ulp_rte_handler_tbl.c b/drivers/net/bnxt/tf_ulp/ulp_rte_handler_tbl.c
index 5b9caabe1d..6e1115b985 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_rte_handler_tbl.c
+++ b/drivers/net/bnxt/tf_ulp/ulp_rte_handler_tbl.c
@@ -297,8 +297,8 @@ struct bnxt_ulp_rte_hdr_info ulp_hdr_info[] = {
.proto_hdr_func = NULL
},
[RTE_FLOW_ITEM_TYPE_MPLS] = {
- .hdr_type = BNXT_ULP_HDR_TYPE_NOT_SUPPORTED,
- .proto_hdr_func = NULL
+ .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED,
+ .proto_hdr_func = ulp_rte_mpls_hdr_handler
},
[RTE_FLOW_ITEM_TYPE_GRE] = {
.hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED,
diff --git a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c
index bf3a3deb18..af7f8b7ab4 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c
+++ b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c
@@ -2159,6 +2159,58 @@ ulp_rte_ecpri_hdr_handler(const struct rte_flow_item *item,
return BNXT_TF_RC_SUCCESS;
}
+/* Function to handle the parsing of RTE Flow item MPLS Header. */
+int32_t
+ulp_rte_mpls_hdr_handler(const struct rte_flow_item *item,
+ struct ulp_rte_parser_params *params)
+{
+ const struct rte_flow_item_mpls *mpls_spec = item->spec;
+ const struct rte_flow_item_mpls *mpls_mask = item->mask;
+ struct ulp_rte_hdr_bitmap *hdr_bitmap = ¶ms->hdr_bitmap;
+ uint32_t idx = 0;
+ uint32_t size;
+
+ if (unlikely(ulp_rte_prsr_fld_size_validate(params, &idx,
+ BNXT_ULP_PROTO_HDR_MPLS_NUM))) {
+ BNXT_DRV_DBG(ERR, "Error parsing protocol header");
+ return BNXT_TF_RC_ERROR;
+ }
+
+ if (mpls_spec && !mpls_mask)
+ mpls_mask = &rte_flow_item_mpls_mask;
+
+ if (mpls_spec) {
+ uint8_t spec_label_tc_s[3] = {0};
+ uint8_t mask_label_tc_s[3] = {0};
+ /* right-shift 4 bits */
+ spec_label_tc_s[0] = mpls_spec->label_tc_s[0] >> 4;
+ spec_label_tc_s[1] = mpls_spec->label_tc_s[0] << 4 | mpls_spec->label_tc_s[1] >> 4;
+ spec_label_tc_s[2] = mpls_spec->label_tc_s[1] << 4 | mpls_spec->label_tc_s[2] >> 4;
+ mask_label_tc_s[0] = mpls_mask->label_tc_s[0] >> 4;
+ mask_label_tc_s[1] = mpls_mask->label_tc_s[0] << 4 | mpls_mask->label_tc_s[1] >> 4;
+ mask_label_tc_s[2] = mpls_mask->label_tc_s[1] << 4 | mpls_mask->label_tc_s[2] >> 4;
+
+ /* Process mpls label field */
+ size = sizeof(((struct rte_flow_item_mpls *)NULL)->label_tc_s);
+ ulp_rte_prsr_fld_mask(params, &idx, size,
+ spec_label_tc_s,
+ mask_label_tc_s,
+ ULP_PRSR_ACT_DEFAULT);
+
+ /* Process mpls ttl field */
+ size = sizeof(((struct rte_flow_item_mpls *)NULL)->ttl);
+ ulp_rte_prsr_fld_mask(params, &idx, size,
+ ulp_deference_struct(mpls_spec, ttl),
+ ulp_deference_struct(mpls_mask, ttl),
+ ULP_PRSR_ACT_DEFAULT);
+ }
+
+ /* Update the hdr_bitmap with MPLS and cf bitmap*/
+ ULP_BITMAP_SET(hdr_bitmap->bits, BNXT_ULP_HDR_BIT_T_MPLS);
+ ULP_BITMAP_SET(params->cf_bitmap, BNXT_ULP_CF_BIT_IS_TUNNEL);
+ return BNXT_TF_RC_SUCCESS;
+}
+
/* Function to handle the parsing of RTE Flow item void Header */
int32_t
ulp_rte_void_hdr_handler(const struct rte_flow_item *item __rte_unused,
diff --git a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.h b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.h
index b20cb1ccde..5f451ba404 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.h
+++ b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.h
@@ -164,6 +164,11 @@ int32_t
ulp_rte_ecpri_hdr_handler(const struct rte_flow_item *item,
struct ulp_rte_parser_params *params);
+/* Function to handle the parsing of RTE Flow item MPLS Header. */
+int32_t
+ulp_rte_mpls_hdr_handler(const struct rte_flow_item *item,
+ struct ulp_rte_parser_params *params);
+
/* Function to handle the parsing of RTE Flow item void Header. */
int32_t
ulp_rte_void_hdr_handler(const struct rte_flow_item *item,
diff --git a/drivers/net/bnxt/tf_ulp/ulp_template_db_enum.h b/drivers/net/bnxt/tf_ulp/ulp_template_db_enum.h
index 4e7cb570b0..02534d8fe8 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_template_db_enum.h
+++ b/drivers/net/bnxt/tf_ulp/ulp_template_db_enum.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2014-2024 Broadcom
+ * Copyright(c) 2014-2025 Broadcom
* All rights reserved.
*/
@@ -71,7 +71,8 @@ enum bnxt_ulp_cf_bit {
BNXT_ULP_CF_BIT_STATIC_VXLAN_IP_PORT = 0x0000000000000800,
BNXT_ULP_CF_BIT_DYNAMIC_VXLAN_PORT = 0x0000000000001000,
BNXT_ULP_CF_BIT_DYNAMIC_GENEVE_PORT = 0x0000000000002000,
- BNXT_ULP_CF_BIT_LAST = 0x0000000000004000
+ BNXT_ULP_CF_BIT_HOT_UP_SECONDARY = 0x0000000000004000,
+ BNXT_ULP_CF_BIT_LAST = 0x0000000000008000
};
enum bnxt_ulp_dev_ft {
@@ -117,7 +118,8 @@ enum bnxt_ulp_hdr_bit {
BNXT_ULP_HDR_BIT_I_L4_FLOW = 0x0000000200000000,
BNXT_ULP_HDR_BIT_NON_GENERIC = 0x0000000400000000,
BNXT_ULP_HDR_BIT_GENERIC = 0x0000000800000000,
- BNXT_ULP_HDR_BIT_LAST = 0x0000001000000000
+ BNXT_ULP_HDR_BIT_T_MPLS = 0x0000001000000000,
+ BNXT_ULP_HDR_BIT_LAST = 0x0000002000000000
};
enum bnxt_ulp_accept_opc {
@@ -386,7 +388,8 @@ enum bnxt_ulp_enc_field {
BNXT_ULP_ENC_FIELD_GENEVE_OPT_W3 = 51,
BNXT_ULP_ENC_FIELD_GENEVE_OPT_W4 = 52,
BNXT_ULP_ENC_FIELD_GENEVE_OPT_W5 = 53,
- BNXT_ULP_ENC_FIELD_LAST = 54
+ BNXT_ULP_ENC_FIELD_MPLS_LABEL = 54,
+ BNXT_ULP_ENC_FIELD_LAST = 55
};
enum bnxt_ulp_fdb_opc {
@@ -479,7 +482,10 @@ enum bnxt_ulp_func_opc {
BNXT_ULP_FUNC_OPC_COND_LIST = 26,
BNXT_ULP_FUNC_OPC_PORT_TABLE = 27,
BNXT_ULP_FUNC_OPC_MTR_ID_TO_STATS_HANDLE = 28,
- BNXT_ULP_FUNC_OPC_LAST = 29
+ BNXT_ULP_FUNC_OPC_APP_PRIORITY = 29,
+ BNXT_ULP_FUNC_OPC_TCAM_SET_PRIORITY = 30,
+ BNXT_ULP_FUNC_OPC_GET_HA_PRIORITY = 31,
+ BNXT_ULP_FUNC_OPC_LAST = 32
};
enum bnxt_ulp_func_src {
@@ -511,7 +517,8 @@ enum bnxt_ulp_generic_tbl_opc {
BNXT_ULP_GENERIC_TBL_OPC_NOT_USED = 0,
BNXT_ULP_GENERIC_TBL_OPC_READ = 1,
BNXT_ULP_GENERIC_TBL_OPC_WRITE = 2,
- BNXT_ULP_GENERIC_TBL_OPC_LAST = 3
+ BNXT_ULP_GENERIC_TBL_OPC_ITERATE = 3,
+ BNXT_ULP_GENERIC_TBL_OPC_LAST = 4
};
enum bnxt_ulp_glb_rf_idx {
@@ -616,6 +623,18 @@ enum bnxt_ulp_glb_rf_idx {
BNXT_ULP_GLB_RF_IDX_LAST = 98
};
+enum bnxt_ulp_global_identifier_tbl_opc {
+ BNXT_ULP_GLOBAL_IDENTIFIER_TBL_OPC_NOP = 0,
+ BNXT_ULP_GLOBAL_IDENTIFIER_TBL_OPC_ALLOC = 1,
+ BNXT_ULP_GLOBAL_IDENTIFIER_TBL_OPC_LAST = 2
+};
+
+enum bnxt_ulp_global_idx_tbl_opc {
+ BNXT_ULP_GLOBAL_IDX_TBL_OPC_NOP = 0,
+ BNXT_ULP_GLOBAL_IDX_TBL_OPC_ALLOC = 1,
+ BNXT_ULP_GLOBAL_IDX_TBL_OPC_LAST = 2
+};
+
enum bnxt_ulp_global_register_tbl_opc {
BNXT_ULP_GLOBAL_REGISTER_TBL_OPC_NOT_USED = 0,
BNXT_ULP_GLOBAL_REGISTER_TBL_OPC_WR_REGFILE = 1,
@@ -830,7 +849,13 @@ enum bnxt_ulp_rf_idx {
BNXT_ULP_RF_IDX_FLOW_CNTR_PTR_MTR = 104,
BNXT_ULP_RF_IDX_SW_METER_PTR_0 = 105,
BNXT_ULP_RF_IDX_METER_STATS_HNDL_0 = 106,
- BNXT_ULP_RF_IDX_LAST = 107
+ BNXT_ULP_RF_IDX_DYN_TUN_TYPE = 107,
+ BNXT_ULP_RF_IDX_DYN_UPAR_TUN = 108,
+ BNXT_ULP_RF_IDX_DYN_UPAR_ID = 109,
+ BNXT_ULP_RF_IDX_GENERIC_TBL_INDEX = 110,
+ BNXT_ULP_RF_IDX_APP_PRIO = 111,
+ BNXT_ULP_RF_IDX_HA_PRIO = 112,
+ BNXT_ULP_RF_IDX_LAST = 113
};
enum bnxt_ulp_stats_cache_tbl_opc {
@@ -883,7 +908,10 @@ enum bnxt_ulp_feature_bit {
BNXT_ULP_FEATURE_BIT_PARENT_DMAC = 0x00000001,
BNXT_ULP_FEATURE_BIT_PORT_DMAC = 0x00000002,
BNXT_ULP_FEATURE_BIT_MULTI_TUNNEL_FLOW = 0x00000004,
- BNXT_ULP_FEATURE_BIT_SOCKET_DIRECT = 0x00000008
+ BNXT_ULP_FEATURE_BIT_SOCKET_DIRECT = 0x00000008,
+ BNXT_ULP_FEATURE_BIT_MULTI_INSTANCE = 0x00000010,
+ BNXT_ULP_FEATURE_BIT_SPECIAL_VXLAN = 0x00000020,
+ BNXT_ULP_FEATURE_BIT_HOT_UPGRADE = 0x00000040
};
enum bnxt_ulp_flow_dir_bitmask {
@@ -909,7 +937,9 @@ enum bnxt_ulp_resource_func {
BNXT_ULP_RESOURCE_FUNC_GLOBAL_REGISTER_TABLE = 0x8a,
BNXT_ULP_RESOURCE_FUNC_KEY_RECIPE_TABLE = 0x8b,
BNXT_ULP_RESOURCE_FUNC_ALLOCATOR_TABLE = 0x8c,
- BNXT_ULP_RESOURCE_FUNC_STATS_CACHE = 0x8d
+ BNXT_ULP_RESOURCE_FUNC_STATS_CACHE = 0x8d,
+ BNXT_ULP_RESOURCE_FUNC_GLOBAL_IDENTIFIER = 0x8e,
+ BNXT_ULP_RESOURCE_FUNC_GLOBAL_IDX_TBL = 0x8f
};
enum bnxt_ulp_resource_sub_type {
@@ -951,6 +981,8 @@ enum bnxt_ulp_resource_sub_type {
BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_PROF_FUNC_CACHE = 28,
BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_GROUP_MISS_ACTION_CACHE = 29,
BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_SHARED_METER_STATS_CACHE = 30,
+ BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_HOT_UPGRADE_TCAM_CACHE = 31,
+ BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_GLOBAL_REGFILES_CACHE = 32,
BNXT_ULP_RESOURCE_SUB_TYPE_ALLOCATOR_TABLE_JUMP_INDEX = 0,
BNXT_ULP_RESOURCE_SUB_TYPE_VNIC_TABLE_RSS = 0,
BNXT_ULP_RESOURCE_SUB_TYPE_VNIC_TABLE_QUEUE = 1,
@@ -1374,10 +1406,44 @@ enum ulp_wp_sym {
ULP_WP_SYM_DECAP_FUNC_THRU_L2 = 11,
ULP_WP_SYM_DECAP_FUNC_THRU_L3 = 12,
ULP_WP_SYM_DECAP_FUNC_THRU_L4 = 13,
+ ULP_WP_SYM_DECAP_FUNC_THRU_OL2 = 0,
+ ULP_WP_SYM_DECAP_FUNC_THRU_OL3 = 0,
+ ULP_WP_SYM_DECAP_FUNC_THRU_OL4 = 0,
+ ULP_WP_SYM_DECAP_FUNC_THRU_OTUN = 0,
ULP_WP_SYM_ECV_VALID_NO = 0,
ULP_WP_SYM_ECV_VALID_YES = 1,
ULP_WP_SYM_ECV_CUSTOM_EN_NO = 0,
ULP_WP_SYM_ECV_CUSTOM_EN_YES = 1,
+ ULP_WP_SYM_ECV_CUSTOM_IPV4_CTRL_ENCREC = 0,
+ ULP_WP_SYM_ECV_CUSTOM_IPV4_CTRL_RSVD = 0,
+ ULP_WP_SYM_ECV_CUSTOM_IPV4_CTRL_INHERIT = 0,
+ ULP_WP_SYM_ECV_CUSTOM_IPV4_CTRL_INCREMENT = 0,
+ ULP_WP_SYM_ECV_SMAC_OVR_USE_SPSMAC = 0,
+ ULP_WP_SYM_ECV_SMAC_OVR_REUSE_IN_L2 = 0,
+ ULP_WP_SYM_ECV_SMAC_OVR_REUSE_TUN_L2 = 0,
+ ULP_WP_SYM_ECV_SMAC_OVR_USE_OUT_L2 = 0,
+ ULP_WP_SYM_ECV_SMAC_OVR_RFU = 0,
+ ULP_WP_SYM_ECV_SMAC_OVR_REUSE_IN_L2_DMAC = 0,
+ ULP_WP_SYM_ECV_SMAC_OVR_REUSE_TUN_L2_DMAC = 0,
+ ULP_WP_SYM_ECV_SMAC_OVR_REUSE_OUT_L2_DMAC = 0,
+ ULP_WP_SYM_ECV_VLAN_OVR_USE_ENCREC_VLANS = 0,
+ ULP_WP_SYM_ECV_VLAN_OVR_USE_IN_L2_VLANS = 0,
+ ULP_WP_SYM_ECV_VLAN_OVR_USE_TUN_L2_VLANS = 0,
+ ULP_WP_SYM_ECV_VLAN_OVR_USE_OUT_L2_VLANS = 0,
+ ULP_WP_SYM_ECV_VLAN_OVR_USE_IN_VLAN_IN_L2 = 0,
+ ULP_WP_SYM_ECV_VLAN_OVR_USE_OUT_VLAN_IN_L2 = 0,
+ ULP_WP_SYM_ECV_VLAN_OVR_USE_IN_VLAN_OUT_L2 = 0,
+ ULP_WP_SYM_ECV_VLAN_OVR_USE_OUT_VLAN_OUT_L2 = 0,
+ ULP_WP_SYM_ECV_VLAN_OVR_USE_ENCREC_DMAC = 0,
+ ULP_WP_SYM_ECV_VLAN_OVR_USE_IN_L2_DMAC = 0,
+ ULP_WP_SYM_ECV_VLAN_OVR_USE_IN_TUN_DMAC = 0,
+ ULP_WP_SYM_ECV_VLAN_OVR_USE_OUT_L2_DMAC = 0,
+ ULP_WP_SYM_ECV_GRE_SET_K_INCLUDE_OPTIONAL = 0,
+ ULP_WP_SYM_ECV_GRE_SET_K_NONE = 0,
+ ULP_WP_SYM_ECV_IP_TOS_IN_HDR = 0,
+ ULP_WP_SYM_ECV_IP_TOS_ENCREC = 0,
+ ULP_WP_SYM_ECV_IP_TTL_IN_HDR = 0,
+ ULP_WP_SYM_ECV_IP_TTL_ENCREC = 0,
ULP_WP_SYM_ECV_L2_EN_NO = 0,
ULP_WP_SYM_ECV_L2_EN_YES = 1,
ULP_WP_SYM_ECV_VTAG_TYPE_NOP = 0,
@@ -1412,6 +1478,8 @@ enum ulp_wp_sym {
ULP_WP_SYM_ECV_TUN_TYPE_NGE = 3,
ULP_WP_SYM_ECV_TUN_TYPE_NVGRE = 4,
ULP_WP_SYM_ECV_TUN_TYPE_GRE = 5,
+ ULP_WP_SYM_ECV_TUN_TYPE_GA_L4 = 0,
+ ULP_WP_SYM_ECV_TUN_TYPE_GA_TUN = 0,
ULP_WP_SYM_EEM_ACT_REC_INT = 1,
ULP_WP_SYM_EEM_EXT_FLOW_CNTR = 0,
ULP_WP_SYM_UC_ACT_REC = 0,
@@ -1452,6 +1520,7 @@ enum ulp_wp_sym {
ULP_WP_SYM_DPORT_TUN_TYPE_ECPRI = 4,
ULP_WP_SYM_DPORT_TUN_TYPE_SRV6 = 5,
ULP_WP_SYM_DPORT_TUN_TYPE_VXLAN_IPV4 = 6,
+ ULP_WP_SYM_TUN_TYPE_DYN_UPAR = 6,
ULP_WP_SYM_L3_ECPRI_HDR_SIZE = 0,
ULP_WP_SYM_L3_ECPRI_HDR_OFFS = 0,
ULP_WP_SYM_L3_ECPRI_PAT = 0,
@@ -1470,7 +1539,31 @@ enum ulp_wp_sym {
ULP_WP_SYM_T_ECPRI_ID_MASK = 0,
ULP_WP_SYM_T_ECPRI_CONTEXT_SIZE = 0,
ULP_WP_SYM_T_ECPRI_CONTEXT_OFFS = 0,
- ULP_WP_SYM_T_ECPRI_CONTEXT_MASK = 0
+ ULP_WP_SYM_T_ECPRI_CONTEXT_MASK = 0,
+ ULP_WP_SYM_SRV6_IP_PROTO_IPV6_ROUTE = 0,
+ ULP_WP_SYM_SRV6_IPV6_ENCAP = 0,
+ ULP_WP_SYM_SRV6_HDR_SIZE = 0,
+ ULP_WP_SYM_SRV6_HDR_OFFSET = 0,
+ ULP_WP_SYM_SRV6_V6_ENCAP = 0,
+ ULP_WP_SYM_SRV6_NXT_HDR_EXT_LEN = 0,
+ ULP_WP_SYM_SRV6_8BYTE_UNIT = 0,
+ ULP_WP_SYM_SRV6_8BIT_FLD = 0,
+ ULP_WP_SYM_SRV6_HDR_LEN_OFFSET = 0,
+ ULP_WP_SYM_SRV6_ID_EXTRACTION_LENGTH = 0,
+ ULP_WP_SYM_SRV6_ID_EXTRACTION_OFFSET = 0,
+ ULP_WP_SYM_SRV6_PATTERN = 0,
+ ULP_WP_SYM_SRV6_ID_MASK = 0,
+ ULP_WP_SYM_SRV6_CTXT_EXTRACTION_LENGTH = 0,
+ ULP_WP_SYM_SRV6_CTXT_EXTRACTION_OFFSET = 0,
+ ULP_WP_SYM_SRV6_CTXT_MASK = 0,
+ ULP_WP_SYM_GLB_ID_L2_CNTXT_ID = 0,
+ ULP_WP_SYM_GLB_ID_PROF_FUNC_ID = 1,
+ ULP_WP_SYM_GLB_ID_WC_PROFILE_ID = 2,
+ ULP_WP_SYM_GLB_ID_EM_PROFILE_ID = 3,
+ ULP_WP_SYM_GLB_APP_IDX_TBL_ID = 0,
+ ULP_WP_SYM_GLB_IDX_META_REC_ACT = 4,
+ ULP_WP_SYM_GLB_IDX_META_REC_PROF = 5,
+ ULP_WP_SYM_GLB_IDX_META_REC_LKUP = 6
};
enum ulp_thor_sym {
@@ -1696,10 +1789,44 @@ enum ulp_thor_sym {
ULP_THOR_SYM_DECAP_FUNC_THRU_L2 = 11,
ULP_THOR_SYM_DECAP_FUNC_THRU_L3 = 12,
ULP_THOR_SYM_DECAP_FUNC_THRU_L4 = 13,
+ ULP_THOR_SYM_DECAP_FUNC_THRU_OL2 = 0,
+ ULP_THOR_SYM_DECAP_FUNC_THRU_OL3 = 0,
+ ULP_THOR_SYM_DECAP_FUNC_THRU_OL4 = 0,
+ ULP_THOR_SYM_DECAP_FUNC_THRU_OTUN = 0,
ULP_THOR_SYM_ECV_VALID_NO = 0,
ULP_THOR_SYM_ECV_VALID_YES = 1,
ULP_THOR_SYM_ECV_CUSTOM_EN_NO = 0,
ULP_THOR_SYM_ECV_CUSTOM_EN_YES = 1,
+ ULP_THOR_SYM_ECV_CUSTOM_IPV4_CTRL_ENCREC = 0,
+ ULP_THOR_SYM_ECV_CUSTOM_IPV4_CTRL_RSVD = 0,
+ ULP_THOR_SYM_ECV_CUSTOM_IPV4_CTRL_INHERIT = 0,
+ ULP_THOR_SYM_ECV_CUSTOM_IPV4_CTRL_INCREMENT = 0,
+ ULP_THOR_SYM_ECV_SMAC_OVR_USE_SPSMAC = 0,
+ ULP_THOR_SYM_ECV_SMAC_OVR_REUSE_IN_L2 = 0,
+ ULP_THOR_SYM_ECV_SMAC_OVR_REUSE_TUN_L2 = 0,
+ ULP_THOR_SYM_ECV_SMAC_OVR_USE_OUT_L2 = 0,
+ ULP_THOR_SYM_ECV_SMAC_OVR_RFU = 0,
+ ULP_THOR_SYM_ECV_SMAC_OVR_REUSE_IN_L2_DMAC = 0,
+ ULP_THOR_SYM_ECV_SMAC_OVR_REUSE_TUN_L2_DMAC = 0,
+ ULP_THOR_SYM_ECV_SMAC_OVR_REUSE_OUT_L2_DMAC = 0,
+ ULP_THOR_SYM_ECV_VLAN_OVR_USE_ENCREC_VLANS = 0,
+ ULP_THOR_SYM_ECV_VLAN_OVR_USE_IN_L2_VLANS = 0,
+ ULP_THOR_SYM_ECV_VLAN_OVR_USE_TUN_L2_VLANS = 0,
+ ULP_THOR_SYM_ECV_VLAN_OVR_USE_OUT_L2_VLANS = 0,
+ ULP_THOR_SYM_ECV_VLAN_OVR_USE_IN_VLAN_IN_L2 = 0,
+ ULP_THOR_SYM_ECV_VLAN_OVR_USE_OUT_VLAN_IN_L2 = 0,
+ ULP_THOR_SYM_ECV_VLAN_OVR_USE_IN_VLAN_OUT_L2 = 0,
+ ULP_THOR_SYM_ECV_VLAN_OVR_USE_OUT_VLAN_OUT_L2 = 0,
+ ULP_THOR_SYM_ECV_VLAN_OVR_USE_ENCREC_DMAC = 0,
+ ULP_THOR_SYM_ECV_VLAN_OVR_USE_IN_L2_DMAC = 0,
+ ULP_THOR_SYM_ECV_VLAN_OVR_USE_IN_TUN_DMAC = 0,
+ ULP_THOR_SYM_ECV_VLAN_OVR_USE_OUT_L2_DMAC = 0,
+ ULP_THOR_SYM_ECV_GRE_SET_K_INCLUDE_OPTIONAL = 0,
+ ULP_THOR_SYM_ECV_GRE_SET_K_NONE = 0,
+ ULP_THOR_SYM_ECV_IP_TOS_IN_HDR = 0,
+ ULP_THOR_SYM_ECV_IP_TOS_ENCREC = 0,
+ ULP_THOR_SYM_ECV_IP_TTL_IN_HDR = 0,
+ ULP_THOR_SYM_ECV_IP_TTL_ENCREC = 0,
ULP_THOR_SYM_ECV_L2_EN_NO = 0,
ULP_THOR_SYM_ECV_L2_EN_YES = 1,
ULP_THOR_SYM_ECV_VTAG_TYPE_NOP = 0,
@@ -1734,6 +1861,8 @@ enum ulp_thor_sym {
ULP_THOR_SYM_ECV_TUN_TYPE_NGE = 3,
ULP_THOR_SYM_ECV_TUN_TYPE_NVGRE = 4,
ULP_THOR_SYM_ECV_TUN_TYPE_GRE = 5,
+ ULP_THOR_SYM_ECV_TUN_TYPE_GA_L4 = 0,
+ ULP_THOR_SYM_ECV_TUN_TYPE_GA_TUN = 0,
ULP_THOR_SYM_EEM_ACT_REC_INT = 0,
ULP_THOR_SYM_EEM_EXT_FLOW_CNTR = 0,
ULP_THOR_SYM_UC_ACT_REC = 0,
@@ -1774,6 +1903,7 @@ enum ulp_thor_sym {
ULP_THOR_SYM_DPORT_TUN_TYPE_ECPRI = 4,
ULP_THOR_SYM_DPORT_TUN_TYPE_SRV6 = 5,
ULP_THOR_SYM_DPORT_TUN_TYPE_VXLAN_IPV4 = 6,
+ ULP_THOR_SYM_TUN_TYPE_DYN_UPAR = 0x12,
ULP_THOR_SYM_L3_ECPRI_HDR_SIZE = 4,
ULP_THOR_SYM_L3_ECPRI_HDR_OFFS = 0,
ULP_THOR_SYM_L3_ECPRI_PAT = 0,
@@ -1792,7 +1922,31 @@ enum ulp_thor_sym {
ULP_THOR_SYM_T_ECPRI_ID_MASK = 0xffffffff,
ULP_THOR_SYM_T_ECPRI_CONTEXT_SIZE = 32,
ULP_THOR_SYM_T_ECPRI_CONTEXT_OFFS = 3,
- ULP_THOR_SYM_T_ECPRI_CONTEXT_MASK = 0xffffffff
+ ULP_THOR_SYM_T_ECPRI_CONTEXT_MASK = 0xffffffff,
+ ULP_THOR_SYM_SRV6_IP_PROTO_IPV6_ROUTE = 0x2b,
+ ULP_THOR_SYM_SRV6_IPV6_ENCAP = 0x2900,
+ ULP_THOR_SYM_SRV6_HDR_SIZE = 4,
+ ULP_THOR_SYM_SRV6_HDR_OFFSET = 0,
+ ULP_THOR_SYM_SRV6_V6_ENCAP = 3,
+ ULP_THOR_SYM_SRV6_NXT_HDR_EXT_LEN = 0x2900,
+ ULP_THOR_SYM_SRV6_8BYTE_UNIT = 3,
+ ULP_THOR_SYM_SRV6_8BIT_FLD = 8,
+ ULP_THOR_SYM_SRV6_HDR_LEN_OFFSET = 1,
+ ULP_THOR_SYM_SRV6_ID_EXTRACTION_LENGTH = 32,
+ ULP_THOR_SYM_SRV6_ID_EXTRACTION_OFFSET = 3,
+ ULP_THOR_SYM_SRV6_PATTERN = 2,
+ ULP_THOR_SYM_SRV6_ID_MASK = 0xff00ffff,
+ ULP_THOR_SYM_SRV6_CTXT_EXTRACTION_LENGTH = 32,
+ ULP_THOR_SYM_SRV6_CTXT_EXTRACTION_OFFSET = 7,
+ ULP_THOR_SYM_SRV6_CTXT_MASK = 0xffffffff,
+ ULP_THOR_SYM_GLB_ID_L2_CNTXT_ID = 0,
+ ULP_THOR_SYM_GLB_ID_PROF_FUNC_ID = 1,
+ ULP_THOR_SYM_GLB_ID_WC_PROFILE_ID = 2,
+ ULP_THOR_SYM_GLB_ID_EM_PROFILE_ID = 3,
+ ULP_THOR_SYM_GLB_APP_IDX_TBL_ID = 0,
+ ULP_THOR_SYM_GLB_IDX_META_REC_ACT = 4,
+ ULP_THOR_SYM_GLB_IDX_META_REC_PROF = 5,
+ ULP_THOR_SYM_GLB_IDX_META_REC_LKUP = 6
};
enum ulp_thor2_sym {
@@ -2018,10 +2172,44 @@ enum ulp_thor2_sym {
ULP_THOR2_SYM_DECAP_FUNC_THRU_L2 = 11,
ULP_THOR2_SYM_DECAP_FUNC_THRU_L3 = 12,
ULP_THOR2_SYM_DECAP_FUNC_THRU_L4 = 13,
+ ULP_THOR2_SYM_DECAP_FUNC_THRU_OL2 = 0x14,
+ ULP_THOR2_SYM_DECAP_FUNC_THRU_OL3 = 0x15,
+ ULP_THOR2_SYM_DECAP_FUNC_THRU_OL4 = 0x16,
+ ULP_THOR2_SYM_DECAP_FUNC_THRU_OTUN = 0x17,
ULP_THOR2_SYM_ECV_VALID_NO = 0,
ULP_THOR2_SYM_ECV_VALID_YES = 1,
ULP_THOR2_SYM_ECV_CUSTOM_EN_NO = 0,
ULP_THOR2_SYM_ECV_CUSTOM_EN_YES = 1,
+ ULP_THOR2_SYM_ECV_CUSTOM_IPV4_CTRL_ENCREC = 0,
+ ULP_THOR2_SYM_ECV_CUSTOM_IPV4_CTRL_RSVD = 1,
+ ULP_THOR2_SYM_ECV_CUSTOM_IPV4_CTRL_INHERIT = 2,
+ ULP_THOR2_SYM_ECV_CUSTOM_IPV4_CTRL_INCREMENT = 3,
+ ULP_THOR2_SYM_ECV_SMAC_OVR_USE_SPSMAC = 0,
+ ULP_THOR2_SYM_ECV_SMAC_OVR_REUSE_IN_L2 = 1,
+ ULP_THOR2_SYM_ECV_SMAC_OVR_REUSE_TUN_L2 = 2,
+ ULP_THOR2_SYM_ECV_SMAC_OVR_USE_OUT_L2 = 3,
+ ULP_THOR2_SYM_ECV_SMAC_OVR_RFU = 4,
+ ULP_THOR2_SYM_ECV_SMAC_OVR_REUSE_IN_L2_DMAC = 5,
+ ULP_THOR2_SYM_ECV_SMAC_OVR_REUSE_TUN_L2_DMAC = 6,
+ ULP_THOR2_SYM_ECV_SMAC_OVR_REUSE_OUT_L2_DMAC = 7,
+ ULP_THOR2_SYM_ECV_VLAN_OVR_USE_ENCREC_VLANS = 0,
+ ULP_THOR2_SYM_ECV_VLAN_OVR_USE_IN_L2_VLANS = 1,
+ ULP_THOR2_SYM_ECV_VLAN_OVR_USE_TUN_L2_VLANS = 0,
+ ULP_THOR2_SYM_ECV_VLAN_OVR_USE_OUT_L2_VLANS = 0,
+ ULP_THOR2_SYM_ECV_VLAN_OVR_USE_IN_VLAN_IN_L2 = 0,
+ ULP_THOR2_SYM_ECV_VLAN_OVR_USE_OUT_VLAN_IN_L2 = 0,
+ ULP_THOR2_SYM_ECV_VLAN_OVR_USE_IN_VLAN_OUT_L2 = 0,
+ ULP_THOR2_SYM_ECV_VLAN_OVR_USE_OUT_VLAN_OUT_L2 = 0,
+ ULP_THOR2_SYM_ECV_VLAN_OVR_USE_ENCREC_DMAC = 0,
+ ULP_THOR2_SYM_ECV_VLAN_OVR_USE_IN_L2_DMAC = 1,
+ ULP_THOR2_SYM_ECV_VLAN_OVR_USE_IN_TUN_DMAC = 2,
+ ULP_THOR2_SYM_ECV_VLAN_OVR_USE_OUT_L2_DMAC = 3,
+ ULP_THOR2_SYM_ECV_GRE_SET_K_INCLUDE_OPTIONAL = 1,
+ ULP_THOR2_SYM_ECV_GRE_SET_K_NONE = 1,
+ ULP_THOR2_SYM_ECV_IP_TOS_IN_HDR = 1,
+ ULP_THOR2_SYM_ECV_IP_TOS_ENCREC = 0,
+ ULP_THOR2_SYM_ECV_IP_TTL_IN_HDR = 1,
+ ULP_THOR2_SYM_ECV_IP_TTL_ENCREC = 0,
ULP_THOR2_SYM_ECV_L2_EN_NO = 0,
ULP_THOR2_SYM_ECV_L2_EN_YES = 1,
ULP_THOR2_SYM_ECV_VTAG_TYPE_NOP = 0,
@@ -2056,6 +2244,8 @@ enum ulp_thor2_sym {
ULP_THOR2_SYM_ECV_TUN_TYPE_NGE = 3,
ULP_THOR2_SYM_ECV_TUN_TYPE_NVGRE = 4,
ULP_THOR2_SYM_ECV_TUN_TYPE_GRE = 5,
+ ULP_THOR2_SYM_ECV_TUN_TYPE_GA_L4 = 6,
+ ULP_THOR2_SYM_ECV_TUN_TYPE_GA_TUN = 7,
ULP_THOR2_SYM_EEM_ACT_REC_INT = 0,
ULP_THOR2_SYM_EEM_EXT_FLOW_CNTR = 0,
ULP_THOR2_SYM_UC_ACT_REC = 0,
@@ -2096,6 +2286,7 @@ enum ulp_thor2_sym {
ULP_THOR2_SYM_DPORT_TUN_TYPE_ECPRI = 4,
ULP_THOR2_SYM_DPORT_TUN_TYPE_SRV6 = 5,
ULP_THOR2_SYM_DPORT_TUN_TYPE_VXLAN_IPV4 = 6,
+ ULP_THOR2_SYM_TUN_TYPE_DYN_UPAR = 0x12,
ULP_THOR2_SYM_L3_ECPRI_HDR_SIZE = 0,
ULP_THOR2_SYM_L3_ECPRI_HDR_OFFS = 0,
ULP_THOR2_SYM_L3_ECPRI_PAT = 0,
@@ -2114,7 +2305,31 @@ enum ulp_thor2_sym {
ULP_THOR2_SYM_T_ECPRI_ID_MASK = 0,
ULP_THOR2_SYM_T_ECPRI_CONTEXT_SIZE = 0,
ULP_THOR2_SYM_T_ECPRI_CONTEXT_OFFS = 0,
- ULP_THOR2_SYM_T_ECPRI_CONTEXT_MASK = 0
+ ULP_THOR2_SYM_T_ECPRI_CONTEXT_MASK = 0,
+ ULP_THOR2_SYM_SRV6_IP_PROTO_IPV6_ROUTE = 0x2b,
+ ULP_THOR2_SYM_SRV6_IPV6_ENCAP = 0x2900,
+ ULP_THOR2_SYM_SRV6_HDR_SIZE = 4,
+ ULP_THOR2_SYM_SRV6_HDR_OFFSET = 0,
+ ULP_THOR2_SYM_SRV6_V6_ENCAP = 3,
+ ULP_THOR2_SYM_SRV6_NXT_HDR_EXT_LEN = 0x2900,
+ ULP_THOR2_SYM_SRV6_8BYTE_UNIT = 3,
+ ULP_THOR2_SYM_SRV6_8BIT_FLD = 8,
+ ULP_THOR2_SYM_SRV6_HDR_LEN_OFFSET = 1,
+ ULP_THOR2_SYM_SRV6_ID_EXTRACTION_LENGTH = 32,
+ ULP_THOR2_SYM_SRV6_ID_EXTRACTION_OFFSET = 3,
+ ULP_THOR2_SYM_SRV6_PATTERN = 2,
+ ULP_THOR2_SYM_SRV6_ID_MASK = 0xff00ffff,
+ ULP_THOR2_SYM_SRV6_CTXT_EXTRACTION_LENGTH = 32,
+ ULP_THOR2_SYM_SRV6_CTXT_EXTRACTION_OFFSET = 7,
+ ULP_THOR2_SYM_SRV6_CTXT_MASK = 0xffffffff,
+ ULP_THOR2_SYM_GLB_ID_L2_CNTXT_ID = 0,
+ ULP_THOR2_SYM_GLB_ID_PROF_FUNC_ID = 1,
+ ULP_THOR2_SYM_GLB_ID_WC_PROFILE_ID = 2,
+ ULP_THOR2_SYM_GLB_ID_EM_PROFILE_ID = 3,
+ ULP_THOR2_SYM_GLB_APP_IDX_TBL_ID = 0,
+ ULP_THOR2_SYM_GLB_IDX_META_REC_ACT = 4,
+ ULP_THOR2_SYM_GLB_IDX_META_REC_PROF = 5,
+ ULP_THOR2_SYM_GLB_IDX_META_REC_LKUP = 6
};
#endif
diff --git a/drivers/net/bnxt/tf_ulp/ulp_template_struct.h b/drivers/net/bnxt/tf_ulp/ulp_template_struct.h
index fbce97269b..5b3e82f336 100644
--- a/drivers/net/bnxt/tf_ulp/ulp_template_struct.h
+++ b/drivers/net/bnxt/tf_ulp/ulp_template_struct.h
@@ -34,6 +34,9 @@
#define BNXT_ULP_PROTO_HDR_GRE_NUM 2
#define BNXT_ULP_PROTO_HDR_ICMP_NUM 5
#define BNXT_ULP_PROTO_HDR_ECPRI_NUM 2
+#define BNXT_ULP_PROTO_HDR_IPV6_EXT_NUM 1
+#define BNXT_ULP_PROTO_HDR_SRV6_NUM 7
+#define BNXT_ULP_PROTO_HDR_MPLS_NUM 2
#define BNXT_ULP_PROTO_HDR_MAX 128
#define BNXT_ULP_PROTO_HDR_ENCAP_MAX 64
#define BNXT_ULP_PROTO_HDR_FIELD_SVIF_IDX 1
--
2.39.5 (Apple Git-154)
More information about the dev
mailing list