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

gport.h (260345B)


      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 gport (generic port) parameters. The gport is useful
      8  * for specifying the following types of identifiers:
      9  *   LOCAL      :  port on the local unit
     10  *   MODPORT    :  {module ID, port} pair
     11  *   TRUNK      :  trunk ID
     12  *   PROXY      :  {module ID, port} pair employed in proxy operations
     13  *   BLACK_HOLE :  identifier indicating drop destination
     14  *   LOCAL_CPU  :  identifier indicating local CPU destination
     15  *   MPLS_PORT  :  L2 MPLS virtual-port (VPLS/VPWS)
     16  *   SUBPORT_GROUP : Subport group
     17  *   SUBPORT_PORT  : Subport virtual-port
     18  *   UCAST_QUEUE_GROUP : Group of unicast COSQs
     19  *   MCAST_QUEUE_GROUP : Group of multicast COSQs
     20  *   UCAST_SUBSCRIBER_QUEUE_GROUP : Group of 64K subscriber unicast COSQs
     21  *   MCAST_SUBSCRIBER_QUEUE_GROUP : Group of 64K subscriber multicast COSQs
     22  *   MCAST :  distribution set identifier
     23  *   SCHEDULER  : COSQ scheduler
     24  *   DEVPORT    : {device ID, port} pair (ports on devices without a module ID)
     25  *   SPECIAL    :  application special value (invalid in BCM APIs)
     26  *   MIRROR     :  Mirror (modport & encapsulation) for mirrored traffic.
     27  *   MIM_PORT   :  MIM virtual-port
     28  *   VLAN_PORT  :  VLAN virtual-port
     29  *   WLAN_PORT  :  WLAN virtual-port
     30  *   TRILL_PORT :  TRILL virtual-port
     31  *   NIV_PORT   :  NIV virtual-port
     32  *   EXTENDER_PORT :  Extender virtual-port
     33  *   MAC_PORT   :  MAC virtual-port
     34  *   TUNNEL     :  Tunnel ID
     35  *   MULTIPATH  :  Multipath shaper
     36  *
     37  * This header requires that the uint32 type be defined before inclusion.
     38  * Using <sal/types.h> is the simplest (and recommended) way of doing this.
     39  *
     40  * Its contents are not used directly by applications; it is used only
     41  * by header files of parent APIs which need to define gport parameters.
     42  *
     43  * The following macros are made available.  All have names starting
     44  * with _SHR_, which have been elided from this list:
     45  *
     46  * Constants or Expressions suitable for assignment:
     47  * GPORT_NONE                   gport initializer
     48  * GPORT_INVALID                invalid gport identifier
     49  * GPORT_BLACK_HOLE             black-hole gport idenitifier
     50  * GPORT_LOCAL_CPU              local CPU gport identifier
     51  *
     52  * Predicates: (return 0 or 1, suitable for using in if statements)
     53  * GPORT_IS_SET                 is the gport set?
     54  * GPORT_IS_LOCAL               is the gport a local port type?
     55  * GPORT_IS_MODPORT             is the gport a modid/port type?
     56  * GPORT_IS_TRUNK               is the gport a trunk type?
     57  * GPORT_IS_BLACK_HOLE          is the gport a black-hole type?
     58  * GPORT_IS_LOCAL_CPU           is the gport a local CPU type?
     59  * GPORT_IS_MPLS_PORT           is the gport a MPLS port type?
     60  * GPORT_IS_SUBPORT_GROUP       is the gport a subport group type?
     61  * GPORT_IS_SUBPORT_PORT        is the gport a subport port type?
     62  * GPORT_IS_UCAST_QUEUE_GROUP   is the gport a unicast group type?
     63  * GPORT_IS_UCAST_SUBSCRIBER_QUEUE_GROUP   is the gport a subscriber unicast group type?
     64  * GPORT_IS_MCAST               is the gport a multicast set type?
     65  * GPORT_IS_MCAST_QUEUE_GROUP   is the gport a multicast queue group type?
     66  * GPORT_IS_MCAST_SUBSCRIBER_QUEUE_GROUP   is the gport a multicast subscriber queue group type?
     67  * GPORT_IS_SCHEDULER           is the gport a scheduler type?
     68  * GPORT_IS_DEVPORT             is the gport a devid/port type?
     69  * GPORT_IS_SPECIAL             is the gport a special type?
     70  * GPORT_IS_MIRROR              is the gport a mirror destination type?
     71  * GPORT_IS_MIM_PORT            is the gport a MIM port type?
     72  * GPORT_IS_VLAN_PORT           is the gport a VLAN port type?
     73  * GPORT_IS_WLAN_PORT           is the gport a WLAN port type?
     74  * GPORT_IS_TRILL_PORT          is the gport a TRILL port type?
     75  * GPORT_IS_NIV_PORT            is the gport a NIV port type?
     76  * GPORT_IS_EXTENDER_PORT       is the gport an Extender port type?
     77  * EXTENDER_GPORT_IS_PORT       is the extender gport a port subtype?
     78  * EXTENDER_GPORT_IS_FORWARD    is the extender gport a port forward?
     79  * EXTENDER_GPORT_IS_ENCAP      is the extender gport a port encap?
     80  * GPORT_IS_MAC_PORT            is the gport a MAC port type?
     81  * GPORT_IS_TUNNEL              is the gport a tunnel type?
     82  * GPORT_IS_CHILD               is the gport a child port type?
     83  * GPORT_IS_EGRESS_GROUP        is the gport a egress group type?
     84  * GPORT_IS_EGRESS_CHILD        is the gport a egress child type?
     85  * GPORT_IS_EGRESS_MODPORT      is the gport a egress modport type?
     86  * COSQ_GPORT_IS_MULTIPATH      is the gport a multipath type?
     87  *
     88  * Statements: (cannot be used as a predicate)
     89  * GPORT_LOCAL_SET              set a gport local port type and value
     90  * GPORT_LOCAL_GET              get a port value from a local gport
     91  * GPORT_LOCAL_CPU_SET          set a gport local CPU port type and value
     92  * GPORT_LOCAL_CPU_GET          get a CPU port value from a local gport
     93  * GPORT_MODPORT_SET            set a gport modid/port type and values
     94  * GPORT_MODPORT_MODID_GET      get a modid value from a modport gport
     95  * GPORT_MODPORT_PORT_GET       get a port value from a modport gport
     96  * GPORT_TRUNK_SET              set a gport trunk type and value
     97  * GPORT_TRUNK_GET              get a trunk_id value from a trunk gport
     98  * GPORT_MPLS_PORT_ID_SET       set a MPLS ID type and value
     99  * GPORT_MPLS_PORT_ID_GET       get a MPLS ID from a MPLS gport
    100  * GPORT_SUBPORT_GROUP_SET      set a subport group type and value
    101  * GPORT_SUBPORT_GROUP_GET      get a subport group ID from a gport
    102  * GPORT_SUBPORT_PORT_SET       set a subport port type and value
    103  * GPORT_SUBPORT_PORT_GET       get a subport port ID from a gport
    104  * GPORT_SCHEDULER_SET          set a scheduler type and value
    105  * GPORT_SCHEDULER_GET          get a scheduler ID from a gport
    106  * GPORT_DEVPORT_SET            set a gport devid/port type and values
    107  * GPORT_DEVPORT_DEVID_GET      get a devid value from a devport gport
    108  * GPORT_DEVPORT_PORT_GET       get a port value from a devport gport
    109  * GPORT_UCAST_QUEUE_GROUP_SET  set a queue group type and value
    110  * GPORT_UCAST_QUEUE_GROUP_GET  get a queue group ID from a gport
    111  * GPORT_MCAST_SET              set a mcast dist set and value
    112  * GPORT_MCAST_GET              get an mcast dist set from a gport
    113  * GPORT_MCAST_DS_ID_SET        set an mcast DS ID and value
    114  * GPORT_MCAST_DS_ID_GET        get an mcast DS ID from a gport
    115  * GPORT_MCAST_QUEUE_GROUP_SET  set an mcast queue group type and value
    116  * GPORT_MCAST_QUEUE_GROUP_GET  get an mcast queue group ID from a gport
    117  * GPORT_MCAST_QUEUE_GROUP_SYSQID_SET set an mcast queue group system queue ID
    118  * GPORT_MCAST_QUEUE_GROUP_SYSPORTID_GET get an mcast queue group system port ID
    119  * GPORT_MCAST_QUEUE_GROUP_QID_GET get an mcast queue group queue ID
    120  * GPORT_UCAST_QUEUE_GROUP_SYSQID_SET get a unicast queue group system queue ID
    121  * GPORT_UCAST_QUEUE_GROUP_SYSPORTID_GET get a unicast queue group system port ID
    122  * GPORT_UCAST_QUEUE_GROUP_QID_GET get a unicast queue group queue ID
    123  * GPORT_UCAST_SUBSCRIBER_QUEUE_GROUP_QID_SET set a ucast subscriber queue group queue id
    124  * GPORT_UCAST_SUBSCRIBER_QUEUE_GROUP_QID_GET get a ucast subscriber queue group queue id
    125  * GPORT_MCAST_SUBSCRIBER_QUEUE_GROUP_QID_SET set an mcast subscriber queue group queue id
    126  * GPORT_MCAST_SUBSCRIBER_QUEUE_GROUP_QID_GET get an mcast subscriber queue group queue id
    127  * GPORT_SPECIAL_SET            set a gport special type and value
    128  * GPORT_SPECIAL_GET            get a value from a special gport
    129  * GPORT_MIRROR_SET             set a gport mirror type and value
    130  * GPORT_MIRROR_GET             get a value from a mirror gport
    131  * GPORT_MIM_PORT_ID_SET        set a MIM ID type and value
    132  * GPORT_MIM_PORT_ID_GET        get a MIM ID from a Mim gport
    133  * GPORT_VLAN_PORT_ID_SET       set a VLAN port ID type and value
    134  * GPORT_VLAN_PORT_ID_GET       get a VLAN port ID from a VLAN gport
    135  * GPORT_WLAN_PORT_ID_SET       set a WLAN ID type and value
    136  * GPORT_WLAN_PORT_ID_GET       get a WLAN ID from a WLAN gport
    137  * GPORT_TRILL_PORT_ID_SET      set a TRILL ID type and value
    138  * GPORT_TRILL_PORT_ID_GET      get a TRILL ID from a Trill gport
    139  * GPORT_NIV_PORT_ID_SET        set a NIV ID type and value 
    140  * GPORT_NIV_PORT_ID_GET        get a NIV ID from a NIV gport
    141  * EXTENDER_GPORT_PORT_SET      set an Extender type, Port subtype and ID value
    142  * EXTENDER_GPORT_FORWARD_SET   set an Extender type, Forward subtype and ID value
    143  * EXTENDER_GPORT_ENCAP_SET     set an Extender type, Encap subtype and ID value
    144  * GPORT_EXTENDER_PORT_ID_SET   same as EXTENDER_GPORT_PORT_SET for backward compatability
    145  * GPORT_EXTENDER_PORT_ID_GET   get an Extender ID from an Extender gport
    146  * GPORT_MAC_PORT_ID_SET        set a MAC ID type and value 
    147  * GPORT_MAC_PORT_ID_GET        get a MAC ID from an MAC gport
    148  * GPORT_TUNNEL_ID_SET          set a gport tunnel type and value
    149  * GPORT_TUNNEL_ID_GET          get a tunnel_id value from a tunnel gport
    150  * GPORT_CHILD_SET              set a child gport
    151  * GPORT_CHILD_MODID_GET        get a child gport modid
    152  * GPORT_CHILD_PORT_GET         get a child gport port
    153  * GPORT_EGRESS_GROUP_SET       set an egress group
    154  * GPORT_EGRESS_GROUP_GET       get an egress group
    155  * GPORT_EGRESS_GROUP_MODID_GET get an egress group modid
    156  * GPORT_EGRESS_CHILD_SET       set an egress child gport
    157  * GPORT_EGRESS_CHILD_MODID_GET get an egress child gport modid
    158  * GPORT_EGRESS_CHILD_PORT_GET  get an egress child gport port
    159  * GPORT_EGRESS_MODPORT_SET     set an egress modport
    160  * GPORT_EGRESS_MODPORT_MODID_GET get an egress modport modid
    161  * GPORT_EGRESS_MODPORT_PORT_GET  get an egress modport port
    162  * GPORT_MULTIPATH_SET          set an multipath port id
    163  * GPORT_MULTIPATH_GET          get an multipath port id
    164  */
    165 
    166 #ifndef _SHR_GPORT_H
    167 #define _SHR_GPORT_H
    168 /*************
    169  * INCLUDES  *
    170  */
    171 /*
    172  * {
    173  */
    174 
    175 /*
    176  * }
    177  */
    178 /*************
    179  * TYPEDEFs  *
    180  */
    181 /*
    182  * {
    183  */
    184 /*
    185  * Typedef:
    186  *    _shr_gport_t
    187  * Purpose:
    188  *    GPORT (generic port) type for shared definitions
    189  */
    190 typedef uint32 _shr_gport_t;
    191 /*
    192  * }
    193  */
    194 /*************
    195  * DEFINES   *
    196  */
    197 /*
    198  * {
    199  */
    200 
    201 
    202 /*
    203  * Defines:
    204  *     _SHR_GPORT_*
    205  * Purpose:
    206  *     GPORT (Generic port) definitions. GPORT can be used to specify
    207  *     a {module, port} pair, trunk, and other port types.
    208  */
    209 
    210 #define _SHR_GPORT_NONE             (0)
    211 #define _SHR_GPORT_INVALID         (-1)
    212 
    213 #define _SHR_GPORT_TYPE_LOCAL               1   /* Port on local unit */
    214 #define _SHR_GPORT_TYPE_MODPORT             2   /* Module ID and port */
    215 #define _SHR_GPORT_TYPE_TRUNK               3   /* Trunk ID */
    216 #define _SHR_GPORT_TYPE_BLACK_HOLE          4   /* Black hole destination */
    217 #define _SHR_GPORT_TYPE_LOCAL_CPU           5   /* CPU destination */
    218 #define _SHR_GPORT_TYPE_MPLS_PORT           6   /* MPLS port ID */
    219 #define _SHR_GPORT_TYPE_SUBPORT_GROUP       7   /* Subport group ID */
    220 #define _SHR_GPORT_TYPE_SUBPORT_PORT        8   /* Subport port ID */
    221 #define _SHR_GPORT_TYPE_UCAST_QUEUE_GROUP   9   /* Queue Group */
    222 #define _SHR_GPORT_TYPE_DEVPORT            10   /* Device ID and port */
    223 #define _SHR_GPORT_TYPE_MCAST              11   /* Multicast Set */
    224 #define _SHR_GPORT_TYPE_MCAST_QUEUE_GROUP  12   /* Multicast Queue Group */
    225 #define _SHR_GPORT_TYPE_SCHEDULER          13   /* Scheduler */
    226 #define _SHR_GPORT_TYPE_SPECIAL            14   /* Special value */
    227 #define _SHR_GPORT_TYPE_MIRROR             15   /* Mirror destination.  */
    228 #define _SHR_GPORT_TYPE_MIM_PORT           16   /* MIM port ID */
    229 #define _SHR_GPORT_TYPE_VLAN_PORT          17   /* VLAN port */
    230 #define _SHR_GPORT_TYPE_WLAN_PORT          18   /* WLAN port */
    231 #define _SHR_GPORT_TYPE_TUNNEL             19   /* Tunnel ID */
    232 #define _SHR_GPORT_TYPE_CHILD              20   /* Child port */
    233 #define _SHR_GPORT_TYPE_EGRESS_GROUP       21   /* Egress group port */
    234 #define _SHR_GPORT_TYPE_EGRESS_CHILD       22   /* Egress child port */
    235 #define _SHR_GPORT_TYPE_EGRESS_MODPORT     23   /* Egress Mod and port */
    236 #define _SHR_GPORT_TYPE_UCAST_SUBSCRIBER_QUEUE_GROUP  24        /* Local Queue Group */
    237 #define _SHR_GPORT_TYPE_MCAST_SUBSCRIBER_QUEUE_GROUP  25        /* Local Multicast Queue Group */
    238 #define _SHR_GPORT_TYPE_TRILL_PORT         26   /* TRILL port */
    239 #define _SHR_GPORT_TYPE_SYSTEM_PORT        27   /* DPP System-Port */
    240 #define _SHR_GPORT_TYPE_NIV_PORT           28   /* NIV port */
    241 #define _SHR_GPORT_TYPE_CONGESTION         29   /* congestion port, e.g. out of band HCFC port */
    242 #define _SHR_GPORT_TYPE_COSQ               30   /* cosq gport */
    243 #define _SHR_GPORT_TYPE_L2GRE_PORT         31   /* L2GRE gport */
    244 #define _SHR_GPORT_TYPE_VXLAN_PORT         32   /* VXLAN gport */
    245 #define _SHR_GPORT_TYPE_EPON_LINK          33   /* EPON link gport */
    246 #define _SHR_GPORT_TYPE_PHY                34   /* Phy gport multiple types */
    247 #define _SHR_GPORT_TYPE_EXTENDER_PORT      35   /* Extender port */
    248 #define _SHR_GPORT_TYPE_MAC_PORT           36   /* MAC port */
    249 #define _SHR_GPORT_TYPE_PROXY              37   /* Proxy (module ID, port) source or destination */
    250 #define _SHR_GPORT_TYPE_FORWARD_PORT       38   /* Gport for fec destinations */
    251 #define _SHR_GPORT_TYPE_VP_GROUP           39   /* VP group gport */
    252 #define _SHR_GPORT_TYPE_PROFILE            40
    253 #define _SHR_GPORT_TYPE_DESTMOD_QUEUE_GROUP      41     /* DMVOQ gport */
    254 #define _SHR_GPORT_TYPE_LOCAL_CPU_IEEE     42   /* CPU ethernet gport */
    255 #define _SHR_GPORT_TYPE_LOCAL_CPU_HIGIG    43   /* CPU higig gport */
    256 #define _SHR_GPORT_TYPE_FLOW_PORT          44   /* FLOW gport */
    257 #define _SHR_GPORT_TYPE_VPLAG_PORT         45   /* VPLAG gport */
    258 #define _SHR_GPORT_TYPE_MAX _SHR_GPORT_TYPE_VPLAG_PORT   /* Used for sanity */
    259                                                 /*
    260                                                  * checks only.  
    261                                                  */
    262  /*
    263   * MCAST GPORT subtypes 
    264   */
    265 #define _SHR_MCAST_GPORT_TYPE_GROUP_ID          0
    266 #define _SHR_MCAST_GPORT_TYPE_BITMAP_ID         1
    267 
    268 /*
    269  * Congestion Gport subtypes, shift & mask definitions 
    270  */
    271 #define _SHR_GPORT_CONGESTION_TYPE_SHIFT   23
    272 #define _SHR_GPORT_CONGESTION_TYPE_MASK    0x7
    273 #define _SHR_GPORT_CONGESTION_TYPE_OOB     0   /* congestion port subtupe for usage with OOB calendar */
    274 #define _SHR_GPORT_CONGESTION_TYPE_COE     1   /* congestion port subtupe for usage with COE calendar */
    275 
    276 /* COSQ GPORT subtypes*/
    277 #define _SHR_COSQ_GPORT_TYPE_VOQ_CONNECTOR       1
    278 #define _SHR_COSQ_GPORT_TYPE_UCAST_EGRESS_QUEUE  2
    279 #define _SHR_COSQ_GPORT_TYPE_MCAST_EGRESS_QUEUE  3
    280 #define _SHR_COSQ_GPORT_TYPE_VSQ                 4
    281 #define _SHR_COSQ_GPORT_TYPE_E2E_PORT            5
    282 #define _SHR_COSQ_GPORT_TYPE_ISQ                 6
    283 #define _SHR_COSQ_GPORT_TYPE_MULTIPATH           7
    284 #define _SHR_COSQ_GPORT_TYPE_SCHED_CIR           8
    285 #define _SHR_COSQ_GPORT_TYPE_SCHED_PIR           9
    286 #define _SHR_COSQ_GPORT_TYPE_COMPOSITE_SF2_SCHED 10
    287 #define _SHR_COSQ_GPORT_TYPE_PORT_TC             11
    288 #define _SHR_COSQ_GPORT_TYPE_PORT_TCG            12
    289 #define _SHR_COSQ_GPORT_TYPE_E2E_PORT_TC         13
    290 #define _SHR_COSQ_GPORT_TYPE_E2E_PORT_TCG        14
    291 #define _SHR_COSQ_GPORT_TYPE_SYSTEM_RED          15
    292 #define _SHR_COSQ_GPORT_TYPE_SRC_QUEUE           16
    293 #define _SHR_COSQ_GPORT_TYPE_DST_QUEUE           17
    294 #define _SHR_COSQ_GPORT_TYPE_FABRIC              18
    295 #define _SHR_COSQ_GPORT_TYPE_FABRIC_RX_QUEUE     19
    296 #define _SHR_COSQ_GPORT_TYPE_CORE                20
    297 #define _SHR_COSQ_GPORT_TYPE_RCY                 21
    298 #define _SHR_COSQ_GPORT_TYPE_RCY_MIRR            22
    299 #define _SHR_COSQ_GPORT_TYPE_INGRESS_RECEIVE     23
    300 #define _SHR_COSQ_GPORT_TYPE_E2E_INTERFACE       24
    301 #define _SHR_COSQ_GPORT_TYPE_COMPOSITE_SF2_CONN  25
    302 #define _SHR_COSQ_GPORT_TYPE_SHARED_SHAPER_ELEM  26
    303 #define _SHR_COSQ_GPORT_TYPE_INBAND_COE          28
    304 
    305 #define _SHR_COSQ_GPORT_RESERVED_VOQ_CONNECTOR 1
    306 #define _SHR_COSQ_GPORT_RESERVED_SCHEDULER     0
    307 
    308 /* Extender GPORT subtypes*/
    309 #define _SHR_EXTENDER_GPORT_TYPE_PORT               (0)
    310 #define _SHR_EXTENDER_GPORT_TYPE_FORWARD            (1)
    311 #define _SHR_EXTENDER_GPORT_TYPE_ENCAP              (2)
    312 
    313 /* Profile GPORT subtypes*/
    314 #define _SHR_GPORT_PROFILE_TYPE_UNKNOWN 0
    315 #define _SHR_GPORT_PROFILE_TYPE_CREDIT_REQUEST 1
    316 #define _SHR_GPORT_PROFILE_TYPE_INGRESS_LATENCY 2
    317 #define _SHR_GPORT_PROFILE_TYPE_END_TO_END_LATENCY 3
    318 
    319 
    320 
    321 /* definitions for cosq core handling */
    322 #define _SHR_COSQ_GPORT_COMMON_QUEUE_BITS 18
    323 #define _SHR_COSQ_GPORT_COMMON_QUEUE_MASK ((1 << _SHR_COSQ_GPORT_COMMON_QUEUE_BITS) - 1)
    324 #define _SHR_COSQ_GPORT_COMMON_CORE_BITS 3
    325 #define _SHR_COSQ_GPORT_COMMON_CORE_SHIFT _SHR_COSQ_GPORT_COMMON_QUEUE_BITS
    326 #define _SHR_COSQ_GPORT_COMMON_CORE_MASK ((1 << _SHR_COSQ_GPORT_COMMON_CORE_BITS) - 1)
    327 #define _SHR_COSQ_GPORT_COMMON_ALL_CORES_VALUE _SHR_COSQ_GPORT_COMMON_CORE_MASK
    328 /*
    329  * Note that only the bits under _SHR_COSQ_GPORT_CORE_MASK are considered
    330  * See, e.g. _SHR_COSQ_GPORT_CORE_GET
    331  */
    332 #define _SHR_CORE_ALL -17
    333 #define _SHR_CORE_FIELD2ID(field) ((field) != _SHR_COSQ_GPORT_COMMON_ALL_CORES_VALUE ? field : _SHR_CORE_ALL)
    334 #define _SHR_CORE_ID2FIELD(id) ((id) != _SHR_CORE_ALL ? id : _SHR_COSQ_GPORT_COMMON_ALL_CORES_VALUE)
    335 
    336 #define _SHR_GPORT_TYPE_SHIFT                           26
    337 #define _SHR_GPORT_TYPE_MASK                            0x3f
    338 #define _SHR_GPORT_MODID_SHIFT                          11
    339 #define _SHR_GPORT_MODID_MASK                           0x7fff
    340 #define _SHR_GPORT_PORT_SHIFT                           0
    341 #define _SHR_GPORT_PORT_MASK                            0x7ff
    342 #define _SHR_GPORT_TRUNK_SHIFT                          0
    343 #define _SHR_GPORT_TRUNK_MASK                           0x3ffffff
    344 #define _SHR_GPORT_MPLS_PORT_SHIFT                      0
    345 #define _SHR_GPORT_MPLS_PORT_MASK                       0x3ffffff
    346 #define _SHR_GPORT_SUBPORT_GROUP_SHIFT                  0
    347 #define _SHR_GPORT_SUBPORT_GROUP_MASK                   0xffffff
    348 #define _SHR_GPORT_SUBPORT_PORT_SHIFT                   0
    349 #define _SHR_GPORT_SUBPORT_PORT_MASK                    0xffffff
    350 #define _SHR_GPORT_UCAST_QUEUE_GROUP_SHIFT              0
    351 #define _SHR_GPORT_UCAST_QUEUE_GROUP_MASK               0x3ffffff
    352 #define _SHR_GPORT_UCAST_QUEUE_GROUP_QID_SHIFT          0
    353 #define _SHR_GPORT_UCAST_QUEUE_GROUP_QID_MASK           0x3fff
    354 #define _SHR_GPORT_UCAST_QUEUE_GROUP_SYSPORTID_SHIFT    14
    355 #define _SHR_GPORT_UCAST_QUEUE_GROUP_SYSPORTID_MASK     0xfff
    356 #define _SHR_GPORT_DESTMOD_QUEUE_GROUP_SHIFT              0
    357 #define _SHR_GPORT_DESTMOD_QUEUE_GROUP_MASK               0x3ffffff
    358 #define _SHR_GPORT_DESTMOD_QUEUE_GROUP_QID_SHIFT          0
    359 #define _SHR_GPORT_DESTMOD_QUEUE_GROUP_QID_MASK           0x3fff
    360 #define _SHR_GPORT_DESTMOD_QUEUE_GROUP_SYSPORTID_SHIFT    14
    361 #define _SHR_GPORT_DESTMOD_QUEUE_GROUP_SYSPORTID_MASK     0xfff
    362 #define _SHR_GPORT_UNICAST_QUEUE_GROUP_QID_SHIFT        0
    363 #define _SHR_GPORT_UNICAST_QUEUE_GROUP_QID_MASK _SHR_COSQ_GPORT_COMMON_QUEUE_MASK
    364 #define _SHR_GPORT_UCAST_SUBSCRIBER_QUEUE_GROUP_SYSPORTID_SHIFT    16
    365 #define _SHR_GPORT_UCAST_SUBSCRIBER_QUEUE_GROUP_SYSPORTID_MASK     0xff
    366 #define _SHR_GPORT_UCAST_SUBSCRIBER_QUEUE_GROUP_QID_SHIFT 0
    367 #define _SHR_GPORT_UCAST_SUBSCRIBER_QUEUE_GROUP_QID_MASK  0xffff
    368 #define _SHR_GPORT_MCAST_SHIFT                          0
    369 #define _SHR_GPORT_MCAST_MASK                           0x3ffffff
    370 #define _SHR_GPORT_MCAST_DS_ID_SHIFT                    0
    371 #define _SHR_GPORT_MCAST_DS_ID_MASK                     0x3ffffff
    372 #define _SHR_GPORT_MCAST_QUEUE_GROUP_SHIFT              0
    373 #define _SHR_GPORT_MCAST_QUEUE_GROUP_MASK               0x3ffffff
    374 #define _SHR_GPORT_MCAST_QUEUE_GROUP_QID_SHIFT          0
    375 #define _SHR_GPORT_MCAST_QUEUE_GROUP_QID_MASK           0x3fff
    376 #define _SHR_GPORT_MCAST_QUEUE_GROUP_SYSPORTID_SHIFT    14
    377 #define _SHR_GPORT_MCAST_QUEUE_GROUP_SYSPORTID_MASK     0xfff
    378 #define _SHR_GPORT_MCAST_SUBSCRIBER_QUEUE_GROUP_SYSPORTID_SHIFT    16
    379 #define _SHR_GPORT_MCAST_SUBSCRIBER_QUEUE_GROUP_SYSPORTID_MASK     0xff
    380 #define _SHR_GPORT_MCAST_SUBSCRIBER_QUEUE_GROUP_QID_SHIFT 0
    381 #define _SHR_GPORT_MCAST_SUBSCRIBER_QUEUE_GROUP_QID_MASK  0x3fff
    382 #define _SHR_GPORT_SCHEDULER_SHIFT                      0
    383 #define _SHR_GPORT_SCHEDULER_MASK                       0x7fffff
    384 #define _SHR_GPORT_SCHEDULER_CORE_SHIFT                 23
    385 #define _SHR_GPORT_SCHEDULER_CORE_MASK                  _SHR_COSQ_GPORT_COMMON_CORE_MASK
    386 #define _SHR_GPORT_SCHEDULER_LEVEL_SHIFT                20
    387 #define _SHR_GPORT_SCHEDULER_LEVEL_MASK                 0x1f
    388 #define _SHR_GPORT_SCHEDULER_NODE_SHIFT                 0
    389 #define _SHR_GPORT_SCHEDULER_NODE_MASK                  0xfffff
    390 #define _SHR_GPORT_DEVID_SHIFT                          _SHR_GPORT_MODID_SHIFT
    391 #define _SHR_GPORT_DEVID_MASK                           _SHR_GPORT_MODID_MASK
    392 #define _SHR_GPORT_SPECIAL_SHIFT                        0
    393 #define _SHR_GPORT_SPECIAL_MASK                         0xffff
    394 #define _SHR_GPORT_MIRROR_SHIFT                         0
    395 #define _SHR_GPORT_MIRROR_MASK                          0xffff
    396 #define _SHR_GPORT_MIRROR_SUBTYPE_SHIFT 22
    397 #define _SHR_GPORT_MIRROR_SUBTYPE_MASK 0xf
    398 #define _SHR_GPORT_MIRROR_SUBTYPE_VAL_MIRROR            0
    399 #define _SHR_GPORT_MIRROR_SUBTYPE_VAL_SNOOP             1
    400 #define _SHR_GPORT_MIRROR_SUBTYPE_VAL_STAT_SAMPLE       2
    401 #define _SHR_GPORT_MIM_PORT_SHIFT                       0
    402 #define _SHR_GPORT_MIM_PORT_MASK                        0xffffff
    403 #define _SHR_GPORT_VLAN_PORT_SHIFT                      0
    404 #define _SHR_GPORT_VLAN_PORT_MASK                       0x3ffffff
    405 #define _SHR_GPORT_WLAN_PORT_SHIFT                      0
    406 #define _SHR_GPORT_WLAN_PORT_MASK                       0xffffff
    407 #define _SHR_GPORT_TRILL_PORT_SHIFT                     0
    408 #define _SHR_GPORT_TRILL_PORT_MASK                      0xffffff
    409 #define _SHR_GPORT_NIV_PORT_SHIFT                       0
    410 #define _SHR_GPORT_NIV_PORT_MASK                        0xffffff
    411 #define _SHR_GPORT_L2GRE_PORT_SHIFT                   0
    412 #define _SHR_GPORT_L2GRE_PORT_MASK                    0xffffff
    413 #define _SHR_GPORT_VXLAN_PORT_SHIFT                   0
    414 #define _SHR_GPORT_VXLAN_PORT_MASK                    0xffffff
    415 #define _SHR_GPORT_FLOW_PORT_SHIFT                    0
    416 #define _SHR_GPORT_FLOW_PORT_MASK                     0xffffff
    417 #define _SHR_GPORT_VPLAG_PORT_SHIFT                     0
    418 #define _SHR_GPORT_VPLAG_PORT_MASK                      0xffffff
    419 #define _SHR_GPORT_MAC_PORT_SHIFT                       0
    420 #define _SHR_GPORT_MAC_PORT_MASK                        0xffffff
    421 #define _SHR_GPORT_TUNNEL_SHIFT                         0
    422 #define _SHR_GPORT_TUNNEL_MASK                          0x3ffffff
    423 #define _SHR_GPORT_CHILD_SHIFT                          0
    424 #define _SHR_GPORT_CHILD_MASK                           0x3ffffff
    425 #define _SHR_GPORT_CHILD_MODID_SHIFT                    10
    426 #define _SHR_GPORT_CHILD_MODID_MASK                     0xffff
    427 #define _SHR_GPORT_CHILD_PORT_SHIFT                     0
    428 #define _SHR_GPORT_CHILD_PORT_MASK                      0x3ff
    429 #define _SHR_GPORT_EGRESS_GROUP_MODID_SHIFT             10
    430 #define _SHR_GPORT_EGRESS_GROUP_MODID_MASK              0xffff
    431 #define _SHR_GPORT_EGRESS_GROUP_SHIFT                   0
    432 #define _SHR_GPORT_EGRESS_GROUP_MASK                    0x3ff
    433 #define _SHR_GPORT_EGRESS_CHILD_SHIFT                   0
    434 #define _SHR_GPORT_EGRESS_CHILD_MASK                    0x3ffffff
    435 #define _SHR_GPORT_EGRESS_CHILD_PORT_SHIFT              0
    436 #define _SHR_GPORT_EGRESS_CHILD_PORT_MASK               0x3ff
    437 #define _SHR_GPORT_EGRESS_CHILD_MODID_SHIFT             10
    438 #define _SHR_GPORT_EGRESS_CHILD_MODID_MASK              0xffff
    439 #define _SHR_GPORT_EGRESS_MODPORT_SHIFT                 0
    440 #define _SHR_GPORT_EGRESS_MODPORT_MASK                  0x3ffffff
    441 #define _SHR_GPORT_EGRESS_MODPORT_MODID_SHIFT           10
    442 #define _SHR_GPORT_EGRESS_MODPORT_MODID_MASK            0xffff
    443 #define _SHR_GPORT_EGRESS_MODPORT_PORT_SHIFT            0
    444 #define _SHR_GPORT_EGRESS_MODPORT_PORT_MASK             0x3ff
    445 #define _SHR_GPORT_CONGESTION_SHIFT                     0
    446 #define _SHR_GPORT_CONGESTION_MASK                      0xff
    447 #define _SHR_GPORT_SYSTEM_PORT_SHIFT                    0
    448 #define _SHR_GPORT_SYSTEM_PORT_MASK                     0xffffff
    449 #define _SHR_GPORT_EPON_LINK_SHIFT                      0
    450 #define _SHR_GPORT_EPON_LINK_MASK                       0xffff
    451 #define _SHR_GPORT_EPON_LINK_NUM_SHIFT                  0
    452 #define _SHR_GPORT_EPON_LINK_NUM_MASK                   0xffff
    453 #define _SHR_GPORT_FORWARD_PORT_SHIFT                   0
    454 #define _SHR_GPORT_FORWARD_PORT_MASK                    0xffffff
    455 #define _SHR_GPORT_VP_GROUP_SHIFT                       0
    456 #define _SHR_GPORT_VP_GROUP_MASK                        0x3ffffff
    457 #define _SHR_ENCAP_ID_SHIFT                             0
    458 #define _SHR_ENCAP_ID_MASK                              0xfffffff
    459 #define _SHR_ENCAP_REMOTE_SHIFT                         28
    460 #define _SHR_ENCAP_REMOTE_MASK                          0x1
    461 
    462 #define _SHR_GPORT_ISQ_ROOT                             (_SHR_GPORT_SCHEDULER_MASK - 1)
    463 #define _SHR_GPORT_FMQ_ROOT                             (_SHR_GPORT_SCHEDULER_MASK - 2)
    464 #define _SHR_GPORT_FMQ_GUARANTEED                       (_SHR_GPORT_SCHEDULER_MASK - 3)
    465 #define _SHR_GPORT_FMQ_BESTEFFORT_AGR                   (_SHR_GPORT_SCHEDULER_MASK - 4)
    466 #define _SHR_GPORT_FMQ_BESTEFFORT0                      (_SHR_GPORT_SCHEDULER_MASK - 5)
    467 #define _SHR_GPORT_FMQ_BESTEFFORT1                      (_SHR_GPORT_SCHEDULER_MASK - 6)
    468 #define _SHR_GPORT_FMQ_BESTEFFORT2                      (_SHR_GPORT_SCHEDULER_MASK - 7)
    469 #define _SHR_GPORT_FABRIC_MESH_LOCAL                    (_SHR_GPORT_SCHEDULER_MASK - 8)
    470 #define _SHR_GPORT_FABRIC_MESH_DEV1                     (_SHR_GPORT_SCHEDULER_MASK - 9)
    471 #define _SHR_GPORT_FABRIC_MESH_DEV2                     (_SHR_GPORT_SCHEDULER_MASK - 10)
    472 #define _SHR_GPORT_FABRIC_MESH_DEV3                     (_SHR_GPORT_SCHEDULER_MASK - 11)
    473 #define _SHR_GPORT_FABRIC_MESH_DEV4                     (_SHR_GPORT_SCHEDULER_MASK - 12)
    474 #define _SHR_GPORT_FABRIC_MESH_DEV5                     (_SHR_GPORT_SCHEDULER_MASK - 13)
    475 #define _SHR_GPORT_FABRIC_MESH_DEV6                     (_SHR_GPORT_SCHEDULER_MASK - 14)
    476 #define _SHR_GPORT_FABRIC_MESH_DEV7                     (_SHR_GPORT_SCHEDULER_MASK - 15)
    477 #define _SHR_GPORT_FABRIC_CLOS_UNICAST_LOCAL            (_SHR_GPORT_SCHEDULER_MASK - 16)
    478 #define _SHR_GPORT_FABRIC_CLOS_UNICAST_LOCAL_LOW        (_SHR_GPORT_SCHEDULER_MASK - 17)
    479 #define _SHR_GPORT_FABRIC_CLOS_UNICAST_LOCAL_HIGH       (_SHR_GPORT_SCHEDULER_MASK - 18)
    480 #define _SHR_GPORT_FABRIC_CLOS_FABRIC                   (_SHR_GPORT_SCHEDULER_MASK - 19)
    481 #define _SHR_GPORT_FABRIC_CLOS_FABRIC_HIGH              (_SHR_GPORT_SCHEDULER_MASK - 20)
    482 #define _SHR_GPORT_FABRIC_CLOS_FABRIC_LOW               (_SHR_GPORT_SCHEDULER_MASK - 21)
    483 #define _SHR_GPORT_FABRIC_CLOS_UNICAST_FABRIC_HIGH      (_SHR_GPORT_SCHEDULER_MASK - 22)
    484 #define _SHR_GPORT_FABRIC_CLOS_UNICAST_FABRIC_LOW       (_SHR_GPORT_SCHEDULER_MASK - 23)
    485 #define _SHR_GPORT_FABRIC_CLOS_FMQ_GUARANTEED           (_SHR_GPORT_SCHEDULER_MASK - 24)
    486 #define _SHR_GPORT_FABRIC_CLOS_FMQ_BESTEFFORT           (_SHR_GPORT_SCHEDULER_MASK - 25)
    487 #define _SHR_GPORT_FMQ_CLASS1                           (_SHR_GPORT_SCHEDULER_MASK - 26)
    488 #define _SHR_GPORT_FMQ_CLASS2                           (_SHR_GPORT_SCHEDULER_MASK - 27)
    489 #define _SHR_GPORT_FMQ_CLASS3                           (_SHR_GPORT_SCHEDULER_MASK - 28)
    490 #define _SHR_GPORT_FMQ_CLASS4                           (_SHR_GPORT_SCHEDULER_MASK - 29)
    491 #define _SHR_GPORT_FABRIC_MESH_COMMON_LOCAL0            (_SHR_GPORT_SCHEDULER_MASK - 30)
    492 #define _SHR_GPORT_FABRIC_MESH_COMMON_LOCAL1            (_SHR_GPORT_SCHEDULER_MASK - 31)
    493 #define _SHR_GPORT_FABRIC_MESH_COMMON_DEV1              (_SHR_GPORT_SCHEDULER_MASK - 32)
    494 #define _SHR_GPORT_FABRIC_MESH_COMMON_DEV2              (_SHR_GPORT_SCHEDULER_MASK - 33)
    495 #define _SHR_GPORT_FABRIC_MESH_COMMON_DEV3              (_SHR_GPORT_SCHEDULER_MASK - 34)
    496 #define _SHR_GPORT_FABRIC_MESH_COMMON_MC                (_SHR_GPORT_SCHEDULER_MASK - 35)
    497 #define _SHR_GPORT_FABRIC_CLOS_COMMON_LOCAL0            (_SHR_GPORT_SCHEDULER_MASK - 36)
    498 #define _SHR_GPORT_FABRIC_CLOS_COMMON_LOCAL1            (_SHR_GPORT_SCHEDULER_MASK - 37)
    499 #define _SHR_GPORT_FABRIC_CLOS_COMMON_FABRIC            (_SHR_GPORT_SCHEDULER_MASK - 38)
    500 #define _SHR_GPORT_FABRIC_CLOS_COMMON_UNICAST_FABRIC    (_SHR_GPORT_SCHEDULER_MASK - 39)
    501 #define _SHR_GPORT_FABRIC_CLOS_COMMON_MULTICAST_FABRIC  (_SHR_GPORT_SCHEDULER_MASK - 40)
    502 #define _SHR_GPORT_FABRIC_MESH_LOCAL0_OCB_HIGH          (_SHR_GPORT_SCHEDULER_MASK - 41)
    503 #define _SHR_GPORT_FABRIC_MESH_LOCAL0_OCB_LOW           (_SHR_GPORT_SCHEDULER_MASK - 42)
    504 #define _SHR_GPORT_FABRIC_MESH_LOCAL0_MIX_HIGH          (_SHR_GPORT_SCHEDULER_MASK - 43)
    505 #define _SHR_GPORT_FABRIC_MESH_LOCAL0_MIX_LOW           (_SHR_GPORT_SCHEDULER_MASK - 44)
    506 #define _SHR_GPORT_FABRIC_MESH_LOCAL1_OCB_HIGH          (_SHR_GPORT_SCHEDULER_MASK - 45)
    507 #define _SHR_GPORT_FABRIC_MESH_LOCAL1_OCB_LOW           (_SHR_GPORT_SCHEDULER_MASK - 46)
    508 #define _SHR_GPORT_FABRIC_MESH_LOCAL1_MIX_HIGH          (_SHR_GPORT_SCHEDULER_MASK - 47)
    509 #define _SHR_GPORT_FABRIC_MESH_LOCAL1_MIX_LOW           (_SHR_GPORT_SCHEDULER_MASK - 48)
    510 #define _SHR_GPORT_FABRIC_MESH_DEV1_OCB_HIGH            (_SHR_GPORT_SCHEDULER_MASK - 49)
    511 #define _SHR_GPORT_FABRIC_MESH_DEV1_OCB_LOW             (_SHR_GPORT_SCHEDULER_MASK - 50)
    512 #define _SHR_GPORT_FABRIC_MESH_DEV1_MIX_HIGH            (_SHR_GPORT_SCHEDULER_MASK - 51)
    513 #define _SHR_GPORT_FABRIC_MESH_DEV1_MIX_LOW             (_SHR_GPORT_SCHEDULER_MASK - 52)
    514 #define _SHR_GPORT_FABRIC_MESH_DEV2_OCB_HIGH            (_SHR_GPORT_SCHEDULER_MASK - 53)
    515 #define _SHR_GPORT_FABRIC_MESH_DEV2_OCB_LOW             (_SHR_GPORT_SCHEDULER_MASK - 54)
    516 #define _SHR_GPORT_FABRIC_MESH_DEV2_MIX_HIGH            (_SHR_GPORT_SCHEDULER_MASK - 55)
    517 #define _SHR_GPORT_FABRIC_MESH_DEV2_MIX_LOW             (_SHR_GPORT_SCHEDULER_MASK - 56)
    518 #define _SHR_GPORT_FABRIC_MESH_DEV3_OCB_HIGH            (_SHR_GPORT_SCHEDULER_MASK - 57)
    519 #define _SHR_GPORT_FABRIC_MESH_DEV3_OCB_LOW             (_SHR_GPORT_SCHEDULER_MASK - 58)
    520 #define _SHR_GPORT_FABRIC_MESH_DEV3_MIX_HIGH            (_SHR_GPORT_SCHEDULER_MASK - 59)
    521 #define _SHR_GPORT_FABRIC_MESH_DEV3_MIX_LOW             (_SHR_GPORT_SCHEDULER_MASK - 60)
    522 #define _SHR_GPORT_FABRIC_MESH_MC_OCB_HIGH              (_SHR_GPORT_SCHEDULER_MASK - 61)
    523 #define _SHR_GPORT_FABRIC_MESH_MC_OCB_LOW               (_SHR_GPORT_SCHEDULER_MASK - 62)
    524 #define _SHR_GPORT_FABRIC_MESH_MC_MIX_HIGH              (_SHR_GPORT_SCHEDULER_MASK - 63)
    525 #define _SHR_GPORT_FABRIC_MESH_MC_MIX_LOW               (_SHR_GPORT_SCHEDULER_MASK - 64)
    526 #define _SHR_GPORT_FABRIC_MESH_LOCAL0                   (_SHR_GPORT_SCHEDULER_MASK - 65)
    527 #define _SHR_GPORT_FABRIC_MESH_LOCAL1                   (_SHR_GPORT_SCHEDULER_MASK - 66)
    528 #define _SHR_GPORT_FABRIC_MESH_MC                       (_SHR_GPORT_SCHEDULER_MASK - 67)
    529 #define _SHR_GPORT_FABRIC_MESH_SCOPE                    (_SHR_GPORT_SCHEDULER_MASK - 68)
    530 #define _SHR_GPORT_FABRIC_CLOS_LOCAL0_OCB_HIGH          (_SHR_GPORT_SCHEDULER_MASK - 69)
    531 #define _SHR_GPORT_FABRIC_CLOS_LOCAL0_OCB_LOW           (_SHR_GPORT_SCHEDULER_MASK - 70)
    532 #define _SHR_GPORT_FABRIC_CLOS_LOCAL0_MIX_HIGH          (_SHR_GPORT_SCHEDULER_MASK - 71)
    533 #define _SHR_GPORT_FABRIC_CLOS_LOCAL0_MIX_LOW           (_SHR_GPORT_SCHEDULER_MASK - 72)
    534 #define _SHR_GPORT_FABRIC_CLOS_LOCAL1_OCB_HIGH          (_SHR_GPORT_SCHEDULER_MASK - 73)
    535 #define _SHR_GPORT_FABRIC_CLOS_LOCAL1_OCB_LOW           (_SHR_GPORT_SCHEDULER_MASK - 74)
    536 #define _SHR_GPORT_FABRIC_CLOS_LOCAL1_MIX_HIGH          (_SHR_GPORT_SCHEDULER_MASK - 75)
    537 #define _SHR_GPORT_FABRIC_CLOS_LOCAL1_MIX_LOW           (_SHR_GPORT_SCHEDULER_MASK - 76)
    538 #define _SHR_GPORT_FABRIC_CLOS_UNICAST_FABRIC_OCB_HIGH  (_SHR_GPORT_SCHEDULER_MASK - 77)
    539 #define _SHR_GPORT_FABRIC_CLOS_UNICAST_FABRIC_OCB_LOW   (_SHR_GPORT_SCHEDULER_MASK - 78)
    540 #define _SHR_GPORT_FABRIC_CLOS_UNICAST_FABRIC_MIX_HIGH  (_SHR_GPORT_SCHEDULER_MASK - 79)
    541 #define _SHR_GPORT_FABRIC_CLOS_UNICAST_FABRIC_MIX_LOW   (_SHR_GPORT_SCHEDULER_MASK - 80)
    542 #define _SHR_GPORT_FABRIC_CLOS_FMQ_GUARANTEED_OCB       (_SHR_GPORT_SCHEDULER_MASK - 81)
    543 #define _SHR_GPORT_FABRIC_CLOS_FMQ_BEST_EFFORT_OCB      (_SHR_GPORT_SCHEDULER_MASK - 82)
    544 #define _SHR_GPORT_FABRIC_CLOS_FMQ_GUARANTEED_MIX       (_SHR_GPORT_SCHEDULER_MASK - 83)
    545 #define _SHR_GPORT_FABRIC_CLOS_FMQ_BEST_EFFORT_MIX      (_SHR_GPORT_SCHEDULER_MASK - 84)
    546 #define _SHR_GPORT_FABRIC_CLOS_LOCAL0                   (_SHR_GPORT_SCHEDULER_MASK - 85)
    547 #define _SHR_GPORT_FABRIC_CLOS_LOCAL1                   (_SHR_GPORT_SCHEDULER_MASK - 86)
    548 #define _SHR_GPORT_FABRIC_CLOS_LOCAL0_HIGH              (_SHR_GPORT_SCHEDULER_MASK - 87)
    549 #define _SHR_GPORT_FABRIC_CLOS_LOCAL0_LOW               (_SHR_GPORT_SCHEDULER_MASK - 88)
    550 #define _SHR_GPORT_FABRIC_CLOS_LOCAL1_HIGH              (_SHR_GPORT_SCHEDULER_MASK - 89)
    551 #define _SHR_GPORT_FABRIC_CLOS_LOCAL1_LOW               (_SHR_GPORT_SCHEDULER_MASK - 90)
    552 #define _SHR_GPORT_FABRIC_CLOS_OCB_HIGH                 (_SHR_GPORT_SCHEDULER_MASK - 91)
    553 #define _SHR_GPORT_FABRIC_CLOS_MIX_HIGH                 (_SHR_GPORT_SCHEDULER_MASK - 92)
    554 #define _SHR_GPORT_FABRIC_CLOS_OCB_LOW                  (_SHR_GPORT_SCHEDULER_MASK - 93)
    555 #define _SHR_GPORT_FABRIC_CLOS_MIX_LOW                  (_SHR_GPORT_SCHEDULER_MASK - 94)
    556 #define _SHR_GPORT_FABRIC_CLOS_SCOPE                    (_SHR_GPORT_SCHEDULER_MASK - 95)
    557 
    558  /*
    559   * MCAST GPORT subtype shift & mask definitions 
    560   */
    561 #define _SHR_MCAST_GPORT_TYPE_SHIFT                      23
    562 #define _SHR_MCAST_GPORT_TYPE_MASK                       0x7
    563 #define _SHR_MCAST_GPORT_GROUP_ID_MASK                   ((1<<_SHR_MCAST_GPORT_TYPE_SHIFT)-1)
    564 
    565 /* COSQ GPORT subtype shift & mask definitions */
    566 #define _SHR_COSQ_GPORT_TYPE_SHIFT                      21
    567 #define _SHR_COSQ_GPORT_TYPE_MASK                       0x1F
    568 #define _SHR_COSQ_GPORT_UCAST_EGRESS_QUEUE_PORT_MASK    0x7FF
    569 #define _SHR_COSQ_GPORT_UCAST_EGRESS_QUEUE_PORT_SHIFT   0
    570 #define _SHR_COSQ_GPORT_MCAST_EGRESS_QUEUE_PORT_MASK    0x7FF
    571 #define _SHR_COSQ_GPORT_MCAST_EGRESS_QUEUE_PORT_SHIFT   0
    572 #define _SHR_COSQ_GPORT_VSQ_TYPE_MASK                   0xF
    573 #define _SHR_COSQ_GPORT_VSQ_TYPE_SHIFT                  17
    574 #define _SHR_COSQ_GPORT_VSQ_TYPE_INFO_MASK              0x1FFFF
    575 #define _SHR_COSQ_GPORT_VSQ_TYPE_INFO_SHIFT             0
    576 #define _SHR_VSQ_TYPE_INFO_CATEGORY_MASK                0x3
    577 #define _SHR_VSQ_TYPE_INFO_CATEGORY_SHIFT               5
    578 #define _SHR_VSQ_TYPE_INFO_TC_MASK                      0x7
    579 #define _SHR_VSQ_TYPE_INFO_TC_SHIFT                     0
    580 #define _SHR_VSQ_TYPE_INFO_CORE_MASK                    _SHR_COSQ_GPORT_COMMON_CORE_MASK
    581 #define _SHR_VSQ_TYPE_INFO_CORE_SHIFT                   13
    582 #define _SHR_VSQ_TYPE_INFO_OCB_ONLY_MASK                1
    583 #define _SHR_VSQ_TYPE_INFO_OCB_ONLY_SHIFT               16
    584 #define _SHR_VSQ_TYPE_INFO_CONNECTION_MASK              0xF
    585 #define _SHR_VSQ_TYPE_INFO_CONNECTION_SHIFT             0
    586 #define _SHR_VSQ_TYPE_INFO_SRC_PORT_MASK                0x1FF
    587 #define _SHR_VSQ_TYPE_INFO_SRC_PORT_SHIFT               4
    588 #define _SHR_VSQ_TYPE_INFO_STATISTICS_TAG_MASK          0x1FF
    589 #define _SHR_VSQ_TYPE_INFO_STATISTICS_TAG_SHIFT         0
    590 #define _SHR_COSQ_GPORT_E2E_PORT_MASK                   0x7FF
    591 #define _SHR_COSQ_GPORT_E2E_PORT_SHIFT                  0
    592 #define _SHR_COSQ_GPORT_ISQ_QID_SHIFT                   0
    593 #define _SHR_COSQ_GPORT_ISQ_QID_MASK _SHR_COSQ_GPORT_COMMON_QUEUE_MASK
    594 #define _SHR_COSQ_GPORT_MULTIPATH_SHIFT                 0
    595 #define _SHR_COSQ_GPORT_MULTIPATH_MASK                  0x7fffff
    596 #define _SHR_COSQ_GPORT_SCHED_CIR_SHIFT                 0
    597 #define _SHR_COSQ_GPORT_SCHED_CIR_MASK                  0x3FFFF /* WAS 0xFFFFF */
    598 #define _SHR_COSQ_GPORT_SCHED_CIR_CORE_SHIFT            18
    599 #define _SHR_COSQ_GPORT_SCHED_CIR_CORE_MASK             _SHR_COSQ_GPORT_COMMON_CORE_MASK
    600 #define _SHR_COSQ_GPORT_SCHED_PIR_SHIFT                 0
    601 #define _SHR_COSQ_GPORT_SCHED_PIR_MASK                  0x3FFFF /* WAS 0xFFFFF */
    602 #define _SHR_COSQ_GPORT_SCHED_PIR_CORE_SHIFT            18
    603 #define _SHR_COSQ_GPORT_SCHED_PIR_CORE_MASK             _SHR_COSQ_GPORT_COMMON_CORE_MASK
    604 #define _SHR_COSQ_GPORT_ATTACH_ID_SYSPORT_SHIFT         0
    605 #define _SHR_COSQ_GPORT_ATTACH_ID_SYSPORT_MASK          0xfff
    606 #define _SHR_COSQ_GPORT_ATTACH_ID_FCD_SHIFT             12
    607 #define _SHR_COSQ_GPORT_ATTACH_ID_FCD_MASK              0x3ff
    608 #define _SHR_COSQ_GPORT_VOQ_CONNECTOR_ID_SHIFT          0
    609 #define _SHR_COSQ_GPORT_VOQ_CONNECTOR_ID_MASK           0x3FFFF
    610 #define _SHR_GPORT_VOQ_CONNECTOR_CORE_SHIFT             18
    611 #define _SHR_GPORT_VOQ_CONNECTOR_CORE_MASK              _SHR_COSQ_GPORT_COMMON_CORE_MASK
    612 #define _SHR_COSQ_GPORT_COMPOSITE_SF2_FLOW_SHIFT        0
    613 #define _SHR_COSQ_GPORT_COMPOSITE_SF2_FLOW_MASK         0x3FFFF
    614 #define _SHR_COSQ_GPORT_COMPOSITE_SF2_CORE_SHIFT        18
    615 #define _SHR_COSQ_GPORT_COMPOSITE_SF2_CORE_MASK         _SHR_COSQ_GPORT_COMMON_CORE_MASK
    616 #define _SHR_COSQ_GPORT_INBAND_COE_MASK         0x5 /* Calandar 0~5 */
    617 #define _SHR_COSQ_GPORT_INBAND_COE_SHIFT        0
    618 
    619 #define _SHR_COSQ_GPORT_SHARED_SHAPER_ELEM_FLOW_SHIFT        0
    620 #define _SHR_COSQ_GPORT_SHARED_SHAPER_ELEM_FLOW_MASK         0x3FFFF
    621 #define _SHR_COSQ_GPORT_SHARED_SHAPER_ELEM_CORE_SHIFT        18
    622 #define _SHR_COSQ_GPORT_SHARED_SHAPER_ELEM_CORE_MASK         _SHR_COSQ_GPORT_COMMON_CORE_MASK
    623 
    624 #define _SHR_COSQ_GPORT_PORT_TC_SHIFT                   0
    625 #define _SHR_COSQ_GPORT_PORT_TC_MASK                    0x7FF
    626 #define _SHR_COSQ_GPORT_PORT_TCG_SHIFT                  0
    627 #define _SHR_COSQ_GPORT_PORT_TCG_MASK                   0x7FF
    628 #define _SHR_COSQ_GPORT_E2E_PORT_TC_SHIFT               0
    629 #define _SHR_COSQ_GPORT_E2E_PORT_TC_MASK                0x7FF
    630 #define _SHR_COSQ_GPORT_E2E_PORT_TCG_SHIFT              0
    631 #define _SHR_COSQ_GPORT_E2E_PORT_TCG_MASK               0x7FF
    632 #define _SHR_COSQ_GPORT_FABRIC_PIPE_TYPE_SHIFT          16
    633 #define _SHR_COSQ_GPORT_FABRIC_PIPE_TYPE_MASK           0x1f
    634 #define _SHR_COSQ_GPORT_FABRIC_PIPE_PIPE_SHIFT          9
    635 #define _SHR_COSQ_GPORT_FABRIC_PIPE_PIPE_MASK           0xf
    636 #define _SHR_COSQ_GPORT_FABRIC_PIPE_PORT_SHIFT          0
    637 #define _SHR_COSQ_GPORT_FABRIC_PIPE_PORT_MASK           0x1ff
    638 #define _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_PIPE_MASK       0xf
    639 #define _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_PIPE_SHIFT      7
    640 #define _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_TYPE_MASK       0x7f
    641 #define _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_TYPE_SHIFT      0
    642 #define _SHR_COSQ_GPORT_CORE_SHIFT                      0
    643 #define _SHR_COSQ_GPORT_CORE_MASK                       0xFF
    644 
    645 #define _SHR_COSQ_GPORT_SRC_QUEUE_SHIFT                 0
    646 #define _SHR_COSQ_GPORT_SRC_QUEUE_MASK                  0xFFFF
    647 #define _SHR_COSQ_GPORT_DST_QUEUE_SHIFT                 0
    648 #define _SHR_COSQ_GPORT_DST_QUEUE_MASK                  0xFFFF
    649 
    650 #define _SHR_COSQ_GPORT_INGRESS_RECEIVE_TYPE_MASK 0x1f
    651 #define _SHR_COSQ_GPORT_INGRESS_RECEIVE_TYPE_SHIFT 0
    652 #define _SHR_COSQ_GPORT_INGRESS_RECEIVE_TYPE_CPU_GUARANTEED 1
    653 #define _SHR_COSQ_GPORT_INGRESS_RECEIVE_TYPE_RCY_GUARANTEED 2
    654 #define _SHR_COSQ_GPORT_INGRESS_RECEIVE_TYPE_NIF 3
    655 
    656 #define _SHR_COSQ_GPORT_INGRESS_RECEIVE_CORE_ID_SHIFT    18
    657 #define _SHR_COSQ_GPORT_INGRESS_RECEIVE_CORE_ID_MASK     _SHR_COSQ_GPORT_COMMON_CORE_MASK
    658 
    659 /* definitions for cosq gport type fabric handling */
    660 #define _SHR_COSQ_FABRIC_TYPE_PIPE_GLOBAL           0
    661 #define _SHR_COSQ_FABRIC_TYPE_PIPE_INGRESS          1
    662 #define _SHR_COSQ_FABRIC_TYPE_PIPE_EGRESS           2
    663 #define _SHR_COSQ_FABRIC_TYPE_PIPE_MIDDLE           3
    664 #define _SHR_COSQ_FABRIC_PIPE_ALL_PIPES             _SHR_COSQ_GPORT_FABRIC_PIPE_PIPE_MASK
    665 #define _SHR_COSQ_FABRIC_PIPE_ALL_PORTS             _SHR_COSQ_GPORT_FABRIC_PIPE_PORT_MASK
    666 
    667 /* Extender GPORT subtype shift & mask definitions */
    668 #define _SHR_GPORT_EXTENDER_PORT_SHIFT                  (0)
    669 #define _SHR_GPORT_EXTENDER_PORT_MASK                   (0x3FFFFFF)
    670 #define _SHR_EXTENDER_GPORT_TYPE_SHIFT                  (23)
    671 #define _SHR_EXTENDER_GPORT_TYPE_MASK                   (0x7)
    672 
    673 /* Profile GPORT subtype shift & mask definitions */
    674 #define _SHR_GPORT_PROFILE_SHIFT                        0
    675 #define _SHR_GPORT_PROFILE_MASK                         0xffff
    676 #define _SHR_GPORT_PROFILE_TYPE_MASK                    0x1f
    677 #define _SHR_GPORT_PROFILE_TYPE_SHIFT                   21
    678 
    679 #define _SHR_GPORT_TYPE_TRAP                            ((_SHR_GPORT_TYPE_LOCAL_CPU << 1) | 1)  /* This will mark the
    680                                                                                                  * CPU type, and the
    681                                                                                                  * 1st bit in the value 
    682                                                                                                  * * * to indicate trap 
    683                                                                                                  */
    684 #define _SHR_GPORT_TYPE_TRAP_SHIFT                      (_SHR_GPORT_TYPE_SHIFT-1)       /* 25 */
    685 #define _SHR_GPORT_TYPE_TRAP_MASK                       (_SHR_GPORT_TYPE_MASK<<1|1)     /* 0x4f */
    686 #define _SHR_GPORT_TRAP_ID_SHIFT                         0
    687 #define _SHR_GPORT_TRAP_ID_MASK                          0xfff
    688 #define _SHR_GPORT_TRAP_STRENGTH_SHIFT          	     12
    689 #define _SHR_GPORT_TRAP_STRENGTH_MASK          		     0xf
    690 #define _SHR_GPORT_TRAP_SNOOP_STRENGTH_SHIFT             16
    691 #define _SHR_GPORT_TRAP_SNOOP_STRENGTH_MASK              0xf
    692 
    693 #define _SHR_PHY_GPORT_TYPE_SHIFT 20
    694 #define _SHR_PHY_GPORT_TYPE_MASK 0x3F
    695 
    696 #define _SHR_PHY_GPORT_TYPE_LANE_PORT 1
    697 #define _SHR_PHY_GPORT_LANE_PORT_PORT_MASK 0x3ff
    698 #define _SHR_PHY_GPORT_LANE_PORT_LANE_MASK 0x3ff
    699 #define _SHR_PHY_GPORT_LANE_PORT_PORT_SHIFT 0
    700 #define _SHR_PHY_GPORT_LANE_PORT_LANE_SHIFT 10
    701 
    702 #define _SHR_PHY_GPORT_TYPE_PHYN_PORT 2
    703 #define _SHR_PHY_GPORT_PHYN_PORT_PHYN_MASK 0x7
    704 #define _SHR_PHY_GPORT_PHYN_PORT_PHYN_SHIFT 17
    705 #define _SHR_PHY_GPORT_PHYN_PORT_PORT_MASK 0x3FF
    706 #define _SHR_PHY_GPORT_PHYN_PORT_PORT_SHIFT 0
    707 
    708 #define _SHR_PHY_GPORT_TYPE_PHYN_LANE_PORT 3
    709 #define _SHR_PHY_GPORT_PHYN_LANE_PORT_PHYN_MASK 0x7
    710 #define _SHR_PHY_GPORT_PHYN_LANE_PORT_PHYN_SHIFT 17
    711 #define _SHR_PHY_GPORT_PHYN_LANE_PORT_LANE_MASK 0x7F
    712 #define _SHR_PHY_GPORT_PHYN_LANE_PORT_LANE_SHIFT 10
    713 #define _SHR_PHY_GPORT_PHYN_LANE_PORT_PORT_MASK 0x3FF
    714 #define _SHR_PHY_GPORT_PHYN_LANE_PORT_PORT_SHIFT 0
    715 
    716 #define _SHR_PHY_GPORT_TYPE_PHYN_SYS_SIDE_PORT 4
    717 #define _SHR_PHY_GPORT_PHYN_SYS_SIDE_PORT_PHYN_MASK 0x7
    718 #define _SHR_PHY_GPORT_PHYN_SYS_SIDE_PORT_PHYN_SHIFT 17
    719 #define _SHR_PHY_GPORT_PHYN_SYS_SIDE_PORT_PORT_MASK 0x3FF
    720 #define _SHR_PHY_GPORT_PHYN_SYS_SIDE_PORT_PORT_SHIFT 0
    721 
    722 #define _SHR_PHY_GPORT_TYPE_PHYN_SYS_SIDE_LANE_PORT 5
    723 #define _SHR_PHY_GPORT_PHYN_SYS_SIDE_LANE_PORT_PHYN_MASK 0x7
    724 #define _SHR_PHY_GPORT_PHYN_SYS_SIDE_LANE_PORT_PHYN_SHIFT 17
    725 #define _SHR_PHY_GPORT_PHYN_SYS_SIDE_LANE_PORT_LANE_MASK 0x7F
    726 #define _SHR_PHY_GPORT_PHYN_SYS_SIDE_LANE_PORT_LANE_SHIFT 10
    727 #define _SHR_PHY_GPORT_PHYN_SYS_SIDE_LANE_PORT_PORT_MASK 0x3FF
    728 #define _SHR_PHY_GPORT_PHYN_SYS_SIDE_LANE_PORT_PORT_SHIFT 0
    729 
    730 #define _SHR_GPORT_LOCAL_TYPE_COMMON    (0)
    731 #define _SHR_GPORT_LOCAL_TYPE_FABRIC    (1)
    732 #define _SHR_GPORT_LOCAL_TYPE_INTERFACE (2)
    733 #define _SHR_GPORT_LOCAL_TYPE_SHIFT (21)
    734 #define _SHR_GPORT_LOCAL_TYPE_MASK (0x1f)
    735 
    736 #define _SHR_COSQ_VSQ_GL         0x0
    737 #define _SHR_COSQ_VSQ_CT         0x1
    738 #define _SHR_COSQ_VSQ_CTTC       0x2
    739 #define _SHR_COSQ_VSQ_CTCC       0x3
    740 #define _SHR_COSQ_VSQ_PP         0x4
    741 #define _SHR_COSQ_VSQ_SRC_PORT   0x5
    742 #define _SHR_COSQ_VSQ_PG         0x6
    743 
    744 #define _SHR_GPORT_IS_SET(_gport)    \
    745         (((((_gport) >> _SHR_GPORT_TYPE_SHIFT) & _SHR_GPORT_TYPE_MASK) > 0) && \
    746          ((((_gport) >> _SHR_GPORT_TYPE_SHIFT) & _SHR_GPORT_TYPE_MASK) <= _SHR_GPORT_TYPE_MAX))
    747 
    748 #define _SHR_GPORT_IS_LOCAL(_gport) \
    749         (((((_gport) >> _SHR_GPORT_TYPE_SHIFT) & _SHR_GPORT_TYPE_MASK) == \
    750           _SHR_GPORT_TYPE_LOCAL) && \
    751         ((((_gport) >> _SHR_GPORT_LOCAL_TYPE_SHIFT) & _SHR_GPORT_LOCAL_TYPE_MASK) == \
    752           _SHR_GPORT_LOCAL_TYPE_COMMON))
    753 
    754 #define _SHR_GPORT_LOCAL_SET(_gport, _port)\
    755         ((_gport) = (_SHR_GPORT_TYPE_LOCAL << _SHR_GPORT_TYPE_SHIFT) |\
    756         (_SHR_GPORT_LOCAL_TYPE_COMMON << _SHR_GPORT_LOCAL_TYPE_SHIFT)|\
    757         (((_port) & _SHR_GPORT_PORT_MASK) << _SHR_GPORT_PORT_SHIFT))
    758 
    759 #define _SHR_GPORT_LOCAL_GET(_gport) \
    760         (((_gport) >> _SHR_GPORT_PORT_SHIFT) & _SHR_GPORT_PORT_MASK)
    761 
    762 #define _SHR_GPORT_IS_MODPORT(_gport)    \
    763         (((_gport) >> _SHR_GPORT_TYPE_SHIFT) == _SHR_GPORT_TYPE_MODPORT)
    764 
    765 #define _SHR_GPORT_MODPORT_SET(_gport, _module, _port)                       \
    766         ((_gport) = (_SHR_GPORT_TYPE_MODPORT   << _SHR_GPORT_TYPE_SHIFT)   | \
    767          (((_module) & _SHR_GPORT_MODID_MASK)  << _SHR_GPORT_MODID_SHIFT)  | \
    768          (((_port) & _SHR_GPORT_PORT_MASK)     << _SHR_GPORT_PORT_SHIFT))
    769 
    770 #define _SHR_GPORT_MODPORT_MODID_GET(_gport)    \
    771         (((_gport) >> _SHR_GPORT_MODID_SHIFT) & _SHR_GPORT_MODID_MASK)
    772 
    773 #define _SHR_GPORT_MODPORT_PORT_GET(_gport)     \
    774         (((_gport) >> _SHR_GPORT_PORT_SHIFT) & _SHR_GPORT_PORT_MASK)
    775 
    776 #define _SHR_GPORT_IS_TRUNK(_gport)    \
    777         (((_gport) >> _SHR_GPORT_TYPE_SHIFT) == _SHR_GPORT_TYPE_TRUNK)
    778 
    779 #define _SHR_GPORT_TRUNK_SET(_gport, _trunk_id)                              \
    780         ((_gport) = (_SHR_GPORT_TYPE_TRUNK      << _SHR_GPORT_TYPE_SHIFT)  | \
    781          (((_trunk_id) & _SHR_GPORT_TRUNK_MASK) << _SHR_GPORT_TRUNK_SHIFT))
    782 
    783 #define _SHR_GPORT_TRUNK_GET(_gport)   \
    784         (((_gport) >> _SHR_GPORT_TRUNK_SHIFT) & _SHR_GPORT_TRUNK_MASK)
    785 
    786 #define _SHR_GPORT_IS_MPLS_PORT(_gport)    \
    787         (((_gport) >> _SHR_GPORT_TYPE_SHIFT) == _SHR_GPORT_TYPE_MPLS_PORT)
    788 
    789 #define _SHR_GPORT_MPLS_PORT_ID_SET(_gport, _id)                            \
    790         ((_gport) = (_SHR_GPORT_TYPE_MPLS_PORT << _SHR_GPORT_TYPE_SHIFT)  | \
    791          (((_id) & _SHR_GPORT_MPLS_PORT_MASK) << _SHR_GPORT_MPLS_PORT_SHIFT))
    792 
    793 #define _SHR_GPORT_MPLS_PORT_ID_GET(_gport)   \
    794         (((_gport) >> _SHR_GPORT_MPLS_PORT_SHIFT) & _SHR_GPORT_MPLS_PORT_MASK)
    795 
    796 #define _SHR_GPORT_IS_SUBPORT_GROUP(_gport)    \
    797         (((_gport) >> _SHR_GPORT_TYPE_SHIFT) == _SHR_GPORT_TYPE_SUBPORT_GROUP)
    798 
    799 #define _SHR_GPORT_SUBPORT_GROUP_SET(_gport, _id)                            \
    800         ((_gport) = (_SHR_GPORT_TYPE_SUBPORT_GROUP << _SHR_GPORT_TYPE_SHIFT)  | \
    801          (((_id) & _SHR_GPORT_SUBPORT_GROUP_MASK) << _SHR_GPORT_SUBPORT_GROUP_SHIFT))
    802 
    803 #define _SHR_GPORT_SUBPORT_GROUP_GET(_gport)   \
    804         (((_gport) >> _SHR_GPORT_SUBPORT_GROUP_SHIFT) & _SHR_GPORT_SUBPORT_GROUP_MASK)
    805 
    806 #define _SHR_GPORT_IS_SUBPORT_PORT(_gport)    \
    807         (((_gport) >> _SHR_GPORT_TYPE_SHIFT) == _SHR_GPORT_TYPE_SUBPORT_PORT)
    808 
    809 #define _SHR_GPORT_SUBPORT_PORT_SET(_gport, _id)                            \
    810         ((_gport) = (_SHR_GPORT_TYPE_SUBPORT_PORT << _SHR_GPORT_TYPE_SHIFT)  | \
    811          (((_id) & _SHR_GPORT_SUBPORT_PORT_MASK) << _SHR_GPORT_SUBPORT_PORT_SHIFT))
    812 
    813 #define _SHR_GPORT_SUBPORT_PORT_GET(_gport)   \
    814         (((_gport) >> _SHR_GPORT_SUBPORT_PORT_SHIFT) & _SHR_GPORT_SUBPORT_PORT_MASK)
    815 
    816 #define _SHR_GPORT_IS_SCHEDULER(_gport)    \
    817         (((_gport) >> _SHR_GPORT_TYPE_SHIFT) == _SHR_GPORT_TYPE_SCHEDULER)
    818 
    819 #define _SHR_GPORT_SCHEDULER_SET(_gport, _id)                            \
    820         _SHR_GPORT_SCHEDULER_CORE_SET(_gport, _id, _SHR_CORE_ALL)
    821 
    822 #define _SHR_GPORT_SCHEDULER_GET(_gport)   \
    823         (((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK)
    824 
    825 #define _SHR_GPORT_SCHEDULER_ONLY_CORE_SET(_gport, _core_id)   \
    826         ((_gport) = (_gport &  (~(_SHR_GPORT_SCHEDULER_CORE_MASK << _SHR_GPORT_SCHEDULER_CORE_SHIFT))) | \
    827         (((_SHR_CORE_ID2FIELD(_core_id)) & _SHR_GPORT_SCHEDULER_CORE_MASK) << _SHR_GPORT_SCHEDULER_CORE_SHIFT))
    828 
    829 #define  _SHR_GPORT_SCHEDULER_CORE_GET(_gport) \
    830         _SHR_CORE_FIELD2ID((((_gport) >> _SHR_GPORT_SCHEDULER_CORE_SHIFT) & _SHR_GPORT_SCHEDULER_CORE_MASK))
    831 
    832 #define _SHR_GPORT_SCHEDULER_CORE_SET(_gport, _scheduler_id, _core_id)       \
    833         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  | \
    834          (((_scheduler_id) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT) | \
    835          (((_SHR_CORE_ID2FIELD(_core_id)) & _SHR_GPORT_SCHEDULER_CORE_MASK) << _SHR_GPORT_SCHEDULER_CORE_SHIFT))
    836 
    837 #define _SHR_GPORT_SCHEDULER_NODE_SET(_gport, _level, _node)		\
    838         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  | \
    839          (((_level) & _SHR_GPORT_SCHEDULER_LEVEL_MASK) << _SHR_GPORT_SCHEDULER_LEVEL_SHIFT) | \
    840          (((_node) & _SHR_GPORT_SCHEDULER_NODE_MASK) << _SHR_GPORT_SCHEDULER_NODE_SHIFT))
    841 
    842 #define _SHR_GPORT_SCHEDULER_LEVEL_GET(_gport)   \
    843         (((_gport) >> _SHR_GPORT_SCHEDULER_LEVEL_SHIFT) & _SHR_GPORT_SCHEDULER_LEVEL_MASK)
    844 
    845 #define _SHR_GPORT_SCHEDULER_NODE_GET(_gport)   \
    846         (((_gport) >> _SHR_GPORT_SCHEDULER_NODE_SHIFT) & _SHR_GPORT_SCHEDULER_NODE_MASK)
    847 
    848 #define _SHR_GPORT_IS_DEVPORT(_gport)    \
    849         (((_gport) >> _SHR_GPORT_TYPE_SHIFT) == _SHR_GPORT_TYPE_DEVPORT)
    850 
    851 #define _SHR_GPORT_DEVPORT(_device, _port)                       \
    852         ((_SHR_GPORT_TYPE_DEVPORT   << _SHR_GPORT_TYPE_SHIFT)   | \
    853          (((_device) & _SHR_GPORT_DEVID_MASK)  << _SHR_GPORT_DEVID_SHIFT)  | \
    854          (((_port) & _SHR_GPORT_PORT_MASK)     << _SHR_GPORT_PORT_SHIFT))
    855 
    856 #define _SHR_GPORT_DEVPORT_SET(_gport, _device, _port)                       \
    857         ((_gport) = _SHR_GPORT_DEVPORT(_device, _port))
    858 
    859 #define _SHR_GPORT_DEVPORT_DEVID_GET(_gport)    \
    860         (((_gport) >> _SHR_GPORT_DEVID_SHIFT) & _SHR_GPORT_DEVID_MASK)
    861 
    862 #define _SHR_GPORT_DEVPORT_PORT_GET(_gport)     \
    863         (((_gport) >> _SHR_GPORT_PORT_SHIFT) & _SHR_GPORT_PORT_MASK)
    864 
    865 #define _SHR_GPORT_BLACK_HOLE    \
    866         (_SHR_GPORT_TYPE_BLACK_HOLE << _SHR_GPORT_TYPE_SHIFT)
    867 
    868 #define _SHR_GPORT_IS_BLACK_HOLE(_gport)  ((_gport) == _SHR_GPORT_BLACK_HOLE)
    869 
    870 #define _SHR_GPORT_LOCAL_CPU	    \
    871         (_SHR_GPORT_TYPE_LOCAL_CPU << _SHR_GPORT_TYPE_SHIFT)
    872 
    873 #define _SHR_GPORT_LOCAL_CPU_IEEE	    \
    874         (_SHR_GPORT_TYPE_LOCAL_CPU_IEEE << _SHR_GPORT_TYPE_SHIFT)
    875 
    876 #define _SHR_GPORT_LOCAL_CPU_HIGIG	    \
    877         (_SHR_GPORT_TYPE_LOCAL_CPU_HIGIG << _SHR_GPORT_TYPE_SHIFT)
    878 
    879 #define _SHR_GPORT_IS_LOCAL_CPU(_gport)   ((_gport) == _SHR_GPORT_LOCAL_CPU)
    880 
    881 #define _SHR_GPORT_IS_LOCAL_CPU_IEEE(_gport)   ((_gport) == _SHR_GPORT_LOCAL_CPU_IEEE)
    882 
    883 #define _SHR_GPORT_IS_LOCAL_CPU_HIGIG(_gport)   ((_gport) == _SHR_GPORT_LOCAL_CPU_HIGIG)
    884 
    885 #define _SHR_GPORT_IS_DESTMOD_QUEUE_GROUP(_gport)    \
    886         ((((_gport) >> _SHR_GPORT_TYPE_SHIFT) & _SHR_GPORT_TYPE_MASK) \
    887          == _SHR_GPORT_TYPE_DESTMOD_QUEUE_GROUP)
    888 
    889 #define _SHR_GPORT_DESTMOD_QUEUE_GROUP_SET(_gport, _qid)       \
    890             _SHR_GPORT_DESTMOD_QUEUE_GROUP_SYSQID_SET(_gport,  \
    891             _SHR_GPORT_DESTMOD_QUEUE_GROUP_SYSPORTID_MASK, \
    892              _qid)
    893 
    894 #define _SHR_GPORT_DESTMOD_QUEUE_GROUP_SYSQID_SET(_gport, _sysport_id, _qid) \
    895         ((_gport) = (_SHR_GPORT_TYPE_DESTMOD_QUEUE_GROUP \
    896             << _SHR_GPORT_TYPE_SHIFT)   | \
    897          (((_sysport_id) & _SHR_GPORT_DESTMOD_QUEUE_GROUP_SYSPORTID_MASK) \
    898           << _SHR_GPORT_DESTMOD_QUEUE_GROUP_SYSPORTID_SHIFT)  | \
    899          (((_qid) & _SHR_GPORT_DESTMOD_QUEUE_GROUP_QID_MASK) \
    900           << _SHR_GPORT_DESTMOD_QUEUE_GROUP_QID_SHIFT))
    901 
    902 #define _SHR_GPORT_DESTMOD_QUEUE_GROUP_SYSPORTID_GET(_gport)                       \
    903         (((_gport) >> _SHR_GPORT_DESTMOD_QUEUE_GROUP_SYSPORTID_SHIFT) \
    904          & _SHR_GPORT_DESTMOD_QUEUE_GROUP_SYSPORTID_MASK)
    905 
    906 #define _SHR_GPORT_DESTMOD_QUEUE_GROUP_QID_GET(_gport)                       \
    907         (((_gport) >> _SHR_GPORT_DESTMOD_QUEUE_GROUP_QID_SHIFT) \
    908          & _SHR_GPORT_DESTMOD_QUEUE_GROUP_QID_MASK)
    909 
    910 #define _SHR_GPORT_IS_UCAST_QUEUE_GROUP(_gport)    \
    911         (((_gport) >> _SHR_GPORT_TYPE_SHIFT) == _SHR_GPORT_TYPE_UCAST_QUEUE_GROUP)
    912 
    913 #define _SHR_GPORT_UCAST_QUEUE_GROUP_SET(_gport, _qid)                           \
    914             _SHR_GPORT_UCAST_QUEUE_GROUP_SYSQID_SET(_gport,                      \
    915             _SHR_GPORT_UCAST_QUEUE_GROUP_SYSPORTID_MASK, \
    916              _qid)
    917 
    918 #define _SHR_GPORT_UCAST_QUEUE_GROUP_SYSQID_SET(_gport, _sysport_id, _qid)                       \
    919         ((_gport) = (_SHR_GPORT_TYPE_UCAST_QUEUE_GROUP << _SHR_GPORT_TYPE_SHIFT)   | \
    920          (((_sysport_id) & _SHR_GPORT_UCAST_QUEUE_GROUP_SYSPORTID_MASK)  << _SHR_GPORT_UCAST_QUEUE_GROUP_SYSPORTID_SHIFT)  | \
    921          (((_qid) & _SHR_GPORT_UCAST_QUEUE_GROUP_QID_MASK)     << _SHR_GPORT_UCAST_QUEUE_GROUP_QID_SHIFT))
    922 
    923 #define _SHR_GPORT_UCAST_QUEUE_GROUP_SYSPORTID_GET(_gport)                       \
    924         (((_gport) >> _SHR_GPORT_UCAST_QUEUE_GROUP_SYSPORTID_SHIFT) & _SHR_GPORT_UCAST_QUEUE_GROUP_SYSPORTID_MASK)
    925 
    926 #define _SHR_GPORT_UCAST_QUEUE_GROUP_QID_GET(_gport)                       \
    927         (((_gport) >> _SHR_GPORT_UCAST_QUEUE_GROUP_QID_SHIFT) & _SHR_GPORT_UCAST_QUEUE_GROUP_QID_MASK)
    928 
    929 #define _SHR_GPORT_UNICAST_QUEUE_GROUP_SET(_gport, _qid) \
    930         ((_gport) = (_SHR_GPORT_TYPE_UCAST_QUEUE_GROUP << _SHR_GPORT_TYPE_SHIFT) | \
    931          (_SHR_COSQ_GPORT_COMMON_ALL_CORES_VALUE << _SHR_COSQ_GPORT_COMMON_CORE_SHIFT) | \
    932         (((_qid) & _SHR_GPORT_UNICAST_QUEUE_GROUP_QID_MASK) << _SHR_GPORT_UNICAST_QUEUE_GROUP_QID_SHIFT))
    933 
    934 #define _SHR_GPORT_UNICAST_QUEUE_GROUP_CORE_QUEUE_SET(_gport, _core, _qid) \
    935         ((_gport) = (_SHR_GPORT_TYPE_UCAST_QUEUE_GROUP << _SHR_GPORT_TYPE_SHIFT) | \
    936          (_SHR_CORE_ID2FIELD(_core) << _SHR_COSQ_GPORT_COMMON_CORE_SHIFT) | \
    937         (((_qid) & _SHR_GPORT_UNICAST_QUEUE_GROUP_QID_MASK) << _SHR_GPORT_UNICAST_QUEUE_GROUP_QID_SHIFT))
    938 
    939 #define _SHR_GPORT_UNICAST_QUEUE_GROUP_QID_GET(_gport)                               \
    940         (((_gport) >> _SHR_GPORT_UNICAST_QUEUE_GROUP_QID_SHIFT) & _SHR_GPORT_UNICAST_QUEUE_GROUP_QID_MASK)
    941 
    942 #define _SHR_GPORT_UNICAST_QUEUE_GROUP_CORE_GET(_gport) \
    943         _SHR_CORE_FIELD2ID(((_gport) >> _SHR_COSQ_GPORT_COMMON_CORE_SHIFT) & _SHR_COSQ_GPORT_COMMON_CORE_MASK)
    944 
    945 #define _SHR_GPORT_IS_UCAST_SUBSCRIBER_QUEUE_GROUP(_gport)    \
    946         (((_gport) >> _SHR_GPORT_TYPE_SHIFT) == _SHR_GPORT_TYPE_UCAST_SUBSCRIBER_QUEUE_GROUP)
    947 
    948 #define _SHR_GPORT_UCAST_SUBSCRIBER_QUEUE_GROUP_QID_SET(_gport, _qid)          \
    949         ((_gport) = (_SHR_GPORT_TYPE_UCAST_SUBSCRIBER_QUEUE_GROUP << _SHR_GPORT_TYPE_SHIFT)   | \
    950         (((_qid) & _SHR_GPORT_UCAST_SUBSCRIBER_QUEUE_GROUP_QID_MASK) << _SHR_GPORT_UCAST_SUBSCRIBER_QUEUE_GROUP_QID_SHIFT))
    951 
    952 #define _SHR_GPORT_UCAST_SUBSCRIBER_QUEUE_GROUP_QID_GET(_gport)                       \
    953         (((_gport) >> _SHR_GPORT_UCAST_SUBSCRIBER_QUEUE_GROUP_QID_SHIFT) & \
    954                               _SHR_GPORT_UCAST_SUBSCRIBER_QUEUE_GROUP_QID_MASK)
    955 
    956 #define _SHR_GPORT_UCAST_SUBSCRIBER_QUEUE_GROUP_SYSPORTID_GET(_gport)                       \
    957         (((_gport) >> _SHR_GPORT_UCAST_SUBSCRIBER_QUEUE_GROUP_SYSPORTID_SHIFT) \
    958          & _SHR_GPORT_UCAST_SUBSCRIBER_QUEUE_GROUP_SYSPORTID_MASK)
    959 
    960 #define _SHR_GPORT_UCAST_SUBSCRIBER_QUEUE_GROUP_SYSQID_SET(_gport, _sysport_id, _qid)                       \
    961         ((_gport) = (_SHR_GPORT_TYPE_UCAST_SUBSCRIBER_QUEUE_GROUP << _SHR_GPORT_TYPE_SHIFT) | \
    962          (((_sysport_id) & _SHR_GPORT_UCAST_SUBSCRIBER_QUEUE_GROUP_SYSPORTID_MASK)  << _SHR_GPORT_UCAST_SUBSCRIBER_QUEUE_GROUP_SYSPORTID_SHIFT) | \
    963          (((_qid) & _SHR_GPORT_UCAST_SUBSCRIBER_QUEUE_GROUP_QID_MASK)     << _SHR_GPORT_UCAST_SUBSCRIBER_QUEUE_GROUP_QID_SHIFT))
    964 
    965 #define _SHR_GPORT_IS_MCAST(_gport)    \
    966         (((_gport) >> _SHR_GPORT_TYPE_SHIFT) == _SHR_GPORT_TYPE_MCAST)
    967 
    968 #define _SHR_MCAST_GPORT_IS_BITMAP_ID(_gport)                                       \
    969         (_SHR_GPORT_IS_MCAST(_gport) &&                                                 \
    970         ((((_gport) >> _SHR_MCAST_GPORT_TYPE_SHIFT) & _SHR_MCAST_GPORT_TYPE_MASK) ==     \
    971                                                 _SHR_MCAST_GPORT_TYPE_BITMAP_ID))
    972 
    973 #define _SHR_MCAST_GPORT_IS_GROUP_ID(_gport)                                       \
    974         (_SHR_GPORT_IS_MCAST(_gport) &&                                                 \
    975         ((((_gport) >> _SHR_MCAST_GPORT_TYPE_SHIFT) & _SHR_MCAST_GPORT_TYPE_MASK) ==     \
    976                                                 _SHR_MCAST_GPORT_TYPE_GROUP_ID))
    977 
    978 #define _SHR_GPORT_MCAST_SET(_gport, _mcast_id)                              \
    979         ((_gport) = (_SHR_GPORT_TYPE_MCAST      << _SHR_GPORT_TYPE_SHIFT)  | \
    980          (((_mcast_id) & _SHR_GPORT_MCAST_MASK) << _SHR_GPORT_MCAST_SHIFT))
    981 
    982 #define _SHR_MCAST_GPORT_GROUP_ID_SET(_gport, _mcast_id)                              \
    983         ((_gport) = (_SHR_GPORT_TYPE_MCAST << _SHR_GPORT_TYPE_SHIFT)  | \
    984          (_SHR_MCAST_GPORT_TYPE_GROUP_ID << _SHR_MCAST_GPORT_TYPE_SHIFT)  | \
    985          (((_mcast_id) & _SHR_MCAST_GPORT_GROUP_ID_MASK) << _SHR_GPORT_MCAST_SHIFT))
    986 
    987 #define _SHR_MCAST_GPORT_BITMAP_ID_SET(_gport, _bmp_id)                              \
    988         ((_gport) = (_SHR_GPORT_TYPE_MCAST      << _SHR_GPORT_TYPE_SHIFT)  | \
    989          (_SHR_MCAST_GPORT_TYPE_BITMAP_ID      << _SHR_MCAST_GPORT_TYPE_SHIFT)  | \
    990          (((_bmp_id) & _SHR_MCAST_GPORT_GROUP_ID_MASK) << _SHR_GPORT_MCAST_SHIFT))
    991 
    992 #define _SHR_GPORT_MCAST_GET(_gport)   \
    993         (((_gport) >> _SHR_GPORT_MCAST_SHIFT) & _SHR_GPORT_MCAST_MASK)
    994 
    995 #define _SHR_MCAST_GPORT_GROUP_ID_GET(_gport)   \
    996         (((_gport) >> _SHR_GPORT_MCAST_SHIFT) & _SHR_MCAST_GPORT_GROUP_ID_MASK)
    997 
    998 #define _SHR_MCAST_GPORT_BITMAP_ID_GET(_gport)   \
    999         (((_gport) >> _SHR_GPORT_MCAST_SHIFT) & _SHR_MCAST_GPORT_GROUP_ID_MASK)
   1000 
   1001 #define _SHR_GPORT_MCAST_DS_ID_SET(_gport, _ds_id) \
   1002         ((_gport) = (_SHR_GPORT_TYPE_MCAST      << _SHR_GPORT_TYPE_SHIFT)  | \
   1003          (((_ds_id) & _SHR_GPORT_MCAST_DS_ID_MASK) << _SHR_GPORT_MCAST_DS_ID_SHIFT))
   1004 
   1005 #define _SHR_GPORT_MCAST_DS_ID_GET(_gport)   \
   1006         (((_gport) >> _SHR_GPORT_MCAST_DS_ID_SHIFT) & _SHR_GPORT_MCAST_DS_ID_MASK)
   1007 
   1008 #define _SHR_GPORT_IS_MCAST_QUEUE_GROUP(_gport) \
   1009         (((_gport) >> _SHR_GPORT_TYPE_SHIFT) == _SHR_GPORT_TYPE_MCAST_QUEUE_GROUP)
   1010 
   1011 #define _SHR_GPORT_MCAST_QUEUE_GROUP_SET(_gport, _qid)            \
   1012         _SHR_GPORT_MCAST_QUEUE_GROUP_SYSQID_SET(_gport,           \
   1013         _SHR_GPORT_MCAST_QUEUE_GROUP_SYSPORTID_MASK,              \
   1014          _qid)
   1015 
   1016 #define _SHR_GPORT_MCAST_QUEUE_GROUP_GET(_gport)   \
   1017         _SHR_GPORT_MCAST_QUEUE_GROUP_QID_GET(_gport)
   1018 
   1019 #define _SHR_GPORT_MCAST_QUEUE_GROUP_SYSQID_SET(_gport, _sysport_id, _qid)                       \
   1020         ((_gport) = (_SHR_GPORT_TYPE_MCAST_QUEUE_GROUP << _SHR_GPORT_TYPE_SHIFT)   | \
   1021          (((_sysport_id) & _SHR_GPORT_MCAST_QUEUE_GROUP_SYSPORTID_MASK)  << _SHR_GPORT_MCAST_QUEUE_GROUP_SYSPORTID_SHIFT)  | \
   1022          (((_qid) & _SHR_GPORT_MCAST_QUEUE_GROUP_QID_MASK)     << _SHR_GPORT_MCAST_QUEUE_GROUP_QID_SHIFT))
   1023 
   1024 #define _SHR_GPORT_MCAST_QUEUE_GROUP_SYSPORTID_GET(_gport)                       \
   1025         (((_gport) >> _SHR_GPORT_MCAST_QUEUE_GROUP_SYSPORTID_SHIFT) & _SHR_GPORT_MCAST_QUEUE_GROUP_SYSPORTID_MASK)
   1026 
   1027 #define _SHR_GPORT_MCAST_QUEUE_GROUP_QID_GET(_gport)                       \
   1028          (((_gport) >> _SHR_GPORT_MCAST_QUEUE_GROUP_QID_SHIFT) & _SHR_GPORT_MCAST_QUEUE_GROUP_QID_MASK)
   1029 
   1030 /* for multicast queue gports representing queue ID + core ID */
   1031 #define _SHR_GPORT_MCAST_QUEUE_GROUP_QUEUE_SET(_gport, _qid) \
   1032         ((_gport) = (_SHR_GPORT_TYPE_MCAST_QUEUE_GROUP << _SHR_GPORT_TYPE_SHIFT) | \
   1033          (_SHR_COSQ_GPORT_COMMON_ALL_CORES_VALUE << _SHR_COSQ_GPORT_COMMON_CORE_SHIFT) | \
   1034          (((_qid) & _SHR_COSQ_GPORT_COMMON_QUEUE_MASK) << _SHR_GPORT_MCAST_QUEUE_GROUP_QID_SHIFT))
   1035 #define _SHR_GPORT_MCAST_QUEUE_GROUP_CORE_QUEUE_SET(_gport, _core, _qid) \
   1036         ((_gport) = (_SHR_GPORT_TYPE_MCAST_QUEUE_GROUP << _SHR_GPORT_TYPE_SHIFT) | \
   1037          (_SHR_CORE_ID2FIELD(_core) << _SHR_COSQ_GPORT_COMMON_CORE_SHIFT) | \
   1038          (((_qid) & _SHR_COSQ_GPORT_COMMON_QUEUE_MASK) << _SHR_GPORT_MCAST_QUEUE_GROUP_QID_SHIFT))
   1039 #define _SHR_GPORT_MCAST_QUEUE_GROUP_QUEUE_GET(_gport) \
   1040         (_SHR_GPORT_MCAST_QUEUE_GROUP_SYSPORTID_GET(_gport) == _SHR_GPORT_MCAST_QUEUE_GROUP_SYSPORTID_MASK ? \
   1041         _SHR_GPORT_MCAST_QUEUE_GROUP_QID_GET(_gport) : \
   1042         (((_gport) >> _SHR_GPORT_MCAST_QUEUE_GROUP_QID_SHIFT) & _SHR_COSQ_GPORT_COMMON_QUEUE_MASK))
   1043 #define _SHR_GPORT_MCAST_QUEUE_GROUP_CORE_GET(_gport) \
   1044         _SHR_CORE_FIELD2ID(((_gport) >> _SHR_COSQ_GPORT_COMMON_CORE_SHIFT) & _SHR_COSQ_GPORT_COMMON_CORE_MASK)
   1045 
   1046 #define _SHR_GPORT_IS_MCAST_SUBSCRIBER_QUEUE_GROUP(_gport)    \
   1047         (((_gport) >> _SHR_GPORT_TYPE_SHIFT) == _SHR_GPORT_TYPE_MCAST_SUBSCRIBER_QUEUE_GROUP)
   1048 
   1049 #define _SHR_GPORT_MCAST_SUBSCRIBER_QUEUE_GROUP_QID_SET(_gport, _qid)           	        \
   1050         ((_gport) = (_SHR_GPORT_TYPE_MCAST_SUBSCRIBER_QUEUE_GROUP << _SHR_GPORT_TYPE_SHIFT)   | \
   1051         (((_qid) & _SHR_GPORT_MCAST_SUBSCRIBER_QUEUE_GROUP_QID_MASK) << _SHR_GPORT_MCAST_SUBSCRIBER_QUEUE_GROUP_QID_SHIFT))
   1052 
   1053 #define _SHR_GPORT_MCAST_SUBSCRIBER_QUEUE_GROUP_SYSPORTID_GET(_gport)                       \
   1054         (((_gport) >> _SHR_GPORT_MCAST_SUBSCRIBER_QUEUE_GROUP_SYSPORTID_SHIFT) \
   1055          & _SHR_GPORT_MCAST_SUBSCRIBER_QUEUE_GROUP_SYSPORTID_MASK)
   1056 
   1057 #define _SHR_GPORT_MCAST_SUBSCRIBER_QUEUE_GROUP_SYSQID_SET(_gport, _sysport_id, _qid)                       \
   1058         ((_gport) = (_SHR_GPORT_TYPE_MCAST_SUBSCRIBER_QUEUE_GROUP << _SHR_GPORT_TYPE_SHIFT) | \
   1059          (((_sysport_id) & _SHR_GPORT_MCAST_SUBSCRIBER_QUEUE_GROUP_SYSPORTID_MASK)  << _SHR_GPORT_MCAST_SUBSCRIBER_QUEUE_GROUP_SYSPORTID_SHIFT) | \
   1060          (((_qid) & _SHR_GPORT_MCAST_SUBSCRIBER_QUEUE_GROUP_QID_MASK)     << _SHR_GPORT_MCAST_SUBSCRIBER_QUEUE_GROUP_QID_SHIFT))
   1061 
   1062 #define _SHR_GPORT_MCAST_SUBSCRIBER_QUEUE_GROUP_QID_GET(_gport)                       \
   1063         (((_gport) >> _SHR_GPORT_MCAST_SUBSCRIBER_QUEUE_GROUP_QID_SHIFT) & \
   1064                               _SHR_GPORT_MCAST_SUBSCRIBER_QUEUE_GROUP_QID_MASK)
   1065 
   1066 #define _SHR_GPORT_IS_SPECIAL(_gport)    \
   1067         (((_gport) >> _SHR_GPORT_TYPE_SHIFT) == _SHR_GPORT_TYPE_SPECIAL)
   1068 
   1069 #define _SHR_GPORT_SPECIAL(_value)                              \
   1070         ((_SHR_GPORT_TYPE_SPECIAL << _SHR_GPORT_TYPE_SHIFT)   | \
   1071          (((_value) & _SHR_GPORT_SPECIAL_MASK) << _SHR_GPORT_SPECIAL_SHIFT))
   1072 
   1073 #define _SHR_GPORT_SPECIAL_SET(_gport, _value)  \
   1074         ((_gport) = _SHR_GPORT_SPECIAL(_value))
   1075 
   1076 #define _SHR_GPORT_SPECIAL_GET(_gport)    \
   1077         (((_gport) >> _SHR_GPORT_SPECIAL_SHIFT) & _SHR_GPORT_SPECIAL_MASK)
   1078 
   1079 #define _SHR_GPORT_IS_MIRROR(_gport)    \
   1080         (((_gport) >> _SHR_GPORT_TYPE_SHIFT) == _SHR_GPORT_TYPE_MIRROR)
   1081 
   1082 #define _SHR_GPORT_MIRROR_SET(_gport, _value)                               \
   1083         ((_gport) = (_SHR_GPORT_TYPE_MIRROR << _SHR_GPORT_TYPE_SHIFT)   | \
   1084          (((_value) & _SHR_GPORT_MIRROR_MASK) << _SHR_GPORT_MIRROR_SHIFT))
   1085 
   1086 #define _SHR_GPORT_MIRROR_GET(_gport)    \
   1087         (((_gport) >> _SHR_GPORT_MIRROR_SHIFT) & _SHR_GPORT_MIRROR_MASK)
   1088 
   1089 #define _SHR_GPORT_MIRROR_FULL_SET(_gport, _value, _mir_subtype) \
   1090         ((_gport) = (_SHR_GPORT_TYPE_MIRROR << _SHR_GPORT_TYPE_SHIFT) | \
   1091          (((_value) & _SHR_GPORT_MIRROR_MASK) << _SHR_GPORT_MIRROR_SHIFT) | \
   1092          (((_mir_subtype) & _SHR_GPORT_MIRROR_SUBTYPE_MASK) << _SHR_GPORT_MIRROR_SUBTYPE_SHIFT))
   1093 #define _SHR_GPORT_MIRROR_SNOOP_SET(_gport, _value) _SHR_GPORT_MIRROR_FULL_SET(_gport, _value, _SHR_GPORT_MIRROR_SUBTYPE_VAL_SNOOP)
   1094 #define _SHR_GPORT_MIRROR_STAT_SAMPLE_SET(_gport, _value) _SHR_GPORT_MIRROR_FULL_SET(_gport, _value, _SHR_GPORT_MIRROR_SUBTYPE_VAL_STAT_SAMPLE)
   1095 #define _SHR_GPORT_MIRROR_SUBTYPE_GET(_gport) \
   1096         (((_gport) >> _SHR_GPORT_MIRROR_SUBTYPE_SHIFT) & _SHR_GPORT_MIRROR_SUBTYPE_MASK)
   1097 #define _SHR_GPORT_IS_MIRROR_MIRROR(_gport) \
   1098         (_SHR_GPORT_IS_MIRROR(_gport) && (_SHR_GPORT_MIRROR_SUBTYPE_GET(_gport) == _SHR_GPORT_MIRROR_SUBTYPE_VAL_MIRROR))
   1099 #define _SHR_GPORT_IS_MIRROR_SNOOP(_gport) \
   1100         (_SHR_GPORT_IS_MIRROR(_gport) && (_SHR_GPORT_MIRROR_SUBTYPE_GET(_gport) == _SHR_GPORT_MIRROR_SUBTYPE_VAL_SNOOP))
   1101 #define _SHR_GPORT_IS_MIRROR_STAT_SAMPLE(_gport) \
   1102         (_SHR_GPORT_IS_MIRROR(_gport) && (_SHR_GPORT_MIRROR_SUBTYPE_GET(_gport) == _SHR_GPORT_MIRROR_SUBTYPE_VAL_STAT_SAMPLE))
   1103 
   1104 #define _SHR_GPORT_IS_MIM_PORT(_gport)    \
   1105         (((_gport) >> _SHR_GPORT_TYPE_SHIFT) == _SHR_GPORT_TYPE_MIM_PORT)
   1106 
   1107 #define _SHR_GPORT_MIM_PORT_ID_SET(_gport, _id)                            \
   1108         ((_gport) = (_SHR_GPORT_TYPE_MIM_PORT << _SHR_GPORT_TYPE_SHIFT)  | \
   1109          (((_id) & _SHR_GPORT_MIM_PORT_MASK) << _SHR_GPORT_MIM_PORT_SHIFT))
   1110 
   1111 #define _SHR_GPORT_MIM_PORT_ID_GET(_gport)   \
   1112         (((_gport) >> _SHR_GPORT_MIM_PORT_SHIFT) & _SHR_GPORT_MIM_PORT_MASK)
   1113 
   1114 #define _SHR_GPORT_IS_VLAN_PORT(_gport) \
   1115         (((_gport) >> _SHR_GPORT_TYPE_SHIFT) == _SHR_GPORT_TYPE_VLAN_PORT)
   1116 
   1117 #define _SHR_GPORT_VLAN_PORT_ID_SET(_gport, _id)                            \
   1118         ((_gport) = (_SHR_GPORT_TYPE_VLAN_PORT << _SHR_GPORT_TYPE_SHIFT)  | \
   1119          (((_id) & _SHR_GPORT_VLAN_PORT_MASK) << _SHR_GPORT_VLAN_PORT_SHIFT))
   1120 
   1121 #define _SHR_GPORT_VLAN_PORT_ID_GET(_gport)   \
   1122         (((_gport) >> _SHR_GPORT_VLAN_PORT_SHIFT) & _SHR_GPORT_VLAN_PORT_MASK)
   1123 
   1124 #define _SHR_GPORT_IS_WLAN_PORT(_gport) \
   1125         (((_gport) >> _SHR_GPORT_TYPE_SHIFT) == _SHR_GPORT_TYPE_WLAN_PORT)
   1126 
   1127 #define _SHR_GPORT_WLAN_PORT_ID_SET(_gport, _id)                            \
   1128         ((_gport) = (_SHR_GPORT_TYPE_WLAN_PORT << _SHR_GPORT_TYPE_SHIFT)  | \
   1129          (((_id) & _SHR_GPORT_WLAN_PORT_MASK) << _SHR_GPORT_WLAN_PORT_SHIFT))
   1130 
   1131 #define _SHR_GPORT_WLAN_PORT_ID_GET(_gport)   \
   1132         (((_gport) >> _SHR_GPORT_WLAN_PORT_SHIFT) & _SHR_GPORT_WLAN_PORT_MASK)
   1133 
   1134 #define _SHR_GPORT_IS_TRILL_PORT(_gport) \
   1135         (((_gport) >> _SHR_GPORT_TYPE_SHIFT) == _SHR_GPORT_TYPE_TRILL_PORT)
   1136 
   1137 #define _SHR_GPORT_TRILL_PORT_ID_SET(_gport, _id)                            \
   1138         ((_gport) = (_SHR_GPORT_TYPE_TRILL_PORT << _SHR_GPORT_TYPE_SHIFT)  | \
   1139         (((_id) & _SHR_GPORT_TRILL_PORT_MASK) << _SHR_GPORT_TRILL_PORT_SHIFT))
   1140 
   1141 #define _SHR_GPORT_TRILL_PORT_ID_GET(_gport)   \
   1142         (((_gport) >> _SHR_GPORT_TRILL_PORT_SHIFT) & _SHR_GPORT_TRILL_PORT_MASK)
   1143 
   1144 #define _SHR_GPORT_IS_NIV_PORT(_gport) \
   1145         (((_gport) >> _SHR_GPORT_TYPE_SHIFT) == _SHR_GPORT_TYPE_NIV_PORT)
   1146 
   1147 #define _SHR_GPORT_NIV_PORT_ID_SET(_gport, _id)                            \
   1148         ((_gport) = (_SHR_GPORT_TYPE_NIV_PORT << _SHR_GPORT_TYPE_SHIFT)  | \
   1149         (((_id) & _SHR_GPORT_NIV_PORT_MASK) << _SHR_GPORT_NIV_PORT_SHIFT))
   1150 
   1151 #define _SHR_GPORT_NIV_PORT_ID_GET(_gport)   \
   1152         (((_gport) >> _SHR_GPORT_NIV_PORT_SHIFT) & _SHR_GPORT_NIV_PORT_MASK)
   1153 
   1154 #define _SHR_GPORT_IS_L2GRE_PORT(_gport) \
   1155         (((_gport) >> _SHR_GPORT_TYPE_SHIFT) == _SHR_GPORT_TYPE_L2GRE_PORT)
   1156 
   1157 #define _SHR_GPORT_L2GRE_PORT_ID_SET(_gport, _id)                            \
   1158         ((_gport) = (_SHR_GPORT_TYPE_L2GRE_PORT << _SHR_GPORT_TYPE_SHIFT)  | \
   1159         (((_id) & _SHR_GPORT_L2GRE_PORT_MASK) << _SHR_GPORT_L2GRE_PORT_SHIFT))
   1160 
   1161 #define _SHR_GPORT_L2GRE_PORT_ID_GET(_gport)   \
   1162         (((_gport) >> _SHR_GPORT_L2GRE_PORT_SHIFT) & _SHR_GPORT_L2GRE_PORT_MASK)
   1163 
   1164 #define _SHR_GPORT_IS_VXLAN_PORT(_gport) \
   1165         ((((_gport) >> _SHR_GPORT_TYPE_SHIFT) & _SHR_GPORT_TYPE_MASK) == \
   1166                                                 _SHR_GPORT_TYPE_VXLAN_PORT)
   1167 
   1168 #define _SHR_GPORT_VXLAN_PORT_ID_SET(_gport, _id)                            \
   1169         ((_gport) = (_SHR_GPORT_TYPE_VXLAN_PORT << _SHR_GPORT_TYPE_SHIFT)  | \
   1170         (((_id) & _SHR_GPORT_VXLAN_PORT_MASK) << _SHR_GPORT_VXLAN_PORT_SHIFT))
   1171 
   1172 #define _SHR_GPORT_VXLAN_PORT_ID_GET(_gport)   \
   1173         (((_gport) >> _SHR_GPORT_VXLAN_PORT_SHIFT) & _SHR_GPORT_VXLAN_PORT_MASK)
   1174 
   1175 #define _SHR_GPORT_IS_FLOW_PORT(_gport) \
   1176         ((((_gport) >> _SHR_GPORT_TYPE_SHIFT) & _SHR_GPORT_TYPE_MASK) == \
   1177                                                 _SHR_GPORT_TYPE_FLOW_PORT)
   1178 
   1179 #define _SHR_GPORT_FLOW_PORT_ID_SET(_gport, _id)                            \
   1180         ((_gport) = (_SHR_GPORT_TYPE_FLOW_PORT << _SHR_GPORT_TYPE_SHIFT)  | \
   1181         (((_id) & _SHR_GPORT_FLOW_PORT_MASK) << _SHR_GPORT_FLOW_PORT_SHIFT))
   1182 
   1183 #define _SHR_GPORT_FLOW_PORT_ID_GET(_gport)   \
   1184         (((_gport) >> _SHR_GPORT_FLOW_PORT_SHIFT) & _SHR_GPORT_FLOW_PORT_MASK)
   1185 
   1186 #define _SHR_GPORT_IS_VPLAG_PORT(_gport)    \
   1187         ((((_gport) >> _SHR_GPORT_TYPE_SHIFT) & _SHR_GPORT_TYPE_MASK) == \
   1188                                                 _SHR_GPORT_TYPE_VPLAG_PORT)
   1189 
   1190 #define _SHR_GPORT_VPLAG_PORT_ID_SET(_gport, _id)                            \
   1191         ((_gport) = (_SHR_GPORT_TYPE_VPLAG_PORT << _SHR_GPORT_TYPE_SHIFT)  | \
   1192         (((_id) & _SHR_GPORT_VPLAG_PORT_MASK) << _SHR_GPORT_VPLAG_PORT_SHIFT))
   1193 
   1194 #define _SHR_GPORT_VPLAG_PORT_ID_GET(_gport)   \
   1195         (((_gport) >> _SHR_GPORT_VPLAG_PORT_SHIFT) & _SHR_GPORT_VPLAG_PORT_MASK)
   1196 
   1197 /* Extender GPORT Type & Subtype utility macros */
   1198 #define _SHR_GPORT_IS_EXTENDER_PORT(_gport) \
   1199         ((((_gport) >> _SHR_GPORT_TYPE_SHIFT) & _SHR_GPORT_TYPE_MASK) == \
   1200                                                 _SHR_GPORT_TYPE_EXTENDER_PORT)
   1201 #define _SHR_EXTENDER_GPORT_IS_PORT(_gport)                                                 \
   1202         (_SHR_GPORT_IS_EXTENDER_PORT(_gport) &&                                             \
   1203          ((((_gport) >> _SHR_EXTENDER_GPORT_TYPE_SHIFT) & _SHR_EXTENDER_GPORT_TYPE_MASK) == \
   1204           _SHR_EXTENDER_GPORT_TYPE_PORT))
   1205 
   1206 #define _SHR_EXTENDER_GPORT_IS_FORWARD(_gport)                                              \
   1207         (_SHR_GPORT_IS_EXTENDER_PORT(_gport) &&                                             \
   1208          ((((_gport) >> _SHR_EXTENDER_GPORT_TYPE_SHIFT) & _SHR_EXTENDER_GPORT_TYPE_MASK) == \
   1209           _SHR_EXTENDER_GPORT_TYPE_FORWARD))
   1210 
   1211 #define _SHR_EXTENDER_GPORT_IS_ENCAP(_gport)                                                \
   1212         (_SHR_GPORT_IS_EXTENDER_PORT(_gport) &&                                             \
   1213          ((((_gport) >> _SHR_EXTENDER_GPORT_TYPE_SHIFT) & _SHR_EXTENDER_GPORT_TYPE_MASK) == \
   1214           _SHR_EXTENDER_GPORT_TYPE_ENCAP))
   1215 
   1216 #define _SHR_EXTENDER_GPORT_PORT_SET(_gport, _id)                                           \
   1217         ((_gport) = (_SHR_GPORT_TYPE_EXTENDER_PORT << _SHR_GPORT_TYPE_SHIFT)            |   \
   1218          (_SHR_EXTENDER_GPORT_TYPE_PORT << _SHR_EXTENDER_GPORT_TYPE_SHIFT)              |   \
   1219          (((_id) & _SHR_GPORT_EXTENDER_PORT_MASK) << _SHR_GPORT_EXTENDER_PORT_SHIFT))
   1220 
   1221 #define _SHR_EXTENDER_GPORT_FORWARD_SET(_gport, _id)                                        \
   1222         ((_gport) = (_SHR_GPORT_TYPE_EXTENDER_PORT << _SHR_GPORT_TYPE_SHIFT)            |   \
   1223          (_SHR_EXTENDER_GPORT_TYPE_FORWARD << _SHR_EXTENDER_GPORT_TYPE_SHIFT)           |   \
   1224          (((_id) & _SHR_GPORT_EXTENDER_PORT_MASK) << _SHR_GPORT_EXTENDER_PORT_SHIFT))
   1225 
   1226 #define _SHR_EXTENDER_GPORT_ENCAP_SET(_gport, _id)                                          \
   1227         ((_gport) = (_SHR_GPORT_TYPE_EXTENDER_PORT << _SHR_GPORT_TYPE_SHIFT)            |   \
   1228          (_SHR_EXTENDER_GPORT_TYPE_ENCAP << _SHR_EXTENDER_GPORT_TYPE_SHIFT)             |   \
   1229          (((_id) & _SHR_GPORT_EXTENDER_PORT_MASK) << _SHR_GPORT_EXTENDER_PORT_SHIFT))
   1230 
   1231     /*
   1232      * Note: Same as _SHR_EXTENDER_GPORT_PORT_SET, exists only for backward competability 
   1233      */
   1234 #define _SHR_GPORT_EXTENDER_PORT_ID_SET(_gport, _id)                                        \
   1235         ((_gport) = (_SHR_GPORT_TYPE_EXTENDER_PORT << _SHR_GPORT_TYPE_SHIFT)            |   \
   1236         (((_id) & _SHR_GPORT_EXTENDER_PORT_MASK) << _SHR_GPORT_EXTENDER_PORT_SHIFT))
   1237 
   1238 #define _SHR_GPORT_EXTENDER_PORT_ID_GET(_gport)                                             \
   1239         (((_gport) >> _SHR_GPORT_EXTENDER_PORT_SHIFT) & _SHR_GPORT_EXTENDER_PORT_MASK)
   1240 
   1241 #define _SHR_GPORT_IS_MAC_PORT(_gport) \
   1242         ((((_gport) >> _SHR_GPORT_TYPE_SHIFT) & _SHR_GPORT_TYPE_MASK) == \
   1243                                                 _SHR_GPORT_TYPE_MAC_PORT)
   1244 
   1245 #define _SHR_GPORT_MAC_PORT_ID_SET(_gport, _id)                            \
   1246         ((_gport) = (_SHR_GPORT_TYPE_MAC_PORT << _SHR_GPORT_TYPE_SHIFT)  | \
   1247         (((_id) & _SHR_GPORT_MAC_PORT_MASK) << _SHR_GPORT_MAC_PORT_SHIFT))
   1248 
   1249 #define _SHR_GPORT_MAC_PORT_ID_GET(_gport)   \
   1250         (((_gport) >> _SHR_GPORT_MAC_PORT_SHIFT) & _SHR_GPORT_MAC_PORT_MASK)
   1251 
   1252 #define _SHR_GPORT_IS_TUNNEL(_gport)    \
   1253         (((_gport) >> _SHR_GPORT_TYPE_SHIFT) == _SHR_GPORT_TYPE_TUNNEL)
   1254 
   1255 #define _SHR_GPORT_TUNNEL_ID_SET(_gport, _tunnel_id)                       \
   1256         ((_gport) = (_SHR_GPORT_TYPE_TUNNEL   << _SHR_GPORT_TYPE_SHIFT)  | \
   1257          (((_tunnel_id) & _SHR_GPORT_TUNNEL_MASK) << _SHR_GPORT_TUNNEL_SHIFT))
   1258 
   1259 #define _SHR_GPORT_TUNNEL_ID_GET(_gport)   \
   1260         (((_gport) >> _SHR_GPORT_TUNNEL_SHIFT) & _SHR_GPORT_TUNNEL_MASK)
   1261 
   1262 #define _SHR_GPORT_IS_CHILD(_gport)   \
   1263         (((_gport) >> _SHR_GPORT_TYPE_SHIFT) == _SHR_GPORT_TYPE_CHILD)
   1264 
   1265 #define _SHR_GPORT_CHILD_SET(_child_gport,_child_modid, _child_port) \
   1266         ((_child_gport) = (_SHR_GPORT_TYPE_CHILD << _SHR_GPORT_TYPE_SHIFT)  |	\
   1267         (((_child_modid) & _SHR_GPORT_CHILD_MODID_MASK) << _SHR_GPORT_CHILD_MODID_SHIFT) | \
   1268         (((_child_port) & _SHR_GPORT_CHILD_PORT_MASK) << _SHR_GPORT_CHILD_PORT_SHIFT))
   1269 
   1270 #define _SHR_GPORT_CHILD_MODID_GET(_gport)  \
   1271         (((_gport) >> _SHR_GPORT_CHILD_MODID_SHIFT) & _SHR_GPORT_CHILD_MODID_MASK)
   1272 
   1273 #define _SHR_GPORT_CHILD_PORT_GET(_gport)  \
   1274         (((_gport) >> _SHR_GPORT_CHILD_PORT_SHIFT) & _SHR_GPORT_CHILD_PORT_MASK)
   1275 
   1276 #define _SHR_GPORT_IS_EGRESS_GROUP(_gport)  \
   1277         (((_gport) >> _SHR_GPORT_TYPE_SHIFT) == _SHR_GPORT_TYPE_EGRESS_GROUP)
   1278 
   1279 #define _SHR_GPORT_EGRESS_GROUP_SET(_egress_group_gport, _child_modid, _egress_child) \
   1280         ((_egress_group_gport) = (_SHR_GPORT_TYPE_EGRESS_GROUP << _SHR_GPORT_TYPE_SHIFT)  |	\
   1281         (((_child_modid) & _SHR_GPORT_EGRESS_CHILD_MODID_MASK) << _SHR_GPORT_EGRESS_CHILD_MODID_SHIFT) | \
   1282         (((_egress_child) & _SHR_GPORT_EGRESS_CHILD_PORT_MASK) << (_SHR_GPORT_EGRESS_GROUP_SHIFT)))
   1283 
   1284 #define _SHR_GPORT_EGRESS_GROUP_MODID_GET(_egress_group_gport)  \
   1285         (((_egress_group_gport) >> _SHR_GPORT_EGRESS_GROUP_MODID_SHIFT) & _SHR_GPORT_EGRESS_GROUP_MODID_MASK)
   1286 
   1287 #define _SHR_GPORT_EGRESS_GROUP_GET(_egress_group_gport)  \
   1288         (((_egress_group_gport) >> _SHR_GPORT_EGRESS_GROUP_SHIFT) & _SHR_GPORT_EGRESS_GROUP_MASK)
   1289 
   1290 #define _SHR_GPORT_IS_EGRESS_CHILD(_gport)  \
   1291         (((_gport) >> _SHR_GPORT_TYPE_SHIFT) == _SHR_GPORT_TYPE_EGRESS_CHILD)
   1292 
   1293 #define _SHR_GPORT_EGRESS_CHILD_SET(_egress_child_gport,_child_modid, _child_port) \
   1294         ((_egress_child_gport) = (_SHR_GPORT_TYPE_EGRESS_CHILD << _SHR_GPORT_TYPE_SHIFT)  |	\
   1295         (((_child_modid) & _SHR_GPORT_EGRESS_CHILD_MODID_MASK) << _SHR_GPORT_EGRESS_CHILD_MODID_SHIFT) | \
   1296         (((_child_port) & _SHR_GPORT_EGRESS_CHILD_PORT_MASK) << _SHR_GPORT_EGRESS_CHILD_PORT_SHIFT))
   1297 
   1298 #define _SHR_GPORT_EGRESS_CHILD_MODID_GET(_egress_child_gport)  \
   1299         (((_egress_child_gport) >> _SHR_GPORT_EGRESS_CHILD_MODID_SHIFT) & _SHR_GPORT_EGRESS_CHILD_MODID_MASK)
   1300 
   1301 #define _SHR_GPORT_EGRESS_CHILD_PORT_GET(_egress_child_gport)  \
   1302         (((_egress_child_gport) >> _SHR_GPORT_EGRESS_CHILD_PORT_SHIFT) & _SHR_GPORT_EGRESS_CHILD_PORT_MASK)
   1303 
   1304 #define _SHR_GPORT_IS_EGRESS_MODPORT(_gport)  \
   1305         (((_gport) >> _SHR_GPORT_TYPE_SHIFT) == _SHR_GPORT_TYPE_EGRESS_MODPORT)
   1306 
   1307 #define _SHR_GPORT_EGRESS_MODPORT_SET(_gport, _module, _port)  \
   1308         ((_gport) = (_SHR_GPORT_TYPE_EGRESS_MODPORT   << _SHR_GPORT_TYPE_SHIFT)   | \
   1309          (((_module) & _SHR_GPORT_EGRESS_MODPORT_MODID_MASK)  << _SHR_GPORT_EGRESS_MODPORT_MODID_SHIFT)  | \
   1310          (((_port) & _SHR_GPORT_EGRESS_MODPORT_PORT_MASK)     << _SHR_GPORT_EGRESS_MODPORT_PORT_SHIFT))
   1311 
   1312 #define _SHR_GPORT_EGRESS_MODPORT_MODID_GET(_gport)  \
   1313         (((_gport) >> _SHR_GPORT_EGRESS_MODPORT_MODID_SHIFT) & _SHR_GPORT_EGRESS_MODPORT_MODID_MASK)
   1314 
   1315 #define _SHR_GPORT_EGRESS_MODPORT_PORT_GET(_gport)  \
   1316         (((_gport) >> _SHR_GPORT_EGRESS_MODPORT_PORT_SHIFT) & _SHR_GPORT_EGRESS_MODPORT_PORT_MASK)
   1317 
   1318 #define _SHR_GPORT_IS_CONGESTION(_gport)    \
   1319         (((_gport) >> _SHR_GPORT_TYPE_SHIFT) == _SHR_GPORT_TYPE_CONGESTION)
   1320 
   1321 #define _SHR_GPORT_CONGESTION_SET(_gport, _port)                                       \
   1322         ((_gport) = (_SHR_GPORT_TYPE_CONGESTION << _SHR_GPORT_TYPE_SHIFT)   |          \
   1323          (((_port) & _SHR_GPORT_CONGESTION_MASK) << _SHR_GPORT_CONGESTION_SHIFT))
   1324 
   1325 #define _SHR_GPORT_CONGESTION_GET(_gport)                                              \
   1326         (((_gport) >> _SHR_GPORT_CONGESTION_SHIFT) & _SHR_GPORT_CONGESTION_MASK)
   1327 
   1328 #define _SHR_GPORT_CONGESTION_OOB_SET(_gport, _port)                                       \
   1329         ((_gport) = (_SHR_GPORT_TYPE_CONGESTION << _SHR_GPORT_TYPE_SHIFT)    |    \
   1330          (_SHR_GPORT_CONGESTION_TYPE_OOB << _SHR_GPORT_CONGESTION_TYPE_SHIFT) |    \
   1331          (((_port) & _SHR_GPORT_CONGESTION_MASK) << _SHR_GPORT_CONGESTION_SHIFT))
   1332 
   1333 #define _SHR_GPORT_CONGESTION_COE_SET(_gport, _port)                                       \
   1334         ((_gport) = (_SHR_GPORT_TYPE_CONGESTION << _SHR_GPORT_TYPE_SHIFT)    |    \
   1335          (_SHR_GPORT_CONGESTION_TYPE_COE << _SHR_GPORT_CONGESTION_TYPE_SHIFT) |    \
   1336          (((_port) & _SHR_GPORT_CONGESTION_MASK) << _SHR_GPORT_CONGESTION_SHIFT))
   1337 
   1338 #define _SHR_GPORT_IS_CONGESTION_COE(_gport)    \
   1339         (_SHR_GPORT_IS_CONGESTION(_gport) &&    \
   1340         ((((_gport) >> _SHR_GPORT_CONGESTION_TYPE_SHIFT) & _SHR_GPORT_CONGESTION_TYPE_MASK) == \
   1341                                                                 _SHR_GPORT_CONGESTION_TYPE_COE))
   1342 
   1343 #define _SHR_GPORT_IS_CONGESTION_OOB(_gport)    \
   1344         (_SHR_GPORT_IS_CONGESTION(_gport) &&    \
   1345         ((((_gport) >> _SHR_GPORT_CONGESTION_TYPE_SHIFT) & _SHR_GPORT_CONGESTION_TYPE_MASK) == \
   1346                                                                 _SHR_GPORT_CONGESTION_TYPE_OOB))
   1347 
   1348 #define _SHR_GPORT_IS_SYSTEM_PORT(_gport) \
   1349         (((_gport) >> _SHR_GPORT_TYPE_SHIFT) == _SHR_GPORT_TYPE_SYSTEM_PORT)
   1350 #define _SHR_GPORT_SYSTEM_PORT_ID_GET(_gport)   \
   1351         (((_gport) >> _SHR_GPORT_SYSTEM_PORT_SHIFT) & _SHR_GPORT_SYSTEM_PORT_MASK)
   1352 #define _SHR_GPORT_SYSTEM_PORT_ID_SET(_gport, _id)                            \
   1353         ((_gport) = (_SHR_GPORT_TYPE_SYSTEM_PORT << _SHR_GPORT_TYPE_SHIFT)  | \
   1354          (((_id) & _SHR_GPORT_SYSTEM_PORT_MASK) << _SHR_GPORT_SYSTEM_PORT_SHIFT))
   1355 
   1356 #define _SHR_COSQ_GPORT_ISQ_ROOT_CORE_SET(_gport, _core_id) \
   1357         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  | \
   1358          (((_SHR_GPORT_ISQ_ROOT) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT) | \
   1359          (((_SHR_CORE_ID2FIELD(_core_id)) & _SHR_GPORT_SCHEDULER_CORE_MASK) << _SHR_GPORT_SCHEDULER_CORE_SHIFT))
   1360 
   1361 #define _SHR_COSQ_GPORT_ISQ_ROOT_SET(_gport) \
   1362         _SHR_COSQ_GPORT_ISQ_ROOT_CORE_SET(_gport, _SHR_CORE_ALL)
   1363 
   1364 #define _SHR_COSQ_GPORT_IS_ISQ_ROOT(_gport)                                            \
   1365         (_SHR_GPORT_IS_SCHEDULER(_gport) &&                                            \
   1366         ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==     \
   1367                                                 _SHR_GPORT_ISQ_ROOT))
   1368 #define _SHR_COSQ_GPORT_IS_FMQ_ROOT(_gport)                                            \
   1369         (_SHR_GPORT_IS_SCHEDULER(_gport) &&                                            \
   1370         ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==     \
   1371                                                 _SHR_GPORT_FMQ_ROOT))
   1372 
   1373 #define _SHR_COSQ_GPORT_FMQ_ROOT_CORE_SET(_gport, _core_id) \
   1374         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  | \
   1375          (((_SHR_GPORT_FMQ_ROOT) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT) | \
   1376          (((_SHR_CORE_ID2FIELD(_core_id)) & _SHR_GPORT_SCHEDULER_CORE_MASK) << _SHR_GPORT_SCHEDULER_CORE_SHIFT))
   1377 
   1378 #define _SHR_COSQ_GPORT_FMQ_ROOT_SET(_gport) \
   1379         _SHR_COSQ_GPORT_FMQ_ROOT_CORE_SET(_gport, _SHR_CORE_ALL)
   1380 
   1381 #define _SHR_COSQ_GPORT_IS_FMQ_GUARANTEED(_gport)                                      \
   1382         (_SHR_GPORT_IS_SCHEDULER(_gport) &&                                            \
   1383         ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==     \
   1384                                                 _SHR_GPORT_FMQ_GUARANTEED))
   1385 
   1386 #define _SHR_COSQ_GPORT_FMQ_GUARANTEED_CORE_SET(_gport, _core_id) \
   1387         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  | \
   1388          (((_SHR_GPORT_FMQ_GUARANTEED) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT) | \
   1389          (((_SHR_CORE_ID2FIELD(_core_id)) & _SHR_GPORT_SCHEDULER_CORE_MASK) << _SHR_GPORT_SCHEDULER_CORE_SHIFT))
   1390 
   1391 #define _SHR_COSQ_GPORT_FMQ_GUARANTEED_SET(_gport) \
   1392         _SHR_COSQ_GPORT_FMQ_GUARANTEED_CORE_SET(_gport, _SHR_CORE_ALL)
   1393 
   1394 #define _SHR_COSQ_GPORT_IS_FMQ_BESTEFFORT_AGR(_gport)                                  \
   1395         (_SHR_GPORT_IS_SCHEDULER(_gport) &&                                            \
   1396         ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==     \
   1397                                                 _SHR_GPORT_FMQ_BESTEFFORT_AGR))
   1398 
   1399 #define _SHR_COSQ_GPORT_FMQ_BESTEFFORT_AGR_CORE_SET(_gport, _core_id) \
   1400         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  | \
   1401          (((_SHR_GPORT_FMQ_BESTEFFORT_AGR) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT) | \
   1402          (((_SHR_CORE_ID2FIELD(_core_id)) & _SHR_GPORT_SCHEDULER_CORE_MASK) << _SHR_GPORT_SCHEDULER_CORE_SHIFT))
   1403 
   1404 #define _SHR_COSQ_GPORT_FMQ_BESTEFFORT_AGR_SET(_gport) \
   1405         _SHR_COSQ_GPORT_FMQ_BESTEFFORT_AGR_CORE_SET(_gport, _SHR_CORE_ALL)
   1406 
   1407 #define _SHR_COSQ_GPORT_IS_FMQ_BESTEFFORT0(_gport)                                     \
   1408         (_SHR_GPORT_IS_SCHEDULER(_gport) &&                                            \
   1409         ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==     \
   1410                                                 _SHR_GPORT_FMQ_BESTEFFORT0))
   1411 
   1412 #define _SHR_COSQ_GPORT_FMQ_BESTEFFORT0_CORE_SET(_gport, _core_id) \
   1413         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  | \
   1414          (((_SHR_GPORT_FMQ_BESTEFFORT0) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT) | \
   1415          (((_SHR_CORE_ID2FIELD(_core_id)) & _SHR_GPORT_SCHEDULER_CORE_MASK) << _SHR_GPORT_SCHEDULER_CORE_SHIFT))
   1416 
   1417 #define _SHR_COSQ_GPORT_FMQ_BESTEFFORT0_SET(_gport) \
   1418         _SHR_COSQ_GPORT_FMQ_BESTEFFORT0_CORE_SET(_gport, _SHR_CORE_ALL)
   1419 
   1420 #define _SHR_COSQ_GPORT_IS_FMQ_BESTEFFORT1(_gport)                                     \
   1421         (_SHR_GPORT_IS_SCHEDULER(_gport) &&                                            \
   1422         ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==     \
   1423                                                 _SHR_GPORT_FMQ_BESTEFFORT1))
   1424 
   1425 #define _SHR_COSQ_GPORT_FMQ_BESTEFFORT1_CORE_SET(_gport, _core_id) \
   1426         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  | \
   1427          (((_SHR_GPORT_FMQ_BESTEFFORT1) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT) | \
   1428          (((_SHR_CORE_ID2FIELD(_core_id)) & _SHR_GPORT_SCHEDULER_CORE_MASK) << _SHR_GPORT_SCHEDULER_CORE_SHIFT))
   1429 
   1430 #define _SHR_COSQ_GPORT_FMQ_BESTEFFORT1_SET(_gport) \
   1431         _SHR_COSQ_GPORT_FMQ_BESTEFFORT1_CORE_SET(_gport, _SHR_CORE_ALL)
   1432 
   1433 #define _SHR_COSQ_GPORT_IS_FMQ_BESTEFFORT2(_gport)                                     \
   1434         (_SHR_GPORT_IS_SCHEDULER(_gport) &&                                            \
   1435         ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==     \
   1436                                                 _SHR_GPORT_FMQ_BESTEFFORT2))
   1437 
   1438 #define _SHR_COSQ_GPORT_FMQ_BESTEFFORT2_CORE_SET(_gport, _core_id) \
   1439         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  | \
   1440          (((_SHR_GPORT_FMQ_BESTEFFORT2) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT) | \
   1441          (((_SHR_CORE_ID2FIELD(_core_id)) & _SHR_GPORT_SCHEDULER_CORE_MASK) << _SHR_GPORT_SCHEDULER_CORE_SHIFT))
   1442 
   1443 #define _SHR_COSQ_GPORT_FMQ_BESTEFFORT2_SET(_gport) \
   1444         _SHR_COSQ_GPORT_FMQ_BESTEFFORT2_CORE_SET(_gport, _SHR_CORE_ALL)
   1445 
   1446 #define _SHR_GPORT_IS_FABRIC_MESH(_gport)                                                         \
   1447         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1448             ( ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1449                                 (_SHR_GPORT_FABRIC_MESH_LOCAL & _SHR_GPORT_SCHEDULER_MASK))  ||   \
   1450               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1451                                 (_SHR_GPORT_FABRIC_MESH_DEV1 & _SHR_GPORT_SCHEDULER_MASK))   ||   \
   1452               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1453                                 (_SHR_GPORT_FABRIC_MESH_DEV2 & _SHR_GPORT_SCHEDULER_MASK))   ||   \
   1454               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1455                                 (_SHR_GPORT_FABRIC_MESH_DEV3 & _SHR_GPORT_SCHEDULER_MASK))   ||   \
   1456               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1457                                 (_SHR_GPORT_FABRIC_MESH_DEV4 & _SHR_GPORT_SCHEDULER_MASK))   ||   \
   1458               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1459                                 (_SHR_GPORT_FABRIC_MESH_DEV5 & _SHR_GPORT_SCHEDULER_MASK))   ||   \
   1460               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1461                                 (_SHR_GPORT_FABRIC_MESH_DEV6 & _SHR_GPORT_SCHEDULER_MASK))   ||   \
   1462               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1463                                 (_SHR_GPORT_FABRIC_MESH_DEV7 & _SHR_GPORT_SCHEDULER_MASK))   ||   \
   1464               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1465                                 (_SHR_GPORT_FABRIC_MESH_COMMON_LOCAL0 & _SHR_GPORT_SCHEDULER_MASK))         ||   \
   1466               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1467                                 (_SHR_GPORT_FABRIC_MESH_COMMON_LOCAL1 & _SHR_GPORT_SCHEDULER_MASK))         ||   \
   1468               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1469                                 (_SHR_GPORT_FABRIC_MESH_COMMON_DEV1 & _SHR_GPORT_SCHEDULER_MASK))           ||   \
   1470               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1471                                 (_SHR_GPORT_FABRIC_MESH_COMMON_DEV2 & _SHR_GPORT_SCHEDULER_MASK))           ||   \
   1472               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1473                                 (_SHR_GPORT_FABRIC_MESH_COMMON_DEV3 & _SHR_GPORT_SCHEDULER_MASK))           ||   \
   1474               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1475                                 (_SHR_GPORT_FABRIC_MESH_COMMON_MC & _SHR_GPORT_SCHEDULER_MASK))             ||   \
   1476               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1477                                 (_SHR_GPORT_FABRIC_MESH_LOCAL0_OCB_HIGH & _SHR_GPORT_SCHEDULER_MASK))       ||   \
   1478               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1479                                 (_SHR_GPORT_FABRIC_MESH_LOCAL0_OCB_LOW & _SHR_GPORT_SCHEDULER_MASK))        ||   \
   1480               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1481                                 (_SHR_GPORT_FABRIC_MESH_LOCAL0_MIX_HIGH & _SHR_GPORT_SCHEDULER_MASK))       ||   \
   1482               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1483                                 (_SHR_GPORT_FABRIC_MESH_LOCAL0_MIX_LOW & _SHR_GPORT_SCHEDULER_MASK))        ||   \
   1484               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1485                                 (_SHR_GPORT_FABRIC_MESH_LOCAL1_OCB_HIGH & _SHR_GPORT_SCHEDULER_MASK))       ||   \
   1486               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1487                                 (_SHR_GPORT_FABRIC_MESH_LOCAL1_OCB_LOW & _SHR_GPORT_SCHEDULER_MASK))        ||   \
   1488               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1489                                 (_SHR_GPORT_FABRIC_MESH_LOCAL1_MIX_HIGH & _SHR_GPORT_SCHEDULER_MASK))       ||   \
   1490               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1491                                 (_SHR_GPORT_FABRIC_MESH_LOCAL1_MIX_LOW & _SHR_GPORT_SCHEDULER_MASK))        ||   \
   1492               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1493                                 (_SHR_GPORT_FABRIC_MESH_DEV1_OCB_HIGH & _SHR_GPORT_SCHEDULER_MASK))         ||   \
   1494               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1495                                 (_SHR_GPORT_FABRIC_MESH_DEV1_OCB_LOW & _SHR_GPORT_SCHEDULER_MASK))          ||   \
   1496               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1497                                 (_SHR_GPORT_FABRIC_MESH_DEV1_MIX_HIGH & _SHR_GPORT_SCHEDULER_MASK))         ||   \
   1498               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1499                                 (_SHR_GPORT_FABRIC_MESH_DEV1_MIX_LOW & _SHR_GPORT_SCHEDULER_MASK))          ||   \
   1500               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1501                                 (_SHR_GPORT_FABRIC_MESH_DEV2_OCB_HIGH & _SHR_GPORT_SCHEDULER_MASK))         ||   \
   1502               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1503                                 (_SHR_GPORT_FABRIC_MESH_DEV2_OCB_LOW & _SHR_GPORT_SCHEDULER_MASK))          ||   \
   1504               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1505                                 (_SHR_GPORT_FABRIC_MESH_DEV2_MIX_HIGH & _SHR_GPORT_SCHEDULER_MASK))         ||   \
   1506               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1507                                 (_SHR_GPORT_FABRIC_MESH_DEV2_MIX_LOW & _SHR_GPORT_SCHEDULER_MASK))          ||   \
   1508               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1509                                 (_SHR_GPORT_FABRIC_MESH_DEV3_OCB_HIGH & _SHR_GPORT_SCHEDULER_MASK))         ||   \
   1510               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1511                                 (_SHR_GPORT_FABRIC_MESH_DEV3_OCB_LOW & _SHR_GPORT_SCHEDULER_MASK))          ||   \
   1512               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1513                                 (_SHR_GPORT_FABRIC_MESH_DEV3_MIX_HIGH & _SHR_GPORT_SCHEDULER_MASK))         ||   \
   1514               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1515                                 (_SHR_GPORT_FABRIC_MESH_DEV3_MIX_LOW & _SHR_GPORT_SCHEDULER_MASK))          ||   \
   1516               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1517                                 (_SHR_GPORT_FABRIC_MESH_MC_OCB_HIGH & _SHR_GPORT_SCHEDULER_MASK))         ||   \
   1518               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1519                                 (_SHR_GPORT_FABRIC_MESH_MC_OCB_LOW & _SHR_GPORT_SCHEDULER_MASK))          ||   \
   1520               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1521                                 (_SHR_GPORT_FABRIC_MESH_MC_MIX_HIGH & _SHR_GPORT_SCHEDULER_MASK))         ||   \
   1522               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1523                                 (_SHR_GPORT_FABRIC_MESH_MC_MIX_LOW & _SHR_GPORT_SCHEDULER_MASK))          ||   \
   1524               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1525                                 (_SHR_GPORT_FABRIC_MESH_LOCAL0 & _SHR_GPORT_SCHEDULER_MASK))              ||   \
   1526               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1527                                 (_SHR_GPORT_FABRIC_MESH_MC_OCB_HIGH & _SHR_GPORT_SCHEDULER_MASK))         ||   \
   1528               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1529                                 (_SHR_GPORT_FABRIC_MESH_MC_OCB_LOW & _SHR_GPORT_SCHEDULER_MASK))          ||   \
   1530               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1531                                 (_SHR_GPORT_FABRIC_MESH_MC_MIX_HIGH & _SHR_GPORT_SCHEDULER_MASK))         ||   \
   1532               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1533                                 (_SHR_GPORT_FABRIC_MESH_MC_MIX_LOW & _SHR_GPORT_SCHEDULER_MASK))          ||   \
   1534               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1535                                 (_SHR_GPORT_FABRIC_MESH_LOCAL1 & _SHR_GPORT_SCHEDULER_MASK))              ||   \
   1536               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1537                                 (_SHR_GPORT_FABRIC_MESH_MC & _SHR_GPORT_SCHEDULER_MASK))                  ||   \
   1538               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1539                                 (_SHR_GPORT_FABRIC_MESH_SCOPE & _SHR_GPORT_SCHEDULER_MASK)) ))
   1540 
   1541 #define _SHR_GPORT_IS_FABRIC_MESH_LOCAL(_gport)                                                   \
   1542         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1543               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1544                                 (_SHR_GPORT_FABRIC_MESH_LOCAL & _SHR_GPORT_SCHEDULER_MASK)))
   1545 
   1546 #define _SHR_GPORT_IS_FABRIC_MESH_DEV1(_gport)                                                    \
   1547         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1548               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1549                                 (_SHR_GPORT_FABRIC_MESH_DEV1 & _SHR_GPORT_SCHEDULER_MASK)))
   1550 
   1551 #define _SHR_GPORT_IS_FABRIC_MESH_DEV2(_gport)                                                    \
   1552         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1553               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1554                                 (_SHR_GPORT_FABRIC_MESH_DEV2 & _SHR_GPORT_SCHEDULER_MASK)))
   1555 
   1556 #define _SHR_GPORT_IS_FABRIC_MESH_DEV3(_gport)                                                    \
   1557         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1558               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1559                                 (_SHR_GPORT_FABRIC_MESH_DEV3 & _SHR_GPORT_SCHEDULER_MASK)))
   1560 
   1561 #define _SHR_GPORT_IS_FABRIC_MESH_DEV4(_gport)                                                    \
   1562         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1563               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1564                                 (_SHR_GPORT_FABRIC_MESH_DEV4 & _SHR_GPORT_SCHEDULER_MASK)))
   1565 
   1566 #define _SHR_GPORT_IS_FABRIC_MESH_DEV5(_gport)                                                    \
   1567         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1568               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1569                                 (_SHR_GPORT_FABRIC_MESH_DEV5 & _SHR_GPORT_SCHEDULER_MASK)))
   1570 
   1571 #define _SHR_GPORT_IS_FABRIC_MESH_DEV6(_gport)                                                    \
   1572         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1573               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1574                                 (_SHR_GPORT_FABRIC_MESH_DEV6 & _SHR_GPORT_SCHEDULER_MASK)))
   1575 
   1576 #define _SHR_GPORT_IS_FABRIC_MESH_DEV7(_gport)                                                    \
   1577         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1578               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1579                                 (_SHR_GPORT_FABRIC_MESH_DEV7 & _SHR_GPORT_SCHEDULER_MASK)))
   1580 
   1581 #define _SHR_COSQ_GPORT_FABRIC_MESH_LOCAL_SET(_gport)                             \
   1582         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   1583          (((_SHR_GPORT_FABRIC_MESH_LOCAL) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   1584 
   1585 #define _SHR_COSQ_GPORT_FABRIC_MESH_DEV_SET(_gport, _dev_id)                      \
   1586     switch (_dev_id) {                                                            \
   1587         case 1:                                                                   \
   1588             ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |   \
   1589              (((_SHR_GPORT_FABRIC_MESH_DEV1) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT));                                                                            \
   1590             break;                                                                \
   1591         case 2:                                                                   \
   1592             ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  | \
   1593              (((_SHR_GPORT_FABRIC_MESH_DEV2) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT));                                                                            \
   1594             break;                                                                \
   1595         case 3:                                                                   \
   1596             ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  | \
   1597              (((_SHR_GPORT_FABRIC_MESH_DEV3) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT));                                                                            \
   1598             break;                                                                \
   1599         case 4:                                                                   \
   1600             ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |   \
   1601              (((_SHR_GPORT_FABRIC_MESH_DEV4) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT));                                                                            \
   1602             break;                                                                \
   1603         case 5:                                                                   \
   1604             ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |   \
   1605              (((_SHR_GPORT_FABRIC_MESH_DEV5) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT));                                                                            \
   1606             break;                                                                \
   1607         case 6:                                                                   \
   1608             ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |   \
   1609              (((_SHR_GPORT_FABRIC_MESH_DEV6) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT));                                                                            \
   1610             break;                                                                \
   1611         case 7:                                                                   \
   1612             ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |   \
   1613              (((_SHR_GPORT_FABRIC_MESH_DEV7) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT));                                                                            \
   1614             break;                                                                \
   1615         default:                                                                  \
   1616             ((_gport) = _SHR_GPORT_INVALID);                                      \
   1617             break;                                                                \
   1618     }
   1619 
   1620 #define _SHR_GPORT_IS_FABRIC_MESH_COMMON_LOCAL0(_gport)                                   \
   1621         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1622               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1623                                 (_SHR_GPORT_FABRIC_MESH_COMMON_LOCAL0 & _SHR_GPORT_SCHEDULER_MASK)))
   1624 
   1625 #define _SHR_GPORT_IS_FABRIC_MESH_COMMON_LOCAL1(_gport)                                   \
   1626         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1627               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1628                                 (_SHR_GPORT_FABRIC_MESH_COMMON_LOCAL1 & _SHR_GPORT_SCHEDULER_MASK)))
   1629 
   1630 #define _SHR_GPORT_IS_FABRIC_MESH_COMMON_DEV1(_gport)                                                     \
   1631         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1632               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1633                                 (_SHR_GPORT_FABRIC_MESH_COMMON_DEV1 & _SHR_GPORT_SCHEDULER_MASK)))
   1634 
   1635 #define _SHR_GPORT_IS_FABRIC_MESH_COMMON_DEV2(_gport)                                                     \
   1636         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1637               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1638                                 (_SHR_GPORT_FABRIC_MESH_COMMON_DEV2 & _SHR_GPORT_SCHEDULER_MASK)))
   1639 
   1640 #define _SHR_GPORT_IS_FABRIC_MESH_COMMON_DEV3(_gport)                                                     \
   1641         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1642               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1643                                 (_SHR_GPORT_FABRIC_MESH_COMMON_DEV3 & _SHR_GPORT_SCHEDULER_MASK)))
   1644 
   1645 #define _SHR_GPORT_IS_FABRIC_MESH_COMMON_MC(_gport)                                                     \
   1646         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1647               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1648                                 (_SHR_GPORT_FABRIC_MESH_COMMON_MC & _SHR_GPORT_SCHEDULER_MASK)))
   1649 
   1650 #define _SHR_GPORT_IS_FABRIC_CLOS_COMMON_LOCAL0(_gport)                                   \
   1651         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1652               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1653                                 (_SHR_GPORT_FABRIC_CLOS_COMMON_LOCAL0 & _SHR_GPORT_SCHEDULER_MASK)))
   1654 
   1655 #define _SHR_GPORT_IS_FABRIC_CLOS_COMMON_LOCAL1(_gport)                                   \
   1656         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1657               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1658                                 (_SHR_GPORT_FABRIC_CLOS_COMMON_LOCAL1 & _SHR_GPORT_SCHEDULER_MASK)))
   1659 
   1660 #define _SHR_GPORT_IS_FABRIC_CLOS_COMMON_FABRIC(_gport)                                   \
   1661         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1662               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1663                                 (_SHR_GPORT_FABRIC_CLOS_COMMON_FABRIC & _SHR_GPORT_SCHEDULER_MASK)))
   1664 
   1665 #define _SHR_GPORT_IS_FABRIC_CLOS_COMMON_UNICAST_FABRIC(_gport)                                   \
   1666         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1667               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1668                                 (_SHR_GPORT_FABRIC_CLOS_COMMON_UNICAST_FABRIC & _SHR_GPORT_SCHEDULER_MASK)))
   1669 
   1670 #define _SHR_GPORT_IS_FABRIC_CLOS_COMMON_MULTICAST_FABRIC(_gport)                                   \
   1671         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1672               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1673                                 (_SHR_GPORT_FABRIC_CLOS_COMMON_MULTICAST_FABRIC & _SHR_GPORT_SCHEDULER_MASK)))
   1674 
   1675 #define _SHR_GPORT_IS_FABRIC_MESH_LOCAL0_OCB_HIGH(_gport)                                   \
   1676         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1677               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1678                                 (_SHR_GPORT_FABRIC_MESH_LOCAL0_OCB_HIGH & _SHR_GPORT_SCHEDULER_MASK)))
   1679 
   1680 #define _SHR_GPORT_IS_FABRIC_MESH_LOCAL0_OCB_LOW(_gport)                                   \
   1681         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1682               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1683                                 (_SHR_GPORT_FABRIC_MESH_LOCAL0_OCB_LOW & _SHR_GPORT_SCHEDULER_MASK)))
   1684 
   1685 #define _SHR_GPORT_IS_FABRIC_MESH_LOCAL0_MIX_HIGH(_gport)                                   \
   1686         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1687               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1688                                 (_SHR_GPORT_FABRIC_MESH_LOCAL0_MIX_HIGH & _SHR_GPORT_SCHEDULER_MASK)))
   1689 
   1690 #define _SHR_GPORT_IS_FABRIC_MESH_LOCAL0_MIX_LOW(_gport)                                   \
   1691         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1692               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1693                                 (_SHR_GPORT_FABRIC_MESH_LOCAL0_MIX_LOW & _SHR_GPORT_SCHEDULER_MASK)))
   1694 
   1695 #define _SHR_GPORT_IS_FABRIC_MESH_LOCAL1_OCB_HIGH(_gport)                                   \
   1696         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1697               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1698                                 (_SHR_GPORT_FABRIC_MESH_LOCAL1_OCB_HIGH & _SHR_GPORT_SCHEDULER_MASK)))
   1699 
   1700 #define _SHR_GPORT_IS_FABRIC_MESH_LOCAL1_OCB_LOW(_gport)                                   \
   1701         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1702               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1703                                 (_SHR_GPORT_FABRIC_MESH_LOCAL1_OCB_LOW & _SHR_GPORT_SCHEDULER_MASK)))
   1704 
   1705 #define _SHR_GPORT_IS_FABRIC_MESH_LOCAL1_MIX_HIGH(_gport)                                   \
   1706         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1707               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1708                                 (_SHR_GPORT_FABRIC_MESH_LOCAL1_MIX_HIGH & _SHR_GPORT_SCHEDULER_MASK)))
   1709 
   1710 #define _SHR_GPORT_IS_FABRIC_MESH_LOCAL1_MIX_LOW(_gport)                                   \
   1711         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1712               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1713                                 (_SHR_GPORT_FABRIC_MESH_LOCAL1_MIX_LOW & _SHR_GPORT_SCHEDULER_MASK)))
   1714 
   1715 #define _SHR_GPORT_IS_FABRIC_MESH_DEV1_OCB_HIGH(_gport)                                   \
   1716         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1717               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1718                                 (_SHR_GPORT_FABRIC_MESH_DEV1_OCB_HIGH & _SHR_GPORT_SCHEDULER_MASK)))
   1719 
   1720 #define _SHR_GPORT_IS_FABRIC_MESH_DEV1_OCB_LOW(_gport)                                   \
   1721         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1722               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1723                                 (_SHR_GPORT_FABRIC_MESH_DEV1_OCB_LOW & _SHR_GPORT_SCHEDULER_MASK)))
   1724 
   1725 #define _SHR_GPORT_IS_FABRIC_MESH_DEV1_MIX_HIGH(_gport)                                   \
   1726         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1727               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1728                                 (_SHR_GPORT_FABRIC_MESH_DEV1_MIX_HIGH & _SHR_GPORT_SCHEDULER_MASK)))
   1729 
   1730 #define _SHR_GPORT_IS_FABRIC_MESH_DEV1_MIX_LOW(_gport)                                   \
   1731         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1732               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1733                                 (_SHR_GPORT_FABRIC_MESH_DEV1_MIX_LOW & _SHR_GPORT_SCHEDULER_MASK)))
   1734 
   1735 #define _SHR_GPORT_IS_FABRIC_MESH_DEV2_OCB_HIGH(_gport)                                   \
   1736         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1737               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1738                                 (_SHR_GPORT_FABRIC_MESH_DEV2_OCB_HIGH & _SHR_GPORT_SCHEDULER_MASK)))
   1739 
   1740 #define _SHR_GPORT_IS_FABRIC_MESH_DEV2_OCB_LOW(_gport)                                   \
   1741         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1742               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1743                                 (_SHR_GPORT_FABRIC_MESH_DEV2_OCB_LOW & _SHR_GPORT_SCHEDULER_MASK)))
   1744 
   1745 #define _SHR_GPORT_IS_FABRIC_MESH_DEV2_MIX_HIGH(_gport)                                   \
   1746         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1747               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1748                                 (_SHR_GPORT_FABRIC_MESH_DEV2_MIX_HIGH & _SHR_GPORT_SCHEDULER_MASK)))
   1749 
   1750 #define _SHR_GPORT_IS_FABRIC_MESH_DEV2_MIX_LOW(_gport)                                   \
   1751         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1752               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1753                                 (_SHR_GPORT_FABRIC_MESH_DEV2_MIX_LOW & _SHR_GPORT_SCHEDULER_MASK)))
   1754 
   1755 #define _SHR_GPORT_IS_FABRIC_MESH_DEV3_OCB_HIGH(_gport)                                   \
   1756         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1757               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1758                                 (_SHR_GPORT_FABRIC_MESH_DEV3_OCB_HIGH & _SHR_GPORT_SCHEDULER_MASK)))
   1759 
   1760 #define _SHR_GPORT_IS_FABRIC_MESH_DEV3_OCB_LOW(_gport)                                   \
   1761         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1762               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1763                                 (_SHR_GPORT_FABRIC_MESH_DEV3_OCB_LOW & _SHR_GPORT_SCHEDULER_MASK)))
   1764 
   1765 #define _SHR_GPORT_IS_FABRIC_MESH_DEV3_MIX_HIGH(_gport)                                   \
   1766         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1767               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1768                                 (_SHR_GPORT_FABRIC_MESH_DEV3_MIX_HIGH & _SHR_GPORT_SCHEDULER_MASK)))
   1769 
   1770 #define _SHR_GPORT_IS_FABRIC_MESH_DEV3_MIX_LOW(_gport)                                   \
   1771         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1772               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1773                                 (_SHR_GPORT_FABRIC_MESH_DEV3_MIX_LOW & _SHR_GPORT_SCHEDULER_MASK)))
   1774 
   1775 #define _SHR_GPORT_IS_FABRIC_MESH_MC_OCB_HIGH(_gport)                                   \
   1776         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1777               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1778                                 (_SHR_GPORT_FABRIC_MESH_MC_OCB_HIGH & _SHR_GPORT_SCHEDULER_MASK)))
   1779 
   1780 #define _SHR_GPORT_IS_FABRIC_MESH_MC_OCB_LOW(_gport)                                   \
   1781         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1782               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1783                                 (_SHR_GPORT_FABRIC_MESH_MC_OCB_LOW & _SHR_GPORT_SCHEDULER_MASK)))
   1784 
   1785 #define _SHR_GPORT_IS_FABRIC_MESH_MC_MIX_HIGH(_gport)                                   \
   1786         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1787               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1788                                 (_SHR_GPORT_FABRIC_MESH_MC_MIX_HIGH & _SHR_GPORT_SCHEDULER_MASK)))
   1789 
   1790 #define _SHR_GPORT_IS_FABRIC_MESH_MC_MIX_LOW(_gport)                                   \
   1791         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1792               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1793                                 (_SHR_GPORT_FABRIC_MESH_MC_MIX_LOW & _SHR_GPORT_SCHEDULER_MASK)))
   1794 
   1795 #define _SHR_GPORT_IS_FABRIC_MESH_LOCAL0(_gport)                                   \
   1796         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1797               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1798                                 (_SHR_GPORT_FABRIC_MESH_LOCAL0 & _SHR_GPORT_SCHEDULER_MASK)))
   1799 
   1800 #define _SHR_GPORT_IS_FABRIC_MESH_LOCAL1(_gport)                                   \
   1801         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1802               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1803                                 (_SHR_GPORT_FABRIC_MESH_LOCAL1 & _SHR_GPORT_SCHEDULER_MASK)))
   1804 
   1805 #define _SHR_GPORT_IS_FABRIC_MESH_MC(_gport)                                   \
   1806         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1807               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1808                                 (_SHR_GPORT_FABRIC_MESH_MC & _SHR_GPORT_SCHEDULER_MASK)))
   1809 
   1810 #define _SHR_GPORT_IS_FABRIC_MESH_SCOPE(_gport)                                   \
   1811         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1812               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1813                                 (_SHR_GPORT_FABRIC_MESH_SCOPE & _SHR_GPORT_SCHEDULER_MASK)))
   1814 
   1815 #define _SHR_GPORT_IS_FABRIC_CLOS_LOCAL0_OCB_HIGH(_gport)                                   \
   1816         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1817               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1818                                 (_SHR_GPORT_FABRIC_CLOS_LOCAL0_OCB_HIGH & _SHR_GPORT_SCHEDULER_MASK)))
   1819 
   1820 #define _SHR_GPORT_IS_FABRIC_CLOS_LOCAL0_OCB_LOW(_gport)                                   \
   1821         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1822               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1823                                 (_SHR_GPORT_FABRIC_CLOS_LOCAL0_OCB_LOW & _SHR_GPORT_SCHEDULER_MASK)))
   1824 
   1825 #define _SHR_GPORT_IS_FABRIC_CLOS_LOCAL0_MIX_HIGH(_gport)                                   \
   1826         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1827               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1828                                 (_SHR_GPORT_FABRIC_CLOS_LOCAL0_MIX_HIGH & _SHR_GPORT_SCHEDULER_MASK)))
   1829 
   1830 #define _SHR_GPORT_IS_FABRIC_CLOS_LOCAL0_MIX_LOW(_gport)                                   \
   1831         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1832               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1833                                 (_SHR_GPORT_FABRIC_CLOS_LOCAL0_MIX_LOW & _SHR_GPORT_SCHEDULER_MASK)))
   1834 
   1835 #define _SHR_GPORT_IS_FABRIC_CLOS_LOCAL1_OCB_HIGH(_gport)                                   \
   1836         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1837               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1838                                 (_SHR_GPORT_FABRIC_CLOS_LOCAL1_OCB_HIGH & _SHR_GPORT_SCHEDULER_MASK)))
   1839 
   1840 #define _SHR_GPORT_IS_FABRIC_CLOS_LOCAL1_OCB_LOW(_gport)                                   \
   1841         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1842               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1843                                 (_SHR_GPORT_FABRIC_CLOS_LOCAL1_OCB_LOW & _SHR_GPORT_SCHEDULER_MASK)))
   1844 
   1845 #define _SHR_GPORT_IS_FABRIC_CLOS_LOCAL1_MIX_HIGH(_gport)                                   \
   1846         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1847               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1848                                 (_SHR_GPORT_FABRIC_CLOS_LOCAL1_MIX_HIGH & _SHR_GPORT_SCHEDULER_MASK)))
   1849 
   1850 #define _SHR_GPORT_IS_FABRIC_CLOS_LOCAL1_MIX_LOW(_gport)                                   \
   1851         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1852               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1853                                 (_SHR_GPORT_FABRIC_CLOS_LOCAL1_MIX_LOW & _SHR_GPORT_SCHEDULER_MASK)))
   1854 
   1855 #define _SHR_GPORT_IS_FABRIC_CLOS_UNICAST_FABRIC_OCB_HIGH(_gport)                                   \
   1856         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1857               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1858                                 (_SHR_GPORT_FABRIC_CLOS_UNICAST_FABRIC_OCB_HIGH & _SHR_GPORT_SCHEDULER_MASK)))
   1859 
   1860 #define _SHR_GPORT_IS_FABRIC_CLOS_UNICAST_FABRIC_OCB_LOW(_gport)                                   \
   1861         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1862               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1863                                 (_SHR_GPORT_FABRIC_CLOS_UNICAST_FABRIC_OCB_LOW & _SHR_GPORT_SCHEDULER_MASK)))
   1864 
   1865 #define _SHR_GPORT_IS_FABRIC_CLOS_UNICAST_FABRIC_MIX_HIGH(_gport)                                   \
   1866         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1867               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1868                                 (_SHR_GPORT_FABRIC_CLOS_UNICAST_FABRIC_MIX_HIGH & _SHR_GPORT_SCHEDULER_MASK)))
   1869 
   1870 #define _SHR_GPORT_IS_FABRIC_CLOS_UNICAST_FABRIC_MIX_LOW(_gport)                                   \
   1871         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1872               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1873                                 (_SHR_GPORT_FABRIC_CLOS_UNICAST_FABRIC_MIX_LOW & _SHR_GPORT_SCHEDULER_MASK)))
   1874 
   1875 #define _SHR_GPORT_IS_FABRIC_CLOS_FMQ_GUARANTEED_OCB(_gport)                                   \
   1876         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1877               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1878                                 (_SHR_GPORT_FABRIC_CLOS_FMQ_GUARANTEED_OCB & _SHR_GPORT_SCHEDULER_MASK)))
   1879 
   1880 #define _SHR_GPORT_IS_FABRIC_CLOS_FMQ_BEST_EFFORT_OCB(_gport)                                   \
   1881         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1882               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1883                                 (_SHR_GPORT_FABRIC_CLOS_FMQ_BEST_EFFORT_OCB & _SHR_GPORT_SCHEDULER_MASK)))
   1884 
   1885 #define _SHR_GPORT_IS_FABRIC_CLOS_FMQ_GUARANTEED_MIX(_gport)                                   \
   1886         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1887               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1888                                 (_SHR_GPORT_FABRIC_CLOS_FMQ_GUARANTEED_MIX & _SHR_GPORT_SCHEDULER_MASK)))
   1889 
   1890 #define _SHR_GPORT_IS_FABRIC_CLOS_FMQ_BEST_EFFORT_MIX(_gport)                                   \
   1891         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1892               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1893                                 (_SHR_GPORT_FABRIC_CLOS_FMQ_BEST_EFFORT_MIX & _SHR_GPORT_SCHEDULER_MASK)))
   1894 
   1895 #define _SHR_GPORT_IS_FABRIC_CLOS_LOCAL0(_gport)                                   \
   1896         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1897               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1898                                 (_SHR_GPORT_FABRIC_CLOS_LOCAL0 & _SHR_GPORT_SCHEDULER_MASK)))
   1899 
   1900 #define _SHR_GPORT_IS_FABRIC_CLOS_LOCAL1(_gport)                                   \
   1901         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1902               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1903                                 (_SHR_GPORT_FABRIC_CLOS_LOCAL1 & _SHR_GPORT_SCHEDULER_MASK)))
   1904 
   1905 #define _SHR_GPORT_IS_FABRIC_CLOS_LOCAL0_HIGH(_gport)                                   \
   1906         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1907               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1908                                 (_SHR_GPORT_FABRIC_CLOS_LOCAL0_HIGH & _SHR_GPORT_SCHEDULER_MASK)))
   1909 
   1910 #define _SHR_GPORT_IS_FABRIC_CLOS_LOCAL0_LOW(_gport)                                   \
   1911         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1912               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1913                                 (_SHR_GPORT_FABRIC_CLOS_LOCAL0_LOW & _SHR_GPORT_SCHEDULER_MASK)))
   1914 
   1915 #define _SHR_GPORT_IS_FABRIC_CLOS_LOCAL1_HIGH(_gport)                                   \
   1916         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1917               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1918                                 (_SHR_GPORT_FABRIC_CLOS_LOCAL1_HIGH & _SHR_GPORT_SCHEDULER_MASK)))
   1919 
   1920 #define _SHR_GPORT_IS_FABRIC_CLOS_LOCAL1_LOW(_gport)                                   \
   1921         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1922               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1923                                 (_SHR_GPORT_FABRIC_CLOS_LOCAL1_LOW & _SHR_GPORT_SCHEDULER_MASK)))
   1924 
   1925 #define _SHR_GPORT_IS_FABRIC_CLOS_OCB_HIGH(_gport)                                   \
   1926         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1927               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1928                                 (_SHR_GPORT_FABRIC_CLOS_OCB_HIGH & _SHR_GPORT_SCHEDULER_MASK)))
   1929 
   1930 #define _SHR_GPORT_IS_FABRIC_CLOS_MIX_HIGH(_gport)                                   \
   1931         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1932               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1933                                 (_SHR_GPORT_FABRIC_CLOS_MIX_HIGH & _SHR_GPORT_SCHEDULER_MASK)))
   1934 
   1935 #define _SHR_GPORT_IS_FABRIC_CLOS_OCB_LOW(_gport)                                   \
   1936         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1937               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1938                                 (_SHR_GPORT_FABRIC_CLOS_OCB_LOW & _SHR_GPORT_SCHEDULER_MASK)))
   1939 
   1940 #define _SHR_GPORT_IS_FABRIC_CLOS_MIX_LOW(_gport)                                   \
   1941         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1942               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1943                                 (_SHR_GPORT_FABRIC_CLOS_MIX_LOW & _SHR_GPORT_SCHEDULER_MASK)))
   1944 
   1945 #define _SHR_GPORT_IS_FABRIC_CLOS_SCOPE(_gport)                                   \
   1946         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                     \
   1947               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==          \
   1948                                 (_SHR_GPORT_FABRIC_CLOS_SCOPE & _SHR_GPORT_SCHEDULER_MASK)))
   1949 
   1950 #define _SHR_COSQ_GPORT_FMQ_CLASS_CORE_SET(_gport, _core_id, _class)              \
   1951     switch (_class) {                                                             \
   1952         case 1:                                                                   \
   1953             ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |   \
   1954              (((_SHR_GPORT_FMQ_CLASS1) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT) |\
   1955              (((_SHR_CORE_ID2FIELD(_core_id)) & _SHR_GPORT_SCHEDULER_CORE_MASK) << _SHR_GPORT_SCHEDULER_CORE_SHIFT));                                                                                 \
   1956             break;                                                                \
   1957         case 2:                                                                   \
   1958             ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  | \
   1959              (((_SHR_GPORT_FMQ_CLASS2) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT) |\
   1960              (((_SHR_CORE_ID2FIELD(_core_id)) & _SHR_GPORT_SCHEDULER_CORE_MASK) << _SHR_GPORT_SCHEDULER_CORE_SHIFT));                                                                                   \
   1961             break;                                                                \
   1962         case 3:                                                                   \
   1963             ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  | \
   1964              (((_SHR_GPORT_FMQ_CLASS3) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT) |\
   1965              (((_SHR_CORE_ID2FIELD(_core_id)) & _SHR_GPORT_SCHEDULER_CORE_MASK) << _SHR_GPORT_SCHEDULER_CORE_SHIFT));                                                                                   \
   1966             break;                                                                \
   1967         case 4:                                                                   \
   1968             ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |   \
   1969              (((_SHR_GPORT_FMQ_CLASS4) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT) |\
   1970              (((_SHR_CORE_ID2FIELD(_core_id)) & _SHR_GPORT_SCHEDULER_CORE_MASK) << _SHR_GPORT_SCHEDULER_CORE_SHIFT));                                                                                \
   1971             break;                                                                \
   1972         default:                                                                  \
   1973             ((_gport) = _SHR_GPORT_INVALID);                                      \
   1974             break;                                                                \
   1975     }
   1976 
   1977 #define _SHR_COSQ_GPORT_FMQ_CLASS_SET(_gport, _class)                             \
   1978         _SHR_COSQ_GPORT_FMQ_CLASS_CORE_SET(_gport, _SHR_CORE_ALL, _class)
   1979 
   1980 #define _SHR_COSQ_GPORT_IS_FMQ_CLASS(_gport)                                              \
   1981         ( _SHR_GPORT_IS_SCHEDULER(_gport) &&                                              \
   1982           ( ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==    \
   1983                                                 _SHR_GPORT_FMQ_CLASS1) ||                 \
   1984             ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==    \
   1985                                                 _SHR_GPORT_FMQ_CLASS2) ||                 \
   1986             ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==    \
   1987                                                 _SHR_GPORT_FMQ_CLASS3) ||                 \
   1988             ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==    \
   1989                                                 _SHR_GPORT_FMQ_CLASS4) ) )
   1990 
   1991 #define _SHR_GPORT_IS_FABRIC_CLOS(_gport)                                                                        \
   1992         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                                    \
   1993             ( ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   1994                                 (_SHR_GPORT_FABRIC_CLOS_UNICAST_LOCAL & _SHR_GPORT_SCHEDULER_MASK))        ||    \
   1995               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   1996                                 (_SHR_GPORT_FABRIC_CLOS_UNICAST_LOCAL_LOW & _SHR_GPORT_SCHEDULER_MASK))    ||    \
   1997               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   1998                                 (_SHR_GPORT_FABRIC_CLOS_UNICAST_LOCAL_HIGH & _SHR_GPORT_SCHEDULER_MASK))   ||    \
   1999               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2000                                 (_SHR_GPORT_FABRIC_CLOS_FABRIC & _SHR_GPORT_SCHEDULER_MASK))               ||    \
   2001               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2002                                 (_SHR_GPORT_FABRIC_CLOS_FABRIC_HIGH & _SHR_GPORT_SCHEDULER_MASK))          ||    \
   2003               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2004                                 (_SHR_GPORT_FABRIC_CLOS_FABRIC_LOW & _SHR_GPORT_SCHEDULER_MASK))           ||    \
   2005               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2006                                 (_SHR_GPORT_FABRIC_CLOS_UNICAST_FABRIC_HIGH & _SHR_GPORT_SCHEDULER_MASK))  ||    \
   2007               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2008                                 (_SHR_GPORT_FABRIC_CLOS_UNICAST_FABRIC_LOW & _SHR_GPORT_SCHEDULER_MASK))   ||    \
   2009               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2010                                 (_SHR_GPORT_FABRIC_CLOS_FMQ_GUARANTEED & _SHR_GPORT_SCHEDULER_MASK))       ||    \
   2011               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2012                                 (_SHR_GPORT_FABRIC_CLOS_FMQ_BESTEFFORT & _SHR_GPORT_SCHEDULER_MASK))       ||    \
   2013               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2014                                 (_SHR_GPORT_FABRIC_CLOS_COMMON_LOCAL0 & _SHR_GPORT_SCHEDULER_MASK))        ||    \
   2015               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2016                                 (_SHR_GPORT_FABRIC_CLOS_COMMON_LOCAL1 & _SHR_GPORT_SCHEDULER_MASK))        ||    \
   2017               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2018                                 (_SHR_GPORT_FABRIC_CLOS_COMMON_FABRIC & _SHR_GPORT_SCHEDULER_MASK))        ||    \
   2019               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2020                                 (_SHR_GPORT_FABRIC_CLOS_COMMON_UNICAST_FABRIC & _SHR_GPORT_SCHEDULER_MASK))       ||     \
   2021               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2022                                 (_SHR_GPORT_FABRIC_CLOS_COMMON_MULTICAST_FABRIC & _SHR_GPORT_SCHEDULER_MASK))     ||     \
   2023               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2024                                 (_SHR_GPORT_FABRIC_CLOS_LOCAL0_OCB_HIGH & _SHR_GPORT_SCHEDULER_MASK))      ||    \
   2025               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2026                                 (_SHR_GPORT_FABRIC_CLOS_LOCAL0_OCB_LOW & _SHR_GPORT_SCHEDULER_MASK))       ||    \
   2027               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2028                                 (_SHR_GPORT_FABRIC_CLOS_LOCAL0_MIX_HIGH & _SHR_GPORT_SCHEDULER_MASK))      ||    \
   2029               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2030                                 (_SHR_GPORT_FABRIC_CLOS_LOCAL0_MIX_LOW & _SHR_GPORT_SCHEDULER_MASK))       ||    \
   2031               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2032                                 (_SHR_GPORT_FABRIC_CLOS_LOCAL1_OCB_HIGH & _SHR_GPORT_SCHEDULER_MASK))      ||    \
   2033               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2034                                 (_SHR_GPORT_FABRIC_CLOS_LOCAL1_OCB_LOW & _SHR_GPORT_SCHEDULER_MASK))       ||    \
   2035               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2036                                 (_SHR_GPORT_FABRIC_CLOS_LOCAL1_MIX_HIGH & _SHR_GPORT_SCHEDULER_MASK))      ||    \
   2037               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2038                                 (_SHR_GPORT_FABRIC_CLOS_LOCAL1_MIX_LOW & _SHR_GPORT_SCHEDULER_MASK))       ||    \
   2039               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2040                                 (_SHR_GPORT_FABRIC_CLOS_UNICAST_FABRIC_OCB_HIGH & _SHR_GPORT_SCHEDULER_MASK))      ||    \
   2041               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2042                                 (_SHR_GPORT_FABRIC_CLOS_UNICAST_FABRIC_OCB_LOW & _SHR_GPORT_SCHEDULER_MASK))       ||    \
   2043               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2044                                 (_SHR_GPORT_FABRIC_CLOS_UNICAST_FABRIC_MIX_HIGH & _SHR_GPORT_SCHEDULER_MASK))      ||    \
   2045               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2046                                 (_SHR_GPORT_FABRIC_CLOS_UNICAST_FABRIC_MIX_LOW & _SHR_GPORT_SCHEDULER_MASK))       ||    \
   2047               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2048                                 (_SHR_GPORT_FABRIC_CLOS_FMQ_GUARANTEED_OCB & _SHR_GPORT_SCHEDULER_MASK))        ||    \
   2049               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2050                                 (_SHR_GPORT_FABRIC_CLOS_FMQ_BEST_EFFORT_OCB & _SHR_GPORT_SCHEDULER_MASK))       ||    \
   2051               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2052                                 (_SHR_GPORT_FABRIC_CLOS_FMQ_GUARANTEED_MIX & _SHR_GPORT_SCHEDULER_MASK))        ||    \
   2053               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2054                                 (_SHR_GPORT_FABRIC_CLOS_FMQ_BEST_EFFORT_MIX & _SHR_GPORT_SCHEDULER_MASK))       ||    \
   2055               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2056                                 (_SHR_GPORT_FABRIC_CLOS_LOCAL0 & _SHR_GPORT_SCHEDULER_MASK))       ||    \
   2057               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2058                                 (_SHR_GPORT_FABRIC_CLOS_LOCAL1 & _SHR_GPORT_SCHEDULER_MASK))       ||    \
   2059               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2060                                 (_SHR_GPORT_FABRIC_CLOS_LOCAL0_HIGH & _SHR_GPORT_SCHEDULER_MASK))  ||    \
   2061               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2062                                 (_SHR_GPORT_FABRIC_CLOS_LOCAL0_LOW & _SHR_GPORT_SCHEDULER_MASK))   ||    \
   2063               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2064                                 (_SHR_GPORT_FABRIC_CLOS_LOCAL1_HIGH & _SHR_GPORT_SCHEDULER_MASK))  ||    \
   2065               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2066                                 (_SHR_GPORT_FABRIC_CLOS_LOCAL1_LOW & _SHR_GPORT_SCHEDULER_MASK))   ||    \
   2067               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2068                                 (_SHR_GPORT_FABRIC_CLOS_OCB_HIGH & _SHR_GPORT_SCHEDULER_MASK))     ||    \
   2069               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2070                                 (_SHR_GPORT_FABRIC_CLOS_MIX_HIGH & _SHR_GPORT_SCHEDULER_MASK))     ||    \
   2071               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2072                                 (_SHR_GPORT_FABRIC_CLOS_OCB_LOW & _SHR_GPORT_SCHEDULER_MASK))      ||    \
   2073               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2074                                 (_SHR_GPORT_FABRIC_CLOS_MIX_LOW & _SHR_GPORT_SCHEDULER_MASK))      ||    \
   2075               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2076                                 (_SHR_GPORT_FABRIC_CLOS_SCOPE & _SHR_GPORT_SCHEDULER_MASK)) ))
   2077 
   2078 #define _SHR_GPORT_IS_FABRIC_CLOS_UNICAST_LOCAL(_gport)                                                          \
   2079         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                                    \
   2080             ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                           \
   2081                                 (_SHR_GPORT_FABRIC_CLOS_UNICAST_LOCAL & _SHR_GPORT_SCHEDULER_MASK)))
   2082 
   2083 #define _SHR_GPORT_IS_FABRIC_CLOS_UNICAST_LOCAL_LOW(_gport)                                                      \
   2084         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                                    \
   2085             ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                           \
   2086                                 (_SHR_GPORT_FABRIC_CLOS_UNICAST_LOCAL_LOW & _SHR_GPORT_SCHEDULER_MASK)))
   2087 
   2088 #define _SHR_GPORT_IS_FABRIC_CLOS_UNICAST_LOCAL_HIGH(_gport)                                                     \
   2089         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                                    \
   2090             ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                           \
   2091                                 (_SHR_GPORT_FABRIC_CLOS_UNICAST_LOCAL_HIGH & _SHR_GPORT_SCHEDULER_MASK)))
   2092 
   2093 #define _SHR_GPORT_IS_FABRIC_CLOS_FABRIC(_gport)                                                                 \
   2094         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                                    \
   2095             ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                           \
   2096                                 (_SHR_GPORT_FABRIC_CLOS_FABRIC & _SHR_GPORT_SCHEDULER_MASK)))
   2097 
   2098 #define _SHR_GPORT_IS_FABRIC_CLOS_FABRIC_HIGH(_gport)                                                            \
   2099         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                                    \
   2100               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2101                                 (_SHR_GPORT_FABRIC_CLOS_FABRIC_HIGH & _SHR_GPORT_SCHEDULER_MASK)))
   2102 
   2103 #define _SHR_GPORT_IS_FABRIC_CLOS_FABRIC_LOW(_gport)                                                             \
   2104         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                                    \
   2105               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2106                                 (_SHR_GPORT_FABRIC_CLOS_FABRIC_LOW & _SHR_GPORT_SCHEDULER_MASK)))
   2107 
   2108 #define _SHR_GPORT_IS_FABRIC_CLOS_UNICAST_FABRIC_HIGH(_gport)                                                    \
   2109         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                                    \
   2110               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2111                                 (_SHR_GPORT_FABRIC_CLOS_UNICAST_FABRIC_HIGH & _SHR_GPORT_SCHEDULER_MASK)))
   2112 
   2113 #define _SHR_GPORT_IS_FABRIC_CLOS_UNICAST_FABRIC_LOW(_gport)                                                     \
   2114         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                                    \
   2115               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2116                                 (_SHR_GPORT_FABRIC_CLOS_UNICAST_FABRIC_LOW & _SHR_GPORT_SCHEDULER_MASK)))
   2117 
   2118 #define _SHR_GPORT_IS_FABRIC_CLOS_FMQ_GUARANTEED(_gport)                                                         \
   2119         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                                    \
   2120               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2121                                 (_SHR_GPORT_FABRIC_CLOS_FMQ_GUARANTEED & _SHR_GPORT_SCHEDULER_MASK)))
   2122 
   2123 #define _SHR_GPORT_IS_FABRIC_CLOS_FMQ_BESTEFFORT(_gport)                                                         \
   2124         ( _SHR_GPORT_IS_SCHEDULER(_gport)  &&                                                                    \
   2125               ((((_gport) >> _SHR_GPORT_SCHEDULER_SHIFT) & _SHR_GPORT_SCHEDULER_MASK) ==                         \
   2126                                 (_SHR_GPORT_FABRIC_CLOS_FMQ_BESTEFFORT & _SHR_GPORT_SCHEDULER_MASK)))
   2127 
   2128 #define _SHR_COSQ_GPORT_FABRIC_CLOS_UNICAST_LOCAL_SET(_gport)                     \
   2129         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2130          (((_SHR_GPORT_FABRIC_CLOS_UNICAST_LOCAL) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2131 
   2132 #define _SHR_COSQ_GPORT_FABRIC_CLOS_UNICAST_LOCAL_LOW_SET(_gport)                 \
   2133         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2134          (((_SHR_GPORT_FABRIC_CLOS_UNICAST_LOCAL_LOW) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2135 
   2136 #define _SHR_COSQ_GPORT_FABRIC_CLOS_UNICAST_LOCAL_HIGH_SET(_gport)                \
   2137         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2138          (((_SHR_GPORT_FABRIC_CLOS_UNICAST_LOCAL_HIGH) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2139 
   2140 #define _SHR_COSQ_GPORT_FABRIC_CLOS_FABRIC_SET(_gport)                            \
   2141         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2142          (((_SHR_GPORT_FABRIC_CLOS_FABRIC) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2143 
   2144 #define _SHR_COSQ_GPORT_FABRIC_CLOS_FABRIC_HIGH_SET(_gport)                       \
   2145         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2146          (((_SHR_GPORT_FABRIC_CLOS_FABRIC_HIGH) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2147 
   2148 #define _SHR_COSQ_GPORT_FABRIC_CLOS_FABRIC_LOW_SET(_gport)                        \
   2149         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2150          (((_SHR_GPORT_FABRIC_CLOS_FABRIC_LOW) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2151 
   2152 #define _SHR_COSQ_GPORT_FABRIC_CLOS_UNICAST_FABRIC_HIGH_SET(_gport)               \
   2153         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2154          (((_SHR_GPORT_FABRIC_CLOS_UNICAST_FABRIC_HIGH) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2155 
   2156 #define _SHR_COSQ_GPORT_FABRIC_CLOS_UNICAST_FABRIC_LOW_SET(_gport)                \
   2157         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2158          (((_SHR_GPORT_FABRIC_CLOS_UNICAST_FABRIC_LOW) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2159 
   2160 #define _SHR_COSQ_GPORT_FABRIC_CLOS_FMQ_GUARANTEED_SET(_gport)                    \
   2161         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2162          (((_SHR_GPORT_FABRIC_CLOS_FMQ_GUARANTEED) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2163 
   2164 #define _SHR_COSQ_GPORT_FABRIC_CLOS_FMQ_BESTEFFORT_SET(_gport)                    \
   2165         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2166          (((_SHR_GPORT_FABRIC_CLOS_FMQ_BESTEFFORT) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2167 
   2168 #define _SHR_COSQ_GPORT_FABRIC_MESH_COMMON_LOCAL0_SET(_gport)                    \
   2169         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2170          (((_SHR_GPORT_FABRIC_MESH_COMMON_LOCAL0) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2171 
   2172 #define _SHR_COSQ_GPORT_FABRIC_MESH_COMMON_LOCAL1_SET(_gport)                    \
   2173         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2174          (((_SHR_GPORT_FABRIC_MESH_COMMON_LOCAL1) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2175 
   2176 #define _SHR_COSQ_GPORT_FABRIC_MESH_COMMON_DEV1_SET(_gport)                    \
   2177         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2178          (((_SHR_GPORT_FABRIC_MESH_COMMON_DEV1) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2179 
   2180 #define _SHR_COSQ_GPORT_FABRIC_MESH_COMMON_DEV2_SET(_gport)                    \
   2181         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2182          (((_SHR_GPORT_FABRIC_MESH_COMMON_DEV2) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2183 
   2184 #define _SHR_COSQ_GPORT_FABRIC_MESH_COMMON_DEV3_SET(_gport)                    \
   2185         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2186          (((_SHR_GPORT_FABRIC_MESH_COMMON_DEV3) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2187 
   2188 #define _SHR_COSQ_GPORT_FABRIC_MESH_COMMON_MC_SET(_gport)                    \
   2189         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2190          (((_SHR_GPORT_FABRIC_MESH_COMMON_MC) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2191 
   2192 #define _SHR_COSQ_GPORT_FABRIC_CLOS_COMMON_LOCAL0_SET(_gport)                    \
   2193         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2194          (((_SHR_GPORT_FABRIC_CLOS_COMMON_LOCAL0) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2195 
   2196 #define _SHR_COSQ_GPORT_FABRIC_CLOS_COMMON_LOCAL1_SET(_gport)                    \
   2197         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2198          (((_SHR_GPORT_FABRIC_CLOS_COMMON_LOCAL1) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2199 
   2200 #define _SHR_COSQ_GPORT_FABRIC_CLOS_COMMON_FABRIC_SET(_gport)                    \
   2201         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2202          (((_SHR_GPORT_FABRIC_CLOS_COMMON_FABRIC) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2203 
   2204 #define _SHR_COSQ_GPORT_FABRIC_CLOS_COMMON_UNICAST_FABRIC_SET(_gport)                    \
   2205         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2206          (((_SHR_GPORT_FABRIC_CLOS_COMMON_UNICAST_FABRIC) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2207 
   2208 #define _SHR_COSQ_GPORT_FABRIC_CLOS_COMMON_MULTICAST_FABRIC_SET(_gport)                    \
   2209         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2210          (((_SHR_GPORT_FABRIC_CLOS_COMMON_MULTICAST_FABRIC) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2211 
   2212 #define _SHR_COSQ_GPORT_FABRIC_MESH_LOCAL0_OCB_HIGH_SET(_gport)                    \
   2213         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2214          (((_SHR_GPORT_FABRIC_MESH_LOCAL0_OCB_HIGH) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2215 
   2216 #define _SHR_COSQ_GPORT_FABRIC_MESH_LOCAL0_OCB_LOW_SET(_gport)                    \
   2217         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2218          (((_SHR_GPORT_FABRIC_MESH_LOCAL0_OCB_LOW) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2219 
   2220 #define _SHR_COSQ_GPORT_FABRIC_MESH_LOCAL0_MIX_HIGH_SET(_gport)                    \
   2221         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2222          (((_SHR_GPORT_FABRIC_MESH_LOCAL0_MIX_HIGH) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2223 
   2224 #define _SHR_COSQ_GPORT_FABRIC_MESH_LOCAL0_MIX_LOW_SET(_gport)                    \
   2225         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2226          (((_SHR_GPORT_FABRIC_MESH_LOCAL0_MIX_LOW) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2227 
   2228 #define _SHR_COSQ_GPORT_FABRIC_MESH_LOCAL1_OCB_HIGH_SET(_gport)                    \
   2229         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2230          (((_SHR_GPORT_FABRIC_MESH_LOCAL1_OCB_HIGH) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2231 
   2232 #define _SHR_COSQ_GPORT_FABRIC_MESH_LOCAL1_OCB_LOW_SET(_gport)                    \
   2233         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2234          (((_SHR_GPORT_FABRIC_MESH_LOCAL1_OCB_LOW) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2235 
   2236 #define _SHR_COSQ_GPORT_FABRIC_MESH_LOCAL1_MIX_HIGH_SET(_gport)                    \
   2237         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2238          (((_SHR_GPORT_FABRIC_MESH_LOCAL1_MIX_HIGH) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2239 
   2240 #define _SHR_COSQ_GPORT_FABRIC_MESH_LOCAL1_MIX_LOW_SET(_gport)                    \
   2241         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2242          (((_SHR_GPORT_FABRIC_MESH_LOCAL1_MIX_LOW) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2243 
   2244 #define _SHR_COSQ_GPORT_FABRIC_MESH_DEV1_OCB_HIGH_SET(_gport)                    \
   2245         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2246          (((_SHR_GPORT_FABRIC_MESH_DEV1_OCB_HIGH) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2247 
   2248 #define _SHR_COSQ_GPORT_FABRIC_MESH_DEV1_OCB_LOW_SET(_gport)                    \
   2249         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2250          (((_SHR_GPORT_FABRIC_MESH_DEV1_OCB_LOW) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2251 
   2252 #define _SHR_COSQ_GPORT_FABRIC_MESH_DEV1_MIX_HIGH_SET(_gport)                    \
   2253         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2254          (((_SHR_GPORT_FABRIC_MESH_DEV1_MIX_HIGH) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2255 
   2256 #define _SHR_COSQ_GPORT_FABRIC_MESH_DEV1_MIX_LOW_SET(_gport)                    \
   2257         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2258          (((_SHR_GPORT_FABRIC_MESH_DEV1_MIX_LOW) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2259 
   2260 #define _SHR_COSQ_GPORT_FABRIC_MESH_DEV2_OCB_HIGH_SET(_gport)                    \
   2261         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2262          (((_SHR_GPORT_FABRIC_MESH_DEV2_OCB_HIGH) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2263 
   2264 #define _SHR_COSQ_GPORT_FABRIC_MESH_DEV2_OCB_LOW_SET(_gport)                    \
   2265         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2266          (((_SHR_GPORT_FABRIC_MESH_DEV2_OCB_LOW) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2267 
   2268 #define _SHR_COSQ_GPORT_FABRIC_MESH_DEV2_MIX_HIGH_SET(_gport)                    \
   2269         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2270          (((_SHR_GPORT_FABRIC_MESH_DEV2_MIX_HIGH) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2271 
   2272 #define _SHR_COSQ_GPORT_FABRIC_MESH_DEV2_MIX_LOW_SET(_gport)                    \
   2273         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2274          (((_SHR_GPORT_FABRIC_MESH_DEV2_MIX_LOW) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2275 
   2276 #define _SHR_COSQ_GPORT_FABRIC_MESH_DEV3_OCB_HIGH_SET(_gport)                    \
   2277         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2278          (((_SHR_GPORT_FABRIC_MESH_DEV3_OCB_HIGH) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2279 
   2280 #define _SHR_COSQ_GPORT_FABRIC_MESH_DEV3_OCB_LOW_SET(_gport)                    \
   2281         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2282          (((_SHR_GPORT_FABRIC_MESH_DEV3_OCB_LOW) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2283 
   2284 #define _SHR_COSQ_GPORT_FABRIC_MESH_DEV3_MIX_HIGH_SET(_gport)                    \
   2285         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2286          (((_SHR_GPORT_FABRIC_MESH_DEV3_MIX_HIGH) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2287 
   2288 #define _SHR_COSQ_GPORT_FABRIC_MESH_DEV3_MIX_LOW_SET(_gport)                    \
   2289         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2290          (((_SHR_GPORT_FABRIC_MESH_DEV3_MIX_LOW) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2291 
   2292 #define _SHR_COSQ_GPORT_FABRIC_MESH_MC_OCB_HIGH_SET(_gport)                    \
   2293         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2294          (((_SHR_GPORT_FABRIC_MESH_MC_OCB_HIGH) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2295 
   2296 #define _SHR_COSQ_GPORT_FABRIC_MESH_MC_OCB_LOW_SET(_gport)                    \
   2297         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2298          (((_SHR_GPORT_FABRIC_MESH_MC_OCB_LOW) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2299 
   2300 #define _SHR_COSQ_GPORT_FABRIC_MESH_MC_MIX_HIGH_SET(_gport)                    \
   2301         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2302          (((_SHR_GPORT_FABRIC_MESH_MC_MIX_HIGH) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2303 
   2304 #define _SHR_COSQ_GPORT_FABRIC_MESH_MC_MIX_LOW_SET(_gport)                    \
   2305         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2306          (((_SHR_GPORT_FABRIC_MESH_MC_MIX_LOW) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2307 
   2308 #define _SHR_COSQ_GPORT_FABRIC_MESH_LOCAL0_SET(_gport)                    \
   2309         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2310          (((_SHR_GPORT_FABRIC_MESH_LOCAL0) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2311 
   2312 #define _SHR_COSQ_GPORT_FABRIC_MESH_LOCAL1_SET(_gport)                    \
   2313         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2314          (((_SHR_GPORT_FABRIC_MESH_LOCAL1) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2315 
   2316 #define _SHR_COSQ_GPORT_FABRIC_MESH_MC_SET(_gport)                    \
   2317         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2318          (((_SHR_GPORT_FABRIC_MESH_MC) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2319 
   2320 #define _SHR_COSQ_GPORT_FABRIC_MESH_SCOPE_SET(_gport)                    \
   2321         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2322          (((_SHR_GPORT_FABRIC_MESH_SCOPE) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2323 
   2324 #define _SHR_COSQ_GPORT_FABRIC_CLOS_LOCAL0_OCB_HIGH_SET(_gport)                    \
   2325         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2326          (((_SHR_GPORT_FABRIC_CLOS_LOCAL0_OCB_HIGH) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2327 
   2328 #define _SHR_COSQ_GPORT_FABRIC_CLOS_LOCAL0_OCB_LOW_SET(_gport)                    \
   2329         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2330          (((_SHR_GPORT_FABRIC_CLOS_LOCAL0_OCB_LOW) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2331 
   2332 #define _SHR_COSQ_GPORT_FABRIC_CLOS_LOCAL0_MIX_HIGH_SET(_gport)                    \
   2333         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2334          (((_SHR_GPORT_FABRIC_CLOS_LOCAL0_MIX_HIGH) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2335 
   2336 #define _SHR_COSQ_GPORT_FABRIC_CLOS_LOCAL0_MIX_LOW_SET(_gport)                    \
   2337         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2338          (((_SHR_GPORT_FABRIC_CLOS_LOCAL0_MIX_LOW) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2339 
   2340 #define _SHR_COSQ_GPORT_FABRIC_CLOS_LOCAL1_OCB_HIGH_SET(_gport)                    \
   2341         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2342          (((_SHR_GPORT_FABRIC_CLOS_LOCAL1_OCB_HIGH) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2343 
   2344 #define _SHR_COSQ_GPORT_FABRIC_CLOS_LOCAL1_OCB_LOW_SET(_gport)                    \
   2345         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2346          (((_SHR_GPORT_FABRIC_CLOS_LOCAL1_OCB_LOW) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2347 
   2348 #define _SHR_COSQ_GPORT_FABRIC_CLOS_LOCAL1_MIX_HIGH_SET(_gport)                    \
   2349         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2350          (((_SHR_GPORT_FABRIC_CLOS_LOCAL1_MIX_HIGH) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2351 
   2352 #define _SHR_COSQ_GPORT_FABRIC_CLOS_LOCAL1_MIX_LOW_SET(_gport)                    \
   2353         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2354          (((_SHR_GPORT_FABRIC_CLOS_LOCAL1_MIX_LOW) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2355 
   2356 #define _SHR_COSQ_GPORT_FABRIC_CLOS_UNICAST_FABRIC_OCB_HIGH_SET(_gport)                    \
   2357         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2358          (((_SHR_GPORT_FABRIC_CLOS_UNICAST_FABRIC_OCB_HIGH) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2359 
   2360 #define _SHR_COSQ_GPORT_FABRIC_CLOS_UNICAST_FABRIC_OCB_LOW_SET(_gport)                    \
   2361         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2362          (((_SHR_GPORT_FABRIC_CLOS_UNICAST_FABRIC_OCB_LOW) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2363 
   2364 #define _SHR_COSQ_GPORT_FABRIC_CLOS_UNICAST_FABRIC_MIX_HIGH_SET(_gport)                    \
   2365         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2366          (((_SHR_GPORT_FABRIC_CLOS_UNICAST_FABRIC_MIX_HIGH) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2367 
   2368 #define _SHR_COSQ_GPORT_FABRIC_CLOS_UNICAST_FABRIC_MIX_LOW_SET(_gport)                    \
   2369         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2370          (((_SHR_GPORT_FABRIC_CLOS_UNICAST_FABRIC_MIX_LOW) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2371 
   2372 #define _SHR_COSQ_GPORT_FABRIC_CLOS_FMQ_GUARANTEED_OCB_SET(_gport)                    \
   2373         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2374          (((_SHR_GPORT_FABRIC_CLOS_FMQ_GUARANTEED_OCB) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2375 
   2376 #define _SHR_COSQ_GPORT_FABRIC_CLOS_FMQ_BEST_EFFORT_OCB_SET(_gport)                    \
   2377         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2378          (((_SHR_GPORT_FABRIC_CLOS_FMQ_BEST_EFFORT_OCB) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2379 
   2380 #define _SHR_COSQ_GPORT_FABRIC_CLOS_FMQ_GUARANTEED_MIX_SET(_gport)                    \
   2381         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2382          (((_SHR_GPORT_FABRIC_CLOS_FMQ_GUARANTEED_MIX) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2383 
   2384 #define _SHR_COSQ_GPORT_FABRIC_CLOS_FMQ_BEST_EFFORT_MIX_SET(_gport)                    \
   2385         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2386          (((_SHR_GPORT_FABRIC_CLOS_FMQ_BEST_EFFORT_MIX) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2387 
   2388 #define _SHR_COSQ_GPORT_FABRIC_CLOS_LOCAL0_SET(_gport)                    \
   2389         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2390          (((_SHR_GPORT_FABRIC_CLOS_LOCAL0) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2391 
   2392 #define _SHR_COSQ_GPORT_FABRIC_CLOS_LOCAL1_SET(_gport)                    \
   2393         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2394          (((_SHR_GPORT_FABRIC_CLOS_LOCAL1) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2395 
   2396 #define _SHR_COSQ_GPORT_FABRIC_CLOS_LOCAL0_HIGH_SET(_gport)                    \
   2397         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2398          (((_SHR_GPORT_FABRIC_CLOS_LOCAL0_HIGH) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2399 
   2400 #define _SHR_COSQ_GPORT_FABRIC_CLOS_LOCAL0_LOW_SET(_gport)                    \
   2401         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2402          (((_SHR_GPORT_FABRIC_CLOS_LOCAL0_LOW) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2403 
   2404 #define _SHR_COSQ_GPORT_FABRIC_CLOS_LOCAL1_HIGH_SET(_gport)                    \
   2405         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2406          (((_SHR_GPORT_FABRIC_CLOS_LOCAL1_HIGH) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2407 
   2408 #define _SHR_COSQ_GPORT_FABRIC_CLOS_LOCAL1_LOW_SET(_gport)                    \
   2409         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2410          (((_SHR_GPORT_FABRIC_CLOS_LOCAL1_LOW) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2411 
   2412 #define _SHR_COSQ_GPORT_FABRIC_CLOS_OCB_HIGH_SET(_gport)                    \
   2413         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2414          (((_SHR_GPORT_FABRIC_CLOS_OCB_HIGH) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2415 
   2416 #define _SHR_COSQ_GPORT_FABRIC_CLOS_OCB_LOW_SET(_gport)                    \
   2417         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2418          (((_SHR_GPORT_FABRIC_CLOS_OCB_LOW) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2419 
   2420 #define _SHR_COSQ_GPORT_FABRIC_CLOS_MIX_HIGH_SET(_gport)                    \
   2421         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2422          (((_SHR_GPORT_FABRIC_CLOS_MIX_HIGH) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2423 
   2424 #define _SHR_COSQ_GPORT_FABRIC_CLOS_MIX_LOW_SET(_gport)                    \
   2425         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2426          (((_SHR_GPORT_FABRIC_CLOS_MIX_LOW) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2427 
   2428 #define _SHR_COSQ_GPORT_FABRIC_CLOS_SCOPE_SET(_gport)                    \
   2429         ((_gport) = (_SHR_GPORT_TYPE_SCHEDULER << _SHR_GPORT_TYPE_SHIFT)  |       \
   2430          (((_SHR_GPORT_FABRIC_CLOS_SCOPE) & _SHR_GPORT_SCHEDULER_MASK) << _SHR_GPORT_SCHEDULER_SHIFT))
   2431 
   2432 #define _SHR_GPORT_IS_COSQ(_gport) \
   2433         (((_gport) >> _SHR_GPORT_TYPE_SHIFT) == _SHR_GPORT_TYPE_COSQ)
   2434 
   2435 #define _SHR_COSQ_GPORT_IS_VOQ_CONNECTOR(_gport)                                       \
   2436         (_SHR_GPORT_IS_COSQ(_gport) &&                                                 \
   2437         ((((_gport) >> _SHR_COSQ_GPORT_TYPE_SHIFT) & _SHR_COSQ_GPORT_TYPE_MASK) ==     \
   2438                                                 _SHR_COSQ_GPORT_TYPE_VOQ_CONNECTOR))
   2439 
   2440 #define _SHR_COSQ_GPORT_IS_SRC_QUEUE(_gport)                                       \
   2441         (_SHR_GPORT_IS_COSQ(_gport) &&                                                 \
   2442         ((((_gport) >> _SHR_COSQ_GPORT_TYPE_SHIFT) & _SHR_COSQ_GPORT_TYPE_MASK) ==     \
   2443                                                 _SHR_COSQ_GPORT_TYPE_SRC_QUEUE))
   2444 
   2445 #define _SHR_COSQ_GPORT_IS_DST_QUEUE(_gport)                                       \
   2446         (_SHR_GPORT_IS_COSQ(_gport) &&                                                 \
   2447         ((((_gport) >> _SHR_COSQ_GPORT_TYPE_SHIFT) & _SHR_COSQ_GPORT_TYPE_MASK) ==     \
   2448                                                 _SHR_COSQ_GPORT_TYPE_DST_QUEUE))
   2449 
   2450 #define _SHR_COSQ_GPORT_COMPOSITE_SF2_GET(_gport)  \
   2451         (((_gport) >> _SHR_COSQ_GPORT_COMPOSITE_SF2_FLOW_SHIFT) & _SHR_COSQ_GPORT_COMPOSITE_SF2_FLOW_MASK)
   2452 
   2453 #define _SHR_COSQ_GPORT_COMPOSITE_SF2_CORE_GET(_gport)  \
   2454         (_SHR_CORE_FIELD2ID((((_gport) >> _SHR_COSQ_GPORT_COMPOSITE_SF2_CORE_SHIFT) & _SHR_COSQ_GPORT_COMPOSITE_SF2_CORE_MASK)))
   2455 
   2456 #define _SHR_COSQ_GPORT_IS_UCAST_EGRESS_QUEUE(_gport)                                  \
   2457         (_SHR_GPORT_IS_COSQ(_gport) &&                                                 \
   2458         ((((_gport) >> _SHR_COSQ_GPORT_TYPE_SHIFT) & _SHR_COSQ_GPORT_TYPE_MASK) ==     \
   2459                                                 _SHR_COSQ_GPORT_TYPE_UCAST_EGRESS_QUEUE))
   2460 #define _SHR_COSQ_GPORT_UCAST_EGRESS_QUEUE_SET(_gport, _port)                          \
   2461         ((_gport) = (_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT)   |                \
   2462          (_SHR_COSQ_GPORT_TYPE_UCAST_EGRESS_QUEUE << _SHR_COSQ_GPORT_TYPE_SHIFT)   |   \
   2463          (((_port) & _SHR_COSQ_GPORT_UCAST_EGRESS_QUEUE_PORT_MASK)  << _SHR_COSQ_GPORT_UCAST_EGRESS_QUEUE_PORT_SHIFT))
   2464 
   2465 #define _SHR_COSQ_GPORT_UCAST_EGRESS_QUEUE_GET(_gport)  \
   2466         (((_gport) >> _SHR_COSQ_GPORT_UCAST_EGRESS_QUEUE_PORT_SHIFT) & _SHR_COSQ_GPORT_UCAST_EGRESS_QUEUE_PORT_MASK)
   2467 
   2468 #define _SHR_COSQ_GPORT_IS_MCAST_EGRESS_QUEUE(_gport)                                  \
   2469         (_SHR_GPORT_IS_COSQ(_gport) &&                                                 \
   2470         ((((_gport) >> _SHR_COSQ_GPORT_TYPE_SHIFT) & _SHR_COSQ_GPORT_TYPE_MASK) ==     \
   2471                                                 _SHR_COSQ_GPORT_TYPE_MCAST_EGRESS_QUEUE))
   2472 #define _SHR_COSQ_GPORT_MCAST_EGRESS_QUEUE_SET(_gport, _port)                          \
   2473         ((_gport) = (_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT)   |                \
   2474          (_SHR_COSQ_GPORT_TYPE_MCAST_EGRESS_QUEUE << _SHR_COSQ_GPORT_TYPE_SHIFT)   |   \
   2475          (((_port) & _SHR_COSQ_GPORT_MCAST_EGRESS_QUEUE_PORT_MASK)  << _SHR_COSQ_GPORT_MCAST_EGRESS_QUEUE_PORT_SHIFT))
   2476 
   2477 #define _SHR_COSQ_GPORT_MCAST_EGRESS_QUEUE_GET(_gport)  \
   2478         (((_gport) >> _SHR_COSQ_GPORT_MCAST_EGRESS_QUEUE_PORT_SHIFT) & _SHR_COSQ_GPORT_MCAST_EGRESS_QUEUE_PORT_MASK)
   2479 
   2480 #define _SHR_COSQ_GPORT_IS_E2E_PORT(_gport)                                            \
   2481         (_SHR_GPORT_IS_COSQ(_gport) &&                                                 \
   2482         ((((_gport) >> _SHR_COSQ_GPORT_TYPE_SHIFT) & _SHR_COSQ_GPORT_TYPE_MASK) ==     \
   2483                                                 _SHR_COSQ_GPORT_TYPE_E2E_PORT))
   2484 
   2485 #define _SHR_COSQ_GPORT_E2E_PORT_SET(_gport, _port)                                       \
   2486         ((_gport) = (_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT)   |                   \
   2487          (_SHR_COSQ_GPORT_TYPE_E2E_PORT << _SHR_COSQ_GPORT_TYPE_SHIFT)   |                \
   2488          (((_port) & _SHR_COSQ_GPORT_E2E_PORT_MASK)  << _SHR_COSQ_GPORT_E2E_PORT_SHIFT))
   2489 
   2490 #define _SHR_COSQ_GPORT_E2E_PORT_GET(_gport)  \
   2491         (((_gport) >> _SHR_COSQ_GPORT_E2E_PORT_SHIFT) & _SHR_COSQ_GPORT_E2E_PORT_MASK)
   2492 
   2493 #define _SHR_COSQ_GPORT_IS_ISQ(_gport)                                                 \
   2494         (_SHR_GPORT_IS_COSQ(_gport) &&                                                 \
   2495         ((((_gport) >> _SHR_COSQ_GPORT_TYPE_SHIFT) & _SHR_COSQ_GPORT_TYPE_MASK) ==     \
   2496                                                 _SHR_COSQ_GPORT_TYPE_ISQ))
   2497 #define _SHR_COSQ_GPORT_ISQ_SET(_gport, _qid) \
   2498         ((_gport) = (_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT) | \
   2499          (_SHR_COSQ_GPORT_TYPE_ISQ << _SHR_COSQ_GPORT_TYPE_SHIFT) | \
   2500          (_SHR_COSQ_GPORT_COMMON_ALL_CORES_VALUE << _SHR_COSQ_GPORT_COMMON_CORE_SHIFT) | \
   2501          (((_qid) & _SHR_COSQ_GPORT_ISQ_QID_MASK) << _SHR_COSQ_GPORT_ISQ_QID_SHIFT))
   2502 #define _SHR_COSQ_GPORT_ISQ_CORE_QUEUE_SET(_gport, _core, _qid) \
   2503         ((_gport) = (_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT) | \
   2504          (_SHR_COSQ_GPORT_TYPE_ISQ << _SHR_COSQ_GPORT_TYPE_SHIFT) | \
   2505          (_SHR_CORE_ID2FIELD(_core) << _SHR_COSQ_GPORT_COMMON_CORE_SHIFT) | \
   2506          (((_qid) & _SHR_COSQ_GPORT_ISQ_QID_MASK) << _SHR_COSQ_GPORT_ISQ_QID_SHIFT))
   2507 #define _SHR_COSQ_GPORT_ISQ_CORE_GET(_gport) \
   2508         _SHR_CORE_FIELD2ID(((_gport) >> _SHR_COSQ_GPORT_COMMON_CORE_SHIFT) & _SHR_COSQ_GPORT_COMMON_CORE_MASK)
   2509 
   2510 #define _SHR_COSQ_GPORT_ISQ_QID_GET(_gport)                                            \
   2511         (((_gport) >> _SHR_COSQ_GPORT_ISQ_QID_SHIFT) & _SHR_COSQ_GPORT_ISQ_QID_MASK)
   2512 
   2513 #define _SHR_COSQ_GPORT_IS_MULTIPATH(_gport)  \
   2514         (_SHR_GPORT_IS_COSQ(_gport) &&    \
   2515         ((((_gport) >> _SHR_COSQ_GPORT_TYPE_SHIFT) & _SHR_COSQ_GPORT_TYPE_MASK) ==     \
   2516                                                 _SHR_COSQ_GPORT_TYPE_MULTIPATH))
   2517 
   2518 #define _SHR_COSQ_GPORT_MULTIPATH_GET(_gport)  \
   2519         (((_gport) >> _SHR_COSQ_GPORT_MULTIPATH_SHIFT) & _SHR_COSQ_GPORT_MULTIPATH_MASK)
   2520 
   2521 #define _SHR_COSQ_GPORT_MULTIPATH_SET(_gport, _id)            \
   2522         ((_gport) = (_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT)   |                \
   2523          (_SHR_COSQ_GPORT_TYPE_MULTIPATH << _SHR_COSQ_GPORT_TYPE_SHIFT)   |            \
   2524          (((_id) & _SHR_COSQ_GPORT_MULTIPATH_MASK) << _SHR_COSQ_GPORT_MULTIPATH_SHIFT))
   2525 
   2526 #define _SHR_COSQ_GPORT_ATTACH_ID_SET(_attach_id,_fcd,_sysport)		               \
   2527   ((_attach_id) =                                                                      \
   2528    ((((_fcd) & _SHR_COSQ_GPORT_ATTACH_ID_FCD_MASK) << _SHR_COSQ_GPORT_ATTACH_ID_FCD_SHIFT) | \
   2529     (((_sysport) & _SHR_COSQ_GPORT_ATTACH_ID_SYSPORT_MASK) << _SHR_COSQ_GPORT_ATTACH_ID_SYSPORT_SHIFT)))
   2530 
   2531 #define _SHR_COSQ_GPORT_ATTACH_ID_SYSPORT_SET(_attach_id,_sysport)                      \
   2532         _SHR_COSQ_GPORT_ATTACH_ID_SET(_attach_id,_SHR_COSQ_GPORT_ATTACH_ID_FCD_MASK,_sysport)
   2533 
   2534 #define _SHR_COSQ_GPORT_ATTACH_ID_SYSPORT_GET(_attach_id)                               \
   2535         (((_attach_id) >> _SHR_COSQ_GPORT_ATTACH_ID_SYSPORT_SHIFT) &                    \
   2536         _SHR_COSQ_GPORT_ATTACH_ID_SYSPORT_MASK)
   2537 
   2538 #define _SHR_COSQ_GPORT_ATTACH_ID_FCD_GET(_attach_id)                                   \
   2539         (((_attach_id) >> _SHR_COSQ_GPORT_ATTACH_ID_FCD_SHIFT)     &                    \
   2540         _SHR_COSQ_GPORT_ATTACH_ID_FCD_MASK)
   2541 
   2542 #define _SHR_COSQ_GPORT_IS_COMPOSITE_SF2(_gport) \
   2543         (_SHR_GPORT_IS_COSQ(_gport) &&                                                 \
   2544         ((((_gport) >> _SHR_COSQ_GPORT_TYPE_SHIFT) & _SHR_COSQ_GPORT_TYPE_MASK) ==     \
   2545                                                 _SHR_COSQ_GPORT_TYPE_COMPOSITE_SF2_SCHED || \
   2546         ((((_gport) >> _SHR_COSQ_GPORT_TYPE_SHIFT) & _SHR_COSQ_GPORT_TYPE_MASK) ==     \
   2547          _SHR_COSQ_GPORT_TYPE_COMPOSITE_SF2_CONN )))
   2548 
   2549 #define _SHR_COSQ_GPORT_VSQ_TYPE(_type)                                                                  \
   2550         ((_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT)   |                                             \
   2551          (_SHR_COSQ_GPORT_TYPE_VSQ << _SHR_COSQ_GPORT_TYPE_SHIFT)   |                                    \
   2552          (((_type) & _SHR_COSQ_GPORT_VSQ_TYPE_MASK)  << _SHR_COSQ_GPORT_VSQ_TYPE_SHIFT))
   2553 
   2554 #define _SHR_COSQ_GPORT_VSQ_FLAGS2TYPE(_flags) ((_flags == -1) ? -1 : _flags - 1)
   2555 #define _SHR_COSQ_GPORT_VSQ_TYPE2FLAGS(_type) ((_type == -1) ? -1 : _type + 1)
   2556 
   2557 #define _SHR_COSQ_GPORT_VSQ_SET(_gport, _flags, _type_info)                                                  \
   2558              ((_gport) = _SHR_COSQ_GPORT_VSQ_TYPE(_SHR_COSQ_GPORT_VSQ_FLAGS2TYPE(_flags)) |                  \
   2559               (((_type_info) & _SHR_COSQ_GPORT_VSQ_TYPE_INFO_MASK)  << _SHR_COSQ_GPORT_VSQ_TYPE_INFO_SHIFT));
   2560 
   2561 #define _SHR_COSQ_GPORT_IS_VSQ(_gport)                                                 \
   2562         (_SHR_GPORT_IS_COSQ(_gport) &&                                                 \
   2563         ((((_gport) >> _SHR_COSQ_GPORT_TYPE_SHIFT) & _SHR_COSQ_GPORT_TYPE_MASK) ==     \
   2564                                                 _SHR_COSQ_GPORT_TYPE_VSQ))
   2565 #define _SHR_COSQ_GPORT_VSQ_TYPE_GET(_gport)    \
   2566         (!_SHR_COSQ_GPORT_IS_VSQ(_gport) ? -1 : \
   2567         (((_gport) >> _SHR_COSQ_GPORT_VSQ_TYPE_SHIFT) & _SHR_COSQ_GPORT_VSQ_TYPE_MASK))
   2568 
   2569 #define _SHR_COSQ_GPORT_VSQ_FLAGS_GET(_gport)    \
   2570         (_SHR_COSQ_GPORT_VSQ_TYPE2FLAGS(_SHR_COSQ_GPORT_VSQ_TYPE_GET(_gport)))
   2571 
   2572 #define _SHR_COSQ_GPORT_VSQ_TYPE_INFO_GET(_gport)                                      \
   2573         (((_gport) >> _SHR_COSQ_GPORT_VSQ_TYPE_INFO_SHIFT) & _SHR_COSQ_GPORT_VSQ_TYPE_INFO_MASK)
   2574 
   2575 #define _SHR_COSQ_GPORT_VSQ_GL_SET(_gport, _core_id)  \
   2576              ((_gport) = (_SHR_COSQ_GPORT_VSQ_TYPE(_SHR_COSQ_VSQ_GL)) |                                         \
   2577                         ((_SHR_CORE_ID2FIELD(_core_id) & _SHR_VSQ_TYPE_INFO_CORE_MASK) << _SHR_VSQ_TYPE_INFO_CORE_SHIFT))
   2578 
   2579 #define _SHR_COSQ_GPORT_IS_VSQ_GL(_gport)  \
   2580              (_SHR_COSQ_GPORT_VSQ_TYPE_GET(_gport) == _SHR_COSQ_VSQ_GL)
   2581 
   2582 #define _SHR_COSQ_GPORT_VSQ_CT_SET(_gport, _core_id, _is_ocb_only, _category)                                     \
   2583              (_gport = (_SHR_COSQ_GPORT_VSQ_TYPE(_SHR_COSQ_VSQ_CT)) |                                             \
   2584                        ((_SHR_CORE_ID2FIELD(_core_id) & _SHR_VSQ_TYPE_INFO_CORE_MASK) << _SHR_VSQ_TYPE_INFO_CORE_SHIFT) |             \
   2585                        ((_category & _SHR_VSQ_TYPE_INFO_CATEGORY_MASK) << _SHR_VSQ_TYPE_INFO_CATEGORY_SHIFT)|     \
   2586                        ((_is_ocb_only & _SHR_VSQ_TYPE_INFO_OCB_ONLY_MASK) << _SHR_VSQ_TYPE_INFO_OCB_ONLY_SHIFT))
   2587 
   2588 #define _SHR_COSQ_GPORT_IS_VSQ_CT(_gport) \
   2589              (_SHR_COSQ_GPORT_VSQ_TYPE_GET(_gport) == _SHR_COSQ_VSQ_CT)
   2590 
   2591 #define _SHR_COSQ_GPORT_VSQ_CTTC_SET(_gport, _core_id, _is_ocb_only, _category, _traffic_class)                   \
   2592              (_gport = (_SHR_COSQ_GPORT_VSQ_TYPE(_SHR_COSQ_VSQ_CTTC)) |                                           \
   2593                        ((_SHR_CORE_ID2FIELD(_core_id) & _SHR_VSQ_TYPE_INFO_CORE_MASK) << _SHR_VSQ_TYPE_INFO_CORE_SHIFT) |             \
   2594                        ((_category & _SHR_VSQ_TYPE_INFO_CATEGORY_MASK) << _SHR_VSQ_TYPE_INFO_CATEGORY_SHIFT) |    \
   2595                        ((_traffic_class & _SHR_VSQ_TYPE_INFO_TC_MASK)  << _SHR_VSQ_TYPE_INFO_TC_SHIFT)       |    \
   2596                        ((_is_ocb_only & _SHR_VSQ_TYPE_INFO_OCB_ONLY_MASK) << _SHR_VSQ_TYPE_INFO_OCB_ONLY_SHIFT))
   2597 
   2598 #define _SHR_COSQ_GPORT_IS_VSQ_CTTC(_gport) \
   2599              (_SHR_COSQ_GPORT_VSQ_TYPE_GET(_gport) == _SHR_COSQ_VSQ_CTTC)
   2600 
   2601 #define _SHR_COSQ_GPORT_VSQ_CTCC_SET(_gport, _core_id, _is_ocb_only, _category, _connection_class) \
   2602              (_gport = (_SHR_COSQ_GPORT_VSQ_TYPE(_SHR_COSQ_VSQ_CTCC)) | \
   2603                        ((_SHR_CORE_ID2FIELD(_core_id) & _SHR_VSQ_TYPE_INFO_CORE_MASK) << _SHR_VSQ_TYPE_INFO_CORE_SHIFT) | \
   2604                        ((_category & _SHR_VSQ_TYPE_INFO_CATEGORY_MASK) << _SHR_VSQ_TYPE_INFO_CATEGORY_SHIFT) | \
   2605                        ((_connection_class & _SHR_VSQ_TYPE_INFO_CONNECTION_MASK)  << _SHR_VSQ_TYPE_INFO_CONNECTION_SHIFT) | \
   2606                        ((_is_ocb_only & _SHR_VSQ_TYPE_INFO_OCB_ONLY_MASK) << _SHR_VSQ_TYPE_INFO_OCB_ONLY_SHIFT))
   2607 
   2608 #define _SHR_COSQ_GPORT_IS_VSQ_CTCC(_gport) \
   2609              (_SHR_COSQ_GPORT_VSQ_TYPE_GET(_gport) == _SHR_COSQ_VSQ_CTCC)
   2610 
   2611 #define _SHR_COSQ_GPORT_VSQ_PP_SET(_gport, _core_id, _is_ocb_only, _statistics_tag) \
   2612              (_gport = (_SHR_COSQ_GPORT_VSQ_TYPE(_SHR_COSQ_VSQ_PP)) |                                           \
   2613                        ((_is_ocb_only & _SHR_VSQ_TYPE_INFO_OCB_ONLY_MASK) << _SHR_VSQ_TYPE_INFO_OCB_ONLY_SHIFT) | \
   2614                        ((_SHR_CORE_ID2FIELD(_core_id) & _SHR_VSQ_TYPE_INFO_CORE_MASK) << _SHR_VSQ_TYPE_INFO_CORE_SHIFT) |\
   2615                        ((_statistics_tag & _SHR_VSQ_TYPE_INFO_STATISTICS_TAG_MASK)  << _SHR_VSQ_TYPE_INFO_STATISTICS_TAG_SHIFT))
   2616 
   2617 #define _SHR_COSQ_GPORT_IS_VSQ_PP(_gport) \
   2618              (_SHR_COSQ_GPORT_VSQ_TYPE_GET(_gport) == _SHR_COSQ_VSQ_PP)
   2619 
   2620 #define _SHR_COSQ_GPORT_VSQ_SRC_PORT_SET(_gport, _core_id, _is_ocb_only, _src_port_vsq_id) \
   2621              (_gport = (_SHR_COSQ_GPORT_VSQ_TYPE(_SHR_COSQ_VSQ_SRC_PORT)) |  \
   2622                        ((_src_port_vsq_id & _SHR_VSQ_TYPE_INFO_SRC_PORT_MASK) << _SHR_VSQ_TYPE_INFO_SRC_PORT_SHIFT) | \
   2623                        ((_is_ocb_only & _SHR_VSQ_TYPE_INFO_OCB_ONLY_MASK) << _SHR_VSQ_TYPE_INFO_OCB_ONLY_SHIFT) | \
   2624                        ((_SHR_CORE_ID2FIELD(_core_id) & _SHR_VSQ_TYPE_INFO_CORE_MASK) << _SHR_VSQ_TYPE_INFO_CORE_SHIFT))
   2625 
   2626 #define _SHR_COSQ_GPORT_IS_VSQ_SRC_PORT(_gport) \
   2627              (_SHR_COSQ_GPORT_VSQ_TYPE_GET(_gport) == _SHR_COSQ_VSQ_SRC_PORT)
   2628 
   2629 #define _SHR_COSQ_GPORT_VSQ_PG_SET(_gport, _core_id, _pg_vsq_id) \
   2630              (_gport = (_SHR_COSQ_GPORT_VSQ_TYPE(_SHR_COSQ_VSQ_PG)) | \
   2631                        ((_SHR_CORE_ID2FIELD(_core_id) & _SHR_VSQ_TYPE_INFO_CORE_MASK) << _SHR_VSQ_TYPE_INFO_CORE_SHIFT) | \
   2632                        ((_pg_vsq_id & _SHR_VSQ_TYPE_INFO_SRC_PORT_MASK) << _SHR_VSQ_TYPE_INFO_SRC_PORT_SHIFT))
   2633 
   2634 #define _SHR_COSQ_GPORT_IS_VSQ_PG(_gport) \
   2635              (_SHR_COSQ_GPORT_VSQ_TYPE_GET(_gport) == _SHR_COSQ_VSQ_PG)
   2636 
   2637 #define _SHR_COSQ_GPORT_VSQ_CT_GET(_gport)  \
   2638              (!(_SHR_COSQ_GPORT_IS_VSQ_CT(_gport) ||_SHR_COSQ_GPORT_IS_VSQ_CTTC(_gport) || _SHR_COSQ_GPORT_IS_VSQ_CTCC(_gport)) ? - 1 : \
   2639              (((_gport) >> _SHR_VSQ_TYPE_INFO_CATEGORY_SHIFT) & _SHR_VSQ_TYPE_INFO_CATEGORY_MASK))
   2640 
   2641 #define _SHR_COSQ_GPORT_VSQ_TC_GET(_gport) \
   2642              (!(_SHR_COSQ_GPORT_IS_VSQ_CTTC(_gport) || _SHR_COSQ_GPORT_IS_VSQ_SRC_PORT(_gport)) ? - 1 : \
   2643              (((_gport) >> _SHR_VSQ_TYPE_INFO_TC_SHIFT) & _SHR_VSQ_TYPE_INFO_TC_MASK))
   2644 
   2645 #define _SHR_COSQ_GPORT_VSQ_CC_GET(_gport) \
   2646              (!_SHR_COSQ_GPORT_IS_VSQ_CTCC(_gport) ? - 1 : \
   2647              (((_gport) >> _SHR_VSQ_TYPE_INFO_CONNECTION_SHIFT) & _SHR_VSQ_TYPE_INFO_CONNECTION_MASK))
   2648 
   2649 #define _SHR_COSQ_GPORT_VSQ_PP_GET(_gport) \
   2650              (!_SHR_COSQ_GPORT_IS_VSQ_PP(_gport) ? - 1 : \
   2651              (((_gport) >> _SHR_VSQ_TYPE_INFO_STATISTICS_TAG_SHIFT) & _SHR_VSQ_TYPE_INFO_STATISTICS_TAG_MASK))
   2652 
   2653 #define _SHR_COSQ_GPORT_VSQ_CORE_ID_GET(_gport) \
   2654              (!(_SHR_COSQ_GPORT_IS_VSQ(_gport)) ? - 1 : (_SHR_CORE_FIELD2ID((((_gport) >> _SHR_VSQ_TYPE_INFO_CORE_SHIFT)) & _SHR_VSQ_TYPE_INFO_CORE_MASK)))
   2655 
   2656 #define _SHR_COSQ_GPORT_VSQ_IS_OCB_ONLY(_gport)            \
   2657              (!(_SHR_COSQ_GPORT_IS_VSQ_CT(_gport) ||       \
   2658                 _SHR_COSQ_GPORT_IS_VSQ_CTTC(_gport) ||     \
   2659                 _SHR_COSQ_GPORT_IS_VSQ_CTCC(_gport) ||     \
   2660                 _SHR_COSQ_GPORT_IS_VSQ_PP(_gport) ||       \
   2661                 _SHR_COSQ_GPORT_IS_VSQ_SRC_PORT(_gport)) ? \
   2662                 - 1 : (((_gport) >> _SHR_VSQ_TYPE_INFO_OCB_ONLY_SHIFT) & _SHR_VSQ_TYPE_INFO_OCB_ONLY_MASK))
   2663 
   2664 #define _SHR_COSQ_GPORT_VSQ_SRC_PORT_GET(_gport) \
   2665              (!_SHR_COSQ_GPORT_IS_VSQ_SRC_PORT(_gport) ? - 1 : \
   2666              (((_gport) >> _SHR_VSQ_TYPE_INFO_SRC_PORT_SHIFT) & _SHR_VSQ_TYPE_INFO_SRC_PORT_MASK))
   2667 
   2668 #define _SHR_COSQ_GPORT_VSQ_PG_GET(_gport) \
   2669              (!_SHR_COSQ_GPORT_IS_VSQ_PG(_gport) ? - 1 : \
   2670              (((_gport) >> _SHR_VSQ_TYPE_INFO_SRC_PORT_SHIFT) & _SHR_VSQ_TYPE_INFO_SRC_PORT_MASK))
   2671 
   2672 
   2673 #define _SHR_COSQ_GPORT_IS_INBAND_COE(_gport)                                  \
   2674         (_SHR_GPORT_IS_COSQ(_gport) &&                                                 \
   2675         ((((_gport) >> _SHR_COSQ_GPORT_TYPE_SHIFT) & _SHR_COSQ_GPORT_TYPE_MASK) ==     \
   2676                                                 _SHR_COSQ_GPORT_TYPE_INBAND_COE))
   2677 #define _SHR_COSQ_GPORT_INBAND_COE_SET(_gport, _port)                          \
   2678         ((_gport) = (_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT)   |          \
   2679          (_SHR_COSQ_GPORT_TYPE_INBAND_COE << _SHR_COSQ_GPORT_TYPE_SHIFT)   |   \
   2680          (((_port) & _SHR_COSQ_GPORT_INBAND_COE_MASK)  << _SHR_COSQ_GPORT_INBAND_COE_SHIFT))
   2681 
   2682 #define _SHR_COSQ_GPORT_INBAND_COE_GET(_gport)  \
   2683         (((_gport) >> _SHR_COSQ_GPORT_INBAND_COE_SHIFT) & _SHR_COSQ_GPORT_INBAND_COE_MASK)
   2684 
   2685 /*Lecacy VSQ Macros - compatible to the new onces*/
   2686 #define _SHR_COSQ_VSQ_TYPE_INFO_GROUPA_SET(_type_info, _category)                      \
   2687         ((_type_info) = _category)
   2688 #define _SHR_COSQ_VSQ_TYPE_INFO_GROUPA_CATEGORY_GET(_type_info)                        \
   2689         ((_type_info))
   2690 #define _SHR_COSQ_VSQ_TYPE_INFO_GROUPB_SET(_type_info, _category, _tc)                 \
   2691         ((_type_info) = (((_category & _SHR_VSQ_TYPE_INFO_CATEGORY_MASK) << _SHR_VSQ_TYPE_INFO_CATEGORY_SHIFT) | ((_tc & _SHR_VSQ_TYPE_INFO_TC_MASK) << _SHR_VSQ_TYPE_INFO_TC_SHIFT)))
   2692 #define _SHR_COSQ_VSQ_TYPE_INFO_GROUPB_CATEGORY_GET(_type_info)                        \
   2693         (((_type_info) >> _SHR_VSQ_TYPE_INFO_CATEGORY_SHIFT) & _SHR_VSQ_TYPE_INFO_CATEGORY_MASK)
   2694 #define _SHR_COSQ_VSQ_TYPE_INFO_GROUPB_TC_GET(_type_info)                              \
   2695         (((_type_info) >> _SHR_VSQ_TYPE_INFO_TC_SHIFT) & _SHR_VSQ_TYPE_INFO_TC_MASK)
   2696 #define _SHR_COSQ_VSQ_TYPE_INFO_GROUPC_SET(_type_info, _category, _connection)         \
   2697         ((_type_info) = (((_category & _SHR_VSQ_TYPE_INFO_CATEGORY_MASK) << _SHR_VSQ_TYPE_INFO_CATEGORY_SHIFT) | ((_connection & _SHR_VSQ_TYPE_INFO_CONNECTION_MASK) << _SHR_VSQ_TYPE_INFO_CONNECTION_SHIFT)))
   2698 #define _SHR_COSQ_VSQ_TYPE_INFO_GROUPC_CATEGORY_GET(_type_info)                        \
   2699         (((_type_info) >> _SHR_VSQ_TYPE_INFO_CATEGORY_SHIFT) & _SHR_VSQ_TYPE_INFO_CATEGORY_MASK)
   2700 #define _SHR_COSQ_VSQ_TYPE_INFO_GROUPC_CONNECTION_GET(_type_info)                      \
   2701         (((_type_info) >> _SHR_VSQ_TYPE_INFO_CONNECTION_SHIFT) & _SHR_VSQ_TYPE_INFO_CONNECTION_MASK)
   2702 #define _SHR_COSQ_VSQ_TYPE_INFO_GROUPD_SET(_type_info, _statistics_tag)                \
   2703         ((_type_info) = _statistics_tag)
   2704 #define _SHR_COSQ_VSQ_TYPE_INFO_GROUPD_STATISTICS_TAG_GET(_type_info)                  \
   2705         ((_type_info))
   2706 #define _SHR_COSQ_VSQ_TYPE_INFO_GROUPE_SET(_type_info, _src_port, _tc)         \
   2707         ((_type_info) = (((_src_port & _SHR_VSQ_TYPE_INFO_SRC_PORT_MASK) << _SHR_VSQ_TYPE_INFO_SRC_PORT_SHIFT) | ((_tc & _SHR_VSQ_TYPE_INFO_TC_MASK) << _SHR_VSQ_TYPE_INFO_TC_SHIFT)))
   2708 #define _SHR_COSQ_VSQ_TYPE_INFO_GROUPE_SRC_PORT_GET(_type_info)                        \
   2709         (((_type_info) >> _SHR_VSQ_TYPE_INFO_SRC_PORT_SHIFT) & _SHR_VSQ_TYPE_INFO_SRC_PORT_MASK)
   2710 #define _SHR_COSQ_VSQ_TYPE_INFO_GROUPE_TC_GET(_type_info)                      \
   2711         (((_type_info) >> _SHR_VSQ_TYPE_INFO_TC_SHIFT) & _SHR_VSQ_TYPE_INFO_TC_MASK)
   2712 #define _SHR_COSQ_VSQ_TYPE_INFO_GROUPF_SET(_type_info, _src_port)         \
   2713         ((_type_info) = (((_src_port & _SHR_VSQ_TYPE_INFO_SRC_PORT_MASK) << _SHR_VSQ_TYPE_INFO_SRC_PORT_SHIFT)))
   2714 #define _SHR_COSQ_VSQ_TYPE_INFO_GROUPF_SRC_PORT_GET(_type_info)                        \
   2715         (((_type_info) >> _SHR_VSQ_TYPE_INFO_SRC_PORT_SHIFT) & _SHR_VSQ_TYPE_INFO_SRC_PORT_MASK)
   2716 
   2717 #define _SHR_GPORT_IS_EPON_LINK(_gport)    \
   2718         ((((_gport) >> _SHR_GPORT_TYPE_SHIFT) & _SHR_GPORT_TYPE_MASK) == \
   2719                                                 _SHR_GPORT_TYPE_EPON_LINK)
   2720 #define _SHR_GPORT_EPON_LINK_SET(_gport, _num)                                      \
   2721         ((_gport) = (_SHR_GPORT_TYPE_EPON_LINK << _SHR_GPORT_TYPE_SHIFT)  |         \
   2722          (((_num) & _SHR_GPORT_EPON_LINK_NUM_MASK) << _SHR_GPORT_EPON_LINK_NUM_SHIFT))
   2723 #define _SHR_GPORT_EPON_LINK_GET(_gport)   \
   2724         (((_gport) >> _SHR_GPORT_EPON_LINK_SHIFT) & _SHR_GPORT_EPON_LINK_MASK)
   2725 
   2726 #define _SHR_COSQ_GPORT_VOQ_CONNECTOR_CORE_SET(_gport, _cid, _core_id)             \
   2727     ((_gport) = (_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT)   |                \
   2728          (_SHR_COSQ_GPORT_TYPE_VOQ_CONNECTOR << _SHR_COSQ_GPORT_TYPE_SHIFT)   |        \
   2729          (((_cid) & _SHR_COSQ_GPORT_VOQ_CONNECTOR_ID_MASK)  << _SHR_COSQ_GPORT_VOQ_CONNECTOR_ID_SHIFT) | \
   2730          (((_SHR_CORE_ID2FIELD(_core_id)) & _SHR_GPORT_VOQ_CONNECTOR_CORE_MASK) << _SHR_GPORT_VOQ_CONNECTOR_CORE_SHIFT) )
   2731 
   2732 #define _SHR_COSQ_GPORT_VOQ_CONNECTOR_SET(_gport, _cid)                            \
   2733         _SHR_COSQ_GPORT_VOQ_CONNECTOR_CORE_SET(_gport, _cid, _SHR_CORE_ALL)
   2734 
   2735 #define _SHR_COSQ_GPORT_VOQ_CONNECTOR_ID_GET(_gport)                                   \
   2736         (((_gport) >> _SHR_COSQ_GPORT_VOQ_CONNECTOR_ID_SHIFT) & _SHR_COSQ_GPORT_VOQ_CONNECTOR_ID_MASK)
   2737 
   2738 #define  _SHR_COSQ_GPORT_VOQ_CONNECTOR_CORE_GET(_gport) \
   2739         _SHR_CORE_FIELD2ID((((_gport) >> _SHR_GPORT_VOQ_CONNECTOR_CORE_SHIFT) & _SHR_GPORT_VOQ_CONNECTOR_CORE_MASK))
   2740 
   2741 #define _SHR_COSQ_GPORT_SRC_QUEUE_SET(_gport, _qid)                                \
   2742         ((_gport) = (_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT)   |            \
   2743          (_SHR_COSQ_GPORT_TYPE_SRC_QUEUE << _SHR_COSQ_GPORT_TYPE_SHIFT)   |        \
   2744          (((_qid) & _SHR_COSQ_GPORT_SRC_QUEUE_MASK)  << _SHR_COSQ_GPORT_SRC_QUEUE_SHIFT))
   2745 
   2746 #define _SHR_COSQ_GPORT_SRC_QUEUE_GET(_gport)                                   \
   2747         (((_gport) >> _SHR_COSQ_GPORT_SRC_QUEUE_SHIFT) & _SHR_COSQ_GPORT_SRC_QUEUE_MASK)
   2748 
   2749 #define _SHR_COSQ_GPORT_DST_QUEUE_SET(_gport, _qid)                                \
   2750         ((_gport) = (_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT)   |            \
   2751          (_SHR_COSQ_GPORT_TYPE_DST_QUEUE << _SHR_COSQ_GPORT_TYPE_SHIFT)   |        \
   2752          (((_qid) & _SHR_COSQ_GPORT_DST_QUEUE_MASK)  << _SHR_COSQ_GPORT_DST_QUEUE_SHIFT))
   2753 
   2754 #define _SHR_COSQ_GPORT_DST_QUEUE_GET(_gport)                                   \
   2755         (((_gport) >> _SHR_COSQ_GPORT_DST_QUEUE_SHIFT) & _SHR_COSQ_GPORT_DST_QUEUE_MASK)
   2756 
   2757 #define _SHR_COSQ_GPORT_RESERVED_TYPE_GET(_gport) \
   2758     (((((_gport) >> _SHR_COSQ_GPORT_TYPE_SHIFT) & _SHR_COSQ_GPORT_TYPE_MASK) == _SHR_COSQ_GPORT_TYPE_COMPOSITE_SF2_CONN) ? \
   2759      _SHR_COSQ_GPORT_RESERVED_VOQ_CONNECTOR : _SHR_COSQ_GPORT_RESERVED_SCHEDULER)
   2760 
   2761 #define _SHR_COSQ_GPORT_COMPOSITE_SF2_SET(_gport_sf2, gport) \
   2762   _SHR_COSQ_GPORT_COMPOSITE_SF2_CORE_SET(_gport_sf2, gport, _SHR_CORE_ALL)
   2763 
   2764 #define _SHR_COSQ_GPORT_COMPOSITE_SF2_CORE_SET(_gport_sf2, gport, _core_id) \
   2765     if (_SHR_GPORT_IS_SCHEDULER(gport))  { \
   2766         (_gport_sf2) = ((_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT) |                                       \
   2767                         (_SHR_COSQ_GPORT_TYPE_COMPOSITE_SF2_SCHED << _SHR_COSQ_GPORT_TYPE_SHIFT) |                    \
   2768                         ((_SHR_GPORT_SCHEDULER_GET(gport)) & _SHR_COSQ_GPORT_COMPOSITE_SF2_FLOW_MASK) | \
   2769                         (((_SHR_CORE_ID2FIELD(_core_id)) & _SHR_COSQ_GPORT_COMPOSITE_SF2_CORE_MASK) << _SHR_COSQ_GPORT_COMPOSITE_SF2_CORE_SHIFT) ) ;        \
   2770     } else if (_SHR_COSQ_GPORT_IS_VOQ_CONNECTOR(gport)) {      \
   2771              (_gport_sf2) = ((_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT) |                                       \
   2772                           (_SHR_COSQ_GPORT_TYPE_COMPOSITE_SF2_CONN << _SHR_COSQ_GPORT_TYPE_SHIFT) |                       \
   2773                           (_SHR_COSQ_GPORT_VOQ_CONNECTOR_ID_GET(gport) & _SHR_COSQ_GPORT_COMPOSITE_SF2_FLOW_MASK) | \
   2774                           (((_SHR_CORE_ID2FIELD(_core_id)) & _SHR_COSQ_GPORT_COMPOSITE_SF2_CORE_MASK) << _SHR_COSQ_GPORT_COMPOSITE_SF2_CORE_SHIFT) ) ;        \
   2775     }
   2776 
   2777 #define _SHR_COSQ_GPORT_IS_SHARED_SHAPER_ELEM(_gport)                                  \
   2778         (_SHR_GPORT_IS_COSQ(_gport) &&                                                 \
   2779         ((((_gport) >> _SHR_COSQ_GPORT_TYPE_SHIFT) & _SHR_COSQ_GPORT_TYPE_MASK) ==     \
   2780                                                 _SHR_COSQ_GPORT_TYPE_SHARED_SHAPER_ELEM))
   2781 
   2782 #define _SHR_COSQ_GPORT_SHARED_SHAPER_ELEM_SET(_gport, _sched_gport, _core_id)              \
   2783         ((_gport) = (_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT)   |           \
   2784          (_SHR_COSQ_GPORT_TYPE_SHARED_SHAPER_ELEM << _SHR_COSQ_GPORT_TYPE_SHIFT)   |           \
   2785          ( ((_SHR_GPORT_SCHEDULER_GET(_sched_gport)) & _SHR_COSQ_GPORT_SHARED_SHAPER_ELEM_FLOW_MASK)  << _SHR_COSQ_GPORT_SHARED_SHAPER_ELEM_FLOW_SHIFT) | \
   2786          (((_SHR_CORE_ID2FIELD(_core_id)) & _SHR_COSQ_GPORT_SHARED_SHAPER_ELEM_CORE_MASK) << _SHR_COSQ_GPORT_SHARED_SHAPER_ELEM_CORE_SHIFT) )
   2787 
   2788 #define _SHR_COSQ_GPORT_SHARED_SHAPER_ELEM_FLOW_GET(_gport)                                         \
   2789         (((_gport) >> _SHR_COSQ_GPORT_SHARED_SHAPER_ELEM_FLOW_SHIFT) & _SHR_COSQ_GPORT_SHARED_SHAPER_ELEM_FLOW_MASK)
   2790 
   2791 #define  _SHR_COSQ_GPORT_SHARED_SHAPER_ELEM_CORE_GET(_gport) \
   2792         _SHR_CORE_FIELD2ID((((_gport) >> _SHR_COSQ_GPORT_SHARED_SHAPER_ELEM_CORE_SHIFT) & _SHR_COSQ_GPORT_SHARED_SHAPER_ELEM_CORE_MASK))
   2793 
   2794 
   2795 #define _SHR_COSQ_GPORT_IS_SCHED_CIR(_gport)                                           \
   2796         (_SHR_GPORT_IS_COSQ(_gport) &&                                                 \
   2797         ((((_gport) >> _SHR_COSQ_GPORT_TYPE_SHIFT) & _SHR_COSQ_GPORT_TYPE_MASK) ==     \
   2798                                                 _SHR_COSQ_GPORT_TYPE_SCHED_CIR))
   2799 
   2800 #define _SHR_COSQ_GPORT_IS_SCHED_PIR(_gport)                                           \
   2801         (_SHR_GPORT_IS_COSQ(_gport) &&                                                 \
   2802         ((((_gport) >> _SHR_COSQ_GPORT_TYPE_SHIFT) & _SHR_COSQ_GPORT_TYPE_MASK) ==     \
   2803                                                 _SHR_COSQ_GPORT_TYPE_SCHED_PIR))
   2804 
   2805 
   2806 #define _SHR_COSQ_GPORT_SCHED_CIR_CORE_SET(_gport_cir, _gport, _core_id)              \
   2807         ((_gport_cir) = (_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT)   |           \
   2808          (_SHR_COSQ_GPORT_TYPE_SCHED_CIR << _SHR_COSQ_GPORT_TYPE_SHIFT)   |           \
   2809          ( ((_SHR_GPORT_SCHEDULER_GET(_gport)) & _SHR_COSQ_GPORT_SCHED_CIR_MASK)  << _SHR_COSQ_GPORT_SCHED_CIR_SHIFT) | \
   2810          (((_SHR_CORE_ID2FIELD(_core_id)) & _SHR_COSQ_GPORT_SCHED_CIR_CORE_MASK) << _SHR_COSQ_GPORT_SCHED_CIR_CORE_SHIFT) )
   2811 
   2812 #define _SHR_COSQ_GPORT_SCHED_CIR_SET(_gport_cir, _gport)              \
   2813         _SHR_COSQ_GPORT_SCHED_CIR_CORE_SET(_gport_cir, _gport, _SHR_CORE_ALL)
   2814 
   2815 #define _SHR_COSQ_GPORT_SCHED_CIR_GET(_gport)                                         \
   2816         (((_gport) >> _SHR_COSQ_GPORT_SCHED_CIR_SHIFT) & _SHR_COSQ_GPORT_SCHED_CIR_MASK)
   2817 
   2818 #define  _SHR_COSQ_GPORT_SCHED_CIR_CORE_GET(_gport) \
   2819         _SHR_CORE_FIELD2ID((((_gport) >> _SHR_COSQ_GPORT_SCHED_CIR_CORE_SHIFT) & _SHR_COSQ_GPORT_SCHED_CIR_CORE_MASK))
   2820 
   2821 
   2822 #define _SHR_COSQ_GPORT_SCHED_PIR_CORE_SET(_gport_pir, _gport, _core_id)              \
   2823         ((_gport_pir) = (_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT)   |           \
   2824          (_SHR_COSQ_GPORT_TYPE_SCHED_PIR << _SHR_COSQ_GPORT_TYPE_SHIFT)   |           \
   2825          ( ((_SHR_GPORT_SCHEDULER_GET(_gport)) & _SHR_COSQ_GPORT_SCHED_PIR_MASK)  << _SHR_COSQ_GPORT_SCHED_PIR_SHIFT) | \
   2826          (((_SHR_CORE_ID2FIELD(_core_id)) & _SHR_COSQ_GPORT_SCHED_PIR_CORE_MASK) << _SHR_COSQ_GPORT_SCHED_PIR_CORE_SHIFT) )
   2827 
   2828 #define _SHR_COSQ_GPORT_SCHED_PIR_SET(_gport_cir, _gport)              \
   2829         _SHR_COSQ_GPORT_SCHED_PIR_CORE_SET(_gport_cir, _gport, _SHR_CORE_ALL)
   2830 
   2831 #define _SHR_COSQ_GPORT_SCHED_PIR_GET(_gport)                                         \
   2832         (((_gport) >> _SHR_COSQ_GPORT_SCHED_PIR_SHIFT) & _SHR_COSQ_GPORT_SCHED_PIR_MASK)
   2833 
   2834 #define  _SHR_COSQ_GPORT_SCHED_PIR_CORE_GET(_gport) \
   2835     _SHR_CORE_FIELD2ID((((_gport) >> _SHR_COSQ_GPORT_SCHED_PIR_CORE_SHIFT) & _SHR_COSQ_GPORT_SCHED_PIR_CORE_MASK))
   2836 
   2837 #define _SHR_COSQ_GPORT_IS_PORT_TC(_gport)                                             \
   2838         (_SHR_GPORT_IS_COSQ(_gport) &&                                                 \
   2839         ((((_gport) >> _SHR_COSQ_GPORT_TYPE_SHIFT) & _SHR_COSQ_GPORT_TYPE_MASK) ==     \
   2840                                                 _SHR_COSQ_GPORT_TYPE_PORT_TC))
   2841 
   2842 #define _SHR_COSQ_GPORT_PORT_TC_SET(_gport, _port)                                     \
   2843         ((_gport) = (_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT)   |                \
   2844          (_SHR_COSQ_GPORT_TYPE_PORT_TC << _SHR_COSQ_GPORT_TYPE_SHIFT)   |              \
   2845          (((_port) & _SHR_COSQ_GPORT_PORT_TC_MASK)  << _SHR_COSQ_GPORT_PORT_TC_SHIFT))
   2846 
   2847 #define _SHR_COSQ_GPORT_PORT_TC_GET(_gport)                                            \
   2848         (((_gport) >> _SHR_COSQ_GPORT_PORT_TC_SHIFT) & _SHR_COSQ_GPORT_PORT_TC_MASK)
   2849 
   2850 #define _SHR_COSQ_GPORT_IS_PORT_TCG(_gport)                                            \
   2851         (_SHR_GPORT_IS_COSQ(_gport) &&                                                 \
   2852         ((((_gport) >> _SHR_COSQ_GPORT_TYPE_SHIFT) & _SHR_COSQ_GPORT_TYPE_MASK) ==     \
   2853                                                 _SHR_COSQ_GPORT_TYPE_PORT_TCG))
   2854 
   2855 #define _SHR_COSQ_GPORT_PORT_TCG_SET(_gport, _port)                                    \
   2856         ((_gport) = (_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT)   |                \
   2857          (_SHR_COSQ_GPORT_TYPE_PORT_TCG << _SHR_COSQ_GPORT_TYPE_SHIFT)   |             \
   2858          (((_port) & _SHR_COSQ_GPORT_PORT_TCG_MASK)  << _SHR_COSQ_GPORT_PORT_TCG_SHIFT))
   2859 
   2860 #define _SHR_COSQ_GPORT_PORT_TCG_GET(_gport)                                           \
   2861         (((_gport) >> _SHR_COSQ_GPORT_PORT_TCG_SHIFT) & _SHR_COSQ_GPORT_PORT_TCG_MASK)
   2862 
   2863 #define _SHR_COSQ_GPORT_IS_E2E_PORT_TC(_gport)                                         \
   2864         (_SHR_GPORT_IS_COSQ(_gport) &&                                                 \
   2865         ((((_gport) >> _SHR_COSQ_GPORT_TYPE_SHIFT) & _SHR_COSQ_GPORT_TYPE_MASK) ==     \
   2866                                                 _SHR_COSQ_GPORT_TYPE_E2E_PORT_TC))
   2867 
   2868 #define _SHR_COSQ_GPORT_E2E_PORT_TC_SET(_gport, _port)                                 \
   2869         ((_gport) = (_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT)   |                \
   2870          (_SHR_COSQ_GPORT_TYPE_E2E_PORT_TC << _SHR_COSQ_GPORT_TYPE_SHIFT)   |          \
   2871          (((_port) & _SHR_COSQ_GPORT_E2E_PORT_TC_MASK)  << _SHR_COSQ_GPORT_E2E_PORT_TC_SHIFT))
   2872 
   2873 #define _SHR_COSQ_GPORT_E2E_PORT_TC_GET(_gport)                                        \
   2874         (((_gport) >> _SHR_COSQ_GPORT_E2E_PORT_TC_SHIFT) & _SHR_COSQ_GPORT_E2E_PORT_TC_MASK)
   2875 
   2876 #define _SHR_COSQ_GPORT_IS_E2E_PORT_TCG(_gport)                                        \
   2877         (_SHR_GPORT_IS_COSQ(_gport) &&                                                 \
   2878         ((((_gport) >> _SHR_COSQ_GPORT_TYPE_SHIFT) & _SHR_COSQ_GPORT_TYPE_MASK) ==     \
   2879                                                 _SHR_COSQ_GPORT_TYPE_E2E_PORT_TCG))
   2880 
   2881 #define _SHR_COSQ_GPORT_E2E_PORT_TCG_SET(_gport, _port)                                \
   2882         ((_gport) = (_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT)   |                \
   2883          (_SHR_COSQ_GPORT_TYPE_E2E_PORT_TCG << _SHR_COSQ_GPORT_TYPE_SHIFT)   |         \
   2884          (((_port) & _SHR_COSQ_GPORT_E2E_PORT_TCG_MASK)  << _SHR_COSQ_GPORT_E2E_PORT_TCG_SHIFT))
   2885 
   2886 #define _SHR_COSQ_GPORT_E2E_PORT_TCG_GET(_gport)                                       \
   2887         (((_gport) >> _SHR_COSQ_GPORT_E2E_PORT_TCG_SHIFT) & _SHR_COSQ_GPORT_E2E_PORT_TCG_MASK)
   2888 
   2889 #define _SHR_GPORT_TRAP_SET(_gport, _trap_id, _trap_strength, _snoop_strength)     \
   2890         ((_gport) = (_SHR_GPORT_TYPE_TRAP << _SHR_GPORT_TYPE_TRAP_SHIFT)   |      \
   2891          (((_trap_id) & _SHR_GPORT_TRAP_ID_MASK) << _SHR_GPORT_TRAP_ID_SHIFT)  |    \
   2892          (((_trap_strength) & _SHR_GPORT_TRAP_STRENGTH_MASK) << _SHR_GPORT_TRAP_STRENGTH_SHIFT)  |  \
   2893          (((_snoop_strength) & _SHR_GPORT_TRAP_SNOOP_STRENGTH_MASK) << _SHR_GPORT_TRAP_SNOOP_STRENGTH_SHIFT) )
   2894 
   2895 #define _SHR_GPORT_TRAP_GET_ID(_gport)    \
   2896         (((_gport) >> _SHR_GPORT_TRAP_ID_SHIFT) & _SHR_GPORT_TRAP_ID_MASK)
   2897 
   2898 #define _SHR_GPORT_TRAP_GET_STRENGTH(_gport)    \
   2899         (((_gport) >> _SHR_GPORT_TRAP_STRENGTH_SHIFT & _SHR_GPORT_TRAP_STRENGTH_MASK))
   2900 
   2901 #define _SHR_GPORT_TRAP_GET_SNOOP_STRENGTH(_gport)    \
   2902         (((_gport) >> _SHR_GPORT_TRAP_SNOOP_STRENGTH_SHIFT & _SHR_GPORT_TRAP_SNOOP_STRENGTH_MASK))
   2903 
   2904 #define _SHR_GPORT_IS_TRAP(_gport)    \
   2905         (((_gport) >> _SHR_GPORT_TYPE_TRAP_SHIFT) == _SHR_GPORT_TYPE_TRAP)
   2906 
   2907 #define _SHR_COSQ_GPORT_IS_SYSTEM_RED(_gport)                                        \
   2908         (_SHR_GPORT_IS_COSQ(_gport) &&                                                 \
   2909         ((((_gport) >> _SHR_COSQ_GPORT_TYPE_SHIFT) & _SHR_COSQ_GPORT_TYPE_MASK) ==     \
   2910                                                 _SHR_COSQ_GPORT_TYPE_SYSTEM_RED))
   2911 
   2912 #define _SHR_COSQ_GPORT_SYSTEM_RED_SET(_gport)                                \
   2913         ((_gport) = (_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT)   |                \
   2914          (_SHR_COSQ_GPORT_TYPE_SYSTEM_RED << _SHR_COSQ_GPORT_TYPE_SHIFT))
   2915 
   2916 #define _SHR_COSQ_GPORT_IS_INGRESS_RECEIVE(_gport)                                     \
   2917         (_SHR_GPORT_IS_COSQ(_gport) &&                                                 \
   2918         ((((_gport) >> _SHR_COSQ_GPORT_TYPE_SHIFT) & _SHR_COSQ_GPORT_TYPE_MASK) ==     \
   2919          _SHR_COSQ_GPORT_TYPE_INGRESS_RECEIVE))
   2920 
   2921 #define _SHR_COSQ_GPORT_INGRESS_RECEIVE_CORE_GET(_gport)                               \
   2922         _SHR_CORE_FIELD2ID((((_gport) >> _SHR_COSQ_GPORT_INGRESS_RECEIVE_CORE_ID_SHIFT) & _SHR_COSQ_GPORT_INGRESS_RECEIVE_CORE_ID_MASK))
   2923 
   2924 #define _SHR_COSQ_GPORT_IS_INGRESS_RECEIVE_CPU_GUARANTEED(_gport)                                       \
   2925         (_SHR_COSQ_GPORT_IS_INGRESS_RECEIVE (_gport) &&                                                 \
   2926         ((((_gport) >> _SHR_COSQ_GPORT_INGRESS_RECEIVE_TYPE_SHIFT) & _SHR_COSQ_GPORT_INGRESS_RECEIVE_TYPE_MASK) ==     \
   2927          _SHR_COSQ_GPORT_INGRESS_RECEIVE_TYPE_CPU_GUARANTEED))
   2928 
   2929 #define _SHR_COSQ_GPORT_INGRESS_RECEIVE_CPU_GUARANTEED_SET(_gport, _core)                                     \
   2930         ((_gport) = (_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT)   |                                       \
   2931          (_SHR_COSQ_GPORT_TYPE_INGRESS_RECEIVE  << _SHR_COSQ_GPORT_TYPE_SHIFT)   |                            \
   2932          (_SHR_COSQ_GPORT_INGRESS_RECEIVE_TYPE_CPU_GUARANTEED << _SHR_COSQ_GPORT_INGRESS_RECEIVE_TYPE_SHIFT) | \
   2933          (((_SHR_CORE_ID2FIELD(_core)) & _SHR_COSQ_GPORT_INGRESS_RECEIVE_CORE_ID_MASK) << _SHR_COSQ_GPORT_INGRESS_RECEIVE_CORE_ID_SHIFT))
   2934 
   2935 #define _SHR_COSQ_GPORT_IS_INGRESS_RECEIVE_RCY_GUARANTEED(_gport)                                       \
   2936         (_SHR_COSQ_GPORT_IS_INGRESS_RECEIVE(_gport) &&                                                  \
   2937         ((((_gport) >> _SHR_COSQ_GPORT_INGRESS_RECEIVE_TYPE_SHIFT) & _SHR_COSQ_GPORT_INGRESS_RECEIVE_TYPE_MASK) ==     \
   2938          _SHR_COSQ_GPORT_INGRESS_RECEIVE_TYPE_RCY_GUARANTEED))
   2939 
   2940 #define _SHR_COSQ_GPORT_INGRESS_RECEIVE_RCY_GUARANTEED_SET(_gport, _core)                                     \
   2941         ((_gport) = (_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT)   |                                       \
   2942          (_SHR_COSQ_GPORT_TYPE_INGRESS_RECEIVE  << _SHR_COSQ_GPORT_TYPE_SHIFT)   |                            \
   2943          (_SHR_COSQ_GPORT_INGRESS_RECEIVE_TYPE_RCY_GUARANTEED << _SHR_COSQ_GPORT_INGRESS_RECEIVE_TYPE_SHIFT) | \
   2944          (((_SHR_CORE_ID2FIELD(_core)) & _SHR_COSQ_GPORT_INGRESS_RECEIVE_CORE_ID_MASK) << _SHR_COSQ_GPORT_INGRESS_RECEIVE_CORE_ID_SHIFT))
   2945 
   2946 #define _SHR_COSQ_GPORT_IS_INGRESS_RECEIVE_NIF(_gport)                                                 \
   2947         (_SHR_COSQ_GPORT_IS_INGRESS_RECEIVE(_gport) &&                                                 \
   2948         ((((_gport) >> _SHR_COSQ_GPORT_INGRESS_RECEIVE_TYPE_SHIFT) & _SHR_COSQ_GPORT_INGRESS_RECEIVE_TYPE_MASK) ==     \
   2949          _SHR_COSQ_GPORT_INGRESS_RECEIVE_TYPE_NIF))
   2950 
   2951 #define _SHR_COSQ_GPORT_INGRESS_RECEIVE_NIF_SET(_gport, _core)                                      \
   2952         ((_gport) = (_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT)   |                             \
   2953          (_SHR_COSQ_GPORT_TYPE_INGRESS_RECEIVE  << _SHR_COSQ_GPORT_TYPE_SHIFT)   | \
   2954          (_SHR_COSQ_GPORT_INGRESS_RECEIVE_TYPE_NIF << _SHR_COSQ_GPORT_INGRESS_RECEIVE_TYPE_SHIFT) | \
   2955          (((_SHR_CORE_ID2FIELD(_core)) & _SHR_COSQ_GPORT_INGRESS_RECEIVE_CORE_ID_MASK) << _SHR_COSQ_GPORT_INGRESS_RECEIVE_CORE_ID_SHIFT))
   2956 
   2957 #define _SHR_COSQ_GPORT_IS_FABRIC_PIPE(_gport)                                         \
   2958         (_SHR_GPORT_IS_COSQ(_gport) &&                                                 \
   2959         ((((_gport) >> _SHR_COSQ_GPORT_TYPE_SHIFT) & _SHR_COSQ_GPORT_TYPE_MASK) ==     \
   2960                                                     _SHR_COSQ_GPORT_TYPE_FABRIC) &&    \
   2961          ((((_gport) >> _SHR_COSQ_GPORT_FABRIC_PIPE_TYPE_SHIFT) & _SHR_COSQ_GPORT_FABRIC_PIPE_TYPE_MASK) ==     \
   2962                                                                   _SHR_COSQ_FABRIC_TYPE_PIPE_GLOBAL))
   2963 
   2964 #define _SHR_COSQ_GPORT_IS_FABRIC_PIPE_INGRESS(_gport)                                 \
   2965         (_SHR_GPORT_IS_COSQ(_gport) &&                                                 \
   2966         ((((_gport) >> _SHR_COSQ_GPORT_TYPE_SHIFT) & _SHR_COSQ_GPORT_TYPE_MASK) ==     \
   2967                                                     _SHR_COSQ_GPORT_TYPE_FABRIC) &&    \
   2968          ((((_gport) >> _SHR_COSQ_GPORT_FABRIC_PIPE_TYPE_SHIFT) & _SHR_COSQ_GPORT_FABRIC_PIPE_TYPE_MASK) ==     \
   2969                                                                   _SHR_COSQ_FABRIC_TYPE_PIPE_INGRESS))
   2970 
   2971 #define _SHR_COSQ_GPORT_IS_FABRIC_PIPE_EGRESS(_gport)                                  \
   2972         (_SHR_GPORT_IS_COSQ(_gport) &&                                                 \
   2973         ((((_gport) >> _SHR_COSQ_GPORT_TYPE_SHIFT) & _SHR_COSQ_GPORT_TYPE_MASK) ==     \
   2974                                                     _SHR_COSQ_GPORT_TYPE_FABRIC) &&    \
   2975          ((((_gport) >> _SHR_COSQ_GPORT_FABRIC_PIPE_TYPE_SHIFT) & _SHR_COSQ_GPORT_FABRIC_PIPE_TYPE_MASK) ==     \
   2976                                                                   _SHR_COSQ_FABRIC_TYPE_PIPE_EGRESS))
   2977 
   2978 #define _SHR_COSQ_GPORT_IS_FABRIC_PIPE_MIDDLE(_gport)                                  \
   2979         (_SHR_GPORT_IS_COSQ(_gport) &&                                                 \
   2980         ((((_gport) >> _SHR_COSQ_GPORT_TYPE_SHIFT) & _SHR_COSQ_GPORT_TYPE_MASK) ==     \
   2981                                                     _SHR_COSQ_GPORT_TYPE_FABRIC) &&    \
   2982          ((((_gport) >> _SHR_COSQ_GPORT_FABRIC_PIPE_TYPE_SHIFT) & _SHR_COSQ_GPORT_FABRIC_PIPE_TYPE_MASK) ==     \
   2983                                                                   _SHR_COSQ_FABRIC_TYPE_PIPE_MIDDLE))
   2984 
   2985 #define _SHR_COSQ_GPORT_FABRIC_PIPE_SET(_gport, _fabric_port, _fabric_pipe)               \
   2986         ((_gport) = (_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT)   |                   \
   2987          (_SHR_COSQ_GPORT_TYPE_FABRIC << _SHR_COSQ_GPORT_TYPE_SHIFT)   |                  \
   2988          (_SHR_COSQ_FABRIC_TYPE_PIPE_GLOBAL << _SHR_COSQ_GPORT_FABRIC_PIPE_TYPE_SHIFT) | \
   2989          (((_fabric_pipe == -1 ? _SHR_COSQ_FABRIC_PIPE_ALL_PIPES : _fabric_pipe ) & _SHR_COSQ_GPORT_FABRIC_PIPE_PIPE_MASK) << _SHR_COSQ_GPORT_FABRIC_PIPE_PIPE_SHIFT) | \
   2990          (((_fabric_port == -1 ? _SHR_COSQ_FABRIC_PIPE_ALL_PORTS : _fabric_port ) & _SHR_COSQ_GPORT_FABRIC_PIPE_PORT_MASK) << _SHR_COSQ_GPORT_FABRIC_PIPE_PORT_SHIFT))
   2991 
   2992 #define _SHR_COSQ_GPORT_FABRIC_PIPE_INGRESS_SET(_gport, _fabric_port, _fabric_pipe)       \
   2993         ((_gport) = (_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT)   |                   \
   2994          (_SHR_COSQ_GPORT_TYPE_FABRIC << _SHR_COSQ_GPORT_TYPE_SHIFT)   |                  \
   2995          (_SHR_COSQ_FABRIC_TYPE_PIPE_INGRESS << _SHR_COSQ_GPORT_FABRIC_PIPE_TYPE_SHIFT) | \
   2996          (((_fabric_pipe == -1 ? _SHR_COSQ_FABRIC_PIPE_ALL_PIPES : _fabric_pipe ) & _SHR_COSQ_GPORT_FABRIC_PIPE_PIPE_MASK) << _SHR_COSQ_GPORT_FABRIC_PIPE_PIPE_SHIFT) | \
   2997          (((_fabric_port == -1 ? _SHR_COSQ_FABRIC_PIPE_ALL_PORTS : _fabric_port ) & _SHR_COSQ_GPORT_FABRIC_PIPE_PORT_MASK) << _SHR_COSQ_GPORT_FABRIC_PIPE_PORT_SHIFT))
   2998 
   2999 #define _SHR_COSQ_GPORT_FABRIC_PIPE_EGRESS_SET(_gport, _fabric_port, _fabric_pipe)               \
   3000         ((_gport) = (_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT)   |                   \
   3001          (_SHR_COSQ_GPORT_TYPE_FABRIC << _SHR_COSQ_GPORT_TYPE_SHIFT)   |                  \
   3002          (_SHR_COSQ_FABRIC_TYPE_PIPE_EGRESS << _SHR_COSQ_GPORT_FABRIC_PIPE_TYPE_SHIFT) | \
   3003          (((_fabric_pipe == -1 ? _SHR_COSQ_FABRIC_PIPE_ALL_PIPES : _fabric_pipe ) & _SHR_COSQ_GPORT_FABRIC_PIPE_PIPE_MASK) << _SHR_COSQ_GPORT_FABRIC_PIPE_PIPE_SHIFT) | \
   3004          (((_fabric_port == -1 ? _SHR_COSQ_FABRIC_PIPE_ALL_PORTS : _fabric_port ) & _SHR_COSQ_GPORT_FABRIC_PIPE_PORT_MASK) << _SHR_COSQ_GPORT_FABRIC_PIPE_PORT_SHIFT))
   3005 
   3006 #define _SHR_COSQ_GPORT_FABRIC_PIPE_MIDDLE_SET(_gport, _fabric_port, _fabric_pipe)        \
   3007         ((_gport) = (_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT)   |                   \
   3008          (_SHR_COSQ_GPORT_TYPE_FABRIC << _SHR_COSQ_GPORT_TYPE_SHIFT)   |                  \
   3009          (_SHR_COSQ_FABRIC_TYPE_PIPE_MIDDLE << _SHR_COSQ_GPORT_FABRIC_PIPE_TYPE_SHIFT) | \
   3010          (((_fabric_pipe == -1 ? _SHR_COSQ_FABRIC_PIPE_ALL_PIPES : _fabric_pipe ) & _SHR_COSQ_GPORT_FABRIC_PIPE_PIPE_MASK) << _SHR_COSQ_GPORT_FABRIC_PIPE_PIPE_SHIFT) | \
   3011          (((_fabric_port == -1 ? _SHR_COSQ_FABRIC_PIPE_ALL_PORTS : _fabric_port ) & _SHR_COSQ_GPORT_FABRIC_PIPE_PORT_MASK) << _SHR_COSQ_GPORT_FABRIC_PIPE_PORT_SHIFT))
   3012 
   3013 #define _SHR_COSQ_GPORT_FABRIC_PIPE_PIPE_GET(_gport) \
   3014         ((((_gport) >> _SHR_COSQ_GPORT_FABRIC_PIPE_PIPE_SHIFT) & \
   3015                         _SHR_COSQ_GPORT_FABRIC_PIPE_PIPE_MASK) == _SHR_COSQ_FABRIC_PIPE_ALL_PIPES ? -1 : \
   3016          (((_gport) >> _SHR_COSQ_GPORT_FABRIC_PIPE_PIPE_SHIFT) & \
   3017                         _SHR_COSQ_GPORT_FABRIC_PIPE_PIPE_MASK))
   3018 
   3019 #define _SHR_COSQ_GPORT_FABRIC_PIPE_PORT_GET(_gport) \
   3020         ((((_gport) >> _SHR_COSQ_GPORT_FABRIC_PIPE_PORT_SHIFT) & \
   3021                         _SHR_COSQ_GPORT_FABRIC_PIPE_PORT_MASK) == _SHR_COSQ_FABRIC_PIPE_ALL_PORTS ? -1 : \
   3022          (((_gport) >> _SHR_COSQ_GPORT_FABRIC_PIPE_PORT_SHIFT) & \
   3023                         _SHR_COSQ_GPORT_FABRIC_PIPE_PORT_MASK))
   3024 
   3025 #define _SHR_GPORT_IS_PHY(_gport) \
   3026         ((((_gport) >> _SHR_GPORT_TYPE_SHIFT) & _SHR_GPORT_TYPE_MASK) == \
   3027                                                         _SHR_GPORT_TYPE_PHY)
   3028 
   3029 /* _SHR_PHY_GPORT_TYPE_LANE_PORT */
   3030 #define _SHR_PHY_GPORT_IS_LANE(_gport) \
   3031         (_SHR_GPORT_IS_PHY(_gport) && \
   3032         ((((_gport) >> _SHR_PHY_GPORT_TYPE_SHIFT) & \
   3033                         _SHR_PHY_GPORT_TYPE_MASK) == \
   3034                                         _SHR_PHY_GPORT_TYPE_LANE_PORT))
   3035 
   3036 #define _SHR_PHY_GPORT_LANE_PORT_SET(_gport, _phy_lane, _port) \
   3037         ((_gport) = (_SHR_GPORT_TYPE_PHY << _SHR_GPORT_TYPE_SHIFT) | \
   3038          (_SHR_PHY_GPORT_TYPE_LANE_PORT << _SHR_PHY_GPORT_TYPE_SHIFT) | \
   3039          (((_phy_lane) & _SHR_PHY_GPORT_LANE_PORT_LANE_MASK) << \
   3040                                 _SHR_PHY_GPORT_LANE_PORT_LANE_SHIFT) | \
   3041          (((_port) & _SHR_PHY_GPORT_LANE_PORT_PORT_MASK) << \
   3042                                 _SHR_PHY_GPORT_LANE_PORT_PORT_SHIFT))
   3043 
   3044 #define _SHR_PHY_GPORT_LANE_PORT_LANE_GET(_gport) \
   3045         (((_gport) >> _SHR_PHY_GPORT_LANE_PORT_LANE_SHIFT) & \
   3046                         _SHR_PHY_GPORT_LANE_PORT_LANE_MASK)
   3047 #define _SHR_PHY_GPORT_LANE_PORT_PORT_GET(_gport) \
   3048         (((_gport) >> _SHR_PHY_GPORT_LANE_PORT_PORT_SHIFT) & \
   3049                         _SHR_PHY_GPORT_LANE_PORT_PORT_MASK)
   3050 
   3051 /* _SHR_PHY_GPORT_TYPE_PHYN_PORT */
   3052 #define _SHR_PHY_GPORT_IS_PHYN(_gport) \
   3053         (_SHR_GPORT_IS_PHY(_gport) && \
   3054         ((((_gport) >> _SHR_PHY_GPORT_TYPE_SHIFT) & \
   3055                         _SHR_PHY_GPORT_TYPE_MASK) == \
   3056                                         _SHR_PHY_GPORT_TYPE_PHYN_PORT))
   3057 #define _SHR_PHY_GPORT_PHYN_PORT_SET(_gport, _phyn, _port) \
   3058         ((_gport) = (_SHR_GPORT_TYPE_PHY << _SHR_GPORT_TYPE_SHIFT) | \
   3059          (_SHR_PHY_GPORT_TYPE_PHYN_PORT << _SHR_PHY_GPORT_TYPE_SHIFT) | \
   3060          (((_phyn) & _SHR_PHY_GPORT_PHYN_PORT_PHYN_MASK) << \
   3061                                 _SHR_PHY_GPORT_PHYN_PORT_PHYN_SHIFT) | \
   3062          (((_port) & _SHR_PHY_GPORT_PHYN_PORT_PORT_MASK) << \
   3063                                 _SHR_PHY_GPORT_PHYN_PORT_PORT_SHIFT))
   3064 
   3065 #define _SHR_PHY_GPORT_PHYN_PORT_PHYN_GET(_gport) \
   3066         (((_gport) >> _SHR_PHY_GPORT_PHYN_PORT_PHYN_SHIFT) & \
   3067                         _SHR_PHY_GPORT_PHYN_PORT_PHYN_MASK)
   3068 #define _SHR_PHY_GPORT_PHYN_PORT_PORT_GET(_gport) \
   3069         (((_gport) >> _SHR_PHY_GPORT_PHYN_PORT_PORT_SHIFT) & \
   3070                         _SHR_PHY_GPORT_PHYN_PORT_PORT_MASK)
   3071 
   3072 /* _SHR_PHY_GPORT_TYPE_PHYN_LANE_PORT */
   3073 #define _SHR_PHY_GPORT_IS_PHYN_LANE(_gport) \
   3074         (_SHR_GPORT_IS_PHY(_gport) && \
   3075         ((((_gport) >> _SHR_PHY_GPORT_TYPE_SHIFT) & \
   3076                         _SHR_PHY_GPORT_TYPE_MASK) == \
   3077                                         _SHR_PHY_GPORT_TYPE_PHYN_LANE_PORT))
   3078 #define _SHR_PHY_GPORT_PHYN_LANE_PORT_SET(_gport, _phyn, _phy_lane, _port) \
   3079         ((_gport) = (_SHR_GPORT_TYPE_PHY << _SHR_GPORT_TYPE_SHIFT) | \
   3080          (_SHR_PHY_GPORT_TYPE_PHYN_LANE_PORT << _SHR_PHY_GPORT_TYPE_SHIFT) | \
   3081          (((_phyn) & _SHR_PHY_GPORT_PHYN_LANE_PORT_PHYN_MASK) << \
   3082                                 _SHR_PHY_GPORT_PHYN_LANE_PORT_PHYN_SHIFT) | \
   3083          (((_phy_lane) & _SHR_PHY_GPORT_PHYN_LANE_PORT_LANE_MASK) << \
   3084                                 _SHR_PHY_GPORT_PHYN_LANE_PORT_LANE_SHIFT) | \
   3085          (((_port) & _SHR_PHY_GPORT_PHYN_LANE_PORT_PORT_MASK) << \
   3086                                 _SHR_PHY_GPORT_PHYN_LANE_PORT_PORT_SHIFT))
   3087 
   3088 #define _SHR_PHY_GPORT_PHYN_LANE_PORT_PHYN_GET(_gport) \
   3089         (((_gport) >> _SHR_PHY_GPORT_PHYN_LANE_PORT_PHYN_SHIFT) & \
   3090                         _SHR_PHY_GPORT_PHYN_LANE_PORT_PHYN_MASK)
   3091 #define _SHR_PHY_GPORT_PHYN_LANE_PORT_LANE_GET(_gport) \
   3092         (((_gport) >> _SHR_PHY_GPORT_PHYN_LANE_PORT_LANE_SHIFT) & \
   3093                         _SHR_PHY_GPORT_PHYN_LANE_PORT_LANE_MASK)
   3094 #define _SHR_PHY_GPORT_PHYN_LANE_PORT_PORT_GET(_gport) \
   3095         (((_gport) >> _SHR_PHY_GPORT_PHYN_LANE_PORT_PORT_SHIFT) & \
   3096                         _SHR_PHY_GPORT_PHYN_LANE_PORT_PORT_MASK)
   3097 
   3098 /* _SHR_PHY_GPORT_TYPE_PHYN_SYS_SIDE_PORT */
   3099 #define _SHR_PHY_GPORT_IS_PHYN_SYS_SIDE(_gport) \
   3100         (_SHR_GPORT_IS_PHY(_gport) && \
   3101         ((((_gport) >> _SHR_PHY_GPORT_TYPE_SHIFT) & \
   3102                         _SHR_PHY_GPORT_TYPE_MASK) == \
   3103                                         _SHR_PHY_GPORT_TYPE_PHYN_SYS_SIDE_PORT))
   3104 #define _SHR_PHY_GPORT_PHYN_SYS_SIDE_PORT_SET(_gport, _phyn, _port) \
   3105         ((_gport) = (_SHR_GPORT_TYPE_PHY << _SHR_GPORT_TYPE_SHIFT) | \
   3106          (_SHR_PHY_GPORT_TYPE_PHYN_SYS_SIDE_PORT << _SHR_PHY_GPORT_TYPE_SHIFT) | \
   3107          (((_phyn) & _SHR_PHY_GPORT_PHYN_SYS_SIDE_PORT_PHYN_MASK) << \
   3108                                 _SHR_PHY_GPORT_PHYN_SYS_SIDE_PORT_PHYN_SHIFT) | \
   3109          (((_port) & _SHR_PHY_GPORT_PHYN_SYS_SIDE_PORT_PORT_MASK) << \
   3110                                 _SHR_PHY_GPORT_PHYN_SYS_SIDE_PORT_PORT_SHIFT))
   3111 
   3112 #define _SHR_PHY_GPORT_PHYN_SYS_SIDE_PORT_PHYN_GET(_gport) \
   3113         (((_gport) >> _SHR_PHY_GPORT_PHYN_SYS_SIDE_PORT_PHYN_SHIFT) & \
   3114                         _SHR_PHY_GPORT_PHYN_SYS_SIDE_PORT_PHYN_MASK)
   3115 #define _SHR_PHY_GPORT_PHYN_SYS_SIDE_PORT_PORT_GET(_gport) \
   3116         (((_gport) >> _SHR_PHY_GPORT_PHYN_SYS_SIDE_PORT_PORT_SHIFT) & \
   3117                         _SHR_PHY_GPORT_PHYN_SYS_SIDE_PORT_PORT_MASK)
   3118 
   3119 /* _SHR_PHY_GPORT_TYPE_PHYN_SYS_SIDE_LANE_PORT */
   3120 #define _SHR_PHY_GPORT_IS_PHYN_SYS_SIDE_LANE(_gport) \
   3121         (_SHR_GPORT_IS_PHY(_gport) && \
   3122         ((((_gport) >> _SHR_PHY_GPORT_TYPE_SHIFT) & \
   3123                         _SHR_PHY_GPORT_TYPE_MASK) == \
   3124                                         _SHR_PHY_GPORT_TYPE_PHYN_SYS_SIDE_LANE_PORT))
   3125 #define _SHR_PHY_GPORT_PHYN_SYS_SIDE_LANE_PORT_SET(_gport, _phyn, _phy_lane, _port) \
   3126         ((_gport) = (_SHR_GPORT_TYPE_PHY << _SHR_GPORT_TYPE_SHIFT) | \
   3127          (_SHR_PHY_GPORT_TYPE_PHYN_SYS_SIDE_LANE_PORT << _SHR_PHY_GPORT_TYPE_SHIFT) | \
   3128          (((_phyn) & _SHR_PHY_GPORT_PHYN_SYS_SIDE_LANE_PORT_PHYN_MASK) << \
   3129                                 _SHR_PHY_GPORT_PHYN_SYS_SIDE_LANE_PORT_PHYN_SHIFT) | \
   3130          (((_phy_lane) & _SHR_PHY_GPORT_PHYN_SYS_SIDE_LANE_PORT_LANE_MASK) << \
   3131                                 _SHR_PHY_GPORT_PHYN_SYS_SIDE_LANE_PORT_LANE_SHIFT) | \
   3132          (((_port) & _SHR_PHY_GPORT_PHYN_SYS_SIDE_LANE_PORT_PORT_MASK) << \
   3133                                 _SHR_PHY_GPORT_PHYN_SYS_SIDE_LANE_PORT_PORT_SHIFT))
   3134 
   3135 #define _SHR_PHY_GPORT_PHYN_SYS_SIDE_LANE_PORT_PHYN_GET(_gport) \
   3136         (((_gport) >> _SHR_PHY_GPORT_PHYN_SYS_SIDE_LANE_PORT_PHYN_SHIFT) & \
   3137                         _SHR_PHY_GPORT_PHYN_SYS_SIDE_LANE_PORT_PHYN_MASK)
   3138 #define _SHR_PHY_GPORT_PHYN_SYS_SIDE_LANE_PORT_LANE_GET(_gport) \
   3139         (((_gport) >> _SHR_PHY_GPORT_PHYN_SYS_SIDE_LANE_PORT_LANE_SHIFT) & \
   3140                         _SHR_PHY_GPORT_PHYN_SYS_SIDE_LANE_PORT_LANE_MASK)
   3141 #define _SHR_PHY_GPORT_PHYN_SYS_SIDE_LANE_PORT_PORT_GET(_gport) \
   3142         (((_gport) >> _SHR_PHY_GPORT_PHYN_SYS_SIDE_LANE_PORT_PORT_SHIFT) & \
   3143                         _SHR_PHY_GPORT_PHYN_SYS_SIDE_LANE_PORT_PORT_MASK)
   3144 
   3145 #define _SHR_GPORT_IS_PROXY(_gport) \
   3146         ((((_gport) >> _SHR_GPORT_TYPE_SHIFT) & _SHR_GPORT_TYPE_MASK) == \
   3147                                                 _SHR_GPORT_TYPE_PROXY)
   3148 
   3149 #define _SHR_GPORT_PROXY_SET(_gport, _module, _port)                       \
   3150         ((_gport) = (_SHR_GPORT_TYPE_PROXY   << _SHR_GPORT_TYPE_SHIFT)   | \
   3151          (((_module) & _SHR_GPORT_MODID_MASK)  << _SHR_GPORT_MODID_SHIFT)  | \
   3152          (((_port) & _SHR_GPORT_PORT_MASK)     << _SHR_GPORT_PORT_SHIFT))
   3153 
   3154 #define _SHR_GPORT_PROXY_MODID_GET(_gport)    \
   3155         (((_gport) >> _SHR_GPORT_MODID_SHIFT) & _SHR_GPORT_MODID_MASK)
   3156 
   3157 #define _SHR_GPORT_PROXY_PORT_GET(_gport)     \
   3158         (((_gport) >> _SHR_GPORT_PORT_SHIFT) & _SHR_GPORT_PORT_MASK)
   3159 
   3160 #define _SHR_GPORT_IS_FORWARD_PORT(_gport) \
   3161         ((((_gport) >> _SHR_GPORT_TYPE_SHIFT) & _SHR_GPORT_TYPE_MASK) == \
   3162                                                 _SHR_GPORT_TYPE_FORWARD_PORT)
   3163 
   3164 #define _SHR_GPORT_FORWARD_PORT_SET(_gport, _id)                            \
   3165         ((_gport) = (_SHR_GPORT_TYPE_FORWARD_PORT << _SHR_GPORT_TYPE_SHIFT)  | \
   3166          (((_id) & _SHR_GPORT_FORWARD_PORT_MASK) << _SHR_GPORT_FORWARD_PORT_SHIFT))
   3167 
   3168 #define _SHR_GPORT_FORWARD_PORT_GET(_gport)   \
   3169         (((_gport) >> _SHR_GPORT_FORWARD_PORT_SHIFT) & _SHR_GPORT_FORWARD_PORT_MASK)
   3170 
   3171 #define _SHR_ENCAP_REMOTE_SET(_encap_id)    ((_encap_id) |= (1 << _SHR_ENCAP_REMOTE_SHIFT))
   3172 #define _SHR_ENCAP_REMOTE_GET(_encap_id)    (((_encap_id) >> _SHR_ENCAP_REMOTE_SHIFT) & _SHR_ENCAP_REMOTE_MASK)
   3173 #define _SHR_ENCAP_ID_SET(_encap_id, _id)                               \
   3174         ((_encap_id) = ((_SHR_ENCAP_REMOTE_MASK << _SHR_ENCAP_REMOTE_SHIFT) & (_encap_id))  | \
   3175         (((_id) & _SHR_ENCAP_ID_MASK) << _SHR_ENCAP_ID_SHIFT))
   3176 #define _SHR_ENCAP_ID_GET(_encap_id)        (((_encap_id) >> _SHR_ENCAP_ID_SHIFT) & _SHR_ENCAP_ID_MASK)
   3177 
   3178 #define _SHR_GPORT_IS_VP_GROUP(_gport)    \
   3179         ((((_gport) >> _SHR_GPORT_TYPE_SHIFT) & _SHR_GPORT_TYPE_MASK) == \
   3180 		_SHR_GPORT_TYPE_VP_GROUP)
   3181 
   3182 #define _SHR_GPORT_VP_GROUP_SET(_gport, _vp_group)                              \
   3183         ((_gport) = (_SHR_GPORT_TYPE_VP_GROUP      << _SHR_GPORT_TYPE_SHIFT)  | \
   3184          (((_vp_group) & _SHR_GPORT_VP_GROUP_MASK) << _SHR_GPORT_VP_GROUP_SHIFT))
   3185 
   3186 #define _SHR_GPORT_VP_GROUP_GET(_gport)   \
   3187         (((_gport) >> _SHR_GPORT_VP_GROUP_SHIFT) & _SHR_GPORT_VP_GROUP_MASK)
   3188 
   3189 #define _SHR_GPORT_IS_ANY_PROFILE(_gport) \
   3190         ((((_gport) >> _SHR_GPORT_TYPE_SHIFT) & _SHR_GPORT_TYPE_MASK) == _SHR_GPORT_TYPE_PROFILE)
   3191 
   3192 #define _SHR_GPORT_IS_PROFILE_UNKNOWN(_gport)   \
   3193         (_SHR_GPORT_IS_ANY_PROFILE(_gport) &&   \
   3194         ((((_gport) >> _SHR_GPORT_PROFILE_TYPE_SHIFT) & _SHR_GPORT_PROFILE_TYPE_MASK) ==  _SHR_GPORT_PROFILE_TYPE_UNKNOWN))
   3195 
   3196 #define _SHR_GPORT_PROFILE_GET(_gport)   \
   3197         (((_gport) >> _SHR_GPORT_PROFILE_SHIFT) & _SHR_GPORT_PROFILE_MASK)
   3198 
   3199 #define _SHR_GPORT_PROFILE_UNKNOWN_SET(_gport, _profile)                              \
   3200         ((_gport) = (_SHR_GPORT_TYPE_PROFILE << _SHR_GPORT_TYPE_SHIFT)  |             \
   3201         (_SHR_GPORT_PROFILE_TYPE_UNKNOWN << _SHR_GPORT_PROFILE_TYPE_MASK) |           \
   3202          (((_profile) & _SHR_GPORT_PROFILE_MASK) << _SHR_GPORT_PROFILE_SHIFT))
   3203 
   3204 #define _SHR_GPORT_IS_PROFILE(_gport) _SHR_GPORT_IS_PROFILE_UNKNOWN(_gport)
   3205 #define _SHR_GPORT_PROFILE_SET(_gport, _profile) _SHR_GPORT_PROFILE_UNKNOWN_SET(_gport, _profile)
   3206 
   3207 #define _SHR_GPORT_IS_CREDIT_REQUEST_PROFILE(_gport) \
   3208         (_SHR_GPORT_IS_ANY_PROFILE(_gport) &&        \
   3209         ((((_gport) >> _SHR_GPORT_PROFILE_TYPE_SHIFT) & _SHR_GPORT_PROFILE_TYPE_MASK) ==  _SHR_GPORT_PROFILE_TYPE_CREDIT_REQUEST))
   3210 
   3211 #define _SHR_GPORT_IS_INGRESS_LATENCY_PROFILE(_gport) \
   3212         (_SHR_GPORT_IS_ANY_PROFILE(_gport) &&        \
   3213         ((((_gport) >> _SHR_GPORT_PROFILE_TYPE_SHIFT) & _SHR_GPORT_PROFILE_TYPE_MASK) ==  _SHR_GPORT_PROFILE_TYPE_INGRESS_LATENCY))
   3214 
   3215 #define _SHR_GPORT_IS_END_TO_END_LATENCY_PROFILE(_gport) \
   3216         (_SHR_GPORT_IS_ANY_PROFILE(_gport) &&        \
   3217         ((((_gport) >> _SHR_GPORT_PROFILE_TYPE_SHIFT) & _SHR_GPORT_PROFILE_TYPE_MASK) ==  _SHR_GPORT_PROFILE_TYPE_END_TO_END_LATENCY))
   3218 
   3219 #define _SHR_GPORT_CREDIT_REQUEST_PROFILE_GET(_gport)   \
   3220         _SHR_GPORT_PROFILE_GET(_gport)
   3221 
   3222 #define _SHR_GPORT_INGRESS_LATENCY_PROFILE_GET(_gport)   \
   3223         _SHR_GPORT_PROFILE_GET(_gport)
   3224 
   3225 #define _SHR_GPORT_END_TO_END_LATENCY_PROFILE_GET(_gport)   \
   3226         _SHR_GPORT_PROFILE_GET(_gport)        
   3227 
   3228 #define _SHR_GPORT_CREDIT_REQUEST_PROFILE_SET(_gport, _profile)                              \
   3229         ((_gport) = (_SHR_GPORT_TYPE_PROFILE << _SHR_GPORT_TYPE_SHIFT)  |                    \
   3230         (_SHR_GPORT_PROFILE_TYPE_CREDIT_REQUEST << _SHR_GPORT_PROFILE_TYPE_SHIFT) |           \
   3231         (((_profile) & _SHR_GPORT_PROFILE_MASK) << _SHR_GPORT_PROFILE_SHIFT))
   3232 
   3233 #define _SHR_GPORT_INGRESS_LATENCY_PROFILE_SET(_gport, _profile)                              \
   3234         ((_gport) = (_SHR_GPORT_TYPE_PROFILE << _SHR_GPORT_TYPE_SHIFT)  |                    \
   3235         (_SHR_GPORT_PROFILE_TYPE_INGRESS_LATENCY << _SHR_GPORT_PROFILE_TYPE_SHIFT) |           \
   3236         (((_profile) & _SHR_GPORT_PROFILE_MASK) << _SHR_GPORT_PROFILE_SHIFT))
   3237 
   3238 #define _SHR_GPORT_END_TO_END_LATENCY_PROFILE_SET(_gport, _profile)                              \
   3239         ((_gport) = (_SHR_GPORT_TYPE_PROFILE << _SHR_GPORT_TYPE_SHIFT)  |                    \
   3240         (_SHR_GPORT_PROFILE_TYPE_END_TO_END_LATENCY << _SHR_GPORT_PROFILE_TYPE_SHIFT) |           \
   3241         (((_profile) & _SHR_GPORT_PROFILE_MASK) << _SHR_GPORT_PROFILE_SHIFT))
   3242 
   3243 #define _SHR_GPORT_LOCAL_FABRIC_SET(_gport, _link_id)\
   3244         ((_gport) = (_SHR_GPORT_TYPE_LOCAL << _SHR_GPORT_TYPE_SHIFT) |\
   3245         (_SHR_GPORT_LOCAL_TYPE_FABRIC << _SHR_GPORT_LOCAL_TYPE_SHIFT) |\
   3246         (((_link_id) & _SHR_GPORT_PORT_MASK) << _SHR_GPORT_PORT_SHIFT))
   3247 
   3248 #define _SHR_GPORT_LOCAL_FABRIC_GET(_gport) \
   3249         (((_gport) >> _SHR_GPORT_PORT_SHIFT) & _SHR_GPORT_PORT_MASK)
   3250 
   3251 #define _SHR_GPORT_IS_LOCAL_FABRIC(_gport) \
   3252         (((((_gport) >> _SHR_GPORT_TYPE_SHIFT) & _SHR_GPORT_TYPE_MASK) == \
   3253           _SHR_GPORT_TYPE_LOCAL) && \
   3254          ((((_gport) >> _SHR_GPORT_LOCAL_TYPE_SHIFT) & _SHR_GPORT_LOCAL_TYPE_MASK) == \
   3255           _SHR_GPORT_LOCAL_TYPE_FABRIC))
   3256 
   3257 #define _SHR_GPORT_IS_LOCAL_INTERFACE(_gport) \
   3258         (((((_gport) >> _SHR_GPORT_TYPE_SHIFT) & _SHR_GPORT_TYPE_MASK) == \
   3259           _SHR_GPORT_TYPE_LOCAL) && \
   3260          ((((_gport) >> _SHR_GPORT_LOCAL_TYPE_SHIFT) & _SHR_GPORT_LOCAL_TYPE_MASK) == \
   3261           _SHR_GPORT_LOCAL_TYPE_INTERFACE))
   3262 
   3263 #define _SHR_GPORT_LOCAL_INTERFACE_SET(_gport, _port)\
   3264         ((_gport) = (_SHR_GPORT_TYPE_LOCAL << _SHR_GPORT_TYPE_SHIFT) |\
   3265         (_SHR_GPORT_LOCAL_TYPE_INTERFACE << _SHR_GPORT_LOCAL_TYPE_SHIFT) |\
   3266         (((_port) & _SHR_GPORT_PORT_MASK) << _SHR_GPORT_PORT_SHIFT))
   3267  
   3268 #define _SHR_GPORT_LOCAL_INTERFACE_GET(_gport) \
   3269         (((_gport) >> _SHR_GPORT_PORT_SHIFT) & _SHR_GPORT_PORT_MASK)
   3270 
   3271 #define _SHR_COSQ_GPORT_IS_E2E_INTERFACE(_gport) \
   3272         (_SHR_GPORT_IS_COSQ(_gport) && \
   3273         ((((_gport) >> _SHR_COSQ_GPORT_TYPE_SHIFT) & _SHR_COSQ_GPORT_TYPE_MASK) == \
   3274         _SHR_COSQ_GPORT_TYPE_E2E_INTERFACE))
   3275 
   3276 #define _SHR_COSQ_GPORT_E2E_INTERFACE_SET(_gport, _port) \
   3277         ((_gport) = (_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT) | \
   3278         (_SHR_COSQ_GPORT_TYPE_E2E_INTERFACE << _SHR_COSQ_GPORT_TYPE_SHIFT) | \
   3279         (((_port) & _SHR_COSQ_GPORT_E2E_PORT_MASK) << _SHR_COSQ_GPORT_E2E_PORT_SHIFT))
   3280 
   3281 #define _SHR_COSQ_GPORT_E2E_INTERFACE_GET(_gport) \
   3282         (((_gport) >> _SHR_COSQ_GPORT_E2E_PORT_SHIFT) & _SHR_COSQ_GPORT_E2E_PORT_MASK)
   3283 
   3284 #define _SHR_GPORT_FABRIC_RX_QUEUE_TYPE_UCAST          0
   3285 #define _SHR_GPORT_FABRIC_RX_QUEUE_TYPE_MCAST          1
   3286 #define _SHR_GPORT_FABRIC_RX_QUEUE_TYPE_TDM            2
   3287 #define _SHR_GPORT_FABRIC_RX_QUEUE_TYPE_LOCAL_UCAST    3
   3288 #define _SHR_GPORT_FABRIC_RX_QUEUE_TYPE_LOCAL_MCAST    4
   3289 #define _SHR_GPORT_FABRIC_RX_QUEUE_TYPE_LOCAL_TDM      5
   3290 #define _SHR_GPORT_FABRIC_RX_QUEUE_TYPE_GENERIC_PIPE   6
   3291 
   3292 /*Set macros*/
   3293 #define _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_UCAST_SET(_gport, _core)  \
   3294     _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_SET(_gport, _core, 0, _SHR_GPORT_FABRIC_RX_QUEUE_TYPE_UCAST)
   3295 
   3296 #define _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_MCAST_SET(_gport, _core)  \
   3297     _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_SET(_gport, _core, 0, _SHR_GPORT_FABRIC_RX_QUEUE_TYPE_MCAST)
   3298 
   3299 #define _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_TDM_SET(_gport, _core)  \
   3300     _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_SET(_gport, _core, 0, _SHR_GPORT_FABRIC_RX_QUEUE_TYPE_TDM)
   3301 
   3302 #define _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_LOCAL_UCAST_SET(_gport, _core)  \
   3303     _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_SET(_gport, _core, 0, _SHR_GPORT_FABRIC_RX_QUEUE_TYPE_LOCAL_UCAST)
   3304 
   3305 #define _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_LOCAL_MCAST_SET(_gport, _core)  \
   3306     _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_SET(_gport, _core, 0, _SHR_GPORT_FABRIC_RX_QUEUE_TYPE_LOCAL_MCAST)
   3307 
   3308 #define _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_LOCAL_TDM_SET(_gport, _core)  \
   3309     _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_SET(_gport, _core, 0, _SHR_GPORT_FABRIC_RX_QUEUE_TYPE_LOCAL_TDM)
   3310 
   3311 #define _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_GENERIC_PIPE_SET(_gport, _core, _pipe)  \
   3312     _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_SET(_gport, _core, _pipe, _SHR_GPORT_FABRIC_RX_QUEUE_TYPE_GENERIC_PIPE)
   3313 
   3314 #define _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_SET(_gport, _core, _pipe, _fabric_rx_queue_type)\
   3315             ((_gport) = (_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT)   | \
   3316              (_SHR_COSQ_GPORT_TYPE_FABRIC_RX_QUEUE << _SHR_COSQ_GPORT_TYPE_SHIFT)   | \
   3317              (_SHR_CORE_ID2FIELD(_core) << _SHR_COSQ_GPORT_COMMON_CORE_SHIFT) | \
   3318              (((_pipe) & _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_PIPE_MASK) << _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_PIPE_SHIFT) | \
   3319              (((_fabric_rx_queue_type) & _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_TYPE_MASK)  << _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_TYPE_SHIFT))
   3320 
   3321 /*get macros*/
   3322 #define _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_UCAST_CORE_GET(_gport)  \
   3323     _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_CORE_GET(_gport)
   3324 
   3325 #define _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_MCAST_CORE_GET(_gport)  \
   3326     _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_CORE_GET(_gport)
   3327 
   3328 #define _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_TDM_CORE_GET(_gport)  \
   3329     _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_CORE_GET(_gport)
   3330 
   3331 #define _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_LOCAL_UCAST_CORE_GET(_gport)  \
   3332     _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_CORE_GET(_gport)
   3333 
   3334 #define _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_LOCAL_MCAST_CORE_GET(_gport)  \
   3335     _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_CORE_GET(_gport)
   3336 
   3337 #define _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_LOCAL_TDM_CORE_GET(_gport)  \
   3338     _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_CORE_GET(_gport)
   3339 
   3340 #define _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_GENERIC_PIPE_CORE_GET(_gport)  \
   3341     _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_CORE_GET(_gport)
   3342 
   3343 #define _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_GENERIC_PIPE_PIPE_GET(_gport)  \
   3344     _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_PIPE_GET(_gport)
   3345 
   3346 #define _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_CORE_GET(_gport)\
   3347     _SHR_CORE_FIELD2ID(((_gport) >> _SHR_COSQ_GPORT_COMMON_CORE_SHIFT) & _SHR_COSQ_GPORT_COMMON_CORE_MASK)
   3348 
   3349 #define _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_PIPE_GET(_gport)\
   3350     (((_gport) >> _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_PIPE_SHIFT) & _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_PIPE_MASK)
   3351 
   3352 /*is macros*/
   3353 #define _SHR_COSQ_GPORT_IS_FABRIC_RX_QUEUE_UCAST(_gport)  \
   3354     _SHR_COSQ_GPORT_IS_FABRIC_RX_QUEUE_TYPE(_gport, _SHR_GPORT_FABRIC_RX_QUEUE_TYPE_UCAST)
   3355 
   3356 #define _SHR_COSQ_GPORT_IS_FABRIC_RX_QUEUE_MCAST(_gport)  \
   3357     _SHR_COSQ_GPORT_IS_FABRIC_RX_QUEUE_TYPE(_gport, _SHR_GPORT_FABRIC_RX_QUEUE_TYPE_MCAST)
   3358 
   3359 #define _SHR_COSQ_GPORT_IS_FABRIC_RX_QUEUE_TDM(_gport)  \
   3360     _SHR_COSQ_GPORT_IS_FABRIC_RX_QUEUE_TYPE(_gport, _SHR_GPORT_FABRIC_RX_QUEUE_TYPE_TDM)
   3361 
   3362 #define _SHR_COSQ_GPORT_IS_FABRIC_RX_QUEUE_LOCAL_UCAST(_gport)  \
   3363     _SHR_COSQ_GPORT_IS_FABRIC_RX_QUEUE_TYPE(_gport, _SHR_GPORT_FABRIC_RX_QUEUE_TYPE_LOCAL_UCAST)
   3364 
   3365 #define _SHR_COSQ_GPORT_IS_FABRIC_RX_QUEUE_LOCAL_MCAST(_gport)  \
   3366     _SHR_COSQ_GPORT_IS_FABRIC_RX_QUEUE_TYPE(_gport, _SHR_GPORT_FABRIC_RX_QUEUE_TYPE_LOCAL_MCAST)
   3367 
   3368 #define _SHR_COSQ_GPORT_IS_FABRIC_RX_QUEUE_LOCAL_TDM(_gport)  \
   3369     _SHR_COSQ_GPORT_IS_FABRIC_RX_QUEUE_TYPE(_gport, _SHR_GPORT_FABRIC_RX_QUEUE_TYPE_LOCAL_TDM)
   3370 
   3371 #define _SHR_COSQ_GPORT_IS_FABRIC_RX_QUEUE_GENERIC_PIPE(_gport)  \
   3372     _SHR_COSQ_GPORT_IS_FABRIC_RX_QUEUE_TYPE(_gport, _SHR_GPORT_FABRIC_RX_QUEUE_TYPE_GENERIC_PIPE)
   3373 
   3374 #define _SHR_COSQ_GPORT_IS_FABRIC_RX_QUEUE_TYPE(_gport, _fabric_rx_queue_type)\
   3375     (_SHR_GPORT_IS_COSQ(_gport) &&   \
   3376     ((((_gport) >> _SHR_COSQ_GPORT_TYPE_SHIFT) & _SHR_COSQ_GPORT_TYPE_MASK) == _SHR_COSQ_GPORT_TYPE_FABRIC_RX_QUEUE) && \
   3377     ((((_gport) >> _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_TYPE_SHIFT) & _SHR_COSQ_GPORT_FABRIC_RX_QUEUE_TYPE_MASK) ==  _fabric_rx_queue_type))
   3378 
   3379 /* Core Gport */
   3380 #define _SHR_COSQ_GPORT_CORE_SET(_gport, _core)                                 \
   3381         ((_gport) = (_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT)   |         \
   3382          (_SHR_COSQ_GPORT_TYPE_CORE << _SHR_COSQ_GPORT_TYPE_SHIFT)   |          \
   3383          ((_core == _SHR_CORE_ALL) ? (_SHR_COSQ_GPORT_COMMON_ALL_CORES_VALUE) : \
   3384          (((_core) & _SHR_COSQ_GPORT_CORE_MASK)  << _SHR_COSQ_GPORT_CORE_SHIFT)))
   3385 
   3386 #define _SHR_COSQ_GPORT_CORE_GET(_gport)                                                                           \
   3387         (((((_gport) >> _SHR_COSQ_GPORT_CORE_SHIFT) & _SHR_COSQ_GPORT_CORE_MASK) == (_SHR_COSQ_GPORT_COMMON_ALL_CORES_VALUE)) ? (_SHR_CORE_ALL) : \
   3388           (((_gport) >> _SHR_COSQ_GPORT_CORE_SHIFT) & _SHR_COSQ_GPORT_CORE_MASK))
   3389 
   3390 #define _SHR_COSQ_GPORT_IS_CORE(_gport)                                       \
   3391         (_SHR_GPORT_IS_COSQ(_gport) &&                                                 \
   3392         ((((_gport) >> _SHR_COSQ_GPORT_TYPE_SHIFT) & _SHR_COSQ_GPORT_TYPE_MASK) ==     \
   3393                                                 _SHR_COSQ_GPORT_TYPE_CORE))
   3394 #define _SHR_COSQ_GPORT_RCY_SET(_gport, _core)                                 \
   3395         ((_gport) = (_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT)   |         \
   3396          (_SHR_COSQ_GPORT_TYPE_RCY << _SHR_COSQ_GPORT_TYPE_SHIFT)    |         \
   3397          ((_core == _SHR_CORE_ALL) ? (_SHR_COSQ_GPORT_COMMON_ALL_CORES_VALUE) : \
   3398          (((_core) & _SHR_COSQ_GPORT_CORE_MASK)  << _SHR_COSQ_GPORT_CORE_SHIFT)))
   3399 
   3400 #define _SHR_COSQ_GPORT_IS_RCY(_gport)                                       \
   3401         (_SHR_GPORT_IS_COSQ(_gport) &&                                                 \
   3402         ((((_gport) >> _SHR_COSQ_GPORT_TYPE_SHIFT) & _SHR_COSQ_GPORT_TYPE_MASK) ==     \
   3403                                                 _SHR_COSQ_GPORT_TYPE_RCY))
   3404 
   3405 #define _SHR_COSQ_GPORT_RCY_MIRR_SET(_gport, _core)                                 \
   3406         ((_gport) = (_SHR_GPORT_TYPE_COSQ << _SHR_GPORT_TYPE_SHIFT)   |         \
   3407          (_SHR_COSQ_GPORT_TYPE_RCY_MIRR << _SHR_COSQ_GPORT_TYPE_SHIFT)|        \
   3408          ((_core == _SHR_CORE_ALL) ? (_SHR_COSQ_GPORT_COMMON_ALL_CORES_VALUE) : \
   3409          (((_core) & _SHR_COSQ_GPORT_CORE_MASK)  << _SHR_COSQ_GPORT_CORE_SHIFT)))
   3410 
   3411 #define _SHR_COSQ_GPORT_IS_RCY_MIRR(_gport)                                       \
   3412         (_SHR_GPORT_IS_COSQ(_gport) &&                                                 \
   3413         ((((_gport) >> _SHR_COSQ_GPORT_TYPE_SHIFT) & _SHR_COSQ_GPORT_TYPE_MASK) ==     \
   3414                                                 _SHR_COSQ_GPORT_TYPE_RCY_MIRR))
   3415 
   3416 /* GPORT subtypes */
   3417 #define _SHR_GPORT_SUB_TYPE_PROTECTION                  0
   3418 #define _SHR_GPORT_SUB_TYPE_FORWARD_GROUP               1
   3419 #define _SHR_GPORT_SUB_TYPE_LIF                         2
   3420 #define _SHR_GPORT_SUB_TYPE_MULTICAST                   3
   3421 #define _SHR_GPORT_SUB_TYPE_MPLS_PUSH_PROFILE           4
   3422 #define _SHR_GPORT_SUB_TYPE_VLAN_TRANSLATION            7
   3423 /**
   3424  * \brief
   3425  *   Used to hold handles to 'virtual egress pointed' objects.
   3426  */
   3427 #define _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_POINTED      8
   3428 
   3429 #define _SHR_GPORT_SUB_TYPE_TRILL_OUTLIF                2
   3430 
   3431 /**
   3432  * \brief
   3433  *  Used to hold handles to ingress glifless native logical interfaces.
   3434  */
   3435 
   3436 #define _SHR_GPORT_SUB_TYPE_VIRTUAL_INGRESS_NATIVE      (4)
   3437 /**
   3438  * \brief
   3439  *  Used to hold handles to egress default match info.
   3440  */
   3441 
   3442 #define _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_DEFAULT      (5)
   3443 /**
   3444  * \brief
   3445  *  Used to hold egress vlan translation (esem) native / non-native handlers.
   3446  */
   3447 #define _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_MATCH                (6)
   3448 
   3449 #define _SHR_GPORT_SUB_TYPE_SHIFT                      22
   3450 #define _SHR_GPORT_SUB_TYPE_MASK                      0xF
   3451 
   3452 /* SUB GPORT MULTICAST Protection Switch */
   3453 #define _SHR_GPORT_SUB_TYPE_MULTICAST_PS_SECONDARY        0
   3454 #define _SHR_GPORT_SUB_TYPE_MULTICAST_PS_PRIMARY          1
   3455 
   3456 #define _SHR_GPORT_SUB_TYPE_MULTICAST_PS_SHIFT           21
   3457 #define _SHR_GPORT_SUB_TYPE_MULTICAST_PS_MASK           0x1
   3458 
   3459 #define _SHR_GPORT_SUB_TYPE_MULTICAST_SHIFT               0
   3460 #define _SHR_GPORT_SUB_TYPE_MULTICAST_MASK          0x1FFFF
   3461 
   3462 /* SUB GPORT LIF Exclude Bits */
   3463 #define _SHR_GPORT_SUB_TYPE_LIF_EXC_INGRESS_ONLY          1
   3464 #define _SHR_GPORT_SUB_TYPE_LIF_EXC_EGRESS_ONLY           2
   3465 
   3466 #define _SHR_GPORT_SUB_TYPE_LIF_EXC_SHIFT                20
   3467 #define _SHR_GPORT_SUB_TYPE_LIF_EXC_MASK                0x3
   3468 
   3469 #define _SHR_GPORT_SUB_TYPE_LIF_SHIFT                      0
   3470 #define _SHR_GPORT_SUB_TYPE_LIF_MASK                 0xFFFFF
   3471 
   3472 /* SUB GPORT FORWARD GROUP */
   3473 #define _SHR_GPORT_SUB_TYPE_FORWARD_GROUP_SHIFT            0
   3474 #define _SHR_GPORT_SUB_TYPE_FORWARD_GROUP_MASK       0x1FFFF
   3475 
   3476 /* SUB GPORT PROTECTION */
   3477 #define _SHR_GPORT_SUB_TYPE_PROTECTION_SHIFT               0
   3478 #define _SHR_GPORT_SUB_TYPE_PROTECTION_MASK          0x1FFFF
   3479 
   3480 /* SUB GPORT VLAN_TRANSLATION */
   3481 #define _SHR_GPORT_SUB_TYPE_VLAN_TRANSLATION_SHIFT                0
   3482 #define _SHR_GPORT_SUB_TYPE_VLAN_TRANSLATION_MASK         (0x3FFFFF)
   3483 
   3484 /* SUB GPORT VIRTUAL_EGRESS_POINTED */
   3485 #define _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_POINTED_SHIFT          0
   3486 #define _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_POINTED_MASK   (0x3FFFFF)
   3487 
   3488 /* SUB GPORT PUSH PROFILE */
   3489 #define _SHR_GPORT_SUB_TYPE_MPLS_PUSH_PROFILE_SHIFT               0
   3490 #define _SHR_GPORT_SUB_TYPE_MPLS_PUSH_PROFILE_MASK              0xF
   3491 
   3492 #define _SHR_GPORT_SUB_TYPE_TRILL_OUTLIF_SHIFT             0
   3493 #define _SHR_GPORT_SUB_TYPE_TRILL_OUTLIF_MASK        0x3FFFF
   3494 
   3495 /* SUB GPORT VIRTUAL INGRESS NATIVE */
   3496 #define _SHR_GPORT_SUB_TYPE_VIRTUAL_INGRESS_NATIVE_SHIFT             (0)
   3497 #define _SHR_GPORT_SUB_TYPE_VIRTUAL_INGRESS_NATIVE_MASK       (0x3FFFFF)
   3498 
   3499 /* SUB GPORT VIRTUAL EGRESS_DEFAULT */
   3500 #define _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_DEFAULT_SHIFT      (0)
   3501 #define _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_DEFAULT_MASK    (0xFF)
   3502 
   3503 /* SUB GPORT VIRTUAL EGRESS MATCH */
   3504 #define _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_MATCH_SHIFT             (0)
   3505 #define _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_MATCH_MASK       (0x3FFFFF)
   3506 
   3507 /* GPORT subtypes MACROS */
   3508 
   3509 /* given gport return if this is PROTECTION subtype */
   3510 #define _SHR_GPORT_SUB_TYPE_IS_PROTECTION(_gport)             \
   3511     ((((_gport) >> _SHR_GPORT_SUB_TYPE_SHIFT) & _SHR_GPORT_SUB_TYPE_MASK) == _SHR_GPORT_SUB_TYPE_PROTECTION)
   3512 
   3513 /* given gport return if this is FORWARD GROUP subtype */
   3514 #define _SHR_GPORT_SUB_TYPE_IS_FORWARD_GROUP(_gport)             \
   3515     ((((_gport) >> _SHR_GPORT_SUB_TYPE_SHIFT) & _SHR_GPORT_SUB_TYPE_MASK) == _SHR_GPORT_SUB_TYPE_FORWARD_GROUP)
   3516 
   3517 /* given gport return if this is LIF subtype */
   3518 #define _SHR_GPORT_SUB_TYPE_IS_LIF(_gport)             \
   3519     ((((_gport) >> _SHR_GPORT_SUB_TYPE_SHIFT) & _SHR_GPORT_SUB_TYPE_MASK) == _SHR_GPORT_SUB_TYPE_LIF)
   3520 
   3521 /* given gport return if this is MULTICAST subtype */
   3522 #define _SHR_GPORT_SUB_TYPE_IS_MULTICAST(_gport)             \
   3523     ((((_gport) >> _SHR_GPORT_SUB_TYPE_SHIFT) & _SHR_GPORT_SUB_TYPE_MASK) == _SHR_GPORT_SUB_TYPE_MULTICAST)
   3524 
   3525 /* given gport return if this is VLAN_TRANSLATION subtype */
   3526 #define _SHR_GPORT_SUB_TYPE_IS_L3_VLAN_TRANSLATION(_gport)             \
   3527      ((((_gport) >> _SHR_GPORT_SUB_TYPE_SHIFT) & _SHR_GPORT_SUB_TYPE_MASK) == _SHR_GPORT_SUB_TYPE_VLAN_TRANSLATION)
   3528 
   3529 /* given gport return if this is VIRTUAL_EGRESS_POINTED subtype */
   3530 #define _SHR_GPORT_SUB_TYPE_IS_VIRTUAL_EGRESS_POINTED(_gport)          \
   3531      ((((_gport) >> _SHR_GPORT_SUB_TYPE_SHIFT) & _SHR_GPORT_SUB_TYPE_MASK) == _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_POINTED)
   3532 
   3533 /* given gport return if this is MPLS PUSH PROFILE subtype */
   3534 #define _SHR_GPORT_SUB_TYPE_IS_MPLS_PUSH_PROFILE(_gport)             \
   3535     ((((_gport) >> _SHR_GPORT_SUB_TYPE_SHIFT) & _SHR_GPORT_SUB_TYPE_MASK) == _SHR_GPORT_SUB_TYPE_MPLS_PUSH_PROFILE)
   3536 
   3537 /* given gport return if this is TRILL_OUTLIF subtype */
   3538 #define _SHR_GPORT_SUB_TYPE_IS_TRILL_OUTLIF(_gport)             \
   3539     ((((_gport) >> _SHR_GPORT_SUB_TYPE_SHIFT) & _SHR_GPORT_SUB_TYPE_MASK) == _SHR_GPORT_SUB_TYPE_TRILL_OUTLIF)
   3540 
   3541  /*
   3542   * given gport return if the sub-type is Ingress native 
   3543   */
   3544 #define _SHR_GPORT_SUB_TYPE_IS_VIRTUAL_INGRESS_NATIVE(_gport)             \
   3545      ((((_gport) >> _SHR_GPORT_SUB_TYPE_SHIFT) & _SHR_GPORT_SUB_TYPE_MASK) == _SHR_GPORT_SUB_TYPE_VIRTUAL_INGRESS_NATIVE)
   3546 
   3547 /* given gport return if this is Virtual Egress Default subtype */
   3548 #define _SHR_GPORT_SUB_TYPE_IS_VIRTUAL_EGRESS_DEFAULT(_gport)             \
   3549     ((((_gport) >> _SHR_GPORT_SUB_TYPE_SHIFT) & _SHR_GPORT_SUB_TYPE_MASK) == _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_DEFAULT)
   3550 
   3551 /* given gport return if this is Virtual EGRESS MATCH subtype */
   3552 #define _SHR_GPORT_SUB_TYPE_IS_VIRTUAL_EGRESS_MATCH(_gport)             \
   3553     ((((_gport) >> _SHR_GPORT_SUB_TYPE_SHIFT) & _SHR_GPORT_SUB_TYPE_MASK) == _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_MATCH)
   3554 
   3555 /* given gport return its subtype */
   3556 #define _SHR_GPORT_SUB_TYPE_GET(_gport)             \
   3557     (((_gport) >> _SHR_GPORT_SUB_TYPE_SHIFT) & _SHR_GPORT_SUB_TYPE_MASK)
   3558 
   3559 /* Get GPORT subvalue of subtype PROTECTION */
   3560 #define _SHR_GPORT_SUB_TYPE_PROTECTION_GET(_gport) \
   3561     ((_SHR_GPORT_SUB_TYPE_GET(_gport) == _SHR_GPORT_SUB_TYPE_PROTECTION) ? \
   3562      (((_gport) >> _SHR_GPORT_SUB_TYPE_PROTECTION_SHIFT) & _SHR_GPORT_SUB_TYPE_PROTECTION_MASK):-1)
   3563 
   3564 /* Get GPORT subvalue of subtype FORWARD_GROUP */
   3565 #define _SHR_GPORT_SUB_TYPE_FORWARD_GROUP_GET(_gport) \
   3566     ((_SHR_GPORT_SUB_TYPE_GET(_gport) == _SHR_GPORT_SUB_TYPE_FORWARD_GROUP) ? \
   3567      (((_gport) >> _SHR_GPORT_SUB_TYPE_FORWARD_GROUP_SHIFT) & _SHR_GPORT_SUB_TYPE_FORWARD_GROUP_MASK) :-1)
   3568 
   3569 /* Get GPORT subvalues of subtype LIF */
   3570 #define _SHR_GPORT_SUB_TYPE_LIF_VAL_GET(_gport) \
   3571     ((_SHR_GPORT_SUB_TYPE_GET(_gport) == _SHR_GPORT_SUB_TYPE_LIF) ? \
   3572      (((_gport) >> _SHR_GPORT_SUB_TYPE_LIF_SHIFT) & _SHR_GPORT_SUB_TYPE_LIF_MASK) :-1)
   3573 #define _SHR_GPORT_SUB_TYPE_LIF_EXC_GET(_gport) \
   3574     ((_SHR_GPORT_SUB_TYPE_GET(_gport) == _SHR_GPORT_SUB_TYPE_LIF) ? \
   3575      (((_gport) >> _SHR_GPORT_SUB_TYPE_LIF_EXC_SHIFT) & _SHR_GPORT_SUB_TYPE_LIF_EXC_MASK) :-1)
   3576 
   3577 /* Get GPORT subvalues of subtype MULTICAST */
   3578 #define _SHR_GPORT_SUB_TYPE_MULTICAST_VAL_GET(_gport) \
   3579     ((_SHR_GPORT_SUB_TYPE_GET(_gport) == _SHR_GPORT_SUB_TYPE_MULTICAST) ? \
   3580      (((_gport) >> _SHR_GPORT_SUB_TYPE_MULTICAST_SHIFT) & _SHR_GPORT_SUB_TYPE_MULTICAST_MASK) :-1)
   3581 #define _SHR_GPORT_SUB_TYPE_MULTICAST_PS_GET(_gport) \
   3582     ((_SHR_GPORT_SUB_TYPE_GET(_gport) == _SHR_GPORT_SUB_TYPE_MULTICAST) ? \
   3583      (((_gport) >> _SHR_GPORT_SUB_TYPE_MULTICAST_PS_SHIFT) & _SHR_GPORT_SUB_TYPE_MULTICAST_PS_MASK) :-1)
   3584 
   3585 /* Get GPORT subvalue of subtype VLAN_TRANSLATION */
   3586 #define _SHR_GPORT_SUB_TYPE_L3_VLAN_TRANSLATION_GET(_gport) \
   3587      ((_SHR_GPORT_SUB_TYPE_GET(_gport) == _SHR_GPORT_SUB_TYPE_VLAN_TRANSLATION) ? \
   3588       (((_gport) >> _SHR_GPORT_SUB_TYPE_VLAN_TRANSLATION_SHIFT) & _SHR_GPORT_SUB_TYPE_VLAN_TRANSLATION_MASK):-1)
   3589 
   3590 /* Get GPORT subvalue of subtype VIRTUAL_EGRESS_POINTED */
   3591 #define _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_POINTED_GET(_gport) \
   3592      ((_SHR_GPORT_SUB_TYPE_GET(_gport) == _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_POINTED) ? \
   3593       (((_gport) >> _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_POINTED_SHIFT) & _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_POINTED_MASK):-1)
   3594 
   3595 /* Get GPORT subvalue of subtype PUSH PROFILE */
   3596 #define _SHR_GPORT_SUB_TYPE_MPLS_PUSH_PROFILE_GET(_gport) \
   3597     ((_SHR_GPORT_SUB_TYPE_GET(_gport) == _SHR_GPORT_SUB_TYPE_MPLS_PUSH_PROFILE) ? \
   3598      (((_gport) >> _SHR_GPORT_SUB_TYPE_MPLS_PUSH_PROFILE_SHIFT) & _SHR_GPORT_SUB_TYPE_MPLS_PUSH_PROFILE_MASK):-1)
   3599 
   3600 /* Get GPORT subvalue of subtype TRILL_OUTLIF */
   3601 #define _SHR_GPORT_SUB_TYPE_TRILL_OUTLIF_GET(_gport) \
   3602     ((_SHR_GPORT_SUB_TYPE_GET(_gport) == _SHR_GPORT_SUB_TYPE_TRILL_OUTLIF) ? \
   3603      (((_gport) >> _SHR_GPORT_SUB_TYPE_TRILL_OUTLIF_SHIFT) & _SHR_GPORT_SUB_TYPE_TRILL_OUTLIF_MASK):-1)
   3604 
   3605  /*
   3606   * Get GPORT subvalue of subtype Virtual INGRESS NATIVE 
   3607   */
   3608 #define _SHR_GPORT_SUB_TYPE_VIRTUAL_INGRESS_NATIVE_GET(_gport) \
   3609      ((_SHR_GPORT_SUB_TYPE_GET(_gport) == _SHR_GPORT_SUB_TYPE_VIRTUAL_INGRESS_NATIVE) ? \
   3610       (((_gport) >> _SHR_GPORT_SUB_TYPE_VIRTUAL_INGRESS_NATIVE_SHIFT) & _SHR_GPORT_SUB_TYPE_VIRTUAL_INGRESS_NATIVE_MASK):-1)
   3611 
   3612  /*
   3613   * Get GPORT subvalue of subtype Virtual Egress Port Default 
   3614   */
   3615 #define _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_DEFAULT_GET(_gport) \
   3616      ((_SHR_GPORT_SUB_TYPE_GET(_gport) == _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_DEFAULT) ? \
   3617       (((_gport) >> _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_DEFAULT_SHIFT) & _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_DEFAULT_MASK):-1)
   3618 
   3619 /* Get GPORT subvalue of subtype Virtual EGRESS MATCH */
   3620 #define _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_MATCH_GET(_gport) \
   3621     ((_SHR_GPORT_SUB_TYPE_GET(_gport) == _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_MATCH) ? \
   3622      (((_gport) >> _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_MATCH_SHIFT) & _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_MATCH_MASK):-1)
   3623 
   3624 /* Set GPORT subvalue and subtype PROTECTION */
   3625 #define _SHR_GPORT_SUB_TYPE_PROTECTION_SET(_gport, _protection_val) \
   3626     ((_gport) = (_SHR_GPORT_SUB_TYPE_PROTECTION << _SHR_GPORT_SUB_TYPE_SHIFT)   | \
   3627       (((_protection_val) & _SHR_GPORT_SUB_TYPE_PROTECTION_MASK) << _SHR_GPORT_SUB_TYPE_PROTECTION_SHIFT))
   3628 
   3629 /* Set GPORT subvalue and subtype FORWARD_GROUP */
   3630 #define _SHR_GPORT_SUB_TYPE_FORWARD_GROUP_SET(_gport, _fwd_group_val) \
   3631     ((_gport) = (_SHR_GPORT_SUB_TYPE_FORWARD_GROUP << _SHR_GPORT_SUB_TYPE_SHIFT)   | \
   3632       (((_fwd_group_val) & _SHR_GPORT_SUB_TYPE_FORWARD_GROUP_MASK) << _SHR_GPORT_SUB_TYPE_FORWARD_GROUP_SHIFT))
   3633 
   3634 /* Set GPORT subvalue and subtype LIF */
   3635 #define _SHR_GPORT_SUB_TYPE_LIF_SET(_gport, _exc_val, _lif_val) \
   3636     ((_gport) = (_SHR_GPORT_SUB_TYPE_LIF << _SHR_GPORT_SUB_TYPE_SHIFT)   | \
   3637       (((_exc_val) & _SHR_GPORT_SUB_TYPE_LIF_EXC_MASK) << _SHR_GPORT_SUB_TYPE_LIF_EXC_SHIFT)    |\
   3638       (((_lif_val) & _SHR_GPORT_SUB_TYPE_LIF_MASK) << _SHR_GPORT_SUB_TYPE_LIF_SHIFT))
   3639 
   3640 /* Set GPORT subvalue and subtype MULTICAST */
   3641 #define _SHR_GPORT_SUB_TYPE_MULTICAST_SET(_gport, _ps_val, _multicast_val) \
   3642     ((_gport) = (_SHR_GPORT_SUB_TYPE_MULTICAST << _SHR_GPORT_SUB_TYPE_SHIFT)   | \
   3643       (((_ps_val) & _SHR_GPORT_SUB_TYPE_MULTICAST_PS_MASK) << _SHR_GPORT_SUB_TYPE_MULTICAST_PS_SHIFT)    |\
   3644       (((_multicast_val) & _SHR_GPORT_SUB_TYPE_MULTICAST_MASK) << _SHR_GPORT_SUB_TYPE_MULTICAST_SHIFT))
   3645 
   3646 /* Set GPORT subvalue and subtype VLAN_TRANSLATION */
   3647 #define _SHR_GPORT_SUB_TYPE_L3_VLAN_TRANSLATION_SET(_gport, _vlan_translation_val) \
   3648      ((_gport) = (_SHR_GPORT_SUB_TYPE_VLAN_TRANSLATION << _SHR_GPORT_SUB_TYPE_SHIFT)   | \
   3649        (((_vlan_translation_val) & _SHR_GPORT_SUB_TYPE_VLAN_TRANSLATION_MASK) << _SHR_GPORT_SUB_TYPE_VLAN_TRANSLATION_SHIFT))
   3650 
   3651 /* Set GPORT subvalue and subtype VIRTUAL_EGRESS_POINTED */
   3652 #define _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_POINTED_SET(_gport, _virtual_egress_pointed_val) \
   3653      ((_gport) = (_SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_POINTED << _SHR_GPORT_SUB_TYPE_SHIFT)   | \
   3654        (((_virtual_egress_pointed_val) & _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_POINTED_MASK) << _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_POINTED_SHIFT))
   3655 
   3656 /* Set GPORT subvalue and subtype PUSH PROFILE */
   3657 #define _SHR_GPORT_SUB_TYPE_MPLS_PUSH_PROFILE_SET(_gport, _mpls_push_profile_val) \
   3658     ((_gport) = (_SHR_GPORT_SUB_TYPE_MPLS_PUSH_PROFILE << _SHR_GPORT_SUB_TYPE_SHIFT)   | \
   3659       (((_mpls_push_profile_val) & _SHR_GPORT_SUB_TYPE_MPLS_PUSH_PROFILE_MASK) << _SHR_GPORT_SUB_TYPE_MPLS_PUSH_PROFILE_SHIFT))
   3660 
   3661 /* Set GPORT subvalue and subtype TRILL_OUTLIF */
   3662 #define _SHR_GPORT_SUB_TYPE_TRILL_OUTLIF_SET(_gport, _trill_outlif_val) \
   3663     ((_gport) = (_SHR_GPORT_SUB_TYPE_TRILL_OUTLIF << _SHR_GPORT_SUB_TYPE_SHIFT)   | \
   3664       (((_trill_outlif_val) & _SHR_GPORT_SUB_TYPE_LIF_MASK) << _SHR_GPORT_SUB_TYPE_TRILL_OUTLIF_SHIFT))
   3665 
   3666 /* Set GPORT subvalue and subtype Virtual Ingress Native */
   3667 #define _SHR_GPORT_SUB_TYPE_VIRTUAL_INGRESS_NATIVE_SET(_gport, _virtual_val) \
   3668      ((_gport) = (_SHR_GPORT_SUB_TYPE_VIRTUAL_INGRESS_NATIVE << _SHR_GPORT_SUB_TYPE_SHIFT)   | \
   3669        (((_virtual_val) & _SHR_GPORT_SUB_TYPE_VIRTUAL_INGRESS_NATIVE_MASK) << _SHR_GPORT_SUB_TYPE_VIRTUAL_INGRESS_NATIVE_SHIFT))
   3670 
   3671 /* Set GPORT subvalue and subtype Virtual Egress Default */
   3672 #define _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_DEFAULT_SET(_gport, _virtual_EGRESS_DEFAULT_val) \
   3673      ((_gport) = (_SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_DEFAULT << _SHR_GPORT_SUB_TYPE_SHIFT)   | \
   3674        (((_virtual_EGRESS_DEFAULT_val) & _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_DEFAULT_MASK) << _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_DEFAULT_SHIFT))
   3675 
   3676 /* Set GPORT subvalue and subtype Virtual EGRESS MATCH */
   3677 #define _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_MATCH_SET(_gport, _virtual_egress_match_val) \
   3678     ((_gport) = (_SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_MATCH << _SHR_GPORT_SUB_TYPE_SHIFT)   | \
   3679       (((_virtual_egress_match_val) & _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_MATCH_MASK) << _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_MATCH_SHIFT))
   3680 
   3681 /* L3 Interface */
   3682 
   3683 #define _SHR_L3_ITF_TYPE_RIF     (0)
   3684 #define _SHR_L3_ITF_TYPE_FEC     (1)
   3685 #define _SHR_L3_ITF_TYPE_LIF     (2)
   3686 /*
   3687  * All subtypes for 'L3_ITF'
   3688  * The value '0' is reserved to indicate 'not encoded by subtype'
   3689  * Range starts at '1'. Currently available:  up to to '15'
   3690  * Note that _SHR_L3_ITF_SUB_TYPE_NOT_ENCODED must be kept, hardcoded,
   3691  * as '0' since there are many locations in the code where _SHR_L3_ITF_SET
   3692  * is used ant it, effectively, encodes sub-type of '0'.
   3693  * {
   3694  */
   3695 /*
   3696  * Used for sanity
   3697  */
   3698 #define _SHR_L3_ITF_SUB_TYPE_MIN                         0
   3699 /*
   3700  * By default, there is no subtype encoding for 'L3_ITF' so the 'not_encoded'
   3701  * subtype is the default subtype.
   3702  */
   3703 #define _SHR_L3_ITF_SUB_TYPE_NOT_ENCODED                 0
   3704 #define _SHR_L3_ITF_SUB_TYPE_DEFAULT                     _SHR_L3_ITF_SUB_TYPE_NOT_ENCODED
   3705 #define _SHR_L3_ITF_SUB_TYPE_VIRTUAL_EGRESS_POINTED      1
   3706 /*
   3707  * Used for sanity
   3708  */
   3709 #define _SHR_L3_ITF_SUB_TYPE_MAX                         _SHR_L3_ITF_SUB_TYPE_VIRTUAL_EGRESS_POINTED
   3710 #define _SHR_L3_ITF_SUB_TYPE_INVALID                     (-1)
   3711 /*
   3712  * }
   3713  */
   3714 #define _SHR_L3_ITF_INVALID                 (-1)
   3715 
   3716 #define _SHR_L3_ITF_TYPE_SIZE               2 
   3717 #define _SHR_L3_ITF_TYPE_SHIFT              29 
   3718 #define _SHR_L3_ITF_TYPE_MASK               SAL_UPTO_BIT(_SHR_L3_ITF_TYPE_SIZE)
   3719 
   3720 #define _SHR_L3_ITF_VAL_SHIFT               0
   3721 #define _SHR_L3_ITF_VAL_MASK                SAL_UPTO_BIT(_SHR_L3_ITF_TYPE_SHIFT)
   3722 /*
   3723  * All macros related to 'L3_ITF' subtypes
   3724  * {
   3725  */
   3726 #define _SHR_L3_ITF_SUB_TYPE_SIZE           4
   3727 #define _SHR_L3_ITF_SUB_TYPE_SHIFT          (_SHR_L3_ITF_TYPE_SHIFT - _SHR_L3_ITF_SUB_TYPE_SIZE)
   3728 #define _SHR_L3_ITF_SUB_TYPE_MASK           SAL_UPTO_BIT(_SHR_L3_ITF_SUB_TYPE_SIZE)
   3729 /*
   3730  * Subtype of L3_ITF: NOT_ENCODED
   3731  */
   3732 #define _SHR_L3_ITF_SUB_TYPE_NOT_ENCODED_SIZE           _SHR_L3_ITF_SUB_TYPE_SHIFT
   3733 #define _SHR_L3_ITF_SUB_TYPE_NOT_ENCODED_SHIFT          0
   3734 #define _SHR_L3_ITF_SUB_TYPE_NOT_ENCODED_MASK           SAL_UPTO_BIT(_SHR_L3_ITF_SUB_TYPE_NOT_ENCODED_SIZE)
   3735 /*
   3736  * Subtype of L3_ITF: VIRTUAL_EGRESS_POINTED
   3737  */
   3738 #define _SHR_L3_ITF_SUB_TYPE_VIRTUAL_EGRESS_POINTED_SIZE           19
   3739 #define _SHR_L3_ITF_SUB_TYPE_VIRTUAL_EGRESS_POINTED_SHIFT          0
   3740 #define _SHR_L3_ITF_SUB_TYPE_VIRTUAL_EGRESS_POINTED_MASK           SAL_UPTO_BIT(_SHR_L3_ITF_SUB_TYPE_VIRTUAL_EGRESS_POINTED_SIZE)
   3741 /*
   3742  * Given L3_ITF indicate whether it is legally encoded by 'sub_type'
   3743  */
   3744 #define _SHR_L3_ITF_SUB_TYPE_IS_SET(_l3_itf_)    \
   3745         (((unsigned int)(((_l3_itf_) >> _SHR_L3_ITF_SUB_TYPE_SHIFT) & _SHR_L3_ITF_SUB_TYPE_MASK) > _SHR_L3_ITF_SUB_TYPE_MIN) && \
   3746          ((unsigned int)(((_l3_itf_) >> _SHR_L3_ITF_SUB_TYPE_SHIFT) & _SHR_L3_ITF_SUB_TYPE_MASK) <= _SHR_L3_ITF_SUB_TYPE_MAX))
   3747 /*
   3748  * Given L3_ITF return its subtype
   3749  */
   3750 #define _SHR_L3_ITF_SUB_TYPE_GET(_l3_itf_)             \
   3751     (((_l3_itf_) >> _SHR_L3_ITF_SUB_TYPE_SHIFT) & _SHR_L3_ITF_SUB_TYPE_MASK)
   3752 /*
   3753  * Given L3_ITF return the VALUE in the 'subtype' field
   3754  */
   3755 #define _SHR_L3_ITF_SUB_TYPE_VALUE_GET(_l3_itf_)             \
   3756     (((_l3_itf_) >> _SHR_L3_ITF_SUB_TYPE_NOT_ENCODED_SHIFT) & _SHR_L3_ITF_SUB_TYPE_NOT_ENCODED_MASK)
   3757 /*
   3758  * Given full L3_ITF, indicate whether this is not encoded by any subtype
   3759  */
   3760 #define _SHR_L3_ITF_SUB_TYPE_IS_NOT_ENCODED(_l3_itf_)          \
   3761      ((((_l3_itf_) >> _SHR_L3_ITF_SUB_TYPE_SHIFT) & _SHR_L3_ITF_SUB_TYPE_MASK) == _SHR_L3_ITF_SUB_TYPE_NOT_ENCODED)
   3762 /*
   3763  * Get L3_ITF subtype value of an ITF which is NOT_ENCODED
   3764  */
   3765 #define _SHR_L3_ITF_SUB_TYPE_NOT_ENCODED_GET(_l3_itf_) \
   3766      ((_SHR_L3_ITF_SUB_TYPE_GET(_l3_itf_) == _SHR_L3_ITF_SUB_TYPE_NOT_ENCODED) ? \
   3767       (((_l3_itf_) >> _SHR_L3_ITF_SUB_TYPE_NOT_ENCODED_SHIFT) & _SHR_L3_ITF_SUB_TYPE_NOT_ENCODED_MASK):-1)
   3768 /*
   3769  * Set L3_ITF subvalue and subtype NOT_ENCODED
   3770  */
   3771 #define _SHR_L3_ITF_SUB_TYPE_NOT_ENCODED_SET(_l3_itf_, _not_encoded_val) \
   3772      ((_l3_itf_) = (_SHR_L3_ITF_SUB_TYPE_NOT_ENCODED << _SHR_L3_ITF_SUB_TYPE_SHIFT)   | \
   3773        (((_not_encoded_val) & _SHR_L3_ITF_SUB_TYPE_NOT_ENCODED_MASK) << _SHR_L3_ITF_SUB_TYPE_NOT_ENCODED_SHIFT))
   3774 /*
   3775  * Given full L3_ITF, indicate whether this is VIRTUAL_EGRESS_POINTED subtype
   3776  */
   3777 #define _SHR_L3_ITF_SUB_TYPE_IS_VIRTUAL_EGRESS_POINTED(_l3_itf_)          \
   3778      ((((_l3_itf_) >> _SHR_L3_ITF_SUB_TYPE_SHIFT) & _SHR_L3_ITF_SUB_TYPE_MASK) == _SHR_L3_ITF_SUB_TYPE_VIRTUAL_EGRESS_POINTED)
   3779 /*
   3780  * Get L3_ITF subvalue of subtype VIRTUAL_EGRESS_POINTED
   3781  */
   3782 #define _SHR_L3_ITF_SUB_TYPE_VIRTUAL_EGRESS_POINTED_GET(_l3_itf_) \
   3783      ((_SHR_L3_ITF_SUB_TYPE_GET(_l3_itf_) == _SHR_L3_ITF_SUB_TYPE_VIRTUAL_EGRESS_POINTED) ? \
   3784       (((_l3_itf_) >> _SHR_L3_ITF_SUB_TYPE_VIRTUAL_EGRESS_POINTED_SHIFT) & _SHR_L3_ITF_SUB_TYPE_VIRTUAL_EGRESS_POINTED_MASK):-1)
   3785 /*
   3786  * Set L3_ITF subvalue and subtype VIRTUAL_EGRESS_POINTED
   3787  */
   3788 #define _SHR_L3_ITF_SUB_TYPE_VIRTUAL_EGRESS_POINTED_SET(_l3_itf_, _virtual_egress_pointed_val) \
   3789      ((_l3_itf_) = (_SHR_L3_ITF_SUB_TYPE_VIRTUAL_EGRESS_POINTED << _SHR_L3_ITF_SUB_TYPE_SHIFT)   | \
   3790        (((_virtual_egress_pointed_val) & _SHR_L3_ITF_SUB_TYPE_VIRTUAL_EGRESS_POINTED_MASK) << _SHR_L3_ITF_SUB_TYPE_VIRTUAL_EGRESS_POINTED_SHIFT))
   3791 
   3792 /*
   3793  * }
   3794  */
   3795 #define _SHR_L3_ITF_TYPE_IS_FEC(_l3_itf_)    \
   3796         (((_l3_itf_) >> _SHR_L3_ITF_TYPE_SHIFT) == _SHR_L3_ITF_TYPE_FEC)
   3797 
   3798 #define _SHR_L3_ITF_TYPE_IS_RIF(_l3_itf_)    \
   3799         (((_l3_itf_) >> _SHR_L3_ITF_TYPE_SHIFT) == _SHR_L3_ITF_TYPE_RIF)
   3800 
   3801 #define _SHR_L3_ITF_TYPE_IS_LIF(_l3_itf_)    \
   3802         (((_l3_itf_) >> _SHR_L3_ITF_TYPE_SHIFT) == _SHR_L3_ITF_TYPE_LIF)
   3803 
   3804 #define _SHR_L3_ITF_VAL_GET(_l3_itf_) \
   3805     (((_l3_itf_) >> _SHR_L3_ITF_VAL_SHIFT) & _SHR_L3_ITF_VAL_MASK)
   3806 
   3807 #define _SHR_L3_ITF_SET(_l3_itf_, _type_, _id_) \
   3808     ((_l3_itf_) = ((((_type_) << _SHR_L3_ITF_TYPE_SHIFT)  | \
   3809      (((_id_) & _SHR_L3_ITF_VAL_MASK) << _SHR_L3_ITF_VAL_SHIFT))))
   3810 
   3811 /* GPORT to IF */
   3812 #define _SHR_L3_ITF_FEC_TO_GPORT_FORWARD_GROUP(_gport_forward_group, _l3_itf_fec)    \
   3813    do { \
   3814         if (_SHR_L3_ITF_TYPE_IS_FEC(_l3_itf_fec)) { \
   3815               _SHR_GPORT_FORWARD_PORT_SET(_gport_forward_group, _SHR_L3_ITF_VAL_GET(_l3_itf_fec));  \
   3816            } \
   3817         else { \
   3818             _gport_forward_group=_SHR_GPORT_INVALID; \
   3819         } \
   3820   } while (0)
   3821 
   3822 #define _SHR_GPORT_FORWARD_GROUP_TO_L3_ITF_FEC(_l3_itf_fec, _gport_forward_group)    \
   3823    do { \
   3824     int __fwd_group_val;    \
   3825     if (_SHR_GPORT_IS_FORWARD_PORT(_gport_forward_group)) { \
   3826         __fwd_group_val = _SHR_GPORT_FORWARD_PORT_GET(_gport_forward_group); \
   3827         _SHR_L3_ITF_SET(_l3_itf_fec, _SHR_L3_ITF_TYPE_FEC, __fwd_group_val); \
   3828     }\
   3829     else {\
   3830         _l3_itf_fec = -1;\
   3831     }\
   3832   } while (0)
   3833 
   3834 #define _SHR_L3_ITF_LIF_TO_GPORT_TUNNEL(_gport_tunnel, _l3_itf_lif)         \
   3835     do \
   3836     {                                       \
   3837         if (_SHR_L3_ITF_TYPE_IS_LIF(_l3_itf_lif)) \
   3838         {                                         \
   3839             if (_SHR_L3_ITF_SUB_TYPE_IS_VIRTUAL_EGRESS_POINTED(_l3_itf_lif)) \
   3840             {                       \
   3841                 int gport_id_dummy; \
   3842                 _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_POINTED_SET(gport_id_dummy, _SHR_L3_ITF_SUB_TYPE_VIRTUAL_EGRESS_POINTED_GET(_l3_itf_lif)); \
   3843                 _SHR_GPORT_TUNNEL_ID_SET(_gport_tunnel, gport_id_dummy);     \
   3844             }    \
   3845             else if (_SHR_L3_ITF_SUB_TYPE_IS_NOT_ENCODED(_l3_itf_lif))       \
   3846             {    \
   3847                 _SHR_GPORT_TUNNEL_ID_SET(_gport_tunnel, _SHR_L3_ITF_VAL_GET(_l3_itf_lif));\
   3848             }    \
   3849             else     \
   3850             {        \
   3851                 _gport_tunnel=_SHR_GPORT_INVALID;\
   3852             }        \
   3853         }        \
   3854         else     \
   3855         {        \
   3856             _gport_tunnel=_SHR_GPORT_INVALID;\
   3857         }        \
   3858    } while (0)
   3859  
   3860 #define _SHR_GPORT_TUNNEL_TO_L3_ITF_LIF(_l3_itf_lif , _gport_tunnel)    \
   3861     do \
   3862     { \
   3863         int _gport_tunnel_val;                   \
   3864         if (_SHR_GPORT_IS_TUNNEL(_gport_tunnel)) \
   3865         {                                        \
   3866             if (_SHR_GPORT_SUB_TYPE_IS_VIRTUAL_EGRESS_POINTED(_gport_tunnel))         \
   3867             {                        \
   3868                 int l3_itf_id_dummy; \
   3869                 _SHR_L3_ITF_SUB_TYPE_VIRTUAL_EGRESS_POINTED_SET(l3_itf_id_dummy, _SHR_GPORT_SUB_TYPE_VIRTUAL_EGRESS_POINTED_GET(_gport_tunnel)); \
   3870                 _SHR_L3_ITF_SET(_l3_itf_lif, _SHR_L3_ITF_TYPE_LIF, l3_itf_id_dummy);  \
   3871             }                        \
   3872             else                     \
   3873             {                        \
   3874                 _gport_tunnel_val = _SHR_GPORT_TUNNEL_ID_GET(_gport_tunnel);          \
   3875                 _SHR_L3_ITF_SET(_l3_itf_lif, _SHR_L3_ITF_TYPE_LIF, _gport_tunnel_val);\
   3876             } \
   3877         }     \
   3878         else  \
   3879         {     \
   3880             _l3_itf_lif = _SHR_L3_ITF_INVALID;\
   3881         }     \
   3882     } while (0)
   3883 
   3884 /* FORWARD ENCAP INTERFACE */
   3885 
   3886 #define _SHR_FORWARD_ENCAP_ID_INVALID               0XFFFFFFFF
   3887 
   3888 /* FORWARD ENCAP OUTLIF USAGE */
   3889 #define _SHR_FORWARD_ENCAP_ID_OUTLIF_USAGE_GENERAL   0
   3890 #define _SHR_FORWARD_ENCAP_ID_OUTLIF_USAGE_MPLS_PORT 1
   3891 #define _SHR_FORWARD_ENCAP_ID_OUTLIF_USAGE_ISID      2
   3892 #define _SHR_FORWARD_ENCAP_ID_OUTLIF_USAGE_VLAN_PORT 3
   3893 
   3894 /* FORWARD ENCAP EEI USAGE */
   3895 #define _SHR_FORWARD_ENCAP_ID_EEI_USAGE_MPLS_PORT     0
   3896 #define _SHR_FORWARD_ENCAP_ID_EEI_USAGE_ENCAP_POINTER 1
   3897 #define _SHR_FORWARD_ENCAP_ID_EEI_USAGE_DEST_VTEP_PTR 2
   3898 
   3899 #define _SHR_FORWARD_ENCAP_ID_OUTLIF_USAGE_SHIFT      28
   3900 #define _SHR_FORWARD_ENCAP_ID_OUTLIF_USAGE_MASK       0x3
   3901 
   3902 #define _SHR_FORWARD_ENCAP_ID_EEI_USAGE_SHIFT         28
   3903 #define _SHR_FORWARD_ENCAP_ID_EEI_USAGE_MASK          0x3
   3904 
   3905 /* FORWARD ENCAP TYPE */
   3906 #define _SHR_FORWARD_ENCAP_ID_TYPE_OUTLIF    0
   3907 #define _SHR_FORWARD_ENCAP_ID_TYPE_EEI       1
   3908 
   3909 #define _SHR_FORWARD_ENCAP_ID_TYPE_SHIFT      30
   3910 #define _SHR_FORWARD_ENCAP_ID_TYPE_MASK      0x3
   3911 
   3912 #define _SHR_FORWARD_ENCAP_ID_VAL_SHIFT        0
   3913 #define _SHR_FORWARD_ENCAP_ID_VAL_MASK         0xFFFFFFF
   3914 
   3915 /* FORWARD ENCAP ID parse for PWE USAGE */
   3916 #define _SHR_FORWARD_ENCAP_ID_EEI_USAGE_MPLS_PORT_VC_SHIFT                      0
   3917 #define _SHR_FORWARD_ENCAP_ID_EEI_USAGE_MPLS_PORT_VC_MASK                       0xfffff
   3918 
   3919 #define _SHR_FORWARD_ENCAP_ID_EEI_USAGE_MPLS_PORT_PUSH_PROFILE_SHIFT            20
   3920 #define _SHR_FORWARD_ENCAP_ID_EEI_USAGE_MPLS_PORT_PUSH_PROFILE_MASK          0xF
   3921 
   3922 #define _SHR_FORWARD_ENCAP_ID_EEI_USAGE_MPLS_PORT_SET(_forward_encap_id, _label, _push_profile)                            \
   3923        ((_forward_encap_id) = (((_label) & _SHR_FORWARD_ENCAP_ID_EEI_USAGE_MPLS_PORT_VC_MASK)  << _SHR_FORWARD_ENCAP_ID_EEI_USAGE_MPLS_PORT_VC_SHIFT)  | \
   3924         (((_push_profile) & _SHR_FORWARD_ENCAP_ID_EEI_USAGE_MPLS_PORT_PUSH_PROFILE_MASK)     << _SHR_FORWARD_ENCAP_ID_EEI_USAGE_MPLS_PORT_PUSH_PROFILE_SHIFT))
   3925 
   3926 #define _SHR_FORWARD_ENCAP_ID_EEI_USAGE_MPLS_PORT_VC_GET(_forward_encap_id)  \
   3927         (((_forward_encap_id) >> _SHR_FORWARD_ENCAP_ID_EEI_USAGE_MPLS_PORT_VC_SHIFT) & _SHR_FORWARD_ENCAP_ID_EEI_USAGE_MPLS_PORT_VC_MASK)
   3928 
   3929 #define _SHR_FORWARD_ENCAP_ID_EEI_USAGE_MPLS_PORT_PUSH_PROFILE_GET(_forward_encap_id)  \
   3930         (((_forward_encap_id) >> _SHR_FORWARD_ENCAP_ID_EEI_USAGE_MPLS_PORT_PUSH_PROFILE_SHIFT) & _SHR_FORWARD_ENCAP_ID_EEI_USAGE_MPLS_PORT_PUSH_PROFILE_MASK)
   3931 
   3932 /* given FORWARD ENCAP id return if this is outlif FORWARD_ENCAP according to type */
   3933 #define _SHR_FORWARD_ENCAP_ID_IS_OUTLIF(_forward_encap_id)             \
   3934     (((_forward_encap_id) >> _SHR_FORWARD_ENCAP_ID_TYPE_SHIFT) == _SHR_FORWARD_ENCAP_ID_TYPE_OUTLIF)
   3935 
   3936 /* given FORWARD ENCAP_id return if this EEI FORWARD_ENCAP according to type */
   3937 #define _SHR_FORWARD_ENCAP_ID_IS_EEI(_forward_encap_id)             \
   3938     (((_forward_encap_id) >> _SHR_FORWARD_ENCAP_ID_TYPE_SHIFT) == _SHR_FORWARD_ENCAP_ID_TYPE_EEI)
   3939 
   3940 /* given FORWARD ENCAP_id return FORWARD_ENCAP value */
   3941 #define _SHR_FORWARD_ENCAP_ID_VAL_GET(_forward_encap_id)     \
   3942     (((_forward_encap_id) >> _SHR_FORWARD_ENCAP_ID_VAL_SHIFT) & _SHR_FORWARD_ENCAP_ID_VAL_MASK)
   3943 
   3944 /* given FORWARD ENCAP_id return FORWARD_ENCAP OUTLIF usage */
   3945 #define _SHR_FORWARD_ENCAP_ID_OUTLIF_USAGE_GET(_forward_encap_id)     \
   3946     (((_forward_encap_id) >> _SHR_FORWARD_ENCAP_ID_OUTLIF_USAGE_SHIFT) & _SHR_FORWARD_ENCAP_ID_OUTLIF_USAGE_MASK)
   3947 
   3948 /* given FORWARD ENCAP_id return FORWARD_ENCAP EEI usage */
   3949 #define _SHR_FORWARD_ENCAP_ID_EEI_USAGE_GET(_forward_encap_id)     \
   3950     (((_forward_encap_id) >> _SHR_FORWARD_ENCAP_ID_EEI_USAGE_SHIFT) & _SHR_FORWARD_ENCAP_ID_EEI_USAGE_MASK)
   3951 
   3952 /* set FORWARD ENCAP_id accoring to type, usage and value */
   3953 #define _SHR_FORWARD_ENCAP_ID_VAL_SET(_forward_encap_id, _type, _usage, _val)     \
   3954   do { \
   3955       if (_type == _SHR_FORWARD_ENCAP_ID_TYPE_OUTLIF) {   \
   3956         _forward_encap_id = (_type << _SHR_FORWARD_ENCAP_ID_TYPE_SHIFT)   | \
   3957          (((_usage) &_SHR_FORWARD_ENCAP_ID_OUTLIF_USAGE_MASK) << _SHR_FORWARD_ENCAP_ID_OUTLIF_USAGE_SHIFT)   | \
   3958          (((_val) & _SHR_FORWARD_ENCAP_ID_VAL_MASK) << _SHR_FORWARD_ENCAP_ID_VAL_SHIFT); \
   3959       }\
   3960       else {\
   3961         _forward_encap_id = (_type << _SHR_FORWARD_ENCAP_ID_TYPE_SHIFT)   | \
   3962          (((_usage) &_SHR_FORWARD_ENCAP_ID_EEI_USAGE_MASK) << _SHR_FORWARD_ENCAP_ID_EEI_USAGE_SHIFT)   | \
   3963          (((_val) & _SHR_FORWARD_ENCAP_ID_VAL_MASK) << _SHR_FORWARD_ENCAP_ID_VAL_SHIFT); \
   3964       }\
   3965   } while (0)
   3966 
   3967 #define _SHR_FIELD_CTR_PROC_MASK_LEGACY ((1 << 2) - 1)  /* 2 bits for counter engines in Arad */
   3968 #define _SHR_FIELD_CTR_PROC_SHIFT_LEGACY 29     /* minimum 20 for the Statistic-Report Counter in Arad */
   3969 #define _SHR_FIELD_CTR_SET_MASK_LEGACY ((1 << _SHR_FIELD_CTR_PROC_SHIFT_LEGACY) - 1)
   3970 #define _SHR_FIELD_CTR_SET_SHIFT_LEGACY 0
   3971 
   3972 #define _SHR_FIELD_STAT_ID_PROC_LEGACY_GET(_stat_id) \
   3973     (((_stat_id) >> _SHR_FIELD_CTR_PROC_SHIFT_LEGACY) & _SHR_FIELD_CTR_PROC_MASK_LEGACY)
   3974 
   3975 #define _SHR_FIELD_STAT_ID_CNTR_LEGACY_GET(_stat_id) \
   3976     (((_stat_id) >> _SHR_FIELD_CTR_SET_SHIFT_LEGACY) & _SHR_FIELD_CTR_SET_MASK_LEGACY)
   3977 
   3978 #define _SHR_FIELD_STAT_ID_LEGACY_SET(_proc, _ctr) \
   3979     ((((_proc) & _SHR_FIELD_CTR_PROC_MASK_LEGACY) << _SHR_FIELD_CTR_PROC_SHIFT_LEGACY)\
   3980     | (((_ctr) & _SHR_FIELD_CTR_SET_MASK_LEGACY) << _SHR_FIELD_CTR_SET_SHIFT_LEGACY))
   3981 
   3982 #define _SHR_FIELD_STAT_ID_IS_LEGACY(_stat_id) (!((_stat_id >> 31) & 0x1))
   3983 #define _SHR_FIELD_STAT_ID_LEGACY              (0x1 << 31)
   3984 
   3985 /* minimum 20 for the Statistic-Report Counter in Arad */
   3986 #define _SHR_FIELD_CTR_PROC_MASK ((1 << 4) - 1) /* 4 bits for counter engines in Arad */
   3987 
   3988 #define _SHR_FIELD_CTR_PROC_SHIFT 27    /* minimum 20 for the Statistic-Report Counter in Jericho */
   3989 #define _SHR_FIELD_CTR_SET_MASK ((1 << _SHR_FIELD_CTR_PROC_SHIFT) - 1)
   3990 #define _SHR_FIELD_CTR_SET_SHIFT 0
   3991 
   3992 #define _SHR_FIELD_CTR_PROC_SHIFT_GET(_stat_id) (_SHR_FIELD_STAT_ID_IS_LEGACY(_stat_id) ? _SHR_FIELD_CTR_PROC_SHIFT_LEGACY : _SHR_FIELD_CTR_PROC_SHIFT)
   3993 #define _SHR_FIELD_STAT_ID_PROC_NEW_GET(_stat_id) \
   3994     (((_stat_id) >> _SHR_FIELD_CTR_PROC_SHIFT) & _SHR_FIELD_CTR_PROC_MASK)
   3995 
   3996 #define _SHR_FIELD_STAT_ID_CNTR_NEW_GET(_stat_id) \
   3997     (((_stat_id) >> _SHR_FIELD_CTR_SET_SHIFT) & _SHR_FIELD_CTR_SET_MASK)
   3998 
   3999 #define _SHR_FIELD_STAT_ID_NEW_SET(_proc, _ctr) \
   4000     (_SHR_FIELD_STAT_ID_LEGACY | \
   4001     (((_proc) & _SHR_FIELD_CTR_PROC_MASK) << _SHR_FIELD_CTR_PROC_SHIFT)|\
   4002      (((_ctr) & _SHR_FIELD_CTR_SET_MASK) << _SHR_FIELD_CTR_SET_SHIFT))
   4003 
   4004 #define _SHR_FIELD_STAT_ID_PROCESSOR_GET(_stat_id) \
   4005              (_SHR_FIELD_STAT_ID_IS_LEGACY(_stat_id) ? \
   4006              _SHR_FIELD_STAT_ID_PROC_LEGACY_GET(_stat_id) : \
   4007              _SHR_FIELD_STAT_ID_PROC_NEW_GET(_stat_id))
   4008 
   4009 #define _SHR_FIELD_STAT_ID_COUNTER_GET(_stat_id) \
   4010              (_SHR_FIELD_STAT_ID_IS_LEGACY(_stat_id) ? \
   4011              _SHR_FIELD_STAT_ID_CNTR_LEGACY_GET(_stat_id) : \
   4012              _SHR_FIELD_STAT_ID_CNTR_NEW_GET(_stat_id))
   4013 
   4014 #define _SHR_FIELD_STAT_ID_SET(_stat_id, _proc, _ctr) \
   4015     (_stat_id = _SHR_FIELD_STAT_ID_NEW_SET(_proc, _ctr))
   4016 
   4017 /**
   4018  * }
   4019  */
   4020 #endif /* !_SHR_GPORT_H */