oam_hw_db.h (3115B)
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 HW DB (MEP-DB, RMEP-DB, ...) 8 */ 9 10 #ifndef _BCM_INT_DPP_OAM_HW_DB_H_ 11 #define _BCM_INT_DPP_OAM_HW_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 /* Used to encode a portion of a packet into crc. */ 27 #define _BCM_OAM_OAMP_CRC_CALC_NOF_BYTES_PER_ITERATION (16) 28 #define _BCM_OAM_OAMP_CRC_BUFFER_SIZE (128) 29 30 typedef uint8 _BCM_OAM_OAMP_CRC_BUFFER[_BCM_OAM_OAMP_CRC_BUFFER_SIZE]; 31 32 int _bcm_oam_stat_lem_entry_add(uint32 unit, SOC_PPC_OAM_CLASSIFIER_MEP_ENTRY *classifier_mep_entry, bcm_oam_endpoint_info_t *endpoint_info); 33 34 35 int _bcm_dpp_oam_bfd_rmep_db_entry_dealloc(int unit, uint32 rmep_index_internal); 36 int _bcm_oam_rmep_db_entry_struct_set(int unit, bcm_oam_endpoint_info_t *endpoint_info, SOC_PPC_OAM_OAMP_RMEP_DB_ENTRY * rmep_db_entry); 37 int _bcm_oam_rmep_db_entry_struct_get(int unit, SOC_PPC_OAM_OAMP_RMEP_DB_ENTRY * rmep_db_entry, uint16 rmep_id, uint32 local_id, bcm_oam_endpoint_info_t *endpoint_info); 38 int _bcm_oam_mep_db_entry_dealloc(int unit, uint32 mep_index, SOC_PPC_OAM_OAMP_MEP_DB_ENTRY *mep_db_entry, SOC_PPC_OAM_CLASSIFIER_MEP_ENTRY * mep_info); 39 int _bcm_oam_mep_db_entry_struct_set(int unit, bcm_oam_endpoint_info_t *endpoint_info, SOC_PPC_OAM_OAMP_MEP_DB_ENTRY *mep_db_entry, int icc_ndx, _bcm_oam_ma_name_t *group_name_struct, int do_not_set_mep_db_ccm_interval); 40 int _bcm_oam_mep_db_entry_struct_get(int unit, bcm_oam_endpoint_info_t *endpoint_info, SOC_PPC_OAM_OAMP_MEP_DB_ENTRY *mep_db_entry, int original_tx_gport); 41 int _bcm_oam_classifier_default_mep_entry_struct_set(int unit, bcm_oam_endpoint_info_t *endpoint_info, SOC_PPC_OAM_CLASSIFIER_MEP_ENTRY * classifier_mep_entry); 42 int _bcm_oam_classifier_mep_entry_struct_set(int unit, bcm_oam_endpoint_info_t *endpoint_info, SOC_PPC_OAM_CLASSIFIER_MEP_ENTRY *classifier_mep_entry); 43 int _bcm_oam_classifier_mep_entry_struct_get(int unit, bcm_oam_endpoint_info_t *endpoint_info, SOC_PPC_OAM_CLASSIFIER_MEP_ENTRY *classifier_mep_entry); 44 45 int _bcm_oam_classifier_rfc6374_mep_entry_struct_set(int unit, bcm_oam_endpoint_info_t *endpoint_info, SOC_PPC_OAM_CLASSIFIER_MEP_ENTRY *classifier_mep_entry); 46 47 void 48 _bcm_dpp_oam_bfd_flexible_verification_expected_crc16_get(_BCM_OAM_OAMP_CRC_BUFFER buffer, SOC_PPC_OAM_OAMP_CRC_MASK *mask, uint16 *crc_val); 49 50 #define _BCM_OAM_BCM_MEP_TYPE_IS_RFC6374(mep_db_mep_type) \ 51 ((mep_db_mep_type == SOC_PPC_OAM_MEP_TYPE_RFC6374_MPLS_LM_DM_PWE) || (mep_db_mep_type == SOC_PPC_OAM_MEP_TYPE_RFC6374_MPLS_LM_DM_LSP) \ 52 || (mep_db_mep_type == SOC_PPC_OAM_MEP_TYPE_RFC6374_MPLS_LM_DM_SECTION)) 53 54 #endif /* _BCM_INT_DPP_OAM_HW_DB_H_ */