[OAI-UE] MIMO fixes + disabling MIB/SIB decoding on connected mode
This commit is contained in:
@@ -948,6 +948,11 @@ void phy_config_dedicated_ue(uint8_t Mod_id,int CC_id,uint8_t eNB_id,
|
||||
// fill cqi parameters for periodic CQI reporting
|
||||
get_cqipmiri_params(phy_vars_ue,eNB_id);
|
||||
|
||||
// disable MIB SIB decoding once we are on connected mode
|
||||
LOG_I(PHY,"Disabling SIB MIB decoding \n");
|
||||
phy_vars_ue->decode_SIB = 0;
|
||||
phy_vars_ue->decode_MIB = 0;
|
||||
|
||||
}
|
||||
|
||||
void phy_config_cba_rnti (module_id_t Mod_id,int CC_id,eNB_flag_t eNB_flag, uint8_t index, rnti_t cba_rnti, uint8_t cba_group_id, uint8_t num_active_cba_groups)
|
||||
@@ -1306,6 +1311,10 @@ int phy_init_lte_ue(PHY_VARS_UE *ue,
|
||||
ue->high_speed_flag = 1;
|
||||
ue->ch_est_alpha = 24576;
|
||||
|
||||
// enable MIB/SIB decoding by default
|
||||
ue->decode_MIB = 1;
|
||||
ue->decode_SIB = 1;
|
||||
|
||||
init_prach_tables(839);
|
||||
|
||||
|
||||
|
||||
@@ -3149,7 +3149,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
|
||||
eNB_id,
|
||||
frame_parms,
|
||||
mi,
|
||||
SI_RNTI,
|
||||
((ue->decode_SIB == 1) ? SI_RNTI : 0) ,
|
||||
ra_rnti,
|
||||
P_RNTI,
|
||||
2,
|
||||
@@ -3177,7 +3177,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
|
||||
eNB_id,
|
||||
frame_parms,
|
||||
mi,
|
||||
SI_RNTI,
|
||||
((ue->decode_SIB == 1) ? SI_RNTI : 0),
|
||||
ra_rnti,
|
||||
P_RNTI,
|
||||
2,
|
||||
@@ -3209,7 +3209,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
|
||||
eNB_id,
|
||||
frame_parms,
|
||||
mi,
|
||||
SI_RNTI,
|
||||
((ue->decode_SIB == 1) ? SI_RNTI : 0),
|
||||
P_RNTI,
|
||||
ra_rnti,
|
||||
3,
|
||||
@@ -3237,7 +3237,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
|
||||
eNB_id,
|
||||
frame_parms,
|
||||
mi,
|
||||
SI_RNTI,
|
||||
((ue->decode_SIB == 1) ? SI_RNTI : 0),
|
||||
ra_rnti,
|
||||
P_RNTI,
|
||||
3,
|
||||
@@ -3271,7 +3271,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
|
||||
eNB_id,
|
||||
frame_parms,
|
||||
mi,
|
||||
SI_RNTI,
|
||||
((ue->decode_SIB == 1) ? SI_RNTI : 0),
|
||||
ra_rnti,
|
||||
P_RNTI,
|
||||
0,
|
||||
@@ -3300,7 +3300,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
|
||||
eNB_id,
|
||||
frame_parms,
|
||||
mi,
|
||||
SI_RNTI,
|
||||
((ue->decode_SIB == 1) ? SI_RNTI : 0),
|
||||
ra_rnti,
|
||||
P_RNTI,
|
||||
1,
|
||||
@@ -3333,7 +3333,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
|
||||
eNB_id,
|
||||
frame_parms,
|
||||
mi,
|
||||
SI_RNTI,
|
||||
((ue->decode_SIB == 1) ? SI_RNTI : 0),
|
||||
ra_rnti,
|
||||
P_RNTI,
|
||||
2,
|
||||
@@ -3362,7 +3362,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
|
||||
eNB_id,
|
||||
frame_parms,
|
||||
mi,
|
||||
SI_RNTI,
|
||||
((ue->decode_SIB == 1) ? SI_RNTI : 0),
|
||||
ra_rnti,
|
||||
P_RNTI,
|
||||
3,
|
||||
@@ -3395,7 +3395,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
|
||||
eNB_id,
|
||||
frame_parms,
|
||||
mi,
|
||||
SI_RNTI,
|
||||
((ue->decode_SIB == 1) ? SI_RNTI : 0),
|
||||
ra_rnti,
|
||||
P_RNTI,
|
||||
0,
|
||||
@@ -3426,7 +3426,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
|
||||
eNB_id,
|
||||
frame_parms,
|
||||
mi,
|
||||
SI_RNTI,
|
||||
((ue->decode_SIB == 1) ? SI_RNTI : 0),
|
||||
ra_rnti,
|
||||
P_RNTI,
|
||||
1,
|
||||
@@ -3458,7 +3458,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
|
||||
eNB_id,
|
||||
frame_parms,
|
||||
mi,
|
||||
SI_RNTI,
|
||||
((ue->decode_SIB == 1) ? SI_RNTI : 0),
|
||||
ra_rnti,
|
||||
P_RNTI,
|
||||
2,
|
||||
@@ -3490,7 +3490,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
|
||||
eNB_id,
|
||||
frame_parms,
|
||||
mi,
|
||||
SI_RNTI,
|
||||
((ue->decode_SIB == 1) ? SI_RNTI : 0),
|
||||
ra_rnti,
|
||||
P_RNTI,
|
||||
3,
|
||||
@@ -3527,7 +3527,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
|
||||
eNB_id,
|
||||
frame_parms,
|
||||
mi,
|
||||
SI_RNTI,
|
||||
((ue->decode_SIB == 1) ? SI_RNTI : 0),
|
||||
ra_rnti,
|
||||
P_RNTI,
|
||||
0,
|
||||
@@ -3562,7 +3562,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
|
||||
eNB_id,
|
||||
frame_parms,
|
||||
mi,
|
||||
SI_RNTI,
|
||||
((ue->decode_SIB == 1) ? SI_RNTI : 0),
|
||||
ra_rnti,
|
||||
P_RNTI,
|
||||
1,
|
||||
@@ -3596,7 +3596,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
|
||||
eNB_id,
|
||||
frame_parms,
|
||||
mi,
|
||||
SI_RNTI,
|
||||
((ue->decode_SIB == 1) ? SI_RNTI : 0),
|
||||
ra_rnti,
|
||||
P_RNTI,
|
||||
2,
|
||||
@@ -3631,7 +3631,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
|
||||
eNB_id,
|
||||
frame_parms,
|
||||
mi,
|
||||
SI_RNTI,
|
||||
((ue->decode_SIB == 1) ? SI_RNTI : 0),
|
||||
ra_rnti,
|
||||
P_RNTI,
|
||||
3,
|
||||
@@ -3665,7 +3665,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
|
||||
eNB_id,
|
||||
frame_parms,
|
||||
mi,
|
||||
SI_RNTI,
|
||||
((ue->decode_SIB == 1) ? SI_RNTI : 0),
|
||||
ra_rnti,
|
||||
P_RNTI,
|
||||
0,
|
||||
@@ -3697,7 +3697,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
|
||||
eNB_id,
|
||||
frame_parms,
|
||||
mi,
|
||||
SI_RNTI,
|
||||
((ue->decode_SIB == 1) ? SI_RNTI : 0),
|
||||
ra_rnti,
|
||||
P_RNTI,
|
||||
1,
|
||||
@@ -3729,7 +3729,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
|
||||
eNB_id,
|
||||
frame_parms,
|
||||
mi,
|
||||
SI_RNTI,
|
||||
((ue->decode_SIB == 1) ? SI_RNTI : 0),
|
||||
ra_rnti,
|
||||
P_RNTI,
|
||||
2,
|
||||
@@ -3762,7 +3762,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
|
||||
eNB_id,
|
||||
frame_parms,
|
||||
mi,
|
||||
SI_RNTI,
|
||||
((ue->decode_SIB == 1) ? SI_RNTI : 0),
|
||||
ra_rnti,
|
||||
P_RNTI,
|
||||
3,
|
||||
@@ -3792,7 +3792,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
|
||||
eNB_id,
|
||||
frame_parms,
|
||||
mi,
|
||||
SI_RNTI,
|
||||
((ue->decode_SIB == 1) ? SI_RNTI : 0),
|
||||
ra_rnti,
|
||||
P_RNTI,
|
||||
0,
|
||||
@@ -3825,7 +3825,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
|
||||
eNB_id,
|
||||
frame_parms,
|
||||
mi,
|
||||
SI_RNTI,
|
||||
((ue->decode_SIB == 1) ? SI_RNTI : 0),
|
||||
ra_rnti,
|
||||
P_RNTI,
|
||||
1,
|
||||
@@ -3857,7 +3857,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
|
||||
eNB_id,
|
||||
frame_parms,
|
||||
mi,
|
||||
SI_RNTI,
|
||||
((ue->decode_SIB == 1) ? SI_RNTI : 0),
|
||||
ra_rnti,
|
||||
P_RNTI,
|
||||
2,
|
||||
@@ -3891,7 +3891,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
|
||||
eNB_id,
|
||||
frame_parms,
|
||||
mi,
|
||||
SI_RNTI,
|
||||
((ue->decode_SIB == 1) ? SI_RNTI : 0),
|
||||
ra_rnti,
|
||||
P_RNTI,
|
||||
3,
|
||||
|
||||
@@ -4763,6 +4763,8 @@ int check_dci_format1_1a_coherency(DCI_format_t dci_format,
|
||||
uint16_t si_rnti,
|
||||
uint16_t ra_rnti,
|
||||
uint16_t p_rnti,
|
||||
uint32_t frame,
|
||||
uint8_t subframe,
|
||||
DCI_INFO_EXTRACTED_t *pdci_info_extarcted,
|
||||
LTE_DL_UE_HARQ_t *pdlsch0_harq)
|
||||
{
|
||||
@@ -4779,17 +4781,17 @@ int check_dci_format1_1a_coherency(DCI_format_t dci_format,
|
||||
uint8_t NPRB = 0;
|
||||
long long int RIV_max = 0;
|
||||
|
||||
#ifdef DEBUG_DCI
|
||||
LOG_I(PHY,"[DCI-FORMAT-1-1A] dci_format %d\n", dci_format);
|
||||
//#ifdef DEBUG_DCI
|
||||
LOG_I(PHY,"[DCI-FORMAT-1-1A] AbsSubframe %d.%d dci_format %d\n", frame, subframe, dci_format);
|
||||
LOG_I(PHY,"[DCI-FORMAT-1-1A] rnti %x\n", rnti);
|
||||
LOG_I(PHY,"[DCI-FORMAT-1-1A] harq_pid %d\n", harq_pid);
|
||||
LOG_I(PHY,"[DCI-FORMAT-1-1A] rah %d\n", rah);
|
||||
LOG_I(PHY,"[DCI-FORMAT-1-1A] rballoc %x\n", rballoc);
|
||||
LOG_I(PHY,"[DCI-FORMAT-1-1A] mcs1 %d\n", mcs1);
|
||||
LOG_I(PHY,"[DCI-FORMAT-1-1A] rv1 %d\n", rv1);
|
||||
LOG_I(PHY,"[DCI-FORMAT-1-1A] ndi1 %d\n", ndi1);
|
||||
LOG_I(PHY,"[DCI-FORMAT-1-1A] TPC %d\n", TPC);
|
||||
#endif
|
||||
// LOG_I(PHY,"[DCI-FORMAT-1-1A] rah %d\n", rah);
|
||||
// LOG_I(PHY,"[DCI-FORMAT-1-1A] rballoc %x\n", rballoc);
|
||||
// LOG_I(PHY,"[DCI-FORMAT-1-1A] mcs1 %d\n", mcs1);
|
||||
// LOG_I(PHY,"[DCI-FORMAT-1-1A] rv1 %d\n", rv1);
|
||||
// LOG_I(PHY,"[DCI-FORMAT-1-1A] ndi1 %d\n", ndi1);
|
||||
// LOG_I(PHY,"[DCI-FORMAT-1-1A] TPC %d\n", TPC);
|
||||
//#endif
|
||||
|
||||
// I- check dci content minimum coherency
|
||||
if( ((rnti==si_rnti) || (rnti==p_rnti) || (rnti==ra_rnti)) && harq_pid > 0)
|
||||
@@ -5002,10 +5004,10 @@ int check_dci_format2_2a_coherency(DCI_format_t dci_format,
|
||||
LOG_I(PHY, "extarcted dci - mcs2 %d \n", mcs2);
|
||||
LOG_I(PHY, "extarcted dci - rv1 %d \n", rv1);
|
||||
LOG_I(PHY, "extarcted dci - rv2 %d \n", rv2);
|
||||
LOG_I(PHY, "extarcted dci - ndi1 %d \n", ndi1);
|
||||
LOG_I(PHY, "extarcted dci - ndi2 %d \n", ndi2);
|
||||
//LOG_I(PHY, "extarcted dci - ndi1 %d \n", ndi1);
|
||||
//LOG_I(PHY, "extarcted dci - ndi2 %d \n", ndi2);
|
||||
LOG_I(PHY, "extarcted dci - rballoc %x \n", rballoc);
|
||||
LOG_I(PHY, "extarcted dci - harq pif %d \n", harq_pid);
|
||||
LOG_I(PHY, "extarcted dci - harq pid %d \n", harq_pid);
|
||||
LOG_I(PHY, "extarcted dci - round0 %d \n", pdlsch0_harq->round);
|
||||
LOG_I(PHY, "extarcted dci - round1 %d \n", pdlsch1_harq->round);
|
||||
#endif
|
||||
@@ -5818,12 +5820,24 @@ void prepare_dl_decoding_format2_2A(DCI_format_t dci_format,
|
||||
}
|
||||
}
|
||||
|
||||
dlsch0_harq->TBS = TBStable[get_I_TBS(dlsch0_harq->mcs)][dlsch0_harq->nb_rb-1];
|
||||
//if(dlsch0_harq->Nl == 2)
|
||||
//dlsch0_harq->TBS = TBStable[get_I_TBS(dlsch0_harq->mcs)][(dlsch0_harq->nb_rb<<1)-1];
|
||||
if (mcs1 <= 28)
|
||||
// if Imcs in [29..31] TBS is assumed to be as determined from DCI transported in the latest
|
||||
// PDCCH for the same trasport block using Imcs in [0 .. 28]
|
||||
if(dlsch0_harq->mcs <= 28)
|
||||
{
|
||||
dlsch0_harq->TBS = TBStable[get_I_TBS(dlsch0_harq->mcs)][dlsch0_harq->nb_rb-1];
|
||||
LOG_D(PHY,"[UE] DLSCH: New TBS CW0 subframe %d (pid %d, round %d) TBS %d \n",
|
||||
subframe,harq_pid,dlsch0_harq->round, dlsch0_harq->TBS);
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG_D(PHY,"[UE] DLSCH: Keep the same TBS CW0 subframe %d (pid %d, round %d) TBS %d \n",
|
||||
subframe,harq_pid,dlsch0_harq->round, dlsch0_harq->TBS);
|
||||
}
|
||||
//if(dlsch0_harq->Nl == 2)
|
||||
//dlsch0_harq->TBS = TBStable[get_I_TBS(dlsch0_harq->mcs)][(dlsch0_harq->nb_rb<<1)-1];
|
||||
if (mcs1 <= 28)
|
||||
dlsch0_harq->Qm = get_Qm(mcs1);
|
||||
else if (mcs1<=31)
|
||||
else if (mcs1<=31)
|
||||
dlsch0_harq->Qm = (mcs1-28)<<1;
|
||||
}
|
||||
|
||||
@@ -5849,13 +5863,22 @@ void prepare_dl_decoding_format2_2A(DCI_format_t dci_format,
|
||||
#endif
|
||||
}
|
||||
|
||||
dlsch1_harq->TBS = TBStable[get_I_TBS(dlsch1_harq->mcs)][dlsch1_harq->nb_rb-1];
|
||||
//if(dlsch0_harq->Nl == 2)
|
||||
//dlsch0_harq->TBS = TBStable[get_I_TBS(dlsch0_harq->mcs)][(dlsch0_harq->nb_rb<<1)-1];
|
||||
|
||||
if (mcs2 <= 28)
|
||||
// if Imcs in [29..31] TBS is assumed to be as determined from DCI transported in the latest
|
||||
// PDCCH for the same trasport block using Imcs in [0 .. 28]
|
||||
if(dlsch1_harq->mcs <= 28)
|
||||
{
|
||||
dlsch1_harq->TBS = TBStable[get_I_TBS(dlsch1_harq->mcs)][dlsch1_harq->nb_rb-1];
|
||||
LOG_D(PHY,"[UE] DLSCH: New TBS CW1 subframe %d (pid %d, round %d) TBS %d \n",
|
||||
subframe,harq_pid,dlsch1_harq->round, dlsch1_harq->TBS);
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG_D(PHY,"[UE] DLSCH: Keep the same TBS CW1 subframe %d (pid %d, round %d) TBS %d \n",
|
||||
subframe,harq_pid,dlsch1_harq->round, dlsch1_harq->TBS);
|
||||
}
|
||||
if (mcs2 <= 28)
|
||||
dlsch1_harq->Qm = get_Qm(mcs2);
|
||||
else if (mcs1<=31)
|
||||
else if (mcs1<=31)
|
||||
dlsch1_harq->Qm = (mcs2-28)<<1;
|
||||
}
|
||||
|
||||
@@ -5953,7 +5976,7 @@ int generate_ue_dlsch_params_from_dci(int frame,
|
||||
tc_rnti,
|
||||
si_rnti,
|
||||
ra_rnti,
|
||||
p_rnti,
|
||||
p_rnti,frame,subframe,
|
||||
&dci_info_extarcted,
|
||||
dlsch0_harq);
|
||||
if(status == 0)
|
||||
@@ -6053,7 +6076,7 @@ int generate_ue_dlsch_params_from_dci(int frame,
|
||||
tc_rnti,
|
||||
si_rnti,
|
||||
ra_rnti,
|
||||
p_rnti,
|
||||
p_rnti,frame,subframe,
|
||||
&dci_info_extarcted,
|
||||
dlsch0_harq);
|
||||
if(status == 0)
|
||||
@@ -6133,7 +6156,7 @@ int generate_ue_dlsch_params_from_dci(int frame,
|
||||
case format2A:
|
||||
{
|
||||
// extract dci infomation
|
||||
//LOG_I(PHY,"[DCI-format2] AbsSubframe %d.%d extract dci infomation \n", frame%1024, subframe);
|
||||
//LOG_I(PHY,"[DCI-format2] AbsSubframe %d.%d extract dci infomation \n", frame%1024, subframe);
|
||||
extract_dci2A_info(frame_parms->N_RB_DL,
|
||||
frame_type,
|
||||
frame_parms->nb_antenna_ports_eNB,
|
||||
|
||||
@@ -364,12 +364,18 @@ int rx_pdsch(PHY_VARS_UE *ue,
|
||||
symbol,
|
||||
nb_rb);
|
||||
|
||||
if ((dlsch0_harq->mimo_mode<DUALSTREAM_UNIFORM_PRECODING1) && (rx_type==rx_IC_single_stream) && (eNB_id_i==ue->n_connected_eNB) && (dlsch0_harq->dl_power_off==0)) // TM5 two-user
|
||||
if ((dlsch0_harq->mimo_mode<DUALSTREAM_UNIFORM_PRECODING1) &&
|
||||
(rx_type==rx_IC_single_stream) &&
|
||||
(eNB_id_i==ue->n_connected_eNB) &&
|
||||
(dlsch0_harq->dl_power_off==0)
|
||||
) // TM5 two-user
|
||||
{
|
||||
dlsch_scale_channel(pdsch_vars[eNB_id_i]->dl_ch_estimates_ext,
|
||||
frame_parms,
|
||||
dlsch,
|
||||
symbol,
|
||||
nb_rb);
|
||||
}
|
||||
|
||||
if (first_symbol_flag==1) {
|
||||
if (beamforming_mode==0){
|
||||
|
||||
@@ -8846,7 +8846,8 @@ int dlsch_64qam_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
|
||||
memcpy(ch_mag_256i, ch_mag, len*4);
|
||||
memcpy(ch_mag_i_256i, ch_mag_i, len*4);
|
||||
memcpy(rho_256i, rho, len*4);
|
||||
/*
|
||||
|
||||
|
||||
qam64_qam64_avx2((int32_t *)rxF_256i,
|
||||
(int32_t *)rxF_i_256i,
|
||||
(int32_t *)ch_mag_256i,
|
||||
@@ -8854,7 +8855,8 @@ int dlsch_64qam_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
|
||||
(int16_t *)llr16,
|
||||
(int32_t *) rho_256i,
|
||||
len);
|
||||
*/
|
||||
|
||||
/*
|
||||
qam64_qam16_avx2((short *)rxF_256i,
|
||||
(short *)rxF_i_256i,
|
||||
(short *)ch_mag_256i,
|
||||
@@ -8862,7 +8864,7 @@ int dlsch_64qam_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
|
||||
(short *)llr16,
|
||||
(short *)rho_256i,
|
||||
len);
|
||||
|
||||
*/
|
||||
free16(rxF_256i, sizeof(rxF_256i));
|
||||
free16(rxF_i_256i, sizeof(rxF_i_256i));
|
||||
free16(ch_mag_256i, sizeof(ch_mag_256i));
|
||||
|
||||
@@ -802,6 +802,8 @@ typedef struct {
|
||||
uint8_t prach_cnt;
|
||||
uint8_t prach_PreambleIndex;
|
||||
// uint8_t prach_timer;
|
||||
uint8_t decode_SIB;
|
||||
uint8_t decode_MIB;
|
||||
int rx_offset; /// Timing offset
|
||||
int rx_offset_diff; /// Timing adjustment for ofdm symbol0 on HW USRP
|
||||
int timing_advance; ///timing advance signalled from eNB
|
||||
|
||||
Reference in New Issue
Block a user