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

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 */