Fujitsu No.39 Correct pdcch symbol calculation
This commit is contained in:
Regular → Executable
+14
-3
@@ -1979,6 +1979,9 @@ uint8_t get_num_pdcch_symbols(uint8_t num_dci,
|
|||||||
uint16_t numCCE = 0;
|
uint16_t numCCE = 0;
|
||||||
uint8_t i;
|
uint8_t i;
|
||||||
uint8_t nCCEmin = 0;
|
uint8_t nCCEmin = 0;
|
||||||
|
uint16_t CCE_max_used_index = 0;
|
||||||
|
uint16_t firstCCE_max = dci_alloc[0].firstCCE;
|
||||||
|
uint8_t L = dci_alloc[0].L;
|
||||||
|
|
||||||
// check pdcch duration imposed by PHICH duration (Section 6.9 of 36-211)
|
// check pdcch duration imposed by PHICH duration (Section 6.9 of 36-211)
|
||||||
if (frame_parms->Ncp==1) { // extended prefix
|
if (frame_parms->Ncp==1) { // extended prefix
|
||||||
@@ -1995,16 +1998,24 @@ uint8_t get_num_pdcch_symbols(uint8_t num_dci,
|
|||||||
for (i=0; i<num_dci; i++) {
|
for (i=0; i<num_dci; i++) {
|
||||||
// printf("dci %d => %d\n",i,dci_alloc[i].L);
|
// printf("dci %d => %d\n",i,dci_alloc[i].L);
|
||||||
numCCE += (1<<(dci_alloc[i].L));
|
numCCE += (1<<(dci_alloc[i].L));
|
||||||
|
|
||||||
|
if(firstCCE_max < dci_alloc[i].firstCCE) {
|
||||||
|
firstCCE_max = dci_alloc[i].firstCCE;
|
||||||
|
L = dci_alloc[i].L;
|
||||||
|
}
|
||||||
|
if(i == (num_dci - 1)) {
|
||||||
|
CCE_max_used_index = firstCCE_max + (1<<L) - 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//if ((9*numCCE) <= (frame_parms->N_RB_DL*2))
|
//if ((9*numCCE) <= (frame_parms->N_RB_DL*2))
|
||||||
if (numCCE <= get_nCCE(1, frame_parms, get_mi(frame_parms, subframe)))
|
if (CCE_max_used_index <= get_nCCE(1, frame_parms, get_mi(frame_parms, subframe)))
|
||||||
return(cmax(1,nCCEmin));
|
return(cmax(1,nCCEmin));
|
||||||
//else if ((9*numCCE) <= (frame_parms->N_RB_DL*((frame_parms->nb_antenna_ports_eNB==4) ? 4 : 5)))
|
//else if ((9*numCCE) <= (frame_parms->N_RB_DL*((frame_parms->nb_antenna_ports_eNB==4) ? 4 : 5)))
|
||||||
else if (numCCE <= get_nCCE(2, frame_parms, get_mi(frame_parms, subframe)))
|
else if (CCE_max_used_index <= get_nCCE(2, frame_parms, get_mi(frame_parms, subframe)))
|
||||||
return(cmax(2,nCCEmin));
|
return(cmax(2,nCCEmin));
|
||||||
//else if ((9*numCCE) <= (frame_parms->N_RB_DL*((frame_parms->nb_antenna_ports_eNB==4) ? 7 : 8)))
|
//else if ((9*numCCE) <= (frame_parms->N_RB_DL*((frame_parms->nb_antenna_ports_eNB==4) ? 7 : 8)))
|
||||||
else if (numCCE <= get_nCCE(3, frame_parms, get_mi(frame_parms, subframe)))
|
else if (CCE_max_used_index <= get_nCCE(3, frame_parms, get_mi(frame_parms, subframe)))
|
||||||
return(cmax(3,nCCEmin));
|
return(cmax(3,nCCEmin));
|
||||||
else if (frame_parms->N_RB_DL<=10) {
|
else if (frame_parms->N_RB_DL<=10) {
|
||||||
if (frame_parms->Ncp == 0) { // normal CP
|
if (frame_parms->Ncp == 0) { // normal CP
|
||||||
|
|||||||
Reference in New Issue
Block a user