Commit 71dbefe9 authored by Raymond Knopp's avatar Raymond Knopp

activated debugging traces for Msg2 MPDCCH/PDSCH

parent d1356278
...@@ -2193,14 +2193,14 @@ fill_mdci_and_dlsch (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, mDCI_ALLOC_t * ...@@ -2193,14 +2193,14 @@ fill_mdci_and_dlsch (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, mDCI_ALLOC_t *
((DCI6_1A_5MHz_t *) dci_pdu)->hopping = rel13->frequency_hopping_enabled_flag; ((DCI6_1A_5MHz_t *) dci_pdu)->hopping = rel13->frequency_hopping_enabled_flag;
((DCI6_1A_5MHz_t *) dci_pdu)->rballoc = rel13->resource_block_coding; ((DCI6_1A_5MHz_t *) dci_pdu)->rballoc = rel13->resource_block_coding;
((DCI6_1A_5MHz_t *) dci_pdu)->mcs = rel13->mcs; ((DCI6_1A_5MHz_t *) dci_pdu)->mcs = rel13->mcs;
((DCI6_1A_5MHz_t *) dci_pdu)->rep = (rel13->pdsch_reptition_levels - 1); ((DCI6_1A_5MHz_t *) dci_pdu)->rep = rel13->pdsch_reptition_levels;
((DCI6_1A_5MHz_t *) dci_pdu)->harq_pid = rel13->harq_process; ((DCI6_1A_5MHz_t *) dci_pdu)->harq_pid = rel13->harq_process;
((DCI6_1A_5MHz_t *) dci_pdu)->ndi = rel13->new_data_indicator; ((DCI6_1A_5MHz_t *) dci_pdu)->ndi = rel13->new_data_indicator;
((DCI6_1A_5MHz_t *) dci_pdu)->rv = rel13->redundancy_version; ((DCI6_1A_5MHz_t *) dci_pdu)->rv = rel13->redundancy_version;
((DCI6_1A_5MHz_t *) dci_pdu)->TPC = rel13->tpc; ((DCI6_1A_5MHz_t *) dci_pdu)->TPC = rel13->tpc;
((DCI6_1A_5MHz_t *) dci_pdu)->srs_req = rel13->srs_request; ((DCI6_1A_5MHz_t *) dci_pdu)->srs_req = rel13->srs_request;
((DCI6_1A_5MHz_t *) dci_pdu)->harq_ack_off = rel13->harq_resource_offset; ((DCI6_1A_5MHz_t *) dci_pdu)->harq_ack_off = rel13->harq_resource_offset;
((DCI6_1A_5MHz_t *) dci_pdu)->dci_rep = rel13->dci_subframe_repetition_number - 1; ((DCI6_1A_5MHz_t *) dci_pdu)->dci_rep = rel13->dci_subframe_repetition_number;
break; break;
case 50: case 50:
...@@ -2209,14 +2209,17 @@ fill_mdci_and_dlsch (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, mDCI_ALLOC_t * ...@@ -2209,14 +2209,17 @@ fill_mdci_and_dlsch (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, mDCI_ALLOC_t *
((DCI6_1A_10MHz_t *) dci_pdu)->hopping = rel13->frequency_hopping_enabled_flag; ((DCI6_1A_10MHz_t *) dci_pdu)->hopping = rel13->frequency_hopping_enabled_flag;
((DCI6_1A_10MHz_t *) dci_pdu)->rballoc = rel13->resource_block_coding; ((DCI6_1A_10MHz_t *) dci_pdu)->rballoc = rel13->resource_block_coding;
((DCI6_1A_10MHz_t *) dci_pdu)->mcs = rel13->mcs; ((DCI6_1A_10MHz_t *) dci_pdu)->mcs = rel13->mcs;
((DCI6_1A_10MHz_t *) dci_pdu)->rep = (rel13->pdsch_reptition_levels - 1); ((DCI6_1A_10MHz_t *) dci_pdu)->rep = (rel13->pdsch_reptition_levels);
((DCI6_1A_10MHz_t *) dci_pdu)->harq_pid = rel13->harq_process; ((DCI6_1A_10MHz_t *) dci_pdu)->harq_pid = rel13->harq_process;
((DCI6_1A_10MHz_t *) dci_pdu)->ndi = rel13->new_data_indicator; ((DCI6_1A_10MHz_t *) dci_pdu)->ndi = rel13->new_data_indicator;
((DCI6_1A_10MHz_t *) dci_pdu)->rv = rel13->redundancy_version; ((DCI6_1A_10MHz_t *) dci_pdu)->rv = rel13->redundancy_version;
((DCI6_1A_10MHz_t *) dci_pdu)->TPC = rel13->tpc; ((DCI6_1A_10MHz_t *) dci_pdu)->TPC = rel13->tpc;
((DCI6_1A_10MHz_t *) dci_pdu)->srs_req = rel13->srs_request; ((DCI6_1A_10MHz_t *) dci_pdu)->srs_req = rel13->srs_request;
((DCI6_1A_10MHz_t *) dci_pdu)->harq_ack_off = rel13->harq_resource_offset; ((DCI6_1A_10MHz_t *) dci_pdu)->harq_ack_off = rel13->harq_resource_offset;
((DCI6_1A_10MHz_t *) dci_pdu)->dci_rep = rel13->dci_subframe_repetition_number - 1; ((DCI6_1A_10MHz_t *) dci_pdu)->dci_rep = rel13->dci_subframe_repetition_number;
LOG_I(PHY,"Frame %d, Subframe %d : Programming Format 6-1A DCI, mcs %d, rballoc %x, dci_rep r%d, L %d, narrowband %d, start_symbol %d\n",
frame,subframe,rel13->mcs,rel13->resource_block_coding,1+rel13->dci_subframe_repetition_number,rel13->aggregation_level,rel13->mpdcch_narrow_band,dci_alloc->start_symbol);
break; break;
case 100: case 100:
dci_alloc->dci_length = sizeof_DCI6_1A_20MHz_t; dci_alloc->dci_length = sizeof_DCI6_1A_20MHz_t;
...@@ -2224,14 +2227,14 @@ fill_mdci_and_dlsch (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, mDCI_ALLOC_t * ...@@ -2224,14 +2227,14 @@ fill_mdci_and_dlsch (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, mDCI_ALLOC_t *
((DCI6_1A_20MHz_t *) dci_pdu)->hopping = rel13->frequency_hopping_enabled_flag; ((DCI6_1A_20MHz_t *) dci_pdu)->hopping = rel13->frequency_hopping_enabled_flag;
((DCI6_1A_20MHz_t *) dci_pdu)->rballoc = rel13->resource_block_coding; ((DCI6_1A_20MHz_t *) dci_pdu)->rballoc = rel13->resource_block_coding;
((DCI6_1A_20MHz_t *) dci_pdu)->mcs = rel13->mcs; ((DCI6_1A_20MHz_t *) dci_pdu)->mcs = rel13->mcs;
((DCI6_1A_20MHz_t *) dci_pdu)->rep = (rel13->pdsch_reptition_levels - 1); ((DCI6_1A_20MHz_t *) dci_pdu)->rep = rel13->pdsch_reptition_levels;
((DCI6_1A_20MHz_t *) dci_pdu)->harq_pid = rel13->harq_process; ((DCI6_1A_20MHz_t *) dci_pdu)->harq_pid = rel13->harq_process;
((DCI6_1A_20MHz_t *) dci_pdu)->ndi = rel13->new_data_indicator; ((DCI6_1A_20MHz_t *) dci_pdu)->ndi = rel13->new_data_indicator;
((DCI6_1A_20MHz_t *) dci_pdu)->rv = rel13->redundancy_version; ((DCI6_1A_20MHz_t *) dci_pdu)->rv = rel13->redundancy_version;
((DCI6_1A_20MHz_t *) dci_pdu)->TPC = rel13->tpc; ((DCI6_1A_20MHz_t *) dci_pdu)->TPC = rel13->tpc;
((DCI6_1A_20MHz_t *) dci_pdu)->srs_req = rel13->srs_request; ((DCI6_1A_20MHz_t *) dci_pdu)->srs_req = rel13->srs_request;
((DCI6_1A_20MHz_t *) dci_pdu)->harq_ack_off = rel13->harq_resource_offset; ((DCI6_1A_20MHz_t *) dci_pdu)->harq_ack_off = rel13->harq_resource_offset;
((DCI6_1A_20MHz_t *) dci_pdu)->dci_rep = rel13->dci_subframe_repetition_number - 1; ((DCI6_1A_20MHz_t *) dci_pdu)->dci_rep = rel13->dci_subframe_repetition_number;
break; break;
} }
break; break;
...@@ -2245,11 +2248,11 @@ fill_mdci_and_dlsch (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, mDCI_ALLOC_t * ...@@ -2245,11 +2248,11 @@ fill_mdci_and_dlsch (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, mDCI_ALLOC_t *
((DCI6_1B_5MHz_t *) dci_pdu)->type = 1; ((DCI6_1B_5MHz_t *) dci_pdu)->type = 1;
((DCI6_1B_5MHz_t *) dci_pdu)->rballoc = rel13->resource_block_coding; ((DCI6_1B_5MHz_t *) dci_pdu)->rballoc = rel13->resource_block_coding;
((DCI6_1B_5MHz_t *) dci_pdu)->mcs = rel13->mcs; ((DCI6_1B_5MHz_t *) dci_pdu)->mcs = rel13->mcs;
((DCI6_1B_5MHz_t *) dci_pdu)->rep = (rel13->pdsch_reptition_levels - 1); ((DCI6_1B_5MHz_t *) dci_pdu)->rep = rel13->pdsch_reptition_levels;
((DCI6_1B_5MHz_t *) dci_pdu)->harq_pid = rel13->harq_process; ((DCI6_1B_5MHz_t *) dci_pdu)->harq_pid = rel13->harq_process;
((DCI6_1B_5MHz_t *) dci_pdu)->ndi = rel13->new_data_indicator; ((DCI6_1B_5MHz_t *) dci_pdu)->ndi = rel13->new_data_indicator;
((DCI6_1B_5MHz_t *) dci_pdu)->harq_ack_off = rel13->harq_resource_offset; ((DCI6_1B_5MHz_t *) dci_pdu)->harq_ack_off = rel13->harq_resource_offset;
((DCI6_1B_5MHz_t *) dci_pdu)->dci_rep = rel13->dci_subframe_repetition_number - 1; ((DCI6_1B_5MHz_t *) dci_pdu)->dci_rep = rel13->dci_subframe_repetition_number;
break; break;
case 50: case 50:
...@@ -2257,22 +2260,22 @@ fill_mdci_and_dlsch (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, mDCI_ALLOC_t * ...@@ -2257,22 +2260,22 @@ fill_mdci_and_dlsch (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, mDCI_ALLOC_t *
((DCI6_1B_10MHz_t *) dci_pdu)->type = 1; ((DCI6_1B_10MHz_t *) dci_pdu)->type = 1;
((DCI6_1B_10MHz_t *) dci_pdu)->rballoc = rel13->resource_block_coding; ((DCI6_1B_10MHz_t *) dci_pdu)->rballoc = rel13->resource_block_coding;
((DCI6_1B_10MHz_t *) dci_pdu)->mcs = rel13->mcs; ((DCI6_1B_10MHz_t *) dci_pdu)->mcs = rel13->mcs;
((DCI6_1B_10MHz_t *) dci_pdu)->rep = (rel13->pdsch_reptition_levels - 1); ((DCI6_1B_10MHz_t *) dci_pdu)->rep = rel13->pdsch_reptition_levels;
((DCI6_1B_10MHz_t *) dci_pdu)->harq_pid = rel13->harq_process; ((DCI6_1B_10MHz_t *) dci_pdu)->harq_pid = rel13->harq_process;
((DCI6_1B_10MHz_t *) dci_pdu)->ndi = rel13->new_data_indicator; ((DCI6_1B_10MHz_t *) dci_pdu)->ndi = rel13->new_data_indicator;
((DCI6_1B_10MHz_t *) dci_pdu)->harq_ack_off = rel13->harq_resource_offset; ((DCI6_1B_10MHz_t *) dci_pdu)->harq_ack_off = rel13->harq_resource_offset;
((DCI6_1B_10MHz_t *) dci_pdu)->dci_rep = rel13->dci_subframe_repetition_number - 1; ((DCI6_1B_10MHz_t *) dci_pdu)->dci_rep = rel13->dci_subframe_repetition_number;
break; break;
case 100: case 100:
dci_alloc->dci_length = sizeof_DCI6_1B_20MHz_t; dci_alloc->dci_length = sizeof_DCI6_1B_20MHz_t;
((DCI6_1B_20MHz_t *) dci_pdu)->type = 1; ((DCI6_1B_20MHz_t *) dci_pdu)->type = 1;
((DCI6_1B_20MHz_t *) dci_pdu)->rballoc = rel13->resource_block_coding; ((DCI6_1B_20MHz_t *) dci_pdu)->rballoc = rel13->resource_block_coding;
((DCI6_1B_20MHz_t *) dci_pdu)->mcs = rel13->mcs; ((DCI6_1B_20MHz_t *) dci_pdu)->mcs = rel13->mcs;
((DCI6_1B_20MHz_t *) dci_pdu)->rep = (rel13->pdsch_reptition_levels - 1); ((DCI6_1B_20MHz_t *) dci_pdu)->rep = rel13->pdsch_reptition_levels;
((DCI6_1B_20MHz_t *) dci_pdu)->harq_pid = rel13->harq_process; ((DCI6_1B_20MHz_t *) dci_pdu)->harq_pid = rel13->harq_process;
((DCI6_1B_20MHz_t *) dci_pdu)->ndi = rel13->new_data_indicator; ((DCI6_1B_20MHz_t *) dci_pdu)->ndi = rel13->new_data_indicator;
((DCI6_1B_20MHz_t *) dci_pdu)->harq_ack_off = rel13->harq_resource_offset; ((DCI6_1B_20MHz_t *) dci_pdu)->harq_ack_off = rel13->harq_resource_offset;
((DCI6_1B_20MHz_t *) dci_pdu)->dci_rep = rel13->dci_subframe_repetition_number - 1; ((DCI6_1B_20MHz_t *) dci_pdu)->dci_rep = rel13->dci_subframe_repetition_number;
break; break;
} }
case 12: // Format 6-2 case 12: // Format 6-2
...@@ -2288,8 +2291,8 @@ fill_mdci_and_dlsch (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, mDCI_ALLOC_t * ...@@ -2288,8 +2291,8 @@ fill_mdci_and_dlsch (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, mDCI_ALLOC_t *
((DCI6_2_paging_5MHz_t *) dci_pdu)->type = 1; ((DCI6_2_paging_5MHz_t *) dci_pdu)->type = 1;
((DCI6_2_paging_5MHz_t *) dci_pdu)->rballoc = rel13->resource_block_coding; ((DCI6_2_paging_5MHz_t *) dci_pdu)->rballoc = rel13->resource_block_coding;
((DCI6_2_paging_5MHz_t *) dci_pdu)->mcs = rel13->mcs; ((DCI6_2_paging_5MHz_t *) dci_pdu)->mcs = rel13->mcs;
((DCI6_2_paging_5MHz_t *) dci_pdu)->rep = (rel13->pdsch_reptition_levels - 1); ((DCI6_2_paging_5MHz_t *) dci_pdu)->rep = rel13->pdsch_reptition_levels;
((DCI6_2_paging_5MHz_t *) dci_pdu)->dci_rep = rel13->dci_subframe_repetition_number - 1; ((DCI6_2_paging_5MHz_t *) dci_pdu)->dci_rep = rel13->dci_subframe_repetition_number;
} }
break; break;
...@@ -2302,8 +2305,8 @@ fill_mdci_and_dlsch (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, mDCI_ALLOC_t * ...@@ -2302,8 +2305,8 @@ fill_mdci_and_dlsch (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, mDCI_ALLOC_t *
((DCI6_2_paging_10MHz_t *) dci_pdu)->type = 1; ((DCI6_2_paging_10MHz_t *) dci_pdu)->type = 1;
((DCI6_2_paging_10MHz_t *) dci_pdu)->rballoc = rel13->resource_block_coding; ((DCI6_2_paging_10MHz_t *) dci_pdu)->rballoc = rel13->resource_block_coding;
((DCI6_2_paging_10MHz_t *) dci_pdu)->mcs = rel13->mcs; ((DCI6_2_paging_10MHz_t *) dci_pdu)->mcs = rel13->mcs;
((DCI6_2_paging_10MHz_t *) dci_pdu)->rep = (rel13->pdsch_reptition_levels - 1); ((DCI6_2_paging_10MHz_t *) dci_pdu)->rep = rel13->pdsch_reptition_levels;
((DCI6_2_paging_10MHz_t *) dci_pdu)->dci_rep = rel13->dci_subframe_repetition_number - 1; ((DCI6_2_paging_10MHz_t *) dci_pdu)->dci_rep = rel13->dci_subframe_repetition_number;
} }
break; break;
...@@ -2316,8 +2319,8 @@ fill_mdci_and_dlsch (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, mDCI_ALLOC_t * ...@@ -2316,8 +2319,8 @@ fill_mdci_and_dlsch (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, mDCI_ALLOC_t *
((DCI6_2_paging_20MHz_t *) dci_pdu)->type = 1; ((DCI6_2_paging_20MHz_t *) dci_pdu)->type = 1;
((DCI6_2_paging_20MHz_t *) dci_pdu)->rballoc = rel13->resource_block_coding; ((DCI6_2_paging_20MHz_t *) dci_pdu)->rballoc = rel13->resource_block_coding;
((DCI6_2_paging_20MHz_t *) dci_pdu)->mcs = rel13->mcs; ((DCI6_2_paging_20MHz_t *) dci_pdu)->mcs = rel13->mcs;
((DCI6_2_paging_20MHz_t *) dci_pdu)->rep = (rel13->pdsch_reptition_levels - 1); ((DCI6_2_paging_20MHz_t *) dci_pdu)->rep = rel13->pdsch_reptition_levels;
((DCI6_2_paging_20MHz_t *) dci_pdu)->dci_rep = rel13->dci_subframe_repetition_number - 1; ((DCI6_2_paging_20MHz_t *) dci_pdu)->dci_rep = rel13->dci_subframe_repetition_number;
} }
break; break;
...@@ -2330,6 +2333,7 @@ fill_mdci_and_dlsch (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, mDCI_ALLOC_t * ...@@ -2330,6 +2333,7 @@ fill_mdci_and_dlsch (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, mDCI_ALLOC_t *
// printf("DCI: Setting subframe_tx for subframe %d\n",subframe); // printf("DCI: Setting subframe_tx for subframe %d\n",subframe);
dlsch0->subframe_tx[(subframe + 2) % 10] = 1; dlsch0->subframe_tx[(subframe + 2) % 10] = 1;
LOG_I(PHY,"PDSCH : resource_block_coding %x",rel13->resource_block_coding);
conv_eMTC_rballoc (rel13->resource_block_coding, fp->N_RB_DL, dlsch0_harq->rb_alloc); conv_eMTC_rballoc (rel13->resource_block_coding, fp->N_RB_DL, dlsch0_harq->rb_alloc);
...@@ -2366,7 +2370,9 @@ fill_mdci_and_dlsch (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, mDCI_ALLOC_t * ...@@ -2366,7 +2370,9 @@ fill_mdci_and_dlsch (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, mDCI_ALLOC_t *
dlsch0_harq->frame = (subframe >= 8) ? ((frame + 1) & 1023) : frame; dlsch0_harq->frame = (subframe >= 8) ? ((frame + 1) & 1023) : frame;
dlsch0_harq->subframe = (subframe + 2) % 10; dlsch0_harq->subframe = (subframe + 2) % 10;
dlsch0_harq->pdsch_start = rel13->start_symbol;
LOG_I(PHY,"Setting DLSCH harq %d to active for %d.%d\n",rel13->harq_process,dlsch0_harq->frame,dlsch0_harq->subframe);
dlsch0->rnti = rel13->rnti; dlsch0->rnti = rel13->rnti;
......
...@@ -106,21 +106,32 @@ static uint16_t mpdcch5ss1p107108tab[864]; ...@@ -106,21 +106,32 @@ static uint16_t mpdcch5ss1p107108tab[864];
static uint16_t mpdcch5ss1p109110tab[864]; static uint16_t mpdcch5ss1p109110tab[864];
void init_mpdcch5ss1tab_normal_regular_subframe_evenNRBDL(PHY_VARS_eNB *eNB) { void init_mpdcch5ss1tab_normal_regular_subframe_evenNRBDL(PHY_VARS_eNB *eNB) {
int l,k,kmod,re; int l,k,kmod,re107108=0,re109110=0;
LOG_I(PHY,"Inititalizing mpdcchss15tab for normal prefix, normal prefix, no PSS/SSS/PBCH, even N_RB_DL\n"); LOG_I(PHY,"Inititalizing mpdcchss15tab for normal prefix, normal prefix, no PSS/SSS/PBCH, even N_RB_DL\n");
for (l=1,re=0;l<14;l++) {
for (l=1;l<14;l++) {
for (k=0;k<72;k++){ for (k=0;k<72;k++){
kmod = k % 12; kmod = k % 12;
if (((l!=5) && (l!=6) && (l!=12) && (l!=13)) || if (((l!=5) && (l!=6) && (l!=12) && (l!=13))||
(((l==5)||(l==6)||(l==12)||(l==13))&&(kmod!=0)&&(kmod!=5)&&(kmod!=10))) { (kmod==2) || (kmod==3) || (kmod==4) ||
mpdcch5ss1p109110tab[re]=(l*eNB->frame_parms.ofdm_symbol_size)+k; (kmod==7) || (kmod==8) || (kmod==9)) {
mpdcch5ss1p107108tab[re]=1+mpdcch5ss1p109110tab[re]; mpdcch5ss1p109110tab[re109110]=(l*eNB->frame_parms.ofdm_symbol_size)+k;
re++; mpdcch5ss1p107108tab[re107108]=mpdcch5ss1p109110tab[re109110];
re107108++;
re109110++;
printf("l %d, k %d (kmod %d) => re %d\n",l,k,kmod,re107108);
}
else if ((kmod==0)||(kmod==5)||(kmod==10)) {
mpdcch5ss1p109110tab[re109110++]=(l*eNB->frame_parms.ofdm_symbol_size)+k;
}
else if ((kmod==1)||(kmod==6)||(kmod==11)) {
mpdcch5ss1p107108tab[re107108++]=(l*eNB->frame_parms.ofdm_symbol_size)+k;
printf("l %d, k %d (kmod %d) => re %d\n",l,k,kmod,re107108);
} }
} }
} }
AssertFatal(re==864,"RE count not equal to 864\n"); AssertFatal(re107108==864,"RE count not equal to 864 (%d)\n",re107108);
} }
// this table is the allocation of modulated MPDCCH format 5 symbols to REs, antenna ports 107,108 // this table is the allocation of modulated MPDCCH format 5 symbols to REs, antenna ports 107,108
...@@ -131,21 +142,31 @@ void init_mpdcch5ss1tab_normal_regular_subframe_evenNRBDL(PHY_VARS_eNB *eNB) { ...@@ -131,21 +142,31 @@ void init_mpdcch5ss1tab_normal_regular_subframe_evenNRBDL(PHY_VARS_eNB *eNB) {
static uint16_t mpdcch5ss2p107108tab[792]; static uint16_t mpdcch5ss2p107108tab[792];
static uint16_t mpdcch5ss2p109110tab[792]; static uint16_t mpdcch5ss2p109110tab[792];
void init_mpdcch5ss2tab_normal_regular_subframe_evenNRBDL(PHY_VARS_eNB *eNB) { void init_mpdcch5ss2tab_normal_regular_subframe_evenNRBDL(PHY_VARS_eNB *eNB) {
int l,k,kmod,re; int l,k,kmod,re107108=0,re109110=0;
LOG_I(PHY,"Inititalizing mpdcch5ss2tab for normal prefix, normal prefix, no PSS/SSS/PBCH, even N_RB_DL\n"); LOG_I(PHY,"Inititalizing mpdcch5ss2tab for normal prefix, normal prefix, no PSS/SSS/PBCH, even N_RB_DL\n");
for (l=2,re=0;l<14;l++) { for (l=2;l<14;l++) {
for (k=0;k<72;k++){ for (k=0;k<72;k++){
kmod = k % 12; kmod = k % 12;
if (((l!=5) && (l!=6) && (l!=12) && (l!=13)) || if (((l!=5) && (l!=6) && (l!=12) && (l!=13))||
(((l==5)||(l==6)||(l==12)||(l==13))&&(kmod!=0)&&(kmod!=5)&&(kmod!=10))) { (kmod==2) || (kmod==3) || (kmod==4) ||
mpdcch5ss2p109110tab[re]=(l*eNB->frame_parms.ofdm_symbol_size)+k; (kmod==7) || (kmod==8) || (kmod==9)) {
mpdcch5ss2p107108tab[re]=1+mpdcch5ss2p109110tab[re]; mpdcch5ss2p109110tab[re109110]=(l*eNB->frame_parms.ofdm_symbol_size)+k;
re++; mpdcch5ss2p107108tab[re107108]=mpdcch5ss2p109110tab[re109110];
re107108++;
re109110++;
printf("l %d, k %d (kmod %d) => re %d\n",l,k,kmod,re107108);
}
else if ((kmod==0)||(kmod==5)||(kmod==10)) {
mpdcch5ss2p109110tab[re109110++]=(l*eNB->frame_parms.ofdm_symbol_size)+k;
}
else if ((kmod==1)||(kmod==6)||(kmod==11)) {
mpdcch5ss2p107108tab[re107108++]=(l*eNB->frame_parms.ofdm_symbol_size)+k;
printf("l %d, k %d (kmod %d) => re %d\n",l,k,kmod,re107108);
} }
} }
} }
AssertFatal(re==792,"RE count not equal to 792\n"); AssertFatal(re107108==792,"RE count not equal to 792\n");
} }
// this table is the allocation of modulated MPDCCH format 5 symbols to REs, antenna ports 107,108 // this table is the allocation of modulated MPDCCH format 5 symbols to REs, antenna ports 107,108
...@@ -156,21 +177,31 @@ void init_mpdcch5ss2tab_normal_regular_subframe_evenNRBDL(PHY_VARS_eNB *eNB) { ...@@ -156,21 +177,31 @@ void init_mpdcch5ss2tab_normal_regular_subframe_evenNRBDL(PHY_VARS_eNB *eNB) {
static uint16_t mpdcch5ss3p107108tab[720]; static uint16_t mpdcch5ss3p107108tab[720];
static uint16_t mpdcch5ss3p109110tab[720]; static uint16_t mpdcch5ss3p109110tab[720];
void init_mpdcch5ss3tab_normal_regular_subframe_evenNRBDL(PHY_VARS_eNB *eNB) { void init_mpdcch5ss3tab_normal_regular_subframe_evenNRBDL(PHY_VARS_eNB *eNB) {
int l,k,kmod,re; int l,k,kmod,re107108=0,re109110=0;
LOG_I(PHY,"Inititalizing mpdcch5ss3tab for normal prefix, normal prefix, no PSS/SSS/PBCH, even N_RB_DL\n"); LOG_I(PHY,"Inititalizing mpdcch5ss3tab for normal prefix, normal prefix, no PSS/SSS/PBCH, even N_RB_DL\n");
for (l=3,re=0;l<14;l++) { for (l=3;l<14;l++) {
for (k=0;k<72;k++){ for (k=0;k<72;k++){
kmod = k % 12; kmod = k % 12;
if (((l!=5) && (l!=6) && (l!=12) && (l!=13)) || if (((l!=5) && (l!=6) && (l!=12) && (l!=13))||
(((l==5)||(l==6)||(l==12)||(l==13))&&(kmod!=0)&&(kmod!=5)&&(kmod!=10))) { (kmod==2) || (kmod==3) || (kmod==4) ||
mpdcch5ss3p109110tab[re]=(l*eNB->frame_parms.ofdm_symbol_size)+k; (kmod==7) || (kmod==8) || (kmod==9)) {
mpdcch5ss3p107108tab[re]=1+mpdcch5ss3p109110tab[re]; mpdcch5ss3p109110tab[re109110]=(l*eNB->frame_parms.ofdm_symbol_size)+k;
re++; mpdcch5ss3p107108tab[re107108]=mpdcch5ss3p109110tab[re109110];
re107108++;
re109110++;
printf("l %d, k %d (kmod %d) => re %d\n",l,k,kmod,re107108);
}
else if ((kmod==0)||(kmod==5)||(kmod==10)) {
mpdcch5ss3p109110tab[re109110++]=(l*eNB->frame_parms.ofdm_symbol_size)+k;
}
else if ((kmod==1)||(kmod==6)||(kmod==11)) {
mpdcch5ss3p107108tab[re107108++]=(l*eNB->frame_parms.ofdm_symbol_size)+k;
printf("l %d, k %d (kmod %d) => re %d\n",l,k,kmod,re107108);
} }
} }
} }
AssertFatal(re==720,"RE count not equal to 792\n"); AssertFatal(re107108==720,"RE count not equal to 792\n");
} }
// this table is the allocation of modulated MPDCCH format 3 symbols to REs, antenna ports 107,108 // this table is the allocation of modulated MPDCCH format 3 symbols to REs, antenna ports 107,108
...@@ -211,7 +242,7 @@ void init_mpdcch2ss1tab_normal_regular_subframe_evenNRBDL(PHY_VARS_eNB *eNB) { ...@@ -211,7 +242,7 @@ void init_mpdcch2ss1tab_normal_regular_subframe_evenNRBDL(PHY_VARS_eNB *eNB) {
LOG_I(PHY,"Inititalizing mpdcch2ss1tab for normal prefix, normal prefix, no PSS/SSS/PBCH, even N_RB_DL\n"); LOG_I(PHY,"Inititalizing mpdcch2ss1tab for normal prefix, normal prefix, no PSS/SSS/PBCH, even N_RB_DL\n");
for (l=1,re=0;l<14;l++) { for (l=1,re=0;l<14;l++) {
for (k=0;k<48;k++){ for (k=0;k<24;k++){
kmod = k % 12; kmod = k % 12;
if (((l!=5) && (l!=6) && (l!=12) && (l!=13)) || if (((l!=5) && (l!=6) && (l!=12) && (l!=13)) ||
(((l==5)||(l==6)||(l==12)||(l==13))&&(kmod!=0)&&(kmod!=5)&&(kmod!=10))) { (((l==5)||(l==6)||(l==12)||(l==13))&&(kmod!=0)&&(kmod!=5)&&(kmod!=10))) {
...@@ -277,6 +308,8 @@ generate_mdci_top (PHY_VARS_eNB * eNB, int frame, int subframe, int16_t amp, int ...@@ -277,6 +308,8 @@ generate_mdci_top (PHY_VARS_eNB * eNB, int frame, int subframe, int16_t amp, int
// Assumption: only handle a single MPDCCH per narrowband // Assumption: only handle a single MPDCCH per narrowband
LOG_I(PHY,"generate_mdci_top: num_dci %d\n",mpdcch->num_dci);
for (i=0;i<mpdcch->num_dci;i++) { for (i=0;i<mpdcch->num_dci;i++) {
mdci = &mpdcch->mdci_alloc[i]; mdci = &mpdcch->mdci_alloc[i];
...@@ -286,13 +319,13 @@ generate_mdci_top (PHY_VARS_eNB * eNB, int frame, int subframe, int16_t amp, int ...@@ -286,13 +319,13 @@ generate_mdci_top (PHY_VARS_eNB * eNB, int frame, int subframe, int16_t amp, int
AssertFatal (fp->N_RB_DL == 50 || fp->N_RB_DL == 100, "Only N_RB_DL=50,100 for MPDCCH\n"); AssertFatal (fp->N_RB_DL == 50 || fp->N_RB_DL == 100, "Only N_RB_DL=50,100 for MPDCCH\n");
// Force MPDDCH format 5 // Force MPDDCH format 5
AssertFatal (mdci->number_of_prb_pairs == 6, "2 or 4 PRB pairs not support yet for MPDCCH\n"); AssertFatal (mdci->number_of_prb_pairs == 6, "2 or 4 PRB pairs not support yet for MPDCCH\n");
AssertFatal (mdci->reps > 0, "mdci->reps==0\n");
// These are to avoid unimplemented things // These are to avoid unimplemented things
AssertFatal (mdci->reps == 1, "number of repetitions (%d) must be one for now\n",mdci->reps); AssertFatal (mdci->ce_mode == 1, "CE mode (%d) B not activated yet\n",mdci->ce_mode);
AssertFatal (mdci->ce_mode != 1, "CE mode B not activataed yet\n"); AssertFatal (mdci->L == 24, "Only 2+4 and aggregation 24 for now\n");
AssertFatal (mdci->L != 24, "Only 2+4 and aggregation 24 for now\n");
LOG_I(PHY,"mdci %d: rnti %x, L %d, prb_pairs %d, ce_mode %d, i0 %d, ss %d \n",
i,mdci->rnti,mdci->L,mdci->number_of_prb_pairs,mdci->ce_mode,mdci->i0,mdci->start_symbol);
i0 = mdci->i0; i0 = mdci->i0;
// antenna index // antenna index
int a_index = mdci->rnti & 3; int a_index = mdci->rnti & 3;
...@@ -330,8 +363,8 @@ generate_mdci_top (PHY_VARS_eNB * eNB, int frame, int subframe, int16_t amp, int ...@@ -330,8 +363,8 @@ generate_mdci_top (PHY_VARS_eNB * eNB, int frame, int subframe, int16_t amp, int
generate_dci0(mdci->dci_pdu, generate_dci0(mdci->dci_pdu,
mpdcch->e+(bitsperCCE*mdci->firstCCE), mpdcch->e+(bitsperCCE*mdci->firstCCE),
mdci->dci_length, mdci->dci_length,
bitsperCCE,
mdci->L, mdci->L,
bitsperCCE,
mdci->rnti); mdci->rnti);
...@@ -340,7 +373,7 @@ generate_mdci_top (PHY_VARS_eNB * eNB, int frame, int subframe, int16_t amp, int ...@@ -340,7 +373,7 @@ generate_mdci_top (PHY_VARS_eNB * eNB, int frame, int subframe, int16_t amp, int
// scrambling // scrambling
uint16_t absSF = (frame * 10) + subframe; uint16_t absSF = (frame * 10) + subframe;
AssertFatal (absSF < 1024, "Absolute subframe %d = %d*10 + %d > 1023\n", absSF, frame, subframe); AssertFatal (absSF < 10240, "Absolute subframe %d = %d*10 + %d > 10239\n", absSF, frame, subframe);
mpdcch_scrambling(fp, mpdcch_scrambling(fp,
mdci, mdci,
...@@ -396,7 +429,8 @@ generate_mdci_top (PHY_VARS_eNB * eNB, int frame, int subframe, int16_t amp, int ...@@ -396,7 +429,8 @@ generate_mdci_top (PHY_VARS_eNB * eNB, int frame, int subframe, int16_t amp, int
((int16_t *) & yIQ)[1] = (*e_ptr == 1) ? -gain_lin_QPSK : gain_lin_QPSK; ((int16_t *) & yIQ)[1] = (*e_ptr == 1) ? -gain_lin_QPSK : gain_lin_QPSK;
e_ptr++; e_ptr++;
txF[mpdcchtab[i + ((bitsperCCE>>1) * mdci->firstCCE)]] = yIQ; txF[mpdcchtab[i + ((bitsperCCE>>1) * mdci->firstCCE)]] = yIQ;
LOG_I(PHY,"mpdcch pos %d: %d => (%d,%d)\n",i,mpdcchtab[i + ((bitsperCCE>>2) * mdci->firstCCE)],((int16_t *) & yIQ)[0],((int16_t *) & yIQ)[1]); //LOG_I(PHY,"Frame %d, subframe %d: mpdcch pos %d: %d => (%d,%d)\n",
// frame,subframe,i,mpdcchtab[i + ((bitsperCCE>>2) * mdci->firstCCE)],((int16_t *) & yIQ)[0],((int16_t *) & yIQ)[1]);
} }
if (a_index>1) off=0; if (a_index>1) off=0;
...@@ -438,7 +472,7 @@ generate_mdci_top (PHY_VARS_eNB * eNB, int frame, int subframe, int16_t amp, int ...@@ -438,7 +472,7 @@ generate_mdci_top (PHY_VARS_eNB * eNB, int frame, int subframe, int16_t amp, int
((int16_t *) & yIQ)[0] = (((s>>(i & 0x1f))&1) == 1) ? -gain_lin_QPSK : gain_lin_QPSK; ((int16_t *) & yIQ)[0] = (((s>>(i & 0x1f))&1) == 1) ? -gain_lin_QPSK : gain_lin_QPSK;
((int16_t *) & yIQ)[1] = (((s>>((i+1) & 0x1f))&1) == 1) ? -gain_lin_QPSK : gain_lin_QPSK; ((int16_t *) & yIQ)[1] = (((s>>((i+1) & 0x1f))&1) == 1) ? -gain_lin_QPSK : gain_lin_QPSK;
txF[off+mpdcch_dmrs_tab[(i>>1)]] = yIQ; txF[off+mpdcch_dmrs_tab[(i>>1)]] = yIQ;
LOG_I(PHY,"mpdcch_dmrs pos %d: %d => (%d,%d)\n",i,mpdcch_dmrs_tab[(i>>1)],((int16_t *) & yIQ)[0],((int16_t *) & yIQ)[1]); LOG_I(PHY,"mpdcch_dmrs pos %d: %d => (%d,%d)\n",i,off+mpdcch_dmrs_tab[(i>>1)],((int16_t *) & yIQ)[0],((int16_t *) & yIQ)[1]);
} }
} }
......
...@@ -238,13 +238,13 @@ void handle_nfapi_dlsch_pdu(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc, ...@@ -238,13 +238,13 @@ void handle_nfapi_dlsch_pdu(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
AssertFatal(sdu!=NULL,"NFAPI: frame %d, subframe %d: programming dlsch for round 0, rnti %x, UE_id %d, harq_pid %d : sdu is null for pdu_index %d\n", AssertFatal(sdu!=NULL,"NFAPI: frame %d, subframe %d: programming dlsch for round 0, rnti %x, UE_id %d, harq_pid %d : sdu is null for pdu_index %d\n",
proc->frame_tx,proc->subframe_tx,rel8->rnti,UE_id,harq_pid, proc->frame_tx,proc->subframe_tx,rel8->rnti,UE_id,harq_pid,
dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.pdu_index); dl_config_pdu->dlsch_pdu.dlsch_pdu_rel8.pdu_index);
if (rel8->rnti != 0xFFFF) LOG_D(PHY,"NFAPI: frame %d, subframe %d: programming dlsch for round 0, rnti %x, UE_id %d, harq_pid %d\n", if (rel8->rnti != 0xFFFF) LOG_I(PHY,"NFAPI: frame %d, subframe %d: programming dlsch for round 0, rnti %x, UE_id %d, harq_pid %d\n",
proc->frame_tx,proc->subframe_tx,rel8->rnti,UE_id,harq_pid); proc->frame_tx,proc->subframe_tx,rel8->rnti,UE_id,harq_pid);
if (codeword_index == 0) dlsch0_harq->pdu = sdu; if (codeword_index == 0) dlsch0_harq->pdu = sdu;
else dlsch1_harq->pdu = sdu; else dlsch1_harq->pdu = sdu;
} }
else { else {
if (rel8->rnti != 0xFFFF) LOG_D(PHY,"NFAPI: frame %d, subframe %d: programming dlsch for round %d, rnti %x, UE_id %d, harq_pid %d\n", if (rel8->rnti != 0xFFFF) LOG_I(PHY,"NFAPI: frame %d, subframe %d: programming dlsch for round %d, rnti %x, UE_id %d, harq_pid %d\n",
proc->frame_tx,proc->subframe_tx,dlsch0_harq->round, proc->frame_tx,proc->subframe_tx,dlsch0_harq->round,
rel8->rnti,UE_id,harq_pid); rel8->rnti,UE_id,harq_pid);
} }
...@@ -616,7 +616,7 @@ void schedule_response(Sched_Rsp_t *Sched_INFO) ...@@ -616,7 +616,7 @@ void schedule_response(Sched_Rsp_t *Sched_INFO)
eNB->phich_vars[subframe&1].num_hi = 0; eNB->phich_vars[subframe&1].num_hi = 0;
LOG_D(PHY,"NFAPI: Frame %d, Subframe %d (ul_subframe %d): received %d dl_pdu, %d tx_req, %d hi_dci0_config_req, %d UL_config \n", LOG_I(PHY,"NFAPI: Frame %d, Subframe %d (ul_subframe %d): received %d dl_pdu, %d tx_req, %d hi_dci0_config_req, %d UL_config \n",
frame,subframe,ul_subframe,number_dl_pdu,TX_req->tx_request_body.number_of_pdus,number_hi_dci0_pdu,number_ul_pdu); frame,subframe,ul_subframe,number_dl_pdu,TX_req->tx_request_body.number_of_pdus,number_hi_dci0_pdu,number_ul_pdu);
...@@ -636,7 +636,7 @@ void schedule_response(Sched_Rsp_t *Sched_INFO) ...@@ -636,7 +636,7 @@ void schedule_response(Sched_Rsp_t *Sched_INFO)
} }
for (i=0;i<number_dl_pdu;i++) { for (i=0;i<number_dl_pdu;i++) {
dl_config_pdu = &DL_req->dl_config_request_body.dl_config_pdu_list[i]; dl_config_pdu = &DL_req->dl_config_request_body.dl_config_pdu_list[i];
LOG_D(PHY,"NFAPI: dl_pdu %d : type %d\n",i,dl_config_pdu->pdu_type); LOG_I(PHY,"NFAPI: dl_pdu %d : type %d\n",i,dl_config_pdu->pdu_type);
switch (dl_config_pdu->pdu_type) { switch (dl_config_pdu->pdu_type) {
case NFAPI_DL_CONFIG_DCI_DL_PDU_TYPE: case NFAPI_DL_CONFIG_DCI_DL_PDU_TYPE:
handle_nfapi_dci_dl_pdu(eNB,proc,dl_config_pdu); handle_nfapi_dci_dl_pdu(eNB,proc,dl_config_pdu);
......
...@@ -299,6 +299,9 @@ phy_procedures_eNB_TX (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, relaying_type ...@@ -299,6 +299,9 @@ phy_procedures_eNB_TX (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, relaying_type
int8_t UE_id = 0; int8_t UE_id = 0;
uint8_t num_pdcch_symbols = 0; uint8_t num_pdcch_symbols = 0;
uint8_t num_dci = 0; uint8_t num_dci = 0;
#ifdef Rel14
uint8_t num_mdci = 0;
#endif
uint8_t ul_subframe; uint8_t ul_subframe;
uint32_t ul_frame; uint32_t ul_frame;
LTE_DL_FRAME_PARMS *fp = &eNB->frame_parms; LTE_DL_FRAME_PARMS *fp = &eNB->frame_parms;
...@@ -391,7 +394,14 @@ phy_procedures_eNB_TX (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, relaying_type ...@@ -391,7 +394,14 @@ phy_procedures_eNB_TX (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, relaying_type
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME (VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_PDCCH_TX, 0); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME (VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_PDCCH_TX, 0);
#ifdef Rel14
num_mdci = eNB->mpdcch_vars[subframe &1].num_dci;
if (num_mdci > 0) {
LOG_I (PHY, "[eNB %" PRIu8 "] Frame %d, subframe %d: Calling generate_mdci_top (mpdcch) (num_dci %" PRIu8 ")\n", eNB->Mod_id, frame, subframe, num_mdci);
generate_mdci_top (eNB, frame, subframe, AMP, eNB->common_vars.txdataF);
}
#endif
// Now scan UE specific DLSCH // Now scan UE specific DLSCH
LTE_eNB_DLSCH_t *dlsch0, *dlsch1; LTE_eNB_DLSCH_t *dlsch0, *dlsch1;
for (UE_id = 0; UE_id < NUMBER_OF_UE_MAX; UE_id++) { for (UE_id = 0; UE_id < NUMBER_OF_UE_MAX; UE_id++) {
...@@ -404,6 +414,13 @@ phy_procedures_eNB_TX (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, relaying_type ...@@ -404,6 +414,13 @@ phy_procedures_eNB_TX (PHY_VARS_eNB * eNB, eNB_rxtx_proc_t * proc, relaying_type
harq_pid = dlsch0->harq_ids[subframe]; harq_pid = dlsch0->harq_ids[subframe];
AssertFatal (harq_pid >= 0, "harq_pid is negative\n"); AssertFatal (harq_pid >= 0, "harq_pid is negative\n");
// generate pdsch // generate pdsch
LOG_I(PHY,"SFN %d.%d: DLSCH for rnti %x is active, harq_pid %d => SFN %d.%d\n",
frame,
subframe,
dlsch0->rnti,
harq_pid,
dlsch0->harq_processes[harq_pid]->frame,
dlsch0->harq_processes[harq_pid]->subframe);
if ((dlsch0->harq_processes[harq_pid]->status == ACTIVE) && (dlsch0->harq_processes[harq_pid]->frame == frame) && (dlsch0->harq_processes[harq_pid]->subframe == subframe)) if ((dlsch0->harq_processes[harq_pid]->status == ACTIVE) && (dlsch0->harq_processes[harq_pid]->frame == frame) && (dlsch0->harq_processes[harq_pid]->subframe == subframe))
pdsch_procedures (eNB, proc, harq_pid, dlsch0, dlsch1, &eNB->UE_stats[(uint32_t) UE_id], 0); pdsch_procedures (eNB, proc, harq_pid, dlsch0, dlsch1, &eNB->UE_stats[(uint32_t) UE_id], 0);
......
...@@ -252,7 +252,7 @@ generate_Msg2 (module_id_t module_idP, int CC_idP, frame_t frameP, sub_frame_t s ...@@ -252,7 +252,7 @@ generate_Msg2 (module_id_t module_idP, int CC_idP, frame_t frameP, sub_frame_t s
if ((RA_template->msg2_mpdcch_repetition_cnt == 0) && (mpdcch_sf_condition (eNB, CC_idP, frameP, subframeP, rmax, TYPE2, -1) > 0)) { if ((RA_template->msg2_mpdcch_repetition_cnt == 0) && (mpdcch_sf_condition (eNB, CC_idP, frameP, subframeP, rmax, TYPE2, -1) > 0)) {
// MPDCCH configuration for RAR // MPDCCH configuration for RAR
LOG_I (MAC, "[eNB %d][RAPROC] Frame %d, Subframe %d : In generate_Msg2, Programming MPDCCH %d repetitions\n", module_idP, frameP, subframeP, reps); LOG_I (MAC, "[eNB %d][RAPROC] Frame %d, Subframe %d : In generate_Msg2 for CE Level %d, Programming MPDCCH %d repetitions\n", module_idP, frameP, subframeP, RA_template->rach_resource_type-1,reps);
memset ((void *) dl_config_pdu, 0, sizeof (nfapi_dl_config_request_pdu_t)); memset ((void *) dl_config_pdu, 0, sizeof (nfapi_dl_config_request_pdu_t));
...@@ -266,14 +266,14 @@ generate_Msg2 (module_id_t module_idP, int CC_idP, frame_t frameP, sub_frame_t s ...@@ -266,14 +266,14 @@ generate_Msg2 (module_id_t module_idP, int CC_idP, frame_t frameP, sub_frame_t s
AssertFatal (cc[CC_idP].sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13 != NULL, "cc[CC_id].sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13 is null\n"); AssertFatal (cc[CC_idP].sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13 != NULL, "cc[CC_id].sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13 is null\n");
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.start_symbol = cc[CC_idP].sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13->startSymbolBR_r13; dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.start_symbol = cc[CC_idP].sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13->startSymbolBR_r13;
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.ecce_index = 0; // Note: this should be dynamic dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.ecce_index = 0; // Note: this should be dynamic
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.aggregation_level = 16; // OK for CEModeA r1-3 (9.1.5-1b) or CEModeB r1-4 dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.aggregation_level = 24; // OK for CEModeA r1-3 (9.1.5-1b) or CEModeB r1-4
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.rnti_type = 2; // RA-RNTI dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.rnti_type = 2; // RA-RNTI
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.rnti = RA_template->RA_rnti; dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.rnti = RA_template->RA_rnti;
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.ce_mode = (RA_template->rach_resource_type < 3) ? 1 : 2; dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.ce_mode = (RA_template->rach_resource_type < 3) ? 1 : 2;
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.drms_scrambling_init = cc[CC_idP].physCellId; dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.drms_scrambling_init = cc[CC_idP].physCellId;
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.initial_transmission_sf_io = (frameP * 10) + subframeP; dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.initial_transmission_sf_io = (frameP * 10) + subframeP;
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.transmission_power = 6000; // 0dB dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.transmission_power = 6000; // 0dB
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.resource_block_coding = getRIV (6, 0, 6); // Note: still to be checked if it should not be (getRIV(N_RB_DL,first_rb,6)) : Check nFAPI specifications and what is done L1 with this parameter dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.resource_block_coding = getRIV (6, 0, 6) | (RA_template->msg2_narrowband<<5);
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.mcs = 4; // adjust according to size of RAR, 208 bits with N1A_PRB=3 dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.mcs = 4; // adjust according to size of RAR, 208 bits with N1A_PRB=3
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.pdsch_reptition_levels = 4; // fix to 4 for now dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.pdsch_reptition_levels = 4; // fix to 4 for now
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.redundancy_version = 0; dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.redundancy_version = 0;
...@@ -616,7 +616,7 @@ generate_Msg4 (module_id_t module_idP, int CC_idP, frame_t frameP, sub_frame_t s ...@@ -616,7 +616,7 @@ generate_Msg4 (module_id_t module_idP, int CC_idP, frame_t frameP, sub_frame_t s
AssertFatal (cc[CC_idP].sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13 != NULL, "cc[CC_idP].sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13 is null\n"); AssertFatal (cc[CC_idP].sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13 != NULL, "cc[CC_idP].sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13 is null\n");
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.start_symbol = cc[CC_idP].sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13->startSymbolBR_r13; dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.start_symbol = cc[CC_idP].sib1_v13ext->bandwidthReducedAccessRelatedInfo_r13->startSymbolBR_r13;
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.ecce_index = 0; // Note: this should be dynamic dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.ecce_index = 0; // Note: this should be dynamic
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.aggregation_level = 16; // OK for CEModeA r1-3 (9.1.5-1b) or CEModeB r1-4 dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.aggregation_level = 24; // OK for CEModeA r1-3 (9.1.5-1b) or CEModeB r1-4
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.rnti_type = 0; // t-C-RNTI dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.rnti_type = 0; // t-C-RNTI
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.rnti = RA_template->RA_rnti; dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.rnti = RA_template->RA_rnti;
dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.ce_mode = (RA_template->rach_resource_type < 3) ? 1 : 2; dl_config_pdu->mpdcch_pdu.mpdcch_pdu_rel13.ce_mode = (RA_template->rach_resource_type < 3) ? 1 : 2;
...@@ -1155,7 +1155,7 @@ initiate_ra_proc (module_id_t module_idP, int CC_id, frame_t frameP, sub_frame_t ...@@ -1155,7 +1155,7 @@ initiate_ra_proc (module_id_t module_idP, int CC_id, frame_t frameP, sub_frame_t
} }
LOG_I (MAC, "[eNB %d][RAPROC] CC_id %d Frame %d, Subframe %d Initiating RA procedure for preamble index %d\n", module_idP, CC_id, frameP, subframeP, preamble_index); LOG_I (MAC, "[eNB %d][RAPROC] CC_id %d Frame %d, Subframe %d Initiating RA procedure for preamble index %d\n", module_idP, CC_id, frameP, subframeP, preamble_index);
#ifdef Rel14 #ifdef Rel14
LOG_D (MAC, "[eNB %d][RAPROC] CC_id %d Frame %d, Subframe %d PRACH resource type %d\n", module_idP, CC_id, frameP, subframeP, rach_resource_type); LOG_I (MAC, "[eNB %d][RAPROC] CC_id %d Frame %d, Subframe %d PRACH resource type %d\n", module_idP, CC_id, frameP, subframeP, rach_resource_type);
#endif #endif
if (prach_ParametersListCE_r13 && prach_ParametersListCE_r13->list.count < rach_resource_type) { if (prach_ParametersListCE_r13 && prach_ParametersListCE_r13->list.count < rach_resource_type) {
......
...@@ -17,7 +17,7 @@ eNBs = ...@@ -17,7 +17,7 @@ eNBs =
mobile_country_code = "208"; mobile_country_code = "208";
mobile_network_code = "93"; mobile_network_code = "92";
tr_s_preference = "local_mac" tr_s_preference = "local_mac"
...@@ -186,13 +186,13 @@ eNBs = ...@@ -186,13 +186,13 @@ eNBs =
#PRACH Config #PRACH Config
prach_root = 89; prach_root = 89;
prach_config_index = 3; prach_config_index = 0;
prach_high_speed = "DISABLE"; prach_high_speed = "DISABLE";
prach_zero_correlation = 12; prach_zero_correlation = 1;
prach_freq_offset = 2; prach_freq_offset = 1;
#PDSCH Config Common #PDSCH Config Common
pdsch_referenceSignalPower = 12; # was -27 pdsch_referenceSignalPower = -27
pdsch_p_b = 0; pdsch_p_b = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment