net/bnxt: support EM with FKB
[dpdk.git] / drivers / net / bnxt / tf_core / hwrm_tf.h
index 59185da..a707cd2 100644 (file)
@@ -1,5 +1,5 @@
 /* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2019-2020 Broadcom
+ * Copyright(c) 2019-2021 Broadcom
  * All rights reserved.
  */
 #ifndef _HWRM_TF_H_
@@ -13,22 +13,12 @@ typedef enum tf_type {
 } tf_type_t;
 
 typedef enum tf_subtype {
-       HWRM_TFT_SESSION_ATTACH = 712,
-       HWRM_TFT_SESSION_HW_RESC_QCAPS = 721,
-       HWRM_TFT_SESSION_HW_RESC_ALLOC = 722,
-       HWRM_TFT_SESSION_HW_RESC_FREE = 723,
-       HWRM_TFT_SESSION_HW_RESC_FLUSH = 724,
-       HWRM_TFT_SESSION_SRAM_RESC_QCAPS = 725,
-       HWRM_TFT_SESSION_SRAM_RESC_ALLOC = 726,
-       HWRM_TFT_SESSION_SRAM_RESC_FREE = 727,
-       HWRM_TFT_SESSION_SRAM_RESC_FLUSH = 728,
-       HWRM_TFT_TBL_SCOPE_CFG = 731,
-       HWRM_TFT_REG_GET = 821,
-       HWRM_TFT_REG_SET = 822,
-       HWRM_TFT_TBL_TYPE_SET = 823,
-       HWRM_TFT_TBL_TYPE_GET = 824,
+       HWRM_TFT_GET_GLOBAL_CFG = 821,
+       HWRM_TFT_SET_GLOBAL_CFG = 822,
        HWRM_TFT_TBL_TYPE_BULK_GET = 825,
-       TF_SUBTYPE_LAST = HWRM_TFT_TBL_TYPE_BULK_GET,
+       HWRM_TFT_IF_TBL_SET = 827,
+       HWRM_TFT_IF_TBL_GET = 828,
+       TF_SUBTYPE_LAST = HWRM_TFT_IF_TBL_GET,
 } tf_subtype_t;
 
 /* Request and Response compile time checking */
@@ -58,7 +48,17 @@ typedef enum tf_subtype {
 /* WC DMA Address Type */
 #define TF_DEV_DATA_TYPE_TF_WC_DMA_ADDR                        0x30d0UL
 /* WC Entry */
-#define TF_DEV_DATA_TYPE_TF_WC_ENTRY                   0x30d1UL
+#define TF_DEV_DATA_TYPE_TF_WC_ENTRY                           0x30d1UL
+/* SPIF DFLT L2 CTXT Entry */
+#define TF_DEV_DATA_TYPE_SPIF_DFLT_L2_CTXT               0x3131UL
+/* PARIF DFLT ACT REC PTR Entry */
+#define TF_DEV_DATA_TYPE_PARIF_DFLT_ACT_REC            0x3132UL
+/* PARIF ERR DFLT ACT REC PTR Entry */
+#define TF_DEV_DATA_TYPE_PARIF_ERR_DFLT_ACT_REC         0x3133UL
+/* ILT Entry */
+#define TF_DEV_DATA_TYPE_ILT                           0x3134UL
+/* VNIC SVIF entry */
+#define TF_DEV_DATA_TYPE_VNIC_SVIF                     0x3135UL
 /* Action Data */
 #define TF_DEV_DATA_TYPE_TF_ACTION_DATA                        0x3170UL
 #define TF_DEV_DATA_TYPE_LAST   TF_DEV_DATA_TYPE_TF_ACTION_DATA
@@ -66,865 +66,66 @@ typedef enum tf_subtype {
 #define TF_BITS2BYTES(x) (((x) + 7) >> 3)
 #define TF_BITS2BYTES_WORD_ALIGN(x) ((((x) + 31) >> 5) * 4)
 
-struct tf_session_attach_input;
-struct tf_session_hw_resc_qcaps_input;
-struct tf_session_hw_resc_qcaps_output;
-struct tf_session_hw_resc_alloc_input;
-struct tf_session_hw_resc_alloc_output;
-struct tf_session_hw_resc_free_input;
-struct tf_session_hw_resc_flush_input;
-struct tf_session_sram_resc_qcaps_input;
-struct tf_session_sram_resc_qcaps_output;
-struct tf_session_sram_resc_alloc_input;
-struct tf_session_sram_resc_alloc_output;
-struct tf_session_sram_resc_free_input;
-struct tf_session_sram_resc_flush_input;
-struct tf_tbl_type_set_input;
-struct tf_tbl_type_get_input;
-struct tf_tbl_type_get_output;
+struct tf_set_global_cfg_input;
+struct tf_get_global_cfg_input;
+struct tf_get_global_cfg_output;
 struct tf_tbl_type_bulk_get_input;
 struct tf_tbl_type_bulk_get_output;
-/* Input params for session attach */
-typedef struct tf_session_attach_input {
-       /* Firmware session id returned when HWRM_TF_SESSION_OPEN is sent */
-       uint32_t                         fw_session_id;
-       /* Session Name */
-       char                             session_name[TF_SESSION_NAME_MAX];
-} tf_session_attach_input_t, *ptf_session_attach_input_t;
-
-/* Input params for session resource HW qcaps */
-typedef struct tf_session_hw_resc_qcaps_input {
-       /* Firmware session id returned when HWRM_TF_SESSION_OPEN is sent */
-       uint32_t                         fw_session_id;
-       /* flags */
-       uint16_t                         flags;
-       /* When set to 0, indicates the query apply to RX */
-#define TF_SESSION_HW_RESC_QCAPS_INPUT_FLAGS_DIR_RX      (0x0)
-       /* When set to 1, indicates the query apply to TX */
-#define TF_SESSION_HW_RESC_QCAPS_INPUT_FLAGS_DIR_TX      (0x1)
-} tf_session_hw_resc_qcaps_input_t, *ptf_session_hw_resc_qcaps_input_t;
-
-/* Output params for session resource HW qcaps */
-typedef struct tf_session_hw_resc_qcaps_output {
-       /* Control Flags */
-       uint32_t                         flags;
-       /* When set to 0, indicates Static partitioning */
-#define TF_SESSION_HW_RESC_QCAPS_OUTPUT_FLAGS_SESS_RES_STRATEGY_STATIC   (0x0)
-       /* When set to 1, indicates Strategy 1 */
-#define TF_SESSION_HW_RESC_QCAPS_OUTPUT_FLAGS_SESS_RES_STRATEGY_1        (0x1)
-       /* When set to 1, indicates Strategy 2 */
-#define TF_SESSION_HW_RESC_QCAPS_OUTPUT_FLAGS_SESS_RES_STRATEGY_2        (0x2)
-       /* When set to 1, indicates Strategy 3 */
-#define TF_SESSION_HW_RESC_QCAPS_OUTPUT_FLAGS_SESS_RES_STRATEGY_3        (0x3)
-       /* Unused */
-       uint8_t                   unused[4];
-       /* Minimum guaranteed number of L2 Ctx */
-       uint16_t                         l2_ctx_tcam_entries_min;
-       /* Maximum non-guaranteed number of L2 Ctx */
-       uint16_t                         l2_ctx_tcam_entries_max;
-       /* Minimum guaranteed number of profile functions */
-       uint16_t                         prof_func_min;
-       /* Maximum non-guaranteed number of profile functions */
-       uint16_t                         prof_func_max;
-       /* Minimum guaranteed number of profile TCAM entries */
-       uint16_t                         prof_tcam_entries_min;
-       /* Maximum non-guaranteed number of profile TCAM entries */
-       uint16_t                         prof_tcam_entries_max;
-       /* Minimum guaranteed number of EM profile ID */
-       uint16_t                         em_prof_id_min;
-       /* Maximum non-guaranteed number of EM profile ID */
-       uint16_t                         em_prof_id_max;
-       /* Minimum guaranteed number of EM records entries */
-       uint16_t                         em_record_entries_min;
-       /* Maximum non-guaranteed number of EM record entries */
-       uint16_t                         em_record_entries_max;
-       /* Minimum guaranteed number of WC TCAM profile ID */
-       uint16_t                         wc_tcam_prof_id_min;
-       /* Maximum non-guaranteed number of WC TCAM profile ID */
-       uint16_t                         wc_tcam_prof_id_max;
-       /* Minimum guaranteed number of WC TCAM entries */
-       uint16_t                         wc_tcam_entries_min;
-       /* Maximum non-guaranteed number of WC TCAM entries */
-       uint16_t                         wc_tcam_entries_max;
-       /* Minimum guaranteed number of meter profiles */
-       uint16_t                         meter_profiles_min;
-       /* Maximum non-guaranteed number of meter profiles */
-       uint16_t                         meter_profiles_max;
-       /* Minimum guaranteed number of meter instances */
-       uint16_t                         meter_inst_min;
-       /* Maximum non-guaranteed number of meter instances */
-       uint16_t                         meter_inst_max;
-       /* Minimum guaranteed number of mirrors */
-       uint16_t                         mirrors_min;
-       /* Maximum non-guaranteed number of mirrors */
-       uint16_t                         mirrors_max;
-       /* Minimum guaranteed number of UPAR */
-       uint16_t                         upar_min;
-       /* Maximum non-guaranteed number of UPAR */
-       uint16_t                         upar_max;
-       /* Minimum guaranteed number of SP TCAM entries */
-       uint16_t                         sp_tcam_entries_min;
-       /* Maximum non-guaranteed number of SP TCAM entries */
-       uint16_t                         sp_tcam_entries_max;
-       /* Minimum guaranteed number of L2 Functions */
-       uint16_t                         l2_func_min;
-       /* Maximum non-guaranteed number of L2 Functions */
-       uint16_t                         l2_func_max;
-       /* Minimum guaranteed number of flexible key templates */
-       uint16_t                         flex_key_templ_min;
-       /* Maximum non-guaranteed number of flexible key templates */
-       uint16_t                         flex_key_templ_max;
-       /* Minimum guaranteed number of table Scopes */
-       uint16_t                         tbl_scope_min;
-       /* Maximum non-guaranteed number of table Scopes */
-       uint16_t                         tbl_scope_max;
-       /* Minimum guaranteed number of epoch0 entries */
-       uint16_t                         epoch0_entries_min;
-       /* Maximum non-guaranteed number of epoch0 entries */
-       uint16_t                         epoch0_entries_max;
-       /* Minimum guaranteed number of epoch1 entries */
-       uint16_t                         epoch1_entries_min;
-       /* Maximum non-guaranteed number of epoch1 entries */
-       uint16_t                         epoch1_entries_max;
-       /* Minimum guaranteed number of metadata */
-       uint16_t                         metadata_min;
-       /* Maximum non-guaranteed number of metadata */
-       uint16_t                         metadata_max;
-       /* Minimum guaranteed number of CT states */
-       uint16_t                         ct_state_min;
-       /* Maximum non-guaranteed number of CT states */
-       uint16_t                         ct_state_max;
-       /* Minimum guaranteed number of range profiles */
-       uint16_t                         range_prof_min;
-       /* Maximum non-guaranteed number range profiles */
-       uint16_t                         range_prof_max;
-       /* Minimum guaranteed number of range entries */
-       uint16_t                         range_entries_min;
-       /* Maximum non-guaranteed number of range entries */
-       uint16_t                         range_entries_max;
-       /* Minimum guaranteed number of LAG table entries */
-       uint16_t                         lag_tbl_entries_min;
-       /* Maximum non-guaranteed number of LAG table entries */
-       uint16_t                         lag_tbl_entries_max;
-} tf_session_hw_resc_qcaps_output_t, *ptf_session_hw_resc_qcaps_output_t;
-
-/* Input params for session resource HW alloc */
-typedef struct tf_session_hw_resc_alloc_input {
-       /* Firmware session id returned when HWRM_TF_SESSION_OPEN is sent */
-       uint32_t                         fw_session_id;
-       /* flags */
-       uint16_t                         flags;
-       /* When set to 0, indicates the query apply to RX */
-#define TF_SESSION_HW_RESC_ALLOC_INPUT_FLAGS_DIR_RX      (0x0)
-       /* When set to 1, indicates the query apply to TX */
-#define TF_SESSION_HW_RESC_ALLOC_INPUT_FLAGS_DIR_TX      (0x1)
-       /* Unused */
-       uint8_t                   unused[2];
-       /* Number of L2 CTX TCAM entries to be allocated */
-       uint16_t                         num_l2_ctx_tcam_entries;
-       /* Number of profile functions to be allocated */
-       uint16_t                         num_prof_func_entries;
-       /* Number of profile TCAM entries to be allocated */
-       uint16_t                         num_prof_tcam_entries;
-       /* Number of EM profile ids to be allocated */
-       uint16_t                         num_em_prof_id;
-       /* Number of EM records entries to be allocated */
-       uint16_t                         num_em_record_entries;
-       /* Number of WC profiles ids to be allocated */
-       uint16_t                         num_wc_tcam_prof_id;
-       /* Number of WC TCAM entries to be allocated */
-       uint16_t                         num_wc_tcam_entries;
-       /* Number of meter profiles to be allocated */
-       uint16_t                         num_meter_profiles;
-       /* Number of meter instances to be allocated */
-       uint16_t                         num_meter_inst;
-       /* Number of mirrors to be allocated */
-       uint16_t                         num_mirrors;
-       /* Number of UPAR to be allocated */
-       uint16_t                         num_upar;
-       /* Number of SP TCAM entries to be allocated */
-       uint16_t                         num_sp_tcam_entries;
-       /* Number of L2 functions to be allocated */
-       uint16_t                         num_l2_func;
-       /* Number of flexible key templates to be allocated */
-       uint16_t                         num_flex_key_templ;
-       /* Number of table scopes to be allocated */
-       uint16_t                         num_tbl_scope;
-       /* Number of epoch0 entries to be allocated */
-       uint16_t                         num_epoch0_entries;
-       /* Number of epoch1 entries to be allocated */
-       uint16_t                         num_epoch1_entries;
-       /* Number of metadata to be allocated */
-       uint16_t                         num_metadata;
-       /* Number of CT states to be allocated */
-       uint16_t                         num_ct_state;
-       /* Number of range profiles to be allocated */
-       uint16_t                         num_range_prof;
-       /* Number of range Entries to be allocated */
-       uint16_t                         num_range_entries;
-       /* Number of LAG table entries to be allocated */
-       uint16_t                         num_lag_tbl_entries;
-} tf_session_hw_resc_alloc_input_t, *ptf_session_hw_resc_alloc_input_t;
-
-/* Output params for session resource HW alloc */
-typedef struct tf_session_hw_resc_alloc_output {
-       /* Starting index of L2 CTX TCAM entries allocated to the session */
-       uint16_t                         l2_ctx_tcam_entries_start;
-       /* Number of L2 CTX TCAM entries allocated */
-       uint16_t                         l2_ctx_tcam_entries_stride;
-       /* Starting index of profile functions allocated to the session */
-       uint16_t                         prof_func_start;
-       /* Number of profile functions allocated */
-       uint16_t                         prof_func_stride;
-       /* Starting index of profile TCAM entries allocated to the session */
-       uint16_t                         prof_tcam_entries_start;
-       /* Number of profile TCAM entries allocated */
-       uint16_t                         prof_tcam_entries_stride;
-       /* Starting index of EM profile ids allocated to the session */
-       uint16_t                         em_prof_id_start;
-       /* Number of EM profile ids allocated */
-       uint16_t                         em_prof_id_stride;
-       /* Starting index of EM record entries allocated to the session */
-       uint16_t                         em_record_entries_start;
-       /* Number of EM record entries allocated */
-       uint16_t                         em_record_entries_stride;
-       /* Starting index of WC TCAM profiles ids allocated to the session */
-       uint16_t                         wc_tcam_prof_id_start;
-       /* Number of WC TCAM profile ids allocated */
-       uint16_t                         wc_tcam_prof_id_stride;
-       /* Starting index of WC TCAM entries allocated to the session */
-       uint16_t                         wc_tcam_entries_start;
-       /* Number of WC TCAM allocated */
-       uint16_t                         wc_tcam_entries_stride;
-       /* Starting index of meter profiles allocated to the session */
-       uint16_t                         meter_profiles_start;
-       /* Number of meter profiles allocated */
-       uint16_t                         meter_profiles_stride;
-       /* Starting index of meter instance allocated to the session */
-       uint16_t                         meter_inst_start;
-       /* Number of meter instance allocated */
-       uint16_t                         meter_inst_stride;
-       /* Starting index of mirrors allocated to the session */
-       uint16_t                         mirrors_start;
-       /* Number of mirrors allocated */
-       uint16_t                         mirrors_stride;
-       /* Starting index of UPAR allocated to the session */
-       uint16_t                         upar_start;
-       /* Number of UPAR allocated */
-       uint16_t                         upar_stride;
-       /* Starting index of SP TCAM entries allocated to the session */
-       uint16_t                         sp_tcam_entries_start;
-       /* Number of SP TCAM entries allocated */
-       uint16_t                         sp_tcam_entries_stride;
-       /* Starting index of L2 functions allocated to the session */
-       uint16_t                         l2_func_start;
-       /* Number of L2 functions allocated */
-       uint16_t                         l2_func_stride;
-       /* Starting index of flexible key templates allocated to the session */
-       uint16_t                         flex_key_templ_start;
-       /* Number of flexible key templates allocated */
-       uint16_t                         flex_key_templ_stride;
-       /* Starting index of table scopes allocated to the session */
-       uint16_t                         tbl_scope_start;
-       /* Number of table scopes allocated */
-       uint16_t                         tbl_scope_stride;
-       /* Starting index of epoch0 entries allocated to the session */
-       uint16_t                         epoch0_entries_start;
-       /* Number of epoch0 entries allocated */
-       uint16_t                         epoch0_entries_stride;
-       /* Starting index of epoch1 entries allocated to the session */
-       uint16_t                         epoch1_entries_start;
-       /* Number of epoch1 entries allocated */
-       uint16_t                         epoch1_entries_stride;
-       /* Starting index of metadata allocated to the session */
-       uint16_t                         metadata_start;
-       /* Number of metadata allocated */
-       uint16_t                         metadata_stride;
-       /* Starting index of CT states allocated to the session */
-       uint16_t                         ct_state_start;
-       /* Number of CT states allocated */
-       uint16_t                         ct_state_stride;
-       /* Starting index of range profiles allocated to the session */
-       uint16_t                         range_prof_start;
-       /* Number range profiles allocated */
-       uint16_t                         range_prof_stride;
-       /* Starting index of range entries allocated to the session */
-       uint16_t                         range_entries_start;
-       /* Number of range entries allocated */
-       uint16_t                         range_entries_stride;
-       /* Starting index of LAG table entries allocated to the session */
-       uint16_t                         lag_tbl_entries_start;
-       /* Number of LAG table entries allocated */
-       uint16_t                         lag_tbl_entries_stride;
-} tf_session_hw_resc_alloc_output_t, *ptf_session_hw_resc_alloc_output_t;
-
-/* Input params for session resource HW free */
-typedef struct tf_session_hw_resc_free_input {
-       /* Firmware session id returned when HWRM_TF_SESSION_OPEN is sent */
-       uint32_t                         fw_session_id;
-       /* flags */
-       uint16_t                         flags;
-       /* When set to 0, indicates the query apply to RX */
-#define TF_SESSION_HW_RESC_FREE_INPUT_FLAGS_DIR_RX       (0x0)
-       /* When set to 1, indicates the query apply to TX */
-#define TF_SESSION_HW_RESC_FREE_INPUT_FLAGS_DIR_TX       (0x1)
-       /* Unused */
-       uint8_t                   unused[2];
-       /* Starting index of L2 CTX TCAM entries allocated to the session */
-       uint16_t                         l2_ctx_tcam_entries_start;
-       /* Number of L2 CTX TCAM entries allocated */
-       uint16_t                         l2_ctx_tcam_entries_stride;
-       /* Starting index of profile functions allocated to the session */
-       uint16_t                         prof_func_start;
-       /* Number of profile functions allocated */
-       uint16_t                         prof_func_stride;
-       /* Starting index of profile TCAM entries allocated to the session */
-       uint16_t                         prof_tcam_entries_start;
-       /* Number of profile TCAM entries allocated */
-       uint16_t                         prof_tcam_entries_stride;
-       /* Starting index of EM profile ids allocated to the session */
-       uint16_t                         em_prof_id_start;
-       /* Number of EM profile ids allocated */
-       uint16_t                         em_prof_id_stride;
-       /* Starting index of EM record entries allocated to the session */
-       uint16_t                         em_record_entries_start;
-       /* Number of EM record entries allocated */
-       uint16_t                         em_record_entries_stride;
-       /* Starting index of WC TCAM profiles ids allocated to the session */
-       uint16_t                         wc_tcam_prof_id_start;
-       /* Number of WC TCAM profile ids allocated */
-       uint16_t                         wc_tcam_prof_id_stride;
-       /* Starting index of WC TCAM entries allocated to the session */
-       uint16_t                         wc_tcam_entries_start;
-       /* Number of WC TCAM allocated */
-       uint16_t                         wc_tcam_entries_stride;
-       /* Starting index of meter profiles allocated to the session */
-       uint16_t                         meter_profiles_start;
-       /* Number of meter profiles allocated */
-       uint16_t                         meter_profiles_stride;
-       /* Starting index of meter instance allocated to the session */
-       uint16_t                         meter_inst_start;
-       /* Number of meter instance allocated */
-       uint16_t                         meter_inst_stride;
-       /* Starting index of mirrors allocated to the session */
-       uint16_t                         mirrors_start;
-       /* Number of mirrors allocated */
-       uint16_t                         mirrors_stride;
-       /* Starting index of UPAR allocated to the session */
-       uint16_t                         upar_start;
-       /* Number of UPAR allocated */
-       uint16_t                         upar_stride;
-       /* Starting index of SP TCAM entries allocated to the session */
-       uint16_t                         sp_tcam_entries_start;
-       /* Number of SP TCAM entries allocated */
-       uint16_t                         sp_tcam_entries_stride;
-       /* Starting index of L2 functions allocated to the session */
-       uint16_t                         l2_func_start;
-       /* Number of L2 functions allocated */
-       uint16_t                         l2_func_stride;
-       /* Starting index of flexible key templates allocated to the session */
-       uint16_t                         flex_key_templ_start;
-       /* Number of flexible key templates allocated */
-       uint16_t                         flex_key_templ_stride;
-       /* Starting index of table scopes allocated to the session */
-       uint16_t                         tbl_scope_start;
-       /* Number of table scopes allocated */
-       uint16_t                         tbl_scope_stride;
-       /* Starting index of epoch0 entries allocated to the session */
-       uint16_t                         epoch0_entries_start;
-       /* Number of epoch0 entries allocated */
-       uint16_t                         epoch0_entries_stride;
-       /* Starting index of epoch1 entries allocated to the session */
-       uint16_t                         epoch1_entries_start;
-       /* Number of epoch1 entries allocated */
-       uint16_t                         epoch1_entries_stride;
-       /* Starting index of metadata allocated to the session */
-       uint16_t                         metadata_start;
-       /* Number of metadata allocated */
-       uint16_t                         metadata_stride;
-       /* Starting index of CT states allocated to the session */
-       uint16_t                         ct_state_start;
-       /* Number of CT states allocated */
-       uint16_t                         ct_state_stride;
-       /* Starting index of range profiles allocated to the session */
-       uint16_t                         range_prof_start;
-       /* Number range profiles allocated */
-       uint16_t                         range_prof_stride;
-       /* Starting index of range entries allocated to the session */
-       uint16_t                         range_entries_start;
-       /* Number of range entries allocated */
-       uint16_t                         range_entries_stride;
-       /* Starting index of LAG table entries allocated to the session */
-       uint16_t                         lag_tbl_entries_start;
-       /* Number of LAG table entries allocated */
-       uint16_t                         lag_tbl_entries_stride;
-} tf_session_hw_resc_free_input_t, *ptf_session_hw_resc_free_input_t;
-
-/* Input params for session resource HW flush */
-typedef struct tf_session_hw_resc_flush_input {
-       /* Firmware session id returned when HWRM_TF_SESSION_OPEN is sent */
-       uint32_t                         fw_session_id;
-       /* flags */
-       uint16_t                         flags;
-       /* When set to 0, indicates the flush apply to RX */
-#define TF_SESSION_HW_RESC_FLUSH_INPUT_FLAGS_DIR_RX      (0x0)
-       /* When set to 1, indicates the flush apply to TX */
-#define TF_SESSION_HW_RESC_FLUSH_INPUT_FLAGS_DIR_TX      (0x1)
-       /* Unused */
-       uint8_t                   unused[2];
-       /* Starting index of L2 CTX TCAM entries allocated to the session */
-       uint16_t                         l2_ctx_tcam_entries_start;
-       /* Number of L2 CTX TCAM entries allocated */
-       uint16_t                         l2_ctx_tcam_entries_stride;
-       /* Starting index of profile functions allocated to the session */
-       uint16_t                         prof_func_start;
-       /* Number of profile functions allocated */
-       uint16_t                         prof_func_stride;
-       /* Starting index of profile TCAM entries allocated to the session */
-       uint16_t                         prof_tcam_entries_start;
-       /* Number of profile TCAM entries allocated */
-       uint16_t                         prof_tcam_entries_stride;
-       /* Starting index of EM profile ids allocated to the session */
-       uint16_t                         em_prof_id_start;
-       /* Number of EM profile ids allocated */
-       uint16_t                         em_prof_id_stride;
-       /* Starting index of EM record entries allocated to the session */
-       uint16_t                         em_record_entries_start;
-       /* Number of EM record entries allocated */
-       uint16_t                         em_record_entries_stride;
-       /* Starting index of WC TCAM profiles ids allocated to the session */
-       uint16_t                         wc_tcam_prof_id_start;
-       /* Number of WC TCAM profile ids allocated */
-       uint16_t                         wc_tcam_prof_id_stride;
-       /* Starting index of WC TCAM entries allocated to the session */
-       uint16_t                         wc_tcam_entries_start;
-       /* Number of WC TCAM allocated */
-       uint16_t                         wc_tcam_entries_stride;
-       /* Starting index of meter profiles allocated to the session */
-       uint16_t                         meter_profiles_start;
-       /* Number of meter profiles allocated */
-       uint16_t                         meter_profiles_stride;
-       /* Starting index of meter instance allocated to the session */
-       uint16_t                         meter_inst_start;
-       /* Number of meter instance allocated */
-       uint16_t                         meter_inst_stride;
-       /* Starting index of mirrors allocated to the session */
-       uint16_t                         mirrors_start;
-       /* Number of mirrors allocated */
-       uint16_t                         mirrors_stride;
-       /* Starting index of UPAR allocated to the session */
-       uint16_t                         upar_start;
-       /* Number of UPAR allocated */
-       uint16_t                         upar_stride;
-       /* Starting index of SP TCAM entries allocated to the session */
-       uint16_t                         sp_tcam_entries_start;
-       /* Number of SP TCAM entries allocated */
-       uint16_t                         sp_tcam_entries_stride;
-       /* Starting index of L2 functions allocated to the session */
-       uint16_t                         l2_func_start;
-       /* Number of L2 functions allocated */
-       uint16_t                         l2_func_stride;
-       /* Starting index of flexible key templates allocated to the session */
-       uint16_t                         flex_key_templ_start;
-       /* Number of flexible key templates allocated */
-       uint16_t                         flex_key_templ_stride;
-       /* Starting index of table scopes allocated to the session */
-       uint16_t                         tbl_scope_start;
-       /* Number of table scopes allocated */
-       uint16_t                         tbl_scope_stride;
-       /* Starting index of epoch0 entries allocated to the session */
-       uint16_t                         epoch0_entries_start;
-       /* Number of epoch0 entries allocated */
-       uint16_t                         epoch0_entries_stride;
-       /* Starting index of epoch1 entries allocated to the session */
-       uint16_t                         epoch1_entries_start;
-       /* Number of epoch1 entries allocated */
-       uint16_t                         epoch1_entries_stride;
-       /* Starting index of metadata allocated to the session */
-       uint16_t                         metadata_start;
-       /* Number of metadata allocated */
-       uint16_t                         metadata_stride;
-       /* Starting index of CT states allocated to the session */
-       uint16_t                         ct_state_start;
-       /* Number of CT states allocated */
-       uint16_t                         ct_state_stride;
-       /* Starting index of range profiles allocated to the session */
-       uint16_t                         range_prof_start;
-       /* Number range profiles allocated */
-       uint16_t                         range_prof_stride;
-       /* Starting index of range entries allocated to the session */
-       uint16_t                         range_entries_start;
-       /* Number of range entries allocated */
-       uint16_t                         range_entries_stride;
-       /* Starting index of LAG table entries allocated to the session */
-       uint16_t                         lag_tbl_entries_start;
-       /* Number of LAG table entries allocated */
-       uint16_t                         lag_tbl_entries_stride;
-} tf_session_hw_resc_flush_input_t, *ptf_session_hw_resc_flush_input_t;
-
-/* Input params for session resource SRAM qcaps */
-typedef struct tf_session_sram_resc_qcaps_input {
-       /* Firmware session id returned when HWRM_TF_SESSION_OPEN is sent */
+struct tf_if_tbl_set_input;
+struct tf_if_tbl_get_input;
+struct tf_if_tbl_get_output;
+/* Input params for global config set */
+typedef struct tf_set_global_cfg_input {
+       /* Session Id */
        uint32_t                         fw_session_id;
        /* flags */
-       uint16_t                         flags;
-       /* When set to 0, indicates the query apply to RX */
-#define TF_SESSION_SRAM_RESC_QCAPS_INPUT_FLAGS_DIR_RX    (0x0)
-       /* When set to 1, indicates the query apply to TX */
-#define TF_SESSION_SRAM_RESC_QCAPS_INPUT_FLAGS_DIR_TX    (0x1)
-} tf_session_sram_resc_qcaps_input_t, *ptf_session_sram_resc_qcaps_input_t;
-
-/* Output params for session resource SRAM qcaps */
-typedef struct tf_session_sram_resc_qcaps_output {
-       /* Flags */
        uint32_t                         flags;
-       /* When set to 0, indicates Static partitioning */
-#define TF_SESSION_SRAM_RESC_QCAPS_OUTPUT_FLAGS_SESS_RES_STRATEGY_STATIC         (0x0)
-       /* When set to 1, indicates Strategy 1 */
-#define TF_SESSION_SRAM_RESC_QCAPS_OUTPUT_FLAGS_SESS_RES_STRATEGY_1      (0x1)
-       /* When set to 1, indicates Strategy 2 */
-#define TF_SESSION_SRAM_RESC_QCAPS_OUTPUT_FLAGS_SESS_RES_STRATEGY_2      (0x2)
-       /* When set to 1, indicates Strategy 3 */
-#define TF_SESSION_SRAM_RESC_QCAPS_OUTPUT_FLAGS_SESS_RES_STRATEGY_3      (0x3)
-       /* Minimum guaranteed number of Full Action */
-       uint16_t                         full_action_min;
-       /* Maximum non-guaranteed number of Full Action */
-       uint16_t                         full_action_max;
-       /* Minimum guaranteed number of MCG */
-       uint16_t                         mcg_min;
-       /* Maximum non-guaranteed number of MCG */
-       uint16_t                         mcg_max;
-       /* Minimum guaranteed number of Encap 8B */
-       uint16_t                         encap_8b_min;
-       /* Maximum non-guaranteed number of Encap 8B */
-       uint16_t                         encap_8b_max;
-       /* Minimum guaranteed number of Encap 16B */
-       uint16_t                         encap_16b_min;
-       /* Maximum non-guaranteed number of Encap 16B */
-       uint16_t                         encap_16b_max;
-       /* Minimum guaranteed number of Encap 64B */
-       uint16_t                         encap_64b_min;
-       /* Maximum non-guaranteed number of Encap 64B */
-       uint16_t                         encap_64b_max;
-       /* Minimum guaranteed number of SP SMAC */
-       uint16_t                         sp_smac_min;
-       /* Maximum non-guaranteed number of SP SMAC */
-       uint16_t                         sp_smac_max;
-       /* Minimum guaranteed number of SP SMAC IPv4 */
-       uint16_t                         sp_smac_ipv4_min;
-       /* Maximum non-guaranteed number of SP SMAC IPv4 */
-       uint16_t                         sp_smac_ipv4_max;
-       /* Minimum guaranteed number of SP SMAC IPv6 */
-       uint16_t                         sp_smac_ipv6_min;
-       /* Maximum non-guaranteed number of SP SMAC IPv6 */
-       uint16_t                         sp_smac_ipv6_max;
-       /* Minimum guaranteed number of Counter 64B */
-       uint16_t                         counter_64b_min;
-       /* Maximum non-guaranteed number of Counter 64B */
-       uint16_t                         counter_64b_max;
-       /* Minimum guaranteed number of NAT SPORT */
-       uint16_t                         nat_sport_min;
-       /* Maximum non-guaranteed number of NAT SPORT */
-       uint16_t                         nat_sport_max;
-       /* Minimum guaranteed number of NAT DPORT */
-       uint16_t                         nat_dport_min;
-       /* Maximum non-guaranteed number of NAT DPORT */
-       uint16_t                         nat_dport_max;
-       /* Minimum guaranteed number of NAT S_IPV4 */
-       uint16_t                         nat_s_ipv4_min;
-       /* Maximum non-guaranteed number of NAT S_IPV4 */
-       uint16_t                         nat_s_ipv4_max;
-       /* Minimum guaranteed number of NAT D_IPV4 */
-       uint16_t                         nat_d_ipv4_min;
-       /* Maximum non-guaranteed number of NAT D_IPV4 */
-       uint16_t                         nat_d_ipv4_max;
-} tf_session_sram_resc_qcaps_output_t, *ptf_session_sram_resc_qcaps_output_t;
-
-/* Input params for session resource SRAM alloc */
-typedef struct tf_session_sram_resc_alloc_input {
-       /* FW Session Id */
-       uint32_t                         fw_session_id;
-       /* flags */
-       uint16_t                         flags;
        /* When set to 0, indicates the query apply to RX */
-#define TF_SESSION_SRAM_RESC_ALLOC_INPUT_FLAGS_DIR_RX    (0x0)
+#define TF_SET_GLOBAL_CFG_INPUT_FLAGS_DIR_RX             (0x0)
        /* When set to 1, indicates the query apply to TX */
-#define TF_SESSION_SRAM_RESC_ALLOC_INPUT_FLAGS_DIR_TX    (0x1)
-       /* Unused */
-       uint8_t                   unused[2];
-       /* Number of full action SRAM entries to be allocated */
-       uint16_t                         num_full_action;
-       /* Number of multicast groups to be allocated */
-       uint16_t                         num_mcg;
-       /* Number of Encap 8B entries to be allocated */
-       uint16_t                         num_encap_8b;
-       /* Number of Encap 16B entries to be allocated */
-       uint16_t                         num_encap_16b;
-       /* Number of Encap 64B entries to be allocated */
-       uint16_t                         num_encap_64b;
-       /* Number of SP SMAC entries to be allocated */
-       uint16_t                         num_sp_smac;
-       /* Number of SP SMAC IPv4 entries to be allocated */
-       uint16_t                         num_sp_smac_ipv4;
-       /* Number of SP SMAC IPv6 entries to be allocated */
-       uint16_t                         num_sp_smac_ipv6;
-       /* Number of Counter 64B entries to be allocated */
-       uint16_t                         num_counter_64b;
-       /* Number of NAT source ports to be allocated */
-       uint16_t                         num_nat_sport;
-       /* Number of NAT destination ports to be allocated */
-       uint16_t                         num_nat_dport;
-       /* Number of NAT source iPV4 addresses to be allocated */
-       uint16_t                         num_nat_s_ipv4;
-       /* Number of NAT destination IPV4 addresses to be allocated */
-       uint16_t                         num_nat_d_ipv4;
-} tf_session_sram_resc_alloc_input_t, *ptf_session_sram_resc_alloc_input_t;
-
-/* Output params for session resource SRAM alloc */
-typedef struct tf_session_sram_resc_alloc_output {
-       /* Unused */
-       uint8_t                   unused[2];
-       /* Starting index of full action SRAM entries allocated to the session */
-       uint16_t                         full_action_start;
-       /* Number of full action SRAM entries allocated */
-       uint16_t                         full_action_stride;
-       /* Starting index of multicast groups allocated to this session */
-       uint16_t                         mcg_start;
-       /* Number of multicast groups allocated */
-       uint16_t                         mcg_stride;
-       /* Starting index of encap 8B entries allocated to the session */
-       uint16_t                         encap_8b_start;
-       /* Number of encap 8B entries allocated */
-       uint16_t                         encap_8b_stride;
-       /* Starting index of encap 16B entries allocated to the session */
-       uint16_t                         encap_16b_start;
-       /* Number of encap 16B entries allocated */
-       uint16_t                         encap_16b_stride;
-       /* Starting index of encap 64B entries allocated to the session */
-       uint16_t                         encap_64b_start;
-       /* Number of encap 64B entries allocated */
-       uint16_t                         encap_64b_stride;
-       /* Starting index of SP SMAC entries allocated to the session */
-       uint16_t                         sp_smac_start;
-       /* Number of SP SMAC entries allocated */
-       uint16_t                         sp_smac_stride;
-       /* Starting index of SP SMAC IPv4 entries allocated to the session */
-       uint16_t                         sp_smac_ipv4_start;
-       /* Number of SP SMAC IPv4 entries allocated */
-       uint16_t                         sp_smac_ipv4_stride;
-       /* Starting index of SP SMAC IPv6 entries allocated to the session */
-       uint16_t                         sp_smac_ipv6_start;
-       /* Number of SP SMAC IPv6 entries allocated */
-       uint16_t                         sp_smac_ipv6_stride;
-       /* Starting index of Counter 64B entries allocated to the session */
-       uint16_t                         counter_64b_start;
-       /* Number of Counter 64B entries allocated */
-       uint16_t                         counter_64b_stride;
-       /* Starting index of NAT source ports allocated to the session */
-       uint16_t                         nat_sport_start;
-       /* Number of NAT source ports allocated */
-       uint16_t                         nat_sport_stride;
-       /* Starting index of NAT destination ports allocated to the session */
-       uint16_t                         nat_dport_start;
-       /* Number of NAT destination ports allocated */
-       uint16_t                         nat_dport_stride;
-       /* Starting index of NAT source IPV4 addresses allocated to the session */
-       uint16_t                         nat_s_ipv4_start;
-       /* Number of NAT source IPV4 addresses allocated */
-       uint16_t                         nat_s_ipv4_stride;
-       /*
-        * Starting index of NAT destination IPV4 addresses allocated to the
-        * session
-        */
-       uint16_t                         nat_d_ipv4_start;
-       /* Number of NAT destination IPV4 addresses allocated */
-       uint16_t                         nat_d_ipv4_stride;
-} tf_session_sram_resc_alloc_output_t, *ptf_session_sram_resc_alloc_output_t;
-
-/* Input params for session resource SRAM free */
-typedef struct tf_session_sram_resc_free_input {
-       /* Firmware session id returned when HWRM_TF_SESSION_OPEN is sent */
-       uint32_t                         fw_session_id;
-       /* flags */
-       uint16_t                         flags;
-       /* When set to 0, indicates the query apply to RX */
-#define TF_SESSION_SRAM_RESC_FREE_INPUT_FLAGS_DIR_RX     (0x0)
-       /* When set to 1, indicates the query apply to TX */
-#define TF_SESSION_SRAM_RESC_FREE_INPUT_FLAGS_DIR_TX     (0x1)
-       /* Starting index of full action SRAM entries allocated to the session */
-       uint16_t                         full_action_start;
-       /* Number of full action SRAM entries allocated */
-       uint16_t                         full_action_stride;
-       /* Starting index of multicast groups allocated to this session */
-       uint16_t                         mcg_start;
-       /* Number of multicast groups allocated */
-       uint16_t                         mcg_stride;
-       /* Starting index of encap 8B entries allocated to the session */
-       uint16_t                         encap_8b_start;
-       /* Number of encap 8B entries allocated */
-       uint16_t                         encap_8b_stride;
-       /* Starting index of encap 16B entries allocated to the session */
-       uint16_t                         encap_16b_start;
-       /* Number of encap 16B entries allocated */
-       uint16_t                         encap_16b_stride;
-       /* Starting index of encap 64B entries allocated to the session */
-       uint16_t                         encap_64b_start;
-       /* Number of encap 64B entries allocated */
-       uint16_t                         encap_64b_stride;
-       /* Starting index of SP SMAC entries allocated to the session */
-       uint16_t                         sp_smac_start;
-       /* Number of SP SMAC entries allocated */
-       uint16_t                         sp_smac_stride;
-       /* Starting index of SP SMAC IPv4 entries allocated to the session */
-       uint16_t                         sp_smac_ipv4_start;
-       /* Number of SP SMAC IPv4 entries allocated */
-       uint16_t                         sp_smac_ipv4_stride;
-       /* Starting index of SP SMAC IPv6 entries allocated to the session */
-       uint16_t                         sp_smac_ipv6_start;
-       /* Number of SP SMAC IPv6 entries allocated */
-       uint16_t                         sp_smac_ipv6_stride;
-       /* Starting index of Counter 64B entries allocated to the session */
-       uint16_t                         counter_64b_start;
-       /* Number of Counter 64B entries allocated */
-       uint16_t                         counter_64b_stride;
-       /* Starting index of NAT source ports allocated to the session */
-       uint16_t                         nat_sport_start;
-       /* Number of NAT source ports allocated */
-       uint16_t                         nat_sport_stride;
-       /* Starting index of NAT destination ports allocated to the session */
-       uint16_t                         nat_dport_start;
-       /* Number of NAT destination ports allocated */
-       uint16_t                         nat_dport_stride;
-       /* Starting index of NAT source IPV4 addresses allocated to the session */
-       uint16_t                         nat_s_ipv4_start;
-       /* Number of NAT source IPV4 addresses allocated */
-       uint16_t                         nat_s_ipv4_stride;
-       /*
-        * Starting index of NAT destination IPV4 addresses allocated to the
-        * session
-        */
-       uint16_t                         nat_d_ipv4_start;
-       /* Number of NAT destination IPV4 addresses allocated */
-       uint16_t                         nat_d_ipv4_stride;
-} tf_session_sram_resc_free_input_t, *ptf_session_sram_resc_free_input_t;
-
-/* Input params for session resource SRAM flush */
-typedef struct tf_session_sram_resc_flush_input {
-       /* Firmware session id returned when HWRM_TF_SESSION_OPEN is sent */
-       uint32_t                         fw_session_id;
-       /* flags */
-       uint16_t                         flags;
-       /* When set to 0, indicates the flush apply to RX */
-#define TF_SESSION_SRAM_RESC_FLUSH_INPUT_FLAGS_DIR_RX    (0x0)
-       /* When set to 1, indicates the flush apply to TX */
-#define TF_SESSION_SRAM_RESC_FLUSH_INPUT_FLAGS_DIR_TX    (0x1)
-       /* Starting index of full action SRAM entries allocated to the session */
-       uint16_t                         full_action_start;
-       /* Number of full action SRAM entries allocated */
-       uint16_t                         full_action_stride;
-       /* Starting index of multicast groups allocated to this session */
-       uint16_t                         mcg_start;
-       /* Number of multicast groups allocated */
-       uint16_t                         mcg_stride;
-       /* Starting index of encap 8B entries allocated to the session */
-       uint16_t                         encap_8b_start;
-       /* Number of encap 8B entries allocated */
-       uint16_t                         encap_8b_stride;
-       /* Starting index of encap 16B entries allocated to the session */
-       uint16_t                         encap_16b_start;
-       /* Number of encap 16B entries allocated */
-       uint16_t                         encap_16b_stride;
-       /* Starting index of encap 64B entries allocated to the session */
-       uint16_t                         encap_64b_start;
-       /* Number of encap 64B entries allocated */
-       uint16_t                         encap_64b_stride;
-       /* Starting index of SP SMAC entries allocated to the session */
-       uint16_t                         sp_smac_start;
-       /* Number of SP SMAC entries allocated */
-       uint16_t                         sp_smac_stride;
-       /* Starting index of SP SMAC IPv4 entries allocated to the session */
-       uint16_t                         sp_smac_ipv4_start;
-       /* Number of SP SMAC IPv4 entries allocated */
-       uint16_t                         sp_smac_ipv4_stride;
-       /* Starting index of SP SMAC IPv6 entries allocated to the session */
-       uint16_t                         sp_smac_ipv6_start;
-       /* Number of SP SMAC IPv6 entries allocated */
-       uint16_t                         sp_smac_ipv6_stride;
-       /* Starting index of Counter 64B entries allocated to the session */
-       uint16_t                         counter_64b_start;
-       /* Number of Counter 64B entries allocated */
-       uint16_t                         counter_64b_stride;
-       /* Starting index of NAT source ports allocated to the session */
-       uint16_t                         nat_sport_start;
-       /* Number of NAT source ports allocated */
-       uint16_t                         nat_sport_stride;
-       /* Starting index of NAT destination ports allocated to the session */
-       uint16_t                         nat_dport_start;
-       /* Number of NAT destination ports allocated */
-       uint16_t                         nat_dport_stride;
-       /* Starting index of NAT source IPV4 addresses allocated to the session */
-       uint16_t                         nat_s_ipv4_start;
-       /* Number of NAT source IPV4 addresses allocated */
-       uint16_t                         nat_s_ipv4_stride;
-       /*
-        * Starting index of NAT destination IPV4 addresses allocated to the
-        * session
-        */
-       uint16_t                         nat_d_ipv4_start;
-       /* Number of NAT destination IPV4 addresses allocated */
-       uint16_t                         nat_d_ipv4_stride;
-} tf_session_sram_resc_flush_input_t, *ptf_session_sram_resc_flush_input_t;
-
-/* Input params for table type set */
-typedef struct tf_tbl_type_set_input {
-       /* Session Id */
-       uint32_t                         fw_session_id;
-       /* flags */
-       uint16_t                         flags;
-       /* When set to 0, indicates the get apply to RX */
-#define TF_TBL_TYPE_SET_INPUT_FLAGS_DIR_RX                     (0x0)
-       /* When set to 1, indicates the get apply to TX */
-#define TF_TBL_TYPE_SET_INPUT_FLAGS_DIR_TX                     (0x1)
-       /* Type of the object to set */
+#define TF_SET_GLOBAL_CFG_INPUT_FLAGS_DIR_TX             (0x1)
+       /* Config type */
        uint32_t                         type;
+       /* Offset of the type */
+       uint32_t                         offset;
        /* Size of the data to set in bytes */
        uint16_t                         size;
        /* Data to set */
        uint8_t                   data[TF_BULK_SEND];
-       /* Index to set */
-       uint32_t                         index;
-} tf_tbl_type_set_input_t, *ptf_tbl_type_set_input_t;
+} tf_set_global_cfg_input_t, *ptf_set_global_cfg_input_t;
 
-/* Input params for table type get */
-typedef struct tf_tbl_type_get_input {
+/* Input params for global config to get */
+typedef struct tf_get_global_cfg_input {
        /* Session Id */
        uint32_t                         fw_session_id;
        /* flags */
-       uint16_t                         flags;
-       /* When set to 0, indicates the get apply to RX */
-#define TF_TBL_TYPE_GET_INPUT_FLAGS_DIR_RX                     (0x0)
-       /* When set to 1, indicates the get apply to TX */
-#define TF_TBL_TYPE_GET_INPUT_FLAGS_DIR_TX                     (0x1)
-       /* Type of the object to set */
+       uint32_t                         flags;
+       /* When set to 0, indicates the query apply to RX */
+#define TF_GET_GLOBAL_CFG_INPUT_FLAGS_DIR_RX             (0x0)
+       /* When set to 1, indicates the query apply to TX */
+#define TF_GET_GLOBAL_CFG_INPUT_FLAGS_DIR_TX             (0x1)
+       /* Config to retrieve */
        uint32_t                         type;
-       /* Index to get */
-       uint32_t                         index;
-} tf_tbl_type_get_input_t, *ptf_tbl_type_get_input_t;
+       /* Offset to retrieve */
+       uint32_t                         offset;
+       /* Size of the data to set in bytes */
+       uint16_t                         size;
+} tf_get_global_cfg_input_t, *ptf_get_global_cfg_input_t;
 
-/* Output params for table type get */
-typedef struct tf_tbl_type_get_output {
-       /* Size of the data read in bytes */
+/* Output params for global config */
+typedef struct tf_get_global_cfg_output {
+       /* Size of the total data read in bytes */
        uint16_t                         size;
-       /* Data read */
-       uint8_t                   data[TF_BULK_RECV];
-} tf_tbl_type_get_output_t, *ptf_tbl_type_get_output_t;
+       /* Data to get */
+       uint8_t                   data[TF_BULK_SEND];
+} tf_get_global_cfg_output_t, *ptf_get_global_cfg_output_t;
 
 /* Input params for table type get */
 typedef struct tf_tbl_type_bulk_get_input {
        /* Session Id */
        uint32_t                         fw_session_id;
        /* flags */
-       uint16_t                         flags;
+       uint32_t                         flags;
        /* When set to 0, indicates the get apply to RX */
 #define TF_TBL_TYPE_BULK_GET_INPUT_FLAGS_DIR_RX           (0x0)
        /* When set to 1, indicates the get apply to TX */
@@ -947,4 +148,48 @@ typedef struct tf_tbl_type_bulk_get_output {
        uint16_t                         size;
 } tf_tbl_type_bulk_get_output_t, *ptf_tbl_type_bulk_get_output_t;
 
+/* Input params for if tbl set */
+typedef struct tf_if_tbl_set_input {
+       /* Session Id */
+       uint32_t                         fw_session_id;
+       /* flags */
+       uint16_t                         flags;
+       /* When set to 0, indicates the query apply to RX */
+#define TF_IF_TBL_SET_INPUT_FLAGS_DIR_RX                         (0x0)
+       /* When set to 1, indicates the query apply to TX */
+#define TF_IF_TBL_SET_INPUT_FLAGS_DIR_TX                         (0x1)
+       /* if table type */
+       uint16_t                         tf_if_tbl_type;
+       /* index of table entry */
+       uint16_t                         idx;
+       /* size of the data write to table entry */
+       uint32_t                         data_sz_in_bytes;
+       /* data to write into table entry */
+       uint32_t                         data[2];
+} tf_if_tbl_set_input_t, *ptf_if_tbl_set_input_t;
+
+/* Input params for if tbl get */
+typedef struct tf_if_tbl_get_input {
+       /* Session Id */
+       uint32_t                         fw_session_id;
+       /* flags */
+       uint16_t                         flags;
+       /* When set to 0, indicates the query apply to RX */
+#define TF_IF_TBL_GET_INPUT_FLAGS_DIR_RX                         (0x0)
+       /* When set to 1, indicates the query apply to TX */
+#define TF_IF_TBL_GET_INPUT_FLAGS_DIR_TX                         (0x1)
+       /* if table type */
+       uint16_t                         tf_if_tbl_type;
+       /* size of the data get from table entry */
+       uint32_t                         data_sz_in_bytes;
+       /* index of table entry */
+       uint16_t                         idx;
+} tf_if_tbl_get_input_t, *ptf_if_tbl_get_input_t;
+
+/* output params for if tbl get */
+typedef struct tf_if_tbl_get_output {
+       /* Value read from table entry */
+       uint32_t                         data[2];
+} tf_if_tbl_get_output_t, *ptf_if_tbl_get_output_t;
+
 #endif /* _HWRM_TF_H_ */