oam_sw_db.h (9567B)
1 /* 2 * 3 * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 4 * 5 * Copyright 2007-2020 Broadcom Inc. All rights reserved. 6 * 7 * OAM SW DB 8 */ 9 10 #ifndef _BCM_INT_DPP_OAM_SW_DB_H_ 11 #define _BCM_INT_DPP_OAM_SW_DB_H_ 12 13 #include <sal/types.h> 14 #include <bcm/types.h> 15 #include <bcm/oam.h> 16 #include <bcm/bfd.h> 17 #include <shared/hash_tbl.h> 18 #include <shared/swstate/sw_state_hash_tbl.h> 19 20 #include <soc/dpp/PPD/ppd_api_oam.h> 21 #include <soc/dpp/PPC/ppc_api_oam.h> 22 #include <soc/dpp/PPD/ppd_api_trap_mgmt.h> 23 #include <soc/dpp/ARAD/ARAD_PP/arad_pp_dbal.h> 24 #include <soc/dpp/ARAD/ARAD_PP/arad_pp_oam.h> 25 26 27 #define BCMDNX_INIT_FUNC_DEFS_RMEP_INFO_DB_WITH_LOCK \ 28 BCMDNX_INIT_FUNC_DEFS;\ 29 if (sal_mutex_take(_bcm_dpp_oam_bfd_rmep_info_db_lock[unit].lock, sal_mutex_FOREVER)) { \ 30 BCMDNX_ERR_EXIT_MSG(BCM_E_INTERNAL, (_BSL_BCM_MSG("%s: sal_mutex_take failed for unit %d."), FUNCTION_NAME(), unit)); \ 31 } 32 33 #define BCMDNX_FUNC_RETURN_RMEP_INFO_DB_WITH_UNLOCK \ 34 do {\ 35 if (sal_mutex_give(_bcm_dpp_oam_bfd_rmep_info_db_lock[unit].lock)) { \ 36 BCMDNX_ERR_EXIT_MSG(BCM_E_INTERNAL, (_BSL_BCM_MSG("%s: sal_mutex_take failed for unit %d."), FUNCTION_NAME(), unit)); \ 37 } \ 38 BCMDNX_FUNC_RETURN;\ 39 }while (0) ; 40 41 #define BCMDNX_INIT_FUNC_DEFS_WITH_MEP_INFO_LOCK \ 42 BCMDNX_INIT_FUNC_DEFS;\ 43 if (sal_mutex_take(_bcm_dpp_oam_bfd_mep_info_db_lock[unit].lock, sal_mutex_FOREVER)) { \ 44 BCMDNX_ERR_EXIT_MSG(BCM_E_INTERNAL, (_BSL_BCM_MSG("%s: sal_mutex_take failed for unit %d."), FUNCTION_NAME(), unit)); \ 45 } 46 47 48 #define BCMDNX_FUNC_RETURN_WITH_MEP_INFO_UNLOCK \ 49 if (sal_mutex_give(_bcm_dpp_oam_bfd_mep_info_db_lock[unit].lock)) { \ 50 BCMDNX_ERR_EXIT_MSG(BCM_E_INTERNAL, (_BSL_BCM_MSG("%s: sal_mutex_take failed for unit %d."), FUNCTION_NAME(), unit)); \ 51 } \ 52 BCMDNX_FUNC_RETURN ; 53 54 void _bcm_dpp_oam_htb_cast_key_f(sw_state_htb_key_t key, uint8 **key_bytes, uint32 *key_size); 55 int _bcm_dpp_sw_db_hash_oam_ma_name_create(int unit); 56 int _bcm_dpp_sw_db_hash_oam_ma_name_destroy(int unit); 57 int _bcm_dpp_sw_db_hash_oam_ma_name_iterate(int unit, sw_state_htb_cb_t restore_cb); 58 int _bcm_dpp_sw_db_hash_oam_ma_name_find(int unit, sw_state_htb_key_t key, sw_state_htb_data_t data, int remove); 59 int _bcm_dpp_sw_db_hash_oam_ma_name_insert(int unit, sw_state_htb_key_t key, sw_state_htb_data_t data); 60 int _bcm_dpp_sw_db_hash_oam_bfd_mep_info_create(int unit); 61 int _bcm_dpp_sw_db_hash_oam_bfd_mep_info_destroy(int unit); 62 int _bcm_dpp_sw_db_hash_oam_bfd_mep_info_iterate(int unit, sw_state_htb_cb_t restore_cb); 63 int _bcm_dpp_sw_db_hash_oam_bfd_mep_info_find(int unit, sw_state_htb_key_t key, sw_state_htb_data_t data, int remove); 64 int _bcm_dpp_sw_db_hash_oam_bfd_mep_info_insert(int unit, sw_state_htb_key_t key, sw_state_htb_data_t data); 65 int _bcm_dpp_sw_db_hash_oam_ma_to_mep_create(int unit); 66 int _bcm_dpp_sw_db_hash_oam_ma_to_mep_destroy(int unit); 67 int _bcm_dpp_sw_db_hash_oam_ma_to_mep_iterate(int unit, sw_state_htb_cb_t restore_cb); 68 int _bcm_dpp_sw_db_hash_oam_ma_to_mep_insert(int unit, sw_state_htb_key_t key, sw_state_htb_data_t data); 69 int _bcm_dpp_sw_db_hash_oam_ma_to_mep_find(int unit, sw_state_htb_key_t key, sw_state_htb_data_t data, int remove); 70 int _bcm_dpp_sw_db_hash_oam_bfd_mep_to_rmep_create(int unit); 71 int _bcm_dpp_sw_db_hash_oam_bfd_mep_to_rmep_destroy(int unit); 72 int _bcm_dpp_sw_db_hash_oam_bfd_mep_to_rmep_iterate(int unit, sw_state_htb_cb_t restore_cb); 73 int _bcm_dpp_sw_db_hash_oam_bfd_mep_to_rmep_find(int unit, sw_state_htb_key_t key, sw_state_htb_data_t data, int remove); 74 int _bcm_dpp_sw_db_hash_oam_bfd_mep_to_rmep_insert(int unit, sw_state_htb_key_t key, sw_state_htb_data_t data); 75 int _bcm_dpp_sw_db_hash_oam_bfd_rmep_info_create(int unit); 76 int _bcm_dpp_sw_db_hash_oam_bfd_rmep_info_destroy(int unit); 77 int _bcm_dpp_sw_db_hash_oam_bfd_rmep_info_iterate(int unit, sw_state_htb_cb_t restore_cb); 78 int _bcm_dpp_sw_db_hash_oam_bfd_rmep_info_find(int unit, sw_state_htb_key_t key, sw_state_htb_data_t data, int remove); 79 int _bcm_dpp_sw_db_hash_oam_bfd_rmep_info_insert(int unit, sw_state_htb_key_t key, sw_state_htb_data_t data); 80 int _bcm_dpp_sw_db_hash_oam_mep_to_ais_id_create(int unit); 81 int _bcm_dpp_sw_db_hash_oam_mep_to_ais_id_insert(int unit, uint32 endpoint_id, int ais_id); 82 int _bcm_dpp_sw_db_hash_oam_mep_to_ais_id_get(int unit, uint32 endpoint_id, int * ais_id, uint8 * num_found); 83 int _bcm_dpp_sw_db_hash_oam_mep_to_ais_id_delete_by_id(int unit, uint32 endpoint_id ); 84 int _bcm_dpp_sw_db_hash_oam_mep_to_ais_id_destroy(int unit); 85 int _bcm_dpp_oam_dbs_init(int unit, uint8 is_oam) ; 86 int _bcm_dpp_oam_dbs_destroy(int unit, uint8 is_oam) ; 87 88 89 int _bcm_dpp_oam_ma_db_delete_ma_cb(int unit, sw_state_htb_key_t key, sw_state_htb_data_t data); 90 int _bcm_dpp_oam_ma_db_insert(int unit, uint32 ma_index, _bcm_oam_ma_name_t * ma_name); 91 int _bcm_dpp_oam_ma_db_get(int unit, uint32 ma_index, _bcm_oam_ma_name_t * ma_name, uint8 *found); 92 int _bcm_dpp_oam_ma_db_delete(int unit, uint32 ma_index); 93 int _bcm_dpp_oam_ma_to_mep_db_insert(int unit, uint32 ma_index, uint32 mep_index); 94 int _bcm_dpp_oam_ma_to_mep_db_get(int unit, uint32 ma_index, ENDPOINT_LIST_PTR *mep_list, uint8* found); 95 int _bcm_dpp_oam_ma_to_mep_db_mep_delete(int unit, uint32 ma_index, uint32 mep_index); 96 97 int _bcm_dpp_oam_bfd_mep_info_db_insert_no_lock(int unit, uint32 mep_index, SOC_PPC_OAM_CLASSIFIER_MEP_ENTRY * mep_info); 98 int _bcm_dpp_oam_bfd_mep_info_db_insert(int unit, uint32 mep_index, SOC_PPC_OAM_CLASSIFIER_MEP_ENTRY * mep_info); 99 int _bcm_dpp_oam_bfd_mep_info_db_get(int unit, uint32 mep_index, SOC_PPC_OAM_CLASSIFIER_MEP_ENTRY * mep_info, uint8 *found); 100 int _bcm_dpp_oam_bfd_mep_info_db_delete_no_lock(int unit, uint32 mep_index); 101 int _bcm_dpp_oam_bfd_mep_info_db_delete(int unit, uint32 mep_index); 102 int _bcm_dpp_oam_bfd_mep_info_db_update(int unit, uint32 mep_index, SOC_PPC_OAM_CLASSIFIER_MEP_ENTRY * mep_info); 103 104 int _bcm_dpp_oam_bfd_mep_to_rmep_db_insert(int unit, uint32 mep_index, uint32 rmep_index); 105 int _bcm_dpp_oam_bfd_mep_to_rmep_db_get(int unit, uint32 mep_index, ENDPOINT_LIST_PTR *rmep_list, uint8* found); 106 int _bcm_dpp_oam_bfd_mep_to_rmep_db_mep_delete(int unit, uint32 mep_index); 107 int _bcm_dpp_oam_bfd_mep_to_rmep_db_rmep_delete(int unit, uint32 mep_index, uint32 rmep_index); 108 109 int _bcm_dpp_oam_sw_db_locks_init(int unit); 110 int _bcm_dpp_oam_bfd_rmep_info_db_insert_no_lock(int unit, uint32 rmep_index, SOC_PPC_OAM_RMEP_INFO_DATA * rmep_info); 111 int _bcm_dpp_oam_bfd_rmep_info_db_insert(int unit, uint32 rmep_index, SOC_PPC_OAM_RMEP_INFO_DATA * rmep_info); 112 int _bcm_dpp_oam_bfd_rmep_info_db_get(int unit, uint32 rmep_index, SOC_PPC_OAM_RMEP_INFO_DATA * rmep_info, uint8 *found); 113 int _bcm_dpp_oam_bfd_rmep_info_db_delete_no_lock(int unit, uint32 rmep_index); 114 int _bcm_dpp_oam_bfd_rmep_info_db_delete(int unit, uint32 rmep_index); 115 int _bcm_dpp_oam_bfd_rmep_to_mep_db_update(int unit, uint32 rmep_index, SOC_PPC_OAM_RMEP_INFO_DATA * rmep_info ); 116 117 int _bcm_dpp_oam_sat_gtf_info_db_insert(int unit, uint32 gtf_id, SOC_PPC_OAM_SAT_GTF_ENTRY * gtf_info); 118 int _bcm_dpp_oam_sat_gtf_info_db_get(int unit, uint32 gtf_id, SOC_PPC_OAM_SAT_GTF_ENTRY * gtf_info, uint8 *found); 119 int _bcm_dpp_oam_sat_gtf_info_db_delete(int unit, uint32 gtf_id); 120 int _bcm_dpp_oam_sat_gtf_info_db_update(int unit, uint32 gtf_id, SOC_PPC_OAM_SAT_GTF_ENTRY * gtf_info); 121 int _bcm_dpp_oam_sat_ctf_info_db_insert(int unit, uint32 ctf_id, SOC_PPC_OAM_SAT_CTF_ENTRY * ctf_info); 122 int _bcm_dpp_oam_sat_ctf_info_db_get(int unit, uint32 ctf_id, SOC_PPC_OAM_SAT_CTF_ENTRY * ctf_info, uint8 *found); 123 int _bcm_dpp_oam_sat_ctf_info_db_delete(int unit, uint32 ctf_id); 124 int _bcm_dpp_oam_sat_ctf_info_db_update(int unit, uint32 ctf_id, SOC_PPC_OAM_SAT_CTF_ENTRY * ctf_info); 125 126 127 int _bcm_dpp_oam_endpoint_list_init(int unit, ENDPOINT_LIST_PTR *endpoint_list_ptr); 128 int _bcm_dpp_oam_endpoint_list_set_member_index(int unit, ENDPOINT_LIST_MEMBER_PTR endpoint_list_member, uint32 index) ; 129 int _bcm_dpp_oam_endpoint_list_get_member_index(int unit, ENDPOINT_LIST_MEMBER_PTR endpoint_list_member, uint32 *index_ptr) ; 130 int _bcm_dpp_oam_endpoint_list_set_member_next(int unit, ENDPOINT_LIST_MEMBER_PTR endpoint_list_member, ENDPOINT_LIST_MEMBER_PTR next) ; 131 int _bcm_dpp_oam_endpoint_list_get_member_next(int unit, ENDPOINT_LIST_MEMBER_PTR endpoint_list_member, ENDPOINT_LIST_MEMBER_PTR *index_ptr) ; 132 int _bcm_dpp_oam_endpoint_list_set_first_member(int unit, ENDPOINT_LIST_PTR endpoint_list, ENDPOINT_LIST_MEMBER_PTR first_member) ; 133 int _bcm_dpp_oam_endpoint_list_get_first_member(int unit, ENDPOINT_LIST_PTR endpoint_list, ENDPOINT_LIST_MEMBER_PTR *first_member_ptr) ; 134 int _bcm_dpp_oam_endpoint_list_member_add(int unit, ENDPOINT_LIST_PTR endpoint_list, uint32 endpoint_index); 135 int _bcm_dpp_oam_endpoint_list_member_add_after( 136 int unit, ENDPOINT_LIST_PTR endpoint_list, uint32 endpoint_index, 137 ENDPOINT_LIST_MEMBER_PTR specified_member, ENDPOINT_LIST_MEMBER_PTR *new_member_ptr) ; 138 int _bcm_dpp_oam_endpoint_list_empty(int unit, ENDPOINT_LIST_PTR endpoint_list, int *is_empty); 139 int _bcm_dpp_oam_endpoint_list_member_find(int unit, ENDPOINT_LIST_PTR endpoint_list, uint32 index, uint8 delete_endpoint, uint8 *found); 140 int _bcm_dpp_oam_endpoint_list_destroy(int unit, ENDPOINT_LIST_PTR endpoint_list); 141 int _bcm_dpp_oam_endpoint_list_deinit(int unit, ENDPOINT_LIST_PTR endpoint_list) ; 142 143 int _bcm_dpp_am_template_oam_local_port_2_sys_port_entry_reserve(int unit, int local_port); 144 int _bcm_dpp_am_template_oam_local_port_2_sys_port_entry_unreserve(int unit, int local_port); 145 146 #endif /* _BCM_INT_DPP_OAM_SW_DB_H_ */ 147