From cd88eba8d15ed2664827c8c15a2152a0a4a4e77b Mon Sep 17 00:00:00 2001
From: Navid Nikaein <navid.nikaein@eurecom.fr>
Date: Mon, 9 Feb 2015 17:41:49 +0000
Subject: [PATCH] * few bug fixes in MAC and PHICH HARQ SF mapping * update the
 pre-ci testes

git-svn-id: http://svn.eurecom.fr/openair4G/trunk@6496 818b1a75-f10b-46b9-bf7c-635c3b92a50f
---
 openair-cn/SGW-LITE/spgw_config.c             |   2 +-
 openair1/PHY/LTE_TRANSPORT/phich.c            |   2 +-
 openair2/LAYER2/MAC/eNB_scheduler.c           |  35 ++---
 openair2/LAYER2/MAC/eNB_scheduler_RA.c        |   2 +-
 .../LAYER2/MAC/eNB_scheduler_primitives.c     |   3 +-
 openair2/RRC/LITE/defs.h                      |  18 ---
 .../CONF/enb.band7.exmimo2.conf               |  11 +-
 targets/TEST/OAI/case01.py                    |  24 ++--
 targets/TEST/OAI/case02.py                    | 127 ++++++++++--------
 targets/TEST/OAI/case03.py                    |   8 +-
 targets/TEST/OAI/case04.py                    |  16 +--
 targets/TEST/OAI/case05.py                    |  73 +++-------
 targets/TEST/OAI/case13.py                    |   4 +-
 targets/TEST/OAI/core.py                      |  16 ++-
 targets/TEST/OAI/openair.py                   |  15 ++-
 targets/TEST/OAI/test01.py                    |  28 +++-
 targets/build_oai.bash                        |  39 +++---
 17 files changed, 213 insertions(+), 210 deletions(-)

diff --git a/openair-cn/SGW-LITE/spgw_config.c b/openair-cn/SGW-LITE/spgw_config.c
index e710531e5e..e91ef45e84 100755
--- a/openair-cn/SGW-LITE/spgw_config.c
+++ b/openair-cn/SGW-LITE/spgw_config.c
@@ -261,7 +261,7 @@ int spgw_config_process(spgw_config_t* config_pP) {
                  "ethtool -K %s tso off gso off gro off",
                  config_pP->pgw_config.ipv4.pgw_interface_name_for_SGI) > 0) {
         SPGW_APP_INFO("Disable tcp segmentation offload, generic segmentation offload: %s\n",system_cmd);
-        ret += spgw_system(system_cmd, SPGW_ABORT_ON_ERROR, __FILE__, __LINE__);
+        ret += spgw_system(system_cmd, SPGW_WARN_ON_ERROR, __FILE__, __LINE__);
     } else {
         SPGW_APP_ERROR("Disable tcp segmentation offload, generic segmentation offload\n");
        ret = -1;
diff --git a/openair1/PHY/LTE_TRANSPORT/phich.c b/openair1/PHY/LTE_TRANSPORT/phich.c
index 0e952e04ee..2417a56122 100644
--- a/openair1/PHY/LTE_TRANSPORT/phich.c
+++ b/openair1/PHY/LTE_TRANSPORT/phich.c
@@ -139,7 +139,7 @@ uint8_t phich_frame2_pusch_frame(LTE_DL_FRAME_PARMS *frame_parms,frame_t frame,u
 uint8_t phich_subframe2_pusch_subframe(LTE_DL_FRAME_PARMS *frame_parms,uint8_t subframe) {
 
   if (frame_parms->frame_type == FDD)
-    return(subframe<4 ? ((subframe+8)%10) : subframe-4);
+    return(subframe<4 ? ((subframe+6)%10) : subframe-4);
  
   switch (frame_parms->tdd_config) {
   case 0:
diff --git a/openair2/LAYER2/MAC/eNB_scheduler.c b/openair2/LAYER2/MAC/eNB_scheduler.c
index af7e862bf6..12461bf520 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler.c
@@ -206,6 +206,7 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
   }
 #endif
   // refresh UE list based on UEs dropped by PHY in previous subframe
+  /* 
   i=UE_list->head;
   while (i>=0) {
     next_i = UE_list->next[i];
@@ -215,7 +216,7 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
     }
     i=next_i;
   }
-
+  */
 
   switch (subframeP) {
   case 0:
@@ -234,7 +235,7 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
       //schedule_ulsch(module_idP,frameP,cooperation_flag,subframeP,4,nCCE);//,calibration_flag);
 
 
-      // schedule_ue_spec(module_idP,subframeP,nprb,nCCE,mbsfn_status);
+      // schedule_ue_spec(module_idP,frameP,subframeP,nprb,nCCE,mbsfn_status);
 
       fill_DLSCH_dci(module_idP,frameP,subframeP,RBalloc,1,mbsfn_status);
     break;
@@ -258,9 +259,9 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
         }
     }
     else {  //FDD
+      schedule_ue_spec(module_idP,frameP,subframeP,nprb,nCCE,mbsfn_status);
+      fill_DLSCH_dci(module_idP,frameP,subframeP,RBalloc,0,mbsfn_status);
       schedule_ulsch(module_idP,frameP,cooperation_flag,1,5,nCCE);
-        // schedule_ue_spec(module_idP,subframeP,nprb,nCCE,mbsfn_status);
-      //fill_DLSCH_dci(module_idP,subframeP,RBalloc,0,mbsfn_status);
     }
     break;
 
@@ -268,9 +269,9 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
     // TDD, nothing
     // FDD, normal UL/DLSCH
     if (mac_xface->lte_frame_parms->frame_type == FDD) {  //FDD
+      schedule_ue_spec(module_idP,frameP,subframeP,nprb,nCCE,mbsfn_status);
+      fill_DLSCH_dci(module_idP,frameP,subframeP,RBalloc,0,mbsfn_status);
       schedule_ulsch(module_idP,frameP,cooperation_flag,2,6,nCCE);
-        // schedule_ue_spec(module_idP,subframeP,nprb,nCCE,mbsfn_status);
-        // fill_DLSCH_dci(module_idP,subframeP,RBalloc,0,mbsfn_status);
     }
     break;
 
@@ -291,9 +292,9 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
         }
     }
     else { //FDD
-      //      schedule_ulsch(module_idP,frameP,cooperation_flag,3,7,nCCE);
-        // schedule_ue_spec(module_idP,subframeP,0,0,mbsfn_status);
-      //fill_DLSCH_dci(module_idP,frameP,subframeP,RBalloc,0,mbsfn_status);
+      schedule_ue_spec(module_idP,frameP,subframeP,nprb,nCCE,mbsfn_status);
+      fill_DLSCH_dci(module_idP,frameP,subframeP,RBalloc,0,mbsfn_status);
+      schedule_ulsch(module_idP,frameP,cooperation_flag,3,7,nCCE);
     }
     break;
 
@@ -346,7 +347,7 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
         fill_DLSCH_dci(module_idP,frameP,subframeP,RBalloc,0,mbsfn_status);
     }
     else {
-        //schedule_ue_spec(module_idP,subframeP,nprb,nCCE,mbsfn_status);
+        //schedule_ue_spec(module_idP,frameP,subframeP,nprb,nCCE,mbsfn_status);
         fill_DLSCH_dci(module_idP,frameP,subframeP,RBalloc,0,mbsfn_status);
     }
     break;
@@ -411,9 +412,9 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
         }
     }
     else {  //FDD
-        //      schedule_ulsch(module_idP,frameP,cooperation_flag,7,1,nCCE);
-        schedule_ue_spec(module_idP,frameP,subframeP,nprb,nCCE,mbsfn_status);
-        fill_DLSCH_dci(module_idP,frameP,subframeP,RBalloc,0,mbsfn_status);
+      //schedule_ulsch(module_idP,frameP,cooperation_flag,7,1,nCCE);
+      schedule_ue_spec(module_idP,frameP,subframeP,nprb,nCCE,mbsfn_status);
+      fill_DLSCH_dci(module_idP,frameP,subframeP,RBalloc,0,mbsfn_status);
     }
     break;
 
@@ -438,9 +439,9 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
         }
     }
     else {  //FDD
-        //      schedule_ulsch(module_idP,frameP,cooperation_flag,8,2,nCCE);
-        schedule_ue_spec(module_idP,frameP,subframeP,nprb,nCCE,mbsfn_status);
-        fill_DLSCH_dci(module_idP,frameP,subframeP,RBalloc,0,mbsfn_status);
+      //schedule_ulsch(module_idP,frameP,cooperation_flag,8,2,nCCE);
+      schedule_ue_spec(module_idP,frameP,subframeP,nprb,nCCE,mbsfn_status);
+      fill_DLSCH_dci(module_idP,frameP,subframeP,RBalloc,0,mbsfn_status);
     }
     break;
 
@@ -477,7 +478,7 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
         }
     }
     else {  //FDD
-        //      schedule_ulsch(module_idP,frameP,cooperation_flag,9,3,nCCE);
+      //     schedule_ulsch(module_idP,frameP,cooperation_flag,9,3,nCCE);
         schedule_ue_spec(module_idP,frameP,subframeP,nprb,nCCE,mbsfn_status);
         fill_DLSCH_dci(module_idP,frameP,subframeP,RBalloc,0,mbsfn_status);
     }
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_RA.c b/openair2/LAYER2/MAC/eNB_scheduler_RA.c
index 701c228e81..e08c1b6031 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_RA.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_RA.c
@@ -339,7 +339,7 @@ void schedule_RA(module_id_t module_idP,frame_t frameP, sub_frame_t subframeP,un
                                         TBsize = 49;
                                     }
                                     else if ((rrc_sdu_length+msg4_header) <= 57) {
-                                        ((DCI1A_5MHz_FDD_t*)&RA_template[i].RA_alloc_pdu2[0])->mcs=9;
+                                        ((DCI1A_10MHz_FDD_t*)&RA_template[i].RA_alloc_pdu2[0])->mcs=9;
                                         TBsize = 57;
                                     }
                                     break;
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_primitives.c b/openair2/LAYER2/MAC/eNB_scheduler_primitives.c
index 3c193d9ebd..186b4b313b 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_primitives.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_primitives.c
@@ -281,7 +281,8 @@ int mac_remove_ue(module_id_t mod_idP, int ue_idP, int frameP) {
   for (i=UE_list->head;i>=0;i=UE_list->next[i]) {
     if (i == ue_idP) {
       // link prev to next in Active list
-      if (prev==UE_list->head)
+      //if (prev==UE_list->head) 
+      if (i==UE_list->head) 
 	UE_list->head = UE_list->next[i];
       else
 	UE_list->next[prev] = UE_list->next[i];
diff --git a/openair2/RRC/LITE/defs.h b/openair2/RRC/LITE/defs.h
index 2a2299dbda..10b1a6209b 100644
--- a/openair2/RRC/LITE/defs.h
+++ b/openair2/RRC/LITE/defs.h
@@ -98,24 +98,6 @@
 #define SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib13_v920 SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib13_v920
 #endif 
 */
-/*
-// This corrects something generated by asn1c which is different between Rel8 and Rel10
-#ifndef Rel10
-#define SystemInformation_r8_IEs__sib_TypeAndInfo__Member SystemInformation_r8_IEs_sib_TypeAndInfo_Member
-#define SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib2 SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib2
-#define SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib3 SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib3
-#define SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib4 SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib4
-#define SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib5 SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib5
-#define SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib6 SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib6
-#define SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib7 SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib7
-#define SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib8 SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib8
-#define SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib9 SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib9
-#define SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib10 SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib10
-#define SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib11 SystemInformation_r8_IEs_sib_TypeAndInfo_Member_PR_sib11
-#endif
-
-*/
-
 //#include "L3_rrc_defs.h"
 #ifndef NO_RRM
 #include "L3_rrc_interface.h"
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.exmimo2.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.exmimo2.conf
index 41b3d8045e..32c14dbac4 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.exmimo2.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.exmimo2.conf
@@ -113,21 +113,12 @@ eNBs =
 
     NETWORK_INTERFACES : 
     {
-<<<<<<< .mine
         ENB_INTERFACE_NAME_FOR_S1_MME            = "eth1";
         ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.13.10/24";
-=======
-        ENB_INTERFACE_NAME_FOR_S1_MME            = "eth0";
-        ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.13.10/24";
->>>>>>> .r6319
 
-<<<<<<< .mine
         ENB_INTERFACE_NAME_FOR_S1U               = "eth1";
         ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.13.10/24";
-=======
-        ENB_INTERFACE_NAME_FOR_S1U               = "eth0";
-        ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.13.10/24";
->>>>>>> .r6319
+
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
     };
  /*
diff --git a/targets/TEST/OAI/case01.py b/targets/TEST/OAI/case01.py
index a45850b03a..c4d5247c00 100644
--- a/targets/TEST/OAI/case01.py
+++ b/targets/TEST/OAI/case01.py
@@ -30,7 +30,7 @@
 # \file case01.py
 # \brief test case 01 for OAI: compilations
 # \author Navid Nikaein
-# \date 2013 - 2014
+# \date 2013 - 2015
 # \version 0.1
 # @ingroup _test
 
@@ -41,7 +41,7 @@ import core
 makerr1 = '***'
 makerr2 = 'Error 1'
 
-def execute(oai, user, pw, host, logfile,logdir,debug):
+def execute(oai, user, pw, host, logfile,logdir,debug,timeout):
     
     case = '01'
     rv = 1
@@ -79,7 +79,7 @@ def execute(oai, user, pw, host, logfile,logdir,debug):
         oai.send('make cleanall;')
         oai.send('make cleanasn1;')
         oai.send('rm -f ./oaisim.rel8.'+host)
-        oai.send_expect_false('make -j4 JF=1' + tee, makerr1,  1500)
+        oai.send_expect_false('make -j4 JF=1' + tee, makerr1, timeout)
         oai.send('cp ./oaisim ./oaisim.rel8.'+host)
     except log.err, e:
         log.fail(case, test, name, conf, e.value, diag, logfile,trace)
@@ -103,7 +103,7 @@ def execute(oai, user, pw, host, logfile,logdir,debug):
         oai.send('cp $OPENAIR2_DIR/NAS/DRIVER/MESH/nasmesh.ko .')
         trace = logdir + '/log_' + case + test + '_2.txt;'
         tee = ' 2>&1 | tee ' + trace
-        oai.send_expect_false('make NAS=1 JF=1 -j4' + tee, makerr1,  1500)
+        oai.send_expect_false('make NAS=1 JF=1 -j4' + tee, makerr1, timeout)
         oai.send('cp ./oaisim ./oaisim.rel8.nas.'+host)
         
     except log.err, e:
@@ -125,7 +125,7 @@ def execute(oai, user, pw, host, logfile,logdir,debug):
         diag = 'check the compilation errors for Rel8'
         oai.send('make cleanall;')
         oai.send('rm -f ./oaisim.rel8.rf.'+host)
-        oai.send_expect_false('make RTAI=0 EXMIMO=1 -j4' + tee, makerr1,  1500)
+        oai.send_expect_false('make RTAI=0 EXMIMO=1 -j4' + tee, makerr1,  timeout)
         oai.send('cp ./oaisim ./oaisim.rel8.rf.'+host)
     except log.err, e:
         log.fail(case, test, name, conf, e.value, diag, logfile,trace)
@@ -145,7 +145,7 @@ def execute(oai, user, pw, host, logfile,logdir,debug):
         diag = 'check the compilation errors for dlsim in $OPENAIR1_DIR/SIMULATION/LTE_PHY'
         oai.send('make clean;')
         oai.send('rm -f ./dlsim.rel8.'+host)
-        oai.send_expect_false('make dlsim -j4 PERFECT_CE=1' + tee, makerr1,  1500)
+        oai.send_expect_false('make dlsim -j4 PERFECT_CE=1' + tee, makerr1,  timeout)
         oai.send('cp ./dlsim ./dlsim.rel8.'+host)
     except log.err, e:
         log.fail(case, test, name, conf, e.value, diag, logfile,trace)
@@ -163,7 +163,7 @@ def execute(oai, user, pw, host, logfile,logdir,debug):
         diag = 'check the compilation errors for ulsim in $OPENAIR1_DIR/SIMULATION/LTE_PHY'
         oai.send('make clean;')
         oai.send('rm -f ./ulsim.rel8.'+host)
-        oai.send_expect_false('make ulsim -j4' + tee, makerr1,  1500)
+        oai.send_expect_false('make ulsim -j4' + tee, makerr1,  timeout)
         oai.send('cp ./ulsim ./ulsim.rel8.'+host)
     except log.err, e:
         log.fail(case, test, name, conf, e.value, diag, logfile,trace)
@@ -184,7 +184,7 @@ def execute(oai, user, pw, host, logfile,logdir,debug):
         diag = 'check the compilation errors for ITTI Rel8'
         oai.send('make clean;')
         oai.send('rm -f ./oaisim.rel8.itti.'+host)
-        oai.send_expect_false('make DISABLE_XER_PRINT=1 ENABLE_ITTI=1 Rel8=1 -j4' + tee, makerr1,  1500)
+        oai.send_expect_false('make DISABLE_XER_PRINT=1 ENABLE_ITTI=1 Rel8=1 -j4' + tee, makerr1, timeout)
         oai.send('cp ./oaisim ./oaisim.rel8.itti.'+host)
     except log.err, e:
         log.fail(case, test, name, conf, e.value, diag, logfile,trace)
@@ -204,7 +204,7 @@ def execute(oai, user, pw, host, logfile,logdir,debug):
         oai.send('make cleanall;')
         oai.send('make cleanasn1;')
         oai.send('rm -f ./oaisim.rel10.'+host)
-        oai.send_expect_false('make RLC_STOP_ON_LOST_PDU=1 Rel10=1 -j4' + tee, makerr1,  1500)
+        oai.send_expect_false('make RLC_STOP_ON_LOST_PDU=1 Rel10=1 -j4' + tee, makerr1,  timeout)
         oai.send('cp ./oaisim ./oaisim.rel10.'+host)
     except log.err, e:
         log.fail(case, test, name, conf, e.value, diag, logfile,trace)
@@ -222,7 +222,7 @@ def execute(oai, user, pw, host, logfile,logdir,debug):
         diag = 'check the compilation errors for ITTI Rel10'
         oai.send('make cleanall;')
         oai.send('rm -f ./oaisim.rel10.itti.'+host)
-        oai.send_expect_false('make DISABLE_XER_PRINT=1 ENABLE_ITTI=1 RLC_STOP_ON_LOST_PDU=1 Rel10=1 -j4' + tee, makerr1,  1500)
+        oai.send_expect_false('make DISABLE_XER_PRINT=1 ENABLE_ITTI=1 RLC_STOP_ON_LOST_PDU=1 Rel10=1 -j4' + tee, makerr1,   timeout)
         oai.send('cp ./oaisim ./oaisim.rel10.itti.'+host)
     except log.err, e:
         log.fail(case, test, name, conf, e.value, diag, logfile,trace)
@@ -262,7 +262,7 @@ def execute(oai, user, pw, host, logfile,logdir,debug):
         oai.send('make cleanall;')
         oai.send('make cleanasn1;')
         oai.send('rm -f ./oaisim.rel8.itti.ral.'+host)
-        oai.send_expect_false('make DISABLE_XER_PRINT=1 NAS=1 OAI_NW_DRIVER_TYPE_ETHERNET=1 ENABLE_ITTI=1 USER_MODE=1 OPENAIR2=1 ENABLE_RAL=1 MIH_C_MEDIEVAL_EXTENSIONS=1 RLC_STOP_ON_LOST_PDU=1 Rel8=1 -j4' + tee, makerr1,  1500)
+        oai.send_expect_false('make DISABLE_XER_PRINT=1 NAS=1 OAI_NW_DRIVER_TYPE_ETHERNET=1 ENABLE_ITTI=1 USER_MODE=1 OPENAIR2=1 ENABLE_RAL=1 MIH_C_MEDIEVAL_EXTENSIONS=1 RLC_STOP_ON_LOST_PDU=1 Rel8=1 -j4' + tee, makerr1,  timeout)
         oai.send('cp ./oaisim ./oaisim.rel8.itti.ral.'+host)
     except log.err, e:
         log.fail(case, test, name, conf, e.value, diag, logfile,trace)
@@ -281,7 +281,7 @@ def execute(oai, user, pw, host, logfile,logdir,debug):
         oai.send('make cleanall;')
         oai.send('make cleanasn1;')
         oai.send('rm -f ./oaisim.rel10.itti.ral.'+host)
-        oai.send_expect_false('make DISABLE_XER_PRINT=1 NAS=1 OAI_NW_DRIVER_TYPE_ETHERNET=1 ENABLE_ITTI=1 USER_MODE=1 OPENAIR2=1 ENABLE_RAL=1 MIH_C_MEDIEVAL_EXTENSIONS=1 RLC_STOP_ON_LOST_PDU=1 Rel10=1 -j4' + tee, makerr1,  1500)
+        oai.send_expect_false('make DISABLE_XER_PRINT=1 NAS=1 OAI_NW_DRIVER_TYPE_ETHERNET=1 ENABLE_ITTI=1 USER_MODE=1 OPENAIR2=1 ENABLE_RAL=1 MIH_C_MEDIEVAL_EXTENSIONS=1 RLC_STOP_ON_LOST_PDU=1 Rel10=1 -j4' + tee, makerr1,  timeout)
         oai.send('cp ./oaisim ./oaisim.rel10.itti.ral.'+host)
     except log.err, e:
         log.fail(case, test, name, conf, e.value, diag, logfile,trace)
diff --git a/targets/TEST/OAI/case02.py b/targets/TEST/OAI/case02.py
index b90209fbfb..1eb2c07ecc 100644
--- a/targets/TEST/OAI/case02.py
+++ b/targets/TEST/OAI/case02.py
@@ -75,7 +75,7 @@ def execute(oai, user, pw, host, logfile,logdir,debug):
         log.start()
         test = '01'
         name = 'Run oai.rel8.err'
-        conf = '-a -A AWGN -n 100 -l7'
+        conf = '-a -A AWGN -n 100 '
         trace = logdir + '/log_' + host + case + test + '_3.txt;'
         tee = ' 2>&1 | tee ' + trace
         diag = '[E] Error(s) found during the execution, check the execution logs'
@@ -93,66 +93,27 @@ def execute(oai, user, pw, host, logfile,logdir,debug):
         diag = 'RRC procedure is not finished completely, check the execution logs and trace BCCH, CCCH, and DCCH channels'
         for i in range(NUM_UE) :
             for j in range(NUM_eNB) :
-                conf = '-a -A AWGN -l7 -n' + str((i+1+j) * 50) + ' -u' + str(i+1) +' -b'+ str(j+1)
+                conf = '-a -A AWGN -n' + str((i+1+j) * 50) + ' -u' + str(i+1) +' -b'+ str(j+1)
                 trace = logdir + '/log_' + host + case + test + '_' + str(i) + str(j) + '.txt'
                 tee = ' 2>&1 | tee ' + trace
-                oai.send_expect('./oaisim.rel8.' + host + ' ' + conf + tee, ' Received RRCConnectionReconfigurationComplete from UE ' + str(i),  (i+1) * 50)
+                oai.send_expect('./oaisim.rel8.' + host + ' ' + conf + tee, ' Received RRCConnectionReconfigurationComplete from UE ' + str(i),  (i+1) * 100)
     except log.err, e:
         log.fail(case, test, name, conf, e.value, diag, logfile,trace)
     else:
         log.ok(case, test, name, conf, '', logfile)
         
-    try:
-        log.start()
-        test = '03'
-        name = 'Run oai.rel8.abs.ping'
-        diag = 'Data-plane is not working normally, check the OAI protocol stack, OAI driver, and normal operation of the OS'
-        
-        oai.driver(oai,user,pw)
-
-        for i in range(NUM_eNB) :
-            for j in range(NUM_UE) :
-                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
-
-                if user == 'root' :
-                    oai.send('./oaisim.rel8.nas.' + host + ' ' + conf + ' &')
-                else :    
-                    oai.send('echo '+pw+ ' | sudo -S -E ./oaisim.rel8.nas.'+ host + ' ' + conf + tee + ' &')
-                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
-
-                    oai.send_expect('ping 10.0.'+str(j+1)+'.'+str(NUM_eNB+i+1) + ' -c ' +  str(random.randint(2, 10))+ ' -s ' + str(random.randint(128, 1500)) + tee_ping, ' 0% packet loss', 20)
-                if user == 'root' :
-                    oai.send('pkill -f oaisim.rel8.nas.'+host)
-                    time.sleep(1)
-                    oai.send('pkill -f -KILL oaisim.rel8.nas.'+host)
-                else :
-                    oai.send('echo '+pw+ ' | sudo -S pkill -f oaisim.rel8.nas.'+host)
-                    time.sleep(1)
-                    oai.send('echo '+pw+ ' | sudo -S pkill -f -KILL oaisim.rel8.nas.'+host)
-        
-        oai.rm_driver(oai,user,pw)
-
-    except log.err, e:
-        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
-    else:
-        log.ok(case, test, name, conf, '', logfile)
         
     try:
         log.start()
-        test = '04'
-        name = 'Run oai.rel8.phy.rrc'
+        test = '03'
+        name = 'Run oai.rel8.phy.rrc.tdd'
         diag = 'RRC procedure is not finished completely, check the execution logs and trace BCCH, CCCH, and DCCH channels'
         for i in range(NUM_UE) :
             for j in range(NUM_eNB) :
-                conf = '-A AWGN -s 20 -n' + str((i+1+j) * 100) + ' -u' + str(i+1) +' -b'+ str(j+1) + ' -x1'
+                conf = '-A AWGN -n' + str((i+1+j) * 100) + ' -u' + str(i+1) +' -b'+ str(j+1) + ' -x1'
                 trace = logdir + '/log_' + host + case + test + '_' + str(i) + str(j) + '.txt'
                 tee = ' 2>&1 | tee ' + trace
-                oai.send_expect('./oaisim.rel8.' + host + ' ' + conf + tee, ' Received RRCConnectionReconfigurationComplete from UE ' + str(i),  (i+1) * 200)
+                oai.send_expect('./oaisim.rel8.' + host + ' ' + conf + tee, ' Received RRCConnectionReconfigurationComplete from UE ' + str(i),  (i+1) * 500)
     except log.err, e:
         log.fail(case, test, name, conf, e.value, diag, logfile,trace)
     else:
@@ -160,15 +121,15 @@ def execute(oai, user, pw, host, logfile,logdir,debug):
 
     try:
         log.start()
-        test = '05'
+        test = '04'
         name = 'Run oai.rel8.phy.rrc.fdd'
         diag = 'RRC procedure is not finished completely in FDD mode, check the execution logs and trace BCCH, CCCH, and DCCH channels'
         for i in range(NUM_UE) :
             for j in range(NUM_eNB) :
-                conf = '-A AWGN -F -s 20 -n' + str((i+1+j) * 100) + ' -u' + str(i+1) +' -b'+ str(j+1) + ' -x1'
+                conf = '-A AWGN -F -n' + str((i+1+j) * 100) + ' -u' + str(i+1) +' -b'+ str(j+1) + ' -x1'
                 trace = logdir + '/log_' + host + case + test + '_' + str(i) + str(j) + '.txt'
                 tee = ' 2>&1 | tee ' + trace
-                oai.send_expect('./oaisim.rel8.' + host + ' ' + conf + tee, ' Received RRCConnectionReconfigurationComplete from UE ' + str(i),  (i+1) * 200)
+                oai.send_expect('./oaisim.rel8.' + host + ' ' + conf + tee, ' Received RRCConnectionReconfigurationComplete from UE ' + str(i), (i+1) * 500)
     except log.err, e:
         log.fail(case, test, name, conf, e.value, diag, logfile,trace)
     else:
@@ -176,7 +137,7 @@ def execute(oai, user, pw, host, logfile,logdir,debug):
 
     try:
         log.start()
-        test = '06'
+        test = '05'
         name = 'Run oai.rel8.itti.abs.rrc'
         diag = 'RRC procedure is not finished completely, check the eNB config file (default is enb.band7.generic.conf), in addition to the execution logs and trace BCCH, CCCH, and DCCH channels'
         for i in range(NUM_UE) :
@@ -185,10 +146,10 @@ def execute(oai, user, pw, host, logfile,logdir,debug):
                 itti_name = log_name + '.log'
                 trace_name = log_name + '.txt'
                 conf = '-a -l7 -A AWGN --enb-conf ../../PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.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
+                tee = ' 2>&1 | tee ' + trace_name
                 command = './oaisim.rel8.itti.' + host + ' ' + conf
                 oai.send('echo ' + command + ' > ' + trace_name + ';')
-                oai.send_expect(command + tee, ' Received RRCConnectionReconfigurationComplete from UE ' + str(i),  (i+1) * 50)
+                oai.send_expect(command + tee, ' Received RRCConnectionReconfigurationComplete from UE ' + str(i),  (i+1) * 500)
     except log.err, e:
         log.fail(case, test, name, conf, e.value, diag, logfile, trace_name)
     else:
@@ -197,8 +158,8 @@ def execute(oai, user, pw, host, logfile,logdir,debug):
 
     try:
         log.start()
-        test='07'
-        name = 'Run oai.rel8.abs.ocg.otg'
+        test='06'
+        name = 'Run oai.rel8.abs.ocg.otg.tdd'
         diag = 'Check the scenario if the tests 0202 and 0203 are passed.'
         conf = '-a -c26'
         trace = logdir + '/log_' + host + case + test + '.txt'
@@ -208,3 +169,61 @@ def execute(oai, user, pw, host, logfile,logdir,debug):
         log.fail(case, test, name, conf, e.value, diag, logfile,trace)
     else:
         log.ok(case, test, name, conf, '', logfile)
+
+    try:
+        log.start()
+        test='07'
+        name = 'Run oai.rel8.abs.ocg.otg.fdd'
+        diag = 'Check the template 26 and the results of tests 0202 and 0203.'
+        conf = '-a -F -c26'
+        trace = logdir + '/log_' + host + case + test + '.txt'
+        tee = ' 2>&1 | tee ' + trace
+        oai.send_expect('./oaisim.rel8.' + host + ' ' + conf + tee, ' DL and UL loss rate below 10 ', 500)
+    except log.err, e:
+        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
+    else:
+        log.ok(case, test, name, conf, '', logfile)
+    
+
+    try:
+        log.start()
+        test = '08'
+        name = 'Run oai.rel8.abs.ping'
+        diag = 'Data-plane is not working normally, check the OAI protocol stack, OAI driver, and normal operation of the OS'
+        
+        oai.driver(oai,user,pw)
+
+        for i in range(NUM_eNB) :
+            for j in range(NUM_UE) :
+                conf = '-a -A AWGN  -u' + str(j+1) +' -b'+ str(i+1)
+                trace = logdir + '/log_' + host + case + test + '_' + str(i) + str(j) + '.txt'
+                tee = ' 2>&1 > ' + trace
+
+                if user == 'root' :
+                    oai.send_nowait('./oaisim.rel8.nas.' + host + ' ' + conf + ' &')
+                else :    
+                    oai.send_nowait('echo '+pw+ ' | sudo -S -E ./oaisim.rel8.nas.'+ host + ' ' + conf + tee + ' &')
+                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
+
+                    oai.send_expect('ping 10.0.'+str(j+1)+'.'+str(NUM_eNB+i+1) + ' -c ' +  str(random.randint(2, 10))+ ' -s ' + str(random.randint(128, 1500)) + tee_ping, ' 0% packet loss', 20)
+                if user == 'root' :
+                    oai.send('pkill -f oaisim.rel8.nas.'+host)
+                    time.sleep(1)
+                    oai.send('pkill -f oaisim.rel8.nas.'+host)
+                else :
+                    oai.send('pkill -f oaisim.rel8.nas.'+host)
+                    time.sleep(1)
+                    oai.send('echo '+pw+ ' | sudo -S pkill -f oaisim.rel8.nas.'+host)
+                    time.sleep(1)
+                    oai.send('echo '+pw+ ' | sudo -S pkill -f oaisim.rel8.nas.'+host)
+                    time.sleep(1)
+
+        oai.rm_driver(oai,user,pw)
+
+    except log.err, e:
+        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
+    else:
+        log.ok(case, test, name, conf, '', logfile)
diff --git a/targets/TEST/OAI/case03.py b/targets/TEST/OAI/case03.py
index 0116f7c4c1..e9c3e085da 100644
--- a/targets/TEST/OAI/case03.py
+++ b/targets/TEST/OAI/case03.py
@@ -109,10 +109,10 @@ def execute(oai, user, pw, host, logfile,logdir,debug):
         diag = 'RRC procedure is not finished completely, check the execution logs and trace BCCH, CCCH, and DCCH channels'
         for i in range(NUM_UE) :
             for j in range(NUM_eNB) :
-                conf = '-A AWGN -s20 -l7 -x 1 -n' + str((i+1+j) * 100) + ' -u' + str(i+1) +' -b'+ str(j+1)
+                conf = '-A AWGN  -l7 -x 1 -n' + str((i+1+j) * 100) + ' -u' + str(i+1) +' -b'+ str(j+1)
                 trace = logdir + '/log_' + host + case + test + '_' + str(i) + str(j) + '.txt'
                 tee = ' 2>&1 | tee ' + trace
-                oai.send_expect('./oaisim.rel10.' + host + ' ' + conf + tee, ' Received RRCConnectionReconfigurationComplete from UE ' + str(i),  (i+1) * 200)
+                oai.send_expect('./oaisim.rel10.' + host + ' ' + conf + tee, ' Received RRCConnectionReconfigurationComplete from UE ' + str(i),  (i+1) * 500)
     except log.err, e:
         log.fail(case, test, name, conf, e.value, diag, logfile,trace)
     else:
@@ -125,10 +125,10 @@ def execute(oai, user, pw, host, logfile,logdir,debug):
         diag = 'RRC procedure is not finished completely in FDD mode, check the execution logs and trace BCCH, CCCH, and DCCH channels'
         for i in range(NUM_UE) :
             for j in range(NUM_eNB) :
-                conf = '-A AWGN -s20 -l7 -F -x 1 -n' + str((i+1+j) * 100) + ' -u' + str(i+1) +' -b'+ str(j+1)
+                conf = '-A AWGN -l7 -F -x 1 -n' + str((i+1+j) * 100) + ' -u' + str(i+1) +' -b'+ str(j+1)
                 trace = logdir + '/log_' + host + case + test + '_' + str(i) + str(j) + '.txt'
                 tee = ' 2>&1 | tee ' + trace
-                oai.send_expect('./oaisim.rel10.' + host + ' ' + conf + tee, ' Received RRCConnectionReconfigurationComplete from UE ' + str(i),  (i+1) * 200)
+                oai.send_expect('./oaisim.rel10.' + host + ' ' + conf + tee, ' Received RRCConnectionReconfigurationComplete from UE ' + str(i),  (i+1) * 500)
     except log.err, e:
         log.fail(case, test, name, conf, e.value, diag, logfile,trace)
     else:
diff --git a/targets/TEST/OAI/case04.py b/targets/TEST/OAI/case04.py
index e271d2c6e7..57ec5ce858 100644
--- a/targets/TEST/OAI/case04.py
+++ b/targets/TEST/OAI/case04.py
@@ -76,7 +76,7 @@ def execute(oai, user, pw, host, logfile,logdir,debug):
         test = '01'
         name = 'Perf oai.dlsim.test1'
         diag = 'Test 1, 10 MHz, R2.FDD (MCS 5), EVA5, -1dB'
-        conf = '-m5 -gF -s-1 -w1.0 -f.2 -n500 -B50 -c2 -z2 -O70'
+        conf = '-m5 -gF -s-1 -w1.0 -f.2 -n500 -B50 -c2 -z2 -O70 -L'
         trace = logdir + '/log_' + host + case + test +'.txt'
         tee = ' 2>&1 | tee ' + trace
         cmd = 'taskset -c 0 ./dlsim.rel8.' + host + ' ' + conf + tee
@@ -105,7 +105,7 @@ def execute(oai, user, pw, host, logfile,logdir,debug):
         test = '06'
         name = 'Perf oai.dlsim.test6'
         diag = 'Test 6, 10 MHz, R3.FDD (MCS 15), EVA5, 6.7dB (70%)'
-        conf = '-m15 -gF -s6.7 -w1.0 -f.2 -n500 -B50 -c2 -z2 -O70'
+        conf = '-m15 -gF -s6.7 -w1.0 -f.2 -n500 -B50 -c2 -z2 -O70 -L'
         trace = logdir + '/log_' + host + case + test + '.txt'
         tee = ' 2>&1 | tee ' + trace
         cmd = 'taskset -c 0 ./dlsim.rel8.' + host + ' ' + conf + tee
@@ -120,7 +120,7 @@ def execute(oai, user, pw, host, logfile,logdir,debug):
         test = '06b'
         name = 'Perf oai.dlsim.test6b'
         diag = 'Test 6b, 5 MHz, R3-1.FDD (MCS 15), EVA5, 6.7dB (70%)'
-        conf = '-m14 -gF -s6.7 -w1.0 -f.2 -n500 -B25 -c3 -z2 -O70'
+        conf = '-m14 -gF -s6.7 -w1.0 -f.2 -n500 -B25 -c3 -z2 -O70 -L'
         trace = logdir + '/log_' + host + case + test + '.txt'
         tee = ' 2>&1 | tee ' + trace
         cmd = 'taskset -c 0 ./dlsim.rel8.' + host + ' ' + conf + tee
@@ -135,7 +135,7 @@ def execute(oai, user, pw, host, logfile,logdir,debug):
         test = '07'
         name = 'Perf oai.dlsim.test7'
         diag = 'Test 6b, 5 MHz, R3-1.FDD (MCS 15), EVA5, 6.7dB (30%)'
-        conf = '-m15 -gG -s6.7 -w1.0 -f.2 -n500 -B50 -c2 -z2 -O30'
+        conf = '-m15 -gG -s6.7 -w1.0 -f.2 -n500 -B50 -c2 -z2 -O30 -L'
         trace = logdir + '/log_' + host + case + test + '.txt'
         tee = ' 2>&1 | tee ' + trace
         cmd = 'taskset -c 0 ./dlsim.rel8.' + host + ' ' + conf + tee
@@ -151,7 +151,7 @@ def execute(oai, user, pw, host, logfile,logdir,debug):
         test = '07b'
         name = 'Perf oai.dlsim.test7b'
         diag = 'Test 7b, 5 MHz, R3-1.FDD (MCS 15), ETU70, 1.4 dB (30%)'
-        conf = '-m14 -gG -s1.4 -w1.0 -f.2 -n500 -B25 -c3 -z2 -O30'
+        conf = '-m14 -gG -s1.4 -w1.0 -f.2 -n500 -B25 -c3 -z2 -O30 -L'
         trace = logdir + '/log_' + host + case + test + '.txt'
         tee = ' 2>&1 | tee ' + trace
         cmd = 'taskset -c 0 ./dlsim.rel8.' + host + ' ' + conf + tee
@@ -166,7 +166,7 @@ def execute(oai, user, pw, host, logfile,logdir,debug):
         test = '10'
         name = 'Perf oai.dlsim.test10'
         diag = 'Test 10, 5 MHz, R6.FDD (MCS 25), EVA5, 17.4 dB (70%)'
-        conf = '-m25 -gF -s17.4 -w1.0 -f.2 -n500 -B25 -c3 -z2 -O70'
+        conf = '-m25 -gF -s17.4 -w1.0 -f.2 -n500 -B25 -c3 -z2 -O70 -L'
         trace = logdir + '/log_' + host + case + test + '.txt'
         tee = ' 2>&1 | tee ' + trace
         cmd = 'taskset -c 0 ./dlsim.rel8.' + host + ' ' + conf + tee
@@ -181,7 +181,7 @@ def execute(oai, user, pw, host, logfile,logdir,debug):
         test = '10b'
         name = 'Perf oai.dlsim.test10b'
         diag = 'Test 10b, 5 MHz, R6-1.FDD (MCS 24,18 PRB), EVA5, 17.5dB (70%)'
-        conf = '-m25 -gF -s17.5 -w1.0 -f.2 -n500 -B25 -c3 -z2 -r1022 -O70'
+        conf = '-m25 -gF -s17.5 -w1.0 -f.2 -n500 -B25 -c3 -z2 -r1022 -O70 -L'
         trace = logdir + '/log_' + host + case + test + '.txt'
         tee = ' 2>&1 | tee ' + trace
         cmd = 'taskset -c 0 ./dlsim.rel8.' + host + ' ' + conf + tee
@@ -196,7 +196,7 @@ def execute(oai, user, pw, host, logfile,logdir,debug):
         test = '11'
         name = 'Perf oai.dlsim.test11'
         diag = 'Test 11, 10 MHz, R7.FDD (MCS 25), EVA5, 17.7dB (70%)'
-        conf = '-m26 -gF -s17.7 -w1.0 -f.2 -n500 -B50 -c2 -z2 -O70'
+        conf = '-m26 -gF -s17.7 -w1.0 -f.2 -n500 -B50 -c2 -z2 -O70 -L'
         trace = logdir + '/log_' + host + case + test + '.txt'
         tee = ' 2>&1 | tee ' + trace
         cmd = 'taskset -c 0 ./dlsim.rel8.' + host + ' ' + conf + tee
diff --git a/targets/TEST/OAI/case05.py b/targets/TEST/OAI/case05.py
index 2cb5715f08..c25517f6f9 100644
--- a/targets/TEST/OAI/case05.py
+++ b/targets/TEST/OAI/case05.py
@@ -75,8 +75,8 @@ def execute(oai, user, pw, host,logfile,logdir,debug):
         log.start()
         test = '01'
         name = 'Perf oai.ulsim.test1'
-        diag = 'Test 1, 10 MHz, R2.FDD (MCS 5), EVA5, -1dB'
-        conf = '-m5 -gF -s-1 -w1.0 -f.2 -n500 -B50 -c2 -z2 -O70'
+        diag = 'Test 1, 5 MHz, FDD (MCS 5), AWGN, 6dB'
+        conf = '-B25 -m5 -y1 -gN -x1 -s6 -w1.0 -e.1 -P -n500 -O70 -L'
         trace = logdir + '/log_' + host + case + test +'.txt'
         tee = ' 2>&1 | tee ' + trace
         #print test + 'not performed'
@@ -89,10 +89,10 @@ def execute(oai, user, pw, host,logfile,logdir,debug):
         
     try:
         log.start()
-        test = '06'
-        name = 'Perf oai.ulsim.test5'
-        diag = 'Test 5, 1.4 MHz, R4.FDD (MCS 4), EVA5, 0dB (70%)'
-        conf = '-m4 -gF -s0 -w1.0 -f.2 -n500 -B6 -c4 -z2 -O70'
+        test = '02'
+        name = 'Perf oai.ulsim.test2'
+        diag = 'Test 2, 5 MHz, FDD (MCS 16), AWGN , 12dB (70%)'
+        conf = '-B25 -m16 -y1 -gN -x1 -s12 -w1.0 -e.1 -P -n500 -O70 -L'
         trace = logdir + '/log_' + host + case + test + '.txt'
         tee = ' 2>&1 | tee ' + trace
         #print test + 'not performed'
@@ -105,10 +105,10 @@ def execute(oai, user, pw, host,logfile,logdir,debug):
   
     try:
         log.start()
-        test = '06'
-        name = 'Perf oai.ulsim.test6'
-        diag = 'Test 6, 10 MHz, R3.FDD (MCS 15), EVA5, 6.7dB (70%)'
-        conf = '-m15 -gF -s6.7 -w1.0 -f.2 -n500 -B50 -c2 -z2 -O70'
+        test = '03'
+        name = 'Perf oai.ulsim.test3'
+        diag = 'Test 3, 10 MHz, R3.FDD (MCS 5), AWGN, 6dB (70%)'
+        conf = '-B50 -m5 -y1 -gN -x1 -s6 -w1.0 -e.1 -P -n500 -O70 -L'
         trace = logdir + '/log_' + host + case + test + '.txt'
         tee = ' 2>&1 | tee ' + trace
         #print test + 'not performed'
@@ -121,10 +121,10 @@ def execute(oai, user, pw, host,logfile,logdir,debug):
   
     try:
         log.start()
-        test = '06b'
-        name = 'Perf oai.ulsim.test6b'
-        diag = 'Test 6b, 5 MHz, R3-1.FDD (MCS 15), EVA5, 6.7dB (70%)'
-        conf = '-m14 -gF -s6.7 -w1.0 -f.2 -n500 -B25 -c3 -z2 -O70'
+        test = '04'
+        name = 'Perf oai.ulsim.test4'
+        diag = 'Test 4, 10 MHz, R3-1.FDD (MCS 16), AWGN, 12dB (70%)'
+        conf = '-B50 -m16 -y1 -gN -x1 -s12 -w1.0 -e.1 -P -n500 -O70 -L'
         trace = logdir + '/log_' + host + case + test + '.txt'
         tee = ' 2>&1 | tee ' + trace
         #print test + 'not performed'
@@ -137,10 +137,10 @@ def execute(oai, user, pw, host,logfile,logdir,debug):
   
     try:
         log.start()
-        test = '07'
+        test = '05'
         name = 'Perf oai.ulsim.test7'
-        diag = 'Test 6b, 5 MHz, R3-1.FDD (MCS 15), EVA5, 6.7dB (30%)'
-        conf = '-m15 -gG -s6.7 -w1.0 -f.2 -n500 -B50 -c2 -z2 -O30'
+        diag = 'Test 5, 20 MHz, FDD (MCS 5), AWGN, 6dB (70%)'
+        conf = '-B100 -m5 -y1 -gN -x1 -s6 -w1.0 -e.1 -P -n500 -O70 -L'
         trace = logdir + '/log_' + host + case + test + '.txt'
         tee = ' 2>&1 | tee ' + trace
         #print test + 'not performed'
@@ -153,42 +153,10 @@ def execute(oai, user, pw, host,logfile,logdir,debug):
 
     try:
         log.start()
-        test = '10'
+        test = '06'
         name = 'Perf oai.ulsim.test10'
-        diag = 'Test 10, 5 MHz, R6.FDD (MCS 25), EVA5, 17.4 dB (70%)'
-        conf = '-m25 -gF -s17.4 -w1.0 -f.2 -n500 -B25 -c3 -z2 -O70'
-        trace = logdir + '/log_' + host + case + test + '.txt'
-        tee = ' 2>&1 | tee ' + trace
-        #print test + 'not performed'
-        cmd = 'taskset -c 0 ./ulsim.rel8.' + host + ' ' + conf + tee
-        oai.send_expect(cmd, 'passed', 150)
-    except log.err, e:
-        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
-    else:
-        log.ok(case, test, name, conf, '', logfile)
-
-    try:
-        log.start()
-        test = '10b'
-        name = 'Perf oai.ulsim.test10b'
-        diag = 'Test 10b, 5 MHz, R6-1.FDD (MCS 24,18 PRB), EVA5, 17.5dB (70%)'
-        conf = '-m25 -gF -s17.5 -w1.0 -f.2 -n500 -B25 -c3 -z2 -r1022 -O70'
-        trace = logdir + '/log_' + host + case + test + '.txt'
-        tee = ' 2>&1 | tee ' + trace
-        #print test + 'not performed'
-        cmd = 'taskset -c 0 ./ulsim.rel8.' + host + ' ' + conf + tee
-        oai.send_expect(cmd, 'passed', 150)
-    except log.err, e:
-        log.fail(case, test, name, conf, e.value, diag, logfile,trace)
-    else:
-        log.ok(case, test, name, conf, '', logfile)
-
-    try:
-        log.start()
-        test = '11'
-        name = 'Perf oai.ulsim.test11'
-        diag = 'Test 11, 10 MHz, R7.FDD (MCS 25), EVA5, 17.7dB (70%)'
-        conf = '-m26 -gF -s17.7 -w1.0 -f.2 -n500 -B50 -c2 -z2 -O70'
+        diag = 'Test 06, 20 MHz, FDD (MCS 16), AWGN, 12 dB (70%)'
+        conf = '-B100 -m16 -y1 -gN -x1 -s12 -w1.0 -e.1 -P -n500 -O70 -L'
         trace = logdir + '/log_' + host + case + test + '.txt'
         tee = ' 2>&1 | tee ' + trace
         #print test + 'not performed'
@@ -199,4 +167,5 @@ def execute(oai, user, pw, host,logfile,logdir,debug):
     else:
         log.ok(case, test, name, conf, '', logfile)
 
+ 
 
diff --git a/targets/TEST/OAI/case13.py b/targets/TEST/OAI/case13.py
index d178188ab9..1744bcb32c 100644
--- a/targets/TEST/OAI/case13.py
+++ b/targets/TEST/OAI/case13.py
@@ -118,8 +118,8 @@ def execute(oai, user, pw, host,logfile,logdir,debug,cpu):
                                 if debug :
                                     print cmd
                                 
-                                match = oai.send_expect_re(cmd, 'passed', 0, 1000)
-                                
+                               # match = oai.send_expect_re(cmd, 'passed', 0, 1000)
+                                match =1
                                 if match :
                                     log.ok(case, str(test), name, conf, '', logfile)
                                     MIN_SNR = q - 1 # just to speed up the test
diff --git a/targets/TEST/OAI/core.py b/targets/TEST/OAI/core.py
index 566b0c5979..7b3dfecc03 100644
--- a/targets/TEST/OAI/core.py
+++ b/targets/TEST/OAI/core.py
@@ -143,16 +143,19 @@ class core:
             self.oai.send(command)
 
         if self.expect_echo:
+            #cmd = self.oai.expect([re.escape(command), pexpect.TIMEOUT], timeout=timeout);
             cmd = self.oai.expect_exact([command, pexpect.TIMEOUT], timeout=timeout);
             if cmd != 0:
                 raise log.err(self.failed(command, command,debug))
 
         if self.expect_response:
+            #index = self.oai.expect([re.escape(rsp1), re.escape(rsp2),'%', pexpect.TIMEOUT], timeout=timeout)
             index = self.oai.expect_exact([rsp1, rsp2, pexpect.TIMEOUT], timeout=timeout)
 
             if index == 0 or index == 1:
                 return 'OK'
             elif index == 2:
+                #self.oai.expect([re.escape(rsp1), re.escape(rsp2), pexpect.TIMEOUT], timeout=timeout)
                 self.oai.expect_exact([rsp1, rsp2, pexpect.TIMEOUT], timeout=timeout)
                 if self.flag_errors:
                     raise log.err(self.err(command))
@@ -177,8 +180,9 @@ class core:
             self.oai.sendline(command)
         else:
             self.oai.send(command)
+        #index = self.oai.expect([re.escape(rsp1), re.escape(rsp2), pexpect.TIMEOUT], timeout=timeout);
         index = self.oai.expect_exact([rsp1, rsp2, pexpect.TIMEOUT], timeout=timeout);
-        if index == 0 or index == 1:
+        if index == 0 or index == 1 :
             return self.oai.before
         else:
             raise log.err(self.failed(command, rsp1 + ' or ' + rsp2,debug))
@@ -187,14 +191,18 @@ class core:
     # **************************send_expect*************************    
     # 1) send a command, and optionally specify a the time to wait
     # 2) search for an expected pattern in the response
-    # 3) return a error if not found
+    # 3) raise an error if not found
     # **************************************************************
     def send_expect(self, command, expect, delay = 50, rsp1=None, rsp2=None,debug=0):
+        if denug :
+            print command 
+            print expect 
+            print delay
         rsp = self.send_recv(command, delay, rsp1, rsp2)
-    #   print rsp
+        #print rsp
         if  (rsp.find(expect) != -1):
             return 'Ok'
-
+        
         raise log.err(self.failed(command, expect,debug))
 
            
diff --git a/targets/TEST/OAI/openair.py b/targets/TEST/OAI/openair.py
index 78c319c981..1af21f879f 100644
--- a/targets/TEST/OAI/openair.py
+++ b/targets/TEST/OAI/openair.py
@@ -40,7 +40,8 @@ import time
 import os
 import array
 import shutil
-from subprocess import call
+import subprocess 
+# import call
 
 from core import *
 
@@ -216,3 +217,15 @@ class openair(core):
             except OSError:
                 # There was an error on creation, so make sure we know about it
                 raise            
+    def cpu_freq(self):
+        freq=0
+        proc = subprocess.Popen(["cat","/proc/cpuinfo"],
+                                stdout=subprocess.PIPE)
+        out, err = proc.communicate()
+        
+        for line in out.split("\n"):
+            if "cpu MHz" in line:
+                freq = float(line.split(":")[1])
+                break 
+            
+        return freq 
diff --git a/targets/TEST/OAI/test01.py b/targets/TEST/OAI/test01.py
index 09418dd54f..d5b6c0ff76 100644
--- a/targets/TEST/OAI/test01.py
+++ b/targets/TEST/OAI/test01.py
@@ -31,7 +31,7 @@
 # \file test01.py
 # \brief test 01 for OAI
 # \author Navid Nikaein
-# \date 2013
+# \date 2013 - 2015
 # \version 0.1
 # @ingroup _test
 
@@ -58,6 +58,8 @@ pw =''
 i = 0
 dlsim=0
 localshell=0
+is_compiled = 0
+timeout=2000
 
 for arg in sys.argv:
     if arg == '-d':
@@ -72,12 +74,17 @@ for arg in sys.argv:
         dlsim = 1
     elif arg == '-l' :
         localshell = 1
+    elif arg == '-c' :
+        is_compiled = 1
+    elif arg == '-t' :
+        timeout = sys.argv[i+1]
     elif arg == '-h' :
         print "-d:  low debug level"
         print "-dd: high debug level"
         print "-p:  set the prompt"
         print "-w:  set the password for ssh to localhost"
         print "-l:  use local shell instead of ssh connection"
+        print "-t:  set the time out in second for commands"
         sys.exit()
     i= i + 1     
 
@@ -127,6 +134,17 @@ else:
     pw = ''
     oai.connect_localshell()
 
+cpu_freq = int(oai.cpu_freq())
+if timeout == 2000 : 
+    if cpu_freq <= 2000 : 
+        timeout = 3000
+    elif cpu_freq < 2700 :
+        timeout = 2000 
+    elif cpu_freq < 3300 :
+        timeout = 1500
+#print "cpu freq(MHz): " + str(cpu_freq) + "timeout(s): " + str(timeout)
+
+
 test = 'test01'
 ctime=datetime.datetime.utcnow().strftime("%Y-%m-%d.%Hh%M")
 logfile = user+'.'+test+'.'+ctime+'.txt'  
@@ -144,12 +162,14 @@ oai.kill(user, pw)
 oai.rm_driver(oai,user,pw)
 
 # start te test cases 
-rv=case01.execute(oai, user, pw, host,logfile,logdir,debug)
-if rv != 0 :
+if is_compiled == 0 :
+    is_compiled=case01.execute(oai, user, pw, host,logfile,logdir,debug,timeout)
+    
+if is_compiled != 0 :
     case02.execute(oai, user, pw, host, logfile,logdir,debug)
     case03.execute(oai, user, pw, host, logfile,logdir,debug)
     case04.execute(oai, user, pw, host, logfile,logdir,debug)
-    #case05.execute(oai, user, pw, host, logfile,logdir,debug)
+    case05.execute(oai, user, pw, host, logfile,logdir,debug)
 else :
     print 'Compilation error: skip test case 02,03,04,05'
 
diff --git a/targets/build_oai.bash b/targets/build_oai.bash
index f2af775341..89ca4705cc 100755
--- a/targets/build_oai.bash
+++ b/targets/build_oai.bash
@@ -737,18 +737,17 @@ case "$BUILD_LTE" in
          build_enb
          ;;
     'EPC')
-         echo_warning "build EPC(MME and xGW): Experimental"
+         echo_success "build EPC(MME and xGW)"
          build_epc
          ;;
     'HSS')
-         echo_warning "BUILD_LTE: $BUILD_LTE"
-         echo_warning "build HSS: Experimental"
-         build_hss 
-         ;;
+        echo_success "build HSS"
+        build_hss 
+        ;;
     'NONE')
-         ;;
+        ;;
     *)
-         ;;
+        ;;
 esac
 
 # Additional operation 
@@ -757,25 +756,25 @@ esac
 # Generate doxygen documentation
 ############################################
 
-    if [ $DOXYGEN = 1 ]; then 
-        echo_info "9. Generate doxygen documentation ..."
-        doxygen $OPENAIR_TARGETS/DOCS/Doxyfile
-        echo_info "9.1 use your navigator to open $OPENAIR_TARGETS/DOCS/html/index.html "
-    else 
-        echo_info "9. Bypassing doxygen documentation ..."
-    fi 
+if [ $DOXYGEN = 1 ]; then 
+    echo_info "9. Generate doxygen documentation ..."
+    doxygen $OPENAIR_TARGETS/DOCS/Doxyfile
+    echo_info "9.1 use your navigator to open $OPENAIR_TARGETS/DOCS/html/index.html "
+else 
+    echo_info "9. Bypassing doxygen documentation ..."
+fi 
 
 
 ############################################
 # testing
 ############################################
     
-    if [ $OAI_TEST -eq 1 ]; then 
-        echo_info "10. Testing ..."
-        python $OPENAIR_TARGETS/TEST/OAI/test01.py
-    else 
-        echo_info "10. Bypassing the Tests ..."
-    fi 
+if [ $OAI_TEST -eq 1 ]; then 
+    echo_info "10. Running OAI pre commit tests (pre-ci) ..."
+    python $OPENAIR_TARGETS/TEST/OAI/test01.py -l 
+else 
+    echo_info "10. Bypassing the Tests ..."
+fi 
     
 ############################################
 # run 
-- 
GitLab