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

ism_hash_cfg.c (8962B)


      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  * ISM-HASH configuration
      8  */
      9 
     10 #include <sal/types.h>
     11 #include <soc/util.h>
     12 #include <soc/ism_hash.h>
     13 #include <soc/drv.h>
     14 
     15 #ifdef BCM_ISM_SUPPORT
     16 
     17 /* 
     18  * Ordered set of banks based upon base entry in memory set.
     19  * Populated dynamically.
     20  */
     21 soc_hash_bank_t _soc_ism_shb[SOC_MAX_NUM_DEVICES][_SOC_ISM_MAX_BANKS];
     22 
     23 /* Memory sets. Partially auto-generated, partially populated dynamically */
     24 soc_hash_mem_set_t _soc_ism_shms[] = {
     25     { SOC_MEM_SET_VLAN_XLATE, &_soc_ism_shm[0], 2, NULL, 0,
     26       &_soc_ism_shk[0], 20, 0, 53 },
     27     { SOC_MEM_SET_L2_ENTRY, &_soc_ism_shm[2], 2, NULL, 0,
     28       &_soc_ism_shk[20], 11, 0, 68 },
     29     { SOC_MEM_SET_L3_ENTRY, &_soc_ism_shm[4], 3, NULL, 0,
     30       &_soc_ism_shk[31], 9, 0, 279 },
     31     { SOC_MEM_SET_EP_VLAN_XLATE, &_soc_ism_shm[7], 1, NULL, 0,
     32       &_soc_ism_shk[40], 4, 0, 43 },
     33     { SOC_MEM_SET_MPLS, &_soc_ism_shm[8], 2, NULL, 0,
     34       &_soc_ism_shk[44], 8, 0, 89 }
     35 };
     36 
     37 /* Logical memories. Auto-generated */
     38 soc_hash_mem_t _soc_ism_shm[] = {
     39     { VLAN_XLATEm, &_soc_ism_shmv[0], 3, &_soc_ism_shms[0] },
     40     { VLAN_XLATE_EXTDm, &_soc_ism_shmv[3], 2, &_soc_ism_shms[0] },
     41     { L2_ENTRY_1m, &_soc_ism_shmv[5], 6, &_soc_ism_shms[1] },
     42     { L2_ENTRY_2m, &_soc_ism_shmv[11], 1, &_soc_ism_shms[1] },
     43     { L3_ENTRY_1m, &_soc_ism_shmv[12], 4, &_soc_ism_shms[2] },
     44     { L3_ENTRY_2m, &_soc_ism_shmv[16], 3, &_soc_ism_shms[2] },
     45     { L3_ENTRY_4m, &_soc_ism_shmv[19], 2, &_soc_ism_shms[2] },
     46     { EGR_VLAN_XLATEm, &_soc_ism_shmv[21], 2, &_soc_ism_shms[3] },
     47     { MPLS_ENTRYm, &_soc_ism_shmv[23], 1, &_soc_ism_shms[4] },
     48     { MPLS_ENTRY_EXTDm, &_soc_ism_shmv[24], 4, &_soc_ism_shms[4] },
     49 };
     50 
     51 /* Various views. Auto-generated */
     52 soc_hash_mem_view_t _soc_ism_shmv[] = {
     53     { SOC_MEM_VIEW_VLAN_XLATE_1_XLATE, { XLATE__KEYf, -1 }, 45,
     54       XLATE__HASH_LSBf, &_soc_ism_shm[0] },
     55     { SOC_MEM_VIEW_VLAN_XLATE_1_VLAN_MAC, { VLAN_MAC__KEYf, -1 }, 53,
     56       VLAN_MAC__HASH_LSBf, &_soc_ism_shm[0] },
     57     { SOC_MEM_VIEW_VLAN_XLATE_1_VIF, { VIF__KEYf, -1 }, 45, VIF__HASH_LSBf, 
     58       &_soc_ism_shm[0] },
     59     { SOC_MEM_VIEW_VLAN_XLATE_2_XLATE, { XLATE__KEY_0f, -1 }, 45,
     60       XLATE__HASH_LSBf, &_soc_ism_shm[1] },
     61     { SOC_MEM_VIEW_VLAN_XLATE_2_MAC_IP_BIND, { MAC_IP_BIND__KEY_0f, -1 }, 37,
     62       MAC_IP_BIND__HASH_LSBf, &_soc_ism_shm[1] },
     63     { SOC_MEM_VIEW_L2_ENTRY_1_L2, { L2__KEYf, -1}, 66, L2__HASH_LSBf,
     64       &_soc_ism_shm[2] },
     65     { SOC_MEM_VIEW_L2_ENTRY_1_VLAN, { VLAN__KEYf, -1 }, 28, VLAN__HASH_LSBf,
     66       &_soc_ism_shm[2] },
     67     { SOC_MEM_VIEW_L2_ENTRY_1_VIF, { VIF__KEYf, -1 }, 31, VIF__HASH_LSBf,
     68       &_soc_ism_shm[2] },
     69     { SOC_MEM_VIEW_L2_ENTRY_1_TRILL_NONUC_NETWORK_LONG,
     70       { TRILL_NONUC_NETWORK_LONG__KEYf, -1 }, 68, 
     71         TRILL_NONUC_NETWORK_LONG__HASH_LSBf, &_soc_ism_shm[2] },
     72     { SOC_MEM_VIEW_L2_ENTRY_1_TRILL_NONUC_NETWORK_SHORT, 
     73       { TRILL_NONUC_NETWORK_SHORT__KEYf, -1 }, 20,
     74         TRILL_NONUC_NETWORK_SHORT__HASH_LSBf, &_soc_ism_shm[2] },
     75     { SOC_MEM_VIEW_L2_ENTRY_1_BFD, { BFD__KEYf, -1 }, 37, BFD__HASH_LSBf,
     76       &_soc_ism_shm[2] },
     77     { SOC_MEM_VIEW_L2_ENTRY_2_L2, { L2__KEY_0f, -1 }, 66, L2__HASH_LSBf,
     78       &_soc_ism_shm[3] },
     79     { SOC_MEM_VIEW_L3_ENTRY_1_IPV4UC, { IPV4UC__KEYf, -1 }, 49,
     80       IPV4UC__HASH_LSBf, &_soc_ism_shm[4] },
     81     { SOC_MEM_VIEW_L3_ENTRY_1_LMEP, { LMEP__KEYf, -1 }, 33, LMEP__HASH_LSBf,
     82       &_soc_ism_shm[4] },
     83     { SOC_MEM_VIEW_L3_ENTRY_1_RMEP, { RMEP__KEYf, -1 }, 52, RMEP__HASH_LSBf,
     84       &_soc_ism_shm[4] },
     85     { SOC_MEM_VIEW_L3_ENTRY_1_TRILL, { TRILL__KEYf, -1 }, 24, TRILL__HASH_LSBf,
     86       &_soc_ism_shm[4] },
     87     { SOC_MEM_VIEW_L3_ENTRY_2_IPV4UC, { IPV4UC__KEY_0f, -1, }, 49,
     88       IPV4UC__HASH_LSBf, &_soc_ism_shm[5] },
     89     { SOC_MEM_VIEW_L3_ENTRY_2_IPV4MC, { IPV4MC__KEY_0f, -1 }, 95,
     90       IPV4MC__HASH_LSBf, &_soc_ism_shm[5] },
     91     { SOC_MEM_VIEW_L3_ENTRY_2_IPV6UC, { IPV6UC__KEY_0f, IPV6UC__KEY_1f, -1 },
     92       145 /*81+64*/, IPV6UC__HASH_LSBf, &_soc_ism_shm[5] },
     93     { SOC_MEM_VIEW_L3_ENTRY_4_IPV6UC, { IPV6UC__KEY_0f, IPV6UC__KEY_1f, -1 },
     94       145 /*81+64*/, IPV6UC__HASH_LSBf, &_soc_ism_shm[6] },
     95     { SOC_MEM_VIEW_L3_ENTRY_4_IPV6MC, { IPV6MC__KEY_0f, IPV6MC__KEY_1f,
     96       IPV6MC__KEY_2f, IPV6MC__KEY_3f, -1 }, 279 /*95+64+96+24*/,
     97       IPV6MC__HASH_LSBf, &_soc_ism_shm[6] },
     98     { SOC_MEM_VIEW_EP_VLAN_XLATE_1_XLATE, { XLATE__KEYf, -1 }, 43,
     99       XLATE__HASH_LSBf, &_soc_ism_shm[7] },
    100     { SOC_MEM_VIEW_EP_VLAN_XLATE_1_MIM_ISID, { MIM_ISID__KEYf, -1 }, 33,
    101       MIM_ISID__HASH_LSBf, &_soc_ism_shm[7] },
    102     { SOC_MEM_VIEW_MPLS_ENTRY_1_MPLS, { MPLS__KEYf, -1 }, 41, MPLS__HASH_LSBf,
    103       &_soc_ism_shm[8] },
    104     { SOC_MEM_VIEW_MPLS_ENTRY_2_MPLS, { MPLS__KEY_0f, -1 }, 41, MPLS__HASH_LSBf,
    105       &_soc_ism_shm[9] },
    106     { SOC_MEM_VIEW_MPLS_ENTRY_2_MIM_NVP, { MIM_NVP__KEY_0f, -1 }, 65,
    107       MIM_NVP__HASH_LSBf, &_soc_ism_shm[9] },
    108     { SOC_MEM_VIEW_MPLS_ENTRY_2_MIM_ISID, { MIM_ISID__KEY_0f, -1 }, 89,
    109       MIM_ISID__HASH_LSBf, &_soc_ism_shm[9] },
    110     { SOC_MEM_VIEW_MPLS_ENTRY_2_TRILL, { TRILL__KEY_0f, -1 }, 21,
    111       TRILL__HASH_LSBf, &_soc_ism_shm[9] }
    112 };
    113 
    114 /* Different key types. Auto-generated */
    115 soc_hash_key_t _soc_ism_shk[] = {
    116     { SOC_MEM_KEY_VLAN_XLATE_1_XLATE_IVID_OVID, &_soc_ism_shmv[0] },
    117     { SOC_MEM_KEY_VLAN_XLATE_2_XLATE_IVID_OVID, &_soc_ism_shmv[3] },
    118     { SOC_MEM_KEY_VLAN_XLATE_1_XLATE_OVID, &_soc_ism_shmv[0] },
    119     { SOC_MEM_KEY_VLAN_XLATE_2_XLATE_OVID, &_soc_ism_shmv[3] },
    120     { SOC_MEM_KEY_VLAN_XLATE_1_XLATE_IVID, &_soc_ism_shmv[0] },
    121     { SOC_MEM_KEY_VLAN_XLATE_2_XLATE_IVID, &_soc_ism_shmv[3] },
    122     { SOC_MEM_KEY_VLAN_XLATE_1_XLATE_OTAG, &_soc_ism_shmv[0] },
    123     { SOC_MEM_KEY_VLAN_XLATE_2_XLATE_OTAG, &_soc_ism_shmv[3] },
    124     { SOC_MEM_KEY_VLAN_XLATE_1_XLATE_ITAG, &_soc_ism_shmv[0] },
    125     { SOC_MEM_KEY_VLAN_XLATE_2_XLATE_ITAG, &_soc_ism_shmv[3] },
    126     { SOC_MEM_KEY_VLAN_XLATE_1_XLATE_PRI_CFI, &_soc_ism_shmv[0] },
    127     { SOC_MEM_KEY_VLAN_XLATE_2_XLATE_PRI_CFI, &_soc_ism_shmv[3] },
    128     { SOC_MEM_KEY_VLAN_XLATE_1_XLATE_IVID_OVID_SVP, &_soc_ism_shmv[0] },
    129     { SOC_MEM_KEY_VLAN_XLATE_2_XLATE_IVID_OVID_SVP, &_soc_ism_shmv[3] },
    130     { SOC_MEM_KEY_VLAN_XLATE_1_XLATE_OVID_SVP, &_soc_ism_shmv[0] },
    131     { SOC_MEM_KEY_VLAN_XLATE_2_XLATE_OVID_SVP, &_soc_ism_shmv[3] },
    132     { SOC_MEM_KEY_VLAN_XLATE_1_VLAN_MAC_VLAN_MAC, &_soc_ism_shmv[1] },
    133     { SOC_MEM_KEY_VLAN_XLATE_1_VIF_VIF, &_soc_ism_shmv[2] },
    134     { SOC_MEM_KEY_VLAN_XLATE_1_VIF_VIF_VLAN, &_soc_ism_shmv[2] },
    135     { SOC_MEM_KEY_VLAN_XLATE_2_MAC_IP_BIND_HPAE, &_soc_ism_shmv[3] },    
    136     { SOC_MEM_KEY_L2_ENTRY_1_L2_BRIDGE, &_soc_ism_shmv[5] },
    137     { SOC_MEM_KEY_L2_ENTRY_2_L2_BRIDGE, &_soc_ism_shmv[11] },
    138     { SOC_MEM_KEY_L2_ENTRY_1_L2_VFI, &_soc_ism_shmv[5] },
    139     { SOC_MEM_KEY_L2_ENTRY_2_L2_VFI, &_soc_ism_shmv[11] },
    140     { SOC_MEM_KEY_L2_ENTRY_1_VLAN_SINGLE_CROSS_CONNECT, &_soc_ism_shmv[6] },
    141     { SOC_MEM_KEY_L2_ENTRY_1_VLAN_DOUBLE_CROSS_CONNECT, &_soc_ism_shmv[6] },
    142     { SOC_MEM_KEY_L2_ENTRY_1_VIF_VIF, &_soc_ism_shmv[7] },
    143     { SOC_MEM_KEY_L2_ENTRY_2_L2_TRILL_NONUC_ACCESS, &_soc_ism_shmv[11] },
    144     { SOC_MEM_KEY_L2_ENTRY_1_TRILL_NONUC_NETWORK_LONG_TRILL_NONUC_NETWORK_LONG,
    145       &_soc_ism_shmv[8] },
    146     {SOC_MEM_KEY_L2_ENTRY_1_TRILL_NONUC_NETWORK_SHORT_TRILL_NONUC_NETWORK_SHORT,
    147       &_soc_ism_shmv[9] },
    148     { SOC_MEM_KEY_L2_ENTRY_1_BFD_BFD, &_soc_ism_shmv[10] },
    149     { SOC_MEM_KEY_L3_ENTRY_1_IPV4UC_IPV4_UNICAST, &_soc_ism_shmv[12] },
    150     { SOC_MEM_KEY_L3_ENTRY_2_IPV4UC_IPV4_UNICAST, &_soc_ism_shmv[16] },
    151     { SOC_MEM_KEY_L3_ENTRY_2_IPV4MC_IPV4_MULTICAST, &_soc_ism_shmv[17] },
    152     { SOC_MEM_KEY_L3_ENTRY_4_IPV6UC_IPV6_UNICAST, &_soc_ism_shmv[19] },
    153     { SOC_MEM_KEY_L3_ENTRY_2_IPV6UC_IPV6_UNICAST, &_soc_ism_shmv[18] },
    154     { SOC_MEM_KEY_L3_ENTRY_4_IPV6MC_IPV6_MULTICAST, &_soc_ism_shmv[20] },
    155     { SOC_MEM_KEY_L3_ENTRY_1_LMEP_LMEP, &_soc_ism_shmv[13] },
    156     { SOC_MEM_KEY_L3_ENTRY_1_RMEP_RMEP, &_soc_ism_shmv[14] },
    157     { SOC_MEM_KEY_L3_ENTRY_1_TRILL_TRILL, &_soc_ism_shmv[15] },
    158     { SOC_MEM_KEY_EP_VLAN_XLATE_1_XLATE_VLAN_XLATE, &_soc_ism_shmv[21] },
    159     { SOC_MEM_KEY_EP_VLAN_XLATE_1_XLATE_VLAN_XLATE_DVP, &_soc_ism_shmv[21] },
    160     { SOC_MEM_KEY_EP_VLAN_XLATE_1_MIM_ISID_MIM_ISID, &_soc_ism_shmv[22] },
    161     { SOC_MEM_KEY_EP_VLAN_XLATE_1_MIM_ISID_MIM_ISID_DVP, &_soc_ism_shmv[22] },
    162     { SOC_MEM_KEY_MPLS_ENTRY_1_MPLS_MPLS_FIRST_PASS, &_soc_ism_shmv[23] },
    163     { SOC_MEM_KEY_MPLS_ENTRY_2_MPLS_MPLS_FIRST_PASS, &_soc_ism_shmv[24] },
    164     { SOC_MEM_KEY_MPLS_ENTRY_1_MPLS_MPLS_SECOND_PASS, &_soc_ism_shmv[23] },
    165     { SOC_MEM_KEY_MPLS_ENTRY_2_MPLS_MPLS_SECOND_PASS, &_soc_ism_shmv[24] },
    166     { SOC_MEM_KEY_MPLS_ENTRY_2_MIM_NVP_MIM_NVP, &_soc_ism_shmv[25] },
    167     { SOC_MEM_KEY_MPLS_ENTRY_2_MIM_ISID_MIM_ISID, &_soc_ism_shmv[26] },
    168     { SOC_MEM_KEY_MPLS_ENTRY_2_MIM_ISID_MIM_ISID_SVP, &_soc_ism_shmv[26] },
    169     { SOC_MEM_KEY_MPLS_ENTRY_2_TRILL_TRILL, &_soc_ism_shmv[27] }
    170 };
    171 
    172 #endif
    173