openbcm

Git mirror of https://github.com/Broadcom-Network-Switching-Software/OpenBCM
git clone git://git.finwo.net/mirror/broadcom/openbcm
Log | Files | Refs | README

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__ */