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