Add Broadcom / Netgear changes from RAXE 1.0.0.48
[project/bcm63xx/u-boot.git] / arch / arm / mach-bcmbca / rdp / rdp_drv_ih.h
diff --git a/arch/arm/mach-bcmbca/rdp/rdp_drv_ih.h b/arch/arm/mach-bcmbca/rdp/rdp_drv_ih.h
new file mode 100755 (executable)
index 0000000..851b214
--- /dev/null
@@ -0,0 +1,2756 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (c) 2013 Broadcom
+ */
+/*
+     
+*/             
+
+/******************************************************************************/
+/*                                                                            */
+/* File Description:                                                          */
+/*                                                                            */
+/* This header file defines all datatypes and functions exported for the      */
+/* Lilac IH driver                                                            */
+/*                                                                            */
+/******************************************************************************/
+
+
+#ifndef DRV_IH_H_INCLUDED
+#define DRV_IH_H_INCLUDED
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+
+/*****************************************************************************/
+/*                                                                           */
+/* Include files                                                             */
+/*                                                                           */
+/*****************************************************************************/
+
+#include "rdp_ih.h"
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Types and values definitions                                               */
+/*                                                                            */
+/******************************************************************************/
+
+/******************************************************************************/
+/* Error codes returned by IH driver APIs                                     */
+/******************************************************************************/
+typedef enum
+{
+    DRV_IH_NO_ERROR ,
+    DRV_IH_ERROR_INVALID_INDEX ,
+    DRV_IH_ERROR_INVALID_NUMBER_OF_RUNNER_BUFFERS ,
+    DRV_IH_ERROR_INVALID_INGRESS_QUEUE ,
+    DRV_IH_ERROR_INVALID_INGRESS_QUEUE_BASE_LOCATION ,
+    DRV_IH_ERROR_INVALID_INGRESS_QUEUE_SIZE ,
+    DRV_IH_ERROR_INVALID_INGRESS_QUEUE_PRIORITY ,
+    DRV_IH_ERROR_INVALID_INGRESS_QUEUE_WEIGHT ,
+    DRV_IH_ERROR_DESTINATION_PORT_AND_TARGET_MEMORY_MISMATCH ,
+    DRV_IH_ERROR_INVALID_PORT ,
+    DRV_IH_ERROR_INVALID_L3_OFFSET ,
+    DRV_IH_ERROR_INVALID_VID ,
+    DRV_IH_ERROR_INVALID_DSCP ,
+    DRV_IH_ERROR_INVALID_TCI ,
+    DRV_IH_ERROR_INVALID_TABLE_SIZE ,
+    DRV_IH_ERROR_INVALID_MAXIMAL_SEARCH_DEPTH ,
+    DRV_IH_ERROR_INVALID_START_OFFSET_SEATCH_KEY_PART ,
+    DRV_IH_ERROR_INVALID_SHIFT_OFFSET_SEATCH_KEY_PART ,
+    DRV_IH_ERROR_TABLE_IS_NOT_60_BIT_KEY ,
+    DRV_IH_ERROR_TABLE_IS_NOT_120_BIT_KEY ,
+    DRV_IH_ERROR_CLASS_SEARCH_AND_LUT_LOCATION_MISMATCH ,
+    DRV_IH_ERROR_VALUE_IS_WRITE_ONLY
+}
+DRV_IH_ERROR ;
+
+/* Maximal value for maximal number of runner buffers allocated to runner */
+#define DRV_IH_MAXIMAL_VALUE_FOR_RUNNER_MAXIMAL_NUMBER_OF_BUFFERS ( 64 )
+/* Maximal ingress queue congestion threshold.
+   Needed to allow threshold=65 for following scenario: maximal number of
+   runner buffers is 64, and we want to never reach the threshold (i.e.
+   IH will never stop serving the queue).  */
+#define DRV_IH_MAXIMAL_INGRESS_QUEUE_CONGESTION_THRESHOLD         ( DRV_IH_MAXIMAL_VALUE_FOR_RUNNER_MAXIMAL_NUMBER_OF_BUFFERS + 1 )
+/* Number of lookup tables */                                
+#define DRV_IH_NUMBER_OF_LOOKUP_TABLES                            ( 10 )
+/* Number of classes */                                             
+#define DRV_IH_NUMBER_OF_CLASSES                                  ( 16 )
+/* Number of classifiers */                                         
+#define DRV_IH_NUMBER_OF_CLASSIFIERS                              ( 16 )
+/* maximal start offset for part (0 or 1) of a search key (in 4 byte resolution) */
+#define DRV_IH_MAXIMAL_START_OFFSET_SEATCH_KEY_PART               ( 14 )
+/* maximal shift offset for part (0 or 1) of a search key (in 4 bit resolution) */
+#define DRV_IH_MAXIMAL_SHIFT_OFFSET_SEATCH_KEY_PART               ( 15 )
+/* Number of DSCP-to-TCI tables. these tables are used for untagged IP packets */
+#define DRV_IH_NUMBER_OF_DSCP_TO_TCI_TABLES                       ( 2 )
+/* Number of ingress queues */                                      
+#define DRV_IH_NUMBER_OF_INGRESS_QUEUES                           ( 8 )
+/* Ingress queues array size */                                     
+#define DRV_IH_INGRESS_QUEUES_ARRAY_SIZE                          ( 16 )
+/* Minimal ingress queue size. */                                     
+#define DRV_IH_MINIMAL_INGRESS_QUEUE_SIZE                         ( 1 )
+/* Maximal ingress queue priority. lower priority value means lower priority. */
+#define DRV_IH_MAXIMAL_INGRESS_QUEUE_PRIORITY                      ( 7 )
+/* Maximal ingress queue weight. lower weight value means lower weight.
+   Weight is relevant only for two or more queues with the same priority */
+#define DRV_IH_MAXIMAL_INGRESS_QUEUE_WEIGHT                        ( 15 )
+/* number of bytes in MAC address */                                 
+#define DRV_IH_NUMBER_OF_BYTES_IN_MAC_ADDRESS                      ( 6 )
+/* number of DA filters with mask */                                 
+#define DRV_IH_NUMBER_OF_DA_FILTERS_WITH_MASK                      ( 2 )
+/* number of DA filters (with and without mask) */                   
+#define DRV_IH_NUMBER_OF_DA_FILTERS                                ( 8 )
+/* Number of user-defined ethertypes */                              
+#define DRV_IH_NUMBER_OF_USER_DEFINED_ETHERTYPES                   ( 4 )
+/* Maximal L3 offset */
+#define DRV_IH_MAXIMAL_L3_OFFSET                                   ( 15 )
+/* Number of user-defined IP L4 protocols */
+#define DRV_IH_NUMBER_OF_USER_DEFINED_IP_L4_PROTOCOLS              ( 4 )
+/* Number of PPP Protocol Codes */
+#define DRV_IH_NUMBER_OF_PPP_PROTOCOL_CODES                        ( 2 )
+/* Number of VID filters */                                   
+#define DRV_IH_NUMBER_OF_VID_FILTERS                               ( 12 )
+/* Maximal VID value */                                       
+#define DRV_IH_MAXIMAL_VID_VALUE                                   ( 4095 )
+/* Number of IP filters */                                    
+#define DRV_IH_NUMBER_OF_IP_FILTERS                                ( 4 )
+/* Maximal DSCP value */                                      
+#define DRV_IH_MAXIMAL_DSCP_VALUE                                  ( 63 )
+/* Maximal TCI value */                                       
+#define DRV_IH_MAXIMAL_TCI_VALUE                                   ( 7 )
+
+
+/******************************************************************************/
+/* General configuration                                                      */
+/******************************************************************************/
+typedef struct
+{
+    /* In runner flow, IH response is sent to runner after completing writing
+       the runner buffer. */
+    uint16_t runner_a_ih_response_address ;
+
+    /* In runner flow, IH response is sent to runner after completing writing
+       the runner buffer. */
+    uint16_t runner_b_ih_response_address ;
+
+    /* In case of change of runner congestion state, IH sends Runner
+       Congestion report to predefined buffer with number of allocated RBs
+       for relevant runner. */
+    uint16_t runner_a_ih_congestion_report_address ;
+
+    /* In case of change of runner congestion state, IH sends Runner
+       Congestion report to predefined buffer with number of allocated RBs
+       for relevant runner. */
+    uint16_t runner_b_ih_congestion_report_address ;
+
+    /* Runner A IH congestion report enable */
+    int32_t runner_a_ih_congestion_report_enable ;
+
+    /* Runner B IH congestion report enable */
+    int32_t runner_b_ih_congestion_report_enable ;
+
+    /* Enable/disable LUT searches when the default direct mode of a class is
+       enabled. */
+    int32_t lut_searches_enable_in_direct_mode ;
+
+    /* SN stamping enable in direct mode. */
+    int32_t sn_stamping_enable_in_direct_mode ;
+
+    /* If a packet's header length is below this threshold, IH will disable
+       Parsing & Look-up processing, however the RIB will be assigned + and
+       stamped with SN. */
+    uint8_t header_length_minimum ;
+
+    /* When this field is set to true, IH will ignore the runner congestion
+       state, and discard packets only when there are no available RIBs. */
+    int32_t congestion_discard_disable ;
+
+    /* If true, IH will go to CAM (if CAM is enabled) upon encountering an
+       invalid LUT entry. If false, IH will stop the search. */
+    int32_t cam_search_enable_upon_invalid_lut_entry ;
+}
+DRV_IH_GENERAL_CONFIG ;
+
+
+/******************************************************************************/
+/* Packet header offsets                                                      */
+/******************************************************************************/
+typedef struct
+{
+    /* Eth0 packet header offset */
+    uint8_t eth0_packet_header_offset ;
+
+    /* Eth1 packet header offset */
+    uint8_t eth1_packet_header_offset ;
+
+    /* Eth2 packet header offset */
+    uint8_t eth2_packet_header_offset ;
+
+    /* Eth3 packet header offset */
+    uint8_t eth3_packet_header_offset ;
+
+    /* Eth4 packet header offset */
+    uint8_t eth4_packet_header_offset ;
+
+    /* GPON packet header offset */
+    uint8_t gpon_packet_header_offset ;
+
+    /* Runner A packet header offset */
+    uint8_t runner_a_packet_header_offset ;
+
+    /* Runner B packet header offset */
+    uint8_t runner_b_packet_header_offset ;
+}
+DRV_IH_PACKET_HEADER_OFFSETS ;
+
+
+/******************************************************************************/
+/* Runner maximal number of buffers                                           */
+/* The enumeration values are compatible with the values used by the HW.      */
+/******************************************************************************/
+typedef enum
+{
+    DRV_IH_RUNNER_MAXIMAL_NUMBER_OF_BUFFERS_16 ,
+    DRV_IH_RUNNER_MAXIMAL_NUMBER_OF_BUFFERS_24 ,
+    DRV_IH_RUNNER_MAXIMAL_NUMBER_OF_BUFFERS_32 ,
+    DRV_IH_RUNNER_MAXIMAL_NUMBER_OF_BUFFERS_48 ,
+    DRV_IH_RUNNER_MAXIMAL_NUMBER_OF_BUFFERS_64
+}
+DRV_IH_RUNNER_MAXIMAL_NUMBER_OF_BUFFERS ;
+
+
+/******************************************************************************/
+/* Runner Buffers Configuration                                               */
+/******************************************************************************/
+typedef struct
+{
+    /* Runner A IH managed RB base address */
+    uint16_t runner_a_ih_managed_rb_base_address ;
+
+    /* Runner B IH managed RB base address */
+    uint16_t runner_b_ih_managed_rb_base_address ;
+
+    /* Runner A runner managed RB base address */
+    uint16_t runner_a_runner_managed_rb_base_address ;
+
+    /* Runner B runner managed RB base address */
+    uint16_t runner_b_runner_managed_rb_base_address ;
+
+    /* Runner A maximal number of buffers */
+    DRV_IH_RUNNER_MAXIMAL_NUMBER_OF_BUFFERS runner_a_maximal_number_of_buffers ;
+
+    /* Runner B maximal number of buffers */
+    DRV_IH_RUNNER_MAXIMAL_NUMBER_OF_BUFFERS runner_b_maximal_number_of_buffers ;
+}
+DRV_IH_RUNNER_BUFFERS_CONFIG ;
+
+
+/******************************************************************************/
+/* Runners Load Thresholds                                                    */
+/******************************************************************************/
+typedef struct
+{
+    /* Threshold for dropping low priority packets */
+    uint8_t runner_a_high_congestion_threshold ;
+
+    /* Threshold for dropping low priority packets */
+    uint8_t runner_b_high_congestion_threshold ;
+
+    /* Threshold for dropping low & high priority packets */
+    uint8_t runner_a_exclusive_congestion_threshold ;
+
+    /* Threshold for dropping low & high priority packets */
+    uint8_t runner_b_exclusive_congestion_threshold ;
+
+    /* Threshold for turning-on load balancing */
+    uint8_t runner_a_load_balancing_threshold ;
+
+    /* Threshold for turning-on load balancing */
+    uint8_t runner_b_load_balancing_threshold ;
+
+    /* Threshold for turning-off load balancing */
+    uint8_t runner_a_load_balancing_hysteresis ;
+
+    /* Threshold for turning-off load balancing */
+    uint8_t runner_b_load_balancing_hysteresis ;
+}
+DRV_IH_RUNNERS_LOAD_THRESHOLDS ;
+
+
+/******************************************************************************/
+/* Route Addresses                                                            */
+/******************************************************************************/
+typedef struct
+{
+    /* Eth0 route address */
+    uint8_t eth0_route_address ;
+
+    /* Eth1 route address */
+    uint8_t eth1_route_address ;
+
+    /* Eth2 route address */
+    uint8_t eth2_route_address ;
+
+    /* Eth3 route address */
+    uint8_t eth3_route_address ;
+
+    /* Eth4 route address */
+    uint8_t eth4_route_address ;
+
+    /* GPON route address */
+    uint8_t gpon_route_address ;
+
+    /* Runner A route address */
+    uint8_t runner_a_route_address ;
+
+    /* Runner B route address */
+    uint8_t runner_b_route_address ;
+}
+DRV_IH_ROUTE_ADDRESSES ;
+
+
+/******************************************************************************/
+/* Parsing layer depth                                                        */
+/* The enumeration values are compatible with the values used by the HW.      */
+/******************************************************************************/
+typedef enum
+{
+    DRV_IH_PARSING_LAYER_DEPTH_VLAN ,
+    DRV_IH_PARSING_LAYER_DEPTH_LAYER2 ,
+    DRV_IH_PARSING_LAYER_DEPTH_LAYER3 ,
+    DRV_IH_PARSING_LAYER_DEPTH_LAYER4
+}
+DRV_IH_PARSING_LAYER_DEPTH ;
+
+
+/******************************************************************************/
+/* Proprietary tag size                                                       */
+/* The enumeration values are compatible with the values used by the HW.      */
+/******************************************************************************/
+typedef enum
+{
+    DRV_IH_PROPRIETARY_TAG_SIZE_0 = 0 ,
+       DRV_IH_PROPRIETARY_TAG_SIZE_4 = 4 ,
+       DRV_IH_PROPRIETARY_TAG_SIZE_6 = 6 ,
+       DRV_IH_PROPRIETARY_TAG_SIZE_8 = 8
+}
+DRV_IH_PROPRIETARY_TAG_SIZE ;
+
+
+/******************************************************************************/
+/* Logical Port Configuration                                                 */
+/******************************************************************************/
+typedef struct
+{
+    /* Parsing layer depth */
+    DRV_IH_PARSING_LAYER_DEPTH parsing_layer_depth ;
+
+    /* Proprietary tag size */
+    DRV_IH_PROPRIETARY_TAG_SIZE proprietary_tag_size ;
+}
+DRV_IH_LOGICAL_PORT_CONFIG ;
+
+
+/******************************************************************************/
+/* Logical Ports Configuration                                                */
+/******************************************************************************/
+typedef struct
+{
+    /* Eth0 configuration */
+    DRV_IH_LOGICAL_PORT_CONFIG eth0_config ;
+
+    /* Eth1 configuration */
+    DRV_IH_LOGICAL_PORT_CONFIG eth1_config ;
+
+    /* Eth2 configuration */
+    DRV_IH_LOGICAL_PORT_CONFIG eth2_config ;
+
+    /* Eth3 configuration */
+    DRV_IH_LOGICAL_PORT_CONFIG eth3_config ;
+
+    /* Eth4 configuration */
+    DRV_IH_LOGICAL_PORT_CONFIG eth4_config ;
+
+    /* GPON configuration */
+    DRV_IH_LOGICAL_PORT_CONFIG gpon_config ;
+
+    /* Runner A configuration */
+    DRV_IH_LOGICAL_PORT_CONFIG runner_a_config ;
+
+    /* Runner B configuration */
+    DRV_IH_LOGICAL_PORT_CONFIG runner_b_config ;
+
+    /* PCIE0 configuration */
+    DRV_IH_LOGICAL_PORT_CONFIG pcie0_config ;
+
+    /* PCIE1 configuration */
+    DRV_IH_LOGICAL_PORT_CONFIG pcie1_config ;
+}
+DRV_IH_LOGICAL_PORTS_CONFIG ;
+
+
+
+
+/******************************************************************************/
+/* Lookup table size                                                          */
+/* The enumeration values are compatible with the values used by the HW.      */
+/******************************************************************************/
+typedef enum
+{
+    DRV_IH_LOOKUP_TABLE_SIZE_32_ENTRIES ,
+    DRV_IH_LOOKUP_TABLE_SIZE_64_ENTRIES ,
+    DRV_IH_LOOKUP_TABLE_SIZE_128_ENTRIES ,
+    DRV_IH_LOOKUP_TABLE_SIZE_256_ENTRIES ,
+    DRV_IH_LOOKUP_TABLE_SIZE_512_ENTRIES ,
+    DRV_IH_LOOKUP_TABLE_SIZE_1024_ENTRIES ,
+    DRV_IH_LOOKUP_TABLE_SIZE_2048_ENTRIES ,
+    DRV_IH_LOOKUP_TABLE_SIZE_4096_ENTRIES
+}
+DRV_IH_LOOKUP_TABLE_SIZE ;
+
+
+/******************************************************************************/
+/* Lookup table hash type                                                     */
+/* The enumeration values are compatible with the values used by the HW.      */
+/******************************************************************************/
+typedef enum
+{
+    DRV_IH_LOOKUP_TABLE_HASH_TYPE_HASH_FOR_INCREMENTAL_KEYS ,
+    DRV_IH_LOOKUP_TABLE_HASH_TYPE_CRC16
+}
+DRV_IH_LOOKUP_TABLE_HASH_TYPE ;
+
+
+
+/******************************************************************************/
+/* Lookup table maximal search depth                                          */
+/* The enumeration values are compatible with the values used by the HW.      */
+/******************************************************************************/
+typedef enum
+{
+    DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH_1_STEP ,
+    DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH_2_STEPS ,
+    DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH_4_STEPS ,
+    DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH_8_STEPS ,
+    DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH_16_STEPS ,
+    DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH_32_STEPS ,
+    DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH_64_STEPS ,
+    DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH_128_STEPS ,
+    DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH_256_STEPS ,
+    DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH_512_STEPS ,
+    DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH_1024_STEPS
+}
+DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH ;
+
+
+/******************************************************************************/
+/* Lookup context table entry size                                            */
+/* The enumeration values are compatible with the values used by the HW.      */
+/******************************************************************************/
+typedef enum
+{
+    DRV_IH_LOOKUP_CONTEXT_TABLE_ENTRY_SIZE_1_BYTE ,
+    DRV_IH_LOOKUP_CONTEXT_TABLE_ENTRY_SIZE_2_BYTES ,
+    DRV_IH_LOOKUP_CONTEXT_TABLE_ENTRY_SIZE_4_BYTES ,
+    DRV_IH_LOOKUP_CONTEXT_TABLE_ENTRY_SIZE_INTERNAL_ENTRY
+}
+DRV_IH_LOOKUP_CONTEXT_TABLE_ENTRY_SIZE ;
+
+
+/******************************************************************************/
+/* Lookup key extension                                                       */
+/* The enumeration values are compatible with the values used by the HW.      */
+/******************************************************************************/
+typedef enum
+{
+    DRV_IH_LOOKUP_KEY_EXTENSION_DISABLE ,
+    DRV_IH_LOOKUP_KEY_EXTENSION_SOURCE_PORT ,
+    DRV_IH_LOOKUP_KEY_EXTENSION_GEM_FLOW_ID ,
+    DRV_IH_LOOKUP_KEY_EXTENSION_WAN
+}
+DRV_IH_LOOKUP_KEY_EXTENSION ;
+
+
+/******************************************************************************/
+/* Lookup table 60 bit key configuration                                      */
+/******************************************************************************/
+typedef struct
+{
+    /* Table base address in 8 byte resolution */
+    uint16_t table_base_address_in_8_byte ;
+
+    /* Table size */
+    DRV_IH_LOOKUP_TABLE_SIZE table_size ;
+
+    /* Maximal search depth */
+    DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH maximal_search_depth ;
+
+    /* Hash type */
+    DRV_IH_LOOKUP_TABLE_HASH_TYPE hash_type ;
+
+    /* This flag invokes additional comparison of source port for "move"
+       indication */
+    int32_t sa_search_enable ;
+
+    /* When this flag is enabled, look-up engine will de-assert aging bit in
+       case of search match */
+    int32_t aging_enable ;
+
+    /* CAM enable */
+    int32_t cam_enable ;
+
+    /* CAM base address in 8 byte resolution */
+    uint16_t cam_base_address_in_8_byte ;
+
+    /* Context table base address in 8 byte resolution */
+    uint16_t context_table_base_address_in_8_byte ;
+
+    /* Context table entry size */
+    DRV_IH_LOOKUP_CONTEXT_TABLE_ENTRY_SIZE context_table_entry_size ;
+
+    /* CAM context base address in 8 byte resolution */
+    uint16_t cam_context_base_address_in_8_byte ;
+
+    /* Part 0 start offset in 4 byte resolution */
+    uint8_t part_0_start_offset_in_4_byte ;
+
+    /* Part 0 shift offset in 4 bit resolution */
+    uint8_t part_0_shift_offset_in_4_bit ;
+
+    /* Part 1 start offset in 4 byte resolution */
+    uint8_t part_1_start_offset_in_4_byte ;
+
+    /* Part 1 shift offset in 4 bit resolution */
+    uint8_t part_1_shift_offset_in_4_bit ;
+
+    /* Extension option for search key (always concatenated with MS bits) */
+    DRV_IH_LOOKUP_KEY_EXTENSION key_extension ;
+
+    /* Lower 32 bits of part 0 mask */
+    uint32_t part_0_mask_low ;
+
+    /* higher 28 bits of part 0 mask */
+    uint32_t part_0_mask_high ;
+
+    /* Lower 32 bits of part 1 mask */
+    uint32_t part_1_mask_low ;
+
+    /* higher 28 bits of part 1 mask */
+    uint32_t part_1_mask_high ;
+
+    /* Global mask in 4 bit resolution (only 15 LS bits are used, 15*4=60
+       bits mask) */
+    uint16_t global_mask_in_4_bit ;
+}
+DRV_IH_LOOKUP_TABLE_60_BIT_KEY_CONFIG ;
+
+
+/******************************************************************************/
+/* Lookup table 120 bit key configuration                                     */
+/******************************************************************************/
+typedef struct
+{
+    /* Table base address in 8 byte resolution */
+    uint16_t table_base_address_in_8_byte ;
+
+    /* Table size */
+    DRV_IH_LOOKUP_TABLE_SIZE table_size ;
+
+    /* Maximal search depth */
+    DRV_IH_LOOKUP_TABLE_MAXIMAL_SEARCH_DEPTH maximal_search_depth ;
+
+    /* Hash type */
+    DRV_IH_LOOKUP_TABLE_HASH_TYPE hash_type ;
+
+    /* When this flag is enabled, look-up engine will de-assert aging bit in
+       case of search match */
+    int32_t aging_enable ;
+
+    /* CAM enable */
+    int32_t cam_enable ;
+
+    /* CAM base address in 8 byte resolution */
+    uint16_t cam_base_address_in_8_byte ;
+
+    /* Context table base address in 8 byte resolution */
+    uint16_t context_table_base_address_in_8_byte ;
+
+    /* Context table entry size */
+    DRV_IH_LOOKUP_CONTEXT_TABLE_ENTRY_SIZE context_table_entry_size ;
+
+    /* CAM context base address in 8 byte resolution */
+    uint16_t cam_context_base_address_in_8_byte ;
+
+    /* Primary key part 0 start offset in 4 byte resolution */
+    uint8_t primary_key_part_0_start_offset_in_4_byte ;
+
+    /* Primary key part 0 shift offset in 4 bit resolution */
+    uint8_t primary_key_part_0_shift_offset_in_4_bit ;
+
+    /* Primary key part 1 start offset in 4 byte resolution */
+    uint8_t primary_key_part_1_start_offset_in_4_byte ;
+
+    /* Primary key part 1 shift offset in 4 bit resolution */
+    uint8_t primary_key_part_1_shift_offset_in_4_bit ;
+
+    /* Extension option for search key (always concatenated with MS bits) */
+    DRV_IH_LOOKUP_KEY_EXTENSION primary_key_extension ;
+
+    /* Lower 32 bits of part 0 mask */
+    uint32_t primary_key_part_0_mask_low ;
+
+    /* higher 28 bits of part 0 mask */
+    uint32_t primary_key_part_0_mask_high ;
+
+    /* Lower 32 bits of part 1 mask */
+    uint32_t primary_key_part_1_mask_low ;
+
+    /* higher 28 bits of part 1 mask */
+    uint32_t primary_key_part_1_mask_high ;
+
+    /* Secondary key part 0 start offset in 4 byte resolution */
+    uint8_t secondary_key_part_0_start_offset_in_4_byte ;
+
+    /* Secondary key part 0 shift offset in 4 bit resolution */
+    uint8_t secondary_key_part_0_shift_offset_in_4_bit ;
+
+    /* Secondary key part 1 start offset in 4 byte resolution */
+    uint8_t secondary_key_part_1_start_offset_in_4_byte ;
+
+    /* Secondary key part 1 shift offset in 4 bit resolution */
+    uint8_t secondary_key_part_1_shift_offset_in_4_bit ;
+
+    /* Extension option for search key (always concatenated with MS bits) */
+    DRV_IH_LOOKUP_KEY_EXTENSION secondary_key_extension ;
+
+    /* Lower 32 bits of part 0 mask */
+    uint32_t secondary_key_part_0_mask_low ;
+
+    /* higher 28 bits of part 0 mask */
+    uint32_t secondary_key_part_0_mask_high ;
+
+    /* Lower 32 bits of part 1 mask */
+    uint32_t secondary_key_part_1_mask_low ;
+
+    /* higher 28 bits of part 1 mask */
+    uint32_t secondary_key_part_1_mask_high ;
+
+    /* Global mask in 4 bit resolution (only 15 LS bits are used, 15*4=60
+       bits mask) */
+    uint16_t global_mask_in_4_bit ;
+}
+DRV_IH_LOOKUP_TABLE_120_BIT_KEY_CONFIG ;
+
+
+/******************************************************************************/
+/* Class search                                                               */
+/* The enumeration values are compatible with the values used by the HW.      */
+/******************************************************************************/
+typedef enum
+{
+    DRV_IH_CLASS_SEARCH_LOOKUP_TABLE_0 ,
+    DRV_IH_CLASS_SEARCH_LOOKUP_TABLE_1 ,
+    DRV_IH_CLASS_SEARCH_LOOKUP_TABLE_2 ,
+    DRV_IH_CLASS_SEARCH_LOOKUP_TABLE_3 ,
+    DRV_IH_CLASS_SEARCH_LOOKUP_TABLE_4 ,
+    DRV_IH_CLASS_SEARCH_LOOKUP_TABLE_5 ,
+    DRV_IH_CLASS_SEARCH_LOOKUP_TABLE_6 ,
+    DRV_IH_CLASS_SEARCH_LOOKUP_TABLE_7 ,
+    DRV_IH_CLASS_SEARCH_LOOKUP_TABLE_8 ,
+    DRV_IH_CLASS_SEARCH_LOOKUP_TABLE_9 ,
+    DRV_IH_CLASS_SEARCH_DISABLED       = 15
+}
+DRV_IH_CLASS_SEARCH ;
+
+
+/******************************************************************************/
+/* Operation based on class search                                            */
+/* There are several operations which can be either diabled or based on       */
+/* search 1 or based on search 3.                                             */
+/* The enumeration values are compatible with the values used by the HW.      */
+/******************************************************************************/
+typedef enum
+{
+    DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_OPERATION_DISABLED ,
+    DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_BASED_ON_SEARCH1 ,
+    DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH_BASED_ON_SEARCH3
+}
+DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH ;
+
+
+/******************************************************************************/
+/* Target memory                                                              */
+/* The enumeration values are compatible with the values used by the HW.      */
+/******************************************************************************/
+typedef enum
+{
+    DRV_IH_TARGET_MEMORY_DDR ,
+    DRV_IH_TARGET_MEMORY_SRAM
+}
+DRV_IH_TARGET_MEMORY ;
+
+
+/******************************************************************************/
+/* Ingress QOS                                                                */
+/* The enumeration values are compatible with the values used by the HW.      */
+/******************************************************************************/
+typedef enum
+{
+    DRV_IH_INGRESS_QOS_LOW = 0 ,
+    DRV_IH_INGRESS_QOS_HIGH = 1 ,
+    DRV_IH_INGRESS_QOS_EXCLUSIVE = 3
+}
+DRV_IH_INGRESS_QOS ;
+
+
+/******************************************************************************/
+/* Runner cluster                                                             */
+/* The enumeration values are compatible with the values used by the HW.      */
+/******************************************************************************/
+typedef enum
+{
+    DRV_IH_RUNNER_CLUSTER_A ,
+    DRV_IH_RUNNER_CLUSTER_B
+}
+DRV_IH_RUNNER_CLUSTER ;
+
+
+/******************************************************************************/
+/* Class Configuration                                                        */
+/******************************************************************************/
+typedef struct
+{
+    /* Class search 1 */
+    DRV_IH_CLASS_SEARCH class_search_1 ;
+
+    /* Class search 2 */
+    DRV_IH_CLASS_SEARCH class_search_2 ;
+
+    /* Class search 3 */
+    DRV_IH_CLASS_SEARCH class_search_3 ;
+
+    /* Class search 4 */
+    DRV_IH_CLASS_SEARCH class_search_4 ;
+
+    /* Destination Port extraction. Destination Port is used when accessing target matrix. */
+    DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH destination_port_extraction ;
+
+    /* Drop on miss */
+    DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH drop_on_miss ;
+
+    /* DSCP to TCI table index. Used for untagged IP packets. */
+    uint8_t dscp_to_tci_table_index ;
+
+    /* Direct mode default */
+    int32_t direct_mode_default ;
+
+    /* Direct mode override. If true, direct-mode is taken from Target Matrix */
+    int32_t direct_mode_override ;
+
+    /* Target memory default */
+    DRV_IH_TARGET_MEMORY target_memory_default ;
+
+    /* Target memory override. If true, target memory is taken from Target
+       Matrix */
+    int32_t target_memory_override ;
+
+    /* Ingress QoS default */
+    DRV_IH_INGRESS_QOS ingress_qos_default ;
+
+    /* Ingress QoS override. */
+    DRV_IH_OPERATION_BASED_ON_CLASS_SEARCH ingress_qos_override ;
+
+    /* Target Runner Default */
+    DRV_IH_RUNNER_CLUSTER target_runner_default ;
+
+    /* Target Runner override in direct mode. If enabled, no load balancing
+       is performed. Direct mode decision might be done based on Target
+       Matrix. */
+    int32_t target_runner_override_in_direct_mode ;
+
+    /* Target Runner for direct mode. If "Target Runner override in direct
+       mode" is enabled, this target runner is chosen instead of the default
+       target runner */
+    DRV_IH_RUNNER_CLUSTER target_runner_for_direct_mode ;
+
+    /* Load balancing enable. Enable: Behavior according to Preference Load
+       Balancing. Disable: default target runner is used. */
+    int32_t load_balancing_enable ;
+
+    /* Preference Load Balancing enable. Enable: prefer default runner.
+       Disable: prefer previous runner. Irrelevant if load balancing is
+       disabled. */
+    int32_t preference_load_balancing_enable ;
+}
+DRV_IH_CLASS_CONFIG ;
+
+
+/******************************************************************************/
+/* Logical port                                                               */
+/* The enumeration values are compatible with the values used by the HW.      */
+/******************************************************************************/
+typedef enum
+{
+    DRV_IH_LOGICAL_PORT_ETH0      = 0x0 ,
+    DRV_IH_LOGICAL_PORT_ETH1      = 0x1 ,
+    DRV_IH_LOGICAL_PORT_ETH2      = 0x2 ,
+    DRV_IH_LOGICAL_PORT_ETH3      = 0x3 ,
+    DRV_IH_LOGICAL_PORT_ETH4      = 0x4,
+    DRV_IH_LOGICAL_PORT_GPON      = 0x5 ,
+    DRV_IH_LOGICAL_PORT_RUNNER_A  = 0x6 ,
+    DRV_IH_LOGICAL_PORT_RUNNER_B  = 0xE ,
+    DRV_IH_LOGICAL_PORT_PCIE0     = 0x7 ,
+    DRV_IH_LOGICAL_PORT_PCIE1     = 0x8
+}
+DRV_IH_LOGICAL_PORT ;
+
+
+/******************************************************************************/
+/* L2 protocol                                                                */
+/* The enumeration values are compatible with the values used by the HW.      */
+/******************************************************************************/
+typedef enum
+{
+    DRV_IH_L2_PROTOCOL_UNKNOWN = 0x0 ,
+    DRV_IH_L2_PROTOCOL_PPPOE_DISCOVERY = 0x1 ,
+    DRV_IH_L2_PROTOCOL_PPPOE_SESSION = 0x2 ,
+    DRV_IH_L2_PROTOCOL_IPV4OE = 0x4 ,
+    DRV_IH_L2_PROTOCOL_IPV6OE = 0x5 ,
+    DRV_IH_L2_PROTOCOL_USER_DEFINED_0 = 0x8 ,
+    DRV_IH_L2_PROTOCOL_USER_DEFINED_1 = 0x9 ,
+    DRV_IH_L2_PROTOCOL_USER_DEFINED_2 = 0xA ,
+    DRV_IH_L2_PROTOCOL_USER_DEFINED_3 = 0xB ,
+    DRV_IH_L2_PROTOCOL_ARP = 0xC ,
+    DRV_IH_L2_PROTOCOL_TYPE1588 = 0xD ,
+    DRV_IH_L2_PROTOCOL_TYPE8021X = 0xE ,
+    DRV_IH_L2_PROTOCOL_TYPE8011AGCFM = 0xF
+}
+DRV_IH_L2_PROTOCOL ;
+
+
+/******************************************************************************/
+/* L3 protocol                                                                */
+/* The enumeration values are compatible with the values used by the HW.      */
+/******************************************************************************/
+typedef enum
+{
+    DRV_IH_L3_PROTOCOL_NONE ,
+    DRV_IH_L3_PROTOCOL_IPV4 ,
+    DRV_IH_L3_PROTOCOL_IPV6
+}
+DRV_IH_L3_PROTOCOL ;
+
+
+/******************************************************************************/
+/* L4 protocol                                                                */
+/* The enumeration values are compatible with the values used by the HW.      */
+/******************************************************************************/
+typedef enum
+{
+    DRV_IH_L4_PROTOCOL_NONE = 0x0 ,
+    DRV_IH_L4_PROTOCOL_TCP = 0x1 ,
+    DRV_IH_L4_PROTOCOL_UDP = 0x2 ,
+    DRV_IH_L4_PROTOCOL_IGMP = 0x3 ,
+    DRV_IH_L4_PROTOCOL_ICMP = 0x4 ,
+    DRV_IH_L4_PROTOCOL_ICMPV6 = 0x5 ,
+    DRV_IH_L4_PROTOCOL_ESP = 0x6 ,
+    DRV_IH_L4_PROTOCOL_GRE = 0x7 ,
+    DRV_IH_L4_PROTOCOL_USER_DEFINED_0 = 0x8 ,
+    DRV_IH_L4_PROTOCOL_USER_DEFINED_1 = 0x9 ,
+    DRV_IH_L4_PROTOCOL_USER_DEFINED_2 = 0xA ,
+    DRV_IH_L4_PROTOCOL_USER_DEFINED_3 = 0xB ,
+    DRV_IH_L4_PROTOCOL_IPV6 = 0xD ,
+    DRV_IH_L4_PROTOCOL_AH = 0xE ,
+    DRV_IH_L4_PROTOCOL_NOT_PARSED = 0XF
+}
+DRV_IH_L4_PROTOCOL ;
+
+
+/******************************************************************************/
+/* Classifier configuration                                                   */
+/******************************************************************************/
+typedef struct
+{
+    /* L2 protocol */
+    DRV_IH_L2_PROTOCOL l2_protocol ;
+
+    /* L3 protocol */
+    DRV_IH_L3_PROTOCOL l3_protocol ;
+
+    /* L4 protocol */
+    DRV_IH_L4_PROTOCOL l4_protocol ;
+
+    /* DA filter any hit */
+    int32_t da_filter_any_hit ;
+
+    /* Matched DA filter (There are 6 DA filters) */
+    uint8_t matched_da_filter ;
+
+    /* Multicast DA indication */
+    int32_t multicast_da_indication ;
+
+    /* Broadcast DA indication */
+    int32_t broadcast_da_indication ;
+
+    /* VID filter any hit */
+    int32_t vid_filter_any_hit ;
+
+    /* Matched VID filter (There are 12 VID filters) */
+    uint8_t matched_vid_filter ;
+
+    /* IP filter any hit */
+    int32_t ip_filter_any_hit ;
+
+    /* Matched IP filter (There are 4 IP filters) */
+    uint8_t matched_ip_filter ;
+
+    /* WAN indication */
+    int32_t wan_indication ;
+
+    /* Five tuple valid */
+    int32_t five_tuple_valid ;
+
+    /* Logical source port */
+    DRV_IH_LOGICAL_PORT logical_source_port ;
+
+    /* Error */
+    int32_t error ;
+
+    /* 32 bit mask */
+    uint32_t mask ;
+
+    /* Resulting class */
+    uint8_t resulting_class ;
+}
+DRV_IH_CLASSIFIER_CONFIG ;
+
+
+/******************************************************************************/
+/* Source port to ingress queue mapping                                       */
+/******************************************************************************/
+typedef struct
+{
+    /* Eth0 ingress queue */
+    uint8_t eth0_ingress_queue ;
+
+    /* Eth1 ingress queue */
+    uint8_t eth1_ingress_queue ;
+
+    /* Eth2 ingress queue */
+    uint8_t eth2_ingress_queue ;
+
+    /* Eth3 ingress queue */
+    uint8_t eth3_ingress_queue ;
+
+    /* Eth4 ingress queue */
+    uint8_t eth4_ingress_queue ;
+
+    /* GPON ingress queue */
+    uint8_t gpon_ingress_queue ;
+
+    /* Runner A ingress queue */
+    uint8_t runner_a_ingress_queue ;
+
+    /* Runner B ingress queue */
+    uint8_t runner_b_ingress_queue ;
+}
+DRV_IH_SOURCE_PORT_TO_INGRESS_QUEUE_MAPPING ;
+
+
+/******************************************************************************/
+/* Ingress queue configuration                                                */
+/******************************************************************************/
+typedef struct
+{
+    /* Base location in the 16-entries ingress queue array */
+    uint8_t base_location ;
+
+    /* Size. Sum of sizes of all queues is up to 16 */
+    uint8_t size ;
+
+    /* Priority. lower value means lower priority. allowed values: 0-7 */
+    uint8_t priority ;
+
+    /* Weight. lower weight value means lower weight. Weight is relevant only
+       for two or more queues with the same priority. */
+    uint8_t weight ;
+
+    /* Congestion threshold. When the number of total Runner Buffers (either
+       Runner A or Runner B) reaches the defined threshold per queue - IH
+       stops serving this queue. */
+    uint8_t congestion_threshold ;
+}
+DRV_IH_INGRESS_QUEUE_CONFIG ;
+
+
+/******************************************************************************/
+/* Target Matrix source port                                                  */
+/******************************************************************************/
+typedef enum
+{
+    DRV_IH_TARGET_MATRIX_SOURCE_PORT_ETH0 ,
+    DRV_IH_TARGET_MATRIX_SOURCE_PORT_ETH1 ,
+    DRV_IH_TARGET_MATRIX_SOURCE_PORT_ETH2 ,
+    DRV_IH_TARGET_MATRIX_SOURCE_PORT_ETH3 ,
+    DRV_IH_TARGET_MATRIX_SOURCE_PORT_ETH4 ,
+    DRV_IH_TARGET_MATRIX_SOURCE_PORT_GPON ,
+    DRV_IH_TARGET_MATRIX_SOURCE_PORT_PCIE0 ,
+    DRV_IH_TARGET_MATRIX_SOURCE_PORT_PCIE1 ,
+
+    DRV_IH_TARGET_MATRIX_NUMBER_OF_SOURCE_PORTS
+}
+DRV_IH_TARGET_MATRIX_SOURCE_PORT ;
+
+
+/******************************************************************************/
+/* Target Matrix destination port                                             */
+/******************************************************************************/
+typedef enum
+{
+    DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ETH0 ,
+    DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ETH1 ,
+    DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ETH2 ,
+    DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ETH3 ,
+    DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ETH4 ,
+    DRV_IH_TARGET_MATRIX_DESTINATION_PORT_GPON ,
+    DRV_IH_TARGET_MATRIX_DESTINATION_PORT_PCIE0 ,
+    DRV_IH_TARGET_MATRIX_DESTINATION_PORT_PCIE1 ,
+    DRV_IH_TARGET_MATRIX_DESTINATION_PORT_CPU ,
+    DRV_IH_TARGET_MATRIX_DESTINATION_PORT_MULTICAST ,
+    DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ALWAYS_DDR ,
+    DRV_IH_TARGET_MATRIX_DESTINATION_PORT_ALWAYS_SRAM ,
+    DRV_IH_TARGET_MATRIX_DESTINATION_PORT_SPARE ,
+
+    DRV_IH_TARGET_MATRIX_NUMBER_OF_DESTINATION_PORTS
+}
+DRV_IH_TARGET_MATRIX_DESTINATION_PORT ;
+
+
+/******************************************************************************/
+/* Target matrix entry                                                        */
+/******************************************************************************/
+typedef struct
+{
+    /* target memory */
+    DRV_IH_TARGET_MEMORY target_memory ;
+
+    /* direct mode */
+    int32_t direct_mode ;
+}
+DRV_IH_TARGET_MATRIX_ENTRY ;
+
+
+
+/******************************************************************************/
+/* Target matrix per SP configuration                                         */
+/******************************************************************************/
+typedef struct
+{
+    /* an array of all entries of a certain source port. */
+    DRV_IH_TARGET_MATRIX_ENTRY entry [ DRV_IH_TARGET_MATRIX_NUMBER_OF_DESTINATION_PORTS ] ;
+}
+DRV_IH_TARGET_MATRIX_PER_SP_CONFIG ;
+
+
+/******************************************************************************/
+/* WAN ports configuration                                                    */
+/* value of true indicates that the corresponding port belongs to WAN         */
+/******************************************************************************/
+typedef struct
+{
+    /* Eth0 */
+    int32_t eth0 ;
+
+    /* Eth1 */
+    int32_t eth1 ;
+
+    /* Eth2 */
+    int32_t eth2 ;
+
+    /* Eth3 */
+    int32_t eth3 ;
+
+    /* Eth4 */
+    int32_t eth4 ;
+
+    /* GPON */
+    int32_t gpon ;
+
+    /* Runner A */
+    int32_t runner_a ;
+
+    /* Runner B */
+    int32_t runner_b ;
+
+    /* PCIE0 */
+    int32_t pcie0 ;
+
+    /* PCIE1 */
+    int32_t pcie1 ;
+}
+DRV_IH_WAN_PORTS_CONFIG ;
+
+
+/******************************************************************************/
+/* Ethertypes for QTAG nesting                                                */
+/* The first 2 Ethertypes indices are for the user defined Ethertypes         */
+/* configured by Set Ethertypes for QTAG Identification API.                  */
+/******************************************************************************/
+typedef enum
+{
+    DRV_IH_ETHERTYPE_FOR_QTAG_NESTING_USER_DEFIEND_0 ,
+    DRV_IH_ETHERTYPE_FOR_QTAG_NESTING_USER_DEFIEND_1 ,
+    DRV_IH_ETHERTYPE_FOR_QTAG_NESTING_8100 ,
+    DRV_IH_ETHERTYPE_FOR_QTAG_NESTING_88A8 ,
+    DRV_IH_ETHERTYPE_FOR_QTAG_NESTING_9100 ,
+    DRV_IH_ETHERTYPE_FOR_QTAG_NESTING_9200 ,
+
+    DRV_IH_NUMBER_OF_ETHERTYPES_FOR_QTAG_NESTING
+}
+DRV_IH_ETHERTYPE_FOR_QTAG_NESTING ;
+
+
+/******************************************************************************/
+/* Critical Bits                                                              */
+/******************************************************************************/
+typedef struct
+{
+    int32_t iq_fifo_full ;
+
+    int32_t iq0_fifo_full ;
+
+    int32_t iq1_fifo_full ;
+
+    int32_t iq2_fifo_full ;
+
+    int32_t iq3_fifo_full ;
+
+    int32_t iq4_fifo_full ;
+
+    int32_t iq5_fifo_full ;
+
+    int32_t iq6_fifo_full ;
+
+    int32_t iq7_fifo_full ;
+
+    int32_t lookup_1_stuck ;
+
+    int32_t lookup_2_stuck ;
+
+    int32_t lookup_3_stuck ;
+
+    int32_t lookup_4_stuck ;
+
+    int32_t look_up_packet_command_fifo_full ;
+
+    int32_t egress_tx_data_fifo_full ;
+
+    int32_t egress_tx_message_fifo_full ;
+
+    int32_t egress_queue_packet_command_fifo_full ;
+}
+DRV_IH_CRITICAL_BITS ;
+
+
+/******************************************************************************/
+/* Parser Configuration                                                       */
+/******************************************************************************/
+typedef struct
+{
+    /* Defines which TCP flags set will cause TCP_FLAG bit in summary word to
+       be set */
+    uint8_t tcp_flags ;
+
+    /* 4-bits mask which defines which status bits will cause exception bit
+       in summary word to be set. The cause vector is {IP fragment, IP
+       version error, IP checksum error, IP header length error}. */
+    uint8_t exception_status_bits ;
+
+    /* when this flag is set, PPP with code 1 is identified as IPV6 (instead of IPV4) */
+    int32_t ppp_code_1_ipv6 ;
+
+    /* 3-bits mask which defines which IPV6 extension headers types will cause 
+       'IPV6 extension header' indication in the summary word. the bits order is:
+       {Destination Options (MSB), Routing Header, Hop-by-Hop Options (LSB)} */
+    uint8_t ipv6_extension_header_bitmask ; 
+
+    /* SNAP user defined organization Code. 24 bit value. This is a
+       user-defined code which is used in addition to RFC1042 and 802.1Q (in
+       case they are enalbed). */
+    uint32_t snap_user_defined_organization_code ;
+
+    /* SNAP RFC1042 encapsulation enable. */
+    int32_t snap_rfc1042_encapsulation_enable ;
+
+    /* SNAP 802.1Q encapsulation enable. */
+    int32_t snap_802_1q_encapsulation_enable ;
+
+    /* GRE protocol. Used for VPN. 16 bit value which is compared to "Protocol
+       type" field of the GRE header. */
+    uint16_t gre_protocol ;
+
+       uint32_t eng_cfg;
+}
+DRV_IH_PARSER_CONFIG ;
+
+
+/******************************************************************************/
+/* IP Filter Selection                                                        */
+/* The enumeration values are compatible with the values used by the HW.      */
+/******************************************************************************/
+typedef enum
+{
+    DRV_IH_IP_FILTER_SELECTION_SOURCE_IP ,
+    DRV_IH_IP_FILTER_SELECTION_DESTINATION_IP
+}
+DRV_IH_IP_FILTER_SELECTION ;
+
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Functions prototypes                                                       */
+/*                                                                            */
+/******************************************************************************/
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_set_general_configuration                                   */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Set general configuration                                    */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function sets general configuration of the IH block.                */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_ih_general_config - IH general configuration.                         */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_set_general_configuration ( const DRV_IH_GENERAL_CONFIG * xi_ih_general_config ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_set_packet_header_offsets                                   */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Set packet header offsets                                    */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function sets packet header offset for each physical port.          */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_packet_header_offsets - Packet header offsets                         */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_set_packet_header_offsets ( const DRV_IH_PACKET_HEADER_OFFSETS * xi_packet_header_offsets ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_set_runner_buffers_configuration                            */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Set Runner Buffers configuration                             */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function sets runner-buffers related configuration, for each        */
+/*   runner.                                                                  */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_runner_buffers_config - Runner Buffers Configuration                  */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_set_runner_buffers_configuration ( const DRV_IH_RUNNER_BUFFERS_CONFIG * xi_runner_buffers_config ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_set_runners_load_thresholds                                 */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Set Runners Load Thresholds                                  */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function sets thresholds related to runner load, for each runner.   */
+/*   The thresholds are in number of occupied Runner Buffers.                 */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_runners_load_thresholds - Runners Load Thresholds (in number of       */
+/*     occupied Runner Buffers)                                               */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_set_runners_load_thresholds ( const DRV_IH_RUNNERS_LOAD_THRESHOLDS * xi_runners_load_thresholds ) ;
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_set_route_addresses                                         */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Set Route Addresses                                          */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function sets route address for each physical port. The route       */
+/*   address is used for broad-bus access for sending responses, message and  */
+/*   data.                                                                    */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_route_addresses - Route Addresses                                     */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_set_route_addresses ( const DRV_IH_ROUTE_ADDRESSES * xi_route_addresses ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_set_logical_ports_configuration                             */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Set Logical Ports Configuration                              */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function sets configuration of the following logical ports:         */
+/*   Ethernet 0-4, GPON, Runner A, Runner B and PCIE 0-1. The following       */
+/*   parameters are configured per port: Parsing layer depth, Proprietary tag */
+/*   size.                                                                    */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_logical_ports_config - Logical Ports Configuration                    */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_set_logical_ports_configuration ( const DRV_IH_LOGICAL_PORTS_CONFIG * xi_logical_ports_config ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_configure_lut_60_bit_key                                    */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Configure Lookup Table 60 bit key                            */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function configures a lookup table with 60-bit key. There is a      */
+/*   total of 10 tables. Note that when configuring a lookup table with       */
+/*   120-bit key (with dedicated API), it occupies 2 tables. The lookup key   */
+/*   is obtained by ORing two 60-bit parts taken from the parser result. Each */
+/*   part has a configurable offset, and optionally a shift & rotate          */
+/*   operation. Initially 64 bits are taken from the configured offset, then  */
+/*   shift & rotate is optionally done, then the 4 MS-bits are omitted. Then  */
+/*   each part is masked with its own mask. Then ORing the left 60 bits of    */
+/*   the 2 parts yields the key. Then a key-extension can optionally be done, */
+/*   i.e. ORing the MS-bits of the key with one of the following values: (1)  */
+/*   5-bit Source Port from Header Descriptor. (2) 8-bit GEM Flow ID from     */
+/*   Header Descriptor. (3) 1-bit WAN/LAN indication extracted from           */
+/*   configuration of the source port. The global mask is applied on both key */
+/*   & LUT entry when comparing between them. Move indication: When "Source   */
+/*   port search enable" parameter is enabled, additional comparison will be  */
+/*   done, between source-port (from Header descriptor) and bits 56:52 of LUT */
+/*   entry, where source-port value should reside. In this case, the global   */
+/*   mask must mask these bits for the regular comparison between the key and */
+/*   LUT entry, which would be a MAC address comparison. If both comparisons  */
+/*   match, the result would be "hit". If only MAC address comparison         */
+/*   matches, the result would be "move".                                     */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_table_index - Table index                                             */
+/*                                                                            */
+/*   xi_lookup_table_60_bit_key_config - Lookup table 60 bit key              */
+/*     configuration                                                          */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_configure_lut_60_bit_key ( uint8_t xi_table_index ,
+                                                            const DRV_IH_LOOKUP_TABLE_60_BIT_KEY_CONFIG * xi_lookup_table_60_bit_key_config ) ;
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_configure_class                                             */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Configure Class                                              */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function configures an IH class. Ingress handler class is type of   */
+/*   ingress traffic, e.g. IPTV, bridged, routed. Each class includes         */
+/*   predefined set of settings, such as: target runner, destination memory,  */
+/*   QoS, definition of look-up searches. There are up to 16 classes. Each    */
+/*   physical port has a default class (For GPON port, default class is per   */
+/*   GEM flow). IH may override the default class according to                */
+/*   enable-override configuration and to classification based on reduced     */
+/*   Parser results, called "Classifier Key Word" (Parser Summary Word plus   */
+/*   source port). Default classes and override-enable configurations are in  */
+/*   BBH. In runner flow, runner assigns an initial class (which can be       */
+/*   overridden by IH). Class override is done using classifiers, which are   */
+/*   configured using Configure Classifier API.                               */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_class_index - Class index                                             */
+/*                                                                            */
+/*   xi_class_config - Class Configuration                                    */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_configure_class ( uint8_t xi_class_index ,
+                                                   const DRV_IH_CLASS_CONFIG * xi_class_config ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_get_classifier_configuration                                */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Get Classifier configuration                                 */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function gets the configuration of a Classifier.                    */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_classifier_index - Classifier index                                   */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   xo_classifier_config - Classifier configuration                          */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_get_classifier_configuration ( uint8_t xi_classifier_index ,
+                                                                DRV_IH_CLASSIFIER_CONFIG * const xo_classifier_config ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_remove_classifier                                           */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Remove Classifier                                            */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function removes a classifier which was configured by Configure     */
+/*   Classifier API. There is no "enable" bit - this function actually sets   */
+/*   the mask to 0 and the key to 11...1 (bitwise) so there will never be a   */
+/*   match.                                                                   */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_classifier_index - Classifier index                                   */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_remove_classifier ( uint8_t xi_classifier_index ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_set_source_port_to_ingress_queue_mapping                    */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Set source port to ingress queue mapping                     */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function sets the mapping of physical source ports (eth0-4, GPON,   */
+/*   runner A, runner B) to ingress queues. There are 8 ingress queues. BBH   */
+/*   or runner (in case of runner flow) writes the Header Descriptor to one   */
+/*   of these queues, according to the configuration of the source port.      */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_source_port_to_ingress_queue_mapping - Source port to ingress queue   */
+/*     mapping                                                                */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_set_source_port_to_ingress_queue_mapping ( const DRV_IH_SOURCE_PORT_TO_INGRESS_QUEUE_MAPPING * xi_source_port_to_ingress_queue_mapping ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_configure_ingress_queue                                     */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Configure ingress queue                                      */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function configures an ingress queue. There are 8 queues. All of    */
+/*   them reside in the same Ingress-queue (IQ) array of 16 entries (ingress  */
+/*   buffers). E.g. queue 0 occupies entries 0-1, queue 1 occupies entries    */
+/*   2-3, etc.                                                                */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_ingress_queue_index - Ingress queue index                             */
+/*                                                                            */
+/*   xi_ingress_queue_config - Ingress queue configuration                    */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_configure_ingress_queue ( uint8_t xi_ingress_queue_index ,
+                                                           const DRV_IH_INGRESS_QUEUE_CONFIG * xi_ingress_queue_config ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_set_target_matrix                                           */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Set Target Matrix                                            */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function sets the per-source-port configuration in the target       */
+/*   matrix, i.e. all entries which belong to the given source port.          */
+/*   Each entry consists of the following parameters: target memory           */
+/*   (DDR/SRAM), direct mode (true/false).                                    */
+/*   The function will fail when trying to configure an "Always DDR" entry    */
+/*   with Target memory = SRAM, or "Always SRAM" entry with                   */
+/*   Target memory = DDR.                                                     */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_source_port - Source port                                             */
+/*                                                                            */
+/*   xi_per_sp_config - Per-source-port configuration                         */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_set_target_matrix ( DRV_IH_TARGET_MATRIX_SOURCE_PORT xi_source_port ,
+                                                     const DRV_IH_TARGET_MATRIX_PER_SP_CONFIG * xi_per_sp_config ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_set_forward                                                 */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Set Target Forward                                           */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function sets the "forward-enable" bit for the given source         */
+/*   port and destination port.                                               */
+/*   The "forward-enable" is only indication to FW (IH doesn't drop if        */
+/*   forwarding is disabled).                                                 */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_source_port - Source port                                             */
+/*                                                                            */
+/*   xi_destination_port - Destination port                                   */
+/*                                                                            */
+/*   xi_forward - Forward                                                     */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_set_forward ( DRV_IH_TARGET_MATRIX_SOURCE_PORT xi_source_port ,
+                                               DRV_IH_TARGET_MATRIX_DESTINATION_PORT xi_destination_port ,
+                                               int32_t xi_forward ) ;
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_configure_wan_ports                                         */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Configure WAN ports                                          */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function configures, for each logical port, whether it belongs to   */
+/*   WAN traffic. IH uses this configuration for WAN indication in the parser */
+/*   result (and Classifier Key Word).                                        */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_wan_ports_config - WAN ports configuration                            */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_configure_wan_ports ( const DRV_IH_WAN_PORTS_CONFIG * xi_wan_ports_config ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_get_allocated_runner_buffers_counters                       */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Get allocated runner buffers counters                        */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function returns the current number of allocated Runner Buffers of  */
+/*   each runner.                                                             */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   xo_runner_a_counter - Runner A counter                                   */
+/*                                                                            */
+/*   xo_runner_b_counter - Runner B counter                                   */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_get_allocated_runner_buffers_counters ( uint32_t * const xo_runner_a_counter ,
+                                                                         uint32_t * const xo_runner_b_counter ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_get_critical_bits                                           */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Get Critical Bits                                            */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function returns the status of the critical bits (debug             */
+/*   indications).                                                            */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   xo_critical_bits - Critical Bits                                         */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_get_critical_bits ( DRV_IH_CRITICAL_BITS * const xo_critical_bits ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_configure_parser                                            */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Configure Parser                                             */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function configures general parameters in the parser accelerator in */
+/*   IH.                                                                      */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_parser_config - Parser Configuration                                  */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_configure_parser ( const DRV_IH_PARSER_CONFIG * xi_parser_config ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_get_da_filter_enable_status                                 */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Get DA filter enable status                                  */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function gets the enable status of a DA filter.                     */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_filter_index - Filter index                                           */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   xo_enable - Enable                                                       */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_get_da_filter_enable_status ( uint8_t xi_filter_index ,
+                                                               int32_t * const xo_enable ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_set_ethertypes_for_qtag_identification                      */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Set Ethertypes for QTAG identification                       */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function sets two user-defined Ethertypes for QTAG (VLAN tag)       */
+/*   identification.                                                          */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_ethertype_0 - Ethertype 0                                             */
+/*                                                                            */
+/*   xi_ethertype_1 - Ethertype 1                                             */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_set_ethertypes_for_qtag_identification ( uint16_t xi_ethertype_0 ,
+                                                                          uint16_t xi_ethertype_1 ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_get_ethertypes_for_qtag_identification                      */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Get Ethertypes for QTAG identification                       */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function gets the two user-defined Ethertypes for QTAG (VLAN tag)   */
+/*   identification                                                           */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   xo_ethertype_0 - Ethertype 0                                             */
+/*                                                                            */
+/*   xo_ethertype_1 - Ethertype 1                                             */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_get_ethertypes_for_qtag_identification ( uint16_t * const xo_ethertype_0 ,
+                                                                          uint16_t * const xo_ethertype_1 ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_configure_qtag_nesting                                      */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Configure QTAG Nesting                                       */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function configures, for 6 possible Ethertypes, whether each        */
+/*   Ethertype can be used for QTAG identification, as inner and as outer     */
+/*   tag. Note that when packet has a single tag, parser treats it as outer   */
+/*   tag.                                                                     */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_ethertype_index - Ethertype index                                     */
+/*                                                                            */
+/*   xi_use_as_outer - Use as outer                                           */
+/*                                                                            */
+/*   xi_use_as_inner - Use as inner                                           */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_configure_qtag_nesting ( DRV_IH_ETHERTYPE_FOR_QTAG_NESTING xi_ethertype_index ,
+                                                          int32_t xi_use_as_outer ,
+                                                          int32_t xi_use_as_inner ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_get_qtag_nesting_configuration                              */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Get QTAG Nesting configuration                               */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function gets the QTAG Nesting configuration of an Ethertype.       */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_ethertype_index - Ethertype index                                     */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   xo_use_as_outer - Use as outer                                           */
+/*                                                                            */
+/*   xo_use_as_inner - Use as inner                                           */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_get_qtag_nesting_configuration ( DRV_IH_ETHERTYPE_FOR_QTAG_NESTING xi_ethertype_index ,
+                                                                  int32_t * const xo_use_as_outer ,
+                                                                  int32_t * const xo_use_as_inner ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_configure_user_ethertype                                    */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Configure User Ethertype                                     */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function configures user defined Ethertype, to be indicated in "L2  */
+/*   Protocol" field in parser result. There are up to 4 user defined         */
+/*   Ethertypes. For such an Ethertype, the API configures which L3 protocol  */
+/*   comes after it, and its offset (for L3 parsing). In order to take        */
+/*   effect, the user Ethertype should be enabled using Enable User Ethertype */
+/*   API.                                                                     */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_ethertype_index - Ethertype index                                     */
+/*                                                                            */
+/*   xi_ethertype_value - Ethertype value                                     */
+/*                                                                            */
+/*   xi_l3_protocol - L3 protocol                                             */
+/*                                                                            */
+/*   xi_l3_offset - L3 offset                                                 */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_configure_user_ethertype ( uint8_t xi_ethertype_index ,
+                                                            uint16_t xi_ethertype_value ,
+                                                            DRV_IH_L3_PROTOCOL xi_l3_protocol ,
+                                                            uint8_t xi_l3_offset ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_get_user_ethertype_configuration                            */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Get User Ethertype configuration                             */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function gets user defined Ethertype configuration.                 */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_ethertype_index - Ethertype index                                     */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   xo_ethertype_value - Ethertype value                                     */
+/*                                                                            */
+/*   xo_l3_protocol - L3 protocol                                             */
+/*                                                                            */
+/*   xo_l3_offset - L3 offset                                                 */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_get_user_ethertype_configuration ( uint8_t xi_ethertype_index ,
+                                                                    uint16_t * const xo_ethertype_value ,
+                                                                    DRV_IH_L3_PROTOCOL * const xo_l3_protocol ,
+                                                                    uint8_t * const xo_l3_offset ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_enable_user_ethertype                                       */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Enable User Ethertype                                        */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function enables/disables a user-defined Ethertype which was        */
+/*   configured by Configure User Ethertype API.                              */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_ethertype_index - Ethertype index                                     */
+/*                                                                            */
+/*   xi_enable - Enable                                                       */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_enable_user_ethertype ( uint8_t xi_ethertype_index ,
+                                                         int32_t xi_enable ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_get_user_ethertype_enable_status                            */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Get User Ethertype enable status                             */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function gets the enable status of a user-defined Ethertype.        */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_ethertype_index - Ethertype index                                     */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   xo_enable - Enable                                                       */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_get_user_ethertype_enable_status ( uint8_t xi_ethertype_index ,
+                                                                    int32_t * const xo_enable ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_set_user_ip_l4_protocol                                     */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Set user IP L4 protocol                                      */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function sets a user-defined L4 Protocol ID to be matched to        */
+/*   Protocol field in IP header and to be indicated in the output summary    */
+/*   word. There are up to 4 user-defined L4 protocols.                       */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_l4_protocol_index - L4 protocol index                                 */
+/*                                                                            */
+/*   xi_l4_protocol_value - L4 protocol value                                 */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_set_user_ip_l4_protocol ( uint8_t xi_l4_protocol_index ,
+                                                           uint8_t xi_l4_protocol_value ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_get_user_ip_l4_protocol                                     */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Get user IP L4 protocol                                      */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function gets a user-defined L4 Protocol.                           */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_l4_protocol_index - L4 protocol index                                 */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   xo_l4_protocol_value - L4 protocol value                                 */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_get_user_ip_l4_protocol ( uint8_t xi_l4_protocol_index ,
+                                                           uint8_t * const xo_l4_protocol_value ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_set_ppp_code                                                */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Set PPP code                                                 */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function sets PPP Protocol Code to indicate L3 is IP.               */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_ppp_code_index - PPP code index                                       */
+/*                                                                            */
+/*   xi_ppp_code - PPP code                                                   */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_set_ppp_code ( uint8_t xi_ppp_code_index ,
+                                                uint16_t xi_ppp_code ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_get_ppp_code                                                */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Get PPP code                                                 */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function gets PPP Protocol Code.                                    */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_ppp_code_index - PPP code index                                       */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   xo_ppp_code - PPP code                                                   */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_get_ppp_code ( uint8_t xi_ppp_code_index ,
+                                                uint16_t * const xo_ppp_code ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_set_vid_filter                                              */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Set VID filter                                               */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function sets a VID filter. There are up to 12 VID filters. The     */
+/*   filter has to be enabled by Enable VID filter API in order to take       */
+/*   effect.                                                                  */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_filter_index - Filter index                                           */
+/*                                                                            */
+/*   xi_vid - VID                                                             */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_set_vid_filter ( uint8_t xi_filter_index ,
+                                                  uint16_t xi_vid ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_get_vid_filter                                              */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Get VID filter                                               */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function gets a VID filter. There are up to 12 VID filters.         */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_filter_index - Filter index                                           */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   xo_vid - VID                                                             */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_get_vid_filter ( uint8_t xi_filter_index ,
+                                                  uint16_t * const xo_vid ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_enable_vid_filter                                           */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Enable VID filter                                            */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function enables/disables a VID filter. There are up to 12 VID      */
+/*   filters. Before enabling a filter, it should be configured by Set VID    */
+/*   filter API.                                                              */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_filter_index - Filter index                                           */
+/*                                                                            */
+/*   xi_enable - Enable                                                       */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_enable_vid_filter ( uint8_t xi_filter_index ,
+                                                     int32_t xi_enable ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_get_vid_filter_enable_status                                */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Get VID filter enable status                                 */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function gets the enable status of a VID filter. There are up to 12 */
+/*   VID filters.                                                             */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_filter_index - Filter index                                           */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   xo_enable - Enable                                                       */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_get_vid_filter_enable_status ( uint8_t xi_filter_index ,
+                                                                int32_t * const xo_enable ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_set_ip_filter                                               */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Set IP filter                                                */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function sets an IP filter. There are up to 4 IP filters. The       */
+/*   filter has to be enabled by Enable IP filter API in order to take        */
+/*   effect.                                                                  */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_filter_index - Filter index                                           */
+/*                                                                            */
+/*   xi_ip_address - IP address                                               */
+/*                                                                            */
+/*   xi_ip_address_mask - IP address mask                                     */
+/*                                                                            */
+/*   xi_selection - selection (SIP/DIP)                                       */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_set_ip_filter ( uint8_t xi_filter_index ,
+                                                 uint32_t xi_ip_address ,
+                                                 uint32_t xi_ip_address_mask ,
+                                                 DRV_IH_IP_FILTER_SELECTION xi_selection ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_get_ip_filter                                               */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Get IP filter                                                */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function gets an IP filter. There are up to 4 IP filters.           */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_filter_index - Filter index                                           */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   xo_ip_address - IP address                                               */
+/*                                                                            */
+/*   xo_ip_address_mask - IP address mask                                     */
+/*                                                                            */
+/*   xo_selection - selection (SIP/DIP)                                       */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_get_ip_filter ( uint8_t xi_filter_index ,
+                                                 uint32_t * const xo_ip_address ,
+                                                 uint32_t * const xo_ip_address_mask ,
+                                                 DRV_IH_IP_FILTER_SELECTION * const xo_selection ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_enable_ip_filter                                            */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Enable IP filter                                             */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function enables/disables an IP filter. There are up to 4 IP        */
+/*   filters. Before enabling a filter, it should be configured by Set IP     */
+/*   filter API.                                                              */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_filter_index - Filter index                                           */
+/*                                                                            */
+/*   xi_enable - Enable                                                       */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_enable_ip_filter ( uint8_t xi_filter_index ,
+                                                    int32_t xi_enable ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_get_ip_filter_enable_status                                 */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Get IP filter enable status                                  */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function gets the enable status of an IP filter. There are up to 4  */
+/*   IP filters.                                                              */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_filter_index - Filter index                                           */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   xo_enable - Enable                                                       */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_get_ip_filter_enable_status ( uint8_t xi_filter_index ,
+                                                               int32_t * const xo_enable ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_set_dscp_to_tci_table_entry                                 */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Set DSCP to TCI table entry                                  */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function sets an entry in a DSCP to TCI table. There are 2 such     */
+/*   tables. Each class is configured with one of these tables. The table has */
+/*   to be enabled by Enable DSCP to TCI table API in order to take effect.   */
+/*   If a class is configured with a table which is not enabled, the TCI will */
+/*   be 0.                                                                    */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_table_index - Table index                                             */
+/*                                                                            */
+/*   xi_dscp - DSCP                                                           */
+/*                                                                            */
+/*   xi_tci - TCI                                                             */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_set_dscp_to_tci_table_entry ( uint8_t xi_table_index ,
+                                                               uint8_t xi_dscp ,
+                                                               uint8_t xi_tci ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_get_dscp_to_tci_table_entry                                 */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Get DSCP to TCI table entry                                  */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function gets an entry in a DSCP to TCI table. There are 2 such     */
+/*   tables.                                                                  */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_table_index - Table index                                             */
+/*                                                                            */
+/*   xi_dscp - DSCP                                                           */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   xo_tci - TCI                                                             */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_get_dscp_to_tci_table_entry ( uint8_t xi_table_index ,
+                                                               uint8_t xi_dscp ,
+                                                               uint8_t * const xo_tci ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_set_default_tci                                             */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Set default TCI                                              */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function sets default TCI, per DSCP to TCI table. The default is    */
+/*   used in case of non-IP untagged packet. The default TCI will take effect */
+/*   only after enabling the DSCP to TCI table, by Enable DSCP to TCI table   */
+/*   API. If a class is configured with a table which is not enabled, the TCI */
+/*   will be 0.                                                               */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_table_index - Table index                                             */
+/*                                                                            */
+/*   xi_default_tci - Default TCI                                             */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_set_default_tci ( uint8_t xi_table_index ,
+                                                   uint8_t xi_default_tci ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_get_default_tci                                             */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Get default TCI                                              */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function gets the default TCI, per DSCP to TCI table.               */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_table_index - Table index                                             */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   xo_default_tci - Default TCI                                             */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_get_default_tci ( uint8_t xi_table_index ,
+                                                   uint8_t * const xo_default_tci ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_enable_dscp_to_tci_table                                    */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Enable DSCP to TCI table                                     */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function enables/disables a DSCP to TCI table. There are 2 such     */
+/*   tables. Each class is configured with one of these tables. Before        */
+/*   enabling a table, it should be configured by Set DSCP to TCI table API   */
+/*   and Set default TCI API.                                                 */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_table_index - Table index                                             */
+/*                                                                            */
+/*   xi_enable - Enable                                                       */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_enable_dscp_to_tci_table ( uint8_t xi_table_index ,
+                                                            int32_t xi_enable ) ;
+
+
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_get_dscp_to_tci_table_enable_status                         */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Get DSCP to TCI table enable status                          */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function gets the enable status of a DSCP to TCI table. There are 2 */
+/*   such tables.                                                             */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_table_index - Table index                                             */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   xo_enable - Enable                                                       */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                        */
+/*     DRV_IH_NO_ERROR - No error                                       */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                       */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_get_dscp_to_tci_table_enable_status ( uint8_t xi_table_index ,
+                                                                       int32_t * const xo_enable ) ;
+/******************************************************************************/
+/*                                                                            */
+/* Name:                                                                      */
+/*                                                                            */
+/*   fi_bl_drv_ih_configure_parser_core_cfg_eng_3rd_tag_detection             */
+/*                                                                            */
+/* Title:                                                                     */
+/*                                                                            */
+/*   IH Driver - Configure Parser ENG register                                */
+/*                                                                            */
+/* Abstract:                                                                  */
+/*                                                                            */
+/*   This function configures the ENG register (bits 8-13 are for triple      */
+/*   tag detection)                                                           */
+/*                                                                            */
+/* Input:                                                                     */
+/*                                                                            */
+/*   xi_enable - ENG register bit value                                       */
+/*                                                                            */
+/*   xi_tpid_index - ENG register internal bit index                          */
+/*                                                                            */
+/* Output:                                                                    */
+/*                                                                            */
+/*   DRV_IH_ERROR - Return code                                               */
+/*     DRV_IH_NO_ERROR - No error                                             */
+/*     DRV_IH_ERROR_INVALID_INDEX - Invalid index                             */
+/*                                                                            */
+/******************************************************************************/
+DRV_IH_ERROR fi_bl_drv_ih_configure_parser_core_cfg_eng_3rd_tag_detection ( uint32_t xi_enable,
+               uint8_t xi_tpid_index );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+