increased size of maximum SI allocation (to mcs 9 with 3 PRBs) Fixes issues with SI message using eMTC information elementswq
This commit is contained in:
@@ -59,6 +59,7 @@ int lte_segmentation(unsigned char *input_buffer,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ((*C)>MAX_NUM_DLSCH_SEGMENTS) {
|
if ((*C)>MAX_NUM_DLSCH_SEGMENTS) {
|
||||||
|
printf("%d\n",*(int*)0);
|
||||||
LOG_E(PHY,"lte_segmentation.c: too many segments %d, B %d, L %d, Bprime %d\n",*C,B,L,Bprime);
|
LOG_E(PHY,"lte_segmentation.c: too many segments %d, B %d, L %d, Bprime %d\n",*C,B,L,Bprime);
|
||||||
return(-1);
|
return(-1);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -528,7 +528,7 @@ void fill_dci_and_dlsch(PHY_VARS_eNB *eNB,int frame,int subframe,L1_rxtx_proc_t
|
|||||||
|
|
||||||
dlsch0->harq_mask |= (1 << rel8->harq_process);
|
dlsch0->harq_mask |= (1 << rel8->harq_process);
|
||||||
|
|
||||||
if (rel8->rnti_type == 1) LOG_D(PHY,"DCI 1A: round %d, mcs %d, rballoc %x, rv %d, rnti %x, harq process %d\n",dlsch0_harq->round,rel8->mcs_1,rel8->resource_block_coding,rel8->redundancy_version_1,rel8->rnti,rel8->harq_process);
|
if (rel8->rnti_type == 1) LOG_D(PHY,"DCI 1A: round %d, mcs %d, TBS %d, rballoc %x, rv %d, rnti %x, harq process %d\n",dlsch0_harq->round,rel8->mcs_1,dlsch0_harq->TBS,rel8->resource_block_coding,rel8->redundancy_version_1,rel8->rnti,rel8->harq_process);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case NFAPI_DL_DCI_FORMAT_1:
|
case NFAPI_DL_DCI_FORMAT_1:
|
||||||
@@ -1750,6 +1750,7 @@ void fill_mdci_and_dlsch(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc,mDCI_ALLOC_t *dc
|
|||||||
if (dlsch0->rnti != rel13->rnti) { // if rnti of dlsch is not the same as in the config, this is a new entry
|
if (dlsch0->rnti != rel13->rnti) { // if rnti of dlsch is not the same as in the config, this is a new entry
|
||||||
dlsch0_harq->round = 0;
|
dlsch0_harq->round = 0;
|
||||||
dlsch0->harq_mask =0;
|
dlsch0->harq_mask =0;
|
||||||
|
printf("*********************** rnti %x => %x, pos %d\n",rel13->rnti,dlsch0->rnti,UE_id);
|
||||||
}
|
}
|
||||||
if ((dlsch0->harq_mask & (1 << rel13->harq_process)) > 0) {
|
if ((dlsch0->harq_mask & (1 << rel13->harq_process)) > 0) {
|
||||||
if ((rel13->new_data_indicator != dlsch0_harq->ndi)||(dci_alloc->ra_flag==1))
|
if ((rel13->new_data_indicator != dlsch0_harq->ndi)||(dci_alloc->ra_flag==1))
|
||||||
@@ -1768,7 +1769,8 @@ void fill_mdci_and_dlsch(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc,mDCI_ALLOC_t *dc
|
|||||||
dlsch0_harq->TBS = TBStable[get_I_TBS(dlsch0_harq->mcs)][1];
|
dlsch0_harq->TBS = TBStable[get_I_TBS(dlsch0_harq->mcs)][1];
|
||||||
else if (rel13->tpc == 1) //N1A_PRB=3, get TBS from table using mcs and nb_rb=3
|
else if (rel13->tpc == 1) //N1A_PRB=3, get TBS from table using mcs and nb_rb=3
|
||||||
dlsch0_harq->TBS = TBStable[get_I_TBS(dlsch0_harq->mcs)][2];
|
dlsch0_harq->TBS = TBStable[get_I_TBS(dlsch0_harq->mcs)][2];
|
||||||
LOG_D(PHY,"TBS = %d(%d)\n",dlsch0_harq->TBS,dlsch0_harq->mcs);
|
else AssertFatal(1==0,"Don't know how to set TBS (TPC %d)\n",rel13->tpc);
|
||||||
|
LOG_D(PHY,"fill_mdci_and_dlsch : TBS = %d(%d) %p, %x\n",dlsch0_harq->TBS,dlsch0_harq->mcs,dlsch0,rel13->rnti);
|
||||||
}
|
}
|
||||||
dlsch0->active = 1;
|
dlsch0->active = 1;
|
||||||
dlsch0->harq_mask |= (1 << rel13->harq_process);
|
dlsch0->harq_mask |= (1 << rel13->harq_process);
|
||||||
|
|||||||
@@ -571,6 +571,8 @@ int dlsch_encoding_all(PHY_VARS_eNB *eNB,
|
|||||||
unsigned int L,C,B;
|
unsigned int L,C,B;
|
||||||
B = dlsch->harq_processes[dlsch->harq_ids[frame%2][subframe]]->B;
|
B = dlsch->harq_processes[dlsch->harq_ids[frame%2][subframe]]->B;
|
||||||
|
|
||||||
|
LOG_D(PHY,"B %d, harq_pid %d\n",B,dlsch->harq_ids[frame%2][subframe]);
|
||||||
|
|
||||||
if(B<=6144) {
|
if(B<=6144) {
|
||||||
L=0;
|
L=0;
|
||||||
C=1;
|
C=1;
|
||||||
@@ -703,7 +705,7 @@ int dlsch_encoding(PHY_VARS_eNB *eNB,
|
|||||||
// if (dlsch->harq_processes[harq_pid]->Ndi == 1) { // this is a new packet
|
// if (dlsch->harq_processes[harq_pid]->Ndi == 1) { // this is a new packet
|
||||||
if (dlsch->harq_processes[harq_pid]->round == 0) { // this is a new packet
|
if (dlsch->harq_processes[harq_pid]->round == 0) { // this is a new packet
|
||||||
#ifdef DEBUG_DLSCH_CODING
|
#ifdef DEBUG_DLSCH_CODING
|
||||||
printf("encoding thinks this is a new packet for harq_pid %d (%p) \n",harq_pid,dlsch->harq_processes[harq_pid]->b);
|
printf("encoding thinks this is a new packet for harq_pid %d (%p), A %d \n",harq_pid,dlsch,A);
|
||||||
#endif
|
#endif
|
||||||
/*
|
/*
|
||||||
int i;
|
int i;
|
||||||
|
|||||||
@@ -270,7 +270,7 @@ void handle_nfapi_dlsch_pdu(PHY_VARS_eNB *eNB,int frame,int subframe,L1_rxtx_pro
|
|||||||
dlsch0_harq = dlsch0->harq_processes[0];
|
dlsch0_harq = dlsch0->harq_processes[0];
|
||||||
dlsch0_harq->pdu = sdu;
|
dlsch0_harq->pdu = sdu;
|
||||||
|
|
||||||
if (proc->frame_tx < 200) LOG_D(PHY,"NFAPI: frame %d, subframe %d (TX %d.%d): Programming SI-BR (%d) => %d\n",frame,subframe,proc->frame_tx,proc->subframe_tx,rel13->pdsch_payload_type,UE_id);
|
LOG_D(PHY,"NFAPI: frame %d, subframe %d (TX %d.%d): Programming SI-BR (%d) => %d\n",frame,subframe,proc->frame_tx,proc->subframe_tx,rel13->pdsch_payload_type,UE_id);
|
||||||
|
|
||||||
dlsch0->rnti = 0xFFFF;
|
dlsch0->rnti = 0xFFFF;
|
||||||
dlsch0->Kmimo = 1;
|
dlsch0->Kmimo = 1;
|
||||||
|
|||||||
@@ -242,11 +242,11 @@ void pdsch_procedures(PHY_VARS_eNB *eNB,
|
|||||||
LTE_DL_eNB_HARQ_t *dlsch_harq=dlsch->harq_processes[harq_pid];
|
LTE_DL_eNB_HARQ_t *dlsch_harq=dlsch->harq_processes[harq_pid];
|
||||||
LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms;
|
LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms;
|
||||||
|
|
||||||
if (dlsch->rnti == 0x02) {//frame < 200) {
|
if (dlsch->rnti != 0xffff) {//frame < 200) {
|
||||||
LOG_D(PHY,
|
LOG_D(PHY,
|
||||||
"[eNB %"PRIu8"][PDSCH %"PRIx16"/%"PRIu8"] Frame %d, subframe %d: Generating PDSCH/DLSCH with input size = %"PRIu16", pdsch_start %d, G %d, nb_rb %"PRIu16", rb0 %x, rb1 %x, TBS %"PRIu16", pmi_alloc %"PRIx64", rv %"PRIu8" (round %"PRIu8")\n",
|
"[eNB %"PRIu8"][PDSCH %"PRIx16"/%"PRIu8"] Frame %d, subframe %d: Generating PDSCH/DLSCH (type %d) with input size = %"PRIu16", pdsch_start %d, G %d, nb_rb %"PRIu16", rb0 %x, rb1 %x, TBS %"PRIu16", pmi_alloc %"PRIx64", rv %"PRIu8" (round %"PRIu8")\n",
|
||||||
eNB->Mod_id, dlsch->rnti,harq_pid,
|
eNB->Mod_id, dlsch->rnti,harq_pid,
|
||||||
frame, subframe, dlsch_harq->TBS/8, dlsch_harq->pdsch_start,
|
frame, subframe, dlsch->ue_type,dlsch_harq->TBS/8, dlsch_harq->pdsch_start,
|
||||||
get_G(fp,
|
get_G(fp,
|
||||||
dlsch_harq->nb_rb,
|
dlsch_harq->nb_rb,
|
||||||
dlsch_harq->rb_alloc,
|
dlsch_harq->rb_alloc,
|
||||||
|
|||||||
@@ -672,8 +672,10 @@ schedule_SI(module_id_t module_idP, frame_t frameP, sub_frame_t subframeP)
|
|||||||
mcs = 7;
|
mcs = 7;
|
||||||
} else if (bcch_sdu_length <= 49) {
|
} else if (bcch_sdu_length <= 49) {
|
||||||
mcs = 8;
|
mcs = 8;
|
||||||
}
|
} else if (bcch_sdu_length <= 59) {
|
||||||
|
mcs = 9;
|
||||||
|
}
|
||||||
|
else AssertFatal(1==0,"Cannot Assign mcs for bcch_sdu_length %d (max mcs 9)\n",bcch_sdu_length);
|
||||||
|
|
||||||
dl_config_pdu = &dl_req->dl_config_pdu_list[dl_req->number_pdu];
|
dl_config_pdu = &dl_req->dl_config_pdu_list[dl_req->number_pdu];
|
||||||
memset((void *) dl_config_pdu, 0,
|
memset((void *) dl_config_pdu, 0,
|
||||||
|
|||||||
Reference in New Issue
Block a user