switch.h (6694B)
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-2019 Broadcom Inc. All rights reserved. 6 */ 7 8 #ifndef _SHR_SWITCH_H 9 #define _SHR_SWITCH_H 10 11 #define _SHR_SWITCH_MAX_PIPES 8 /* Max number of pipes (or slices) */ 12 13 #define _SHR_SWITCH_STABLE_NONE 0 /* No storage */ 14 #define _SHR_SWITCH_STABLE_DEVICE_NEXT_HOP 1 /* Use next hop table */ 15 #define _SHR_SWITCH_STABLE_DEVICE_EXT_MEM 2 /* Use external TCAM/SRAM */ 16 #define _SHR_SWITCH_STABLE_APPLICATION 3 /* Use application storage */ 17 #define _SHR_SWITCH_STABLE_SHARED_MEM 4 /* Use Linux shmem for internal proccess NV storage */ 18 19 /* 20 * Defines: 21 * _SHR_SWITCH_FILTER_* 22 * Purpose: 23 * Defines the bypass control items (bitmap format) 24 */ 25 26 typedef enum _shr_switch_filter_control_e { 27 28 _SHR_SWITCH_FILTER_NONE = 0, /* CRC check */ 29 /* bypass for RX group */ 30 _SHR_SWITCH_FILTER_RX_CRCCHK = (1 << 0), /* CRC check */ 31 /* bypass for DOS group */ 32 _SHR_SWITCH_FILTER_DOS_TOCPU = (1 << 1), 33 /* bypass for STP group */ 34 _SHR_SWITCH_FILTER_STP_USERADDR = (1 << 2), /* L2 User MAC Addr */ 35 _SHR_SWITCH_FILTER_STP_MAC0X = (1 << 3), /* 0180c2-000000x */ 36 /* bypass for VLAN group */ 37 _SHR_SWITCH_FILTER_VLAN_IGMP_MLD = (1 << 4), 38 _SHR_SWITCH_FILTER_VLAN_ARP_DHCP = (1 << 5), 39 _SHR_SWITCH_FILTER_VLAN_MIIM = (1 << 6), /* IMP ingress frame */ 40 _SHR_SWITCH_FILTER_VLAN_MCAST = (1 << 7), 41 _SHR_SWITCH_FILTER_VLAN_RSV_MCAST = (1 << 8), /* 0180c2-000000x */ 42 /* 0180c2-000001x */ 43 /* 0180c2-000002x */ 44 _SHR_SWITCH_FILTER_VLAN_USERADDR = (1 << 9), /* L2 User MAC Addr */ 45 /* bypass for EAP group */ 46 _SHR_SWITCH_FILTER_EAP_USERADDR = (1 << 10), /* L2 User MAC Addr */ 47 _SHR_SWITCH_FILTER_EAP_DHCP = (1 << 11), 48 _SHR_SWITCH_FILTER_EAP_ARP = (1 << 12), 49 _SHR_SWITCH_FILTER_EAP_MAC_22_2F = (1 << 13), /* 0180c2-000002x */ 50 _SHR_SWITCH_FILTER_EAP_MAC_21 = (1 << 14), /* 0180c2-0000021 */ 51 _SHR_SWITCH_FILTER_EAP_MAC_20 = (1 << 15), /* 0180c2-0000020 */ 52 _SHR_SWITCH_FILTER_EAP_MAC_11_1F = (1 << 16), /* 0180c2-000001x */ 53 _SHR_SWITCH_FILTER_EAP_MAC_10 = (1 << 17), /* 0180c2-0000010 */ 54 _SHR_SWITCH_FILTER_EAP_MAC_0X = (1 << 18), /* 0180c2-000000x */ 55 _SHR_SWITCH_FILTER_EAP_BPDU = (1 << 19), /* 0180c2-0000000 */ 56 _SHR_SWITCH_FILTER_CONTROL_COUNT = 20 57 } _shr_switch_filter_control_t; 58 59 #define _SHR_SWITCH_FILTER_TYPE_GET(_type, _id) \ 60 (_type) = (((_id) == 0) ? _SHR_SWITCH_FILTER_RX_CRCCHK : \ 61 ((_id) == 1) ? _SHR_SWITCH_FILTER_DOS_TOCPU : \ 62 ((_id) == 2) ? _SHR_SWITCH_FILTER_STP_USERADDR : \ 63 ((_id) == 3) ? _SHR_SWITCH_FILTER_STP_MAC0X : \ 64 ((_id) == 4) ? _SHR_SWITCH_FILTER_VLAN_IGMP_MLD : \ 65 ((_id) == 5) ? _SHR_SWITCH_FILTER_VLAN_ARP_DHCP : \ 66 ((_id) == 6) ? _SHR_SWITCH_FILTER_VLAN_MIIM : \ 67 ((_id) == 7) ? _SHR_SWITCH_FILTER_VLAN_MCAST : \ 68 ((_id) == 8) ? _SHR_SWITCH_FILTER_VLAN_RSV_MCAST : \ 69 ((_id) == 9) ? _SHR_SWITCH_FILTER_VLAN_USERADDR : \ 70 ((_id) == 10) ? _SHR_SWITCH_FILTER_EAP_USERADDR : \ 71 ((_id) == 11) ? _SHR_SWITCH_FILTER_EAP_DHCP : \ 72 ((_id) == 12) ? _SHR_SWITCH_FILTER_EAP_ARP : \ 73 ((_id) == 13) ? _SHR_SWITCH_FILTER_EAP_MAC_22_2F : \ 74 ((_id) == 14) ? _SHR_SWITCH_FILTER_EAP_MAC_21 : \ 75 ((_id) == 15) ? _SHR_SWITCH_FILTER_EAP_MAC_20 : \ 76 ((_id) == 16) ? _SHR_SWITCH_FILTER_EAP_MAC_11_1F : \ 77 ((_id) == 17) ? _SHR_SWITCH_FILTER_EAP_MAC_10 : \ 78 ((_id) == 18) ? _SHR_SWITCH_FILTER_EAP_MAC_0X : \ 79 ((_id) == 19) ? _SHR_SWITCH_FILTER_EAP_BPDU : \ 80 _SHR_SWITCH_FILTER_NONE) 81 82 /* Switch event action controls. */ 83 typedef enum _shr_switch_event_control_action_e { 84 _SHR_SWITCH_EVENT_MASK = 0x0, 85 _SHR_SWITCH_EVENT_CLEAR = 0x1, 86 _SHR_SWITCH_EVENT_READ = 0x2, 87 _SHR_SWITCH_EVENT_FORCE = 0x3, 88 _SHR_SWITCH_EVENT_STORM_TIMED_COUNT = 0x4, 89 _SHR_SWITCH_EVENT_STORM_TIMED_PERIOD = 0x5, 90 _SHR_SWITCH_EVENT_STORM_NOMINAL = 0x6, 91 _SHR_SWITCH_EVENT_PRIORITY = 0x7, 92 _SHR_SWITCH_EVENT_LOG = 0x8, 93 _SHR_SWITCH_EVENT_STAT = 0x9, 94 _SHR_SWITCH_EVENT_CORR_ACT_OVERRIDE = 0xA, 95 _SHR_SWITCH_EVENT_UNMASK_AND_CLEAR_DISABLE = 0xB, 96 _SHR_SWITCH_EVENT_FORCE_UNMASK = 0xC 97 } _shr_switch_event_control_action_t; 98 99 /* 100 * Defines: 101 * _SHR_SWITCH_LED_FUNCSET_* 102 * Purpose: 103 * Defines the LED function groups 104 */ 105 #define _SHR_SWITCH_LED_FUNCGRP_0 0 106 #define _SHR_SWITCH_LED_FUNCGRP_1 1 107 108 /* 109 * Defines: 110 * _SHR_SWITCH_LED_FUNC_* 111 * Purpose: 112 * Defines the LED function items 113 */ 114 #define _SHR_SWITCH_LED_FUNC_NONE 0 115 #define _SHR_SWITCH_LED_FUNC_PHYLED4 (1 << 0) 116 #define _SHR_SWITCH_LED_FUNC_LNK (1 << 1) 117 #define _SHR_SWITCH_LED_FUNC_DPX (1 << 2) 118 #define _SHR_SWITCH_LED_FUNC_ACT (1 << 3) 119 #define _SHR_SWITCH_LED_FUNC_COL (1 << 4) 120 #define _SHR_SWITCH_LED_FUNC_LINK_ACT (1 << 5) 121 #define _SHR_SWITCH_LED_FUNC_DPX_COL (1 << 6) 122 #define _SHR_SWITCH_LED_FUNC_SP_10 (1 << 7) 123 #define _SHR_SWITCH_LED_FUNC_SP_100 (1 << 8) 124 #define _SHR_SWITCH_LED_FUNC_SP_1G (1 << 9) 125 #define _SHR_SWITCH_LED_FUNC_10_ACT (1 << 10) 126 #define _SHR_SWITCH_LED_FUNC_100_ACT (1 << 11) 127 #define _SHR_SWITCH_LED_FUNC_10_100_ACT (1 << 12) 128 #define _SHR_SWITCH_LED_FUNC_1G_ACT (1 << 13) 129 #define _SHR_SWITCH_LED_FUNC_EAV_LINK (1 << 14) 130 #define _SHR_SWITCH_LED_FUNC_PHYLED3 (1 << 15) 131 132 #define _SHR_SWITCH_LED_FUNC_SP_100_200 (1 << 16) 133 #define _SHR_SWITCH_LED_FUNC_100_200_ACT (1 << 17) 134 #define _SHR_SWITCH_LED_FUNC_LNK_ACT_SP (1 << 18) 135 136 /* 137 * Defines: 138 * _SHR_SWITCH_LED_MODE_* 139 * Purpose: 140 * Defines the LED mode 141 */ 142 #define _SHR_SWITCH_LED_MODE_OFF 0 143 #define _SHR_SWITCH_LED_MODE_ON 1 144 #define _SHR_SWITCH_LED_MODE_BLINK 2 145 #define _SHR_SWITCH_LED_MODE_AUTO 3 146 147 /* 148 * structure: 149 * _shr_temperature_monitor_t 150 * Purpose: 151 * entry type for retrieving temperature monitor value 152 */ 153 typedef struct _shr_switch_temperature_monitor_s { 154 int curr; 155 int peak; 156 } _shr_switch_temperature_monitor_t; 157 158 #endif /* !_SHR_SWITCH_H */