tdm_th_vec.h (22794B)
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 BCM56960 9 */ 10 11 #ifndef TDM_TH_VECTOR_LIBRARY_H 12 #define TDM_TH_VECTOR_LIBRARY_H 13 /** 14 @name: tdm_th_vector_load 15 @param: 16 17 Generate vector at index in TDM vector map 18 */ 19 int 20 tdm_th_vec_load(unsigned short **map, int bw, int port_speed, int yy, int len, int num_ext_ports) 21 { 22 int i, j=0, n=0; 23 24 switch (bw) 25 { 26 case 850: /* TH */ 27 switch (port_speed) 28 { 29 case 10: 30 map[yy][0] = TOKEN_10G; 31 map[yy][53] = TOKEN_10G; 32 map[yy][107] = TOKEN_10G; 33 map[yy][160] = TOKEN_10G; 34 break; 35 case 11: 36 map[yy][0] = TOKEN_10G; 37 map[yy][51] = TOKEN_10G; 38 map[yy][102] = TOKEN_10G; 39 map[yy][153] = TOKEN_10G; 40 break; 41 case 20: 42 map[yy][0] = TOKEN_20G; 43 map[yy][26] = TOKEN_20G; 44 map[yy][53] = TOKEN_20G; 45 map[yy][80] = TOKEN_20G; 46 map[yy][107] = TOKEN_20G; 47 map[yy][133] = TOKEN_20G; 48 map[yy][160] = TOKEN_20G; 49 map[yy][187] = TOKEN_20G; 50 break; 51 case 21: 52 map[yy][0] = TOKEN_20G; 53 map[yy][25] = TOKEN_20G; 54 map[yy][51] = TOKEN_20G; 55 map[yy][76] = TOKEN_20G; 56 map[yy][102] = TOKEN_20G; 57 map[yy][127] = TOKEN_20G; 58 map[yy][153] = TOKEN_20G; 59 map[yy][179] = TOKEN_20G; 60 break; 61 case 25: 62 map[yy][0] = TOKEN_25G; 63 map[yy][20] = TOKEN_25G; 64 map[yy][42] = TOKEN_25G; 65 map[yy][64] = TOKEN_25G; 66 map[yy][86] = TOKEN_25G; 67 map[yy][107] = TOKEN_25G; 68 map[yy][127] = TOKEN_25G; 69 map[yy][149] = TOKEN_25G; 70 map[yy][171] = TOKEN_25G; 71 map[yy][193] = TOKEN_25G; 72 break; 73 case 27: 74 map[yy][0] = TOKEN_25G; 75 map[yy][20] = TOKEN_25G; 76 map[yy][41] = TOKEN_25G; 77 map[yy][61] = TOKEN_25G; 78 map[yy][82] = TOKEN_25G; 79 map[yy][102] = TOKEN_25G; 80 map[yy][122] = TOKEN_25G; 81 map[yy][143] = TOKEN_25G; 82 map[yy][164] = TOKEN_25G; 83 map[yy][185] = TOKEN_25G; 84 break; 85 case 40: 86 map[yy][0] = TOKEN_40G; 87 map[yy][13] = TOKEN_40G; 88 map[yy][26] = TOKEN_40G; 89 map[yy][39] = TOKEN_40G; 90 map[yy][53] = TOKEN_40G; 91 map[yy][66] = TOKEN_40G; 92 map[yy][80] = TOKEN_40G; 93 map[yy][93] = TOKEN_40G; 94 map[yy][107] = TOKEN_40G; 95 map[yy][120] = TOKEN_40G; 96 map[yy][133] = TOKEN_40G; 97 map[yy][146] = TOKEN_40G; 98 map[yy][160] = TOKEN_40G; 99 map[yy][173] = TOKEN_40G; 100 map[yy][187] = TOKEN_40G; 101 map[yy][200] = TOKEN_40G; 102 break; 103 case 42: 104 map[yy][0] = TOKEN_40G; 105 map[yy][12] = TOKEN_40G; 106 map[yy][25] = TOKEN_40G; 107 map[yy][38] = TOKEN_40G; 108 map[yy][51] = TOKEN_40G; 109 map[yy][63] = TOKEN_40G; 110 map[yy][76] = TOKEN_40G; 111 map[yy][89] = TOKEN_40G; 112 map[yy][102] = TOKEN_40G; 113 map[yy][114] = TOKEN_40G; 114 map[yy][127] = TOKEN_40G; 115 map[yy][140] = TOKEN_40G; 116 map[yy][153] = TOKEN_40G; 117 map[yy][166] = TOKEN_40G; 118 map[yy][179] = TOKEN_40G; 119 map[yy][192] = TOKEN_40G; 120 break; 121 case 43: 122 map[yy][4] = TOKEN_40G; 123 map[yy][11] = TOKEN_40G; 124 map[yy][18] = TOKEN_40G; 125 map[yy][25] = TOKEN_40G; 126 map[yy][40] = TOKEN_40G; 127 map[yy][55] = TOKEN_40G; 128 map[yy][70] = TOKEN_40G; 129 map[yy][85] = TOKEN_40G; 130 map[yy][100] = TOKEN_40G; 131 map[yy][115] = TOKEN_40G; 132 map[yy][130] = TOKEN_40G; 133 map[yy][145] = TOKEN_40G; 134 map[yy][160] = TOKEN_40G; 135 map[yy][175] = TOKEN_40G; 136 map[yy][190] = TOKEN_40G; 137 break; 138 case 44: 139 map[yy][5] = TOKEN_40G; 140 map[yy][12] = TOKEN_40G; 141 map[yy][19] = TOKEN_40G; 142 map[yy][30] = TOKEN_40G; 143 map[yy][45] = TOKEN_40G; 144 map[yy][60] = TOKEN_40G; 145 map[yy][75] = TOKEN_40G; 146 map[yy][90] = TOKEN_40G; 147 map[yy][105] = TOKEN_40G; 148 map[yy][120] = TOKEN_40G; 149 map[yy][135] = TOKEN_40G; 150 map[yy][150] = TOKEN_40G; 151 map[yy][165] = TOKEN_40G; 152 map[yy][180] = TOKEN_40G; 153 map[yy][195] = TOKEN_40G; 154 break; 155 case 45: 156 map[yy][6] = TOKEN_40G; 157 map[yy][13] = TOKEN_40G; 158 map[yy][20] = TOKEN_40G; 159 map[yy][35] = TOKEN_40G; 160 map[yy][50] = TOKEN_40G; 161 map[yy][65] = TOKEN_40G; 162 map[yy][80] = TOKEN_40G; 163 map[yy][95] = TOKEN_40G; 164 map[yy][110] = TOKEN_40G; 165 map[yy][125] = TOKEN_40G; 166 map[yy][140] = TOKEN_40G; 167 map[yy][155] = TOKEN_40G; 168 map[yy][170] = TOKEN_40G; 169 map[yy][185] = TOKEN_40G; 170 map[yy][200] = TOKEN_40G; 171 break; 172 case 50: 173 map[yy][0] = TOKEN_50G; 174 map[yy][10] = TOKEN_50G; 175 map[yy][20] = TOKEN_50G; 176 map[yy][32] = TOKEN_50G; 177 map[yy][42] = TOKEN_50G; 178 map[yy][53] = TOKEN_50G; 179 map[yy][64] = TOKEN_50G; 180 map[yy][74] = TOKEN_50G; 181 map[yy][86] = TOKEN_50G; 182 map[yy][96] = TOKEN_50G; 183 map[yy][107] = TOKEN_50G; 184 map[yy][117] = TOKEN_50G; 185 map[yy][127] = TOKEN_50G; 186 map[yy][139] = TOKEN_50G; 187 map[yy][149] = TOKEN_50G; 188 map[yy][160] = TOKEN_50G; 189 map[yy][171] = TOKEN_50G; 190 map[yy][181] = TOKEN_50G; 191 map[yy][193] = TOKEN_50G; 192 map[yy][203] = TOKEN_50G; 193 break; 194 case 53: 195 map[yy][0] = TOKEN_50G; 196 map[yy][10] = TOKEN_50G; 197 map[yy][20] = TOKEN_50G; 198 map[yy][31] = TOKEN_50G; 199 map[yy][41] = TOKEN_50G; 200 map[yy][51] = TOKEN_50G; 201 map[yy][61] = TOKEN_50G; 202 map[yy][71] = TOKEN_50G; 203 map[yy][82] = TOKEN_50G; 204 map[yy][92] = TOKEN_50G; 205 map[yy][102] = TOKEN_50G; 206 map[yy][112] = TOKEN_50G; 207 map[yy][122] = TOKEN_50G; 208 map[yy][133] = TOKEN_50G; 209 map[yy][143] = TOKEN_50G; 210 map[yy][153] = TOKEN_50G; 211 map[yy][164] = TOKEN_50G; 212 map[yy][174] = TOKEN_50G; 213 map[yy][185] = TOKEN_50G; 214 map[yy][195] = TOKEN_50G; 215 break; 216 case 100: 217 for (i=0; i<len; i+=VECTOR_QUANTA_F) { 218 map[yy][i] = TOKEN_100G; 219 n++; 220 if ( (j==4)||(j==5)||(j==9)||(j==10)||(j==14)||(j==15)||(j==19)||(j==24)||(j==25)||(j==29)||(j==30)||(j==34)||(j==35) ) { 221 i++; 222 } 223 j++; 224 if (n==((port_speed*10)/BW_QUANTA)) { 225 break; 226 } 227 } 228 break; 229 case 106: 230 for (i=0; i<len; i+=VECTOR_QUANTA_F) { 231 map[yy][i] = TOKEN_100G; 232 n++; 233 if ( (j==5)||(j==15)||(j==25)||(j==30)||(j==35) ) { 234 i++; 235 } 236 j++; 237 if (n==((100*10)/BW_QUANTA)) { 238 break; 239 } 240 } 241 break; 242 case 107: 243 for (i=0; i<len; i+=VECTOR_QUANTA_F) { 244 map[yy][i] = TOKEN_100G; 245 n++; 246 if ( (j==0)||(j==1)||(j==2) ) { 247 i+=2; 248 } 249 j++; 250 if (n==39) { 251 break; 252 } 253 } 254 break; 255 default: 256 return 0; 257 break; 258 } 259 break; 260 case 766: 261 case 765: /* TH */ 262 switch (port_speed) 263 { 264 case 10: 265 for (i=0; i<len; i+=(VECTOR_QUANTA_S*12)) { 266 map[yy][i] = TOKEN_10G; 267 n++; 268 if (n==((port_speed*10)/BW_QUANTA)) { 269 break; 270 } 271 } 272 break; 273 case 11: 274 for (i=0; i<len; i+=((VECTOR_QUANTA_F*9)+1)) { 275 map[yy][i] = TOKEN_10G; 276 n++; 277 if (n==((10*10)/BW_QUANTA)) { 278 break; 279 } 280 } 281 break; 282 case 20: 283 for (i=0; i<len; i+=(VECTOR_QUANTA_S*6)) { 284 map[yy][i] = TOKEN_20G; 285 n++; 286 if (n==((port_speed*10)/BW_QUANTA)) { 287 break; 288 } 289 } 290 break; 291 case 21: 292 for (i=0; i<len; i+=((VECTOR_QUANTA_F*4)+3)) { 293 map[yy][i] = TOKEN_20G; 294 n++; 295 if (n==((20*10)/BW_QUANTA)) { 296 break; 297 } 298 } 299 break; 300 case 25: 301 map[yy][0] = TOKEN_25G; 302 map[yy][20] = TOKEN_25G; 303 map[yy][39] = TOKEN_25G; 304 map[yy][58] = TOKEN_25G; 305 map[yy][77] = TOKEN_25G; 306 map[yy][96] = TOKEN_25G; 307 map[yy][116] = TOKEN_25G; 308 map[yy][135] = TOKEN_25G; 309 map[yy][154] = TOKEN_25G; 310 map[yy][173] = TOKEN_25G; 311 break; 312 case 27: 313 for (i=0; i<len; i+=((VECTOR_QUANTA_S*4)+2)) { 314 map[yy][i] = TOKEN_25G; 315 n++; 316 if ( (j==1)||(j==2)||(j==6)||(j==7) ) { 317 i++; 318 } 319 j++; 320 if (n==((25*10)/BW_QUANTA)) { 321 break; 322 } 323 } 324 break; 325 case 40: 326 for (i=0; i<len; i+=(VECTOR_QUANTA_S*3)) { 327 map[yy][i] = TOKEN_40G; 328 n++; 329 if (n==((port_speed*10)/BW_QUANTA)) { 330 break; 331 } 332 } 333 break; 334 case 42: 335 for (i=0; i<len; i+=((VECTOR_QUANTA_F*2)+1)) { 336 map[yy][i] = TOKEN_40G; 337 n++; 338 if ((j%2)==0) { 339 i++; j=0; 340 } 341 j++; 342 if (n==((port_speed*10)/BW_QUANTA)) { 343 break; 344 } 345 } 346 break; 347 case 50: 348 for (i=0; i<len; i+=(VECTOR_QUANTA_F*2)) { 349 map[yy][i] = TOKEN_50G; 350 n++; 351 if ( (j==2)||(j==4)||(j==7)||(j==9)||(j==12)||(j==14)||(j==17) ) { 352 i--; 353 } 354 j++; 355 if (n==((port_speed*10)/BW_QUANTA)) { 356 break; 357 } 358 } 359 break; 360 case 53: 361 map[yy][0] = TOKEN_50G; 362 map[yy][10] = TOKEN_50G; 363 map[yy][19] = TOKEN_50G; 364 map[yy][28] = TOKEN_50G; 365 map[yy][38] = TOKEN_50G; 366 map[yy][46] = TOKEN_50G; 367 map[yy][56] = TOKEN_50G; 368 map[yy][65] = TOKEN_50G; 369 map[yy][74] = TOKEN_50G; 370 map[yy][84] = TOKEN_50G; 371 map[yy][92] = TOKEN_50G; 372 map[yy][102] = TOKEN_50G; 373 map[yy][111] = TOKEN_50G; 374 map[yy][120] = TOKEN_50G; 375 map[yy][130] = TOKEN_50G; 376 map[yy][138] = TOKEN_50G; 377 map[yy][148] = TOKEN_50G; 378 map[yy][157] = TOKEN_50G; 379 map[yy][166] = TOKEN_50G; 380 map[yy][176] = TOKEN_50G; 381 break; 382 case 100: 383 for (i=0; i<len; i+=(VECTOR_QUANTA_F)) { 384 map[yy][i] = TOKEN_100G; 385 n++; 386 if ((((j+1)%5)==0)&&(j<40)) { 387 i--; 388 } 389 j++; 390 if (n==((port_speed*10)/BW_QUANTA)) { 391 break; 392 } 393 } 394 break; 395 case 106: 396 for (i=0; i<len; i+=VECTOR_QUANTA_S) { 397 map[yy][i] = TOKEN_100G; 398 n++; j++; 399 if (j==1||j==2||j==3) { 400 i++; 401 } 402 if (j==5) { 403 j=0; 404 } 405 if (n==((100*10)/BW_QUANTA)) { 406 break; 407 } 408 } 409 break; 410 default: 411 return 0; 412 break; 413 } 414 break; 415 case 672: /* TH */ 416 switch (port_speed) 417 { 418 case 100: 419 for (i=0; i<len; i+=VECTOR_QUANTA_S) { 420 map[yy][i] = TOKEN_100G; 421 n++; 422 if ( ((j+1)%5==0)&&(j<40)) { 423 i++; 424 } 425 j++; 426 if (n==((port_speed*10)/BW_QUANTA)) { 427 break; 428 } 429 } 430 break; 431 case 106: 432 for (i=0; i<len; i+=VECTOR_QUANTA_S) { 433 map[yy][i] = TOKEN_100G; 434 n++; 435 if (n==((100*10)/BW_QUANTA)) { 436 break; 437 } 438 } 439 break; 440 case 50: 441 map[yy][0] = TOKEN_50G; 442 map[yy][8] = TOKEN_50G; 443 map[yy][16] = TOKEN_50G; 444 map[yy][25] = TOKEN_50G; 445 map[yy][33] = TOKEN_50G; 446 map[yy][42] = TOKEN_50G; 447 map[yy][50] = TOKEN_50G; 448 map[yy][58] = TOKEN_50G; 449 map[yy][67] = TOKEN_50G; 450 map[yy][75] = TOKEN_50G; 451 map[yy][84] = TOKEN_50G; 452 map[yy][92] = TOKEN_50G; 453 map[yy][100] = TOKEN_50G; 454 map[yy][109] = TOKEN_50G; 455 map[yy][117] = TOKEN_50G; 456 map[yy][126] = TOKEN_50G; 457 map[yy][134] = TOKEN_50G; 458 map[yy][142] = TOKEN_50G; 459 map[yy][151] = TOKEN_50G; 460 map[yy][159] = TOKEN_50G; 461 break; 462 case 53: 463 for (i=0; i<len; i+=(VECTOR_QUANTA_S*2)) { 464 map[yy][i] = TOKEN_50G; 465 n++; 466 if (n==((50*10)/BW_QUANTA)) { 467 break; 468 } 469 } 470 break; 471 case 40: 472 map[yy][0] = TOKEN_40G; 473 map[yy][10] = TOKEN_40G; 474 map[yy][21] = TOKEN_40G; 475 map[yy][31] = TOKEN_40G; 476 map[yy][42] = TOKEN_40G; 477 map[yy][52] = TOKEN_40G; 478 map[yy][63] = TOKEN_40G; 479 map[yy][73] = TOKEN_40G; 480 map[yy][84] = TOKEN_40G; 481 map[yy][94] = TOKEN_40G; 482 map[yy][105] = TOKEN_40G; 483 map[yy][115] = TOKEN_40G; 484 map[yy][126] = TOKEN_40G; 485 map[yy][136] = TOKEN_40G; 486 map[yy][147] = TOKEN_40G; 487 map[yy][157] = TOKEN_40G; 488 break; 489 case 42: 490 for (i=0; i<len; i+=(VECTOR_QUANTA_F*2)) { 491 map[yy][i] = TOKEN_40G; 492 n++; 493 if (n==((40*10)/BW_QUANTA)) { 494 break; 495 } 496 } 497 break; 498 case 25: 499 map[yy][0] = TOKEN_25G; 500 map[yy][16] = TOKEN_25G; 501 map[yy][33] = TOKEN_25G; 502 map[yy][50] = TOKEN_25G; 503 map[yy][67] = TOKEN_25G; 504 map[yy][84] = TOKEN_25G; 505 map[yy][100] = TOKEN_25G; 506 map[yy][117] = TOKEN_25G; 507 map[yy][134] = TOKEN_25G; 508 map[yy][151] = TOKEN_25G; 509 break; 510 case 27: 511 for (i=0; i<len; i+=(VECTOR_QUANTA_S*4)) { 512 map[yy][i] = TOKEN_25G; 513 n++; 514 if (n==((25*10)/BW_QUANTA)) { 515 break; 516 } 517 } 518 break; 519 case 20: 520 map[yy][0] = TOKEN_20G; 521 map[yy][21] = TOKEN_20G; 522 map[yy][42] = TOKEN_20G; 523 map[yy][63] = TOKEN_20G; 524 map[yy][84] = TOKEN_20G; 525 map[yy][105] = TOKEN_20G; 526 map[yy][126] = TOKEN_20G; 527 map[yy][147] = TOKEN_20G; 528 break; 529 case 21: 530 for (i=0; i<len; i+=(VECTOR_QUANTA_F*4)) { 531 map[yy][i] = TOKEN_20G; 532 n++; 533 if (n==((20*10)/BW_QUANTA)) { 534 break; 535 } 536 } 537 break; 538 case 10: 539 map[yy][0] = TOKEN_10G; 540 map[yy][42] = TOKEN_10G; 541 map[yy][84] = TOKEN_10G; 542 map[yy][126] = TOKEN_10G; 543 break; 544 case 11: 545 for (i=0; i<len; i+=(VECTOR_QUANTA_S*10)) { 546 map[yy][i] = TOKEN_10G; 547 n++; 548 if (n==((10*10)/BW_QUANTA)) { 549 break; 550 } 551 } 552 break; 553 default: 554 return 0; 555 break; 556 } 557 break; 558 case 645: /* TH */ 559 switch (port_speed) 560 { 561 case 100: 562 for (i=0; i<len; i+=VECTOR_QUANTA_S) { 563 map[yy][i] = TOKEN_100G; 564 n++; 565 if (n==((port_speed*10)/BW_QUANTA)) { 566 break; 567 } 568 } 569 break; 570 case 50: 571 for (i=0; i<len; i+=(VECTOR_QUANTA_S*2)) { 572 map[yy][i] = TOKEN_50G; 573 n++; 574 if (n==((port_speed*10)/BW_QUANTA)) { 575 break; 576 } 577 } 578 break; 579 case 42: 580 map[yy][0] = TOKEN_40G; 581 map[yy][9] = TOKEN_40G; 582 map[yy][19] = TOKEN_40G; 583 map[yy][28] = TOKEN_40G; 584 map[yy][38] = TOKEN_40G; 585 map[yy][47] = TOKEN_40G; 586 map[yy][57] = TOKEN_40G; 587 map[yy][66] = TOKEN_40G; 588 map[yy][76] = TOKEN_40G; 589 map[yy][85] = TOKEN_40G; 590 map[yy][95] = TOKEN_40G; 591 map[yy][104] = TOKEN_40G; 592 map[yy][114] = TOKEN_40G; 593 map[yy][124] = TOKEN_40G; 594 map[yy][134] = TOKEN_40G; 595 map[yy][144] = TOKEN_40G; 596 break; 597 case 40: 598 for (i=0; i<len; i+=(VECTOR_QUANTA_F*2)) { 599 map[yy][i] = TOKEN_40G; 600 n++; 601 if (n==((port_speed*10)/BW_QUANTA)) { 602 break; 603 } 604 } 605 break; 606 case 25: 607 for (i=0; i<len; i+=(VECTOR_QUANTA_S*4)) { 608 map[yy][i] = TOKEN_25G; 609 n++; 610 if (n==((port_speed*10)/BW_QUANTA)) { 611 break; 612 } 613 } 614 break; 615 case 21: 616 map[yy][0] = TOKEN_20G; 617 map[yy][19] = TOKEN_20G; 618 map[yy][38] = TOKEN_20G; 619 map[yy][57] = TOKEN_20G; 620 map[yy][76] = TOKEN_20G; 621 map[yy][95] = TOKEN_20G; 622 map[yy][114] = TOKEN_20G; 623 map[yy][134] = TOKEN_20G; 624 break; 625 case 20: 626 for (i=0; i<len; i+=(VECTOR_QUANTA_F*4)) { 627 map[yy][i] = TOKEN_20G; 628 n++; 629 if (n==((port_speed*10)/BW_QUANTA)) { 630 break; 631 } 632 } 633 break; 634 case 11: 635 map[yy][0] = TOKEN_10G; 636 map[yy][38] = TOKEN_10G; 637 map[yy][76] = TOKEN_10G; 638 map[yy][114] = TOKEN_10G; 639 break; 640 case 10: 641 for (i=0; i<len; i+=(VECTOR_QUANTA_S*10)) { 642 map[yy][i] = TOKEN_10G; 643 n++; 644 if (n==((port_speed*10)/BW_QUANTA)) { 645 break; 646 } 647 } 648 break; 649 default: 650 return 0; 651 break; 652 } 653 break; 654 case 545: /* TH */ 655 switch (port_speed) 656 { 657 case 10: 658 for (i=0; i<len; i+=((VECTOR_QUANTA_F*6)+3)) { 659 map[yy][i] = TOKEN_10G; 660 n++; 661 if (n==((port_speed*10)/BW_QUANTA)) { 662 break; 663 } 664 } 665 break; 666 case 11: 667 for (i=0; i<len; i+=((VECTOR_QUANTA_F*6)+2)) { 668 map[yy][i] = TOKEN_10G; 669 n++; 670 if (n==((10*10)/BW_QUANTA)) { 671 break; 672 } 673 } 674 break; 675 case 20: 676 map[yy][0] = TOKEN_20G; 677 map[yy][16] = TOKEN_20G; 678 map[yy][33] = TOKEN_20G; 679 map[yy][49] = TOKEN_20G; 680 map[yy][66] = TOKEN_20G; 681 map[yy][82] = TOKEN_20G; 682 map[yy][99] = TOKEN_20G; 683 map[yy][116] = TOKEN_20G; 684 break; 685 case 21: 686 for (i=0; i<len; i+=((VECTOR_QUANTA_F*3)+1)) { 687 map[yy][i] = TOKEN_20G; 688 n++; 689 if (n==((port_speed*10)/BW_QUANTA)) { 690 break; 691 } 692 } 693 break; 694 case 40: 695 map[yy][0] = TOKEN_40G; 696 map[yy][8] = TOKEN_40G; 697 map[yy][16] = TOKEN_40G; 698 map[yy][24] = TOKEN_40G; 699 map[yy][33] = TOKEN_40G; 700 map[yy][41] = TOKEN_40G; 701 map[yy][49] = TOKEN_40G; 702 map[yy][57] = TOKEN_40G; 703 map[yy][66] = TOKEN_40G; 704 map[yy][74] = TOKEN_40G; 705 map[yy][82] = TOKEN_40G; 706 map[yy][90] = TOKEN_40G; 707 map[yy][99] = TOKEN_40G; 708 map[yy][108] = TOKEN_40G; 709 map[yy][116] = TOKEN_40G; 710 map[yy][125] = TOKEN_40G; 711 break; 712 case 42: 713 for (i=0; i<len; i+=((VECTOR_QUANTA_F)+3)) { 714 map[yy][i] = TOKEN_40G; 715 n++; 716 if (n==((port_speed*10)/BW_QUANTA)) { 717 break; 718 } 719 } 720 break; 721 default: 722 return 0; 723 break; 724 } 725 break; 726 /* ################################################################################################################## */ 727 case 760: /* TD2/+ */ 728 switch (port_speed) 729 { 730 case 1: 731 map[yy][0] = TOKEN_1G; 732 break; 733 case 10: 734 case 11: 735 map[yy][0] = TOKEN_10G; 736 map[yy][48] = TOKEN_10G; 737 map[yy][96] = TOKEN_10G; 738 map[yy][144] = TOKEN_10G; 739 break; 740 case 12: 741 map[yy][0] = TOKEN_12G; 742 map[yy][36] = TOKEN_12G; 743 map[yy][72] = TOKEN_12G; 744 map[yy][120] = TOKEN_12G; 745 map[yy][156] = TOKEN_12G; 746 break; 747 case 20: 748 case 21: 749 for (i=0; i<len; i+=(VECTOR_QUANTA_S*6)) { 750 map[yy][i] = TOKEN_20G; 751 } 752 break; 753 case 40: 754 case 41: 755 case 42: 756 case 43: 757 case 44: 758 case 45: 759 for (i=0; i<len; i+=(VECTOR_QUANTA_S*3)) { 760 map[yy][i] = TOKEN_40G; 761 } 762 break; 763 case 100: 764 case 106: 765 case 107: 766 for (i=0; i<len; i+=(VECTOR_QUANTA_S*6)) { 767 map[yy][i] = TOKEN_100G; 768 map[yy][i+5] = TOKEN_100G; 769 map[yy][i+10] = TOKEN_100G; 770 map[yy][i+15] = TOKEN_100G; 771 map[yy][i+19] = TOKEN_100G; 772 } 773 break; 774 case 108: 775 for (i=0; i<len; i+=(VECTOR_QUANTA_S)) { 776 map[yy][i] = TOKEN_100G; 777 } 778 break; 779 case 109: 780 for (i=0; i<len; i+=(VECTOR_QUANTA_S)) { 781 map[yy][i] = TOKEN_100G; 782 } 783 for (i=(VECTOR_QUANTA_S*5); i<len; i+=(VECTOR_QUANTA_S*6)) { 784 map[yy][i] = num_ext_ports; 785 } 786 break; 787 case 120: 788 for (i=0; i<len; i+=(VECTOR_QUANTA_S)) { 789 map[yy][i] = TOKEN_120G; 790 } 791 break; 792 default: 793 return 0; 794 break; 795 } 796 break; 797 case 609: /* TD2/+ */ 798 case 608: 799 switch (port_speed) 800 { 801 case 1: 802 map[yy][0] = TOKEN_1G; 803 break; 804 case 10: 805 case 11: 806 map[yy][0] = TOKEN_10G; 807 map[yy][36] = TOKEN_10G; 808 map[yy][72] = TOKEN_10G; 809 map[yy][108] = TOKEN_10G; 810 break; 811 case 12: 812 n=0; 813 for (i=0; i<len; i+=(len/5)) { 814 map[yy][i] = TOKEN_40G; 815 if ((++n)==5) { 816 break; 817 } 818 } 819 break; 820 case 20: 821 case 21: 822 map[yy][0] = TOKEN_20G; 823 map[yy][36] = TOKEN_20G; 824 map[yy][72] = TOKEN_20G; 825 map[yy][108] = TOKEN_20G; 826 map[yy][18] = TOKEN_20G; 827 map[yy][54] = TOKEN_20G; 828 map[yy][90] = TOKEN_20G; 829 map[yy][126] = TOKEN_20G; 830 break; 831 case 40: 832 case 41: 833 case 42: 834 case 43: 835 case 44: 836 case 45: 837 n=0; 838 for (i=0; i<len; i+=(len/16)) { 839 map[yy][i] = TOKEN_40G; 840 if ((++n)==16) { 841 break; 842 } 843 } 844 break; 845 case 100: 846 case 106: 847 case 107: 848 n=0; 849 for (i=0; i<len; i+=(len/40)) { 850 map[yy][i] = TOKEN_100G; 851 if ((++n)==40) { 852 break; 853 } 854 } 855 break; 856 case 120: 857 n=0; 858 for (i=0; i<len; i+=(len/48)) { 859 map[yy][i] = TOKEN_120G; 860 if ((++n)==48) { 861 break; 862 } 863 } 864 break; 865 default: 866 return 0; 867 break; 868 } 869 break; 870 case 518: /* TD2/+ */ 871 case 517: 872 switch (port_speed) 873 { 874 case 1: 875 map[yy][0] = TOKEN_1G; 876 break; 877 case 10: 878 case 11: 879 n=0; 880 for (i=0; i<len; i+=(len/4)) { 881 map[yy][i] = TOKEN_10G; 882 if ((++n)==4) { 883 break; 884 } 885 } 886 break; 887 case 12: 888 n=0; 889 for (i=0; i<len; i+=(len/5)) { 890 map[yy][i] = TOKEN_12G; 891 if ((++n)==5) { 892 break; 893 } 894 } 895 break; 896 case 20: 897 case 21: 898 n=0; 899 for (i=0; i<len; i+=(len/8)) { 900 map[yy][i] = TOKEN_20G; 901 if ((++n)==8) { 902 break; 903 } 904 } 905 break; 906 case 40: 907 case 41: 908 case 42: 909 case 43: 910 case 44: 911 case 45: 912 n=0; 913 for (i=0; i<len; i+=(len/16)) { 914 map[yy][i] = TOKEN_40G; 915 if ((++n)==16) { 916 break; 917 } 918 } 919 break; 920 default: 921 return 0; 922 break; 923 } 924 break; 925 case 415: /* TD2/+ */ 926 case 416: 927 switch (port_speed) 928 { 929 case 1: 930 map[yy][0] = TOKEN_1G; 931 break; 932 case 10: 933 case 11: 934 map[yy][0] = TOKEN_10G; 935 map[yy][24] = TOKEN_10G; 936 map[yy][48] = TOKEN_10G; 937 map[yy][72] = TOKEN_10G; 938 break; 939 case 12: 940 map[yy][0] = TOKEN_12G; 941 map[yy][19] = TOKEN_12G; 942 map[yy][39] = TOKEN_12G; 943 map[yy][58] = TOKEN_12G; 944 map[yy][78] = TOKEN_12G; 945 break; 946 case 20: 947 case 21: 948 map[yy][0] = TOKEN_20G; 949 map[yy][12] = TOKEN_20G; 950 map[yy][24] = TOKEN_20G; 951 map[yy][36] = TOKEN_20G; 952 map[yy][48] = TOKEN_20G; 953 map[yy][60] = TOKEN_20G; 954 map[yy][72] = TOKEN_20G; 955 map[yy][84] = TOKEN_20G; 956 break; 957 case 40: 958 case 41: 959 case 42: 960 case 43: 961 case 44: 962 case 45: 963 map[yy][0] = TOKEN_40G; 964 map[yy][6] = TOKEN_40G; 965 map[yy][12] = TOKEN_40G; 966 map[yy][18] = TOKEN_40G; 967 map[yy][24] = TOKEN_40G; 968 map[yy][30] = TOKEN_40G; 969 map[yy][36] = TOKEN_40G; 970 map[yy][42] = TOKEN_40G; 971 map[yy][48] = TOKEN_40G; 972 map[yy][54] = TOKEN_40G; 973 map[yy][60] = TOKEN_40G; 974 map[yy][66] = TOKEN_40G; 975 map[yy][72] = TOKEN_40G; 976 map[yy][78] = TOKEN_40G; 977 map[yy][84] = TOKEN_40G; 978 map[yy][90] = TOKEN_40G; 979 break; 980 default: 981 return 0; 982 break; 983 } 984 break; 985 default: 986 switch (port_speed) 987 { 988 default: 989 return 0; 990 break; 991 } 992 } 993 994 return 1; 995 996 } 997 #endif /* TDM_TH_VECTOR_LIBRARY_H */