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

policer.h (4020B)


      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  * File:        policer.h
      8  * Purpose:     Defines common policer parameters.
      9  */
     10 
     11 #ifndef   _SHR_POLICER_H_
     12 #define   _SHR_POLICER_H_
     13 
     14 #include <shared/gport.h>
     15 
     16 /* policer_id macro definitions */
     17 #define _SHR_POLICER_ID_METER_INDEX_POSITION (0)
     18 #define _SHR_POLICER_ID_METER_INDEX_MASK (0x7FFFF) /** 19 bits for meter index*/
     19 #define _SHR_POLICER_ID_DATABASE_HANDLE_POSITION (20) /** 1 spare bit for future usage */
     20 #define _SHR_POLICER_ID_DATABASE_HANDLE_MASK (0x3FF) /** 10 bits for  the handle */
     21 #define _SHR_POLICER_ID_MACRO_IND_POSITION (30)
     22 #define _SHR_POLICER_ID_MACRO_IND_MASK (0x1) /** 1 bit for macro indication */
     23 
     24 /* database_handle macro definitions */
     25 #define _SHR_POLICER_IS_INGRESS_POSITION (_SHR_POLICER_ID_DATABASE_HANDLE_POSITION)
     26 #define _SHR_POLICER_IS_INGRESS_MASK (0x1)
     27 #define _SHR_POLICER_IS_GLOBAL_POSITION (_SHR_POLICER_ID_DATABASE_HANDLE_POSITION + 1)
     28 #define _SHR_POLICER_IS_GLOBAL_MASK (0x1)
     29 #define _SHR_POLICER_DATABASE_ID_POSITION (_SHR_POLICER_ID_DATABASE_HANDLE_POSITION + 2)
     30 #define _SHR_POLICER_DATABASE_ID_MASK (0x3)
     31 #define _SHR_POLICER_CORE_ID_POSITION (_SHR_POLICER_ID_DATABASE_HANDLE_POSITION + 6) /** 1 spare bit for future usage */
     32 #define _SHR_POLICER_CORE_ID_MASK (0x3) /** support upto 4 cores */
     33 #define _SHR_POLICER_CORE_ALL_POSITION (_SHR_POLICER_ID_DATABASE_HANDLE_POSITION + 8)
     34 #define _SHR_POLICER_CORE_ALL_MASK (0x1)
     35 
     36 #define _SHR_POLICER_DATABASE_HANDLE_MACRO_IND_POSITION (_SHR_POLICER_ID_DATABASE_HANDLE_POSITION + 9)
     37 #define _SHR_POLICER_DATABASE_HANDLE_MACRO_IND_MASK (0x1)
     38 
     39 
     40 
     41 
     42 
     43 #define _SHR_POLICER_DATABASE_HANDLE_SET(_database_handle, _is_ingress, _is_global, _core_id, _database_id) \
     44     (_database_handle = ((_core_id & _SHR_POLICER_CORE_ID_MASK) << _SHR_POLICER_CORE_ID_POSITION) | \
     45                         ((((_core_id == _SHR_CORE_ALL) ? 1 : 0) & _SHR_POLICER_CORE_ALL_MASK) << _SHR_POLICER_CORE_ALL_POSITION) | \
     46                         ((_database_id & _SHR_POLICER_DATABASE_ID_MASK) << _SHR_POLICER_DATABASE_ID_POSITION) | \
     47                         ((_is_global & _SHR_POLICER_IS_GLOBAL_MASK) << _SHR_POLICER_IS_GLOBAL_POSITION) | \
     48                         ((_is_ingress & _SHR_POLICER_IS_INGRESS_MASK) << _SHR_POLICER_IS_INGRESS_POSITION) | \
     49                         ((0x1 & _SHR_POLICER_DATABASE_HANDLE_MACRO_IND_MASK) << _SHR_POLICER_DATABASE_HANDLE_MACRO_IND_POSITION))
     50 
     51 #define _SHR_POLICER_DATABASE_HANDLE_IS_INGRESS_GET(_database_handle) \
     52     ((_database_handle >> _SHR_POLICER_IS_INGRESS_POSITION) & _SHR_POLICER_IS_INGRESS_MASK) 
     53 
     54 #define _SHR_POLICER_DATABASE_HANDLE_IS_GLOBAL_GET(_database_handle) \
     55     ((_database_handle >> _SHR_POLICER_IS_GLOBAL_POSITION) & _SHR_POLICER_IS_GLOBAL_MASK)
     56 
     57 #define _SHR_POLICER_DATABASE_HANDLE_CORE_ID_GET(_database_handle) \
     58     (((_database_handle >> _SHR_POLICER_CORE_ALL_POSITION) & _SHR_POLICER_CORE_ALL_MASK) ? \
     59      (_SHR_CORE_ALL) : ((_database_handle >> _SHR_POLICER_CORE_ID_POSITION) & _SHR_POLICER_CORE_ID_MASK))
     60 
     61 #define _SHR_POLICER_DATABASE_HANDLE_DATABASE_ID_GET(_database_handle) \
     62     ((_database_handle >> _SHR_POLICER_DATABASE_ID_POSITION) & _SHR_POLICER_DATABASE_ID_MASK)
     63 
     64 
     65 
     66 #define _SHR_POLICER_ID_SET(_policer_id, _database_handle, meter_index) \
     67     (_policer_id = ((meter_index & _SHR_POLICER_ID_METER_INDEX_MASK) << _SHR_POLICER_ID_METER_INDEX_POSITION) | \
     68                    (_database_handle) | \
     69                    ((0x1 & _SHR_POLICER_ID_MACRO_IND_MASK) << _SHR_POLICER_ID_MACRO_IND_POSITION))
     70 
     71 #define _SHR_POLICER_ID_METER_INDEX_GET(_policer_id) \
     72     ((_policer_id >> _SHR_POLICER_ID_METER_INDEX_POSITION) & _SHR_POLICER_ID_METER_INDEX_MASK)
     73 
     74 #define _SHR_POLICER_ID_DATABASE_HANDLE_GET(_policer_id) \
     75     ((_policer_id) & (_SHR_POLICER_ID_DATABASE_HANDLE_MASK << _SHR_POLICER_ID_DATABASE_HANDLE_POSITION))
     76 
     77                    
     78 #endif /* _SHR_POLICER_H_ */