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

bondoptions.h (13842B)


      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  * File for SOC Bond Options Info structures and routines
      8  */
      9 
     10 #ifndef _SOC_BONDOPTIONS_H
     11 #define _SOC_BONDOPTIONS_H
     12 
     13 #include <soc/drv.h>
     14 
     15 
     16 typedef enum {
     17 
     18     /*  Feature Enables */
     19     socBondInfoFeatureNoL3,           /*  L3  */
     20     socBondInfoFeatureNoEcmp,           /*  Ecmp */
     21     socBondInfoFeatureNoAlpm,           /*  Alpm */
     22     socBondInfoFeatureNoL3Tunnel,       /*  L3 Tunnel */
     23     socBondInfoFeatureNoStaticNat,      /*  NAT */
     24     socBondInfoFeatureIpmcDisabled,   /*  IPMC */
     25     socBondInfoFeatureNoMim,            /*  MIM */
     26     socBondInfoFeatureNoMpls,           /*  MPLS */
     27     socBondInfoFeatureNoTrill,          /*  TRILL */
     28     socBondInfoFeatureNoVxlan,          /*  Vxlan */
     29     socBondInfoFeatureNoVxlanLite,      /*  Vxlan Lite */
     30     socBondInfoFeatureNoL2Gre,          /*  L2GRE */
     31     socBondInfoFeatureNoRiot,           /*  RIOT */
     32     socBondInfoFeatureNoEtherTm,        /*  Ether TM */
     33     socBondInfoFeatureNoFcoe,           /*  FCOE */
     34     socBondInfoFeatureNoTimeSync,       /*  TimeSync */
     35     socBondInfoFeatureNoHgProxyCoe,     /*  TD2+ COE */
     36     socBondInfoFeatureNoCoeVlanPause,   /*  COE Vlan Pause */
     37     socBondInfoFeatureNoCoeSubtag8100,  /*  COE can use 0x8100 */
     38     socBondInfoFeatureNoFpOam,          /*  FP-Based OAM */
     39     socBondInfoFeatureNoOsubCT,         /*  OS+CT support */
     40     socBondInfoFeatureNoCutThru,      /*  Cut-thru support */
     41     socBondInfoFeatureNoSat,            /*  SAT */
     42     socBondInfoFeatureNoFpRouting,      /*  IFP Based Routing */
     43     socBondInfoFeatureNoOam,            /*  OAM */
     44     socBondInfoFeatureNoLinkPhy,        /*  Link PHY */
     45     socBondInfoFeatureNoSubTagCoe,      /*  Subtag COE */
     46     socBondInfoFeatureNoPTP,            /*  PTP */
     47     socBondInfoFeatureNoServiceMeter,   /*  Service meter */
     48     socBondInfoFeatureNoAvs,            /*  AVS */
     49     socBondInfoFeatureNoOamTrueUpMep,   /*  OAM TRUE UPMEP       */
     50     socBondInfoFeatureNoEpRedirectV2,   /*  EP REDIRECT V2.0     */
     51     socBondInfoFeatureNoMultiLevelProt, /*  MULTI LEVEL PROT     */
     52     socBondInfoFeatureNoFpSat,          /*  FP-SAT (SAT Hooks)   */
     53     socBondInfoFeatureNoSegmentRouting, /*  Segment Routing      */
     54     socBondInfoFeatureNoCAUI10Support,  /*  CAUI10 Support       */
     55     socBondInfoFeatureHqos3Levels,    /*  HQOS 3 levels Support*/
     56     socBondInfoFeatureNoQCN,            /*  QCN                  */
     57     socBondInfoFeatureNoECN,            /*  ECN                  */
     58     socBondInfoFeatureNoDMVoq,          /*  DMVOQ                */
     59     socBondInfoFeatureNoDPVoq,          /*  DPVOQ                */
     60     socBondInfoFeatureNoPipe_2_3,       /*  PIPE2,3 */
     61     socBondInfoFeatureNoExactMatch,     /*  UFT ACL Match */
     62     socBondInfoFeatureNoEfp,            /*  EFP */
     63     socBondInfoFeatureNoIfp,            /*  IFP */
     64     socBondInfoFeatureNoVfp,            /*  VFP */
     65     socBondInfoFeatureNoLpm,            /*  LPM */
     66     socBondInfoFeatureNoUftBank0,       /*  UFT Bank 0 */
     67     socBondInfoFeatureNoUftBank1,       /*  UFT Bank 1 */
     68     socBondInfoFeatureNoUftBank2,       /*  UFT Bank 2 */
     69     socBondInfoFeatureNoUftBank3,       /*  UFT Bank 3 */
     70     socBondInfoFeatureNoMplsFrr,        /*  MPLS FRR */
     71     socBondInfoFeatureNoDynamicLoadBalancing, /*  DLB */
     72     socBondInfoFeatureNoDynamicAlternatePath, /*  Dynamic Alternate Path */
     73     socBondInfoFeatureNoPstats,         /*  Packetized Stats */
     74     socBondInfoFeatureNoTCB,            /*  TCB */
     75     socBondInfoFeatureNoTimestamp,      /*  Timestamp */
     76     socBondInfoFeatureNoRRCOE,          /*  RRCOE */
     77     socBondInfoFeatureNoPreemption,     /*  Preemption */
     78     socBondInfoFeatureNoTAS,            /*  TAS */
     79     socBondInfoFeatureNoHSR,            /*  HSR */
     80     socBondInfoFeatureNoPRP,            /*  PRP */
     81     socBondInfoFeatureNo8021CB,         /*  802_1CB */
     82     socBondInfoFeatureNoMacsec,         /*  MACSEC */
     83     socBondInfoFeatureNoReserveTunnel,  /*  RESERVE TUNNEL */
     84 
     85     /*  Table size updates */
     86     socBondInfoFeatureVrf1k,         /*  1K VRF */
     87     socBondInfoFeatureVrf2k,         /*  2K VRF */
     88     socBondInfoFeatureVrf4k,         /*  4K VRF */
     89     socBondInfoFeatureL3Entry1k,     /*  L3_ENTRY */
     90     socBondInfoFeatureL3Iif8k,       /*  8K IIF */
     91     socBondInfoFeatureL3Iif12k,      /*  12K IIF */
     92     socBondInfoFeatureUft128k,       /*  Half UFT - 128K */
     93     socBondInfoFeatureUft256k,       /*  Full UFT - 256K */
     94     socBondInfoFeatureIpmc64,        /*  64 IPMC */
     95     socBondInfoFeatureIpmc1k,        /*  1K IPMC */
     96     socBondInfoFeatureIpmc4k,        /*  4K IPMC */
     97     socBondInfoFeatureIpmc8k,        /*  8K IPMC */
     98     socBondInfoFeatureMmu1Mb,        /*  1MB Buffers */
     99     socBondInfoFeatureMmu2Mb,        /*  2MB Buffers */
    100     socBondInfoFeatureMmu6Mb,        /*  6MB Buffers */
    101     socBondInfoFeatureMmu9Mb,        /*  9MB Buffers */
    102     socBondInfoFeatureMmu12Mb,       /*  12MB Buffers */
    103     socBondInfoFeatureIfp64HalfSlice,  /*  IFP Half slice (64)*/
    104     socBondInfoFeatureIfpSliceHalf,   /*  IFP Half slice (512) */
    105     socBondInfoFeatureEfp64HalfSlice, /* EFP Half Slice (64) */
    106     socBondInfoFeatureEfp512HalfSlice,/* EFP Half Slice (512) */
    107     socBondInfoFeatureVfp64HalfSlice,/* VFP Half Slice (64) */
    108     socBondInfoFeatureVfp512HalfSlice,/* VFP Half Slice (512) */
    109     socBondInfoFeatureMpls1k,         /* 1K MPLS Table*/
    110     socBondInfoFeatureMpls2k,         /* 2K MPLS Table*/
    111     socBondInfoFeatureL2Entry4k,      /* 4K L2_ENTRY Table*/
    112     socBondInfoFeatureL2Entry8k,      /* 8K L2_ENTRY Table*/
    113     socBondInfoFeatureL2Entry16k,     /* 16K L2_ENTRY Table*/
    114     socBondInfoFeatureL2Entry32k,     /* 32K L2_ENTRY Table*/
    115     socBondInfoFeatureIpVlanXlate256, /* 256 IP VLAN_XLATE Table*/
    116     socBondInfoFeatureIpVlanXlate1k,  /* 1K IP VLAN_XLATE Table*/
    117     socBondInfoFeatureIpVlanXlate4k,  /* 4K IP VLAN_XLATE Table*/
    118     socBondInfoFeatureL3NextHop768,   /* 768 L3_NEXT_HOP Table*/
    119     socBondInfoFeatureL3NextHop1k,    /* 1K L3_NEXT_HOP Table*/
    120     socBondInfoFeatureL3NextHop2k,    /* 2K L3_NEXT_HOP Table*/
    121     socBondInfoFeatureL3NextHop5k,    /* 5K L3_NEXT_HOP Table*/
    122     socBondInfoFeatureL3DefIpDisable,/*  L3_DEF_IP Table*/
    123     socBondInfoFeatureL2mc256,       /*  256 L2MC */
    124     socBondInfoFeatureL2mc4k,        /*  4K L2MC */
    125     socBondInfoFeatureSVP4k,         /*  4K SVP */
    126     socBondInfoFeatureL3HostMax512,  /*  512 L3 Max Host */
    127     socBondInfoFeatureL3HostMax4k,   /*  4K L3 Max Host */
    128     socBondInfoFeatureVrf16,         /*  16 VRFs */
    129     socBondInfoFeatureL3NHop8k,      /*  8k NHOPs */
    130     socBondInfoFeatureL3NHop32k,     /* 32k NHOPs */
    131     socBondInfoFeatureL3Intf8k,      /*  8k L3_INTF */
    132     socBondInfoFeatureL3Intf12k,     /* 12k L3_INTF */
    133     socBondInfoFeatureIfpSlice1k5,    /*  IFP Slice Depth 1.5k Entries */
    134     socBondInfoFeatureIfpSlice3k,     /*  IFP Slice Depth 3k Entries */
    135     socBondInfoFeatureIfpSlice6k,     /*  IFP Slice Depth 6k Entries */
    136     socBondInfoFeatureLpm64,          /*  64 LPM */
    137     socBondInfoFeatureLpm1k,          /*  1K LPM */
    138     socBondInfoFeatureLpm2k,          /*  2K LPM */
    139     socBondInfoFeatureLpm8k,          /*  8K LPM */
    140     socBondInfoFeatureLpm16k,         /*  16K LPM */
    141     socBondInfoFeatureNextHop16k,     /*  16K Next Hop */
    142     socBondInfoFeatureNextHop32k,     /*  32K Next Hop */
    143     socBondInfoFeatureNextHop48k,     /*  48K Next Hop */
    144     socBondInfoFeatureStg32,          /*  32  span tree groups */
    145     socBondInfoFeatureStg256,         /*  256 span tree groups */
    146     socBondInfoFeatureSRFlowId256,    /*  256 Seamless Redundancy FlowID size */
    147     socBondInfoFeatureSRFlowId4k,     /*  4k Seamless Redundancy FlowID size */
    148 
    149     /*  iProc Related */
    150     socBondInfoFeatureUc0Active,     /*  UC0 Active */
    151     socBondInfoFeatureUc1Active,     /*  UC1 Active */
    152     socBondInfoFeatureSramPwrDwn,    /*  SRAM Powered Down */
    153     socBondInfoFeatureSpiCodeSize32KB, /*  SPI - 32KB */
    154     socBondInfoFeatureSpiCodeSize64KB, /*  SPI - 64KB */
    155     socBondInfoFeatureSpiCodeSize128KB,/*  SPI - 128KB */
    156     socBondInfoFeatureTs1588,          /*  TS-1588 */
    157     socBondInfoNoIHost,                /* iHost Disable */
    158     socBondInfoFeatureA72Frequency1Ghz, /* A72 Freq 1 Ghz */
    159     socBondInfoFeatureA72Frequency2Ghz, /* A72 Freq 2 Ghz */
    160 
    161     /* Chip Specific */
    162     socBondInfoFeatureFamilyApache,
    163     socBondInfoFeatureFamilyMaverick,
    164     socBondInfoFeatureFamilyFirebolt5,
    165     socBondInfoFeatureFamilyRanger2Plus,
    166     socBondInfoFeatureApacheCoSProfile0,
    167     socBondInfoFeatureApacheCoSProfile1,
    168     socBondInfoFeatureApacheCoSProfile2,
    169     socBondInfoFeatureApachePkg42p5mm,
    170     socBondInfoFeatureApachePkg50mmTDpCompat,
    171     socBondInfoFeatureApachePkg50mmTD2pCompat,
    172     socBondInfoFeatureMetroliteL1SyncE,
    173     socBondInfoFeatureMetroliteTelecomDPLL,
    174 
    175     /* Broadscan related */
    176     socBondInfoBskDisable,        /* Broadscan Disable */
    177     socBondInfoBskNoPktSampling,  /* BROADSCAN packet sampling disable */
    178     socBondInfoBskNoHWExportPktBuild,  /* BROADSCAN HW export packet build disable */
    179     socBondInfoBskNoTCPBidir,  /* BROADSCAN TCP bidir processing disable */
    180     socBondInfoBskNoDoSAttackVector,  /* BROADSCAN DOS attack vector check disable */
    181     socBondInfoBskNoMicroFlowPolicer, /* BROADSCAN micro flow policer disable */
    182     socBondInfoBskNoALU32Inst2to11,  /* BROADSCAN ALU32 inst 2_to_11 disable */
    183     socBondInfoBskSessionDepth8k, /* BROADSCAN Session table depth 8k */
    184     socBondInfoBskSessionDepth16k, /* BROADSCAN Session table depth 16k */
    185     socBondInfoBskSessionDepth32k, /* BROADSCAN Session table depth 32k */
    186 
    187     socBondInfoFeatureCount /* Alyways Last */
    188 } soc_bond_info_features_t;
    189 
    190 
    191 /*
    192  * Bond Options structure.
    193  *
    194  * New elements that cannot be fit into the 'features' definition should be
    195  * defined as spearate elements in the structure.
    196  */
    197 typedef struct soc_bond_info_s {
    198     uint16 dev_id;                  /*  16b:   DEVICE_ID               */
    199     uint16 rev_id;                  /*   8b:   REV_ID                  */
    200 
    201     uint32 device_skew;             /*   4b:   DEVICE_SKEW             */
    202     uint32 max_core_freq;           /*   3b:   MAX_CORE_FREQUENCY      */
    203     uint32 default_core_freq;       /*   3b:   DEFAULT_CORE_FREQUENCY  */
    204     uint32 mb_bank_num;             /*   4b:   MMU_MB_NUM_BANKS        */
    205     uint32 dpp_clk_ratio;           /*   2b:   DPP TO CORE RATIO       */
    206     uint32 avs_status;              /*   8b:   AVS_STATUS              */
    207     uint32 cbp_buffer_size;         /*   2b:   CBP_BUFFER_SIZE         */
    208     uint32 max_xqs_number;          /*   1b:   MAX_XQS_NUMBER          */
    209 
    210     uint32 defip_cam_map;           /*   8b:   DEFIP_CAM_ENABLE        */
    211     uint32 ifp_slice_map;           /*  12b:   IFP_SLICE_ENABLE        */
    212     uint32 efp_slice_map;           /*   4b:   EFP_SLICE_ENABLE        */
    213     uint32 vfp_slice_map;           /*   4b:   VFP_SLICE_ENABLE        */
    214     uint32 tsce_max_2p5g;           /*   14b:  FORCE_2P5G_MAX          */
    215     uint32 tscf_max_11g;            /*   4b:   FORCE_11G_MAX           */
    216     uint32 tsc_force_hg;            /*   18b:  FORCE_HG                */
    217     uint32 tsc_enable;              /*   18b:  TSC_ENABLE              */
    218     uint32 clmac_map;               /*   6b:   CLMAC_ENABLE            */
    219     uint32 xlmac_map;               /*  18b:   XLMAC_ENABLE            */
    220 
    221     SHR_BITDCL tsc_disabled[_SHR_BITDCLSIZE(65)];   /* 65b: TSC_DISABLE         */
    222     SHR_BITDCL force_hg[_SHR_BITDCLSIZE(64)];       /* 64b: FORCE_HG            */
    223     SHR_BITDCL tsc_max_speed[_SHR_BITDCLSIZE(128)]; /* 128b: TSC_MAX_LANE_SPEED */
    224     SHR_BITDCL tsc_sr_only[_SHR_BITDCLSIZE(64)];    /* 64b: TSC_SR_ONLY         */
    225     SHR_BITDCL tsc_in_loop[_SHR_BITDCLSIZE(128)];   /* 128b: TSC_FORCE_LOOPBACK */
    226     SHR_BITDCL cpri_enable[_SHR_BITDCLSIZE(48)];    /* 48b: TSC_CPRI_ENABE      */
    227     SHR_BITDCL ic_id[_SHR_BITDCLSIZE(64)];          /* 64b: ICID                */
    228 
    229     /*  Bitmap of bondoption features */
    230     SHR_BITDCL features[_SHR_BITDCLSIZE(socBondInfoFeatureCount)];
    231 } soc_bond_info_t;
    232 
    233 extern soc_bond_info_t *soc_bond_info[SOC_MAX_NUM_DEVICES];
    234 
    235 #define SOC_BOND_INFO(unit) (soc_bond_info[unit])
    236 
    237 /* Bond Info Features cache  - Access macros */
    238 #define SOC_BOND_INFO_FEATURE_GET(unit, feat)   \
    239         SHR_BITGET(SOC_BOND_INFO(unit)->features, feat)
    240 #define SOC_BOND_INFO_FEATURE_SET(unit, feat)   \
    241         SHR_BITSET(SOC_BOND_INFO(unit)->features, feat)
    242 #define SOC_BOND_INFO_FEATURE_CLEAR(unit, feat) \
    243         SHR_BITCLR(SOC_BOND_INFO(unit)->features, feat)
    244 
    245 #define SOC_BOND_INFO_GET(unit, attrib)     (SOC_BOND_INFO(unit)->attrib)
    246 #define SOC_BOND_INFO_SET(unit, attrib)     (SOC_BOND_INFO(unit)->attrib)
    247 
    248 #define SOC_BOND_INFO_REG_MAX       16
    249 #define SOC_BOND_INFO_REG_WIDTH     32
    250 #define SOC_BOND_INFO_MAX_BITS      (SOC_BOND_INFO_REG_MAX * SOC_BOND_INFO_REG_WIDTH)
    251 
    252 #define SOC_BOND_OPTIONS_COPY(_toval_, __cast__, _fromval_, _sbit_, _ebit_)  \
    253     do {                                                                     \
    254         {                                                                    \
    255             uint32 bitrange_val = 0;                                         \
    256             SHR_BITCOPY_RANGE(&bitrange_val, 0,                              \
    257                               (CONST SHR_BITDCL *)(_fromval_),               \
    258                               (_sbit_), ((_ebit_) - (_sbit_) + 1));          \
    259             _toval_ = (__cast__)bitrange_val;                                \
    260         }                                                                    \
    261     } while (0)
    262 
    263 
    264 extern int soc_bond_info_registers[SOC_BOND_INFO_REG_MAX];
    265 
    266 #endif /* !_SOC_BONDOPTIONS_H */