bugfix in UL HARQ, removed exit condition if HARQ rounds are exhaused, changed UL mcs to 11 in lte-softmodem (slightly better performance)
git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4056 818b1a75-f10b-46b9-bf7c-635c3b92a50f
This commit is contained in:
@@ -2597,7 +2597,7 @@ void phy_procedures_eNB_RX(unsigned char last_slot,PHY_VARS_eNB *phy_vars_eNB,u8
|
||||
phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->first_rb,
|
||||
phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->nb_rb,
|
||||
phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->mcs,
|
||||
phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->TBS,
|
||||
phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->TBS,
|
||||
phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->rvidx,
|
||||
phy_vars_eNB->ulsch_eNB[i]->cyclicShift,
|
||||
phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->n_DMRS2,
|
||||
@@ -2755,7 +2755,7 @@ void phy_procedures_eNB_RX(unsigned char last_slot,PHY_VARS_eNB *phy_vars_eNB,u8
|
||||
phy_vars_eNB->ulsch_eNB[i]->o_ACK[0],
|
||||
phy_vars_eNB->ulsch_eNB[i]->o_ACK[1]);
|
||||
|
||||
LOG_I(PHY,"[eNB] Frame %d, Subframe %d : ULSCH SDU (RX harq_pid %d) %d bytes:",phy_vars_eNB->frame,last_slot>>1,
|
||||
LOG_I(PHY,"[eNB] Frame %d, Subframe %d : ULSCH SDU (RX harq_pid %d) %d bytes:\n",phy_vars_eNB->frame,last_slot>>1,
|
||||
harq_pid,phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->TBS>>3);
|
||||
for (j=0;j<phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->TBS>>3;j++)
|
||||
LOG_T(PHY,"%x.",phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->c[0][j]);
|
||||
@@ -2773,7 +2773,8 @@ void phy_procedures_eNB_RX(unsigned char last_slot,PHY_VARS_eNB *phy_vars_eNB,u8
|
||||
phy_vars_eNB->ulsch_eNB[i]->harq_processes[harq_pid]->phich_active=0;
|
||||
phy_vars_eNB->eNB_UE_stats[i].ulsch_errors[harq_pid]++;
|
||||
phy_vars_eNB->eNB_UE_stats[i].ulsch_consecutive_errors[harq_pid]++;
|
||||
mac_xface->macphy_exit("");
|
||||
//dump_ulsch(phy_vars_eNB, last_slot>>1, i);
|
||||
//mac_xface->macphy_exit("");
|
||||
}
|
||||
|
||||
// If we've dropped the UE, go back to PRACH mode for this UE
|
||||
|
||||
@@ -2121,7 +2121,10 @@ void schedule_ulsch_rnti(u8 Mod_id, unsigned char cooperation_flag, u32 frame, u
|
||||
mcs = openair_daq_vars.target_ue_ul_mcs;
|
||||
}
|
||||
else { // increment RV
|
||||
mcs = (round&3) + 28;
|
||||
if ((round&3)==0)
|
||||
mcs = openair_daq_vars.target_ue_ul_mcs; // same as inital transmission
|
||||
else
|
||||
mcs = (round&3) + 28; //not correct for round==4!
|
||||
}
|
||||
|
||||
LOG_D(MAC,"[eNB %d] ULSCH scheduler: Ndi %d, mcs %d\n",Mod_id,ndi,mcs);
|
||||
@@ -2170,10 +2173,11 @@ void schedule_ulsch_rnti(u8 Mod_id, unsigned char cooperation_flag, u32 frame, u
|
||||
}
|
||||
//rb_table_index = 8;
|
||||
|
||||
LOG_I(MAC,"[eNB %d][PUSCH %d/%x] Frame %d subframe %d Scheduled UE (mcs %d, first rb %d, nb_rb %d, rb_table_index %d, TBS %d)\n",
|
||||
LOG_I(MAC,"[eNB %d][PUSCH %d/%x] Frame %d subframe %d Scheduled UE (mcs %d, first rb %d, nb_rb %d, rb_table_index %d, TBS %d, harq_pid %d)\n",
|
||||
Mod_id,UE_id,rnti,frame,subframe,mcs,
|
||||
*first_rb,rb_table[rb_table_index],
|
||||
rb_table_index,mac_xface->get_TBS_UL(mcs,rb_table[rb_table_index]));
|
||||
rb_table_index,mac_xface->get_TBS_UL(mcs,rb_table[rb_table_index]),
|
||||
harq_pid);
|
||||
|
||||
rballoc = mac_xface->computeRIV(mac_xface->lte_frame_parms->N_RB_UL,
|
||||
*first_rb,
|
||||
@@ -2225,10 +2229,11 @@ void schedule_ulsch_rnti(u8 Mod_id, unsigned char cooperation_flag, u32 frame, u
|
||||
|
||||
} // ndi==1
|
||||
else { //we schedule a retransmission
|
||||
LOG_I(MAC,"[eNB %d][PUSCH %d/%x] Frame %d subframe %d Scheduled UE retransmission (mcs %d, first rb %d, nb_rb %d, TBS %d)\n",
|
||||
LOG_I(MAC,"[eNB %d][PUSCH %d/%x] Frame %d subframe %d Scheduled UE retransmission (mcs %d, first rb %d, nb_rb %d, TBS %d, harq_pid %d)\n",
|
||||
Mod_id,UE_id,rnti,frame,subframe,mcs,
|
||||
*first_rb,eNB_mac_inst[Mod_id].UE_template[UE_id].nb_rb_ul[harq_pid],
|
||||
mac_xface->get_TBS_UL(mcs,eNB_mac_inst[Mod_id].UE_template[UE_id].nb_rb_ul[harq_pid]));
|
||||
mac_xface->get_TBS_UL(mcs,eNB_mac_inst[Mod_id].UE_template[UE_id].nb_rb_ul[harq_pid]),
|
||||
harq_pid);
|
||||
|
||||
rballoc = mac_xface->computeRIV(mac_xface->lte_frame_parms->N_RB_UL,
|
||||
*first_rb,
|
||||
@@ -2487,7 +2492,7 @@ u32 allocate_prbs_sub(int nb_rb, u8 *rballoc) {
|
||||
LOG_D(MAC,"*****Check1RBALLOC****: %d%d%d%d (nb_rb %d,N_RBGS %d)\n",
|
||||
rballoc[3],rballoc[2],rballoc[1],rballoc[0],nb_rb,mac_xface->lte_frame_parms->N_RBGS);
|
||||
while((nb_rb >0) && (check < mac_xface->lte_frame_parms->N_RBGS)){
|
||||
printf("rballoc[%d] %d\n",check,rballoc[check]);
|
||||
//printf("rballoc[%d] %d\n",check,rballoc[check]);
|
||||
if(rballoc[check] == 1){
|
||||
rballoc_dci |= (1<<((mac_xface->lte_frame_parms->N_RBGS-1)-check));
|
||||
switch (mac_xface->lte_frame_parms->N_RB_DL) {
|
||||
@@ -2510,7 +2515,7 @@ u32 allocate_prbs_sub(int nb_rb, u8 *rballoc) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
printf("rb_alloc %x\n",rballoc_dci);
|
||||
//printf("rb_alloc %x\n",rballoc_dci);
|
||||
check = check+1;
|
||||
// check1 = check1+2;
|
||||
}
|
||||
@@ -3357,7 +3362,7 @@ void schedule_ue_spec(unsigned char Mod_id,
|
||||
dl_pow_off,
|
||||
pre_nb_available_rbs,
|
||||
mac_xface->lte_frame_parms->N_RBGS,
|
||||
&rballoc_sub_UE[0][0]);
|
||||
rballoc_sub_UE);
|
||||
|
||||
|
||||
for (UE_id=0;UE_id<granted_UEs;UE_id++) {
|
||||
|
||||
@@ -1128,6 +1128,8 @@ int main(int argc, char **argv) {
|
||||
N_ZC = (prach_fmt <4)?839:139;
|
||||
|
||||
if (UE_flag==1) {
|
||||
g_log->log_component[HW].level = LOG_DEBUG;
|
||||
g_log->log_component[HW].flag = LOG_HIGH;
|
||||
#ifdef OPENAIR2
|
||||
g_log->log_component[PHY].level = LOG_INFO;
|
||||
#else
|
||||
@@ -1221,6 +1223,8 @@ int main(int argc, char **argv) {
|
||||
printf("tx_max_power = %d -> amp %d\n",tx_max_power,get_tx_amp(tx_max_power,tx_max_power));
|
||||
}
|
||||
else { //this is eNB
|
||||
g_log->log_component[HW].level = LOG_DEBUG;
|
||||
g_log->log_component[HW].flag = LOG_HIGH;
|
||||
#ifdef OPENAIR2
|
||||
g_log->log_component[PHY].level = LOG_INFO;
|
||||
#else
|
||||
@@ -1265,7 +1269,7 @@ int main(int argc, char **argv) {
|
||||
openair_daq_vars.ue_dl_rb_alloc=0x1fff;
|
||||
openair_daq_vars.target_ue_dl_mcs=20;
|
||||
openair_daq_vars.ue_ul_nb_rb=6;
|
||||
openair_daq_vars.target_ue_ul_mcs=9;
|
||||
openair_daq_vars.target_ue_ul_mcs=11;
|
||||
|
||||
// if AGC is off, the following values will be used
|
||||
// for (i=0;i<4;i++)
|
||||
|
||||
Reference in New Issue
Block a user