Commit 25418e98 authored by Louis Adrien Dufrene's avatar Louis Adrien Dufrene

merge from local dev branch

parents 7aa89331 0aff1045
...@@ -2582,7 +2582,7 @@ schedule_ulsch_fairRR(module_id_t module_idP, frame_t frameP, ...@@ -2582,7 +2582,7 @@ schedule_ulsch_fairRR(module_id_t module_idP, frame_t frameP,
frame_parms->prach_config_common.prach_ConfigInfo.prach_ConfigIndex, frame_parms->prach_config_common.prach_ConfigInfo.prach_ConfigIndex,
frame_parms->prach_config_common.prach_ConfigInfo.prach_FreqOffset, frame_parms->prach_config_common.prach_ConfigInfo.prach_FreqOffset,
0,//tdd_mapindex 0,//tdd_mapindex
frameP); //Nf frameP); //Nf --> shouldn't it be sched_frame ???
ulsch_ue_select[CC_id].list[ulsch_ue_select[CC_id].ue_num].nb_rb = 6; ulsch_ue_select[CC_id].list[ulsch_ue_select[CC_id].ue_num].nb_rb = 6;
ulsch_ue_select[CC_id].list[ulsch_ue_select[CC_id].ue_num].UE_id = -1; ulsch_ue_select[CC_id].list[ulsch_ue_select[CC_id].ue_num].UE_id = -1;
ulsch_ue_select[CC_id].ue_num++; ulsch_ue_select[CC_id].ue_num++;
......
...@@ -133,31 +133,6 @@ rx_sdu(const module_id_t enb_mod_idP, ...@@ -133,31 +133,6 @@ rx_sdu(const module_id_t enb_mod_idP,
memset(rx_lcids, 0, NB_RB_MAX * sizeof(unsigned char)); memset(rx_lcids, 0, NB_RB_MAX * sizeof(unsigned char));
memset(rx_lengths, 0, NB_RB_MAX * sizeof(unsigned short)); memset(rx_lengths, 0, NB_RB_MAX * sizeof(unsigned short));
// LAD
/*
if (UE_id == -1) {
LOG_E(MAC, "Step 1\n");
LOG_W(MAC, "[MAC] UE_id = -1 ; RNTI = %x ; frame = %d ; subframe = %d ; sdu_length = %d ; sdu = %d\n",
rntiP,
frameP,
subframeP,
sdu_lenP,
*sduP);
}
*/
// LAD
/*
first_rb = UE_list->UE_template[CC_idP][UE_id].first_rb_ul[harq_pid];
LOG_W(MAC, "[MAC] UE_id = %d : first_rb = %d ; scheduled_ul_bytes = %d ; TBS_UL = %d ; frame = %d ; subframe = %d\n",
UE_id,
first_rb,
UE_list->UE_template[CC_idP][UE_id].scheduled_ul_bytes,
UE_list->UE_template[CC_idP][UE_id].TBS_UL[harq_pid],
frameP,
subframeP);
*/
start_meas(&mac->rx_ulsch_sdu); start_meas(&mac->rx_ulsch_sdu);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RX_SDU, 1); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RX_SDU, 1);
...@@ -206,17 +181,7 @@ rx_sdu(const module_id_t enb_mod_idP, ...@@ -206,17 +181,7 @@ rx_sdu(const module_id_t enb_mod_idP,
mac_eNB_rrc_ul_in_sync(enb_mod_idP, CC_idP, frameP, subframeP, current_rnti); mac_eNB_rrc_ul_in_sync(enb_mod_idP, CC_idP, frameP, subframeP, current_rnti);
} }
/* update bytes to schedule */ /* Update bytes to schedule */
// LAD
/*
LOG_E(MAC, "Step 2\n");
LOG_W(MAC, "[MAC] UE_id != -1 and sduP != NULL : first_rb = %d ; scheduled_ul_bytes = %d ; TBS_UL = %d\n",
first_rb,
UE_list->UE_template[CC_idP][UE_id].scheduled_ul_bytes,
UE_list->UE_template[CC_idP][UE_id].TBS_UL[harq_pid]);
*/
UE_list->UE_template[CC_idP][UE_id].scheduled_ul_bytes -= UE_list->UE_template[CC_idP][UE_id].TBS_UL[harq_pid]; UE_list->UE_template[CC_idP][UE_id].scheduled_ul_bytes -= UE_list->UE_template[CC_idP][UE_id].TBS_UL[harq_pid];
if (UE_list->UE_template[CC_idP][UE_id].scheduled_ul_bytes < 0) { if (UE_list->UE_template[CC_idP][UE_id].scheduled_ul_bytes < 0) {
...@@ -310,15 +275,6 @@ rx_sdu(const module_id_t enb_mod_idP, ...@@ -310,15 +275,6 @@ rx_sdu(const module_id_t enb_mod_idP,
first_rb = ra[RA_id].msg3_first_rb; first_rb = ra[RA_id].msg3_first_rb;
// LAD
/*
LOG_E(MAC, "Step 3\n");
LOG_W(MAC, "[MAC] UE_id == -1 : first_rb = %d ; scheduled_ul_bytes = %d ; TBS_UL = %d\n",
first_rb,
UE_list->UE_template[CC_idP][UE_id].scheduled_ul_bytes,
UE_list->UE_template[CC_idP][UE_id].TBS_UL[harq_pid]);
*/
if (sduP == NULL) { // we've got an error on Msg3 if (sduP == NULL) { // we've got an error on Msg3
LOG_W(MAC, "[eNB %d] CC_id %d, RA %d ULSCH in error in round %d/%d\n", LOG_W(MAC, "[eNB %d] CC_id %d, RA %d ULSCH in error in round %d/%d\n",
enb_mod_idP, enb_mod_idP,
...@@ -333,26 +289,6 @@ rx_sdu(const module_id_t enb_mod_idP, ...@@ -333,26 +289,6 @@ rx_sdu(const module_id_t enb_mod_idP,
// first_rb = UE_list->UE_template[CC_idP][UE_id].first_rb_ul[harq_pid]; // UE_id = -1 !!!! // first_rb = UE_list->UE_template[CC_idP][UE_id].first_rb_ul[harq_pid]; // UE_id = -1 !!!!
ra[RA_id].msg3_round++; ra[RA_id].msg3_round++;
// LAD
/*
LOG_E(MAC, "Step 4\n");
LOG_W(MAC, "[MAC] [UEINFO1] UE_id = %d ; RNTI_ue_template = %x ; RNTI_sdu = %x\n",
UE_id,
UE_list->UE_template[CC_idP][UE_id].rnti,
current_rnti);
// LAD
LOG_W(MAC, "[MAC] UE_id == -1 and sduP == NULL : first_rb = %d ; scheduled_ul_bytes = %d ; TBS_UL = %d\n",
first_rb,
UE_list->UE_template[CC_idP][UE_id].scheduled_ul_bytes,
UE_list->UE_template[CC_idP][UE_id].TBS_UL[harq_pid]);
// LAD
LOG_W(MAC, "[MAC] [RAPROC] msg3_subframe = %d ; msg3_frame = %d\n",
ra[RA_id].Msg3_subframe,
ra[RA_id].Msg3_frame);
*/
/* Prepare handling of retransmission */ /* Prepare handling of retransmission */
get_Msg3allocret(&mac->common_channels[CC_idP], get_Msg3allocret(&mac->common_channels[CC_idP],
ra[RA_id].Msg3_subframe, ra[RA_id].Msg3_subframe,
...@@ -360,13 +296,6 @@ rx_sdu(const module_id_t enb_mod_idP, ...@@ -360,13 +296,6 @@ rx_sdu(const module_id_t enb_mod_idP,
&ra[RA_id].Msg3_frame, &ra[RA_id].Msg3_frame,
&ra[RA_id].Msg3_subframe); &ra[RA_id].Msg3_subframe);
// LAD
/*
LOG_W(MAC, "[MAC] [RAPROC] After update: msg3_subframe = %d ; msg3_frame = %d\n",
ra[RA_id].Msg3_subframe,
ra[RA_id].Msg3_frame);
*/
add_msg3(enb_mod_idP, CC_idP, &ra[RA_id], frameP, subframeP); add_msg3(enb_mod_idP, CC_idP, &ra[RA_id], frameP, subframeP);
} }
...@@ -422,17 +351,6 @@ rx_sdu(const module_id_t enb_mod_idP, ...@@ -422,17 +351,6 @@ rx_sdu(const module_id_t enb_mod_idP,
UE_list->UE_sched_ctrl[UE_id].round_UL[CC_idP][harq_pid] = 0; UE_list->UE_sched_ctrl[UE_id].round_UL[CC_idP][harq_pid] = 0;
} }
// LAD
/*
LOG_E(MAC, "Step 5\n");
LOG_W(MAC, "[MAC] [UEINFO2] UE_id = %d ; RNTI_ue_template = %x ; RNTI_sdu = %x ; frame = %d ; subframe = %d\n",
UE_id,
UE_list->UE_template[CC_idP][UE_id].rnti,
current_rnti,
frameP,
subframeP);
*/
/* Control element */ /* Control element */
for (int i = 0; i < num_ce; i++) { for (int i = 0; i < num_ce; i++) {
T(T_ENB_MAC_UE_UL_CE, T(T_ENB_MAC_UE_UL_CE,
...@@ -1278,44 +1196,27 @@ schedule_ulsch(module_id_t module_idP, ...@@ -1278,44 +1196,27 @@ schedule_ulsch(module_id_t module_idP,
LTE_DL_FRAME_PARMS *frame_parms = &(RC.eNB[module_idP][CC_id]->frame_parms); LTE_DL_FRAME_PARMS *frame_parms = &(RC.eNB[module_idP][CC_id]->frame_parms);
RA_t *ra_ptr = cc->ra; RA_t *ra_ptr = cc->ra;
/* Louis-Adrien: Only set for FDD (for the moment) /* From Louis-Adrien to François:
* Hard coded for prach-ConfigIndex = 0 and prach-Freqoffset = 2 * The comment bloc below is to configure with a command line.
* ToDo: The PRACH resources should be added with modularity (here?) * I took it from the equivalent part in the fairRR scheduler (around line 2578 in eNB_scheduler_fairRR.c).
* As said in the meeting, it seems to work only for small TBS.
* The cause of false RA still present with this fix is to investigate.
*
* Note: in the get_prach_prb_offset() function below, the last argument is frameP in eNB_scheduler_fairRR.c
* I think it should be sched_frame instead. This parameter has only impacts in case TDD and preamble format 4.
* To confirm.
*/ */
/* /*
if (cc->tdd_Config == NULL) { // FDD
if (((sched_frame %2) == 0) && sched_subframe == 1) { // RACH frame and subframe
if (first_rb[CC_id] < 8) {
n_rb_ul_tab = to_prb(cc->ul_Bandwidth); // return total number of PRB
if (n_rb_ul_tab >= 8) {
first_rb[CC_id] = 8;
} else {
return;
}
}
}
}
*/
if (is_prach_subframe(frame_parms, sched_frame, sched_subframe) == 1) { if (is_prach_subframe(frame_parms, sched_frame, sched_subframe) == 1) {
start_rb = get_prach_prb_offset(frame_parms, start_rb = get_prach_prb_offset(frame_parms,
frame_parms->prach_config_common.prach_ConfigInfo.prach_ConfigIndex, frame_parms->prach_config_common.prach_ConfigInfo.prach_ConfigIndex,
frame_parms->prach_config_common.prach_ConfigInfo.prach_FreqOffset, frame_parms->prach_config_common.prach_ConfigInfo.prach_FreqOffset,
0, // tdd_mapindex 0, // tdd_mapindex
frameP); // Nf --> shouldn't it be sched_frame ??? sched_frame); // Nf
first_rb[CC_id] = start_rb + nb_rb; first_rb[CC_id] = start_rb + nb_rb;
// LAD
/*
LOG_W(MAC, "[MAC] Config Index = %d ; Freq_offset = %d ; first_rb = %d ; subframe = %d ; sched_subframe = %d\n",
frame_parms->prach_config_common.prach_ConfigInfo.prach_ConfigIndex,
frame_parms->prach_config_common.prach_ConfigInfo.prach_FreqOffset,
first_rb[CC_id],
subframeP,
sched_subframe);
*/
} }
*/
/* /*
* Check if RA (Msg3) is active in this subframeP, if so skip the PRB used for Msg3 * Check if RA (Msg3) is active in this subframeP, if so skip the PRB used for Msg3
...@@ -1328,7 +1229,7 @@ schedule_ulsch(module_id_t module_idP, ...@@ -1328,7 +1229,7 @@ schedule_ulsch(module_id_t module_idP,
first_rb[CC_id] = ra_ptr->msg3_first_rb + ra_ptr->msg3_nb_rb; first_rb[CC_id] = ra_ptr->msg3_first_rb + ra_ptr->msg3_nb_rb;
} }
/* Louis-Adrien: I couldn't find an interdiction of multiple Msg3 scheduling /* Louis-Adrien: I couldn't find an interdiction of multiple Msg3 scheduling
* on the same resources. Also the performance improvement of breaking is low, * on the same time resources. Also the performance improvement of breaking is low,
* since we will loop until the end, most of the time. * since we will loop until the end, most of the time.
* I'm letting the break as a reminder, in case of misunderstanding the spec. * I'm letting the break as a reminder, in case of misunderstanding the spec.
*/ */
......
...@@ -444,7 +444,7 @@ uint8_t get_aggregation(uint8_t bw_index, uint8_t cqi, uint8_t dci_fmt); ...@@ -444,7 +444,7 @@ uint8_t get_aggregation(uint8_t bw_index, uint8_t cqi, uint8_t dci_fmt);
int8_t find_active_UEs_with_traffic(module_id_t module_idP); int8_t find_active_UEs_with_traffic(module_id_t module_idP);
void init_CCE_table(int module_idP, int CC_idP); void init_CCE_table(int *CCE_table);
int get_nCCE_offset(int *CCE_table, int get_nCCE_offset(int *CCE_table,
const unsigned char L, const unsigned char L,
...@@ -726,7 +726,7 @@ void ulsch_scheduler_pre_processor(module_id_t module_idP, int slice_idx, int fr ...@@ -726,7 +726,7 @@ void ulsch_scheduler_pre_processor(module_id_t module_idP, int slice_idx, int fr
uint16_t * first_rb); uint16_t * first_rb);
void store_ulsch_buffer(module_id_t module_idP, int frameP, void store_ulsch_buffer(module_id_t module_idP, int frameP,
sub_frame_t subframeP); sub_frame_t subframeP);
void sort_ue_ul(module_id_t module_idP, int frameP, sub_frame_t subframeP); void sort_ue_ul(module_id_t module_idP, int slice_idx, int frameP, sub_frame_t subframeP, rnti_t *rntiTable);
void assign_max_mcs_min_rb(module_id_t module_idP, int slice_idx, int frameP, void assign_max_mcs_min_rb(module_id_t module_idP, int slice_idx, int frameP,
sub_frame_t subframeP, uint16_t * first_rb); sub_frame_t subframeP, uint16_t * first_rb);
void adjust_bsr_info(int buffer_occupancy, uint16_t TBS, void adjust_bsr_info(int buffer_occupancy, uint16_t TBS,
......
This diff is collapsed.
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