openbcm

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

qos.h (10851B)


      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-2020 Broadcom Inc. All rights reserved.
      6  *
      7  * This file contains QOS module definitions internal to the BCM library.
      8  */
      9 
     10 #ifndef _BCM_INT_DPP_QOS_H
     11 #define _BCM_INT_DPP_QOS_H
     12 
     13 #include <bcm/qos.h>
     14 #include <shared/bitop.h>
     15 
     16 /* QoS State structure */
     17 typedef struct bcm_dpp_qos_state_s {
     18     int            init;            /* TRUE if port module has been initialized */
     19     PARSER_HINT_ARR SHR_BITDCL     *ing_lif_cos_mpls_bitmap;
     20     PARSER_HINT_ARR SHR_BITDCL     *ing_lif_cos_ipv4_bitmap;
     21     PARSER_HINT_ARR SHR_BITDCL     *ing_lif_cos_ipv6_bitmap;
     22     PARSER_HINT_ARR SHR_BITDCL     *ing_lif_cos_l2_inner_bitmap;
     23     PARSER_HINT_ARR SHR_BITDCL     *ing_lif_cos_l2_outer_bitmap;
     24     PARSER_HINT_ARR SHR_BITDCL     *ing_lif_cos_l2_untag_bitmap;
     25     PARSER_HINT_ARR SHR_BITDCL     *ing_pcp_vlan_ctag_bitmap;
     26     PARSER_HINT_ARR SHR_BITDCL     *ing_pcp_vlan_utag_bitmap;
     27     PARSER_HINT_ARR SHR_BITDCL     *ing_pcp_vlan_stag_bitmap;
     28     PARSER_HINT_ARR SHR_BITDCL     *ing_pcp_vlan_color_bitmap;
     29     PARSER_HINT_ARR SHR_BITDCL     *egr_remark_encap_mpls_bitmap;
     30     PARSER_HINT_ARR SHR_BITDCL     *egr_remark_encap_ipv6_bitmap;
     31     PARSER_HINT_ARR SHR_BITDCL     *egr_remark_encap_ipv4_bitmap;
     32     PARSER_HINT_ARR SHR_BITDCL     *egr_remark_encap_l2_bitmap;
     33     PARSER_HINT_ARR SHR_BITDCL     *egr_remark_mpls_bitmap;
     34     PARSER_HINT_ARR SHR_BITDCL     *egr_remark_ipv6_bitmap;
     35     PARSER_HINT_ARR SHR_BITDCL     *egr_remark_ipv4_bitmap;
     36     PARSER_HINT_ARR SHR_BITDCL     *egr_mpls_php_ipv6_bitmap;
     37     PARSER_HINT_ARR SHR_BITDCL     *egr_mpls_php_ipv4_bitmap;
     38     PARSER_HINT_ARR SHR_BITDCL     *egr_pcp_vlan_ctag_bitmap;
     39     PARSER_HINT_ARR SHR_BITDCL     *egr_pcp_vlan_utag_bitmap;
     40     PARSER_HINT_ARR SHR_BITDCL     *egr_pcp_vlan_stag_bitmap;
     41     PARSER_HINT_ARR SHR_BITDCL     *egr_pcp_vlan_mpls_bitmap;
     42     PARSER_HINT_ARR SHR_BITDCL     *egr_pcp_vlan_ipv6_bitmap;
     43     PARSER_HINT_ARR SHR_BITDCL     *egr_pcp_vlan_ipv4_bitmap;
     44     PARSER_HINT_ARR SHR_BITDCL     *egr_l2_i_tag_bitmap;
     45 #ifdef BCM_88660
     46     PARSER_HINT_ARR SHR_BITDCL     *egr_dscp_exp_marking_bitmap;
     47 #endif /* BCM_88660 */
     48     PARSER_HINT_ARR int            *ing_cos_opcode_flags;
     49     int            *egr_pcp_vlan_dscp_exp_profile_id;
     50     int            *egr_pcp_vlan_dscp_exp_enable;
     51     int            *egr_remark_encap_enable;
     52     int 	       *dp_max;
     53     PARSER_HINT_ARR SHR_BITDCL     *opcode_bmp;
     54 } bcm_dpp_qos_state_t;
     55 
     56 
     57 #define _BCM_QOS_MAP_ING_MPLS_EXP_MAX        8
     58 #define _BCM_QOS_MAP_ING_L3_DSCP_MAX         256
     59 #define _BCM_QOS_MAP_ING_L2_PRI_CFI_MAX      16
     60 #define _BCM_QOS_MAP_ING_VLAN_PCP_STAG_MAX   16
     61 #define _BCM_QOS_MAP_ING_VLAN_PCP_CTAG_MAX   8
     62 #define _BCM_QOS_MAP_ING_VLAN_PCP_UTAG_MAX   32
     63 #define _BCM_QOS_MAP_ING_COS_OPCODE_L3_MAX   256
     64 #define _BCM_QOS_MAP_ING_COS_OPCODE_TC_DP_MAX 32
     65 #define _BCM_QOS_MAP_ING_DP_ENTRY_MAX         (_BCM_QOS_MAP_DP_MAX*_BCM_QOS_MAP_PCP_DEI_MAX)
     66 #define _BCM_QOS_MAP_EGR_VLAN_PRI_MAX           8
     67 #define _BCM_QOS_MAP_EGR_VLAN_CFI_MAX			2
     68 #define _BCM_QOS_MAP_EGR_DSCP_MAX               256
     69 #define _BCM_QOS_MAP_EGR_EXP_MAX                8
     70 
     71 #ifdef BCM_88660
     72 # define _BCM_QOS_MAP_EGR_RESOLVED_DP_MAX        2
     73 /* The max qos profile allowed for use_layer2_pcp */
     74 # define _BCM_QOS_MAP_ING_USE_PCP_MAX_QOS_PROFILE 15
     75 #endif /* BCM_88660 */
     76 
     77 #define _BCM_QOS_MAP_EGR_REMARK_MPLS_EXP_MAX    8
     78 #define _BCM_QOS_MAP_EGR_REMARK_L3_DSCP_MAX     256
     79 #define _BCM_QOS_MAP_EGR_REMARK_L2_MAX          (8*4)
     80 
     81 #define _BCM_QOS_MAP_EGR_REMARK_PROFILE_L2_MAX  (SOC_IS_JERICHO(unit) ? 16 : 4)
     82 
     83 #define _BCM_QOS_MAP_EXP_MAX            8        
     84 #define _BCM_QOS_MAP_DSCP_MAX           256
     85 #define _BCM_QOS_MAP_PRI_MAX            8
     86 #define _BCM_QOS_MAP_CFI_MAX            4
     87 #define _BCM_QOS_MAP_PRI_CFI_MAX        16
     88 #define _BCM_QOS_MAP_TC_DP_MAX          (_BCM_QOS_MAP_TC_MAX * 4)
     89 #define _BCM_QOS_MAP_TC_MAX             8
     90 #define _BCM_QOS_MAP_UP_MAX             8
     91 #define _BCM_QOS_MAP_PCP_MAX            8
     92 #define _BCM_QOS_MAP_PORT_OFFSET_MAX    8
     93 #define _BCM_QOS_MAP_DP_MAX         	4
     94 #define _BCM_QOS_MAP_PCP_DEI_MAX        16
     95 
     96 #define BCM_INT_QOS_MAP_PROFILE_MASK        0xffff
     97 #define BCM_INT_QOS_MAP_PROFILE_SHIFT       0
     98 #define BCM_INT_QOS_MAP_TYPE_SHIFT          16
     99 
    100 #define BCM_INT_QOS_MAP_LL_ARP_PROFILE_MASK        0x7
    101 
    102 #define BCM_INT_QOS_MAP_TYPE_INGRESS         0x1000
    103 #define BCM_INT_QOS_MAP_TYPE_EGRESS          0x2000
    104 
    105 #define BCM_INT_QOS_MAP_TYPE_PCP_VLAN           0x0001
    106 #define BCM_INT_QOS_MAP_TYPE_LIF_COS            0x0002
    107 #define BCM_INT_QOS_MAP_TYPE_REMARK             0x0004
    108 #define BCM_INT_QOS_MAP_TYPE_ENCAP              0x0008
    109 #define BCM_INT_QOS_MAP_TYPE_MPLS_ELSP          0x0010
    110 #define BCM_INT_QOS_MAP_TYPE_L2_I_TAG           0x0020
    111 #define BCM_INT_QOS_MAP_TYPE_OPCODE             0x0040
    112 #define BCM_INT_QOS_MAP_TYPE_MPLS_PHP           0x0080
    113 #define BCM_INT_QOS_MAP_TYPE_DSCP_EXP_MARKING   0x0100
    114 #define BCM_INT_QOS_MAP_TYPE_OAM_EGRESS_PROFILE 0x0200
    115 #define BCM_INT_QOS_MAP_TYPE_ENCAP_INTPRI_COLOR 0x0400
    116 #define BCM_INT_QOS_MAP_TYPE_COLOR_MAPPING_PCP		0x0800
    117 
    118 extern bcm_dpp_qos_state_t *qos_state[SOC_MAX_NUM_DEVICES];
    119 
    120 
    121 #define BCM_QOS_MAP_PROFILE_GET(map_id)       \
    122         (((map_id) >> BCM_INT_QOS_MAP_PROFILE_SHIFT) & BCM_INT_QOS_MAP_PROFILE_MASK)
    123 
    124 #define BCM_INT_QOS_MAP_IS_INGRESS(map_id)    \
    125   (((map_id) >> BCM_INT_QOS_MAP_TYPE_SHIFT) & BCM_INT_QOS_MAP_TYPE_INGRESS)
    126 
    127 #define BCM_INT_QOS_MAP_IS_EGRESS(map_id)    \
    128   (((map_id) >> BCM_INT_QOS_MAP_TYPE_SHIFT) & BCM_INT_QOS_MAP_TYPE_EGRESS)
    129 
    130 #define BCM_INT_QOS_MAP_IS_PCP_VLAN(map_id)    \
    131   (((map_id) >> BCM_INT_QOS_MAP_TYPE_SHIFT) & (BCM_INT_QOS_MAP_TYPE_PCP_VLAN))
    132 
    133 #define BCM_INT_QOS_MAP_IS_INGRESS_PCP_VLAN(map_id)    \
    134   (((map_id) >> BCM_INT_QOS_MAP_TYPE_SHIFT) == (BCM_INT_QOS_MAP_TYPE_PCP_VLAN | BCM_INT_QOS_MAP_TYPE_INGRESS))
    135 
    136 #define BCM_INT_QOS_MAP_IS_EGRESS_PCP_VLAN(map_id)    \
    137   (((map_id) >> BCM_INT_QOS_MAP_TYPE_SHIFT) == (BCM_INT_QOS_MAP_TYPE_PCP_VLAN | BCM_INT_QOS_MAP_TYPE_EGRESS))
    138 
    139 #define BCM_INT_QOS_MAP_IS_LIF_COS(map_id)    \
    140   (((map_id) >> BCM_INT_QOS_MAP_TYPE_SHIFT) == (BCM_INT_QOS_MAP_TYPE_LIF_COS | BCM_INT_QOS_MAP_TYPE_INGRESS))
    141 
    142 #define BCM_INT_QOS_MAP_IS_REMARK(map_id)    \
    143   (((map_id) >> BCM_INT_QOS_MAP_TYPE_SHIFT) == (BCM_INT_QOS_MAP_TYPE_REMARK | BCM_INT_QOS_MAP_TYPE_EGRESS))
    144 
    145 #define BCM_INT_QOS_MAP_IS_EGRESS_MPLS_PHP(map_id)    \
    146   (((map_id) >> BCM_INT_QOS_MAP_TYPE_SHIFT) == (BCM_INT_QOS_MAP_TYPE_MPLS_PHP | BCM_INT_QOS_MAP_TYPE_EGRESS))
    147 
    148 #ifdef BCM_88660
    149 # define BCM_INT_QOS_MAP_IS_EGRESS_DSCP_EXP_MARKING(map_id)    \
    150   (((map_id) >> BCM_INT_QOS_MAP_TYPE_SHIFT) == (BCM_INT_QOS_MAP_TYPE_DSCP_EXP_MARKING | BCM_INT_QOS_MAP_TYPE_EGRESS))
    151 #endif /* BCM_88660 */
    152 
    153 #define BCM_INT_QOS_MAP_IS_ENCAP(map_id)    \
    154   (((map_id) >> BCM_INT_QOS_MAP_TYPE_SHIFT) == (BCM_INT_QOS_MAP_TYPE_ENCAP | BCM_INT_QOS_MAP_TYPE_EGRESS))
    155 
    156 #define BCM_INT_QOS_MAP_IS_EGRESS_L2_I_TAG(map_id)  \
    157  (((map_id) >> BCM_INT_QOS_MAP_TYPE_SHIFT) == (BCM_INT_QOS_MAP_TYPE_L2_I_TAG | BCM_INT_QOS_MAP_TYPE_EGRESS))
    158 
    159 #define BCM_INT_QOS_MAP_IS_OPCODE(map_id)  \
    160  (((map_id) >> BCM_INT_QOS_MAP_TYPE_SHIFT) == (BCM_INT_QOS_MAP_TYPE_OPCODE | BCM_INT_QOS_MAP_TYPE_INGRESS))
    161 
    162 #define BCM_INT_QOS_MAP_INGRESS_PCP_VLAN_SET(map_id, profile_id)	\
    163   (map_id) = (((BCM_INT_QOS_MAP_TYPE_PCP_VLAN | BCM_INT_QOS_MAP_TYPE_INGRESS) << BCM_INT_QOS_MAP_TYPE_SHIFT) \
    164 	      | (profile_id & BCM_INT_QOS_MAP_PROFILE_MASK))
    165 
    166 #define BCM_INT_QOS_MAP_EGRESS_PCP_VLAN_SET(map_id, profile_id)	\
    167   (map_id) = (((BCM_INT_QOS_MAP_TYPE_PCP_VLAN | BCM_INT_QOS_MAP_TYPE_EGRESS) << BCM_INT_QOS_MAP_TYPE_SHIFT) \
    168 	      | (profile_id & BCM_INT_QOS_MAP_PROFILE_MASK))
    169 
    170 #define BCM_INT_QOS_MAP_LIF_COS_SET(map_id, profile_id)	\
    171   (map_id) = (((BCM_INT_QOS_MAP_TYPE_LIF_COS | BCM_INT_QOS_MAP_TYPE_INGRESS) << BCM_INT_QOS_MAP_TYPE_SHIFT) \
    172 	      | (profile_id & BCM_INT_QOS_MAP_PROFILE_MASK))
    173 
    174 #define BCM_INT_QOS_MAP_REMARK_SET(map_id, profile_id)	\
    175   (map_id) = (((BCM_INT_QOS_MAP_TYPE_REMARK | BCM_INT_QOS_MAP_TYPE_EGRESS) << BCM_INT_QOS_MAP_TYPE_SHIFT) \
    176               | (profile_id & BCM_INT_QOS_MAP_PROFILE_MASK))
    177 
    178 #define BCM_INT_QOS_MAP_EGRESS_MPLS_PHP_SET(map_id, profile_id) \
    179   (map_id) = (((BCM_INT_QOS_MAP_TYPE_MPLS_PHP | BCM_INT_QOS_MAP_TYPE_EGRESS) << BCM_INT_QOS_MAP_TYPE_SHIFT) \
    180               | (profile_id & BCM_INT_QOS_MAP_PROFILE_MASK))
    181 
    182 #ifdef BCM_88660
    183 #define BCM_INT_QOS_MAP_EGRESS_DSCP_EXP_MARKING_SET(map_id, profile_id) \
    184   (map_id) = (((BCM_INT_QOS_MAP_TYPE_DSCP_EXP_MARKING | BCM_INT_QOS_MAP_TYPE_EGRESS) << BCM_INT_QOS_MAP_TYPE_SHIFT) \
    185               | (profile_id & BCM_INT_QOS_MAP_PROFILE_MASK))
    186 #endif
    187 
    188 
    189 #define BCM_INT_QOS_MAP_EGRESS_L2_I_TAG_SET(map_id, profile_id)	\
    190   (map_id) = (((BCM_INT_QOS_MAP_TYPE_L2_I_TAG | BCM_INT_QOS_MAP_TYPE_EGRESS) << BCM_INT_QOS_MAP_TYPE_SHIFT) \
    191 	      | (profile_id & BCM_INT_QOS_MAP_PROFILE_MASK))
    192 
    193 #define BCM_INT_QOS_MAP_TYPE_OPCODE_SET(map_id, profile_id)	\
    194   (map_id) = (((BCM_INT_QOS_MAP_TYPE_OPCODE | BCM_INT_QOS_MAP_TYPE_INGRESS) << BCM_INT_QOS_MAP_TYPE_SHIFT) \
    195 	      | (profile_id & BCM_INT_QOS_MAP_PROFILE_MASK))
    196 
    197 #define BCM_INT_QOS_MAP_MPLS_ELSP_SET(map_id, profile_id)	\
    198   (map_id) = (((BCM_INT_QOS_MAP_TYPE_MPLS_ELSP | BCM_INT_QOS_MAP_TYPE_INGRESS) << BCM_INT_QOS_MAP_TYPE_SHIFT) \
    199 	      | (profile_id & BCM_INT_QOS_MAP_PROFILE_MASK))
    200 
    201 #define BCM_INT_QOS_MAP_IS_MPLS_ELSP(map_id)    \
    202   (((map_id) >> BCM_INT_QOS_MAP_TYPE_SHIFT) == (BCM_INT_QOS_MAP_TYPE_MPLS_ELSP | BCM_INT_QOS_MAP_TYPE_INGRESS))
    203 
    204 
    205 #define BCM_INT_QOS_MAP_OAM_EGRESS_PROFILE_SET(map_id, profile_id) \
    206       (map_id) = (((BCM_INT_QOS_MAP_TYPE_OAM_EGRESS_PROFILE | BCM_INT_QOS_MAP_TYPE_EGRESS) << BCM_INT_QOS_MAP_TYPE_SHIFT) \
    207 	      | (profile_id & BCM_INT_QOS_MAP_PROFILE_MASK))
    208 
    209 #define BCM_INT_QOS_MAP_IS_OAM_EGRESS_PROFILE(map_id) \
    210   (((map_id) >> BCM_INT_QOS_MAP_TYPE_SHIFT) == (BCM_INT_QOS_MAP_TYPE_OAM_EGRESS_PROFILE | BCM_INT_QOS_MAP_TYPE_EGRESS))
    211 
    212 #define BCM_INT_QOS_MAP_ENCAP_INTPRI_COLOR_SET(map_id, profile_id) \
    213       (map_id) = (((BCM_INT_QOS_MAP_TYPE_ENCAP_INTPRI_COLOR  | BCM_INT_QOS_MAP_TYPE_EGRESS) << BCM_INT_QOS_MAP_TYPE_SHIFT) \
    214 	      | (profile_id & BCM_INT_QOS_MAP_PROFILE_MASK))
    215 
    216 #define BCM_INT_QOS_MAP_ENCAP_INTPRI_COLOR(map_id) \
    217   (((map_id) >> BCM_INT_QOS_MAP_TYPE_SHIFT) == (BCM_INT_QOS_MAP_TYPE_ENCAP_INTPRI_COLOR  | BCM_INT_QOS_MAP_TYPE_EGRESS))
    218 
    219 #define BCM_INT_QOS_MAP_INGRESS_COLOR_SET(map_id, profile_id) \
    220       (map_id) = (((BCM_INT_QOS_MAP_TYPE_COLOR_MAPPING_PCP | BCM_INT_QOS_MAP_TYPE_INGRESS) << BCM_INT_QOS_MAP_TYPE_SHIFT) \
    221 	      | (profile_id & BCM_INT_QOS_MAP_PROFILE_MASK))
    222 
    223 #define BCM_INT_QOS_MAP_IS_INGRESS_COLOR(map_id) \
    224   ((((map_id) >> BCM_INT_QOS_MAP_TYPE_SHIFT) & (BCM_INT_QOS_MAP_TYPE_COLOR_MAPPING_PCP | BCM_INT_QOS_MAP_TYPE_INGRESS)) != 0)
    225 
    226 
    227 #endif 	/* _BCM_INT_DPP_QOS_H */