Merge "<JIRA ID: ODUHIGH-332 : Change in TBS calculation part as per TS 38.214 sectio...
authorSphoorthi Dayanand <sphoorthi.dayanand@radisys.com>
Tue, 18 May 2021 11:32:12 +0000 (11:32 +0000)
committerGerrit Code Review <gerrit@o-ran-sc.org>
Tue, 18 May 2021 11:32:12 +0000 (11:32 +0000)
1  2 
src/5gnrsch/sch_utils.c

diff --combined src/5gnrsch/sch_utils.c
@@@ -133,288 -133,6 +133,288 @@@ uint16_t numRbForPrachTable[MAX_RACH_NU
  {   139,  120,   120,  12,  2    }, /* index 15 */
  };
  
 +#ifdef NR_TDD
 +
 +/* prach config index Table 6.3.3.2-3 spec 38.211 
 + * PRACH format given as follows:
 + * 0 = 0
 + * 1 = 1
 + * 2 = 2
 + * 3 = 3
 + * 4 = A1
 + * 5 = A2
 + * 6 = A3
 + * 7 = B1
 + * 8 = B4
 + * 9 = C0
 + * 10 = C2
 + * 11 = A1/B1
 + * 12 = A2/B2
 + * 13 = A3/B3 
 + * Subframe num is represented considering 0-9 bits and
 + * value 1 corresponds to the subframe that is valid 
 + */
 +
 +uint16_t prachCfgIdxTable[MAX_PRACH_CONFIG_IDX][8] = {
 +{ 0, 16,  1,  512,  0,  0,  0,  0 }, /* index 0   */
 +{ 0,  8,  1,  512,  0,  0,  0,  0 }, /* index 1   */
 +{ 0,  4,  1,  512,  0,  0,  0,  0 }, /* index 2   */
 +{ 0,  2,  0,  512,  0,  0,  0,  0 }, /* index 3   */
 +{ 0,  2,  1,  512,  0,  0,  0,  0 }, /* index 4   */
 +{ 0,  2,  0,   16,  0,  0,  0,  0 }, /* index 5   */
 +{ 0,  2,  1,   16,  0,  0,  0,  0 }, /* index 6   */
 +{ 0,  1,  0,  512,  0,  0,  0,  0 }, /* index 7   */
 +{ 0,  1,  0,  256,  0,  0,  0,  0 }, /* index 8   */
 +{ 0,  1,  0,  128,  0,  0,  0,  0 }, /* index 9   */
 +{ 0,  1,  0,   64,  0,  0,  0,  0 }, /* index 10  */
 +{ 0,  1,  0,   32,  0,  0,  0,  0 }, /* index 11  */
 +{ 0,  1,  0,   16,  0,  0,  0,  0 }, /* index 12  */
 +{ 0,  1,  0,    8,  0,  0,  0,  0 }, /* index 13  */
 +{ 0,  1,  0,    4,  0,  0,  0,  0 }, /* index 14  */
 +{ 0,  1,  0,   66,  0,  0,  0,  0 }, /* index 15  */
 +{ 0,  1,  0,   66,  7,  0,  0,  0 }, /* index 16  */
 +{ 0,  1,  0,  528,  0,  0,  0,  0 }, /* index 17  */
 +{ 0,  1,  0,  264,  0,  0,  0,  0 }, /* index 18  */
 +{ 0,  1,  0,  132,  0,  0,  0,  0 }, /* index 19  */
 +{ 0,  1,  0,  768,  0,  0,  0,  0 }, /* index 20  */
 +{ 0,  1,  0,  784,  0,  0,  0,  0 }, /* index 21  */
 +{ 0,  1,  0,  536,  0,  0,  0,  0 }, /* index 22  */
 +{ 0,  1,  0,  896,  0,  0,  0,  0 }, /* index 23  */
 +{ 0,  1,  0,  792,  0,  0,  0,  0 }, /* index 24  */
 +{ 0,  1,  0,  960,  0,  0,  0,  0 }, /* index 25  */
 +{ 0,  1,  0,  594,  0,  0,  0,  0 }, /* index 26  */
 +{ 0,  1,  0,  682,  0,  0,  0,  0 }, /* index 27  */
 +{ 1, 16,  1,  128,  0,  0,  0,  0 }, /* index 28  */
 +{ 1,  8,  1,  128,  0,  0,  0,  0 }, /* index 29  */
 +{ 1,  4,  1,  128,  0,  0,  0,  0 }, /* index 30  */
 +{ 1,  2,  0,  128,  0,  0,  0,  0 }, /* index 31  */
 +{ 1,  2,  1,  128,  0,  0,  0,  0 }, /* index 32  */
 +{ 1,  1,  0,  128,  0,  0,  0,  0 }, /* index 33  */
 +{ 2, 16,  1,   64,  0,  0,  0,  0 }, /* index 34  */
 +{ 2,  8,  1,   64,  0,  0,  0,  0 }, /* index 35  */
 +{ 2,  4,  1,   64,  0,  0,  0,  0 }, /* index 36  */
 +{ 2,  2,  0,   64,  7,  0,  0,  0 }, /* index 37  */
 +{ 2,  2,  1,   64,  7,  0,  0,  0 }, /* index 38  */
 +{ 2,  1,  0,   64,  7,  0,  0,  0 }, /* index 39  */
 +{ 3, 16,  1,  512,  0,  0,  0,  0 }, /* index 40  */
 +{ 3,  8,  1,  512,  0,  0,  0,  0 }, /* index 41  */
 +{ 3,  4,  1,  512,  0,  0,  0,  0 }, /* index 42  */
 +{ 3,  2,  0,  512,  0,  0,  0,  0 }, /* index 43  */
 +{ 3,  2,  1,  512,  0,  0,  0,  0 }, /* index 44  */
 +{ 3,  2,  0,   16,  0,  0,  0,  0 }, /* index 45  */
 +{ 3,  2,  1,   16,  0,  0,  0,  0 }, /* index 46  */
 +{ 3,  1,  0,  512,  0,  0,  0,  0 }, /* index 47  */
 +{ 3,  1,  0,  256,  0,  0,  0,  0 }, /* index 48  */
 +{ 3,  1,  0,  128,  0,  0,  0,  0 }, /* index 49  */
 +{ 3,  1,  0,   64,  0,  0,  0,  0 }, /* index 50  */
 +{ 3,  1,  0,   32,  0,  0,  0,  0 }, /* index 51  */
 +{ 3,  1,  0,   16,  0,  0,  0,  0 }, /* index 52  */
 +{ 3,  1,  0,    8,  0,  0,  0,  0 }, /* index 53  */
 +{ 3,  1,  0,    4,  0,  0,  0,  0 }, /* index 54  */
 +{ 3,  1,  0,   66,  0,  0,  0,  0 }, /* index 55  */
 +{ 3,  1,  0,   66,  7,  0,  0,  0 }, /* index 56  */
 +{ 3,  1,  0,  528,  0,  0,  0,  0 }, /* index 57  */
 +{ 3,  1,  0,  264,  0,  0,  0,  0 }, /* index 58  */
 +{ 3,  1,  0,  132,  0,  0,  0,  0 }, /* index 59  */
 +{ 3,  1,  0,  768,  0,  0,  0,  0 }, /* index 60  */
 +{ 3,  1,  0,  784,  0,  0,  0,  0 }, /* index 61  */
 +{ 3,  1,  0,  536,  0,  0,  0,  0 }, /* index 62  */
 +{ 3,  1,  0,  896,  0,  0,  0,  0 }, /* index 63  */
 +{ 3,  1,  0,  792,  0,  0,  0,  0 }, /* index 64  */
 +{ 3,  1,  0,  594,  0,  0,  0,  0 }, /* index 65  */
 +{ 3,  1,  0,  682,  0,  0,  0,  0 }, /* index 66  */
 +{ 4, 16,  1,  512,  0,  2,  6,  2 }, /* index 67  */
 +{ 4,  8,  1,  512,  0,  2,  6,  2 }, /* index 68  */
 +{ 4,  4,  1,  512,  0,  1,  6,  2 }, /* index 69  */
 +{ 4,  2,  1,  512,  0,  1,  6,  2 }, /* index 70  */
 +{ 4,  2,  1,  528,  7,  1,  3,  2 }, /* index 71  */
 +{ 4,  2,  1,  640,  7,  1,  3,  2 }, /* index 72  */
 +{ 4,  2,  1,  640,  0,  1,  6,  2 }, /* index 73  */
 +{ 4,  2,  1,  768,  0,  2,  6,  2 }, /* index 74  */
 +{ 4,  2,  1,  528,  0,  2,  6,  2 }, /* index 75  */
 +{ 4,  2,  1,  924,  0,  1,  6,  2 }, /* index 76  */
 +{ 4,  1,  0,  512,  0,  2,  6,  2 }, /* index 77  */
 +{ 4,  1,  0,  512,  7,  1,  3,  2 }, /* index 78  */
 +{ 4,  1,  0,  512,  0,  1,  6,  2 }, /* index 79  */
 +{ 4,  1,  0,  768,  0,  2,  6,  2 }, /* index 80  */
 +{ 4,  1,  0,  528,  0,  1,  6,  2 }, /* index 81  */
 +{ 4,  1,  0,  640,  7,  1,  3,  2 }, /* index 82  */
 +{ 4,  1,  0,  792,  0,  1,  6,  2 }, /* index 83  */
 +{ 4,  1,  0,  792,  0,  2,  6,  2 }, /* index 84  */
 +{ 4,  1,  0,  682,  0,  1,  6,  2 }, /* index 85  */
 +{ 4,  1,  0, 1023,  7,  1,  3,  2 }, /* index 86  */
 +{ 5, 16,  1,  512,  0,  2,  3,  4 }, /* index 87  */
 +{ 5,  8,  1,  512,  0,  2,  3,  4 }, /* index 88  */
 +{ 5,  4,  1,  512,  0,  1,  3,  4 }, /* index 89  */
 +{ 5,  2,  1,  640,  0,  1,  3,  4 }, /* index 90  */
 +{ 5,  2,  1,  768,  0,  2,  3,  4 }, /* index 91  */
 +{ 5,  2,  1,  640,  9,  1,  1,  4 }, /* index 92  */
 +{ 5,  2,  1,  528,  9,  1,  1,  4 }, /* index 93  */
 +{ 5,  2,  1,  528,  0,  2,  3,  4 }, /* index 94  */
 +{ 5,  2,  1,  924,  0,  1,  3,  4 }, /* index 95  */
 +{ 5,  1,  0,    4,  0,  1,  3,  4 }, /* index 96  */
 +{ 5,  1,  0,  128,  0,  1,  3,  4 }, /* index 97  */
 +{ 5,  2,  1,  512,  0,  1,  3,  4 }, /* index 98  */
 +{ 5,  1,  0,  512,  0,  2,  3,  4 }, /* index 99  */
 +{ 5,  1,  0,  512,  9,  1,  1,  4 }, /* index 100  */
 +{ 5,  1,  0,  512,  0,  1,  3,  4 }, /* index 101  */
 +{ 5,  1,  0,  132,  0,  1,  3,  4 }, /* index 102  */
 +{ 5,  1,  0,  768,  0,  2,  3,  4 }, /* index 103  */
 +{ 5,  1,  0,  528,  0,  1,  3,  4 }, /* index 104  */
 +{ 5,  1,  0,  640,  9,  1,  1,  4 }, /* index 105  */
 +{ 5,  1,  0,  792,  0,  1,  3,  4 }, /* index 106  */
 +{ 5,  1,  0,  792,  0,  2,  3,  4 }, /* index 107  */
 +{ 5,  1,  0,  682,  0,  1,  3,  4 }, /* index 108  */
 +{ 5,  1,  0, 1023,  9,  1,  1,  4 }, /* index 109  */
 +{ 6, 16,  1,  512,  0,  2,  2,  6 }, /* index 110  */
 +{ 6,  8,  1,  512,  0,  2,  2,  6 }, /* index 111  */
 +{ 6,  4,  1,  512,  0,  1,  2,  6 }, /* index 112  */
 +{ 6,  2,  1,  528,  7,  1,  1,  6 }, /* index 113  */
 +{ 6,  2,  1,  640,  7,  1,  1,  6 }, /* index 114  */
 +{ 6,  2,  1,  640,  0,  1,  2,  6 }, /* index 115  */
 +{ 6,  2,  1,  528,  0,  2,  2,  6 }, /* index 116  */
 +{ 6,  2,  1,  768,  0,  2,  2,  6 }, /* index 117  */
 +{ 6,  2,  1,  924,  0,  1,  2,  6 }, /* index 118  */
 +{ 6,  1,  0,    4,  0,  1,  2,  6 }, /* index 119  */
 +{ 6,  1,  0,  128,  0,  1,  2,  6 }, /* index 120  */
 +{ 6,  2,  1,  512,  0,  1,  2,  6 }, /* index 121  */
 +{ 6,  1,  0,  512,  0,  2,  2,  6 }, /* index 122  */
 +{ 6,  1,  0,  512,  7,  1,  1,  6 }, /* index 123  */
 +{ 6,  1,  0,  512,  0,  1,  2,  6 }, /* index 124  */
 +{ 6,  1,  0,  132,  0,  1,  2,  6 }, /* index 125  */
 +{ 6,  1,  0,  768,  0,  2,  2,  6 }, /* index 126  */
 +{ 6,  1,  0,  528,  0,  1,  2,  6 }, /* index 127  */
 +{ 6,  1,  0,  640,  7,  1,  1,  6 }, /* index 128  */
 +{ 6,  1,  0,  792,  0,  1,  2,  6 }, /* index 129  */
 +{ 6,  1,  0,  792,  0,  2,  2,  6 }, /* index 130  */
 +{ 6,  1,  0,  682,  0,  1,  2,  6 }, /* index 131  */
 +{ 6,  1,  0, 1023,  7,  1,  1,  6 }, /* index 132  */
 +{ 7,  4,  1,  512,  2,  1,  6,  2 }, /* index 133  */
 +{ 7,  2,  1,  512,  2,  1,  6,  2 }, /* index 134  */
 +{ 7,  2,  1,  640,  2,  1,  6,  2 }, /* index 135  */
 +{ 7,  2,  1,  528,  8,  1,  3,  2 }, /* index 136  */
 +{ 7,  2,  1,  528,  2,  2,  6,  2 }, /* index 137  */
 +{ 7,  1,  0,  512,  2,  2,  6,  2 }, /* index 138  */
 +{ 7,  1,  0,  512,  8,  1,  3,  2 }, /* index 139  */
 +{ 7,  1,  0,  512,  2,  1,  6,  2 }, /* index 140  */
 +{ 7,  1,  0,  768,  2,  2,  6,  2 }, /* index 141  */
 +{ 7,  1,  0,  528,  2,  1,  6,  2 }, /* index 142  */
 +{ 7,  1,  0,  640,  8,  1,  3,  2 }, /* index 143  */
 +{ 7,  1,  0,  682,  2,  1,  6,  2 }, /* index 144  */
 +{ 8, 16,  1,  512,  0,  2,  1, 12 }, /* index 145  */
 +{ 8,  8,  1,  512,  0,  2,  1, 12 }, /* index 146  */
 +{ 8,  4,  1,  512,  2,  1,  1, 12 }, /* index 147  */
 +{ 8,  2,  1,  512,  0,  1,  1, 12 }, /* index 148  */
 +{ 8,  2,  1,  512,  2,  1,  1, 12 }, /* index 149  */
 +{ 8,  2,  1,  640,  2,  1,  1, 12 }, /* index 150  */
 +{ 8,  2,  1,  528,  2,  1,  1, 12 }, /* index 151  */
 +{ 8,  2,  1,  528,  0,  2,  1, 12 }, /* index 152  */
 +{ 8,  2,  1,  768,  0,  2,  1, 12 }, /* index 153  */
 +{ 8,  2,  1,  924,  0,  1,  1, 12 }, /* index 154  */
 +{ 8,  1,  0,    2,  0,  1,  1, 12 }, /* index 155  */
 +{ 8,  1,  0,    4,  0,  1,  1, 12 }, /* index 156  */
 +{ 8,  1,  0,   16,  0,  1,  1, 12 }, /* index 157  */
 +{ 8,  1,  0,  128,  0,  1,  1, 12 }, /* index 158  */
 +{ 8,  1,  0,  512,  0,  1,  1, 12 }, /* index 159  */
 +{ 8,  1,  0,  512,  2,  1,  1, 12 }, /* index 160  */
 +{ 8,  1,  0,  512,  0,  2,  1, 12 }, /* index 161  */
 +{ 8,  1,  0,  528,  2,  1,  1, 12 }, /* index 162  */
 +{ 8,  1,  0,  640,  2,  1,  1, 12 }, /* index 163  */
 +{ 8,  1,  0,  768,  0,  2,  1, 12 }, /* index 164  */
 +{ 8,  1,  0,  792,  2,  1,  1, 12 }, /* index 165  */
 +{ 8,  1,  0,  682,  2,  1,  1, 12 }, /* index 166  */
 +{ 8,  1,  0, 1023,  0,  2,  1, 12 }, /* index 167  */
 +{ 8,  1,  0, 1023,  2,  1,  1, 12 }, /* index 168  */
 +{ 9, 16,  1,  512,  2,  2,  6,  2 }, /* index 169  */
 +{ 9,  8,  1,  512,  2,  2,  6,  2 }, /* index 170  */
 +{ 9,  4,  1,  512,  2,  1,  6,  2 }, /* index 171  */
 +{ 9,  2,  1,  512,  2,  1,  6,  2 }, /* index 172  */
 +{ 9,  2,  1,  768,  2,  2,  6,  2 }, /* index 173  */
 +{ 9,  2,  1,  640,  2,  1,  6,  2 }, /* index 174  */
 +{ 9,  2,  1,  640,  8,  1,  3,  2 }, /* index 175  */
 +{ 9,  2,  1,  528,  8,  1,  3,  2 }, /* index 176  */
 +{ 9,  2,  1,  528,  2,  2,  6,  2 }, /* index 177  */
 +{ 9,  2,  1,  924,  2,  1,  6,  2 }, /* index 178  */
 +{ 9,  1,  0,  512,  2,  2,  6,  2 }, /* index 179  */
 +{ 9,  1,  0,  512,  8,  1,  3,  2 }, /* index 180  */
 +{ 9,  1,  0,  512,  2,  1,  6,  2 }, /* index 181  */
 +{ 9,  1,  0,  768,  2,  2,  6,  2 }, /* index 182  */
 +{ 9,  1,  0,  528,  2,  1,  6,  2 }, /* index 183  */
 +{ 9,  1,  0,  640,  8,  1,  3,  2 }, /* index 184  */
 +{ 9,  1,  0,  792,  2,  1,  6,  2 }, /* index 185  */
 +{ 9,  1,  0,  792,  2,  2,  6,  2 }, /* index 186  */
 +{ 9,  1,  0,  682,  2,  1,  6,  2 }, /* index 187  */
 +{ 9,  1,  0, 1023,  8,  1,  3,  2 }, /* index 188  */
 +{10, 16,  1,  512,  2,  2,  2,  6 }, /* index 189  */
 +{10,  8,  1,  512,  2,  2,  2,  6 }, /* index 190  */
 +{10,  4,  1,  512,  2,  1,  2,  6 }, /* index 191  */
 +{10,  2,  1,  512,  2,  1,  2,  6 }, /* index 192  */
 +{10,  2,  1,  768,  2,  2,  2,  6 }, /* index 193  */
 +{10,  2,  1,  640,  2,  1,  2,  6 }, /* index 194  */
 +{10,  2,  1,  640,  8,  1,  1,  6 }, /* index 195  */
 +{10,  2,  1,  528,  8,  1,  1,  6 }, /* index 196  */
 +{10,  2,  1,  528,  2,  2,  2,  6 }, /* index 197  */
 +{10,  2,  1,  924,  2,  1,  2,  6 }, /* index 198  */
 +{10,  8,  1,  512,  8,  2,  1,  6 }, /* index 199  */
 +{10,  4,  1,  512,  8,  1,  1,  6 }, /* index 200  */
 +{10,  1,  0,  512,  2,  2,  2,  6 }, /* index 201  */
 +{10,  1,  0,  512,  8,  1,  1,  6 }, /* index 202  */
 +{10,  1,  0,  512,  2,  1,  2,  6 }, /* index 203  */
 +{10,  1,  0,  768,  2,  2,  2,  6 }, /* index 204  */
 +{10,  1,  0,  528,  2,  1,  2,  6 }, /* index 205  */
 +{10,  1,  0,  640,  8,  1,  1,  6 }, /* index 206  */
 +{10,  1,  0,  792,  2,  1,  2,  6 }, /* index 207  */
 +{10,  1,  0,  792,  2,  2,  2,  6 }, /* index 208  */
 +{10,  1,  0,  682,  2,  1,  2,  6 }, /* index 209  */
 +{10,  1,  0, 1023,  8,  1,  1,  6 }, /* index 210  */
 +{11,  2,  1,  512,  2,  1,  6,  2 }, /* index 211  */
 +{11,  2,  1,  528,  8,  1,  3,  2 }, /* index 212  */
 +{11,  2,  1,  640,  8,  1,  3,  2 }, /* index 213  */
 +{11,  2,  1,  640,  2,  1,  6,  2 }, /* index 214  */
 +{11,  2,  1,  528,  2,  2,  6,  2 }, /* index 215  */
 +{11,  2,  1,  768,  2,  2,  6,  2 }, /* index 216  */
 +{11,  1,  0,  512,  2,  2,  6,  2 }, /* index 217  */
 +{11,  1,  0,  512,  8,  1,  3,  2 }, /* index 218  */
 +{11,  1,  0,  512,  2,  1,  6,  2 }, /* index 219  */
 +{11,  1,  0,  768,  2,  2,  6,  2 }, /* index 220  */
 +{11,  1,  0,  528,  2,  1,  6,  2 }, /* index 221  */
 +{11,  1,  0,  640,  8,  1,  3,  2 }, /* index 222  */
 +{11,  1,  0,  792,  2,  2,  6,  2 }, /* index 223  */
 +{11,  1,  0,  682,  2,  1,  6,  2 }, /* index 224  */
 +{11,  1,  0, 1023,  8,  1,  3,  2 }, /* index 225  */
 +{12,  2,  1,  512,  0,  1,  3,  4 }, /* index 226  */
 +{12,  2,  1,  528,  6,  1,  2,  4 }, /* index 227  */
 +{12,  2,  1,  640,  6,  1,  2,  4 }, /* index 228  */
 +{12,  2,  1,  528,  0,  2,  3,  4 }, /* index 229  */
 +{12,  2,  1,  768,  0,  2,  3,  4 }, /* index 230  */
 +{12,  1,  0,  512,  0,  2,  3,  4 }, /* index 231  */
 +{12,  1,  0,  512,  6,  1,  2,  4 }, /* index 232  */
 +{12,  1,  0,  512,  0,  1,  3,  4 }, /* index 233  */
 +{12,  1,  0,  768,  0,  2,  3,  4 }, /* index 234  */
 +{12,  1,  0,  528,  0,  1,  3,  4 }, /* index 235  */
 +{12,  1,  0,  640,  6,  1,  2,  4 }, /* index 236  */
 +{12,  1,  0,  792,  0,  1,  3,  4 }, /* index 237  */
 +{12,  1,  0,  792,  0,  2,  3,  4 }, /* index 238  */
 +{12,  1,  0,  682,  0,  1,  3,  4 }, /* index 239  */
 +{12,  1,  0, 1023,  6,  1,  2,  4 }, /* index 240  */
 +{13,  2,  1,  512,  0,  1,  2,  6 }, /* index 241  */
 +{13,  2,  1,  528,  2,  1,  2,  6 }, /* index 242  */
 +{13,  2,  1,  640,  0,  1,  2,  6 }, /* index 243  */
 +{13,  2,  1,  640,  2,  1,  2,  6 }, /* index 244  */
 +{13,  2,  1,  528,  0,  2,  2,  6 }, /* index 245  */
 +{13,  2,  1,  768,  0,  2,  2,  6 }, /* index 246  */
 +{13,  1,  0,  512,  0,  2,  2,  6 }, /* index 247  */
 +{13,  1,  0,  512,  2,  1,  2,  6 }, /* index 248  */
 +{13,  1,  0,  512,  0,  1,  2,  6 }, /* index 249  */
 +{13,  1,  0,  768,  0,  2,  2,  6 }, /* index 250  */
 +{13,  1,  0,  528,  0,  1,  2,  6 }, /* index 251  */
 +{13,  1,  0,  640,  2,  1,  2,  6 }, /* index 252  */
 +{13,  1,  0,  792,  0,  2,  2,  6 }, /* index 253  */
 +{13,  1,  0,  682,  0,  1,  2,  6 }, /* index 254  */
 +{13,  1,  0, 1023,  2,  1,  2,  6 }  /* index 255  */
 +};
 +
 +#else
  /* prach config index Table 6.3.3.2-2 spec 38.211 
   * PRACH format given as follows:
   * 0 = 0
@@@ -693,7 -411,6 +693,7 @@@ uint16_t prachCfgIdxTable[MAX_PRACH_CON
  {10,  1,  0, 1023,  0,  2,  2,  6 }, /* index 254  */
  {10,  1,  0,  682,  0,  2,  2,  6 }  /* index 255  */
  };
 +#endif
  
  /* Defintion of delta value Table 6.1.2.1.1-5 spec 38.214 */
  uint8_t puschDeltaTable[MAX_MU_PUSCH] = { 2, 3, 4, 6 };
@@@ -818,7 -535,6 +818,7 @@@ uint16_t schCalcNumPrb(uint16_t tbSize
     uint8_t  qm     = mcsTable[mcs][1];
     uint16_t rValue = mcsTable[mcs][2];
     uint8_t  numLayer = 1;       /* v value */
 +   uint8_t  numDmrsRePerPrb = 12;
  
     tbSize = tbSize * 8; //Calculate tbSize in bits
  
  
     nre = ceil( (float)tbSize * 1024 / (qm * rValue * numLayer));
  
 -   nreDash = ceil( (12 * numSymbols) - NUM_DMRS_SYMBOLS - 0);
 +   nreDash = ceil( (12 * numSymbols) - numDmrsRePerPrb - 0);
  
     if (nreDash > 156)
        nre = 156;
     numPrb = ceil((float)nre / nreDash);   
     return numPrb;
  }
  /**
  * @brief calculation of transport block size.
  *
  **/
  uint16_t schCalcTbSizeFromNPrb(uint16_t numPrb, uint16_t mcs, uint8_t numSymbols)
  {   
-    uint16_t tbSize = 0;
-    uint16_t tbsIndex = 0;
-    uint16_t nre = 0;
-    uint16_t nreDash = 0;
     uint8_t  qm     = mcsTable[mcs][1];
     uint16_t rValue = mcsTable[mcs][2];
-    uint8_t  numLayer = 1;       /* v value */
+    uint16_t tbsIndex = 0;
+    uint32_t tbSize = 0;
+    uint32_t nre = 0;
+    uint32_t nreDash = 0;
+    uint32_t nInfo = 0;
+    uint32_t n = 0;
+    uint32_t nInfoDash = 0;
+    uint32_t c = 0;
+    const uint8_t  numLayer = 1;
+    const uint16_t numRbSc = 12;
+    const uint16_t numDmrsRes = 12;
+    const uint16_t sf = 1;
+ //   uint16_t numPrbOvrHead = 0;
     
-    /* formula used for calculation of rbSize, 38.213 section 5.1.3.2 *
-    * Ninfo = Nre . R . Qm . v   where [ NInfo is tbSize]                *
+   /* formula used for calculation of rbSize, 38.214 section 5.1.3.2  *
+    * Ninfo = Nre . R . Qm . v   where [ NInfo is tbSize]             *
     * Nre' = Nsc . NsymPdsch - NdmrsSymb - Noh                        *
     * Nre = min(156,Nre') . nPrb                                      */
-    
-    nreDash = ceil( (12 * numSymbols) - NUM_DMRS_SYMBOLS - 0);
-   
-    if(nreDash > 156)
-       nreDash = 156;
  
+    nreDash = MIN(156, ceil( (numRbSc * numSymbols) - numDmrsRes - 0));
     nre = nreDash * numPrb;
-    tbSize = ceil(nre * qm * numLayer * rValue/1024.0);
-    tbSize = ceil(tbSize/8.0);
-    
-    while(tbSize > tbSizeTable[tbsIndex])
+    nInfo = ceil(nre * qm * numLayer * rValue/(1024.0 * sf));
+    if(nInfo <= 3824)
     {
-       tbsIndex++;
+       n = MAX(3, (uint32_t)cmLog2(nInfo) - 6);
+       nInfoDash = MAX(24, (1<<n)*(nInfo/(1<<n)));
+       while(nInfoDash > tbSizeTable[tbsIndex])
+       {
+          tbsIndex++;
+       }
+       tbSize = tbSizeTable[tbsIndex];
     }
-    tbSize = tbSizeTable[tbsIndex];
+    else
+    {
+       n = (uint32_t)cmLog2(nInfo - 24) - 5;
+       nInfoDash = MAX(3840, (1<<n)*ceil((nInfo - 24)/(1<<n)));
  
+       if(rValue<256)
+       {
+          c = ceil((nInfoDash + 24)/3816);
+          tbSize = 8 * c * ceil((nInfoDash + 24)/(8 * c)) - 24;
+       }
+       else
+       {
+          if(nInfoDash > 8424)
+          {
+             c = ceil((nInfoDash + 24)/8424);
+             tbSize = 8 * c * ceil((nInfoDash + 24)/(8 * c)) - 24;
+          }
+          else
+          {
+             tbSize = 8 * ceil((nInfoDash + 24)/(8)) - 24;
+          }
+       }
+    }
     return tbSize;
  }
  /**
   * @brief fetching ueCb from cellCb
@@@ -968,7 -714,7 +998,7 @@@ void schInitDlSlot(SchDlSlotInfo *schDl
  #ifdef NR_TDD
  
  /**
 - * @brief determines slot format
 + * @brief determines slot/symbol format
   *
   * @details
   *