From b37e234eccc3bd358eb03b46f3cbc1ef02ef5023 Mon Sep 17 00:00:00 2001 From: Raymond Knopp <florian.kaltenberger@eurecom.fr> Date: Mon, 7 Mar 2016 21:59:30 +0100 Subject: [PATCH] added CQI request timer. CQI only requested periodically. MCS20 on UL works now. --- openair2/LAYER2/MAC/defs.h | 1 + openair2/LAYER2/MAC/eNB_scheduler.c | 2 ++ openair2/LAYER2/MAC/eNB_scheduler_ulsch.c | 13 +++++++++++-- targets/RT/USER/lte-softmodem.c | 2 +- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/openair2/LAYER2/MAC/defs.h b/openair2/LAYER2/MAC/defs.h index 405bb6ca95..078b4fde24 100644 --- a/openair2/LAYER2/MAC/defs.h +++ b/openair2/LAYER2/MAC/defs.h @@ -742,6 +742,7 @@ typedef struct { uint16_t ta_timer; int16_t ta_update; int32_t context_active_timer; + int32_t cqi_req_timer; int32_t ul_inactivity_timer; int32_t ul_failure_timer; int32_t ra_pdcch_order_sent; diff --git a/openair2/LAYER2/MAC/eNB_scheduler.c b/openair2/LAYER2/MAC/eNB_scheduler.c index dbc094034b..5f68448e6b 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler.c +++ b/openair2/LAYER2/MAC/eNB_scheduler.c @@ -127,6 +127,8 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag, // increment this, it is cleared when we receive an sdu eNB_mac_inst[module_idP].UE_list.UE_sched_ctrl[i].ul_inactivity_timer++; + + eNB_mac_inst[module_idP].UE_list.UE_sched_ctrl[i].cqi_req_timer++; if (mac_xface->get_eNB_UE_stats(module_idP, CC_id, rnti)==NULL) { // mac_remove_ue(module_idP, i, frameP, subframeP); diff --git a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c index 1500711639..6953926101 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c +++ b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c @@ -873,7 +873,14 @@ void schedule_ulsch_rnti(module_id_t module_idP, UE_template->ul_SR = 0; aggregation = process_ue_cqi(module_idP,UE_id); // =2 by default!! status = mac_eNB_get_rrc_status(module_idP,rnti); - cqi_req = (status < RRC_CONNECTED)? 0:1; + if (status < RRC_CONNECTED) + cqi_req = 0; + else if (UE_list->UE_sched_ctrl[UE_id].cqi_req_timer>30) { + cqi_req = 1; + UE_list->UE_sched_ctrl[UE_id].cqi_req_timer=0; + } + else + cqi_req = 0; //power control //compute the expected ULSCH RX power (for the stats) @@ -918,7 +925,9 @@ void schedule_ulsch_rnti(module_id_t module_idP, UE_list->eNB_UE_stats[CC_id][UE_id].target_rx_power=target_rx_power; UE_list->eNB_UE_stats[CC_id][UE_id].ulsch_mcs1=UE_template->pre_assigned_mcs_ul; mcs = cmin (UE_template->pre_assigned_mcs_ul, openair_daq_vars.target_ue_ul_mcs); // adjust, based on user-defined MCS - + if ((cqi_req==1) && (mcs==20)) { + mcs=19; + } if (UE_template->pre_allocated_rb_table_index_ul >=0) { rb_table_index=UE_template->pre_allocated_rb_table_index_ul; } else { diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c index 691542e277..aa0c440c20 100644 --- a/targets/RT/USER/lte-softmodem.c +++ b/targets/RT/USER/lte-softmodem.c @@ -318,7 +318,7 @@ static LTE_DL_FRAME_PARMS *frame_parms[MAX_NUM_CCs]; int multi_thread=1; uint32_t target_dl_mcs = 28; //maximum allowed mcs -uint32_t target_ul_mcs = 19; +uint32_t target_ul_mcs = 20; uint32_t timing_advance = 0; uint8_t exit_missed_slots=1; uint64_t num_missed_slots=0; // counter for the number of missed slots -- GitLab