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

ecn.h (3195B)


      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  * ECN - Broadcom StrataSwitch ECN API internal definitions 
      8  */
      9 
     10 #ifndef _BCM_INT_ECN_H
     11 #define _BCM_INT_ECN_H
     12 
     13 /* ECN max value */
     14 #define _BCM_ECN_VALUE_MAX               (3)
     15 
     16 /* Max Internal Congestion value */
     17 #define _BCM_ECN_INT_CN_VALUE_MAX        (3)
     18 
     19 /* Action dequeue memory index */
     20 #define _BCM_ECN_DEQUEUE_MEM_INDEX_INT_CN_OFFSET          (0x5)
     21 #define _BCM_ECN_DEQUEUE_MEM_INDEX_CE_GREEN_OFFSET        (0x4)
     22 #define _BCM_ECN_DEQUEUE_MEM_INDEX_CE_YELLOW_OFFSET       (0x3)
     23 #define _BCM_ECN_DEQUEUE_MEM_INDEX_CE_RED_OFFSET          (0x2)
     24 #define _BCM_ECN_DEQUEUE_MEM_INDEX_CNG_OFFSET             (0x0)
     25 
     26 #define _BCM_ECN_DEQUEUE_MEM_INDEX_INT_CN_OFFSET_TD3      (0x3)
     27 #define _BCM_ECN_DEQUEUE_MEM_INDEX_CE_OFFSET_TD3          (0x2)
     28 
     29 /* Action egress memory index*/
     30 #define _BCM_ECN_EGRESS_MEM_INDEX_INT_CN_OFFSET           (0x2)
     31 #define _BCM_ECN_EGRESS_MEM_INDEX_ECN_OFFSET              (0x0)
     32 
     33 /* Internal Congestion Action Values */
     34 #define _BCM_ECN_INT_CN_RESPONSIVE_DROP                   (0x0)
     35 #define _BCM_ECN_INT_CN_NON_RESPONSIVE_DROP               (0x1)
     36 #define _BCM_ECN_INT_CN_NON_CONGESTION_MARK_ECN           (0x2)
     37 #define _BCM_ECN_INT_CN_CONGESTION_MARK_ECN               (0x3)
     38 
     39 /* ECN */
     40 extern int
     41 _bcm_esw_ecn_init(int unit);
     42 #ifdef BCM_WARM_BOOT_SUPPORT_SW_DUMP
     43 extern void _bcm_esw_ecn_sw_dump(int unit);
     44 #endif
     45 #ifdef BCM_TOMAHAWK_SUPPORT
     46 extern int
     47 bcmi_xgs5_ecn_scache_size_get(int unit, uint32 *scache_size);
     48  
     49 #ifdef BCM_WARM_BOOT_SUPPORT
     50 extern int 
     51 bcmi_xgs5_ecn_sync(int unit, uint8 **scache_ptr);
     52 extern int
     53 bcmi_xgs5_ecn_reinit(int unit, uint8 **scache_ptr); 
     54 #endif /* BCM_WARM_BOOT_SUPPORT */
     55 
     56 #define _BCM_XGS5_MPLS_ECN_MAP_TYPE_MASK         0xC00
     57 #define _BCM_XGS5_MPLS_ECN_MAP_TYPE_EXP2ECN      0x400
     58 #define _BCM_XGS5_MPLS_ECN_MAP_TYPE_ECN2EXP      0x800
     59 #define _BCM_XGS5_MPLS_ECN_MAP_TYPE_INTCN2EXP    0xC00
     60 #define _BCM_XGS5_MPLS_ECN_MAP_NUM_MASK          0x0ff
     61 
     62 #define _BCM_ECN_MAX_ENTRIES_PER_MAP             0x20
     63 #define _BCM_ING_ECN_MAX_ENTRIES_PER_MAP         0x40
     64 
     65 #define _BCM_XGS5_ECN_MAP_TYPE_MASK               0xC000
     66 #define _BCM_XGS5_ECN_MAP_TYPE_TUNNEL_TERM        0x4000
     67 #define _BCM_XGS5_ECN_MAP_NUM_MASK                0x0ff
     68 #define _BCM_ECN_MAX_ENTRIES_PER_TUNNEL_TERM_MAP  0x10
     69 #define _BCM_ECN_MAX_ENTRIES_PER_TUNNEL_TERM_NONIP_MAP  0x4
     70 
     71 #define _BCM_ECN_ENCAP_ENTRIES   4
     72 
     73 typedef enum _bcm_ecn_map_type_s {
     74     _bcmEcnmapTypeExp2Ecn,      /* Ingress_EXP_TO_ECN map */
     75     _bcmEcnmapTypeIpEcn2Exp,    /* Egress_IP_ECN_TO_EXP map */
     76     _bcmEcnmapTypeIntcn2Exp,    /* Egress_INT_CN_TO_EXP map */
     77     _bcmEcnmapTypeTunnelTerm   /* Ingress Tunnel termination ecn map */
     78 } _bcm_ecn_map_type_e;
     79 extern int
     80 bcmi_xgs5_ecn_map_used_get(int unit, int map_index, _bcm_ecn_map_type_e type);
     81 extern int
     82 bcmi_ecn_map_id2hw_idx (int unit,int ecn_map_id,int *hw_idx);
     83 extern int
     84 bcmi_ecn_map_hw_idx2id (int unit, int hw_idx, int type, int *ecn_map_id);
     85 extern void bcmi_ecn_map_clean_up(int unit);
     86 #endif
     87 
     88 #endif /* _BCM_INT_ECN_H */