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

ft_drop.h (9172B)


      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  * File:    ft_drop.h
      8  * Purpose: Function declarations for flowtracker drop reason groups.
      9  */
     10 #ifndef _BCM_INT_FT_DROP_REASON_H_
     11 #define _BCM_INT_FT_DROP_REASON_H_
     12 
     13 #if defined(BCM_FLOWTRACKER_SUPPORT) && defined(BCM_FLOWTRACKER_V2_SUPPORT)
     14 
     15 /* Flowtracker drop reason global enum */
     16 #define BCMI_FT_DROP_REASON_GROUP_ID_ING_MMU_MAX(unit)    16
     17 #define BCMI_FT_DROP_REASON_GROUP_ID_EGR_MAX(unit)        16
     18 
     19 /* Drop reason bits in bs2.0 hardware */
     20 #define BCMI_FT_DROP_BIT_ING_MMU_MAX                      192
     21 #define BCMI_FT_DROP_BIT_EGR_MAX                          64
     22 
     23 /* Flowtracker drop reason index generation */
     24 #define BCMI_FT_DROP_REASON_GROUP_ID_TYPE_ING_MMU         1
     25 #define BCMI_FT_DROP_REASON_GROUP_ID_TYPE_EGR             2
     26 #define BCMI_FT_DROP_REASON_GROUP_ID_TYPE_AGG_ING_MMU     3
     27 #define BCMI_FT_DROP_REASON_GROUP_ID_TYPE_AGG_EGR         4
     28 #define BCMI_FT_DROP_REASON_GROUP_ID_TYPE_SHIFT           16
     29 #define BCMI_FT_DROP_REASON_GROUP_ID_TYPE_MASK            0xffff
     30 
     31 #define BCMI_FT_DROP_REASON_GROUP_ID_SET(index, type)             \
     32   (((type) << BCMI_FT_DROP_REASON_GROUP_ID_TYPE_SHIFT) | (index))
     33 
     34 #define BCMI_FT_DROP_REASON_GROUP_INDEX_GET(id)                   \
     35             ((id) & BCMI_FT_DROP_REASON_GROUP_ID_TYPE_MASK)
     36 
     37 #define BCMI_FT_DROP_REASON_GROUP_ID_IS_ING_MMU(id)               \
     38            (((id) >> BCMI_FT_DROP_REASON_GROUP_ID_TYPE_SHIFT) ==  \
     39                        BCMI_FT_DROP_REASON_GROUP_ID_TYPE_ING_MMU)
     40 
     41 #define BCMI_FT_DROP_REASON_GROUP_ID_IS_EGR(id)                   \
     42            (((id) >> BCMI_FT_DROP_REASON_GROUP_ID_TYPE_SHIFT) ==  \
     43                            BCMI_FT_DROP_REASON_GROUP_ID_TYPE_EGR)
     44 
     45 #define BCMI_FT_DROP_REASON_GROUP_ID_IS_AGG_ING_MMU(id)           \
     46            (((id) >> BCMI_FT_DROP_REASON_GROUP_ID_TYPE_SHIFT) ==  \
     47                        BCMI_FT_DROP_REASON_GROUP_ID_TYPE_AGG_ING_MMU)
     48 
     49 #define BCMI_FT_DROP_REASON_GROUP_ID_IS_AGG_EGR(id)               \
     50            (((id) >> BCMI_FT_DROP_REASON_GROUP_ID_TYPE_SHIFT) ==  \
     51                            BCMI_FT_DROP_REASON_GROUP_ID_TYPE_AGG_EGR)
     52 
     53 /* Flowtracker software check slice state */
     54 typedef struct bcmi_ft_drop_reason_group_state_s {
     55 
     56     /* Ingress/Mmu drop reason group index bitmap. */
     57     SHR_BITDCL *drop_ing_mmu_idx_bitmap;
     58 
     59     /* Egress drop reason group index bitmap. */
     60     SHR_BITDCL *drop_egr_idx_bitmap;
     61 
     62     /* Ingress/Mmu drop reason group index reference count. */
     63     uint16 *drop_ing_mmu_idx_refcount;
     64 
     65     /* Egress drop reason group index reference count. */
     66     uint16 *drop_egr_idx_refcount;
     67 
     68     /* Ingress/Mmu drop reason group maximum index. */
     69     uint16 drop_ing_mmu_max_idx;
     70 
     71     /* Egress drop reason group maximum index. */
     72     uint16 drop_egr_max_idx;
     73 
     74     /* Software drop enum to hardware bit value mapping. */
     75     int16 *drop_reason_sw_to_hw;
     76 
     77     /* Ingress/Mmu drop hardware bit value to sw enum mapping. */
     78     int16 *drop_reason_ing_mmu_hw_to_sw;
     79 
     80     /* Egress drop hardware bit value to sw enum mapping. */
     81     int16 *drop_reason_egr_hw_to_sw;
     82 
     83 #if defined(BCM_FLOWTRACKER_V3_SUPPORT)
     84     /* Aggregate Ingress/Mmu drop reason group index bitmap. */
     85     SHR_BITDCL *drop_agg_ing_mmu_idx_bitmap;
     86 
     87     /* Aggregate Egress drop reason group index bitmap. */
     88     SHR_BITDCL *drop_agg_egr_idx_bitmap;
     89 
     90     /* Aggregate Ingress/Mmu drop reason group index reference count. */
     91     uint16 *drop_agg_ing_mmu_idx_refcount;
     92 
     93     /* Aggregate Egress drop reason group index reference count. */
     94     uint16 *drop_agg_egr_idx_refcount;
     95 #endif
     96 
     97 } bcmi_ft_drop_reason_group_state_t;
     98 
     99 extern bcmi_ft_drop_reason_group_state_t
    100         bcmi_ft_drop_reason_group_state[BCM_MAX_NUM_UNITS];
    101 
    102 #define BCMI_FT_DROP_REASON_ING_MMU_BITMAP(unit)  \
    103     (bcmi_ft_drop_reason_group_state[unit].drop_ing_mmu_idx_bitmap)
    104 
    105 #define BCMI_FT_DROP_REASON_EGR_BITMAP(unit)  \
    106     (bcmi_ft_drop_reason_group_state[unit].drop_egr_idx_bitmap)
    107 
    108 #define BCMI_FT_DROP_REASON_GROUP_ING_MMU_REFCOUNT_STATE(unit)  \
    109     (bcmi_ft_drop_reason_group_state[unit].drop_ing_mmu_idx_refcount)
    110 
    111 #define BCMI_FT_DROP_REASON_GROUP_ING_MMU_REFCOUNT(unit, index)  \
    112     (bcmi_ft_drop_reason_group_state[unit].drop_ing_mmu_idx_refcount[index])
    113 
    114 #define BCMI_FT_DROP_REASON_GROUP_ING_MMU_REFCOUNT_DEC(unit, index)  \
    115    ((bcmi_ft_drop_reason_group_state[unit].drop_ing_mmu_idx_refcount[index])--)
    116 
    117 #define BCMI_FT_DROP_REASON_GROUP_ING_MMU_REFCOUNT_INC(unit, index)  \
    118    ((bcmi_ft_drop_reason_group_state[unit].drop_ing_mmu_idx_refcount[index])++)
    119 
    120 #define BCMI_FT_DROP_REASON_GROUP_EGR_REFCOUNT_STATE(unit)  \
    121     (bcmi_ft_drop_reason_group_state[unit].drop_egr_idx_refcount)
    122 
    123 #define BCMI_FT_DROP_REASON_GROUP_EGR_REFCOUNT(unit, index)  \
    124     (bcmi_ft_drop_reason_group_state[unit].drop_egr_idx_refcount[index])
    125 
    126 #define BCMI_FT_DROP_REASON_GROUP_EGR_REFCOUNT_DEC(unit, index)  \
    127    ((bcmi_ft_drop_reason_group_state[unit].drop_egr_idx_refcount[index])--)
    128 
    129 #define BCMI_FT_DROP_REASON_GROUP_EGR_REFCOUNT_INC(unit, index)  \
    130    ((bcmi_ft_drop_reason_group_state[unit].drop_egr_idx_refcount[index])++)
    131 
    132 #if defined(BCM_FLOWTRACKER_V3_SUPPORT)
    133 #define BCMI_FT_DROP_REASON_AGG_ING_MMU_BITMAP(unit)  \
    134     (bcmi_ft_drop_reason_group_state[unit].drop_agg_ing_mmu_idx_bitmap)
    135 
    136 #define BCMI_FT_DROP_REASON_AGG_EGR_BITMAP(unit)  \
    137     (bcmi_ft_drop_reason_group_state[unit].drop_agg_egr_idx_bitmap)
    138 
    139 #define BCMI_FT_DROP_REASON_GROUP_AGG_ING_MMU_REFCOUNT_STATE(unit)  \
    140     (bcmi_ft_drop_reason_group_state[unit].drop_agg_ing_mmu_idx_refcount)
    141 
    142 #define BCMI_FT_DROP_REASON_GROUP_AGG_ING_MMU_REFCOUNT(unit, index)  \
    143     (bcmi_ft_drop_reason_group_state[unit].drop_agg_ing_mmu_idx_refcount[index])
    144 
    145 #define BCMI_FT_DROP_REASON_GROUP_AGG_ING_MMU_REFCOUNT_DEC(unit, index)  \
    146    ((bcmi_ft_drop_reason_group_state[unit].drop_agg_ing_mmu_idx_refcount[index])--)
    147 
    148 #define BCMI_FT_DROP_REASON_GROUP_AGG_ING_MMU_REFCOUNT_INC(unit, index)  \
    149    ((bcmi_ft_drop_reason_group_state[unit].drop_agg_ing_mmu_idx_refcount[index])++)
    150 
    151 #define BCMI_FT_DROP_REASON_GROUP_AGG_EGR_REFCOUNT_STATE(unit)  \
    152     (bcmi_ft_drop_reason_group_state[unit].drop_agg_egr_idx_refcount)
    153 
    154 #define BCMI_FT_DROP_REASON_GROUP_AGG_EGR_REFCOUNT(unit, index)  \
    155     (bcmi_ft_drop_reason_group_state[unit].drop_agg_egr_idx_refcount[index])
    156 
    157 #define BCMI_FT_DROP_REASON_GROUP_AGG_EGR_REFCOUNT_DEC(unit, index)  \
    158    ((bcmi_ft_drop_reason_group_state[unit].drop_agg_egr_idx_refcount[index])--)
    159 
    160 #define BCMI_FT_DROP_REASON_GROUP_AGG_EGR_REFCOUNT_INC(unit, index)  \
    161    ((bcmi_ft_drop_reason_group_state[unit].drop_agg_egr_idx_refcount[index])++)
    162 
    163 #endif
    164 
    165 
    166 #define BCMI_FT_DROP_REASON_ING_MMU_MAX_IDX(unit) \
    167    (bcmi_ft_drop_reason_group_state[unit].drop_ing_mmu_max_idx)
    168 
    169 #define BCMI_FT_DROP_REASON_EGR_MAX_IDX(unit) \
    170    (bcmi_ft_drop_reason_group_state[unit].drop_egr_max_idx)
    171 
    172 #define BCMI_FT_DROP_REASON_SW_TO_HW_STATE(unit) \
    173    (bcmi_ft_drop_reason_group_state[unit].drop_reason_sw_to_hw)
    174 
    175 #define BCMI_FT_DROP_REASON_ING_MMU_HW_TO_SW_STATE(unit) \
    176    (bcmi_ft_drop_reason_group_state[unit].drop_reason_ing_mmu_hw_to_sw)
    177 
    178 #define BCMI_FT_DROP_REASON_EGR_HW_TO_SW_STATE(unit) \
    179    (bcmi_ft_drop_reason_group_state[unit].drop_reason_egr_hw_to_sw)
    180 
    181 #define BCMI_FT_DROP_REASON_SW_TO_HW(unit, sw_enum) \
    182     (bcmi_ft_drop_reason_group_state[unit].drop_reason_sw_to_hw[sw_enum])
    183 
    184 #define BCMI_FT_DROP_REASON_ING_MMU_HW_TO_SW(unit, hw_bit) \
    185     (bcmi_ft_drop_reason_group_state[unit].drop_reason_ing_mmu_hw_to_sw[hw_bit])
    186 
    187 #define BCMI_FT_DROP_REASON_EGR_HW_TO_SW(unit, hw_bit) \
    188     (bcmi_ft_drop_reason_group_state[unit].drop_reason_egr_hw_to_sw[hw_bit])
    189 
    190 extern void
    191 bcmi_ftv2_drop_reason_group_incr_ref_count(int unit,
    192                 bcm_flowtracker_drop_reason_group_t id);
    193 
    194 extern void
    195 bcmi_ftv2_drop_reason_group_decr_ref_count(int unit,
    196                 bcm_flowtracker_drop_reason_group_t id);
    197 
    198 extern int
    199 bcmi_ftv2_drop_reason_group_id_is_invalid(int unit,
    200                 bcm_flowtracker_drop_reason_group_t id);
    201 
    202 extern int
    203 bcmi_ftv2_drop_reason_group_vector_get(int unit,
    204                           bcmi_flowtracker_flowchecker_info_t *fc_info,
    205                           int *dg_check_pri_vector_value,
    206                           int *dg_check_sec_vector_value);
    207 
    208 extern int
    209 bcmi_ftv2_drop_reason_group_init(int unit);
    210 
    211 extern void
    212 bcmi_ftv2_drop_reason_group_cleanup(int unit);
    213 
    214 extern int
    215 bcmi_ftv2_drop_reason_group_create(int unit,
    216                                    uint32 flags,
    217                                    bcm_flowtracker_drop_reasons_t drop_reasons,
    218                                    bcm_flowtracker_drop_reason_group_t *id);
    219 
    220 extern int
    221 bcmi_ftv2_drop_reason_group_get(int unit,
    222                                 bcm_flowtracker_drop_reason_group_t id,
    223                                 bcm_flowtracker_drop_reasons_t *drop_reasons);
    224 
    225 extern int
    226 bcmi_ftv2_drop_reason_group_delete(int unit,
    227                                    bcm_flowtracker_drop_reason_group_t id);
    228 
    229 #endif /* BCM_FLOWTRACKER_SUPPORT && BCM_FLOWTRACKER_V2_SUPPORT */
    230 #endif /* _BCM_INT_FT_DROP_REASON_H_ */