rate.h (4771B)
1 /* 2 * 3 * 4 * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 5 * 6 * Copyright 2007-2020 Broadcom Inc. All rights reserved. 7 * 8 */ 9 10 #ifndef __BCM_RATE_H__ 11 #define __BCM_RATE_H__ 12 13 #include <bcm/types.h> 14 15 /* Rate flags. */ 16 #define BCM_RATE_DLF 0x01 17 #define BCM_RATE_MCAST 0x02 18 #define BCM_RATE_BCAST 0x04 19 #define BCM_RATE_UCAST 0x08 20 #define BCM_RATE_SALF 0x10 21 #define BCM_RATE_RSVD_MCAST 0x20 22 #define BCM_RATE_KNOWN_MCAST 0x40 23 #define BCM_RATE_UNKNOWN_MCAST 0x80 24 #define BCM_RATE_CTRL_BUCKET_1 0x00010000 25 #define BCM_RATE_CTRL_BUCKET_2 0x00020000 26 #define BCM_RATE_MODE_PACKETS 0x00040000 27 #define BCM_RATE_COLOR_BLIND 0x00080000 28 #define BCM_RATE_ALL (BCM_RATE_BCAST | BCM_RATE_MCAST | BCM_RATE_DLF | BCM_RATE_UCAST | BCM_RATE_SALF | BCM_RATE_RSVD_MCAST | BCM_RATE_KNOWN_MCAST | BCM_RATE_UNKNOWN_MCAST) 29 #define BCM_RATE_PKT_ADJ_HEADER_TRUNCATE 0x00100000 30 31 /* Rate Enable/Disable macros */ 32 #define BCM_RATE_DISABLE 0 33 #define BCM_RATE_BLOCK -1 34 35 /* bcm_rate_limit_s */ 36 typedef struct bcm_rate_limit_s { 37 int br_dlfbc_rate; 38 int br_mcast_rate; 39 int br_bcast_rate; 40 int flags; 41 } bcm_rate_limit_t; 42 43 /* Initialize a bcm_rate_limit_t structure. */ 44 extern void bcm_rate_limit_t_init( 45 bcm_rate_limit_t *rate_limit); 46 47 /* bcm_rate_packet_s */ 48 typedef struct bcm_rate_packet_s { 49 uint32 flags; 50 int pps; 51 int kbits_burst; 52 } bcm_rate_packet_t; 53 54 /* Initialize a bcm_rate_packet_t structure. */ 55 extern void bcm_rate_packet_t_init( 56 bcm_rate_packet_t *pkt_rate); 57 58 #ifndef BCM_HIDE_DISPATCHABLE 59 60 /* 61 * Front ends to bcm_rate_packet_set/get functions. Uses a single data 62 * structure 63 * to write into rate control registers 64 */ 65 extern int bcm_rate_packet_set( 66 int unit, 67 bcm_port_t port, 68 bcm_rate_packet_t *pkt_rate); 69 70 /* 71 * Front ends to bcm_rate_packet_set/get functions. Uses a single data 72 * structure 73 * to write into rate control registers 74 */ 75 extern int bcm_rate_packet_get( 76 int unit, 77 bcm_port_t port, 78 bcm_rate_packet_t *pkt_rate); 79 80 /* 81 * Configure/retrieve rate limit and on/off state of DLF, MCAST, and 82 * BCAST 83 * limiting. 84 */ 85 extern int bcm_rate_set( 86 int unit, 87 int pps, 88 int flags); 89 90 /* 91 * Configure/retrieve rate limit and on/off state of DLF, MCAST, and 92 * BCAST 93 * limiting. 94 */ 95 extern int bcm_rate_get( 96 int unit, 97 int *pps, 98 int *flags); 99 100 /* 101 * Configure or retrieve rate limit for specified packet type on given 102 * port. 103 */ 104 extern int bcm_rate_mcast_set( 105 int unit, 106 int pps, 107 int flags, 108 int port); 109 110 /* 111 * Configure or retrieve rate limit for specified packet type on given 112 * port. 113 */ 114 extern int bcm_rate_mcast_get( 115 int unit, 116 int *pps, 117 int *flags, 118 int port); 119 120 /* 121 * Configure or retrieve rate limit for specified packet type on given 122 * port. 123 */ 124 extern int bcm_rate_dlfbc_set( 125 int unit, 126 int pps, 127 int flags, 128 int port); 129 130 /* 131 * Configure or retrieve rate limit for specified packet type on given 132 * port. 133 */ 134 extern int bcm_rate_dlfbc_get( 135 int unit, 136 int *pps, 137 int *flags, 138 int port); 139 140 /* 141 * Configure or retrieve rate limit for specified packet type on given 142 * port. 143 */ 144 extern int bcm_rate_bcast_set( 145 int unit, 146 int pps, 147 int flags, 148 int port); 149 150 /* 151 * Configure or retrieve rate limit for specified packet type on given 152 * port. 153 */ 154 extern int bcm_rate_bcast_get( 155 int unit, 156 int *pps, 157 int *flags, 158 int port); 159 160 /* 161 * Front ends to bcm_*_rate_set/get functions. Uses a single data 162 * structure 163 * to write into all the 3 rate control registers 164 */ 165 extern int bcm_rate_type_set( 166 int unit, 167 bcm_rate_limit_t *rl); 168 169 /* 170 * Front ends to bcm_*_rate_set/get functions. Uses a single data 171 * structure 172 * to write into all the 3 rate control registers 173 */ 174 extern int bcm_rate_type_get( 175 int unit, 176 bcm_rate_limit_t *rl); 177 178 /* 179 * Configure/retrieve metering rate limit for specified packet type on 180 * given port. 181 */ 182 extern int bcm_rate_bandwidth_set( 183 int unit, 184 bcm_port_t port, 185 int flags, 186 uint32 kbits_sec, 187 uint32 kbits_burst); 188 189 /* 190 * Configure/retrieve metering rate limit for specified packet type on 191 * given port. 192 */ 193 extern int bcm_rate_bandwidth_get( 194 int unit, 195 bcm_port_t port, 196 int flags, 197 uint32 *kbits_sec, 198 uint32 *kbits_burst); 199 200 #endif /* BCM_HIDE_DISPATCHABLE */ 201 202 #endif /* __BCM_RATE_H__ */