| |
| /******************************************************************************* |
| Copyright (C) Marvell International Ltd. and its affiliates |
| |
| This software file (the "File") is owned and distributed by Marvell |
| International Ltd. and/or its affiliates ("Marvell") under the following |
| alternative licensing terms. Once you have made an election to distribute the |
| File under one of the following license alternatives, please (i) delete this |
| introductory statement regarding license alternatives, (ii) delete the two |
| license alternatives that you have not elected to use and (iii) preserve the |
| Marvell copyright notice above. |
| |
| ******************************************************************************** |
| Marvell Commercial License Option |
| |
| If you received this File from Marvell and you have entered into a commercial |
| license agreement (a "Commercial License") with Marvell, the File is licensed |
| to you under the terms of the applicable Commercial License. |
| |
| ******************************************************************************** |
| Marvell GPL License Option |
| |
| If you received this File from Marvell, you may opt to use, redistribute and/or |
| modify this File in accordance with the terms and conditions of the General |
| Public License Version 2, June 1991 (the "GPL License"), a copy of which is |
| available along with the File in the license.txt file or by writing to the Free |
| Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or |
| on the worldwide web at http://www.gnu.org/licenses/gpl.txt. |
| |
| THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED |
| WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY |
| DISCLAIMED. The GPL License provides additional details about this warranty |
| disclaimer. |
| ******************************************************************************** |
| Marvell BSD License Option |
| |
| If you received this File from Marvell, you may opt to use, redistribute and/or |
| modify this File under the following licensing terms. |
| Redistribution and use in source and binary forms, with or without modification, |
| are permitted provided that the following conditions are met: |
| |
| * Redistributions of source code must retain the above copyright notice, |
| this list of conditions and the following disclaimer. |
| |
| * Redistributions in binary form must reproduce the above copyright |
| notice, this list of conditions and the following disclaimer in the |
| documentation and/or other materials provided with the distribution. |
| |
| * Neither the name of Marvell nor the names of its contributors may be |
| used to endorse or promote products derived from this software without |
| specific prior written permission. |
| |
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
| ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
| WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR |
| ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
| (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON |
| ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
| SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| |
| ******************************************************************************/ |
| /******************************************************************************* |
| * tpm_db.h |
| * |
| * DESCRIPTION: |
| * Traffic Processor Manager = TPM |
| * |
| * DEPENDENCIES: |
| * None |
| * |
| * CREATED BY: OctaviaP |
| * |
| * DATE CREATED: |
| * |
| * FILE REVISION NUMBER: |
| * Revision: 1.4 |
| * |
| * |
| *******************************************************************************/ |
| #ifndef _TPM_DB_H_ |
| #define _TPM_DB_H_ |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /*************************************************************/ |
| /* ENUMERATIONS */ |
| /*************************************************************/ |
| |
| typedef enum tpm_db_error { |
| TPM_DB_OK = TPM_OK, |
| TPM_DB_ERR_DB_TBL_FULL, |
| TPM_DB_ERR_DB_TBL_INV, |
| TPM_DB_ERR_INV_INPUT, |
| TPM_DB_ERR_DB_INCONSISTENCY, |
| TPM_DB_ERR_RANGE_EXIST, |
| TPM_DB_ERR_REC_NOT_EXIST, |
| TPM_DB_ERR_REC_EXIST, |
| TPM_DB_ERR_REC_INV, |
| TPM_DB_ERR_REC_STATUS_ERR, |
| TPM_DB_ERR_MEM_ALLOC_FAIL, |
| TPM_DB_ERR_PORT_NUM = 0xFF |
| } tpm_db_error_t; |
| |
| /* Possible roles an Ethernet GMAC or PON MAC can play */ |
| typedef enum { |
| TPM_GMAC_FUNC_NONE, |
| TPM_GMAC_FUNC_LAN, |
| TPM_GMAC_FUNC_WAN, |
| TPM_GMAC_FUNC_LAN_AND_WAN, |
| TPM_GMAC_FUNC_VIRT_UNI, |
| TPM_GMAC_FUNC_LAN_UNI, |
| TPM_GMAC_FUNC_US_MAC_LEARN_DS_LAN_UNI /* For Media Convert Loopback mode */ |
| } tpm_db_gmac_func_t; |
| |
| typedef enum { |
| TPM_MOD_ENTRY_FREE, |
| TPM_MOD_ENTRY_BOOKED, |
| TPM_MOD_ENTRY_OCCUPIED, |
| TPM_MOD_ENTRY_RESERVED, |
| TPM_MOD_ENTRY_SPLIT_MOD, |
| TPM_MOD_ENTRY_STATUS_MAX, |
| } tpm_mod_entry_status_t; |
| |
| typedef enum { |
| TPM_PNC_RNG_LAST_INIT_DEF, /* Last entry in PnC range is regular entry */ |
| TPM_PNC_RNG_LAST_INIT_DROP, /* Last entry in PnC range is hardcoded to DROP */ |
| TPM_PNC_RNG_LAST_INIT_TRAP /* Last entry in PnC range is hardcoded to TRAP to CPU */ |
| } tpm_db_pnc_rng_last_ent_t; |
| |
| typedef enum { |
| TPM_GMAC1_QUEUE_DATA_TRAFFIC, |
| TPM_GMAC1_QUEUE_MAC_LEARN_TRAFFIC, |
| }tpm_db_gmac1_lpk_queue_type_t; |
| |
| typedef tpm_init_sched_t tpm_db_sched_t; |
| typedef tpm_init_port_admin_t tpm_db_port_admin_t; |
| typedef tpm_init_port_speed_t tpm_db_port_speed_t; |
| typedef tpm_init_port_duplex_t tpm_db_port_duplex_t; |
| typedef tpm_init_chip_conn_t tpm_db_chip_conn_t; |
| typedef tpm_init_int_conn_t tpm_db_int_conn_t; |
| typedef tpm_init_gmac_conn_t tpm_db_gmac_conn_t; |
| typedef tpm_init_gmac_bufs_t tpm_db_gmac_bufs_t; |
| typedef tpm_init_gmac_rx_t tpm_db_gmac_rx_t; |
| typedef tpm_init_gmac_rxq_t tpm_db_gmac_rxq_t; |
| typedef tpm_init_txq_owner_t tpm_db_txq_owner_t; |
| typedef tpm_init_pon_type_t tpm_db_pon_type_t; |
| typedef tpm_init_tx_mod_t tpm_db_tx_mod_t; |
| typedef tpm_init_mh_src_t tpm_db_mh_src_t; |
| typedef tpm_init_mtu_setting_enable_t tpm_db_mtu_setting_enable_t; |
| typedef tpm_init_pppoe_add_enable_t tpm_db_pppoe_add_enable_t; |
| typedef tpm_init_ttl_illegal_action_t tpm_db_ttl_illegal_action_t; |
| typedef tpm_init_fc_params_t tpm_db_fc_params_t; |
| typedef tpm_init_tcp_flag_check_t tpm_db_tcp_flag_check_t; |
| typedef tpm_init_ety_dsa_enable_t tpm_db_ety_dsa_enable_t; |
| typedef tpm_init_split_mod_enable_t tpm_db_split_mod_enable_t; |
| typedef tpm_init_ctc_cm_enable_t tpm_db_ctc_cm_enable_t; |
| typedef tpm_init_split_mod_mode_t tpm_db_split_mod_mode_t; |
| typedef tpm_ctc_cm_ipv6_parse_win_t tpm_db_ctc_cm_ipv6_parse_win_t; |
| typedef tpm_init_ds_mac_based_trunk_enable_t tpm_db_ds_mac_based_trunk_enable_t; |
| |
| /*************************************************************/ |
| /* DEFINITIONS */ |
| /*************************************************************/ |
| |
| #define TPM_DB_TOTAL_API_SIZE (512) |
| |
| /* Defines the amount of memory margin (in units of tpm_db_api_entry_t), |
| between each pair of API Range Entries Table. */ |
| #define TPM_DB_API_SECTION_MARGIN_SIZE (3) |
| |
| #define TPM_DB_API_NOT_BUSY (-1) |
| |
| /* Define total Margin memory allocated for the margin between each pair |
| of API Range tables, + before the first API Range Entries table. |
| (in units of tpm_db_api_entry_t) */ |
| #define TPM_DB_API_SECTION_MARGIN_ALLOC \ |
| (TPM_DB_API_SECTION_MARGIN_SIZE * (TPM_MAX_NUM_API_SECTIONS * TPM_NUM_DIRECTIONS + 1)) |
| |
| /* Total table size is tot_num_api_entries + tot_margin */ |
| #define TPM_DB_API_ENTRIES_TBL_SIZE (TPM_DB_TOTAL_API_SIZE + TPM_DB_API_SECTION_MARGIN_ALLOC) |
| #define TPM_DB_VALID (1) |
| #define TPM_DB_INVALID (0xBEEF) |
| #define TPM_DB_INVALID_OWNER (0xFF) |
| |
| #define TPM_MOD2_NULL_ENT_IDX (0x1000) |
| |
| #define TPM_MOD2_MAIN_CHAIN_SIZE (19) |
| #define TPM_MOD2_SUBR_MAC_CHAIN_SIZE (3) |
| #define TPM_MOD2_SUBR_IP_CHAIN_SIZE (2) |
| |
| #define TPM_MOD2_JUMP_AREA_SIZE (203) |
| #define TPM_MOD2_MAIN_AREA_SIZE (TPM_MOD2_MAIN_CHAIN_SIZE * TPM_MOD2_JUMP_AREA_SIZE) |
| #define TPM_MOD2_SUBR_AREA_SIZE (0) |
| #define TPM_MOD2_APPL_SUBR_AREA_SIZE (35) |
| |
| #define TPM_MC_VID_NUM_MAX (1 << TPM_NUM_MC_VID_BITS) |
| #define TPM_MC_VLAN_MAX_PNC_RULE_NUM (16) |
| |
| #define TPM_MC_IPv6_SIP_NUM_MAX (8) |
| |
| #define TPM_MOD2_MAX_MH_CHAIN_SIZE (1) |
| #define TPM_MOD2_MAX_MAC_CHAIN_SIZE (3) |
| #define TPM_MOD2_MAX_VLAN_CHAIN_SIZE (2) |
| #define TPM_MOD2_MAX_PPPOE_CHAIN_SIZE (2) |
| #define TPM_MOD2_MAX_IPV6_PPPOE_CHAIN_SIZE (5) |
| #define TPM_MOD2_MAX_L2_TWO_TAG_CHAIN_SIZE (4) |
| #define TPM_MOD2_MAX_L2_ONE_TAG_CHAIN_SIZE (3) |
| #define TPM_MOD2_MAX_IPV4_NAPT_W_PPPOE_CHAIN_SIZE (14) /* Single Vlan Modification */ |
| #define TPM_MOD2_MAX_IPV4_NAPT_WO_PPPOE_CHAIN_SIZE (13) |
| #define TPM_MOD2_MAX_IPV4_MC_W_MH_CHAIN_SIZE (8) /* PPPoE + Proxy (Single Vlan Modification) */ |
| #define TPM_MOD2_MAX_IPV4_MC_WO_MH_CHAIN_SIZE (7) |
| #define TPM_MOD2_MAX_ROUTE_W_PPPOE_CHAIN_SIZE (7) |
| #define TPM_MOD2_MAX_ROUTE_WO_PPPOE_CHAIN_SIZE (6) |
| #define TPM_MOD2_MAX_IPV6_MC_W_MH_CHAIN_SIZE (8) |
| #define TPM_MOD2_MAX_IPV6_MC_WO_MH_CHAIN_SIZE (7) |
| |
| #define TPM_MOD2_TOTAL_PMT_SIZE (4096 - 1/* zero entry is reserved */) |
| #define TPM_MOD2_MAX_JUMP_ENTRIES_NUM (1024 - 1/* zero entry is reserved */) |
| |
| #define TPM_DB_IPV6_MAX_KEY_NUM (128) |
| |
| #define TPM_DB_IPV6_MAX_SUBFLOW_NUM ((1 << TPM_NUM_IPV6_SUBFLOW_BITS) - 1) |
| #define TPM_DB_IPV6_MAX_5T_FLOW_NUM (128) |
| |
| #define TPM_DB_INVALID_IPV6_KEY_ID (0xFFFF) |
| #define TPM_DB_INVALID_IPV6_FLOW_ID (0xFFFF) |
| |
| #define TPM_DB_IPV6_L4_SUBFLOW_PARSE_BM_MASK (TPM_IPv6_PARSE_NH | TPM_PARSE_L4_SRC | TPM_PARSE_L4_DST) |
| #define TPM_DB_IPV6_GEN_SUBFLOW_PARSE_BM_MASK (TPM_IPv6_PARSE_SIP | TPM_DB_IPV6_L4_SUBFLOW_PARSE_BM_MASK) |
| |
| #define TPM_DB_SPLIT_MOD_P_BIT_MAX (7) |
| #define TPM_DB_SPLIT_MOD_P_BIT_NUM_MAX (8) |
| #define TPM_DB_SPLIT_MOD_P_BIT_NO_SET (0) |
| #define TPM_DB_SPLIT_MOD_NUM_VLANS_MAX (18) |
| #define TPM_DB_SPLIT_MOD_INIT_VLANS_NUM (2) |
| |
| #define TPM_DB_CNM_MAX_IPV4_PRE_FILTER_KEY_NUM (TPM_CNM_IPV4_PRE_FILTER_KEY_MAX) |
| #define TPM_DB_CNM_MAX_IPV4_PRE_FILTER_RULE_NUM (TPM_CNM_MAX_IPV4_PRE_FILTER_RULE_PER_PORT * TPM_MAX_NUM_UNI_PORTS) |
| |
| #define TPM_DB_CNM_INVALID_IPV4_PRE_RULE_INDEX (0x0) |
| |
| #define TPM_DB_CNM_GEN_IPV4_PRE_RULE_INDEX(p, k) \ |
| ((((k) & TPM_DB_CNM_IPV4_PRE_RULE_INDEX_KEY_MASK) << TPM_DB_CNM_IPV4_PRE_RULE_INDEX_KEY_OFFSET) | \ |
| (((p) & TPM_DB_CNM_IPV4_PRE_RULE_INDEX_PORT_MASK) << TPM_DB_CNM_IPV4_PRE_RULE_INDEX_PORT_OFFSET)) |
| |
| #define TPM_DB_CNM_IPV4_PRE_RULE_INDEX_PORT_OFFSET (0) |
| #define TPM_DB_CNM_IPV4_PRE_RULE_INDEX_PORT_LEN (16) |
| #define TPM_DB_CNM_IPV4_PRE_RULE_INDEX_PORT_MASK ((1 << TPM_DB_CNM_IPV4_PRE_RULE_INDEX_PORT_LEN) - 1) |
| |
| #define TPM_DB_CNM_IPV4_PRE_RULE_INDEX_KEY_OFFSET (16) |
| #define TPM_DB_CNM_IPV4_PRE_RULE_INDEX_KEY_LEN (16) |
| #define TPM_DB_CNM_IPV4_PRE_RULE_INDEX_KEY_MASK ((1 << TPM_DB_CNM_IPV4_PRE_RULE_INDEX_KEY_LEN) - 1) |
| |
| /*************************************************************/ |
| /* STRUCTURES */ |
| /*************************************************************/ |
| |
| /*****************************/ |
| /* API DB related structures */ |
| /*****************************/ |
| |
| /* Structure represents the connection between an API call and the modification table entry (if exists) |
| * that implemented the modification request in that API call */ |
| typedef struct { |
| uint32_t mod_cmd_ind; /* Index to the modification command table related to this API entry */ |
| tpm_gmacs_enum_t mod_cmd_mac; /* Only a single "dest MAC" can be set.If none are set, mod_cmd_ind is not used. */ |
| } tpm_db_mod_conn_t; |
| |
| /* Structure represents the connection between an API call and a PnC entry that implemented |
| * or partially implemented that API call */ |
| typedef struct { |
| uint32_t pnc_range; /* The pnc_range where the API call was implemented */ |
| uint32_t pnc_index; /* The index in the PnC range where the API call is implemented */ |
| } tpm_db_pnc_conn_entry_t; |
| |
| /* Structure represents the connection between an API call and all the PnC entries that implemented the API call */ |
| typedef struct { |
| uint32_t num_pnc_ranges; /* Number of PNC entries associated with this API entry, |
| * equals to '1' unless the API call spans over multiple PnC ranges, |
| * e.g. IPv6 DIP+SIP */ |
| /* Upto TPM_MAX_API_MULTI_RANGES PnC entries may be needed to implement an API call */ |
| tpm_db_pnc_conn_entry_t pnc_conn_tbl[TPM_MAX_API_MULTI_RANGES]; |
| } tpm_db_pnc_conn_t; |
| |
| /* Structure represents an API call, including all param data and the link to Pnc and modif_table implementation */ |
| typedef struct { |
| uint32_t valid; /* invalid - 0xBEEF */ |
| uint32_t bi_dir; /* Some API entries may be bi-directional */ |
| uint32_t rule_num; /* Current rule number in acl/table */ |
| uint32_t rule_idx; /* Original rule number in acl/table, when entry was created */ |
| tpm_rule_entry_t api_rule_data; /* tpm_rule_entry_t is defined in tpm_types.h */ |
| tpm_db_mod_conn_t mod_tbl_conn; /* API connection to the modification table */ |
| tpm_db_pnc_conn_t pnc_tbl_conn; /* API connection to the PnC */ |
| } tpm_db_api_entry_t; |
| |
| /* Structure represents an API acl/table */ |
| typedef struct { |
| uint32_t valid; |
| /* The primary pnc_range_id, for those api_sections that a uniquely linked onc_range. */ |
| tpm_pnc_ranges_t prim_pnc_range; |
| uint32_t table_size; /* (cont.) e.g. - All API's except for IPV6, IPV6 MC */ |
| uint32_t table_start; /* Start index in the api_ent_mem_area */ |
| uint32_t num_valid_entries; |
| int32_t last_valid_entry; /* Equals to rule with highest rulenum in the api_table */ |
| int32_t last_valid_index; /* Highest Occupied Index in the api_table */ |
| } tpm_db_api_section_t; |
| |
| typedef struct { |
| uint32_t table_size; /* (cont.) e.g. - All API's except for IPV6, IPV6 MC */ |
| uint32_t table_start; /* Start index in the api_ent_mem_area */ |
| } tpm_db_api_check_t; |
| |
| /*****************************/ |
| /* PNC related structures */ |
| /*****************************/ |
| |
| typedef struct { |
| tpm_range_type_t range_type; /* Pnc Range type, ACL or Table */ |
| /* PnC range LookupId. If range spans over multiple lookupIds |
| (e.g. IPV6 DIP/DIP), this is the first one. */ |
| uint32_t base_lu_id; |
| /* Determines the minimum reset_level that will perform a reset to this PnC range */ |
| tpm_reset_level_enum_t min_reset_level; |
| uint32_t num_luids; /* Number of LookupIds this PnC range spans over, usually '1'. |
| * Multiple lu_ids, when PnC range must support large number of sessions in the TCAM */ |
| tpm_pnc_ranges_t range_id; |
| uint32_t range_start; /* Range's Physical PnC start entry */ |
| uint32_t range_end; /* Range's Physical PnC end entry */ |
| uint32_t range_size; /* Range's Physical PnC size */ |
| uint32_t cntr_grp; /* Range's counter group number, from 0 to 3 */ |
| /* Range's least used mask flag, 1: mask least used functions, |
| 0:enbale least used function of this PnC range */ |
| uint32_t lu_mask; |
| uint32_t api_start; /* First available entry for api's. (Relative to range_start) */ |
| uint32_t api_end; /* Last available entry for api's. (Relative to range_start) */ |
| /* How to init last entry of the PNC range (drop, trap to CPU, or no special treatment). */ |
| tpm_db_pnc_rng_last_ent_t init_last_entry; |
| /* For pnc_ranges with multiple lu_id, init_last_entry must be repeated for each lu_id. */ |
| /* GMAC's that are included in TCAM in last_entry (drop/trap) treatment. */ |
| tpm_gmac_bm_t last_ent_portid; |
| } tpm_db_pnc_range_conf_t; |
| |
| /* Structure represents a PnC range */ |
| typedef struct { |
| uint32_t free_entries; /* Number of unused PnC entries in Range */ |
| uint32_t num_resets; /* Number of resets the range has been through */ |
| } tpm_db_pnc_range_oper_t; |
| |
| /* Structure represents a PnC range */ |
| typedef struct { |
| uint32_t valid; /* invalid - 0xBEEF */ |
| tpm_db_pnc_range_conf_t pnc_range_conf; |
| tpm_db_pnc_range_oper_t pnc_range_oper; |
| } tpm_db_pnc_range_t; |
| |
| /* Structure represents DB info for a PnC entry */ |
| typedef struct { |
| uint32_t valid; /* invalid - 0xBEEF */ |
| tpm_pnc_all_t pnc_data; /* Shadow of the PnC configuration of this entry */ |
| } tpm_db_pnc_shadow_t; |
| |
| typedef struct { |
| uint32_t valid; /* invalid - 0xBEEF */ |
| uint32_t tpid_ether_type; /* Modification data associated with this entry */ |
| } tpm_db_etype_sel_t; |
| |
| typedef struct { |
| uint32_t tpm_reserved; /* Reserved modification entries for TPM rules */ |
| } tpm_db_mod_config_t; |
| |
| typedef struct { |
| tpm_mod2_entry_t entry; /* Modification table entry */ |
| uint16_t pnc_num_ref; /* Number of references from Pnc entries to this modification rule */ |
| uint16_t owner; /* Owner of modification entry - TPM rule or CPU application */ |
| uint32_t valid; |
| } tpm_db_mod2_shadow_t; |
| |
| typedef struct { |
| uint8_t mac[TPM_SA_LEN]; |
| uint16_t mod_idx; /* Start index of the commands chain in the modification table */ |
| uint16_t mod_num_ref; /* Number of references from modification table to this MAC entry */ |
| uint32_t valid; |
| |
| } tpm_mod2_mac_translation_t; |
| |
| typedef struct { |
| uint8_t ip[TPM_IPV4_SIP_LEN]; |
| uint16_t mod_idx; /* Start index of the commands chain in the modification table */ |
| uint16_t mod_num_ref; /* Number of references from modification table to this MAC entry */ |
| uint32_t valid; |
| |
| } tpm_mod2_ip_translation_t; |
| |
| /*typedef uint16_t (*parse_jump_index_func_t)(tpm_mod2_entry_t *pattern); */ |
| |
| typedef struct { |
| tpm_mod_entry_status_t status; |
| tpm_mod2_entry_t pattern; |
| } tpm_mod2_jump_pmt_info_t; |
| |
| typedef struct { |
| tpm_mod_entry_status_t status; |
| tpm_chain_type_t chain_type; |
| tpm_mod2_entry_t pattern; |
| uint16_t chain_id; |
| } tpm_mod2_chain_pmt_info_t; |
| |
| typedef struct { |
| tpm_mod_entry_status_t status; |
| uint16_t base_entry; |
| uint16_t entry_num; |
| uint16_t user_num; |
| } tpm_mod2_chain_info_t; |
| |
| typedef struct { |
| uint16_t base_entry; |
| uint16_t total_num; |
| uint16_t split_num; |
| uint16_t next_free[TPM_MAX_NUM_GMACS]; |
| uint16_t next_split[TPM_MAX_NUM_GMACS]; |
| uint16_t split_pbit_num; |
| } tpm_mod2_jump_cfg_t; |
| |
| typedef struct { |
| uint16_t base_entry; |
| uint16_t subr_chain; |
| uint16_t total_num; |
| uint16_t max_size; |
| uint16_t next_free[TPM_MAX_NUM_GMACS]; |
| } tpm_mod2_chain_cfg_t; |
| |
| /*****************************/ |
| /* API Ownership Structures */ |
| /*****************************/ |
| /* |
| TBD |
| Structures |
| API Group enum |
| */ |
| /*****************************/ |
| /* Initialization Structures */ |
| /*****************************/ |
| |
| typedef struct { |
| uint32_t omci_etype; |
| uint32_t tpm_init_succeeded; |
| |
| uint32_t oam_channel_configured;/* omci or oam channel configured */ |
| uint16_t omci_gemport; |
| uint32_t oam_cpu_rx_q; /* omci cpu rx q or oam cpu rx q */ |
| uint32_t oam_cpu_tx_q; /* omci cpu tx q or oam cpu tx q */ |
| uint32_t oam_cpu_tx_port; /* omci tcount or oam llid */ |
| |
| uint32_t pnc_init_debug_port; |
| uint32_t oam_loopback_channel_configured; |
| tpm_db_pon_type_t pon_type; |
| tpm_gmacs_enum_t active_wan; |
| |
| tpm_db_mh_src_t ds_mh_set_conf; |
| |
| tpm_init_cfg_pnc_parse_t cfg_pnc_parse; |
| |
| tpm_init_cpu_loopback_t cpu_loopback; |
| |
| tpm_init_ipv6_5t_enable_t ipv6_5t_enable; |
| |
| tpm_init_double_tag_t dbl_tag; |
| |
| #if 0 |
| uint16_t vlan1_tpid; |
| uint16_t vlan2_tpid; |
| #endif |
| tpm_init_tpid_opt_t tag_tpid; |
| tpm_init_pnc_mac_learn_enable_t pnc_mac_learn_enable; |
| |
| } tpm_db_misc_t; |
| |
| /* Structure holds the IGMP/MLD settings */ |
| typedef struct { |
| uint32_t igmp_snoop_enable; |
| uint32_t frwd_mode[TPM_MAX_NUM_PORTS]; |
| uint32_t cpu_queue; |
| tpm_mc_filter_mode_t filter_mode; |
| /*tpm_mc_igmp_mode_t igmp_mode; */ |
| uint8_t per_uni_vlan_xlat; |
| uint8_t mc_pppoe_enable; |
| uint8_t mc_hwf_queue; |
| uint8_t mc_cpu_queue; |
| uint8_t mc_lpbk_enable[TPM_IP_VER_MAX]; |
| } tpm_db_igmp_t; |
| |
| /* Structure holds the physical connections of all external Ethernet ports */ |
| typedef struct { |
| uint32_t valid; |
| tpm_src_port_type_t port_src; /* Port number according to Device port numbering scheme */ |
| tpm_db_chip_conn_t chip_connect; /* Connection to physical output lines on SoC */ |
| tpm_db_int_conn_t int_connect; /* Internal Ethernet device port is connected to */ |
| uint32_t switch_port; /* Port of Internal_Switch, the port is connected to */ |
| } tpm_db_eth_port_conf_t; |
| |
| /* Structure holds the physical connections of the KW2 SoC */ |
| typedef struct { |
| uint32_t valid; |
| tpm_init_gmac_conn_t conn; |
| tpm_src_port_type_t port_src; |
| } tpm_db_gmac_conn_conf_t; |
| |
| typedef struct { |
| uint32_t valid; |
| tpm_db_sched_t sched_method; |
| tpm_db_txq_owner_t queue_owner; |
| uint32_t owner_queue_num; |
| uint32_t queue_size; |
| uint32_t queue_weight; |
| uint32_t bucket_size; |
| uint32_t rate_limit; |
| uint32_t wrr; |
| } tpm_db_gmac_txq_t; |
| |
| /*Structure defines the details of a Packet Processor Tx component */ |
| typedef struct { |
| uint32_t valid; /* Defines if the Tx component is used */ |
| uint32_t bucket_size; |
| uint32_t rate_limit; |
| uint32_t prio; |
| tpm_db_gmac_txq_t tx_queue[TPM_MAX_NUM_TX_QUEUE]; /* Config. of each of the 8 Tx queue of this Tx component */ |
| } tpm_db_gmac_tx_t; |
| |
| #if 0 |
| /* Structure contains user ownership of an API Group */ |
| typedef struct { |
| uint32_t valid; |
| uint32_t api_owner_id; |
| tpm_api_type_t api_type; |
| } tpm_db_api_group_t; |
| #endif |
| |
| /* */ |
| typedef struct { |
| uint32_t valid; |
| uint32_t owner_id; |
| } tpm_db_owners_t; |
| |
| /* Structure for defining MH_select to uni_vector and to amber_port_vector */ |
| typedef struct { |
| uint32_t uni_vector; |
| uint16_t amber_port_vector; |
| uint32_t pnc_vector; |
| } tpm_db_tx_ds_mh_sel_mapping_t; |
| |
| typedef struct { |
| tpm_init_mtu_setting_enable_t mtu_enable; |
| uint32_t ipv4_mtu_us; |
| uint32_t ipv4_pppoe_mtu_us; |
| uint32_t ipv6_mtu_us; |
| uint32_t ipv6_pppoe_mtu_us; |
| uint32_t ipv4_mtu_ds; |
| uint32_t ipv6_mtu_ds; |
| uint32_t mru; |
| } tpm_db_mtu_t; |
| |
| typedef struct { |
| uint32_t mc_vlan; |
| uint32_t valid; |
| uint32_t pnc_index_num; |
| uint32_t pnc_index[TPM_MC_VLAN_MAX_PNC_RULE_NUM]; |
| } tpm_db_mc_ai_bits_t; |
| |
| typedef struct { |
| uint32_t valid; |
| uint32_t pnc_index_num; |
| uint32_t reference_num; |
| uint8_t src_ip[16]; |
| } tpm_db_ipv6_mc_sip_t; |
| |
| typedef struct { |
| tpm_mc_vid_port_cfg_t mc_vid_port_vids[TPM_MAX_NUM_UNI_PORTS]; |
| uint32_t valid; |
| uint32_t mc_vid; |
| } tpm_mc_vid_cfg_t; |
| |
| typedef struct { |
| uint32_t valid; |
| uint32_t user_num; |
| tpm_ipv6_gen_acl_key_t gen_key; |
| } tpm_db_ipv6_gen_key_t; |
| |
| typedef struct { |
| uint32_t valid; |
| uint32_t user_num; |
| tpm_ipv6_addr_key_t dip_key; |
| } tpm_db_ipv6_dip_key_t; |
| |
| typedef struct { |
| uint32_t valid; |
| uint32_t user_num; |
| uint32_t protocol; |
| tpm_l4_ports_key_t l4_key; |
| } tpm_db_ipv6_l4_key_t; |
| |
| typedef struct { |
| tpm_db_ipv6_gen_key_t gen_key[TPM_DB_IPV6_MAX_KEY_NUM]; |
| tpm_db_ipv6_dip_key_t dip_key[TPM_DB_IPV6_MAX_KEY_NUM]; |
| tpm_db_ipv6_l4_key_t l4_key[TPM_DB_IPV6_MAX_KEY_NUM]; |
| } tpm_db_ipv6_key_shadow_t; |
| |
| typedef struct { |
| uint32_t valid; |
| uint32_t user_num; |
| tpm_parse_fields_t parse_bm; |
| uint32_t l4_key; |
| } tpm_db_ipv6_l4_flow_t; |
| |
| typedef struct { |
| uint32_t valid; |
| uint32_t user_num; |
| tpm_parse_fields_t parse_bm; |
| uint32_t gen_key; |
| uint32_t l4_key; |
| } tpm_db_ipv6_gen_flow_t; |
| |
| typedef struct { |
| tpm_db_ipv6_l4_flow_t l4_flow[TPM_DB_IPV6_MAX_SUBFLOW_NUM]; |
| tpm_db_ipv6_gen_flow_t gen_flow[TPM_DB_IPV6_MAX_SUBFLOW_NUM]; |
| } tpm_db_ipv6_subflow_shadow_t; |
| |
| typedef struct { |
| uint32_t valid; |
| tpm_dir_t src_dir; |
| tpm_parse_fields_t parse_bm; |
| uint32_t is_pppoe; |
| uint32_t gen_key; |
| uint32_t dip_key; |
| uint32_t l4_key; |
| } tpm_db_ipv6_5t_flow_shadow_t; |
| |
| typedef struct { |
| uint32_t igmp_mode; |
| uint8_t mc_stream_pppoe; |
| uint8_t valid; |
| uint16_t vid; |
| uint8_t group_addr[16]; |
| uint8_t src_addr[16]; |
| uint8_t ignore_src_addr; |
| uint16_t dest_queue; |
| uint32_t dest_port_bm; |
| uint32_t u4_entry; |
| } tpm_db_ipv6_mc_stream_entry_t; |
| |
| typedef struct { |
| uint32_t valid; |
| uint32_t user_num; |
| tpm_vlan_oper_t vlan_op; |
| uint32_t vlan_1; |
| uint32_t vlan_2; |
| uint32_t tpid_1; |
| uint32_t tpid_2; |
| } tpm_db_split_mod_vlan_t; |
| |
| typedef struct { |
| tpm_db_split_mod_vlan_t split_mod_vlan[TPM_DB_SPLIT_MOD_NUM_VLANS_MAX]; |
| } tpm_db_split_mod_gmac_vlan_t; |
| |
| typedef struct { |
| tpm_db_split_mod_enable_t split_mod_enable; |
| tpm_db_split_mod_mode_t split_mod_mode; |
| uint32_t num_p_bits; |
| uint32_t num_vlans; |
| uint8_t p_bits[8]; |
| tpm_db_split_mod_gmac_vlan_t gmac_vlan_conf[TPM_MAX_NUM_GMACS]; |
| } tpm_db_split_mod_t; |
| |
| typedef enum { |
| TPM_CTC_CM_L2, |
| TPM_CTC_CM_IPv4, |
| TPM_CTC_CM_COMBO |
| } tpm_ctc_cm_rule_type_t; |
| |
| typedef struct { |
| uint32_t valid; |
| uint32_t cm_main_rule_index; |
| uint32_t ipv4_sub_pattern_key; |
| tpm_ctc_cm_rule_type_t rule_type; |
| tpm_parse_fields_t l2_parse_rule_bm; |
| tpm_parse_fields_t ipv4_parse_rule_bm; |
| tpm_parse_fields_t ipv6_parse_rule_bm; |
| tpm_l2_acl_key_t l2_key; |
| tpm_ipv4_acl_key_t ipv4_key; |
| tpm_ipv6_acl_key_t ipv6_key; |
| tpm_pkt_frwd_t pkt_frwd; |
| tpm_pkt_action_t pkt_act; |
| uint32_t pbits; |
| } tpm_db_ctc_cm_rule_entry_t; |
| |
| typedef struct { |
| uint32_t num_rules; |
| uint32_t rule_index[TPM_DB_CNM_MAX_IPV4_PRE_FILTER_RULE_NUM]; |
| } tpm_db_cnm_ipv4_pre_table_t; |
| |
| typedef struct { |
| uint32_t valid; |
| uint32_t num_users; |
| tpm_parse_fields_t parse_rule_bm; |
| tpm_ipv4_acl_key_t ipv4_key; |
| } tpm_db_cnm_ipv4_pre_filter_key_t; |
| |
| typedef struct { |
| uint32_t num_keys; |
| tpm_db_cnm_ipv4_pre_filter_key_t key[TPM_DB_CNM_MAX_IPV4_PRE_FILTER_KEY_NUM]; |
| } tpm_db_cnm_ipv4_pre_filter_t; |
| |
| typedef struct { |
| /* api_ent_mem_area backup used for hot swap profile feature */ |
| tpm_db_api_entry_t api_ent_mem_area_bak[TPM_DB_API_ENTRIES_TBL_SIZE]; |
| |
| /* API section backup used for hot swap profile feature */ |
| tpm_db_api_section_t api_section_bak[TPM_MAX_NUM_API_SECTIONS]; |
| |
| /* MC VID setting backup */ |
| tpm_mc_vid_cfg_t mc_vid_port_cfg_bak[TPM_MC_VID_NUM_MAX]; |
| tpm_db_gmac_tx_t gmac_tx_bak[TPM_MAX_NUM_TX_PORTS]; |
| |
| uint32_t igmp_proxy_sa_mac[6]; |
| uint32_t igmp_proxy_sa_mac_valid; |
| |
| bool switch_init; |
| }tpm_db_hot_swap_bak_db_t; |
| |
| typedef struct { |
| tpm_db_ctc_cm_enable_t enable; |
| tpm_db_ctc_cm_ipv6_parse_win_t ipv6_parse_win; |
| /* init value from XML */ |
| tpm_db_ctc_cm_ipv6_parse_win_t ipv6_parse_win_original; |
| uint32_t ipv6_ety_rule_num; |
| tpm_db_cnm_ipv4_pre_table_t ipv4_pre_table; |
| tpm_db_cnm_ipv4_pre_filter_t ipv4_pre_filter[TPM_MAX_NUM_UNI_PORTS]; |
| /* U0~U7 and vir_uni, 8 prec */ |
| tpm_db_ctc_cm_rule_entry_t cm_rule[TPM_MAX_NUM_UNI_PORTS][TPM_MAX_NUM_CTC_PRECEDENCE]; |
| } tpm_db_ctc_cm_t; |
| |
| typedef struct { |
| bool switch_init; |
| bool gmac1_loopback_en; |
| bool cpu_wan_loopback_en; |
| bool ds_load_bal_en; |
| bool switch_active_wan_en; |
| tpm_db_ety_dsa_enable_t ety_dsa_enable; |
| tpm_init_virt_uni_t virt_uni_info; |
| |
| } tpm_db_func_profile_t; |
| |
| typedef struct { |
| tpm_limit_mode_t count_mode; |
| uint32_t cir; |
| uint32_t cbs; |
| uint32_t ebs; |
| } tpm_db_gmac_lpk_uni_ingr_rate_limit_t; |
| |
| typedef struct { |
| /* Physical chip config */ |
| tpm_eth_complex_profile_t eth_cmplx_profile; |
| tpm_src_port_type_t max_uni_port_nr; |
| tpm_db_eth_port_conf_t eth_ports[TPM_MAX_NUM_ETH_PORTS]; |
| uint32_t num_valid_tcont_llid; |
| tpm_db_gmac_tx_t gmac_tx[TPM_MAX_NUM_TX_PORTS]; |
| tpm_init_fc_params_t port_fc_conf; |
| tpm_db_gmac_rx_t gmac_rx[TPM_MAX_NUM_GMACS]; |
| |
| /* GMAC Functional Info */ |
| tpm_db_gmac_func_t gmac_func[TPM_MAX_NUM_GMACS]; |
| |
| tpm_db_gmac_conn_conf_t gmac_port_conf[TPM_NUM_GMACS]; |
| |
| /* GMAC Marvell Header Info */ |
| uint32_t gmac_mh_en[TPM_MAX_NUM_GMACS]; |
| |
| /* GMAC Buffer Mngmt Pools buffers Info */ |
| tpm_db_gmac_bufs_t gmac_bp_bufs[TPM_MAX_NUM_GMACS]; |
| |
| /* IGMP */ |
| tpm_db_igmp_t igmp_def; |
| |
| /* Misc. */ |
| tpm_db_misc_t init_misc; |
| |
| /* Ownership */ |
| tpm_db_owners_t owners[TPM_MAX_API_TYPES]; |
| #if 0 |
| tpm_db_api_group_t api_groups[TPM_MAX_API_TYPES]; |
| #endif |
| |
| /* API Ranges and Entries */ |
| tpm_db_api_section_t api_section[TPM_MAX_NUM_API_SECTIONS]; |
| |
| /* Memory place holder array to be used for the api_section api_entry tables */ |
| tpm_db_api_entry_t api_ent_mem_area[TPM_DB_API_ENTRIES_TBL_SIZE]; |
| |
| /* PNC Ranges */ |
| tpm_db_pnc_range_t pnc_range[TPM_MAX_NUM_RANGES]; |
| |
| /* PNC Shadow Table */ |
| tpm_db_pnc_shadow_t pnc_shadow[TPM_PNC_SIZE]; |
| |
| /* EtherType registers */ |
| tpm_db_etype_sel_t vlan_etype[TPM_NUM_VLAN_ETYPE_REGS]; |
| |
| /* MH register selection per UNI and SWITCH port */ |
| tpm_db_tx_ds_mh_sel_mapping_t tpm_mh_port_vector_tbl[TPM_TX_MAX_MH_REGS]; |
| |
| /* mtu setting */ |
| tpm_db_mtu_t tpm_mtu_cfg; |
| tpm_db_pppoe_add_enable_t tpm_pppoe_add_enable; |
| uint32_t num_vlan_tags; |
| uint32_t cpu_rx_queue; |
| tpm_db_ttl_illegal_action_t ttl_illegal_action; |
| tpm_db_tcp_flag_check_t tcp_flag_check; |
| tpm_db_mc_ai_bits_t mc_ai_bits_table[TPM_MC_VID_NUM_MAX]; |
| |
| /* MC IPv6 SIP data */ |
| tpm_db_ipv6_mc_sip_t ipv6_mc_sip[TPM_MC_IPv6_SIP_NUM_MAX]; |
| |
| /* MC VID setting */ |
| tpm_mc_vid_cfg_t mc_vid_port_cfg[TPM_MC_VID_NUM_MAX]; |
| |
| tpm_init_pnc_last_init_t catch_all_pkt_action; |
| uint32_t switch_dev_num; |
| |
| tpm_db_ipv6_key_shadow_t ipv6_key_shadow; |
| tpm_db_ipv6_subflow_shadow_t ipv6_subflow_shadow[TPM_NUM_DIRECTIONS]; |
| tpm_db_ipv6_5t_flow_shadow_t ipv6_5t_flow_shadow[TPM_DB_IPV6_MAX_5T_FLOW_NUM]; |
| |
| tpm_db_ipv6_mc_stream_entry_t ipv6_mc_stream[TPM_MC_MAX_STREAM_NUM]; |
| tpm_db_split_mod_t split_mod_conf; |
| |
| /* Array indicates which API's are currently called for synch purposes. |
| When API is not in called, invalid=-1 When API is called, it will set it's rule_num */ |
| int32_t tpm_busy_apis[TPM_MAX_API_TYPES][TPM_MAX_PARALLEL_API_CALLS]; |
| tpm_db_ctc_cm_t ctc_cm_data; |
| |
| /* func profile, based on chip type and board profile */ |
| tpm_db_func_profile_t func_profile; |
| |
| /* MC MAC learning pmt mod index */ |
| uint32_t mac_learn_mod_idx; |
| |
| tpm_db_ds_mac_based_trunk_enable_t ds_mac_based_trunk_enable; |
| |
| /* To record GMAC UNI egress rate limit */ |
| uint32_t gmac_uni_egr_rate_limit[TPM_MAX_NUM_UNI_PORTS]; |
| /* To record GMAC LPK UNI ingress rate limit */ |
| tpm_db_gmac_lpk_uni_ingr_rate_limit_t gmac_lpk_uni_ingr_rate_limit[TPM_MAX_NUM_UNI_PORTS]; |
| } tpm_db_t; |
| |
| typedef struct { |
| uint32_t igmp_mode; |
| uint8_t mc_stream_pppoe; |
| uint8_t src_valid; |
| uint16_t vid; |
| uint8_t group_addr[4]; |
| uint8_t src_addr[4]; |
| uint16_t dest_queue; |
| uint32_t dest_port_bm; |
| uint32_t u4_entry; |
| } tpm_db_mc_stream_entry_t; |
| |
| typedef struct { |
| uint8_t mac_addr[6]; |
| uint8_t user_num[TPM_MAX_NUM_UNI_PORTS]; |
| } tpm_db_mc_mac_entry_t; |
| |
| typedef struct { |
| uint32_t rule_index; |
| uint32_t mod_cmd; |
| } tpm_db_mc_lpbk_entry_t; |
| |
| #define TPM_DB_MAX_TRANSITION_NUM (TPM_MAX_NUM_UNI_PORTS) |
| |
| typedef struct { |
| uint8_t valid; |
| uint16_t in_vid; |
| uint16_t out_vid; |
| tpm_db_mc_lpbk_entry_t *lpbk_entry; |
| } tpm_db_mc_vid_transit_t; |
| |
| typedef struct { |
| uint32_t ip_ver; |
| uint16_t mvlan; |
| uint16_t xits_num; |
| tpm_db_mc_vid_transit_t xits[TPM_DB_MAX_TRANSITION_NUM]; |
| } tpm_db_mc_vlan_entry_t; |
| |
| /************/ |
| /* APIs */ |
| /************/ |
| |
| /* Init */ |
| |
| int32_t tpm_db_init(void); |
| |
| /* Ethernet Port Config */ |
| bool tpm_db_eth_port_valid(tpm_src_port_type_t src_port_num); |
| int32_t tpm_db_eth_port_conf_get(tpm_src_port_type_t src_port_num, |
| tpm_db_chip_conn_t *chip_con, |
| tpm_db_int_conn_t *int_con, |
| uint32_t *switch_port); |
| int32_t tpm_db_eth_port_switch_port_get(uint32_t ext_port); |
| int32_t tpm_db_get_valid_uni_ports_num(uint32_t *num_ports); |
| int32_t tpm_db_phy_convert_port_index(int32_t switch_port); |
| int32_t tpm_db_trg_port_switch_port_get(tpm_trg_port_type_t ext_port); |
| int32_t tpm_db_eth_port_conf_set(tpm_init_eth_port_conf_t *eth_port_conf); |
| int32_t tpm_db_gmac_conn_conf_set(tpm_init_gmac_conn_conf_t *gmac_port_conf, uint32_t arr_size); |
| int32_t tpm_db_gmac_conn_conf_get(tpm_gmacs_enum_t gmac, tpm_init_gmac_conn_conf_t *gmac_port_conf); |
| |
| /* GMAC Config */ |
| int32_t tpm_db_gmac_tcont_llid_set(uint32_t num_tcont_llid); |
| int32_t tpm_db_gmac_conn_get(tpm_gmacs_enum_t gmac, tpm_db_gmac_conn_t *gmac_con); |
| int32_t tpm_db_gmac_mh_en_conf_set(tpm_gmacs_enum_t gmac, uint32_t mh_en); |
| int32_t tpm_db_gmac_mh_en_conf_get(tpm_gmacs_enum_t gmac, uint32_t *mh_en); |
| int32_t tpm_db_target_to_gmac(tpm_pnc_trg_t pnc_target, tpm_gmacs_enum_t *gmac); |
| int32_t tpm_db_gmac_bm_bufs_conf_set(tpm_gmacs_enum_t gmac, uint32_t large_pkt_buffers, |
| uint32_t small_pkt_buffers); |
| int32_t tpm_db_gmac_bm_bufs_conf_get(tpm_gmacs_enum_t gmac, uint32_t *valid, uint32_t *large_pkt_buffers, |
| uint32_t *small_pkt_buffers); |
| int32_t tpm_db_num_tcont_llid_get(uint32_t *num_tcont_llid); |
| |
| int32_t tpm_db_gmac_func_get(tpm_gmacs_enum_t gmac, tpm_db_gmac_func_t *gfunc); |
| int32_t tpm_db_gmac_func_set(tpm_gmacs_enum_t gmac, tpm_db_gmac_func_t gfunc); |
| |
| /* TX Entities and queues Config */ |
| int32_t tpm_db_gmac_tx_q_conf_set(tpm_db_tx_mod_t tx_mod, |
| uint32_t queue_num, |
| tpm_db_sched_t sched_method, |
| tpm_db_txq_owner_t queue_owner, |
| uint32_t owner_queue_num, uint32_t queue_size, uint32_t queue_weight); |
| |
| int32_t tpm_db_gmac_tx_q_conf_get(tpm_db_tx_mod_t tx_mod, |
| uint32_t queue_num, |
| uint32_t *valid, |
| tpm_db_sched_t *sched_method, |
| tpm_db_txq_owner_t *queue_owner, |
| uint32_t *owner_queue_num, uint32_t *queue_size, uint32_t *queue_weight); |
| |
| int32_t tpm_db_gmac_tx_val_set(tpm_db_tx_mod_t tx_mod); |
| uint32_t tpm_db_gmac_tx_val_get(tpm_db_tx_mod_t tx_mod); |
| uint32_t tpm_db_gmac_lpk_queue_get(tpm_gmacs_enum_t *gmac, |
| uint32_t *queue_idx, |
| tpm_db_gmac1_lpk_queue_type_t queue_type); |
| |
| /* RX queues Config */ |
| int32_t tpm_db_gmac_rx_val_set(tpm_gmacs_enum_t gmac); |
| uint32_t tpm_db_gmac_rx_val_get(tpm_gmacs_enum_t gmac); |
| |
| int32_t tpm_db_gmac_rx_q_conf_set(tpm_gmacs_enum_t gmac, uint32_t queue_num, uint32_t queue_size); |
| |
| int32_t tpm_db_gmac_rx_q_conf_get(tpm_gmacs_enum_t gmac, |
| uint32_t queue_num, uint32_t *valid, uint32_t *queue_size); |
| |
| /* Get params by Internal Port (WAN, UNI#0, etc). */ |
| int32_t tpm_db_intport_int_con_get(tpm_src_port_type_t int_port_num, tpm_db_int_conn_t *int_con, |
| uint32_t *switch_port); |
| |
| /* Ownership */ |
| int32_t tpm_db_owner_set(uint32_t owner_id); |
| /* TODO - tpm_db_owner_del(uint32_t owner_id); */ |
| int32_t tpm_db_owner_get_next(int32_t cur_ind, int32_t *next_ind, uint32_t *owner); |
| |
| #if 0 |
| int32_t tpm_db_apig_set(uint32_t owner_id, tpm_api_type_t api_type); |
| /* TODO - tpm_db_apig_get(...) */ |
| int32_t tpm_db_apig_get_next(int32_t cur_ind, int32_t *next_ind, uint32_t *owner, tpm_api_type_t *api_type); |
| #endif |
| |
| /* IGMP */ |
| /*int32_t tpm_db_igmp_set(uint32_t igmp_snoop, uint32_t igmp_cpu_queue);*/ |
| /*int32_t tpm_db_igmp_get(uint32_t *igmp_snoop, uint32_t *igmp_cpu_queue); */ |
| int32_t tpm_db_igmp_set_port_frwd_mode(uint32_t port, uint32_t mode); |
| int32_t tpm_db_igmp_get_port_frwd_mode(uint32_t port, uint32_t *mode); |
| int32_t tpm_db_igmp_set_cpu_queue(uint32_t queue); |
| int32_t tpm_db_igmp_get_cpu_queue(uint32_t *queue); |
| int32_t tpm_db_igmp_get_snoop_enable(uint32_t *igmp_snoop_enable); |
| int32_t tpm_db_igmp_set_snoop_enable(uint32_t igmp_snoop_enable); |
| |
| /* MISC */ |
| int32_t tpm_db_omci_type_set(uint32_t omci_etype); |
| int32_t tpm_db_omci_type_get(uint32_t *omci_etype); |
| int32_t tpm_db_omci_channel_get(uint32_t *valid, uint16_t *gemport, uint32_t *cpu_rx_q, uint32_t *cpu_tx_q, |
| uint32_t *tcont_id); |
| int32_t tpm_db_omci_channel_set(uint16_t gemport, uint32_t cpu_rx_q, uint32_t cpu_tx_q, uint32_t tcont_id); |
| int32_t tpm_db_omci_channel_remove(void); |
| |
| int32_t tpm_db_oam_channel_get(uint32_t *valid, uint32_t *cpu_rx_q, uint32_t *cpu_tx_q, uint32_t *llid); |
| int32_t tpm_db_oam_channel_set(uint32_t cpu_rx_q, uint32_t cpu_tx_q, uint32_t llid); |
| int32_t tpm_db_oam_channel_remove(void); |
| |
| int32_t tpm_db_oam_loopback_state_get(uint32_t *loopback); |
| int32_t tpm_db_oam_loopback_channel_set(void); |
| int32_t tpm_db_oam_loopback_channel_remove(void); |
| |
| int32_t tpm_db_pon_type_set(tpm_db_pon_type_t pon_type); |
| int32_t tpm_db_pon_type_get(tpm_db_pon_type_t *pon_type); |
| |
| int32_t tpm_db_ds_mh_set_conf_set(tpm_db_mh_src_t ds_mh_set_conf); |
| int32_t tpm_db_ds_mh_get_conf_set(tpm_db_mh_src_t *ds_mh_set_conf); |
| |
| int32_t tpm_db_active_wan_set(tpm_gmacs_enum_t active_wan); |
| tpm_gmacs_enum_t tpm_db_active_wan_get(void); |
| |
| #if 0 /*Keep to be added in future version */ |
| int32_t tpm_db_pnc_init_deb_port_set(uint32_t pnc_init_debug_port); |
| int32_t tpm_db_pnc_init_deb_port_get(uint32_t *pnc_init_debug_port); |
| #endif |
| int32_t tpm_db_init_done_set(void); |
| int32_t tpm_db_init_done_get(void); |
| |
| int32_t tpm_db_cfg_pnc_parse_set(tpm_init_cfg_pnc_parse_t cfg_pnc_parse); |
| int32_t tpm_db_cfg_pnc_parse_get(tpm_init_cfg_pnc_parse_t *cfg_pnc_parse_val); |
| |
| int32_t tpm_db_cpu_loopback_set(tpm_init_cpu_loopback_t cpu_loopback); |
| int32_t tpm_db_cpu_loopback_get(tpm_init_cpu_loopback_t *cpu_loopback_val); |
| |
| int32_t tpm_db_double_tag_support_set(tpm_init_double_tag_t dbl_tag); |
| int32_t tpm_db_double_tag_support_get(tpm_init_double_tag_t *dbl_tag); |
| |
| #if 0 |
| int32_t tpm_db_default_tag_tpid_set(uint16_t vlan1_tpid, uint16_t vlan2_tpid); |
| int32_t tpm_db_default_tag_tpid_get(uint16_t *vlan1_tpid, uint16_t *vlan2_tpid); |
| #endif |
| int32_t tpm_db_default_tag_tpid_set(tpm_init_tpid_opt_t *tag_tpid); |
| int32_t tpm_db_default_tag_tpid_get(tpm_init_tpid_opt_t *tag_tpid); |
| |
| int32_t tpm_db_virt_info_set(tpm_init_virt_uni_t virt_uni_info); |
| int32_t tpm_db_virt_info_get(tpm_init_virt_uni_t *virt_uni_info); |
| |
| int32_t tpm_db_ipv6_5t_enable_set(tpm_init_ipv6_5t_enable_t ipv6_5t_enable); |
| int32_t tpm_db_ipv6_5t_enable_get(tpm_init_ipv6_5t_enable_t *ipv6_5t_enable); |
| |
| int32_t tpm_db_port_vector_tbl_info_get(uint32_t reg_num, uint32_t *uni_vector, uint16_t *amber_port_vector, |
| uint32_t *pnc_vector); |
| int32_t tpm_db_port_vector_tbl_info_set(uint32_t reg_num, uint32_t un_vector, uint16_t amber_port_vector, |
| uint32_t pnc_vector); |
| int32_t tpm_db_port_vector_tbl_info_search(tpm_trg_port_type_t trg_port, uint32_t *uni_vector, |
| uint16_t *amber_port_vector, uint32_t *pnc_vector); |
| /* API Section */ |
| int32_t tpm_db_api_section_init(tpm_api_sections_t api_section, tpm_pnc_ranges_t prim_pnc_range, |
| uint32_t api_rng_size); |
| int32_t tpm_db_api_section_invalidate(tpm_api_sections_t api_section); |
| |
| int32_t tpm_db_api_section_get_from_api_type(tpm_api_type_t api_type, tpm_api_sections_t *api_section); |
| int32_t tpm_db_api_type_get_from_api_section(tpm_api_sections_t api_section, tpm_api_type_t *api_type); |
| int32_t tpm_db_api_section_reset(tpm_api_sections_t api_section); |
| int32_t tpm_db_api_section_get(tpm_api_sections_t api_section, uint32_t *api_rng_size, |
| uint32_t *num_valid_entries, tpm_pnc_ranges_t * prim_pnc_range, |
| int32_t *last_valid, uint32_t *tbl_start); |
| int32_t tpm_db_api_section_lastentry_get(tpm_api_sections_t api_section, int32_t *last_valid_entry); |
| int32_t tpm_db_api_section_main_pnc_get(tpm_api_sections_t api_section, tpm_pnc_ranges_t *prim_pnc_range); |
| int32_t tpm_db_api_section_num_entries_get(tpm_api_sections_t api_section, uint32_t *num_entries); |
| int32_t tpm_db_api_section_val_get_next(int32_t cur_api_section, int32_t *next_section, |
| uint32_t *api_rng_size, uint32_t *num_valid_entries, |
| int32_t *last_valid_entry, uint32_t * tbl_start); |
| int32_t tpm_db_api_section_ent_tbl_get(tpm_api_sections_t api_sec, |
| tpm_db_api_entry_t *api_ent_mem_area, |
| uint32_t index); |
| |
| |
| int32_t tpm_db_api_section_entry_add(tpm_api_sections_t api_section, int32_t new_last_valid); |
| int32_t tpm_db_api_entries_area_reset(void); |
| |
| /* API Entry */ |
| int32_t tpm_db_api_entry_set(tpm_api_sections_t api_section, |
| uint32_t rule_num, uint32_t bi_dir, tpm_rule_entry_t *api_data, |
| tpm_db_mod_conn_t *mod_con, tpm_db_pnc_conn_t *pnc_con, uint32_t *rule_idx); |
| |
| /*TODO: int32_t tpm_db_api_entry_del(tpm_api_sections_t api_section, uint32_t dir, uint32_t rule_num); */ |
| int32_t tpm_db_api_entry_rulenum_inc(tpm_api_sections_t api_section, uint32_t rule_inc_start, |
| uint32_t rule_inc_end); |
| int32_t tpm_db_api_entry_rulenum_dec(tpm_api_sections_t api_section, uint32_t rule_dec_start, |
| uint32_t rule_dec_end); |
| int32_t tpm_db_api_entry_get(tpm_api_sections_t api_section, uint32_t rule_num, uint32_t *rule_idx, |
| uint32_t *bi_dir, tpm_rule_entry_t *api_data, tpm_db_mod_conn_t *mod_con, |
| tpm_db_pnc_conn_t *pnc_con); |
| |
| int32_t tpm_db_api_tcam_num_get(tpm_api_sections_t api_section, uint32_t rule_idx, uint32_t *tcam_num); |
| int32_t tpm_db_api_entry_update_rule_idx(tpm_api_sections_t api_section, |
| uint32_t rule_idx_pre, |
| uint32_t rule_idx_new); |
| int32_t tpm_db_api_rulenum_get(tpm_api_sections_t api_section, uint32_t rule_idx, uint32_t *rule_num); |
| int32_t tpm_db_api_rulenum_get_from_l2_key(tpm_api_sections_t api_section, tpm_parse_fields_t parse_rule_bm, |
| tpm_l2_acl_key_t *l2_key, uint32_t *rule_num); |
| int32_t tpm_db_api_rulenum_get_from_l3_key(tpm_api_sections_t api_section, tpm_parse_fields_t parse_rule_bm, |
| tpm_l3_type_key_t *l3_key, uint32_t *rule_num); |
| int32_t tpm_db_api_rulenum_get_from_ipv4_key(tpm_api_sections_t api_section, tpm_parse_fields_t parse_rule_bm, |
| tpm_ipv4_acl_key_t *ipv4_key, uint32_t *rule_num); |
| int32_t tpm_db_api_rulenum_get_from_ipv6_key(tpm_api_sections_t api_section, tpm_parse_fields_t parse_rule_bm, |
| tpm_ipv6_acl_key_t *ipv6_key, uint32_t *rule_num); |
| |
| int32_t tpm_db_api_entry_val_get_next(tpm_api_sections_t api_section, int32_t cur_rule, int32_t *next_rule, |
| uint32_t *rule_idx, uint32_t *bi_dir, tpm_rule_entry_t *api_data, |
| tpm_db_mod_conn_t *mod_con, tpm_db_pnc_conn_t *pnc_con); |
| int32_t tpm_db_rule_index_set(uint32_t rule_index); |
| int32_t tpm_db_api_entry_invalidate(tpm_api_sections_t api_section, uint32_t rule_num); |
| int32_t tpm_db_api_entry_ind_get(tpm_api_sections_t api_section, uint32_t rule_num, int32_t *index); |
| int32_t tpm_db_api_tcam_rule_idx_get(tpm_api_sections_t api_section, uint32_t tcam_num, uint32_t *rule_idx); |
| |
| int32_t tpm_db_pnc_conn_inc(tpm_api_sections_t api_section, uint32_t rule_inc_start, uint32_t rule_inc_end); |
| int32_t tpm_db_pnc_conn_dec(tpm_api_sections_t api_section, uint32_t rule_dec_start, uint32_t rule_dec_end); |
| int32_t tpm_db_pnc_get_lu_conf(tpm_pnc_ranges_t range_id, tpm_api_lu_conf_t *lu_conf); |
| |
| int32_t tpm_db_api_specific_pnc_inc(tpm_api_sections_t api_section, |
| tpm_pnc_ranges_t range_id, uint32_t rule_inc_start, uint32_t rule_inc_end); |
| int32_t tpm_db_api_specific_pnc_dec(tpm_api_sections_t api_section, |
| tpm_pnc_ranges_t range_id, uint32_t rule_inc_start, uint32_t rule_inc_end); |
| /* PnC Range */ |
| /*Set */ |
| int32_t tpm_db_pnc_rng_create(tpm_db_pnc_range_conf_t *pnc_range_conf); |
| int32_t tpm_db_pnc_rng_delete(tpm_pnc_ranges_t pnc_range); |
| int32_t tpm_db_pnc_rng_reset(tpm_pnc_ranges_t pnc_range); |
| int32_t tpm_db_pnc_rng_free_ent_inc(tpm_pnc_ranges_t pnc_range); |
| int32_t tpm_db_pnc_rng_free_ent_dec(tpm_pnc_ranges_t pnc_range); |
| int32_t tpm_db_pnc_rng_api_start_inc(tpm_pnc_ranges_t pnc_range); |
| int32_t tpm_db_pnc_rng_api_end_dec(tpm_pnc_ranges_t pnc_range); |
| /*Get */ |
| int32_t tpm_db_pnc_rng_get(tpm_pnc_ranges_t pnc_range, tpm_db_pnc_range_t *range_data); |
| int32_t tpm_db_pnc_rng_get_range_start_end(tpm_pnc_ranges_t pnc_range, uint32_t *range_start, |
| uint32_t *range_end); |
| |
| /*int32_t tpm_db_pnc_rng_tbl_val_get_next(int32_t cur_ind, int32_t *next_ind, tpm_db_pnc_range_t *range_data); */ |
| int32_t tpm_db_pnc_rng_val_get_next(tpm_pnc_ranges_t cur_range, tpm_pnc_ranges_t *next_range, |
| tpm_db_pnc_range_t *range_data); |
| int32_t tpm_db_pnc_rng_conf_get(tpm_pnc_ranges_t range_id, tpm_db_pnc_range_conf_t *range_conf); |
| int32_t tpm_db_pnc_rng_oper_get(tpm_pnc_ranges_t range_id, tpm_db_pnc_range_oper_t *range_oper); |
| int32_t tpm_db_pnc_rng_free_ent_get(tpm_pnc_ranges_t range_id, uint32_t *free_entries); |
| |
| /* PnC Shadow */ |
| int32_t tpm_db_pnc_shdw_ent_set(uint32_t pnc_entry, tpm_pnc_all_t *pnc_data); |
| int32_t tpm_db_pnc_shdw_ent_inv(uint32_t pnc_entry); |
| int32_t tpm_db_pnc_shdw_ent_ins(uint32_t pnc_start_entry, uint32_t pnc_stop_entry); |
| int32_t tpm_db_pnc_shdw_ent_del(uint32_t pnc_start_entry, uint32_t pnc_stop_entry); |
| int32_t tpm_db_pnc_shdw_ent_get(uint32_t pnc_entry, uint32_t *valid, tpm_pnc_all_t *pnc_data); |
| |
| /* Mod2 Shadow */ |
| int32_t tpm_db_mod2_set_jump_entry(tpm_gmacs_enum_t gmac_port, uint16_t entry_id, tpm_mod2_entry_t *pattern); |
| int32_t tpm_db_mod2_activate_jump_entry(tpm_gmacs_enum_t gmac_port, uint16_t entry_id); |
| int32_t tpm_db_mod2_get_jump_entry_pattern_data(tpm_gmacs_enum_t gmac_port, uint16_t entry_id, |
| tpm_mod2_entry_t *pattern); |
| int32_t tpm_db_mod2_del_jump_entry(tpm_gmacs_enum_t gmac_port, uint16_t entry_id); |
| int32_t tpm_db_mod2_get_chain_entry_num(tpm_gmacs_enum_t gmac_port, tpm_chain_type_t chain_type, |
| uint16_t chain_id, uint16_t *entry_num); |
| int32_t tpm_db_mod2_get_chain_entry_pattern_data(tpm_gmacs_enum_t gmac_port, tpm_chain_type_t chain_type, |
| uint16_t chain_id, uint16_t pattern_id, |
| tpm_mod2_entry_t *pattern); |
| int32_t tpm_db_mod2_del_chain_entry(tpm_gmacs_enum_t gmac_port, tpm_chain_type_t chain_type, uint16_t chain_id); |
| int32_t tpm_db_mod2_flush_jump_area(tpm_gmacs_enum_t gmac_port, uint16_t entry_id, |
| uint8_t updt_next_free, uint8_t on_failure); |
| int32_t tpm_db_mod2_flush_chain_entry(tpm_gmacs_enum_t gmac_port, tpm_chain_type_t chain_type, uint16_t chain_id, |
| uint8_t updt_next_free, uint8_t on_failure); |
| int32_t tpm_db_mod2_set_chain_entry(tpm_gmacs_enum_t gmac_port, tpm_chain_type_t chain_type, uint16_t chain_id, |
| uint16_t entry_num, tpm_mod2_entry_t *pattern); |
| int32_t tpm_db_mod2_activate_chain_entry(tpm_gmacs_enum_t gmac_port, tpm_chain_type_t chain_type, |
| uint16_t chain_id); |
| int32_t tpm_db_mod2_activate_chain_pmt_entry(tpm_gmacs_enum_t gmac_port, tpm_chain_type_t chain_type, |
| uint16_t chain_id); |
| int32_t tpm_db_mod2_if_chain_pmt_entries_exist(tpm_gmacs_enum_t gmac_port, tpm_chain_type_t chain_type, |
| uint16_t chain_id, uint8_t *exist); |
| uint16_t tpm_db_mod2_get_chain_entry(tpm_gmacs_enum_t gmac_port, tpm_chain_type_t chain_type, |
| uint16_t entry_num, tpm_mod2_entry_t *pattern); |
| uint16_t tpm_db_mod2_get_next_free_chain_entry(tpm_gmacs_enum_t gmac_port, tpm_chain_type_t chain_type); |
| uint16_t tpm_db_mod2_convert_chain_to_pmt_entry(tpm_chain_type_t chain_type, uint16_t chain_id); |
| int32_t tpm_db_mod2_get_chain_id_by_pmt_entry(tpm_gmacs_enum_t gmac_port, uint16_t entry_id, |
| tpm_chain_type_t *chain_type, uint16_t *chain_id); |
| uint16_t tpm_db_mod2_get_next_free_jump_entry(tpm_gmacs_enum_t gmac_port); |
| uint8_t tpm_db_mod2_rollback_chain_entry(tpm_gmacs_enum_t gmac_port, tpm_chain_type_t chain_type, |
| uint16_t chain_id, uint8_t on_failure); |
| |
| uint16_t tpm_db_mod2_get_next_split_mod_free_jump_entry(tpm_gmacs_enum_t gmac_port, tpm_pkt_mod_t *mod_data); |
| //void tpm_db_mod2_update_split_mod_next_free_jump_entry(tpm_gmacs_enum_t gmac_port); |
| int32_t tpm_db_mod2_split_mod_insert_vlan(tpm_gmacs_enum_t port, tpm_pkt_mod_t *mod_data); |
| int32_t tpm_db_mod2_split_mod_get_vlan_index(tpm_gmacs_enum_t port, tpm_pkt_mod_t *mod_data, uint32_t *index); |
| int32_t tpm_db_mod2_split_mod_increase_vlan_user_num(tpm_gmacs_enum_t port, tpm_pkt_mod_t *mod_data); |
| int32_t tpm_db_mod2_split_mod_decrease_vlan_user_num(tpm_gmacs_enum_t port, |
| uint32_t vlan_index, |
| uint32_t *user_num); |
| void tpm_db_mod2_set_multicast_mh_state(uint8_t enable); |
| void tpm_db_mod2_set_pppoe_add_mod_state(uint8_t enable); |
| void tpm_db_mod2_set_double_tag_state(uint8_t enable); |
| void tpm_db_mod2_set_udp_checksum_use_init_bm_state(uint8_t enable); |
| void tpm_db_mod2_set_udp_checksum_state(uint8_t enable); |
| void tpm_db_mod2_set_chain_num(tpm_chain_type_t chain_type, uint16_t chain_num); |
| uint16_t tpm_db_mod2_get_chain_max_size(tpm_chain_type_t chain_type); |
| uint8_t tpm_db_mod2_get_multicast_mh_state(void); |
| uint8_t tpm_db_mod2_get_pppoe_add_mod_state(void); |
| uint8_t tpm_db_mod2_get_double_tag_state(void); |
| uint8_t tpm_db_mod2_get_udp_checksum_init_bm_state(void); |
| uint8_t tpm_db_mod2_get_udp_checksum_state(void); |
| int32_t tpm_db_mod2_setup(void); |
| int32_t tpm_db_mod2_inv_mac_entries(tpm_gmacs_enum_t gmac_port); |
| |
| void tpm_db_mod2_show_jump_pmt_entries(tpm_gmacs_enum_t gmac_port); |
| void tpm_db_mod2_show_jump_cfg_data(void); |
| void tpm_db_mod2_show_chain_pmt_entries(tpm_gmacs_enum_t gmac_port, tpm_chain_type_t chain_type); |
| void tpm_db_mod2_show_chain_info_entries(tpm_gmacs_enum_t gmac_port, tpm_chain_type_t chain_type, |
| uint16_t chain_id); |
| void tpm_db_mod2_show_chain_cfg_data(tpm_chain_type_t chain_type); |
| void tpm_db_mod2_show_all_chain(tpm_gmacs_enum_t gmac_port); |
| |
| /* Vlan Ethertype Shadow */ |
| int32_t tpm_db_mod_etype_sel_get(uint32_t tpid, uint32_t *etype_sel); |
| int32_t tpm_db_mod_etype_sel_free_get(uint32_t *etype_sel); |
| int32_t tpm_db_mod_etype_sel_set(uint32_t tpid, uint32_t etype_sel); |
| |
| /* Multicast Shadow */ |
| void tpm_db_set_mc_filter_mode(uint32_t mode); |
| void tpm_db_set_mc_pppoe_enable(uint32_t enable); |
| void tpm_db_split_mod_set_enable(tpm_db_split_mod_enable_t enable); |
| tpm_db_split_mod_enable_t tpm_db_split_mod_get_enable(void); |
| void tpm_db_split_mod_set_num_vlans(uint32_t num_vlans); |
| uint32_t tpm_db_split_mod_get_num_vlans(void); |
| void tpm_db_split_mod_set_mode(tpm_db_split_mod_mode_t mode); |
| tpm_db_split_mod_mode_t tpm_db_split_mod_get_mode(void); |
| void tpm_db_split_mod_set_num_p_bits(uint32_t num_p_bits, uint8_t p_bits[8]); |
| uint32_t tpm_db_split_mod_get_num_p_bits(void); |
| int32_t tpm_db_split_mod_get_p_bits_by_index(uint8_t index, uint8_t *p_bits); |
| int32_t tpm_db_split_mod_get_index_by_p_bits(uint8_t p_bits, uint32_t *index); |
| void tpm_db_set_mc_per_uni_vlan_xlate(uint32_t enable); |
| void tpm_db_set_mc_hwf_queue(uint8_t hwf_queue); |
| void tpm_db_set_mc_cpu_queue(uint8_t cpu_queue); |
| void tpm_db_set_mc_igmp_proxy_sa_mac(uint8_t *sa_mac); |
| uint32_t tpm_db_get_mc_filter_mode(void); |
| uint8_t tpm_db_get_mc_pppoe_enable(void); |
| uint8_t tpm_db_get_mc_per_uni_vlan_xlate(void); |
| uint8_t tpm_db_get_mc_hwf_queue(void); |
| uint8_t tpm_db_get_mc_cpu_queue(void); |
| void tpm_db_get_mc_igmp_proxy_sa_mac(uint8_t *sa_mac, uint8_t *valid); |
| int32_t tpm_db_set_mc_stream_entry(uint32_t stream_num, tpm_db_mc_stream_entry_t *mc_stream); |
| int32_t tpm_db_get_mc_stream_entry(uint32_t stream_num, tpm_db_mc_stream_entry_t *mc_stream); |
| void tpm_db_reset_mc_stream_entry(uint32_t stream_num); |
| int32_t tpm_db_set_ipv6_mc_stream_entry(uint32_t stream_num, tpm_db_ipv6_mc_stream_entry_t *mc_stream); |
| int32_t tpm_db_get_ipv6_mc_stream_entry(uint32_t stream_num, tpm_db_ipv6_mc_stream_entry_t *mc_stream); |
| void tpm_db_reset_ipv6_mc_stream_entry(uint32_t stream_num); |
| int32_t tpm_db_increase_mc_mac_port_user_num(uint8_t *mac_addr, uint32_t uni_port); |
| int32_t tpm_db_decrease_mc_mac_port_user_num(uint8_t *mac_addr, uint32_t uni_port); |
| uint8_t tpm_db_get_mc_mac_port_user_num(uint8_t *mac_addr, uint32_t uni_port); |
| void tpm_db_reset_mc_mac_entry(uint8_t *mac_addr); |
| uint32_t tpm_db_mc_lpbk_entries_num_get(void); |
| int32_t tpm_db_mc_lpbk_entry_set(uint32_t ip_ver, uint16_t mvlan, uint16_t in_vid, uint16_t out_vid, uint32_t rule_num, |
| uint32_t mod_entry); |
| int32_t tpm_db_mc_vlan_xits_num_get(uint32_t ip_ver, uint16_t mvlan, uint32_t *xits_num); |
| int32_t tpm_db_mc_vlan_xit_entry_get(uint32_t ip_ver, uint16_t mvlan, uint32_t xit_id, uint32_t *rule_index, |
| uint32_t *mod_entry); |
| int32_t tpm_db_mc_lpbk_rule_num_get(uint32_t rule_index, uint32_t *rule_num); |
| int32_t tpm_db_mc_lpbk_entry_invalidate(uint32_t rule_num); |
| int32_t tpm_db_mc_alloc_virt_uni_entry(uint32_t *entry_id); |
| int32_t tpm_db_mc_free_virt_uni_entry(uint32_t entry_id); |
| int32_t tpm_db_mc_vlan_set_ai_bit_pnc_index(uint32_t mc_vlan, uint32_t l2_pnc_rule_index); |
| int32_t tpm_db_mc_vlan_get_ai_bit_by_vid(uint32_t mc_vlan, uint32_t *ai_bit); |
| int32_t tpm_db_mc_vlan_reset_ai_bit(uint32_t l2_pnc_rule_index); |
| int32_t tpm_db_mc_vlan_get_pnc_index_free_slot(uint32_t mc_vlan, uint32_t rule_num); |
| int32_t tpm_db_mc_vlan_get_ai_bit(uint32_t mc_vlan, uint32_t *ai_bit); |
| int32_t tpm_db_mc_vlan_reset_mc_vlan(uint32_t mc_vlan); |
| uint32_t tpm_db_remove_mc_vid_cfg(uint32_t mc_vid); |
| bool tpm_db_mc_vid_exist(uint32_t mc_vid); |
| int32_t tpm_db_set_mc_vid_cfg(uint32_t mc_vid, tpm_mc_vid_port_vid_set_t *mc_vid_uniports_config); |
| int32_t tpm_db_get_mc_vid_cfg(uint32_t mc_vid, tpm_mc_vid_port_cfg_t **mc_vid_uniports_config); |
| void tpm_db_mc_rule_reset(void); |
| void tpm_db_mc_cfg_reset(void); |
| void tpm_db_set_mc_lpbk_enable(tpm_ip_ver_t ver, uint8_t enable); |
| void tpm_db_get_mc_lpbk_enable(tpm_ip_ver_t ver, uint8_t *enable); |
| |
| /* MTU shadow */ |
| int32_t tpm_db_mtu_set_ipv4_mtu_us(uint32_t mtu); |
| int32_t tpm_db_mtu_get_ipv4_mtu_us(uint32_t *mtu); |
| int32_t tpm_db_mtu_set_ipv4_pppoe_mtu_us(uint32_t mtu); |
| int32_t tpm_db_mtu_get_ipv4_pppoe_mtu_us(uint32_t *mtu); |
| int32_t tpm_db_mtu_set_ipv6_mtu_us(uint32_t mtu); |
| int32_t tpm_db_mtu_get_ipv6_mtu_us(uint32_t *mtu); |
| int32_t tpm_db_mtu_set_ipv6_pppoe_mtu_us(uint32_t mtu); |
| int32_t tpm_db_mtu_get_ipv6_pppoe_mtu_us(uint32_t *mtu); |
| int32_t tpm_db_mtu_set_ipv4_mtu_ds(uint32_t mtu); |
| int32_t tpm_db_mtu_get_ipv4_mtu_ds(uint32_t *mtu); |
| int32_t tpm_db_mtu_set_ipv6_mtu_ds(uint32_t mtu); |
| int32_t tpm_db_mtu_get_ipv6_mtu_ds(uint32_t *mtu); |
| int32_t tpm_db_get_pppoe_add_enable(tpm_db_pppoe_add_enable_t *enable); |
| int32_t tpm_db_set_pppoe_add_enable(tpm_db_pppoe_add_enable_t enable); |
| int32_t tpm_db_get_num_vlan_tags(uint32_t *number); |
| int32_t tpm_db_set_num_vlan_tags(uint32_t number); |
| |
| int32_t tpm_db_get_mtu_enable(tpm_db_mtu_setting_enable_t *enable); |
| int32_t tpm_db_set_mtu_enable(tpm_db_mtu_setting_enable_t enable); |
| |
| int32_t tpm_db_set_cpu_rx_queue(uint32_t cpu_rx_queue); |
| int32_t tpm_db_get_cpu_rx_queue(uint32_t *cpu_rx_queue); |
| int32_t tpm_db_set_ttl_illegal_action(uint32_t ttl_illegal_action); |
| int32_t tpm_db_get_ttl_illegal_action(uint32_t *ttl_illegal_action); |
| int32_t tpm_db_set_tcp_flag_check(uint32_t tcp_flag_check); |
| int32_t tpm_db_get_tcp_flag_check(uint32_t *tcp_flag_check); |
| int32_t tpm_db_set_mru(uint32_t mru); |
| int32_t tpm_db_get_mru(uint32_t *mru); |
| int32_t tpm_db_set_catch_all_pkt_action(tpm_init_pnc_last_init_t catch_all_pkt_action); |
| int32_t tpm_db_get_catch_all_pkt_action(tpm_init_pnc_last_init_t *catch_all_pkt_action); |
| int32_t tpm_db_set_switch_dev_num(int32_t switch_dev_num); |
| int32_t tpm_db_get_switch_dev_num(int32_t *switch_dev_num); |
| int32_t tpm_db_set_ety_dsa_enable(tpm_db_ety_dsa_enable_t ety_dsa_enable); |
| int32_t tpm_db_get_ety_dsa_enable(tpm_db_ety_dsa_enable_t *ety_dsa_enable); |
| |
| /* IPV6 5T flow shadow */ |
| uint32_t tpm_db_find_matched_ipv6_l4_subflow(uint32_t src_dir, uint32_t parse_bm, uint32_t protocol, tpm_l4_ports_key_t *l4_key); |
| uint32_t tpm_db_get_ipv6_l4_subflow_user_num(uint32_t src_dir, uint32_t flow_id); |
| uint32_t tpm_db_get_free_ipv6_l4_subflow(uint32_t src_dir); |
| int32_t tpm_db_set_ipv6_l4_subflow(uint32_t src_dir, uint32_t flow_id, uint32_t parse_bm, uint32_t protocol, tpm_l4_ports_key_t *l4_key); |
| int32_t tpm_db_get_ipv6_l4_subflow(uint32_t src_dir, uint32_t flow_id, uint32_t *parse_bm, uint32_t *protocol, tpm_l4_ports_key_t *l4_key); |
| int32_t tpm_db_del_ipv6_l4_subflow(uint32_t src_dir, uint32_t flow_id); |
| |
| uint32_t tpm_db_find_matched_ipv6_gen_subflow(uint32_t src_dir, uint32_t parse_bm, uint32_t protocol, tpm_l4_ports_key_t *l4_key, tpm_ipv6_gen_acl_key_t *gen_key); |
| uint32_t tpm_db_get_ipv6_gen_subflow_user_num(uint32_t src_dir, uint32_t flow_id); |
| uint32_t tpm_db_get_free_ipv6_gen_subflow(uint32_t src_dir); |
| int32_t tpm_db_set_ipv6_gen_subflow(uint32_t src_dir, uint32_t flow_id, uint32_t parse_bm, uint32_t protocol, tpm_l4_ports_key_t *l4_key, tpm_ipv6_gen_acl_key_t *gen_key); |
| int32_t tpm_db_get_ipv6_gen_subflow(uint32_t src_dir, uint32_t flow_id, uint32_t *parse_bm, uint32_t *protocol, tpm_l4_ports_key_t *l4_key, tpm_ipv6_gen_acl_key_t *gen_key); |
| int32_t tpm_db_del_ipv6_gen_subflow(uint32_t src_dir, uint32_t flow_id); |
| |
| uint32_t tpm_db_find_matched_ipv6_5t_flow(uint32_t src_dir, uint32_t parse_bm, uint32_t is_pppoe, uint32_t protocol, tpm_l4_ports_key_t *l4_key, tpm_ipv6_gen_acl_key_t *gen_key, tpm_ipv6_addr_key_t *dip_key); |
| int32_t tpm_db_set_ipv6_5t_flow(uint32_t src_dir, uint32_t parse_bm, uint32_t is_pppoe, uint32_t protocol, tpm_l4_ports_key_t *l4_key, tpm_ipv6_gen_acl_key_t *gen_key, tpm_ipv6_addr_key_t *dip_key); |
| int32_t tpm_db_get_ipv6_5t_flow(uint32_t flow_id, uint32_t *src_dir, uint32_t *parse_bm, uint32_t *is_pppoe, uint32_t *protocol, tpm_l4_ports_key_t *l4_key, tpm_ipv6_gen_acl_key_t *gen_key, tpm_ipv6_addr_key_t *dip_key); |
| int32_t tpm_db_del_ipv6_5t_flow(uint32_t flow_id); |
| int32_t tpm_db_init_ipv6_5t_flow_reset(void); |
| |
| int32_t tpm_db_ctc_cm_rule_set(tpm_src_port_type_t src_port, |
| uint32_t precedence, |
| tpm_parse_fields_t l2_parse_rule_bm, |
| tpm_parse_fields_t ipv4_parse_rule_bm, |
| tpm_parse_fields_t ipv6_parse_rule_bm, |
| tpm_l2_acl_key_t *l2_key, |
| tpm_ipv4_acl_key_t *ipv4_key, |
| tpm_ipv6_acl_key_t *ipv6_key, |
| tpm_pkt_frwd_t *pkt_frwd, |
| tpm_pkt_action_t pkt_act, |
| uint32_t pbits, |
| uint32_t ipv4_sub_pattern_index, |
| uint32_t rule_index); |
| int32_t tpm_db_ctc_cm_rule_delete(tpm_src_port_type_t src_port, uint32_t precedence); |
| int32_t tpm_db_ctc_cm_rule_get(tpm_src_port_type_t src_port, uint32_t precedence, tpm_db_ctc_cm_rule_entry_t *cm_rule); |
| int32_t tpm_db_ctc_cm_get_num_rules(tpm_src_port_type_t src_port); |
| int32_t tpm_db_ctc_cm_get_ipv6_num_rules(void); |
| |
| int32_t tpm_db_ctc_cm_db_reset(void); |
| int32_t tpm_db_ipv6_mc_sip_db_reset(void); |
| int32_t tpm_db_ipv6_mc_sip_index_get(uint8_t *src_ip); |
| int32_t tpm_db_ipv6_mc_sip_free_slot_num_get(void); |
| int32_t tpm_db_ipv6_mc_sip_add(uint8_t *src_ip); |
| int32_t tpm_db_ipv6_mc_sip_ref_num_inc(uint8_t src_ip_index); |
| int32_t tpm_db_ipv6_mc_sip_ref_num_dec(uint8_t src_ip_index, uint8_t *new_ref_num); |
| |
| int32_t tpm_db_ctc_cm_enable_set(tpm_db_ctc_cm_enable_t ctc_cm_enable); |
| int32_t tpm_db_ctc_cm_enable_get(tpm_db_ctc_cm_enable_t *ctc_cm_enable); |
| |
| int32_t tpm_db_ctc_cm_ipv6_parse_win_set(tpm_db_ctc_cm_ipv6_parse_win_t ctc_cm_ipv6_parse_win); |
| int32_t tpm_db_ctc_cm_ipv6_parse_win_orig_set(tpm_db_ctc_cm_ipv6_parse_win_t ctc_cm_ipv6_parse_win); |
| int32_t tpm_db_ctc_cm_ipv6_parse_win_get(tpm_db_ctc_cm_ipv6_parse_win_t *ctc_cm_ipv6_parse_win); |
| int32_t tpm_db_ctc_cm_ipv6_ety_rule_num_set(uint32_t ipv6_ety_rule_num); |
| int32_t tpm_db_ctc_cm_ipv6_ety_rule_num_get(uint32_t *ipv6_ety_rule_num); |
| |
| uint32_t tpm_db_get_api_busy(tpm_api_type_t api_type); |
| uint32_t tpm_db_get_api_rule_num_busy(tpm_api_type_t api_type, uint32_t rule_num); |
| void tpm_db_get_api_all_busy(tpm_api_type_t api_type, uint32_t *num_busy, uint32_t *rule_num_list); |
| uint32_t tpm_db_set_api_busy(tpm_api_type_t api_type, uint32_t rule_num); |
| uint32_t tpm_db_set_api_free(tpm_api_type_t api_type, uint32_t rule_num); |
| |
| void tpm_db_show_mtu_cfg(void); |
| |
| int32_t tpm_db_eth_cmplx_profile_set(tpm_eth_complex_profile_t eth_cmplx_profile); |
| tpm_eth_complex_profile_t tpm_db_eth_cmplx_profile_get(void); |
| int32_t tpm_db_mac_func_set(void); |
| int32_t tpm_db_eth_max_uni_port_set(void); |
| tpm_src_port_type_t tpm_db_trg_port_uni_any_bmp_get(bool); |
| int32_t tpm_db_to_lan_gmac_get(tpm_trg_port_type_t trg_port, tpm_pnc_trg_t *pnc_target); |
| int32_t tpm_db_src_gmac_func_get(tpm_src_port_type_t src_port, tpm_db_gmac_func_t *gmac_func); |
| int32_t tpm_db_src_port_on_switch(tpm_src_port_type_t src_port); |
| bool tpm_db_gmac_valid(tpm_gmacs_enum_t gmac); |
| |
| int32_t tpm_db_add_ipv4_pre_rule(tpm_src_port_type_t src_port, uint32_t key_pattern, uint32_t *rule_num); |
| int32_t tpm_db_del_ipv4_pre_rule(tpm_src_port_type_t src_port, uint32_t key_pattern, uint32_t *rule_num); |
| int32_t tpm_db_get_ipv4_pre_rule_num(uint32_t *num_rules); |
| int32_t tpm_db_alloc_ipv4_pre_filter_key(tpm_src_port_type_t src_port, uint32_t *key_idx); |
| int32_t tpm_db_set_ipv4_pre_filter_key(tpm_src_port_type_t src_port, uint32_t key_idx, tpm_parse_fields_t parse_rule_bm, tpm_ipv4_acl_key_t *ipv4_key); |
| int32_t tpm_db_del_ipv4_pre_filter_key(tpm_src_port_type_t src_port, uint32_t key_idx); |
| int32_t tpm_db_get_ipv4_pre_filter_key_num(tpm_src_port_type_t src_port, uint32_t *num_keys); |
| int32_t tpm_db_get_ipv4_pre_filter_key(tpm_src_port_type_t src_port, uint32_t key_idx, tpm_parse_fields_t *parse_rule_bm, tpm_ipv4_acl_key_t *ipv4_key); |
| int32_t tpm_db_find_ipv4_pre_filter_key(tpm_src_port_type_t src_port, tpm_parse_fields_t parse_rule_bm, tpm_ipv4_acl_key_t *ipv4_key, uint32_t *key_idx); |
| int32_t tpm_db_inc_ipv4_pre_filter_key_user_num(tpm_src_port_type_t src_port, uint32_t key_idx); |
| int32_t tpm_db_dec_ipv4_pre_filter_key_user_num(tpm_src_port_type_t src_port, uint32_t key_idx); |
| int32_t tpm_db_get_ipv4_pre_filter_key_user_num(tpm_src_port_type_t src_port, uint32_t key_idx, uint32_t *num_users); |
| int32_t tpm_db_set_gmac_rate_limit(tpm_db_tx_mod_t gmac_i, |
| uint32_t bucket_size, |
| uint32_t rate_limit, |
| uint32_t prio); |
| int32_t tpm_db_get_gmac_rate_limit(tpm_gmacs_enum_t gmac_i, |
| uint32_t *bucket_size, |
| uint32_t *rate_limit, |
| uint32_t *prio); |
| int32_t tpm_db_set_gmac_q_rate_limit(tpm_db_tx_mod_t gmac_i, |
| uint32_t queue, |
| uint32_t bucket_size, |
| uint32_t rate_limit, |
| uint32_t wrr); |
| int32_t tpm_db_get_gmac_q_rate_limit(tpm_gmacs_enum_t gmac_i, |
| uint32_t queue, |
| uint32_t *bucket_size, |
| uint32_t *rate_limit, |
| uint32_t *wrr); |
| int32_t tpm_db_fc_conf_set(tpm_init_fc_params_t *port_fc_conf); |
| int32_t tpm_db_fc_conf_get(tpm_init_fc_params_t *port_fc_conf); |
| /* switch_init */ |
| int32_t tpm_db_switch_init_set(uint32_t switch_init); |
| int32_t tpm_db_switch_init_get(uint32_t *switch_init); |
| int32_t tpm_db_pnc_mac_learn_enable_set(tpm_init_pnc_mac_learn_enable_t pnc_mac_learn_enable); |
| int32_t tpm_db_pnc_mac_learn_enable_get(tpm_init_pnc_mac_learn_enable_t *pnc_mac_learn_enable); |
| |
| bool tpm_db_gmac1_lpbk_en_get(void); |
| void tpm_db_gmac1_lpbk_en_set(bool en); |
| bool tpm_db_cpu_wan_lpbk_en_get(void); |
| void tpm_db_cpu_wan_lpbk_en_set(bool en); |
| bool tpm_db_ds_load_bal_en_get(void); |
| void tpm_db_ds_load_bal_en_set(bool en); |
| bool tpm_db_switch_active_wan_en_get(void); |
| void tpm_db_switch_active_wan_en_set(bool en); |
| int32_t tpm_db_api_data_backup(void); |
| int32_t tpm_db_api_data_rcvr(void); |
| int32_t tpm_db_api_section_bak_num_entries_get(tpm_api_sections_t api_section, uint32_t *num_entries); |
| int32_t tpm_db_api_section_bak_ent_tbl_get(tpm_api_sections_t api_sec, tpm_db_api_entry_t *api_ent_mem_area, uint32_t index); |
| int32_t tpm_db_api_entry_bak_get_next(tpm_api_sections_t api_section, |
| int32_t cur_rule, |
| int32_t *next_rule); |
| int32_t tpm_db_wan_lan_rate_limit_exchange(void); |
| |
| int32_t tpm_db_mac_learn_mod_idx_set(uint32_t mod_idx); |
| int32_t tpm_db_mac_learn_mod_idx_get(uint32_t *mod_idx); |
| int32_t tpm_db_ds_mac_based_trunk_enable_set(tpm_db_ds_mac_based_trunk_enable_t enable); |
| int32_t tpm_db_ds_mac_based_trunk_enable_get(tpm_db_ds_mac_based_trunk_enable_t *enable); |
| |
| int32_t tpm_db_max_uni_port_nr_get(uint32_t *max_uni_port_nr); |
| |
| int32_t tpm_db_gmac_uni_egr_rate_limit_set(tpm_src_port_type_t port, uint32_t rate_limit); |
| int32_t tpm_db_gmac_uni_egr_rate_limit_get(tpm_src_port_type_t port, uint32_t *rate_limit); |
| int32_t tpm_db_gmac_lpk_uni_ingr_rate_limit_set(tpm_src_port_type_t port, tpm_db_gmac_lpk_uni_ingr_rate_limit_t rate_limit); |
| int32_t tpm_db_gmac_lpk_uni_ingr_rate_limit_get(tpm_src_port_type_t port, tpm_db_gmac_lpk_uni_ingr_rate_limit_t *rate_limit); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| #endif /* _TPM_DB_H_ */ |