tdm_gh2_vec.h (24959B)
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 BCM53570 9 */ 10 11 #ifndef TDM_GH2_VECTOR_LIBRARY_H 12 #define TDM_GH2_VECTOR_LIBRARY_H 13 /** 14 @name: tdm_gh2_vector_load 15 @param: 16 17 Generate vector at index in TDM vector map 18 */ 19 int 20 tdm_gh2_vec_load(unsigned short **map, int freq, int port_speed, int yy, int len) 21 { 22 int i, n=0; 23 int result=1; /* 1->PASS; 0->FAIL */ 24 25 switch (freq){ 26 case 850: 27 switch(port_speed){ 28 /* Ethernet */ 29 case 10: 30 for (i=0; i<len; i+=56) { 31 map[yy][i] = TOKEN_10G; 32 n+=1; if (n==4) {break;} 33 } 34 break; 35 case 20: 36 for (i=0; i<len; i+=28) { 37 map[yy][i] = TOKEN_20G; 38 n+=1; if (n==8) {break;} 39 } 40 break; 41 case 25: 42 for (i=0; i<len && (i+89)<len; i+=112) { 43 map[yy][i] = TOKEN_25G; 44 map[yy][i+22] = TOKEN_25G; 45 map[yy][i+44] = TOKEN_25G; 46 map[yy][i+67] = TOKEN_25G; 47 map[yy][i+89] = TOKEN_25G; 48 n+=5; if (n==10) {break;} 49 } 50 break; 51 case 40: 52 for (i=0; i<len; i+=14) { 53 map[yy][i] = TOKEN_40G; 54 n+=1; if (n==16) {break;} 55 } 56 break; 57 case 41: 58 for (i=0; i<len && (i+16)<len; i+=28) { 59 map[yy][i] = TOKEN_40G; 60 map[yy][i+16] = TOKEN_40G; 61 n+=2; if (n==16) {break;} 62 } 63 break; 64 case 50: 65 for (i=0; i<len && (i+44)<len; i+=56) { 66 map[yy][i] = TOKEN_50G; 67 map[yy][i+11] = TOKEN_50G; 68 map[yy][i+22] = TOKEN_50G; 69 map[yy][i+33] = TOKEN_50G; 70 map[yy][i+44] = TOKEN_50G; 71 n+=5; if (n==20) {break;} 72 } 73 break; 74 case 100: 75 for (i=0; i<len && (i+50)<len; i+=56) { 76 map[yy][i] = TOKEN_100G; 77 map[yy][i+5] = TOKEN_100G; 78 map[yy][i+11] = TOKEN_100G; 79 map[yy][i+16] = TOKEN_100G; 80 map[yy][i+22] = TOKEN_100G; 81 map[yy][i+28] = TOKEN_100G; 82 map[yy][i+33] = TOKEN_100G; 83 map[yy][i+39] = TOKEN_100G; 84 map[yy][i+44] = TOKEN_100G; 85 map[yy][i+50] = TOKEN_100G; 86 n+=10; if (n==40) {break;} 87 } 88 break; 89 /* HiGig */ 90 case 11: 91 for (i=0; i<len; i+=54) { 92 map[yy][i] = TOKEN_10G; 93 n+=1; if (n==4) {break;} 94 } 95 break; 96 case 21: 97 for (i=0; i<len; i+=27) { 98 map[yy][i] = TOKEN_20G; 99 n+=1; if (n==8) {break;} 100 } 101 break; 102 case 27: 103 for (i=0; i<len && (i+22)<len; i+=43) { 104 map[yy][i] = TOKEN_25G; 105 map[yy][i+22] = TOKEN_25G; 106 n+=2; if (n==10) {break;} 107 } 108 break; 109 case 42: 110 for (i=0; i<len && (i+13)<len; i+=27) { 111 map[yy][i] = TOKEN_40G; 112 map[yy][i+13] = TOKEN_40G; 113 n+=2; if (n==16) {break;} 114 } 115 break; 116 case 43: 117 for (i=0; i<len && (i+84)<len; i+=113) { 118 map[yy][i] = TOKEN_40G; 119 map[yy][i+14] = TOKEN_40G; 120 map[yy][i+27] = TOKEN_40G; 121 map[yy][i+43] = TOKEN_40G; 122 map[yy][i+57] = TOKEN_40G; 123 map[yy][i+70] = TOKEN_40G; 124 map[yy][i+84] = TOKEN_40G; 125 if (n==0 && (i+97)<len){ 126 map[yy][i+97] = TOKEN_40G; 127 } 128 n+=8; if (n==16) {break;} 129 } 130 break; 131 case 53: 132 for (i=0; i<len && (i+33)<len; i+=43) { 133 map[yy][i] = TOKEN_50G; 134 map[yy][i+11] = TOKEN_50G; 135 map[yy][i+22] = TOKEN_50G; 136 map[yy][i+33] = TOKEN_50G; 137 n+=4; if (n==20) {break;} 138 } 139 break; 140 case 106: 141 for (i=0; i<len && (i+38)<len; i+=43) { 142 map[yy][i] = TOKEN_100G; 143 map[yy][i+5] = TOKEN_100G; 144 map[yy][i+11] = TOKEN_100G; 145 map[yy][i+16] = TOKEN_100G; 146 map[yy][i+22] = TOKEN_100G; 147 map[yy][i+27] = TOKEN_100G; 148 map[yy][i+33] = TOKEN_100G; 149 map[yy][i+38] = TOKEN_100G; 150 n+=8; if (n==40) {break;} 151 } 152 break; 153 case 107: 154 for (i=0; i<len && (i+33)<len; i+=43) { 155 map[yy][i] = TOKEN_100G; 156 map[yy][i+5] = TOKEN_100G; 157 map[yy][i+11] = TOKEN_100G; 158 map[yy][i+16] = TOKEN_100G; 159 map[yy][i+22] = TOKEN_100G; 160 map[yy][i+27] = TOKEN_100G; 161 map[yy][i+33] = TOKEN_100G; 162 if (n<32 && (i+38)<len){ 163 map[yy][i+38] = TOKEN_100G; 164 } 165 n+=8; if (n==40) {break;} 166 } 167 break; 168 default: 169 result = 0; 170 break; 171 } 172 break; 173 case 765: 174 switch(port_speed){ 175 /* Ethernet */ 176 case 10: 177 for (i=0; i<len && (i+50)<len; i+=101) { 178 map[yy][i] = TOKEN_10G; 179 map[yy][i+50] = TOKEN_10G; 180 n+=2; if (n==4) {break;} 181 } 182 break; 183 case 20: 184 for (i=0; i<len && (i+75)<len; i+=101) { 185 map[yy][i] = TOKEN_20G; 186 map[yy][i+25] = TOKEN_20G; 187 map[yy][i+50] = TOKEN_20G; 188 map[yy][i+75] = TOKEN_20G; 189 n+=4; if (n==8) {break;} 190 } 191 break; 192 case 25: 193 for (i=0; i<len && (i+80)<len; i+=101) { 194 map[yy][i] = TOKEN_25G; 195 map[yy][i+20] = TOKEN_25G; 196 map[yy][i+40] = TOKEN_25G; 197 map[yy][i+60] = TOKEN_25G; 198 map[yy][i+80] = TOKEN_25G; 199 n+=5; if (n==10) {break;} 200 } 201 break; 202 case 40: 203 for (i=0; i<len && (i+88)<len; i+=101) { 204 map[yy][i] = TOKEN_40G; 205 map[yy][i+13] = TOKEN_40G; 206 map[yy][i+25] = TOKEN_40G; 207 map[yy][i+38] = TOKEN_40G; 208 map[yy][i+50] = TOKEN_40G; 209 map[yy][i+63] = TOKEN_40G; 210 map[yy][i+75] = TOKEN_40G; 211 map[yy][i+88] = TOKEN_40G; 212 n+=8; if (n==16) {break;} 213 } 214 break; 215 case 41: 216 for (i=0; i<len && (i+90)<len; i+=101) { 217 map[yy][i] = TOKEN_40G; 218 map[yy][i+15] = TOKEN_40G; 219 map[yy][i+25] = TOKEN_40G; 220 map[yy][i+40] = TOKEN_40G; 221 map[yy][i+50] = TOKEN_40G; 222 map[yy][i+65] = TOKEN_40G; 223 map[yy][i+75] = TOKEN_40G; 224 map[yy][i+90] = TOKEN_40G; 225 n+=8; if (n==16) {break;} 226 } 227 break; 228 case 50: 229 for (i=0; i<len && (i+90)<len; i+=101) { 230 map[yy][i] = TOKEN_50G; 231 map[yy][i+10] = TOKEN_50G; 232 map[yy][i+20] = TOKEN_50G; 233 map[yy][i+30] = TOKEN_50G; 234 map[yy][i+40] = TOKEN_50G; 235 map[yy][i+50] = TOKEN_50G; 236 map[yy][i+60] = TOKEN_50G; 237 map[yy][i+70] = TOKEN_50G; 238 map[yy][i+80] = TOKEN_50G; 239 map[yy][i+90] = TOKEN_50G; 240 n+=10; if (n==20) {break;} 241 } 242 break; 243 case 100: 244 for (i=0; i<len && (i+95)<len; i+=101) { 245 map[yy][i] = TOKEN_100G; 246 map[yy][i+5] = TOKEN_100G; 247 map[yy][i+10] = TOKEN_100G; 248 map[yy][i+15] = TOKEN_100G; 249 map[yy][i+20] = TOKEN_100G; 250 map[yy][i+25] = TOKEN_100G; 251 map[yy][i+30] = TOKEN_100G; 252 map[yy][i+35] = TOKEN_100G; 253 map[yy][i+40] = TOKEN_100G; 254 map[yy][i+45] = TOKEN_100G; 255 map[yy][i+50] = TOKEN_100G; 256 map[yy][i+55] = TOKEN_100G; 257 map[yy][i+60] = TOKEN_100G; 258 map[yy][i+65] = TOKEN_100G; 259 map[yy][i+70] = TOKEN_100G; 260 map[yy][i+75] = TOKEN_100G; 261 map[yy][i+80] = TOKEN_100G; 262 map[yy][i+85] = TOKEN_100G; 263 map[yy][i+90] = TOKEN_100G; 264 map[yy][i+95] = TOKEN_100G; 265 n+=20; if (n==40) {break;} 266 } 267 break; 268 /* HiGig */ 269 case 11: 270 for (i=0; i<len && (i+48)<len; i+=97) { 271 map[yy][i] = TOKEN_10G; 272 map[yy][i+48] = TOKEN_10G; 273 n+=2; if (n==4) {break;} 274 } 275 break; 276 case 21: 277 for (i=0; i<len && (i+72)<len; i+=97) { 278 map[yy][i] = TOKEN_20G; 279 map[yy][i+24] = TOKEN_20G; 280 map[yy][i+48] = TOKEN_20G; 281 map[yy][i+72] = TOKEN_20G; 282 n+=4; if (n==8) {break;} 283 } 284 break; 285 case 27: 286 for (i=0; i<len && (i+77)<len; i+=97) { 287 map[yy][i] = TOKEN_25G; 288 map[yy][i+20] = TOKEN_25G; 289 map[yy][i+39] = TOKEN_25G; 290 map[yy][i+58] = TOKEN_25G; 291 map[yy][i+77] = TOKEN_25G; 292 n+=5; if (n==10) {break;} 293 } 294 break; 295 case 42: 296 for (i=0; i<len && (i+84)<len; i+=97) { 297 map[yy][i] = TOKEN_40G; 298 map[yy][i+12] = TOKEN_40G; 299 map[yy][i+24] = TOKEN_40G; 300 map[yy][i+36] = TOKEN_40G; 301 map[yy][i+48] = TOKEN_40G; 302 map[yy][i+60] = TOKEN_40G; 303 map[yy][i+72] = TOKEN_40G; 304 map[yy][i+84] = TOKEN_40G; 305 n+=8; if (n==16) {break;} 306 } 307 break; 308 case 43: 309 for (i=0; i<len && (i+82)<len; i+=97) { 310 map[yy][i] = TOKEN_40G; 311 map[yy][i+10] = TOKEN_40G; 312 map[yy][i+24] = TOKEN_40G; 313 map[yy][i+34] = TOKEN_40G; 314 map[yy][i+48] = TOKEN_40G; 315 map[yy][i+58] = TOKEN_40G; 316 map[yy][i+72] = TOKEN_40G; 317 map[yy][i+82] = TOKEN_40G; 318 n+=8; if (n==16) {break;} 319 } 320 break; 321 case 53: 322 for (i=0; i<len && (i+87)<len; i+=97) { 323 map[yy][i] = TOKEN_50G; 324 map[yy][i+10] = TOKEN_50G; 325 map[yy][i+20] = TOKEN_50G; 326 map[yy][i+29] = TOKEN_50G; 327 map[yy][i+39] = TOKEN_50G; 328 map[yy][i+48] = TOKEN_50G; 329 map[yy][i+58] = TOKEN_50G; 330 map[yy][i+68] = TOKEN_50G; 331 map[yy][i+77] = TOKEN_50G; 332 map[yy][i+87] = TOKEN_50G; 333 n+=10; if (n==20) {break;} 334 } 335 break; 336 case 106: 337 for (i=0; i<len && (i+92)<len; i+=97) { 338 map[yy][i] = TOKEN_100G; 339 map[yy][i+5] = TOKEN_100G; 340 map[yy][i+10] = TOKEN_100G; 341 map[yy][i+15] = TOKEN_100G; 342 map[yy][i+20] = TOKEN_100G; 343 map[yy][i+24] = TOKEN_100G; 344 map[yy][i+29] = TOKEN_100G; 345 map[yy][i+34] = TOKEN_100G; 346 map[yy][i+39] = TOKEN_100G; 347 map[yy][i+44] = TOKEN_100G; 348 map[yy][i+48] = TOKEN_100G; 349 map[yy][i+53] = TOKEN_100G; 350 map[yy][i+58] = TOKEN_100G; 351 map[yy][i+63] = TOKEN_100G; 352 map[yy][i+68] = TOKEN_100G; 353 map[yy][i+72] = TOKEN_100G; 354 map[yy][i+77] = TOKEN_100G; 355 map[yy][i+82] = TOKEN_100G; 356 map[yy][i+87] = TOKEN_100G; 357 map[yy][i+92] = TOKEN_100G; 358 n+=20; if (n==40) {break;} 359 } 360 break; 361 default: 362 result = 0; 363 break; 364 } 365 break; 366 case 672: 367 switch(port_speed){ 368 /* Ethernet */ 369 case 10: 370 for (i=0; i<len; i+=44) { 371 map[yy][i] = TOKEN_10G; 372 n+=1; if (n==4) {break;} 373 } 374 break; 375 case 20: 376 for (i=0; i<len; i+=21) { 377 map[yy][i] = TOKEN_20G; 378 n+=1; if (n==8) {break;} 379 } 380 break; 381 case 25: 382 for (i=0; i<len && (i+71)<len; i+=88) { 383 map[yy][i] = TOKEN_25G; 384 map[yy][i+18] = TOKEN_25G; 385 map[yy][i+36] = TOKEN_25G; 386 map[yy][i+53] = TOKEN_25G; 387 map[yy][i+71] = TOKEN_25G; 388 n+=5; if (n==10) {break;} 389 } 390 break; 391 case 40: 392 for (i=0; i<len; i+=11) { 393 map[yy][i] = TOKEN_40G; 394 n+=1; if (n==16) {break;} 395 } 396 break; 397 case 41: 398 for (i=0; i<len && (i+13)<len; i+=22) { 399 map[yy][i] = TOKEN_40G; 400 map[yy][i+13] = TOKEN_40G; 401 n+=2; if (n==16) {break;} 402 } 403 break; 404 case 50: 405 for (i=0; i<len && (i+36)<len; i+=44) { 406 map[yy][i] = TOKEN_50G; 407 map[yy][i+9] = TOKEN_50G; 408 map[yy][i+18] = TOKEN_50G; 409 map[yy][i+27] = TOKEN_50G; 410 map[yy][i+36] = TOKEN_50G; 411 n+=5; if (n==20) {break;} 412 } 413 break; 414 case 100: 415 for (i=0; i<len && (i+40)<len; i+=44) { 416 map[yy][i] = TOKEN_100G; 417 map[yy][i+4] = TOKEN_100G; 418 map[yy][i+9] = TOKEN_100G; 419 map[yy][i+13] = TOKEN_100G; 420 map[yy][i+18] = TOKEN_100G; 421 map[yy][i+22] = TOKEN_100G; 422 map[yy][i+27] = TOKEN_100G; 423 map[yy][i+31] = TOKEN_100G; 424 map[yy][i+36] = TOKEN_100G; 425 map[yy][i+40] = TOKEN_100G; 426 n+=10; if (n==40) {break;} 427 } 428 break; 429 /* HiGig */ 430 case 11: 431 for (i=0; i<len && (i+42)<len; i+=85) { 432 map[yy][i] = TOKEN_10G; 433 map[yy][i+42] = TOKEN_10G; 434 n+=2; if (n==4) {break;} 435 } 436 break; 437 case 21: 438 for (i=0; i<len && (i+63)<len; i+=85) { 439 map[yy][i] = TOKEN_20G; 440 map[yy][i+21] = TOKEN_20G; 441 map[yy][i+42] = TOKEN_20G; 442 map[yy][i+63] = TOKEN_20G; 443 n+=4; if (n==8) {break;} 444 } 445 break; 446 case 27: 447 for (i=0; i<len; i+=17) { 448 map[yy][i] = TOKEN_25G; 449 n+=1; if (n==10) {break;} 450 } 451 break; 452 case 42: 453 for (i=0; i<len && (i+74)<len; i+=85) { 454 map[yy][i] = TOKEN_40G; 455 map[yy][i+10] = TOKEN_40G; 456 map[yy][i+21] = TOKEN_40G; 457 map[yy][i+31] = TOKEN_40G; 458 map[yy][i+42] = TOKEN_40G; 459 map[yy][i+52] = TOKEN_40G; 460 map[yy][i+63] = TOKEN_40G; 461 map[yy][i+74] = TOKEN_40G; 462 n+=8; if (n==16) {break;} 463 } 464 break; 465 case 43: 466 for (i=0; i<len && (i+72)<len; i+=85) { 467 map[yy][i] = TOKEN_40G; 468 map[yy][i+9] = TOKEN_40G; 469 map[yy][i+21] = TOKEN_40G; 470 map[yy][i+30] = TOKEN_40G; 471 map[yy][i+42] = TOKEN_40G; 472 map[yy][i+51] = TOKEN_40G; 473 map[yy][i+63] = TOKEN_40G; 474 map[yy][i+72] = TOKEN_40G; 475 n+=8; if (n==16) {break;} 476 } 477 break; 478 case 53: 479 for (i=0; i<len && (i+8)<len; i+=17) { 480 map[yy][i] = TOKEN_50G; 481 map[yy][i+8] = TOKEN_50G; 482 n+=2; if (n==20) {break;} 483 } 484 break; 485 case 106: 486 for (i=0; i<len && (i+12)<len; i+=17) { 487 map[yy][i] = TOKEN_100G; 488 map[yy][i+4] = TOKEN_100G; 489 map[yy][i+8] = TOKEN_100G; 490 map[yy][i+12] = TOKEN_100G; 491 n+=4; if (n==40) {break;} 492 } 493 break; 494 default: 495 result = 0; 496 break; 497 } 498 break; 499 case 585: 500 switch(port_speed){ 501 /* Ethernet */ 502 case 10: 503 for (i=0; i<len && (i+42)<len; i+=85) { 504 map[yy][i] = TOKEN_10G; 505 map[yy][i+42] = TOKEN_10G; 506 n+=2; if (n==4) {break;} 507 } 508 break; 509 case 20: 510 for (i=0; i<len && (i+63)<len; i+=85) { 511 map[yy][i] = TOKEN_20G; 512 map[yy][i+21] = TOKEN_20G; 513 map[yy][i+42] = TOKEN_20G; 514 map[yy][i+63] = TOKEN_20G; 515 n+=4; if (n==8) {break;} 516 } 517 break; 518 case 25: 519 for (i=0; i<len; i+=17) { 520 map[yy][i] = TOKEN_25G; 521 n+=1; if (n==10) {break;} 522 } 523 break; 524 case 40: 525 for (i=0; i<len && (i+73)<len; i+=85) { 526 map[yy][i] = TOKEN_40G; 527 map[yy][i+10] = TOKEN_40G; 528 map[yy][i+21] = TOKEN_40G; 529 map[yy][i+31] = TOKEN_40G; 530 map[yy][i+42] = TOKEN_40G; 531 map[yy][i+52] = TOKEN_40G; 532 map[yy][i+63] = TOKEN_40G; 533 map[yy][i+73] = TOKEN_40G; 534 n+=8; if (n==16) {break;} 535 } 536 break; 537 case 41: 538 for (i=0; i<len && (i+72)<len; i+=85) { 539 map[yy][i] = TOKEN_40G; 540 map[yy][i+9] = TOKEN_40G; 541 map[yy][i+21] = TOKEN_40G; 542 map[yy][i+30] = TOKEN_40G; 543 map[yy][i+42] = TOKEN_40G; 544 map[yy][i+51] = TOKEN_40G; 545 map[yy][i+63] = TOKEN_40G; 546 map[yy][i+72] = TOKEN_40G; 547 n+=8; if (n==16) {break;} 548 } 549 break; 550 case 50: 551 for (i=0; i<len && (i+8)<len; i+=17) { 552 map[yy][i] = TOKEN_50G; 553 map[yy][i+8] = TOKEN_50G; 554 n+=2; if (n==20) {break;} 555 } 556 break; 557 case 100: 558 for (i=0; i<len && (i+12)<len; i+=17) { 559 map[yy][i] = TOKEN_100G; 560 map[yy][i+4] = TOKEN_100G; 561 map[yy][i+8] = TOKEN_100G; 562 map[yy][i+12] = TOKEN_100G; 563 n+=4; if (n==40) {break;} 564 } 565 break; 566 /* HiGig */ 567 case 11: 568 for (i=0; i<len && (i+42)<len; i+=85) { 569 map[yy][i] = TOKEN_10G; 570 map[yy][i+42] = TOKEN_10G; 571 n+=2; if (n==4) {break;} 572 } 573 break; 574 case 21: 575 for (i=0; i<len && (i+63)<len; i+=85) { 576 map[yy][i] = TOKEN_20G; 577 map[yy][i+21] = TOKEN_20G; 578 map[yy][i+42] = TOKEN_20G; 579 map[yy][i+63] = TOKEN_20G; 580 n+=4; if (n==8) {break;} 581 } 582 break; 583 case 27: 584 for (i=0; i<len; i+=17) { 585 map[yy][i] = TOKEN_25G; 586 n+=1; if (n==10) {break;} 587 } 588 break; 589 case 42: 590 for (i=0; i<len && (i+74)<len; i+=85) { 591 map[yy][i] = TOKEN_40G; 592 map[yy][i+10] = TOKEN_40G; 593 map[yy][i+21] = TOKEN_40G; 594 map[yy][i+31] = TOKEN_40G; 595 map[yy][i+42] = TOKEN_40G; 596 map[yy][i+52] = TOKEN_40G; 597 map[yy][i+63] = TOKEN_40G; 598 map[yy][i+74] = TOKEN_40G; 599 n+=8; if (n==16) {break;} 600 } 601 break; 602 case 43: 603 for (i=0; i<len && (i+72)<len; i+=85) { 604 map[yy][i] = TOKEN_40G; 605 map[yy][i+9] = TOKEN_40G; 606 map[yy][i+21] = TOKEN_40G; 607 map[yy][i+30] = TOKEN_40G; 608 map[yy][i+42] = TOKEN_40G; 609 map[yy][i+51] = TOKEN_40G; 610 map[yy][i+63] = TOKEN_40G; 611 map[yy][i+72] = TOKEN_40G; 612 n+=8; if (n==16) {break;} 613 } 614 break; 615 case 53: 616 for (i=0; i<len && (i+8)<len; i+=17) { 617 map[yy][i] = TOKEN_50G; 618 map[yy][i+8] = TOKEN_50G; 619 n+=2; if (n==20) {break;} 620 } 621 break; 622 case 106: 623 for (i=0; i<len && (i+12)<len; i+=17) { 624 map[yy][i] = TOKEN_100G; 625 map[yy][i+4] = TOKEN_100G; 626 map[yy][i+8] = TOKEN_100G; 627 map[yy][i+12] = TOKEN_100G; 628 n+=4; if (n==40) {break;} 629 } 630 break; 631 default: 632 result = 0; 633 break; 634 } 635 break; 636 case 545: 637 switch(port_speed){ 638 /* Ethernet */ 639 case 10: 640 for (i=0; i<len; i+=36) { 641 map[yy][i] = TOKEN_10G; 642 n+=1; if (n==4) {break;} 643 } 644 break; 645 case 20: 646 for (i=0; i<len && (i+17)<len; i+=36) { 647 map[yy][i] = TOKEN_20G; 648 map[yy][i+17] = TOKEN_20G; 649 n+=2; if (n==8) {break;} 650 } 651 break; 652 case 40: 653 for (i=0; i<len && (i+25)<len; i+=36) { 654 map[yy][i] = TOKEN_40G; 655 map[yy][i+8] = TOKEN_40G; 656 map[yy][i+17] = TOKEN_40G; 657 map[yy][i+25] = TOKEN_40G; 658 n+=4; if (n==16) {break;} 659 } 660 break; 661 /* HiGig */ 662 case 11: 663 for (i=0; i<len && (i+34)<len; i+=69) { 664 map[yy][i] = TOKEN_10G; 665 map[yy][i+34] = TOKEN_10G; 666 n+=2; if (n==4) {break;} 667 } 668 break; 669 case 21: 670 for (i=0; i<len && (i+51)<len; i+=69) { 671 map[yy][i] = TOKEN_20G; 672 map[yy][i+17] = TOKEN_20G; 673 map[yy][i+34] = TOKEN_20G; 674 map[yy][i+51] = TOKEN_20G; 675 n+=4; if (n==8) {break;} 676 } 677 break; 678 case 42: 679 for (i=0; i<len && (i+60)<len; i+=69) { 680 map[yy][i] = TOKEN_40G; 681 map[yy][i+9] = TOKEN_40G; 682 map[yy][i+17] = TOKEN_40G; 683 map[yy][i+26] = TOKEN_40G; 684 map[yy][i+34] = TOKEN_40G; 685 map[yy][i+43] = TOKEN_40G; 686 map[yy][i+51] = TOKEN_40G; 687 map[yy][i+60] = TOKEN_40G; 688 n+=8; if (n==16) {break;} 689 } 690 break; 691 default: 692 result = 0; 693 break; 694 } 695 break; 696 default: 697 result = 0; 698 break; 699 } 700 return result; 701 } 702 #endif /* TDM_GH2_VECTOR_LIBRARY_H */