Commit d7cddc28 authored by Louis Adrien Dufrene's avatar Louis Adrien Dufrene

Bug fix of drx_config == PrNothing is now handled. Bug fix for dci0_ongoing...

Bug fix of drx_config == PrNothing is now handled. Bug fix for dci0_ongoing not working. To investigate
parent 4c931888
...@@ -1044,7 +1044,7 @@ void eNB_Config_Local_DRX( ...@@ -1044,7 +1044,7 @@ void eNB_Config_Local_DRX(
/* Check drx_Configuration */ /* Check drx_Configuration */
if (drx_Configuration == NULL) { if (drx_Configuration == NULL) {
LOG_E(MAC, "drx_Configuration parameter is NULL, cannot configure local UE parameters\n"); LOG_I(MAC, "drx_Configuration parameter is NULL, cannot configure local UE parameters\n");
UE_scheduling_control->cdrx_configured = FALSE; UE_scheduling_control->cdrx_configured = FALSE;
return; return;
......
...@@ -799,11 +799,11 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP, ...@@ -799,11 +799,11 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP,
/* END VCD */ /* END VCD */
/* DCI0 ongoing timer */ /* DCI0 ongoing timer */
if (UE_scheduling_control->dci0_ongoing_timer > 1) { if (UE_scheduling_control->dci0_ongoing_timer > 0) {
UE_scheduling_control->dci0_ongoing_timer++; if (UE_scheduling_control->dci0_ongoing_timer > 7) {
UE_scheduling_control->dci0_ongoing_timer = 0;
if (UE_scheduling_control->dci0_ongoing_timer > 3) { } else {
UE_scheduling_control->dci0_ongoing_timer = 0; UE_scheduling_control->dci0_ongoing_timer++;
} }
} }
......
...@@ -4953,7 +4953,9 @@ SR_indication(module_id_t mod_idP, ...@@ -4953,7 +4953,9 @@ SR_indication(module_id_t mod_idP,
if (UE_id != -1) { if (UE_id != -1) {
UE_scheduling_ctrl = &(UE_list->UE_sched_ctrl[UE_id]); UE_scheduling_ctrl = &(UE_list->UE_sched_ctrl[UE_id]);
if ((UE_scheduling_ctrl->cdrx_configured == TRUE) && (UE_scheduling_ctrl->dci0_ongoing_timer > 0)) { if ((UE_scheduling_ctrl->cdrx_configured == TRUE) &&
(UE_scheduling_ctrl->dci0_ongoing_timer > 4) &&
(UE_scheduling_ctrl->dci0_ongoing_timer < 8)) {
LOG_D(MAC, "[eNB %d][SR %x] Frame %d subframeP %d Signaling SR for UE %d on CC_id %d. \ LOG_D(MAC, "[eNB %d][SR %x] Frame %d subframeP %d Signaling SR for UE %d on CC_id %d. \
The SR is not set do to ongoing DCI0 with CDRX activated\n", The SR is not set do to ongoing DCI0 with CDRX activated\n",
mod_idP, mod_idP,
...@@ -4961,7 +4963,7 @@ SR_indication(module_id_t mod_idP, ...@@ -4961,7 +4963,7 @@ SR_indication(module_id_t mod_idP,
frameP, frameP,
subframeP, subframeP,
UE_id, UE_id,
cc_idP);) cc_idP);
} else { } else {
if (mac_eNB_get_rrc_status(mod_idP, UE_RNTI(mod_idP, UE_id)) < RRC_CONNECTED) { if (mac_eNB_get_rrc_status(mod_idP, UE_RNTI(mod_idP, UE_id)) < RRC_CONNECTED) {
LOG_D(MAC, "[eNB %d][SR %x] Frame %d subframeP %d Signaling SR for UE %d on CC_id %d\n", LOG_D(MAC, "[eNB %d][SR %x] Frame %d subframeP %d Signaling SR for UE %d on CC_id %d\n",
......
...@@ -241,6 +241,9 @@ rx_sdu(const module_id_t enb_mod_idP, ...@@ -241,6 +241,9 @@ rx_sdu(const module_id_t enb_mod_idP,
* Note: in case of asynchronous UL HARQ process restart here relevant RTT timer. * Note: in case of asynchronous UL HARQ process restart here relevant RTT timer.
* Start corresponding CDRX ULRetransmission timer. * Start corresponding CDRX ULRetransmission timer.
*/ */
unsigned long active_time_condition = 10;
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_DRX_ACTIVE_TIME_CONDITION, (unsigned long) active_time_condition);
} }
first_rb = UE_template_ptr->first_rb_ul[harq_pid]; first_rb = UE_template_ptr->first_rb_ul[harq_pid];
......
...@@ -344,6 +344,10 @@ LTE_DRX_Config_t *do_DrxConfig(uint8_t Mod_id, ...@@ -344,6 +344,10 @@ LTE_DRX_Config_t *do_DrxConfig(uint8_t Mod_id,
} else LOG_W(RRC,"[do_DrxConfig] No featureGroupIndicators pointer\n"); } else LOG_W(RRC,"[do_DrxConfig] No featureGroupIndicators pointer\n");
} else LOG_W(RRC,"[do_DrxConfig] No UEcap pointer\n"); } else LOG_W(RRC,"[do_DrxConfig] No UEcap pointer\n");
if (configuration->radioresourceconfig[CC_id].drx_Config_present == LTE_DRX_Config_PR_NOTHING) {
return NULL;
}
drxConfig = (LTE_DRX_Config_t *) malloc(sizeof(LTE_DRX_Config_t)); drxConfig = (LTE_DRX_Config_t *) malloc(sizeof(LTE_DRX_Config_t));
if (drxConfig == NULL) return NULL; if (drxConfig == NULL) return NULL;
memset(drxConfig, 0, sizeof(LTE_DRX_Config_t)); memset(drxConfig, 0, sizeof(LTE_DRX_Config_t));
...@@ -355,78 +359,77 @@ LTE_DRX_Config_t *do_DrxConfig(uint8_t Mod_id, ...@@ -355,78 +359,77 @@ LTE_DRX_Config_t *do_DrxConfig(uint8_t Mod_id,
drxConfig->present = configuration->radioresourceconfig[CC_id].drx_Config_present; drxConfig->present = configuration->radioresourceconfig[CC_id].drx_Config_present;
} }
if (drxConfig->present != LTE_DRX_Config_PR_NOTHING) { if (drxConfig->present == LTE_DRX_Config_PR_release) {
if (drxConfig->present == LTE_DRX_Config_PR_release) { drxConfig->choice.release = (NULL_t) 0;
drxConfig->choice.release = (NULL_t) 0; } else {
} else { drxConfig->choice.setup.onDurationTimer = configuration->radioresourceconfig[CC_id].drx_onDurationTimer;
drxConfig->choice.setup.onDurationTimer = configuration->radioresourceconfig[CC_id].drx_onDurationTimer; drxConfig->choice.setup.drx_InactivityTimer = configuration->radioresourceconfig[CC_id].drx_InactivityTimer;
drxConfig->choice.setup.drx_InactivityTimer = configuration->radioresourceconfig[CC_id].drx_InactivityTimer; drxConfig->choice.setup.drx_RetransmissionTimer = configuration->radioresourceconfig[CC_id].drx_RetransmissionTimer;
drxConfig->choice.setup.drx_RetransmissionTimer = configuration->radioresourceconfig[CC_id].drx_RetransmissionTimer; drxConfig->choice.setup.longDRX_CycleStartOffset.present = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset_present;
drxConfig->choice.setup.longDRX_CycleStartOffset.present = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset_present; switch (drxConfig->choice.setup.longDRX_CycleStartOffset.present) {
switch (drxConfig->choice.setup.longDRX_CycleStartOffset.present) { case LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR_sf10:
case LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR_sf10: drxConfig->choice.setup.longDRX_CycleStartOffset.choice.sf10 = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset;
drxConfig->choice.setup.longDRX_CycleStartOffset.choice.sf10 = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset; break;
break; case LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR_sf20:
case LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR_sf20: drxConfig->choice.setup.longDRX_CycleStartOffset.choice.sf20 = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset;
drxConfig->choice.setup.longDRX_CycleStartOffset.choice.sf20 = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset; break;
break; case LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR_sf32:
case LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR_sf32: drxConfig->choice.setup.longDRX_CycleStartOffset.choice.sf32 = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset;
drxConfig->choice.setup.longDRX_CycleStartOffset.choice.sf32 = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset; break;
break; case LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR_sf40:
case LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR_sf40: drxConfig->choice.setup.longDRX_CycleStartOffset.choice.sf40 = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset;
drxConfig->choice.setup.longDRX_CycleStartOffset.choice.sf40 = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset; break;
break; case LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR_sf64:
case LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR_sf64: drxConfig->choice.setup.longDRX_CycleStartOffset.choice.sf64 = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset;
drxConfig->choice.setup.longDRX_CycleStartOffset.choice.sf64 = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset; break;
break; case LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR_sf80:
case LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR_sf80: drxConfig->choice.setup.longDRX_CycleStartOffset.choice.sf80 = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset;
drxConfig->choice.setup.longDRX_CycleStartOffset.choice.sf80 = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset; break;
break; case LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR_sf128:
case LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR_sf128: drxConfig->choice.setup.longDRX_CycleStartOffset.choice.sf128 = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset;
drxConfig->choice.setup.longDRX_CycleStartOffset.choice.sf128 = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset; break;
break; case LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR_sf160:
case LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR_sf160: drxConfig->choice.setup.longDRX_CycleStartOffset.choice.sf160 = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset;
drxConfig->choice.setup.longDRX_CycleStartOffset.choice.sf160 = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset; break;
break; case LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR_sf256:
case LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR_sf256: drxConfig->choice.setup.longDRX_CycleStartOffset.choice.sf256 = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset;
drxConfig->choice.setup.longDRX_CycleStartOffset.choice.sf256 = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset; break;
break; case LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR_sf320:
case LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR_sf320: drxConfig->choice.setup.longDRX_CycleStartOffset.choice.sf320 = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset;
drxConfig->choice.setup.longDRX_CycleStartOffset.choice.sf320 = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset; break;
break; case LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR_sf512:
case LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR_sf512: drxConfig->choice.setup.longDRX_CycleStartOffset.choice.sf512 = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset;
drxConfig->choice.setup.longDRX_CycleStartOffset.choice.sf512 = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset; break;
break; case LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR_sf640:
case LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR_sf640: drxConfig->choice.setup.longDRX_CycleStartOffset.choice.sf640 = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset;
drxConfig->choice.setup.longDRX_CycleStartOffset.choice.sf640 = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset; break;
break; case LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR_sf1024:
case LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR_sf1024: drxConfig->choice.setup.longDRX_CycleStartOffset.choice.sf1024 = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset;
drxConfig->choice.setup.longDRX_CycleStartOffset.choice.sf1024 = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset; break;
break; case LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR_sf1280:
case LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR_sf1280: drxConfig->choice.setup.longDRX_CycleStartOffset.choice.sf1280 = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset;
drxConfig->choice.setup.longDRX_CycleStartOffset.choice.sf1280 = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset; break;
break; case LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR_sf2048:
case LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR_sf2048: drxConfig->choice.setup.longDRX_CycleStartOffset.choice.sf2048 = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset;
drxConfig->choice.setup.longDRX_CycleStartOffset.choice.sf2048 = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset; break;
break; case LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR_sf2560:
case LTE_DRX_Config__setup__longDRX_CycleStartOffset_PR_sf2560: drxConfig->choice.setup.longDRX_CycleStartOffset.choice.sf2560 = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset;
drxConfig->choice.setup.longDRX_CycleStartOffset.choice.sf2560 = configuration->radioresourceconfig[CC_id].drx_longDrx_CycleStartOffset; break;
break; default:
default: break;
break; }
}
/* Short DRX cycle configuration */ /* Short DRX cycle configuration */
if (!ueSupportCdrxShortFlag || configuration->radioresourceconfig[CC_id].drx_shortDrx_ShortCycleTimer == 0) { if (!ueSupportCdrxShortFlag || configuration->radioresourceconfig[CC_id].drx_shortDrx_ShortCycleTimer == 0) {
drxConfig->choice.setup.shortDRX = NULL; drxConfig->choice.setup.shortDRX = NULL;
} else { } else {
drxConfig->choice.setup.shortDRX = MALLOC(sizeof(struct LTE_DRX_Config__setup__shortDRX)); drxConfig->choice.setup.shortDRX = MALLOC(sizeof(struct LTE_DRX_Config__setup__shortDRX));
memset(drxConfig->choice.setup.shortDRX, 0, sizeof(struct LTE_DRX_Config__setup__shortDRX)); memset(drxConfig->choice.setup.shortDRX, 0, sizeof(struct LTE_DRX_Config__setup__shortDRX));
drxConfig->choice.setup.shortDRX->shortDRX_Cycle = configuration->radioresourceconfig[CC_id].drx_shortDrx_Cycle; drxConfig->choice.setup.shortDRX->shortDRX_Cycle = configuration->radioresourceconfig[CC_id].drx_shortDrx_Cycle;
drxConfig->choice.setup.shortDRX->drxShortCycleTimer = configuration->radioresourceconfig[CC_id].drx_shortDrx_ShortCycleTimer; drxConfig->choice.setup.shortDRX->drxShortCycleTimer = configuration->radioresourceconfig[CC_id].drx_shortDrx_ShortCycleTimer;
}
} }
} }
return drxConfig; return drxConfig;
} }
......
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