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

field.h (1755B)


      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  * This file defines FIELD constants
      8  *
      9  * Its contents are not used directly by applications; it is used only
     10  * by header files of parent APIs which need to share FIELD constants.
     11  */
     12 
     13 #ifndef _SHR_FIELD_H
     14 #define _SHR_FIELD_H
     15 
     16 #define _SHR_FIELD_LARGE_DIRECT_ENTRY_INDEX_SHIFT               0
     17 #define _SHR_FIELD_LARGE_DIRECT_ENTRY_INDEX_MASK                0x1FFFFF
     18 #define _SHR_FIELD_LARGE_DIRECT_ENTRY_GROUP_SHIFT               21
     19 #define _SHR_FIELD_LARGE_DIRECT_ENTRY_GROUP_MASK                0x7F
     20 #define _SHR_FIELD_LARGE_DIRECT_ENTRY_FLAG_SHIFT                28
     21 #define _SHR_FIELD_LARGE_DIRECT_ENTRY_FLAG_MASK                 0xF0000000
     22 /*
     23  *  FIELD macros for large direct lookup entry
     24  *  The format of large direct lookup entry is:
     25  *    {4'b0001, _group_id[6:0], _index[20:0]}
     26  */
     27 #define _SHR_FIELD_LARGE_DIRECT_ENTRY_ID_PACK(_entry_id, _group_id, _index) \
     28     ((_entry_id) = (BCM_FIELD_ENTRY_LARGE_DIRECT_LOOKUP &_SHR_FIELD_LARGE_DIRECT_ENTRY_FLAG_MASK) | \
     29     (((_group_id) & _SHR_FIELD_LARGE_DIRECT_ENTRY_GROUP_MASK) << _SHR_FIELD_LARGE_DIRECT_ENTRY_GROUP_SHIFT) | \
     30     (((_index) & _SHR_FIELD_LARGE_DIRECT_ENTRY_INDEX_MASK) << _SHR_FIELD_LARGE_DIRECT_ENTRY_INDEX_SHIFT))
     31 
     32 #define _SHR_FIELD_LARGE_DIRECT_ENTRY_ID_UNPACK(_entry_id, _group_id, _index) \
     33     (_group_id) = (((_entry_id) >> _SHR_FIELD_LARGE_DIRECT_ENTRY_GROUP_SHIFT) & _SHR_FIELD_LARGE_DIRECT_ENTRY_GROUP_MASK); \
     34     (_index) = (((_entry_id) >> _SHR_FIELD_LARGE_DIRECT_ENTRY_INDEX_SHIFT) & _SHR_FIELD_LARGE_DIRECT_ENTRY_INDEX_MASK);
     35 
     36 #endif  /* !_SHR_FIELD_H */