tdm_th2_vec.h (2907B)
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 * All Rights Reserved.$ 7 * 8 * TDM vector library for BCM56970 9 */ 10 11 #ifndef TDM_TH2_VECTOR_LIBRARY_H 12 #define TDM_TH2_VECTOR_LIBRARY_H 13 /** 14 @name: tdm_th2_vector_load 15 @param: 16 17 Generate vector at index in TDM vector map 18 */ 19 int 20 tdm_th2_vec_load(unsigned short **map, int bw, int port_speed, int yy, int len, int num_ext_ports) 21 { 22 int i, n=0; 23 24 switch (bw) { 25 case 1700: 26 case 1275: 27 case 1133: 28 case 850: 29 switch (port_speed) { 30 case 100: 31 for (i=0; i<len; i+=(len/40)) { 32 map[yy][i] = TOKEN_100G; 33 n++; 34 if (n==((port_speed*10)/BW_QUANTA)) { 35 break; 36 } 37 } 38 break; 39 case 106: 40 for (i=0; i<len; i+=(len/40)) { 41 map[yy][i] = TOKEN_100G; 42 n++; 43 if (n==((100*10)/BW_QUANTA)) { 44 break; 45 } 46 } 47 break; 48 case 50: 49 for (i=0; i<len; i+=(len/20)) { 50 map[yy][i] = TOKEN_50G; 51 n++; 52 if (n==((port_speed*10)/BW_QUANTA)) { 53 break; 54 } 55 } 56 break; 57 case 53: 58 for (i=0; i<len; i+=(len/20)) { 59 map[yy][i] = TOKEN_50G; 60 n++; 61 if (n==((50*10)/BW_QUANTA)) { 62 break; 63 } 64 } 65 break; 66 case 40: 67 for (i=0; i<len; i+=(len/16)) { 68 map[yy][i] = TOKEN_40G; 69 n++; 70 if (n==((port_speed*10)/BW_QUANTA)) { 71 break; 72 } 73 } 74 break; 75 case 42: 76 for (i=0; i<len; i+=(len/16)) { 77 map[yy][i] = TOKEN_40G; 78 n++; 79 if (n==((40*10)/BW_QUANTA)) { 80 break; 81 } 82 } 83 break; 84 case 25: 85 for (i=0; i<len; i+=(len/10)) { 86 map[yy][i] = TOKEN_25G; 87 n++; 88 if (n==((port_speed*10)/BW_QUANTA)) { 89 break; 90 } 91 } 92 break; 93 case 27: 94 for (i=0; i<len; i+=(len/10)) { 95 map[yy][i] = TOKEN_25G; 96 n++; 97 if (n==((25*10)/BW_QUANTA)) { 98 break; 99 } 100 } 101 break; 102 case 20: 103 for (i=0; i<len; i+=(len/8)) { 104 map[yy][i] = TOKEN_20G; 105 n++; 106 if (n==((port_speed*10)/BW_QUANTA)) { 107 break; 108 } 109 } 110 break; 111 case 21: 112 for (i=0; i<len; i+=(len/8)) { 113 map[yy][i] = TOKEN_20G; 114 n++; 115 if (n==((20*10)/BW_QUANTA)) { 116 break; 117 } 118 } 119 break; 120 case 10: 121 for (i=0; i<len; i+=(len/4)) { 122 map[yy][i] = TOKEN_10G; 123 n++; 124 if (n==((port_speed*10)/BW_QUANTA)) { 125 break; 126 } 127 } 128 break; 129 case 11: 130 for (i=0; i<len; i+=(len/4)) { 131 map[yy][i] = TOKEN_10G; 132 n++; 133 if (n==((10*10)/BW_QUANTA)) { 134 break; 135 } 136 } 137 break; 138 case 1: 139 map[yy][0] = TOKEN_1G; 140 break; 141 } 142 break; 143 default: 144 switch (port_speed) { 145 default: 146 return 0; 147 break; 148 } 149 } 150 151 return 1; 152 153 } 154 #endif /* TDM_TH2_VECTOR_LIBRARY_H */