diff --git a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c index ea10f5a9fd95c039568d766c27b22e08781392e1..b1410003c2c7ab90461f777de1abc1c8cbc322fa 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c +++ b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c @@ -525,54 +525,6 @@ uint32_t bytes_to_bsr_index(int32_t nbytes) return(i-1); } -/* -void adjust_bsr_info(int buffer_occupancy, - uint16_t TBS, - UE_TEMPLATE *UE_template) -{ - - uint32_t tmp_bsr; - - // could not serve all the uplink traffic - if (buffer_occupancy > 0 ) { - if (BSR_TABLE[UE_template->bsr_info[LCGID0]] <= TBS ) { - tmp_bsr = BSR_TABLE[UE_template->bsr_info[LCGID0]]; // serving this amout of bytes - UE_template->bsr_info[LCGID0] = 0; - - if (BSR_TABLE[UE_template->bsr_info[LCGID1]] <= (TBS-tmp_bsr)) { - tmp_bsr += BSR_TABLE[UE_template->bsr_info[LCGID1]]; - UE_template->bsr_info[LCGID1] = 0; - - if (BSR_TABLE[UE_template->bsr_info[LCGID2]] <= (TBS-tmp_bsr)) { - tmp_bsr += BSR_TABLE[UE_template->bsr_info[LCGID2]]; - UE_template->bsr_info[LCGID2] = 0; - - if (BSR_TABLE[UE_template->bsr_info[LCGID3]] <= (TBS-tmp_bsr)) { - tmp_bsr += BSR_TABLE[UE_template->bsr_info[LCGID3]]; - UE_template->bsr_info[LCGID3] = 0; - } else { - UE_template->bsr_info[LCGID3] = bytes_to_bsr_index((int32_t)BSR_TABLE[UE_template->bsr_info[LCGID3]] - ((int32_t) TBS - (int32_t)tmp_bsr)); - } - } else { - UE_template->bsr_info[LCGID2] = bytes_to_bsr_index((int32_t)BSR_TABLE[UE_template->bsr_info[LCGID2]] - ((int32_t)TBS - (int32_t)tmp_bsr)); - } - } else { - UE_template->bsr_info[LCGID1] = bytes_to_bsr_index((int32_t)BSR_TABLE[UE_template->bsr_info[LCGID1]] - ((int32_t)TBS - (int32_t)tmp_bsr)); - } - } else { - UE_template->bsr_info[LCGID0] = bytes_to_bsr_index((int32_t)BSR_TABLE[UE_template->bsr_info[LCGID0]] - (int32_t)TBS); - } - } else { // we have flushed all buffers so clear bsr - UE_template->bsr_info[LCGID0] = 0; - UE_template->bsr_info[LCGID1] = 0; - UE_template->bsr_info[LCGID2] = 0; - UE_template->bsr_info[LCGID3] = 0; - } - - -} -*/ - void add_ue_ulsch_info(module_id_t module_idP, int CC_id, int UE_id, sub_frame_t subframeP, UE_ULSCH_STATUS status) { @@ -584,66 +536,6 @@ void add_ue_ulsch_info(module_id_t module_idP, int CC_id, int UE_id, sub_frame_t } -// This seems not to be used anymore -/* -int schedule_next_ulue(module_id_t module_idP, int UE_id, sub_frame_t subframeP){ - - int next_ue; - - // first phase: scheduling for ACK - switch (subframeP) { - // scheduling for subframeP 2: for scheduled user during subframeP 5 and 6 - case 8: - if ((eNB_dlsch_info[module_idP][UE_id].status == S_DL_SCHEDULED) && - (eNB_dlsch_info[module_idP][UE_id].subframe == 5 || eNB_dlsch_info[module_idP][UE_id].subframe == 6)){ - // set the downlink status - eNB_dlsch_info[module_idP][UE_id].status = S_DL_BUFFERED; - return UE_id; - } - break; - // scheduling for subframeP 3: for scheduled user during subframeP 7 and 8 - case 9: - if ((eNB_dlsch_info[module_idP][UE_id].status == S_DL_SCHEDULED) && - (eNB_dlsch_info[module_idP][UE_id].subframe == 7 || eNB_dlsch_info[module_idP][UE_id].subframe == 8)){ - eNB_dlsch_info[module_idP][UE_id].status = S_DL_BUFFERED; - return UE_id; - } - break; - // scheduling UL subframeP 4: for scheduled user during subframeP 9 and 0 - case 0 : - if ((eNB_dlsch_info[module_idP][UE_id].status == S_DL_SCHEDULED) && - (eNB_dlsch_info[module_idP][UE_id].subframe == 9 || eNB_dlsch_info[module_idP][UE_id].subframe == 0)){ - eNB_dlsch_info[module_idP][UE_id].status = S_DL_BUFFERED; - return UE_id; - } - break; - default: - break; - } - - // second phase - for (next_ue=0; next_ue <NUMBER_OF_UE_MAX; next_ue++ ){ - - if (eNB_ulsch_info[module_idP][next_ue].status == S_UL_WAITING ) - return next_ue; - else if (eNB_ulsch_info[module_idP][next_ue].status == S_UL_SCHEDULED){ - eNB_ulsch_info[module_idP][next_ue].status = S_UL_BUFFERED; - } - } - for (next_ue=0; next_ue <NUMBER_OF_UE_MAX; next_ue++ ){ - if (eNB_ulsch_info[module_idP][next_ue].status != S_UL_NONE )// do this just for active UEs - eNB_ulsch_info[module_idP][next_ue].status = S_UL_WAITING; - } - next_ue = 0; - return next_ue; - -} - */ - - - - - unsigned char *parse_ulsch_header(unsigned char *mac_header, unsigned char *num_ce, unsigned char *num_sdu, @@ -957,7 +849,7 @@ void schedule_ulsch_rnti(module_id_t module_idP, // buffer_occupancy = UE_template->ul_total_buffer; while (((rb_table[rb_table_index]>(frame_parms->N_RB_UL-1-first_rb[CC_id])) || - (rb_table[rb_table_index]>39)) && + (rb_table[rb_table_index]>45)) && (rb_table_index>0)) { rb_table_index--; } @@ -984,12 +876,6 @@ void schedule_ulsch_rnti(module_id_t module_idP, first_rb[CC_id],rb_table[rb_table_index], rb_table_index,TBS,harq_pid); - /* - // Adjust BSR entries for LCGIDs - adjust_bsr_info(buffer_occupancy, - TBS, - UE_template); - */ // adjust total UL buffer status by TBS, wait for UL sdus to do final update LOG_D(MAC,"[eNB %d] CC_id %d UE %d/%x : adjusting ul_total_buffer, old %d, TBS %d\n", module_idP,CC_id,UE_id,rnti,UE_template->ul_total_buffer,TBS); if (UE_template->ul_total_buffer > TBS) @@ -998,16 +884,8 @@ void schedule_ulsch_rnti(module_id_t module_idP, UE_template->ul_total_buffer = 0; LOG_D(MAC,"ul_total_buffer, new %d\n", UE_template->ul_total_buffer); // Cyclic shift for DM RS - if(cooperation_flag == 2) { - if(UE_id == 1) { // For Distriibuted Alamouti, cyclic shift applied to 2nd UE - cshift = 1; - } else { - cshift = 0; - } - } else { - cshift = 0;// values from 0 to 7 can be used for mapping the cyclic shift (36.211 , Table 5.5.2.1.1-1) - } - + cshift = 0;// values from 0 to 7 can be used for mapping the cyclic shift (36.211 , Table 5.5.2.1.1-1) + if (frame_parms->frame_type == TDD) { switch (frame_parms->N_RB_UL) { case 6: diff --git a/openair2/LAYER2/MAC/pre_processor.c b/openair2/LAYER2/MAC/pre_processor.c index 2acda1c746fed6e66f19a7e40d7ae8336807ab6c..3cbecbb69cb75c4a9ecd2db5071c64bce92f1d0a 100644 --- a/openair2/LAYER2/MAC/pre_processor.c +++ b/openair2/LAYER2/MAC/pre_processor.c @@ -47,6 +47,7 @@ #include "LAYER2/MAC/proto.h" #include "LAYER2/MAC/extern.h" #include "UTIL/LOG/log.h" +#include "UTIL/LOG/vcd_signal_dumper.h" #include "UTIL/OPT/opt.h" #include "OCG.h" #include "OCG_extern.h" @@ -807,6 +808,9 @@ void dlsch_scheduler_pre_processor_reset (int module_idP, ue_sched_ctl->ta_timer--; ue_sched_ctl->ta_update =0; // don't trigger a timing advance command } + if (UE_id==0) { + VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_UE0_TIMING_ADVANCE,ue_sched_ctl->ta_update); + } nb_rbs_required[CC_id][UE_id]=0; ue_sched_ctl->pre_nb_available_rbs[CC_id] = 0; ue_sched_ctl->dl_pow_off[CC_id] = 2; @@ -937,9 +941,6 @@ void ulsch_scheduler_pre_processor(module_id_t module_idP, UE_TEMPLATE *UE_template = 0; LTE_DL_FRAME_PARMS *frame_parms = 0; - // LOG_I(MAC,"store ulsch buffers\n"); - // convert BSR to bytes for comparison with tbs - // store_ulsch_buffer(module_idP,frameP, subframeP); //LOG_I(MAC,"assign max mcs min rb\n"); // maximize MCS and then allocate required RB according to the buffer occupancy with the limit of max available UL RB @@ -1097,51 +1098,6 @@ void ulsch_scheduler_pre_processor(module_id_t module_idP, } } -/* -void store_ulsch_buffer(module_id_t module_idP, int frameP, sub_frame_t subframeP) -{ - - int UE_id,pCC_id,lcgid; - UE_list_t *UE_list = &eNB_mac_inst[module_idP].UE_list; - UE_TEMPLATE *UE_template; - - for (UE_id=UE_list->head_ul; UE_id>=0; UE_id=UE_list->next_ul[UE_id]) { - - - if (UE_list->UE_sched_ctrl[UE_id].ul_out_of_sync == 1) - continue; - - UE_template = &UE_list->UE_template[UE_PCCID(module_idP,UE_id)][UE_id]; - //LOG_I(MAC,"[UE %d next %d] SR is %d\n",UE_id, UE_list->next_ul[UE_id], UE_template->ul_SR); - - UE_template->ul_total_buffer=0; - - for (lcgid=0; lcgid<MAX_NUM_LCGID; lcgid++) { - UE_template->ul_buffer_info[lcgid]=BSR_TABLE[UE_template->bsr_info[lcgid]]; - UE_template->ul_total_buffer+= UE_template->ul_buffer_info[lcgid]; // apply traffic aggregtaion if packets are small - // UE_template->ul_buffer_creation_time_max=cmax(UE_template->ul_buffer_creation_time_max, frame_cycle*1024 + frameP-UE_template->ul_buffer_creation_time[lcgid])); - } - - if ( UE_template->ul_total_buffer >0) - LOG_D(MAC,"[eNB %d] Frame %d subframe %d UE %d CC id %d: LCGID0 %d, LCGID1 %d, LCGID2 %d LCGID3 %d, BO %d\n", - module_idP, frameP,subframeP, UE_id, UE_PCCID(module_idP,UE_id), - UE_template->ul_buffer_info[LCGID0], - UE_template->ul_buffer_info[LCGID1], - UE_template->ul_buffer_info[LCGID2], - UE_template->ul_buffer_info[LCGID3], - UE_template->ul_total_buffer); - else if (UE_is_to_be_scheduled(module_idP,UE_PCCID(module_idP,UE_id),UE_id) > 0 ) { - if (UE_template->ul_total_buffer == 0 ) { - UE_template->ul_total_buffer = BSR_TABLE[11]; - } - - LOG_D(MAC,"[eNB %d] Frame %d subframe %d UE %d CC id %d: SR active, set BO to %d \n", - module_idP, frameP,subframeP, UE_id, UE_PCCID(module_idP,UE_id), - UE_template->ul_total_buffer); - } - } -} -*/ void assign_max_mcs_min_rb(module_id_t module_idP,int frameP, sub_frame_t subframeP, uint16_t *first_rb) diff --git a/openair2/UTIL/LOG/vcd_signal_dumper.c b/openair2/UTIL/LOG/vcd_signal_dumper.c index abf552c633b44cb55b1fde06c32a0715c7bb0d30..4038c33bda3e14e8816dd41b24d500ef8179aedd 100644 --- a/openair2/UTIL/LOG/vcd_signal_dumper.c +++ b/openair2/UTIL/LOG/vcd_signal_dumper.c @@ -122,6 +122,7 @@ const char* eurecomVariablesNames[] = { "ue0_BSR", "ue0_BO", "ue0_scheduled", + "ue0_timing_advance", "ue0_SR_ENERGY", "ue0_SR_THRES", "ue0_rssi0", diff --git a/openair2/UTIL/LOG/vcd_signal_dumper.h b/openair2/UTIL/LOG/vcd_signal_dumper.h index 6eb125786f9ac8b2d10453a5cd9de0d7aea0be0d..24a0efee2794ba260a7d5e8fd1f7fa78b3d00372 100644 --- a/openair2/UTIL/LOG/vcd_signal_dumper.h +++ b/openair2/UTIL/LOG/vcd_signal_dumper.h @@ -94,6 +94,7 @@ typedef enum { VCD_SIGNAL_DUMPER_VARIABLES_UE0_BSR, VCD_SIGNAL_DUMPER_VARIABLES_UE0_BO, VCD_SIGNAL_DUMPER_VARIABLES_UE0_SCHEDULED, + VCD_SIGNAL_DUMPER_VARIABLES_UE0_TIMING_ADVANCE, VCD_SIGNAL_DUMPER_VARIABLES_UE0_SR_ENERGY, VCD_SIGNAL_DUMPER_VARIABLES_UE0_SR_THRES, VCD_SIGNAL_DUMPER_VARIABLES_UE0_RSSI0, diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210.conf index 72047f44de697396ef22c0acc8ff45073aee08df..7e17a07512a3aa8902a9c17aadc897d33ca7e060 100644 --- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210.conf +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210.conf @@ -140,10 +140,10 @@ eNBs = NETWORK_INTERFACES : { ENB_INTERFACE_NAME_FOR_S1_MME = "eth0"; - ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.213/24"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.215/24"; ENB_INTERFACE_NAME_FOR_S1U = "eth0"; - ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.213/24"; + ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.215/24"; ENB_PORT_FOR_S1U = 2152; # Spec 2152 }; diff --git a/targets/RT/USER/eNB_usrp.gtkw b/targets/RT/USER/eNB_usrp.gtkw index 8722fd14b0b8da9da6ada453f4ce6232a246c5c1..b7810896d576763a51ac8f5ad3fd00e3c3d62924 100644 --- a/targets/RT/USER/eNB_usrp.gtkw +++ b/targets/RT/USER/eNB_usrp.gtkw @@ -1,15 +1,15 @@ [*] [*] GTKWave Analyzer v3.3.58 (w)1999-2014 BSI -[*] Mon Mar 14 12:40:13 2016 +[*] Thu Mar 17 23:50:10 2016 [*] [dumpfile] "/tmp/openair_dump_eNB.vcd" -[dumpfile_mtime] "Mon Mar 14 11:08:33 2016" -[dumpfile_size] 54022345 -[savefile] "/home/abeille/openairinterface5g/targets/RT/USER/eNB_usrp.gtkw" -[timestart] 12592600000 +[dumpfile_mtime] "Thu Mar 17 23:49:36 2016" +[dumpfile_size] 236045612 +[savefile] "/home/papillon/openairinterface5g/targets/RT/USER/eNB_usrp.gtkw" +[timestart] 10372000000 [size] 1535 876 [pos] -1 -1 -*-25.793451 12619679774 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 +*-29.793451 12619679774 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 [sst_width] 284 [signals_width] 238 [sst_expanded] 1 @@ -54,11 +54,11 @@ functions.phy_procedures_eNb_rx variables.ue0_BO[63:0] @420 variables.ue0_BSR[63:0] +@421 +variables.ue0_timing_advance[63:0] @28 functions.macxface_initiate_ra_proc -@29 functions.macxface_terminate_ra_proc -@28 functions.macxface_SR_indication @420 variables.ue0_SR_ENERGY[63:0]