From 036870ad0da23dc46cea656c67954bf299972159 Mon Sep 17 00:00:00 2001 From: Navid Nikaein <navid.nikaein@eurecom.fr> Date: Mon, 25 Aug 2014 14:50:52 +0000 Subject: [PATCH] fix the issue with the pre-ci tests git-svn-id: http://svn.eurecom.fr/openair4G/trunk@5756 818b1a75-f10b-46b9-bf7c-635c3b92a50f --- openair-cn/GTPV1-U/gtpv1u.h | 2 +- openair-cn/GTPV1-U/nw-gtpv1u/src/NwGtpv1u.c | 2 +- openair-cn/SCTP/sctp_eNB_task.c | 2 +- openair-cn/UDP/udp_eNB_task.c | 23 ++++++++------- openair1/SCHED/phy_procedures_lte_ue.c | 28 +++++++++---------- openair2/LAYER2/MAC/eNB_scheduler_dlsch.c | 21 ++++++++++---- .../LAYER2/MAC/eNB_scheduler_primitives.c | 2 ++ openair2/LAYER2/MAC/main.c | 1 + openair2/PHY_INTERFACE/defs.h | 3 ++ targets/TEST/OAI/case02.py | 6 ++-- targets/TEST/OAI/test01.py | 6 +++- 11 files changed, 57 insertions(+), 39 deletions(-) diff --git a/openair-cn/GTPV1-U/gtpv1u.h b/openair-cn/GTPV1-U/gtpv1u.h index b83aabbb79..108208ffdf 100644 --- a/openair-cn/GTPV1-U/gtpv1u.h +++ b/openair-cn/GTPV1-U/gtpv1u.h @@ -40,7 +40,7 @@ * otherwise use standard fprintf as logger. */ #if defined(ENB_MODE) -# define GTPU_DEBUG(x, args...) LOG_I(GTPU, x, ##args) +# define GTPU_DEBUG(x, args...) LOG_D(GTPU, x, ##args) # define GTPU_INFO(x, args...) LOG_I(GTPU, x, ##args) # define GTPU_WARNING(x, args...) LOG_W(GTPU, x, ##args) # define GTPU_ERROR(x, args...) LOG_E(GTPU, x, ##args) diff --git a/openair-cn/GTPV1-U/nw-gtpv1u/src/NwGtpv1u.c b/openair-cn/GTPV1-U/nw-gtpv1u/src/NwGtpv1u.c index 7a8d269b0c..91d9fdc320 100644 --- a/openair-cn/GTPV1-U/nw-gtpv1u/src/NwGtpv1u.c +++ b/openair-cn/GTPV1-U/nw-gtpv1u/src/NwGtpv1u.c @@ -782,7 +782,7 @@ nwGtpv1uProcessUdpReq( NW_IN NwGtpv1uStackHandleT hGtpuStackHandle, break; case NW_GTP_GPDU: - GTPU_DEBUG("NW_GTP_GPDU"); + GTPU_DEBUG("NW_GTP_GPDU: DATA COMING FROM UDP\n"); ret = nwGtpv1uProcessGpdu(thiz, udpData, udpDataLen, peerIp); break; diff --git a/openair-cn/SCTP/sctp_eNB_task.c b/openair-cn/SCTP/sctp_eNB_task.c index 4b43e6721f..831b8f08cc 100644 --- a/openair-cn/SCTP/sctp_eNB_task.c +++ b/openair-cn/SCTP/sctp_eNB_task.c @@ -614,7 +614,7 @@ inline void sctp_eNB_read_from_socket(struct sctp_cnx_list_elm_s *sctp_cnx) free(sctp_cnx); } else { SCTP_DEBUG("An error occured during read\n"); - SCTP_ERROR("sctp_recvmsg: %s:%d\n", strerror(errno), errno); + SCTP_ERROR("sctp_recvmsg (fd %d, len %d ): %s:%d\n", sctp_cnx->sd, n, strerror(errno), errno); } return; } else if (n == 0) { diff --git a/openair-cn/UDP/udp_eNB_task.c b/openair-cn/UDP/udp_eNB_task.c index 3abea4b6b1..99ccc9ae3d 100644 --- a/openair-cn/UDP/udp_eNB_task.c +++ b/openair-cn/UDP/udp_eNB_task.c @@ -134,7 +134,7 @@ void udp_eNB_process_file_descriptors(struct epoll_event *events, int nb_events) for (i = 0; i < nb_events; i++) { STAILQ_FOREACH(udp_sock_p, &udp_socket_list, entries) { if (udp_sock_p->sd == events[i].data.fd) { - LOG_I(UDP_, "Found matching task desc\n"); + LOG_D(UDP_, "Found matching task desc\n"); udp_eNB_receiver(udp_sock_p); break; } @@ -229,9 +229,9 @@ udp_eNB_send_to( void udp_eNB_receiver(struct udp_socket_desc_s *udp_sock_pP) { uint8_t l_buffer[2048]; - int n; - socklen_t from_len; - struct sockaddr_in addr; + int n; + socklen_t from_len; + struct sockaddr_in addr; MessageDef *message_p = NULL; udp_data_ind_t *udp_data_ind_p = NULL; uint8_t *forwarded_buffer = NULL; @@ -239,13 +239,12 @@ void udp_eNB_receiver(struct udp_socket_desc_s *udp_sock_pP) if (1) { from_len = (socklen_t)sizeof(struct sockaddr_in); - LOG_I(UDP_, "before recvfrom sd %d\n", udp_sock_pP->sd); if ((n = recvfrom(udp_sock_pP->sd, l_buffer, sizeof(l_buffer), 0, (struct sockaddr *)&addr, &from_len)) < 0) { LOG_E(UDP_, "Recvfrom failed %s\n", strerror(errno)); return; } else if (n == 0){ - LOG_I(UDP_, "Recvfrom returned 0\n"); + LOG_W(UDP_, "Recvfrom returned 0\n"); return; } else{ forwarded_buffer = calloc(n, sizeof(uint8_t)); @@ -289,7 +288,7 @@ void *udp_eNB_task(void *args_p) itti_mark_task_ready(TASK_UDP); while(1) { itti_receive_msg(TASK_UDP, &received_message_p); - LOG_W(UDP_, "Got message %p\n", received_message_p); + LOG_D(UDP_, "Got message %p\n", &received_message_p); if (received_message_p != NULL) { msg_name = ITTI_MSG_NAME (received_message_p); @@ -298,7 +297,7 @@ void *udp_eNB_task(void *args_p) switch (ITTI_MSG_ID(received_message_p)) { case UDP_INIT: { - LOG_W(UDP_, "Received UDP_INIT\n"); + LOG_D(UDP_, "Received UDP_INIT\n"); udp_init_t *udp_init_p; udp_init_p = &received_message_p->ittiMsg.udp_init; udp_eNB_create_socket( @@ -308,7 +307,7 @@ void *udp_eNB_task(void *args_p) } break; case UDP_DATA_REQ: { - LOG_W(UDP_, "Received UDP_DATA_REQ\n"); + LOG_D(UDP_, "Received UDP_DATA_REQ\n"); int udp_sd = -1; ssize_t bytes_written; @@ -341,7 +340,7 @@ void *udp_eNB_task(void *args_p) udp_sd = udp_sock_p->sd; pthread_mutex_unlock(&udp_socket_list_mutex); - LOG_W(UDP_, "[%d] Sending message of size %u to "IPV4_ADDR" and port %u\n", + LOG_D(UDP_, "[%d] Sending message of size %u to "IPV4_ADDR" and port %u\n", udp_sd, udp_data_req_p->buffer_length, IPV4_ADDR_FORMAT(udp_data_req_p->peer_address), @@ -381,11 +380,11 @@ on_error: nb_events = itti_get_events(TASK_UDP, &events); /* Now handle notifications for other sockets */ if (nb_events > 0) { - LOG_W(UDP_, "UDP task Process %d events\n",nb_events); + LOG_D(UDP_, "UDP task Process %d events\n",nb_events); udp_eNB_process_file_descriptors(events, nb_events); } } - LOG_W(UDP_, "Task UDP eNB exiting\n"); + LOG_N(UDP_, "Task UDP eNB exiting\n"); return NULL; } diff --git a/openair1/SCHED/phy_procedures_lte_ue.c b/openair1/SCHED/phy_procedures_lte_ue.c index 0957040e2d..7a0c348ed3 100755 --- a/openair1/SCHED/phy_procedures_lte_ue.c +++ b/openair1/SCHED/phy_procedures_lte_ue.c @@ -15,8 +15,8 @@ You should have received a copy of the GNU General Public License along with OpenAirInterface.The full GNU General Public License is - included in this distribution in the file called "COPYING". If not, - see <http://www.gnu.org/licenses/>. + included in this distribution in the file called "COPYING". If not, + see <http://www.gnu.org/licenses/>. Contact Information OpenAirInterface Admin: openair_admin@eurecom.fr @@ -3306,9 +3306,9 @@ void phy_UE_lte_measurement_thresholds_test_and_report(instance_t instanceP, ral void phy_UE_lte_check_measurement_thresholds(instance_t instanceP, ral_threshold_phy_t* threshold_phy_pP) { unsigned int mod_id; - + int CC_id = 0; // this should become the function argument, requested by the upper layers. + mod_id = instanceP - NB_eNB_INST; - switch (threshold_phy_pP->link_param.link_param_type.choice) { case RAL_LINK_PARAM_TYPE_CHOICE_GEN: @@ -3324,23 +3324,19 @@ void phy_UE_lte_check_measurement_thresholds(instance_t instanceP, ral_threshold break; case RAL_LINK_PARAM_GEN_THROUGHPUT: break; - case RAL_LINK_PARAM_GEN_PACKET_ERROR_RATE: - break; - default:; - } break; case RAL_LINK_PARAM_TYPE_CHOICE_LTE: switch (threshold_phy_pP->link_param.link_param_type._union.link_param_gen) { case RAL_LINK_PARAM_LTE_UE_RSRP: // phy_UE_lte_measurement_thresholds_test_and_report(instanceP, threshold_phy_pP, PHY_vars_UE_g[mod_id]->PHY_measurements.rx_rssi_dBm[0]); - phy_UE_lte_measurement_thresholds_test_and_report(instanceP, threshold_phy_pP, PHY_vars_UE_g[mod_id]->PHY_measurements.rsrp[0]); + phy_UE_lte_measurement_thresholds_test_and_report(instanceP, threshold_phy_pP, PHY_vars_UE_g[mod_id][CC_id]->PHY_measurements.rsrp[0]); break; case RAL_LINK_PARAM_LTE_UE_RSRQ: - phy_UE_lte_measurement_thresholds_test_and_report(instanceP, threshold_phy_pP, PHY_vars_UE_g[mod_id]->PHY_measurements.rsrq[0]); + phy_UE_lte_measurement_thresholds_test_and_report(instanceP, threshold_phy_pP, PHY_vars_UE_g[mod_id][CC_id]->PHY_measurements.rsrq[0]); break; case RAL_LINK_PARAM_LTE_UE_CQI: - phy_UE_lte_measurement_thresholds_test_and_report(instanceP, threshold_phy_pP, PHY_vars_UE_g[mod_id]->PHY_measurements.wideband_cqi_avg[0]); + phy_UE_lte_measurement_thresholds_test_and_report(instanceP, threshold_phy_pP, PHY_vars_UE_g[mod_id][CC_id]->PHY_measurements.wideband_cqi_avg[0]); break; case RAL_LINK_PARAM_LTE_AVAILABLE_BW: break; @@ -3365,6 +3361,7 @@ void phy_UE_lte_check_measurement_thresholds(instance_t instanceP, ral_threshold break; default:; + } } } # endif @@ -3378,6 +3375,7 @@ void phy_UE_lte_check_measurement_thresholds(instance_t instanceP, ral_threshold instance_t instance; unsigned int Mod_id; int result; + int CC_id =0; #endif #undef DEBUG_PHY_PROC @@ -3442,7 +3440,7 @@ void phy_UE_lte_check_measurement_thresholds(instance_t instanceP, ral_threshold { hashtable_rc_t hashtable_rc; - hashtable_rc = hashtable_is_key_exists(PHY_vars_UE_g[Mod_id]->ral_thresholds_timed, (uint64_t)(TIMER_HAS_EXPIRED(msg_p).timer_id)); + hashtable_rc = hashtable_is_key_exists(PHY_vars_UE_g[Mod_id][CC_id]->ral_thresholds_timed, (uint64_t)(TIMER_HAS_EXPIRED(msg_p).timer_id)); if (hashtable_rc == HASH_TABLE_OK) { phy_UE_lte_check_measurement_thresholds(instance, (ral_threshold_phy_t*)TIMER_HAS_EXPIRED(msg_p).arg); } @@ -3483,14 +3481,14 @@ void phy_UE_lte_check_measurement_thresholds(instance_t instanceP, ral_threshold switch (PHY_MEAS_THRESHOLD_REQ(msg_p).cfg_param.link_param_type.choice) { case RAL_LINK_PARAM_TYPE_CHOICE_GEN: SLIST_INSERT_HEAD( - &PHY_vars_UE_g[Mod_id]->ral_thresholds_gen_polled[PHY_MEAS_THRESHOLD_REQ(msg_p).cfg_param.link_param_type._union.link_param_gen], + &PHY_vars_UE_g[Mod_id][CC_id]->ral_thresholds_gen_polled[PHY_MEAS_THRESHOLD_REQ(msg_p).cfg_param.link_param_type._union.link_param_gen], threshold_phy_p, ral_thresholds); break; case RAL_LINK_PARAM_TYPE_CHOICE_LTE: SLIST_INSERT_HEAD( - &PHY_vars_UE_g[Mod_id]->ral_thresholds_lte_polled[PHY_MEAS_THRESHOLD_REQ(msg_p).cfg_param.link_param_type._union.link_param_lte], + &PHY_vars_UE_g[Mod_id][CC_id]->ral_thresholds_lte_polled[PHY_MEAS_THRESHOLD_REQ(msg_p).cfg_param.link_param_type._union.link_param_lte], threshold_phy_p, ral_thresholds); break; @@ -3512,7 +3510,7 @@ void phy_UE_lte_check_measurement_thresholds(instance_t instanceP, ral_threshold &timer_id); if (res == 0) { - hashtable_rc = hashtable_insert(PHY_vars_UE_g[Mod_id]->ral_thresholds_timed, (uint64_t )timer_id, (void*)threshold_phy_p); + hashtable_rc = hashtable_insert(PHY_vars_UE_g[Mod_id][CC_id]->ral_thresholds_timed, (uint64_t )timer_id, (void*)threshold_phy_p); if (hashtable_rc == HASH_TABLE_OK) { threshold_phy_p->timer_id = timer_id; } else { diff --git a/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c b/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c index 56ceddccdb..ff6a6d0b51 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c +++ b/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c @@ -325,6 +325,8 @@ void schedule_ue_spec(module_id_t module_idP, eNB_MAC_INST *eNB = &eNB_mac_inst[module_idP]; UE_list_t *UE_list = &eNB->UE_list; LTE_DL_FRAME_PARMS *frame_parms[MAX_NUM_CCs]; + int continue_flag=0; + if (UE_list->head==-1) return; @@ -376,21 +378,29 @@ void schedule_ue_spec(module_id_t module_idP, if (rnti==0) { LOG_N(MAC,"Cannot find rnti for UE_id %d (num_UEs %d)\n",UE_id,UE_list->num_UEs); // mac_xface->macphy_exit("Cannot find rnti for UE_id"); - continue; + continue_flag=1; } if (eNB_UE_stats==NULL) { LOG_N(MAC,"[eNB] Cannot find eNB_UE_stats\n"); // mac_xface->macphy_exit("[MAC][eNB] Cannot find eNB_UE_stats\n"); - continue; + continue_flag=1; } if ((pre_nb_available_rbs[CC_id][UE_id] == 0) || (nCCE[CC_id] < (1<<aggregation))) { LOG_D(MAC,"[eNB %d] Frame %d : no RB allocated for UE %d on CC_id %d: continue \n", module_idP, frameP, UE_id, CC_id, nb_rb_used0[CC_id], pre_nb_available_rbs[CC_id][UE_id], nCCE[CC_id], aggregation); //if(mac_xface->get_transmission_mode(module_idP,rnti)==5) - continue; //to next user (there might be rbs availiable for other UEs in TM5 + continue_flag=1; //to next user (there might be rbs availiable for other UEs in TM5 // else // break; } + if (continue_flag == 1 ){ + add_ue_dlsch_info(module_idP, + CC_id, + UE_id, + subframeP, + S_DL_NONE); + continue; + } if (frame_parms[CC_id]->frame_type == TDD) set_ue_dai (subframeP, frame_parms[CC_id]->tdd_config, @@ -430,9 +440,10 @@ void schedule_ue_spec(module_id_t module_idP, UE_list->UE_template[CC_id][UE_id].rballoc_subband[harq_pid][j] = 0; } - LOG_D(MAC,"[eNB %d] Frame %d: Scheduling UE %d on CC_id %d (rnti %x, harq_pid %d, round %d, available rb %d, cqi %d, mcs %d, rrc status %d)\n", + LOG_D(MAC,"[eNB %d] Frame %d: Scheduling UE %d on CC_id %d (rnti %x, harq_pid %d, round %d, rb %d, cqi %d, mcs %d, ncc %d, rrc %d)\n", module_idP, frameP, UE_id,CC_id,rnti,harq_pid, round,nb_available_rb, eNB_UE_stats->DL_cqi[0], eNB_UE_stats->dlsch_mcs1, + nCCE[CC_id], UE_list->eNB_UE_stats[CC_id][UE_id].rrc_status); @@ -1718,7 +1729,7 @@ void fill_DLSCH_dci(module_id_t module_idP,frame_t frameP, sub_frame_t subframeP case 1: case 2: - LOG_D(MAC,"[USER-PLANE DEFAULT DRB] Adding UE spec DCI for %d PRBS (%x) => ",nb_rb,rballoc); + LOG_D(MAC,"[eNB %d] Adding UE %d spec DCI for %d PRBS (rb alloc: %x) \n",module_idP, UE_id, nb_rb,rballoc); if (PHY_vars_eNB_g[module_idP][CC_id]->lte_frame_parms.frame_type == TDD) { switch (PHY_vars_eNB_g[module_idP][CC_id]->lte_frame_parms.N_RB_DL) { case 6: diff --git a/openair2/LAYER2/MAC/eNB_scheduler_primitives.c b/openair2/LAYER2/MAC/eNB_scheduler_primitives.c index 5bc6be53e7..dfa1080e16 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler_primitives.c +++ b/openair2/LAYER2/MAC/eNB_scheduler_primitives.c @@ -540,6 +540,8 @@ void add_ue_spec_dci(DCI_PDU *DCI_pdu,void *pdu,rnti_t rnti,unsigned char dci_si DCI_pdu->dci_alloc[DCI_pdu->Num_common_dci+DCI_pdu->Num_ue_spec_dci].ra_flag = ra_flag; DCI_pdu->Num_ue_spec_dci++; + + LOG_D(MAC,"add ue specific dci format %d for rnti %d \n",dci_fmt,rnti); } diff --git a/openair2/LAYER2/MAC/main.c b/openair2/LAYER2/MAC/main.c index cb849cb38f..ad0a8811b1 100644 --- a/openair2/LAYER2/MAC/main.c +++ b/openair2/LAYER2/MAC/main.c @@ -467,6 +467,7 @@ int l2_init(LTE_DL_FRAME_PARMS *frame_parms,int eMBMS_active, uint8_t cba_group_ mac_xface->get_TBS_DL = get_TBS_DL; mac_xface->get_TBS_UL = get_TBS_UL; mac_xface->get_nCCE_max = get_nCCE_max; + mac_xface->get_nCCE_offset = get_nCCE_offset; mac_xface->get_ue_mode = get_ue_mode; mac_xface->phy_config_sib1_eNB = phy_config_sib1_eNB; mac_xface->phy_config_sib1_ue = phy_config_sib1_ue; diff --git a/openair2/PHY_INTERFACE/defs.h b/openair2/PHY_INTERFACE/defs.h index 16943b529f..d1d27478c5 100755 --- a/openair2/PHY_INTERFACE/defs.h +++ b/openair2/PHY_INTERFACE/defs.h @@ -241,6 +241,9 @@ typedef struct /// Function to retrieve number of CCE uint16_t (*get_nCCE_max)(module_id_t Mod_id,uint8_t CC_id); + /// Function to get the CCE offset + int (*get_nCCE_offset)(unsigned char L, int nCCE, int common_dci, unsigned short rnti, unsigned char subframe); + /// Function to retrieve number of PRB in an rb_alloc uint32_t (*get_nb_rb)(uint8_t ra_header, uint32_t rb_alloc, int n_rb_dl); diff --git a/targets/TEST/OAI/case02.py b/targets/TEST/OAI/case02.py index e9a4853aa9..3c2031f843 100644 --- a/targets/TEST/OAI/case02.py +++ b/targets/TEST/OAI/case02.py @@ -108,7 +108,7 @@ def execute(oai, user, pw, host, logfile,logdir,debug): for i in range(NUM_eNB) : for j in range(NUM_UE) : - conf = '-a -A AWGN -l6 -u' + str(j+1) +' -b'+ str(i+1) + conf = '-a -A AWGN -l7 -u' + str(j+1) +' -b'+ str(i+1) trace = logdir + '/log_' + host + case + test + '_' + str(i) + str(j) + '.txt' tee = ' 2>&1 > ' + trace @@ -116,7 +116,7 @@ def execute(oai, user, pw, host, logfile,logdir,debug): oai.send('./oaisim.rel8.nas.' + host + ' ' + conf + ' &') else : oai.send('echo '+pw+ ' | sudo -S -E ./oaisim.rel8.nas.'+ host + ' ' + conf + tee + ' &') - time.sleep(20) + time.sleep(10) for k in range(NUM_TRIALS) : trace_ping = logdir + '/log_' + host + case + test + '_' + str(i) + str(j) + str(k) + '_ping.txt' tee_ping = ' 2>&1 | tee ' + trace_ping @@ -176,7 +176,7 @@ def execute(oai, user, pw, host, logfile,logdir,debug): log_name = logdir + '/log_' + host + case + test + '_' + str(i) + str(j) itti_name = log_name + '.log' trace_name = log_name + '.txt' - conf = '-a -l7 -A AWGN --enb-conf ../../PROJECTS/GENERIC-LTE-EPC/CONF/enb.sfr.sud.conf -n' + str((i+1+j) * 50) + ' -u' + str(i+1) +' -b'+ str(j+1) + ' -K' + itti_name + conf = '-a -l7 -A AWGN --enb-conf ../../PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.conf -n' + str((i+1+j) * 50) + ' -u' + str(i+1) +' -b'+ str(j+1) + ' -K' + itti_name tee = ' 2>&1 | tee -a ' + trace_name command = './oaisim.rel8.itti.' + host + ' ' + conf oai.send('echo ' + command + ' > ' + trace_name + ';') diff --git a/targets/TEST/OAI/test01.py b/targets/TEST/OAI/test01.py index 647c1c4dd0..aa760daca6 100644 --- a/targets/TEST/OAI/test01.py +++ b/targets/TEST/OAI/test01.py @@ -94,7 +94,11 @@ try: print "username: " + user #print "password: " + pw - prompt = os.getenv("PS1")[-2] + try: + prompt = os.getenv("PS1")[-2] + except : + #prompt = input('set your shell prompt: ') + prompt = '$' print "your prompt is: " + prompt oai.connect(user,pw,prompt) -- GitLab