Commit 90c53b11 authored by Louis Adrien Dufrene's avatar Louis Adrien Dufrene

Merge branch 'eMTC-testing' into eMTC-testing-orange

parents 27d01dce 669724c1
...@@ -86,7 +86,7 @@ int32_t lte_ul_channel_estimation(PHY_VARS_eNB *eNB, ...@@ -86,7 +86,7 @@ int32_t lte_ul_channel_estimation(PHY_VARS_eNB *eNB,
int32_t temp_in_ifft_0[2048*2] __attribute__((aligned(32))); int32_t temp_in_ifft_0[2048*2] __attribute__((aligned(32)));
#ifdef Rel14 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
if (eNB->ulsch[UE_id]->ue_type > 0) harq_pid = 0; if (eNB->ulsch[UE_id]->ue_type > 0) harq_pid = 0;
else else
#endif #endif
......
...@@ -300,7 +300,8 @@ void fill_dci_and_dlsch(PHY_VARS_eNB *eNB,int frame,int subframe,L1_rxtx_proc_t ...@@ -300,7 +300,8 @@ void fill_dci_and_dlsch(PHY_VARS_eNB *eNB,int frame,int subframe,L1_rxtx_proc_t
dlsch0 = eNB->dlsch[UE_id][0]; dlsch0 = eNB->dlsch[UE_id][0];
dlsch1 = eNB->dlsch[UE_id][1]; dlsch1 = eNB->dlsch[UE_id][1];
dlsch0->ue_type = 0;
dlsch1->ue_type = 0;
beamforming_mode = eNB->transmission_mode[(uint8_t)UE_id]<7?0:eNB->transmission_mode[(uint8_t)UE_id]; beamforming_mode = eNB->transmission_mode[(uint8_t)UE_id]<7?0:eNB->transmission_mode[(uint8_t)UE_id];
dlsch0_harq = dlsch0->harq_processes[rel8->harq_process]; dlsch0_harq = dlsch0->harq_processes[rel8->harq_process];
dlsch0_harq->codeword = 0; dlsch0_harq->codeword = 0;
...@@ -1559,7 +1560,6 @@ void fill_mdci_and_dlsch(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc,mDCI_ALLOC_t *dc ...@@ -1559,7 +1560,6 @@ void fill_mdci_and_dlsch(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc,mDCI_ALLOC_t *dc
case 10: // Format 6-1A case 10: // Format 6-1A
dci_alloc->format = format6_1A; dci_alloc->format = format6_1A;
dlsch0->active = 1;
switch (fp->N_RB_DL) { switch (fp->N_RB_DL) {
case 25: case 25:
...@@ -1630,7 +1630,6 @@ void fill_mdci_and_dlsch(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc,mDCI_ALLOC_t *dc ...@@ -1630,7 +1630,6 @@ void fill_mdci_and_dlsch(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc,mDCI_ALLOC_t *dc
break; break;
case 11: // Format 6-1B case 11: // Format 6-1B
dci_alloc->format = format6_1B; dci_alloc->format = format6_1B;
dlsch0->active = 1;
switch (fp->N_RB_DL) { switch (fp->N_RB_DL) {
case 25: case 25:
...@@ -1670,7 +1669,6 @@ void fill_mdci_and_dlsch(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc,mDCI_ALLOC_t *dc ...@@ -1670,7 +1669,6 @@ void fill_mdci_and_dlsch(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc,mDCI_ALLOC_t *dc
} }
case 12: // Format 6-2 case 12: // Format 6-2
dci_alloc->format = format6_2; dci_alloc->format = format6_2;
dlsch0->active = 1;
switch (fp->N_RB_DL) { switch (fp->N_RB_DL) {
case 25: case 25:
dci_alloc->dci_length = sizeof_DCI6_2_5MHz_t; dci_alloc->dci_length = sizeof_DCI6_2_5MHz_t;
...@@ -1719,6 +1717,8 @@ void fill_mdci_and_dlsch(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc,mDCI_ALLOC_t *dc ...@@ -1719,6 +1717,8 @@ void fill_mdci_and_dlsch(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc,mDCI_ALLOC_t *dc
} }
AssertFatal (rel13->harq_process < 8, "ERROR: Format 6_1A: harq_pid=%d >= 8\n", rel13->harq_process); AssertFatal (rel13->harq_process < 8, "ERROR: Format 6_1A: harq_pid=%d >= 8\n", rel13->harq_process);
dlsch0->ue_type = rel13->ce_mode;
dlsch0_harq = dlsch0->harq_processes[rel13->harq_process]; dlsch0_harq = dlsch0->harq_processes[rel13->harq_process];
dlsch0_harq->codeword = 0; dlsch0_harq->codeword = 0;
......
...@@ -507,7 +507,7 @@ int dump_ue_stats(PHY_VARS_UE *ue, UE_rxtx_proc_t *proc,char* buffer, int length ...@@ -507,7 +507,7 @@ int dump_ue_stats(PHY_VARS_UE *ue, UE_rxtx_proc_t *proc,char* buffer, int length
len += sprintf(&buffer[len], "[UE PROC] DLSCH Total %d, Error %d, FER %d\n",ue->dlsch_received[0],ue->dlsch_errors[0],ue->dlsch_fer[0]); len += sprintf(&buffer[len], "[UE PROC] DLSCH Total %d, Error %d, FER %d\n",ue->dlsch_received[0],ue->dlsch_errors[0],ue->dlsch_fer[0]);
len += sprintf(&buffer[len], "[UE PROC] DLSCH (SI) Total %d, Error %d\n",ue->dlsch_SI_received[0],ue->dlsch_SI_errors[0]); len += sprintf(&buffer[len], "[UE PROC] DLSCH (SI) Total %d, Error %d\n",ue->dlsch_SI_received[0],ue->dlsch_SI_errors[0]);
len += sprintf(&buffer[len], "[UE PROC] DLSCH (RA) Total %d, Error %d\n",ue->dlsch_ra_received[0],ue->dlsch_ra_errors[0]); len += sprintf(&buffer[len], "[UE PROC] DLSCH (RA) Total %d, Error %d\n",ue->dlsch_ra_received[0],ue->dlsch_ra_errors[0]);
#if defined(Rel10) || defined(Rel14) #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
int i=0; int i=0;
//len += sprintf(&buffer[len], "[UE PROC] MCH Total %d\n", ue->dlsch_mch_received[0]); //len += sprintf(&buffer[len], "[UE PROC] MCH Total %d\n", ue->dlsch_mch_received[0]);
......
...@@ -719,7 +719,7 @@ uint32_t rx_pucch(PHY_VARS_eNB *eNB, ...@@ -719,7 +719,7 @@ uint32_t rx_pucch(PHY_VARS_eNB *eNB,
int frame, int frame,
uint8_t subframe, uint8_t subframe,
uint8_t pucch1_thres uint8_t pucch1_thres
#ifdef Rel14 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
,uint8_t br_flag ,uint8_t br_flag
#endif #endif
) )
...@@ -989,7 +989,7 @@ uint32_t rx_pucch(PHY_VARS_eNB *eNB, ...@@ -989,7 +989,7 @@ uint32_t rx_pucch(PHY_VARS_eNB *eNB,
//for (j=0,l=0;l<(nsymb-1);l++) { //for (j=0,l=0;l<(nsymb-1);l++) {
for (j=0,l=0; l<nsymb; l++) { for (j=0,l=0; l<nsymb; l++) {
#ifdef Rel14 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
if (br_flag > 0 ) { if (br_flag > 0 ) {
if ((m&1) == 0) if ((m&1) == 0)
re_offset = (m*6) + frame_parms->first_carrier_offset; re_offset = (m*6) + frame_parms->first_carrier_offset;
...@@ -1226,9 +1226,9 @@ uint32_t rx_pucch(PHY_VARS_eNB *eNB, ...@@ -1226,9 +1226,9 @@ uint32_t rx_pucch(PHY_VARS_eNB *eNB,
} //phase } //phase
stat_max/=(12); //normalize to energy per symbol and RE stat_max/=(12); //normalize to energy per symbol and RE
#ifdef DEBUG_PUCCH_RX //#ifdef DEBUG_PUCCH_RX
printf("[eNB] PUCCH fmt1a/b: stat_max : %d, phase_max : %d\n",stat_max,phase_max); LOG_I(PHY,"[eNB] PUCCH fmt1a/b: stat_max : %d (%d : sigma2 %d), phase_max : %d\n",stat_max,dB_fixed(stat_max),sigma2_dB,phase_max);
#endif //#endif
stat_re=0; stat_re=0;
stat_im=0; stat_im=0;
...@@ -1385,7 +1385,7 @@ uint32_t rx_pucch(PHY_VARS_eNB *eNB, ...@@ -1385,7 +1385,7 @@ uint32_t rx_pucch(PHY_VARS_eNB *eNB,
#if defined(USRP_REC_PLAY) #if defined(USRP_REC_PLAY)
LOG_D(PHY,"PUCCH 1a/b: NAK subframe %d : sigma2_dB %d, stat_max %d, pucch1_thres %d\n",subframe,sigma2_dB,dB_fixed(stat_max),pucch1_thres); LOG_D(PHY,"PUCCH 1a/b: NAK subframe %d : sigma2_dB %d, stat_max %d, pucch1_thres %d\n",subframe,sigma2_dB,dB_fixed(stat_max),pucch1_thres);
#else #else
LOG_D(PHY,"PUCCH 1a/b: subframe %d : sigma2_dB %d, stat_max %d, pucch1_thres %d\n",subframe,sigma2_dB,dB_fixed(stat_max),pucch1_thres); LOG_I(PHY,"PUCCH 1a/b: subframe %d : sigma2_dB %d, stat_max %d, pucch1_thres %d\n",subframe,sigma2_dB,dB_fixed(stat_max),pucch1_thres);
#endif #endif
*payload = 4; // DTX *payload = 4; // DTX
((int16_t*)&eNB->pucch1ab_stats[UE_id][(subframe<<10) + (eNB->pucch1ab_stats_cnt[UE_id][subframe])])[0] = (int16_t)(stat_re); ((int16_t*)&eNB->pucch1ab_stats[UE_id][(subframe<<10) + (eNB->pucch1ab_stats_cnt[UE_id][subframe])])[0] = (int16_t)(stat_re);
......
...@@ -153,6 +153,8 @@ typedef struct { ...@@ -153,6 +153,8 @@ typedef struct {
#else #else
uint8_t active; uint8_t active;
#endif #endif
/// indicator of UE type (0 = LTE, 1,2 = Cat-M)
int ue_type;
/// HARQ process mask, indicates which processes are currently active /// HARQ process mask, indicates which processes are currently active
uint16_t harq_mask; uint16_t harq_mask;
/// Indicator of TX activation per subframe. Used during PUCCH detection for ACK/NAK. /// Indicator of TX activation per subframe. Used during PUCCH detection for ACK/NAK.
......
...@@ -553,7 +553,11 @@ uint32_t rx_pucch(PHY_VARS_eNB *phy_vars_eNB, ...@@ -553,7 +553,11 @@ uint32_t rx_pucch(PHY_VARS_eNB *phy_vars_eNB,
uint8_t *payload, uint8_t *payload,
int frame, int frame,
uint8_t subframe, uint8_t subframe,
uint8_t pucch1_thres); uint8_t pucch1_thres
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
,int br_flag
#endif
);
/*! /*!
......
...@@ -1127,7 +1127,7 @@ void rx_ulsch(PHY_VARS_eNB *eNB, ...@@ -1127,7 +1127,7 @@ void rx_ulsch(PHY_VARS_eNB *eNB,
int16_t *llrp; int16_t *llrp;
int subframe = proc->subframe_rx; int subframe = proc->subframe_rx;
#ifdef Rel14 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
if (ulsch[UE_id]->ue_type > 0) harq_pid =0; if (ulsch[UE_id]->ue_type > 0) harq_pid =0;
else else
#endif #endif
......
...@@ -1361,7 +1361,7 @@ void init_ul_hopping(LTE_DL_FRAME_PARMS *frame_parms); ...@@ -1361,7 +1361,7 @@ void init_ul_hopping(LTE_DL_FRAME_PARMS *frame_parms);
@param nB nB from 36.304 (0=4T,1=2T,2=T,3=T/2,4=T/4,5=T/8,6=T/16,7=T/32*/ @param nB nB from 36.304 (0=4T,1=2T,2=T,3=T/2,4=T/4,5=T/8,6=T/16,7=T/32*/
int init_ue_paging_info(PHY_VARS_UE *ue, long defaultPagingCycle, long nB); int init_ue_paging_info(PHY_VARS_UE *ue, long defaultPagingCycle, long nB);
#ifdef Rel14 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
void init_mpdcch(PHY_VARS_eNB *eNB); void init_mpdcch(PHY_VARS_eNB *eNB);
#endif #endif
......
...@@ -652,7 +652,7 @@ void handle_uci_harq_pdu(PHY_VARS_eNB *eNB,int UE_id,nfapi_ul_config_request_pdu ...@@ -652,7 +652,7 @@ void handle_uci_harq_pdu(PHY_VARS_eNB *eNB,int UE_id,nfapi_ul_config_request_pdu
if (nfapi_mode==2) return; if (nfapi_mode==2) return;
LOG_D(PHY,"Frame %d, Subframe %d: Programming UCI_HARQ process (type %d)\n",frame,subframe,HARQ); LOG_I(PHY,"Frame %d, Subframe %d: Programming UCI_HARQ process (type %d)\n",frame,subframe,HARQ);
uci->frame = frame; uci->frame = frame;
uci->subframe = subframe; uci->subframe = subframe;
uci->rnti = ul_config_pdu->uci_harq_pdu.ue_information.ue_information_rel8.rnti; uci->rnti = ul_config_pdu->uci_harq_pdu.ue_information.ue_information_rel8.rnti;
...@@ -744,7 +744,7 @@ rel8->resource_block_start,rel8->number_of_resource_blocks); ...@@ -744,7 +744,7 @@ rel8->resource_block_start,rel8->number_of_resource_blocks);
AssertFatal((UE_id = find_uci(ul_config_pdu->uci_harq_pdu.ue_information.ue_information_rel8.rnti, AssertFatal((UE_id = find_uci(ul_config_pdu->uci_harq_pdu.ue_information.ue_information_rel8.rnti,
proc->frame_tx,proc->subframe_tx,eNB,SEARCH_EXIST_OR_FREE))>=0, proc->frame_tx,proc->subframe_tx,eNB,SEARCH_EXIST_OR_FREE))>=0,
"No available UE UCI for rnti %x\n",ul_config_pdu->uci_harq_pdu.ue_information.ue_information_rel8.rnti); "No available UE UCI for rnti %x\n",ul_config_pdu->uci_harq_pdu.ue_information.ue_information_rel8.rnti);
LOG_D(PHY,"Applying UL UCI_HARQ config for UE %d, rnti %x for frame %d, subframe %d\n", LOG_I(PHY,"Applying UL UCI_HARQ config for UE %d, rnti %x for frame %d, subframe %d\n",
UE_id,ul_config_pdu->uci_harq_pdu.ue_information.ue_information_rel8.rnti,frame,subframe); UE_id,ul_config_pdu->uci_harq_pdu.ue_information.ue_information_rel8.rnti,frame,subframe);
handle_uci_harq_pdu(eNB,UE_id,ul_config_pdu,frame,subframe,srs_present); handle_uci_harq_pdu(eNB,UE_id,ul_config_pdu,frame,subframe,srs_present);
......
...@@ -566,8 +566,11 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, ...@@ -566,8 +566,11 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
harq_pid = dlsch0->harq_ids[frame%2][subframe]; harq_pid = dlsch0->harq_ids[frame%2][subframe];
AssertFatal(harq_pid>=0,"harq_pid is negative\n"); AssertFatal(harq_pid>=0,"harq_pid is negative\n");
if (harq_pid>=8) if (harq_pid>=8) {
{
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
if (dlsch0->ue_type==0)
#endif
LOG_E(PHY,"harq_pid:%d corrupt must be 0-7 UE_id:%d frame:%d subframe:%d rnti:%x [ %1d.%1d.%1d.%1d.%1d.%1d.%1d.%1d\n", harq_pid,UE_id,frame,subframe,dlsch0->rnti, LOG_E(PHY,"harq_pid:%d corrupt must be 0-7 UE_id:%d frame:%d subframe:%d rnti:%x [ %1d.%1d.%1d.%1d.%1d.%1d.%1d.%1d\n", harq_pid,UE_id,frame,subframe,dlsch0->rnti,
dlsch0->harq_ids[frame%2][0], dlsch0->harq_ids[frame%2][0],
dlsch0->harq_ids[frame%2][1], dlsch0->harq_ids[frame%2][1],
...@@ -577,9 +580,8 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, ...@@ -577,9 +580,8 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
dlsch0->harq_ids[frame%2][5], dlsch0->harq_ids[frame%2][5],
dlsch0->harq_ids[frame%2][6], dlsch0->harq_ids[frame%2][6],
dlsch0->harq_ids[frame%2][7]); dlsch0->harq_ids[frame%2][7]);
} } else
else {
{
// generate pdsch // generate pdsch
pdsch_procedures(eNB, pdsch_procedures(eNB,
...@@ -589,7 +591,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB, ...@@ -589,7 +591,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
dlsch1, dlsch1,
&eNB->UE_stats[(uint32_t)UE_id], &eNB->UE_stats[(uint32_t)UE_id],
0); 0);
} }
} }
...@@ -743,7 +745,11 @@ void uci_procedures(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc) ...@@ -743,7 +745,11 @@ void uci_procedures(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc)
&SR_payload, &SR_payload,
frame, frame,
subframe, subframe,
PUCCH1_THRES); PUCCH1_THRES
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
,uci->ue_type
#endif
);
LOG_D(PHY,"[eNB %d][SR %x] Frame %d subframe %d Checking SR is %d (uci.type %d SR n1pucch is %d)\n", LOG_D(PHY,"[eNB %d][SR %x] Frame %d subframe %d Checking SR is %d (uci.type %d SR n1pucch is %d)\n",
eNB->Mod_id, eNB->Mod_id,
uci->rnti, uci->rnti,
...@@ -763,7 +769,7 @@ void uci_procedures(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc) ...@@ -763,7 +769,7 @@ void uci_procedures(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc)
} }
case HARQ: case HARQ:
if (fp->frame_type == FDD) { if (fp->frame_type == FDD) {
LOG_D(PHY,"Frame %d Subframe %d Demodulating PUCCH (UCI %d) for ACK/NAK (uci->pucch_fmt %d,uci->type %d.uci->frame %d, uci->subframe %d): n1_pucch0 %d SR_payload %d\n", LOG_I(PHY,"Frame %d Subframe %d Demodulating PUCCH (UCI %d) for ACK/NAK (uci->pucch_fmt %d,uci->type %d.uci->frame %d, uci->subframe %d): n1_pucch0 %d SR_payload %d\n",
frame,subframe,i, frame,subframe,i,
uci->pucch_fmt,uci->type, uci->pucch_fmt,uci->type,
uci->frame,uci->subframe,uci->n_pucch_1[0][0], uci->frame,uci->subframe,uci->n_pucch_1[0][0],
...@@ -778,7 +784,12 @@ void uci_procedures(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc) ...@@ -778,7 +784,12 @@ void uci_procedures(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc)
pucch_b0b1[0], pucch_b0b1[0],
frame, frame,
subframe, subframe,
PUCCH1a_THRES); PUCCH1a_THRES
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
,uci->ue_type
#endif
);
/* cancel SR detection if reception on n1_pucch0 is better than on SR PUCCH resource index, otherwise send it up to MAC */ /* cancel SR detection if reception on n1_pucch0 is better than on SR PUCCH resource index, otherwise send it up to MAC */
...@@ -798,11 +809,15 @@ void uci_procedures(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc) ...@@ -798,11 +809,15 @@ void uci_procedures(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc)
pucch_b0b1[0], pucch_b0b1[0],
frame, frame,
subframe, subframe,
PUCCH1a_THRES); PUCCH1a_THRES
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
,uci->ue_type
#endif
);
} }
LOG_D(PHY,"[eNB %d][PDSCH %x] Frame %d subframe %d pucch1a (FDD) payload %d (metric %d)\n", LOG_I(PHY,"[eNB %d][PDSCH %x] Frame %d subframe %d pucch1a (FDD) payload %d (metric %d)\n",
eNB->Mod_id, eNB->Mod_id,
uci->rnti, uci->rnti,
frame,subframe, frame,subframe,
...@@ -828,7 +843,12 @@ void uci_procedures(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc) ...@@ -828,7 +843,12 @@ void uci_procedures(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc)
pucch_b0b1[0], pucch_b0b1[0],
frame, frame,
subframe, subframe,
PUCCH1a_THRES); PUCCH1a_THRES
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
,uci->ue_type
#endif
);
if (uci->type==HARQ_SR && metric[0] > metric_SR) SR_payload = 0; if (uci->type==HARQ_SR && metric[0] > metric_SR) SR_payload = 0;
else if (SR_payload == 1) fill_sr_indication(eNB,uci->rnti,frame,subframe,metric_SR); else if (SR_payload == 1) fill_sr_indication(eNB,uci->rnti,frame,subframe,metric_SR);
...@@ -843,7 +863,12 @@ void uci_procedures(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc) ...@@ -843,7 +863,12 @@ void uci_procedures(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc)
pucch_b0b1[0], pucch_b0b1[0],
frame, frame,
subframe, subframe,
PUCCH1a_THRES); PUCCH1a_THRES
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
,uci->ue_type
#endif
);
} }
#else #else
// if SR was detected, use the n1_pucch from SR // if SR was detected, use the n1_pucch from SR
...@@ -1289,7 +1314,7 @@ void pusch_procedures(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc) ...@@ -1289,7 +1314,7 @@ void pusch_procedures(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc)
stop_meas(&eNB->ulsch_decoding_stats); stop_meas(&eNB->ulsch_decoding_stats);
LOG_D(PHY,"[eNB %d][PUSCH %d] frame %d subframe %d RNTI %x RX power (%d,%d) N0 (%d,%d) dB ACK (%d,%d), decoding iter %d ulsch_harq->cqi_crc_status:%d ackBits:%d ulsch_decoding_stats[t:%lld max:%lld]\n", LOG_I(PHY,"[eNB %d][PUSCH %d] frame %d subframe %d RNTI %x RX power (%d,%d) N0 (%d,%d) dB ACK (%d,%d), decoding iter %d ulsch_harq->cqi_crc_status:%d ackBits:%d ulsch_decoding_stats[t:%lld max:%lld]\n",
eNB->Mod_id,harq_pid, eNB->Mod_id,harq_pid,
frame,subframe, frame,subframe,
ulsch->rnti, ulsch->rnti,
......
...@@ -236,7 +236,7 @@ typedef struct protocol_ctxt_s { ...@@ -236,7 +236,7 @@ typedef struct protocol_ctxt_s {
sub_frame_t subframe; /*!< \brief LTE sub frame number.*/ sub_frame_t subframe; /*!< \brief LTE sub frame number.*/
eNB_index_t eNB_index; /*!< \brief valid for UE indicating the index of connected eNB(s) */ eNB_index_t eNB_index; /*!< \brief valid for UE indicating the index of connected eNB(s) */
boolean_t configured; /*!< \brief flag indicating whether the instance is configured or not */ boolean_t configured; /*!< \brief flag indicating whether the instance is configured or not */
#ifdef Rel14 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
boolean_t brOption; boolean_t brOption;
#endif #endif
} protocol_ctxt_t; } protocol_ctxt_t;
......
...@@ -146,7 +146,7 @@ typedef struct RadioResourceConfig_s { ...@@ -146,7 +146,7 @@ typedef struct RadioResourceConfig_s {
long ue_TimersAndConstants_n311; long ue_TimersAndConstants_n311;
long ue_TransmissionMode; long ue_TransmissionMode;
long ue_multiple_max; long ue_multiple_max;
#ifdef Rel14 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
//SIB2 BR Options //SIB2 BR Options
long* preambleTransMax_CE_r13; long* preambleTransMax_CE_r13;
BOOLEAN_t prach_ConfigCommon_v1310; BOOLEAN_t prach_ConfigCommon_v1310;
......
...@@ -61,13 +61,13 @@ ...@@ -61,13 +61,13 @@
#include "RACH-ConfigCommon.h" #include "RACH-ConfigCommon.h"
#include "MeasObjectToAddModList.h" #include "MeasObjectToAddModList.h"
#include "MobilityControlInfo.h" #include "MobilityControlInfo.h"
#if defined(Rel10) || defined(Rel14) #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
#include "MBSFN-AreaInfoList-r9.h" #include "MBSFN-AreaInfoList-r9.h"
#include "MBSFN-SubframeConfigList.h" #include "MBSFN-SubframeConfigList.h"
#include "PMCH-InfoList-r9.h" #include "PMCH-InfoList-r9.h"
#include "SCellToAddMod-r10.h" #include "SCellToAddMod-r10.h"
#endif #endif
#ifdef Rel14 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
#include "SystemInformationBlockType1-v1310-IEs.h" #include "SystemInformationBlockType1-v1310-IEs.h"
#endif #endif
...@@ -87,7 +87,7 @@ ...@@ -87,7 +87,7 @@
#define SCH_PAYLOAD_SIZE_MAX 4096 #define SCH_PAYLOAD_SIZE_MAX 4096
/// Logical channel ids from 36-311 (Note BCCH is not specified in 36-311, uses the same as first DRB) /// Logical channel ids from 36-311 (Note BCCH is not specified in 36-311, uses the same as first DRB)
#if defined(Rel10) || defined(Rel14) #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
// Mask for identifying subframe for MBMS // Mask for identifying subframe for MBMS
#define MBSFN_TDD_SF3 0x80// for TDD #define MBSFN_TDD_SF3 0x80// for TDD
...@@ -283,7 +283,7 @@ typedef struct { ...@@ -283,7 +283,7 @@ typedef struct {
uint8_t payload[PCCH_PAYLOAD_SIZE_MAX] ; uint8_t payload[PCCH_PAYLOAD_SIZE_MAX] ;
} __attribute__((__packed__))PCCH_PDU; } __attribute__((__packed__))PCCH_PDU;
#if defined(Rel10) || defined(Rel14) #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
/*! \brief MCCH payload */ /*! \brief MCCH payload */
typedef struct { typedef struct {
uint8_t payload[MCCH_PAYLOAD_SIZE_MAX] ; uint8_t payload[MCCH_PAYLOAD_SIZE_MAX] ;
...@@ -340,7 +340,7 @@ typedef struct { ...@@ -340,7 +340,7 @@ typedef struct {
/*!\brief LCID of padding LCID for DLSCH */ /*!\brief LCID of padding LCID for DLSCH */
#define SHORT_PADDING 31 #define SHORT_PADDING 31
#if defined(Rel10) || defined(Rel14) #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
// MCH LCHAN IDs (table6.2.1-4 TS36.321) // MCH LCHAN IDs (table6.2.1-4 TS36.321)
/*!\brief LCID of MCCH for DL */ /*!\brief LCID of MCCH for DL */
#define MCCH_LCHANID 0 #define MCCH_LCHANID 0
...@@ -759,7 +759,7 @@ typedef struct { ...@@ -759,7 +759,7 @@ typedef struct {
eNB_UE_estimated_distances distance; eNB_UE_estimated_distances distance;
#endif #endif
#ifdef Rel14 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
uint8_t rach_resource_type; uint8_t rach_resource_type;
uint16_t mpdcch_repetition_cnt; uint16_t mpdcch_repetition_cnt;
...@@ -923,7 +923,7 @@ typedef struct { ...@@ -923,7 +923,7 @@ typedef struct {
uint8_t msg4_rrc_sdu_length; uint8_t msg4_rrc_sdu_length;
uint32_t msg4_delay; uint32_t msg4_delay;
#ifdef Rel14 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
uint8_t rach_resource_type; uint8_t rach_resource_type;
uint8_t msg2_mpdcch_repetition_cnt; uint8_t msg2_mpdcch_repetition_cnt;
uint8_t msg2_mpdcch_done; uint8_t msg2_mpdcch_done;
...@@ -985,7 +985,7 @@ typedef struct { ...@@ -985,7 +985,7 @@ typedef struct {
uint32_t dl_CarrierFreq; uint32_t dl_CarrierFreq;
BCCH_BCH_Message_t *mib; BCCH_BCH_Message_t *mib;
RadioResourceConfigCommonSIB_t *radioResourceConfigCommon; RadioResourceConfigCommonSIB_t *radioResourceConfigCommon;
#ifdef Rel14 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
RadioResourceConfigCommonSIB_t *radioResourceConfigCommon_BR; RadioResourceConfigCommonSIB_t *radioResourceConfigCommon_BR;
#endif #endif
TDD_Config_t *tdd_Config; TDD_Config_t *tdd_Config;
...@@ -1012,7 +1012,7 @@ typedef struct { ...@@ -1012,7 +1012,7 @@ typedef struct {
struct MBSFN_SubframeConfig *mbsfn_SubframeConfig[8]; struct MBSFN_SubframeConfig *mbsfn_SubframeConfig[8];
/// number of subframe allocation pattern available for MBSFN sync area /// number of subframe allocation pattern available for MBSFN sync area
uint8_t num_sf_allocation_pattern; uint8_t num_sf_allocation_pattern;
#if defined(Rel10) || defined(Rel14) #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
/// MBMS Flag /// MBMS Flag
uint8_t MBMS_flag; uint8_t MBMS_flag;
/// Outgoing MCCH pdu for PHY /// Outgoing MCCH pdu for PHY
...@@ -1034,7 +1034,7 @@ typedef struct { ...@@ -1034,7 +1034,7 @@ typedef struct {
/// Outgoing MCH pdu for PHY /// Outgoing MCH pdu for PHY
MCH_PDU MCH_pdu; MCH_PDU MCH_pdu;
#endif #endif
#ifdef Rel14 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
/// Rel13 parameters from SIB1 /// Rel13 parameters from SIB1
SystemInformationBlockType1_v1310_IEs_t *sib1_v13ext; SystemInformationBlockType1_v1310_IEs_t *sib1_v13ext;
/// Counter for SIB1-BR scheduling /// Counter for SIB1-BR scheduling
...@@ -1222,7 +1222,7 @@ typedef struct { ...@@ -1222,7 +1222,7 @@ typedef struct {
struct RACH_ConfigDedicated *rach_ConfigDedicated; struct RACH_ConfigDedicated *rach_ConfigDedicated;
/// pointer to RRC PHY configuration /// pointer to RRC PHY configuration
struct PhysicalConfigDedicated *physicalConfigDedicated; struct PhysicalConfigDedicated *physicalConfigDedicated;
#if defined(Rel10) || defined(Rel14) #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
/// pointer to RRC PHY configuration SCEll /// pointer to RRC PHY configuration SCEll
struct PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10; struct PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10;
#endif #endif
...@@ -1298,7 +1298,7 @@ typedef struct { ...@@ -1298,7 +1298,7 @@ typedef struct {
struct MBSFN_SubframeConfig *mbsfn_SubframeConfig[8]; // FIXME replace 8 by MAX_MBSFN_AREA? struct MBSFN_SubframeConfig *mbsfn_SubframeConfig[8]; // FIXME replace 8 by MAX_MBSFN_AREA?
/// number of subframe allocation pattern available for MBSFN sync area /// number of subframe allocation pattern available for MBSFN sync area
uint8_t num_sf_allocation_pattern; uint8_t num_sf_allocation_pattern;
#if defined(Rel10) || defined(Rel14) #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
/// number of active MBSFN area /// number of active MBSFN area
uint8_t num_active_mbsfn_area; uint8_t num_active_mbsfn_area;
/// MBSFN Area Info /// MBSFN Area Info
......
...@@ -261,12 +261,9 @@ schedule_SR(module_id_t module_idP, frame_t frameP, sub_frame_t subframeP) ...@@ -261,12 +261,9 @@ schedule_SR(module_id_t module_idP, frame_t frameP, sub_frame_t subframeP)
ul_req_body = &ul_req->ul_config_request_body; ul_req_body = &ul_req->ul_config_request_body;
// drop the allocation if the UE hasn't send RRCConnectionSetupComplete yet // drop the allocation if the UE hasn't send RRCConnectionSetupComplete yet
if (mac_eNB_get_rrc_status(module_idP, UE_RNTI(module_idP, UE_id)) < RRC_CONNECTED) continue; //if (mac_eNB_get_rrc_status(module_idP, UE_RNTI(module_idP, UE_id)) < RRC_CONNECTED) continue;
AssertFatal(UE_list-> if (UE_list->UE_template[CC_id][UE_id].physicalConfigDedicated== NULL) continue;
UE_template[CC_id][UE_id].physicalConfigDedicated!= NULL,
"physicalConfigDedicated is null for UE %d\n",
UE_id);
if ((SRconfig = UE_list->UE_template[CC_id][UE_id].physicalConfigDedicated->schedulingRequestConfig) != NULL) { if ((SRconfig = UE_list->UE_template[CC_id][UE_id].physicalConfigDedicated->schedulingRequestConfig) != NULL) {
if (SRconfig->present == LTE_SchedulingRequestConfig_PR_setup) { if (SRconfig->present == LTE_SchedulingRequestConfig_PR_setup) {
......
...@@ -1247,16 +1247,17 @@ check_Msg4_retransmission(module_id_t module_idP, int CC_idP, ...@@ -1247,16 +1247,17 @@ check_Msg4_retransmission(module_id_t module_idP, int CC_idP,
dl_config_pdu = &dl_req_body->dl_config_pdu_list[dl_req_body->number_pdu]; dl_config_pdu = &dl_req_body->dl_config_pdu_list[dl_req_body->number_pdu];
N_RB_DL = to_prb(cc[CC_idP].mib->message.dl_Bandwidth); N_RB_DL = to_prb(cc[CC_idP].mib->message.dl_Bandwidth);
LOG_D(MAC, LOG_I(MAC,
"[eNB %d][RAPROC] CC_id %d Frame %d, subframeP %d: Checking if Msg4 for harq_pid %d was acknowledged (round %d), UE_id: %d \n", "[eNB %d][RAPROC] CC_id %d Frame %d, subframeP %d: Checking if Msg4 for harq_pid %d was acknowledged (round %d), UE_id: %d \n",
module_idP, CC_idP, frameP, subframeP, ra->harq_pid, round, UE_id); module_idP, CC_idP, frameP, subframeP, ra->harq_pid, round, UE_id);
if (round != 8) { if (round != 8) {
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0)) #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
if (ra->rach_resource_type > 0) { if (ra->rach_resource_type > 0 && round > 0) {
AssertFatal(1 == 0, AssertFatal(1 == 0,
"Msg4 Retransmissions not handled yet for BL/CE UEs\n"); "Msg4 Retransmissions not handled yet for BL/CE UEs, Frame %d, subframeP %d harq_pid %d round %d, UE_id: %d \n",
frameP, subframeP, ra->harq_pid, round, UE_id);
} else } else
#endif #endif
{ {
......
...@@ -1451,7 +1451,7 @@ schedule_ue_spec_fairRR(module_id_t module_idP, ...@@ -1451,7 +1451,7 @@ schedule_ue_spec_fairRR(module_id_t module_idP,
MBMS_FLAG_NO, MBMS_FLAG_NO,
lcid, lcid,
TBS - ta_len - header_len_dcch - sdu_length_total - header_len_dtch TBS - ta_len - header_len_dcch - sdu_length_total - header_len_dtch
#ifdef Rel14 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
, 0, 0 , 0, 0
#endif #endif
); );
...@@ -1472,7 +1472,7 @@ schedule_ue_spec_fairRR(module_id_t module_idP, ...@@ -1472,7 +1472,7 @@ schedule_ue_spec_fairRR(module_id_t module_idP,
lcid, lcid,
TBS, //not used TBS, //not used
(char *)&dlsch_buffer[sdu_length_total] (char *)&dlsch_buffer[sdu_length_total]
#ifdef Rel14 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
, 0, 0 , 0, 0
#endif #endif
); );
......
...@@ -5371,7 +5371,7 @@ rrc_eNB_configure_rbs_handover(struct rrc_eNB_ue_context_s *ue_context_p, protoc ...@@ -5371,7 +5371,7 @@ rrc_eNB_configure_rbs_handover(struct rrc_eNB_ue_context_s *ue_context_p, protoc
NULL, NULL,
NULL, NULL,
NULL NULL
#if defined(Rel10) || defined(Rel14) #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
, (LTE_PMCH_InfoList_r9_t *) NULL , (LTE_PMCH_InfoList_r9_t *) NULL
#endif #endif
, NULL); , NULL);
...@@ -5379,7 +5379,7 @@ rrc_eNB_configure_rbs_handover(struct rrc_eNB_ue_context_s *ue_context_p, protoc ...@@ -5379,7 +5379,7 @@ rrc_eNB_configure_rbs_handover(struct rrc_eNB_ue_context_s *ue_context_p, protoc
ue_context_p->ue_context.SRB_configList, ue_context_p->ue_context.SRB_configList,
(LTE_DRB_ToAddModList_t *) NULL, (LTE_DRB_ToAddModList_t *) NULL,
(LTE_DRB_ToReleaseList_t *) NULL (LTE_DRB_ToReleaseList_t *) NULL
#if defined(Rel10) || defined(Rel14) #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
, (LTE_PMCH_InfoList_r9_t *) NULL , (LTE_PMCH_InfoList_r9_t *) NULL
, 0, 0 , 0, 0
#endif #endif
......
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