ecn.h (3195B)
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 * ECN - Broadcom StrataSwitch ECN API internal definitions 8 */ 9 10 #ifndef _BCM_INT_ECN_H 11 #define _BCM_INT_ECN_H 12 13 /* ECN max value */ 14 #define _BCM_ECN_VALUE_MAX (3) 15 16 /* Max Internal Congestion value */ 17 #define _BCM_ECN_INT_CN_VALUE_MAX (3) 18 19 /* Action dequeue memory index */ 20 #define _BCM_ECN_DEQUEUE_MEM_INDEX_INT_CN_OFFSET (0x5) 21 #define _BCM_ECN_DEQUEUE_MEM_INDEX_CE_GREEN_OFFSET (0x4) 22 #define _BCM_ECN_DEQUEUE_MEM_INDEX_CE_YELLOW_OFFSET (0x3) 23 #define _BCM_ECN_DEQUEUE_MEM_INDEX_CE_RED_OFFSET (0x2) 24 #define _BCM_ECN_DEQUEUE_MEM_INDEX_CNG_OFFSET (0x0) 25 26 #define _BCM_ECN_DEQUEUE_MEM_INDEX_INT_CN_OFFSET_TD3 (0x3) 27 #define _BCM_ECN_DEQUEUE_MEM_INDEX_CE_OFFSET_TD3 (0x2) 28 29 /* Action egress memory index*/ 30 #define _BCM_ECN_EGRESS_MEM_INDEX_INT_CN_OFFSET (0x2) 31 #define _BCM_ECN_EGRESS_MEM_INDEX_ECN_OFFSET (0x0) 32 33 /* Internal Congestion Action Values */ 34 #define _BCM_ECN_INT_CN_RESPONSIVE_DROP (0x0) 35 #define _BCM_ECN_INT_CN_NON_RESPONSIVE_DROP (0x1) 36 #define _BCM_ECN_INT_CN_NON_CONGESTION_MARK_ECN (0x2) 37 #define _BCM_ECN_INT_CN_CONGESTION_MARK_ECN (0x3) 38 39 /* ECN */ 40 extern int 41 _bcm_esw_ecn_init(int unit); 42 #ifdef BCM_WARM_BOOT_SUPPORT_SW_DUMP 43 extern void _bcm_esw_ecn_sw_dump(int unit); 44 #endif 45 #ifdef BCM_TOMAHAWK_SUPPORT 46 extern int 47 bcmi_xgs5_ecn_scache_size_get(int unit, uint32 *scache_size); 48 49 #ifdef BCM_WARM_BOOT_SUPPORT 50 extern int 51 bcmi_xgs5_ecn_sync(int unit, uint8 **scache_ptr); 52 extern int 53 bcmi_xgs5_ecn_reinit(int unit, uint8 **scache_ptr); 54 #endif /* BCM_WARM_BOOT_SUPPORT */ 55 56 #define _BCM_XGS5_MPLS_ECN_MAP_TYPE_MASK 0xC00 57 #define _BCM_XGS5_MPLS_ECN_MAP_TYPE_EXP2ECN 0x400 58 #define _BCM_XGS5_MPLS_ECN_MAP_TYPE_ECN2EXP 0x800 59 #define _BCM_XGS5_MPLS_ECN_MAP_TYPE_INTCN2EXP 0xC00 60 #define _BCM_XGS5_MPLS_ECN_MAP_NUM_MASK 0x0ff 61 62 #define _BCM_ECN_MAX_ENTRIES_PER_MAP 0x20 63 #define _BCM_ING_ECN_MAX_ENTRIES_PER_MAP 0x40 64 65 #define _BCM_XGS5_ECN_MAP_TYPE_MASK 0xC000 66 #define _BCM_XGS5_ECN_MAP_TYPE_TUNNEL_TERM 0x4000 67 #define _BCM_XGS5_ECN_MAP_NUM_MASK 0x0ff 68 #define _BCM_ECN_MAX_ENTRIES_PER_TUNNEL_TERM_MAP 0x10 69 #define _BCM_ECN_MAX_ENTRIES_PER_TUNNEL_TERM_NONIP_MAP 0x4 70 71 #define _BCM_ECN_ENCAP_ENTRIES 4 72 73 typedef enum _bcm_ecn_map_type_s { 74 _bcmEcnmapTypeExp2Ecn, /* Ingress_EXP_TO_ECN map */ 75 _bcmEcnmapTypeIpEcn2Exp, /* Egress_IP_ECN_TO_EXP map */ 76 _bcmEcnmapTypeIntcn2Exp, /* Egress_INT_CN_TO_EXP map */ 77 _bcmEcnmapTypeTunnelTerm /* Ingress Tunnel termination ecn map */ 78 } _bcm_ecn_map_type_e; 79 extern int 80 bcmi_xgs5_ecn_map_used_get(int unit, int map_index, _bcm_ecn_map_type_e type); 81 extern int 82 bcmi_ecn_map_id2hw_idx (int unit,int ecn_map_id,int *hw_idx); 83 extern int 84 bcmi_ecn_map_hw_idx2id (int unit, int hw_idx, int type, int *ecn_map_id); 85 extern void bcmi_ecn_map_clean_up(int unit); 86 #endif 87 88 #endif /* _BCM_INT_ECN_H */