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