diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 311f3952aa..0dc8d3051b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -2,8 +2,6 @@ job1:
script:
- date
- pwd
- - echo $OAI_USER
- - echo $OAI_PASS
- echo $OAI_TEST_CASE_GROUP
- echo $MACHINELIST
- echo $MACHINELISTGENERIC
diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt
index e4318a41cc..a4aa081bec 100644
--- a/cmake_targets/CMakeLists.txt
+++ b/cmake_targets/CMakeLists.txt
@@ -236,6 +236,9 @@ add_boolean_option(XFORMS False "This adds the possibility to see t
add_boolean_option(PRINT_STATS False "This adds the possibility to see the status")
add_boolean_option(T_TRACER False "Activate the T tracer, a debugging/monitoring framework" )
add_boolean_option(UE_AUTOTEST_TRACE False "Activate UE autotest specific logs")
+add_boolean_option(UE_DEBUG_TRACE False "Activate UE debug trace")
+add_boolean_option(UE_TIMING_TRACE False "Activate UE timing trace")
+add_boolean_option(DISABLE_LOG_X False "Deactivate all LOG_* macros")
add_boolean_option(DEBUG_CONSOLE False "makes debugging easier, disables stdout/stderr buffering")
@@ -1633,9 +1636,25 @@ else()
endif()
# Atlas is required by some packages, but not found in pkg-config
-if(EXISTS "/usr/include/atlas/cblas.h")
+# So, here are some hacks here. Hope this gets fixed in future!
+if(EXISTS "/usr/include/atlas/cblas.h" OR EXISTS "/usr/include/cblas.h")
include_directories("/usr/include/atlas")
- list(APPEND ATLAS_LIBRARIES cblas atlas lapack)
+ LINK_DIRECTORIES("/usr/lib64")
+ LINK_DIRECTORIES("/usr/lib64/atlas") #Added because atlas libraries in CentOS 7 are here!
+
+ if(EXISTS "/usr/lib64/libblas.so" OR EXISTS "/usr/lib/libblas.so") #Case for CentOS7
+ list(APPEND ATLAS_LIBRARIES blas)
+ else() # Case for Ubuntu
+ list(APPEND ATLAS_LIBRARIES cblas)
+ endif()
+
+ if(EXISTS "/usr/lib/atlas/libtatlas.so" OR EXISTS "/usr/lib64/atlas/libtatlas.so") #Case for CentOS7
+ list(APPEND ATLAS_LIBRARIES tatlas)
+ else()
+ list(APPEND ATLAS_LIBRARIES atlas) #Case for Ubuntu
+ endif()
+
+ list(APPEND ATLAS_LIBRARIES lapack)
else()
message("No Blas/Atlas libs found, some targets will fail")
endif()
diff --git a/cmake_targets/autotests/testsuite_ue_noS1_TCL.xml b/cmake_targets/autotests/testsuite_ue_noS1_TCL.xml
index 971819ade5..43aef8c322 100644
--- a/cmake_targets/autotests/testsuite_ue_noS1_TCL.xml
+++ b/cmake_targets/autotests/testsuite_ue_noS1_TCL.xml
@@ -7,8 +7,8 @@
https://gitlab.eurecom.fr/oai/openair-cn.git -->
- eNB_phy-test_fix_20MHz
- eNB_phy-test_fix_20MHz -->
+ develop
+ develop -->
@@ -71,7 +71,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S --phy-test
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S --phy-test
@@ -96,6 +96,59 @@
unit_of_meas = ""/>
+
+
+
+ lte-softmodem-noS1
+
+ TCT-Labo1
+ TCT-Labo3
+ 300
+ /tmp
+ $OPENAIR_DIR/cmake_targets/build_oai
+ -c -w USRP --eNB --noS1
+ source $OPENAIR_DIR/cmake_targets/tools/init_nas_nos1 eNB
+
+ $OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1
+ -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band40.tm1.TDD3SS5.25PRB.usrpb210.conf -W -m 0 --single-thread-disable --phy-test
+
+
+
+
+ False
+
+ /tmp
+
+ $OPENAIR_DIR/cmake_targets/build_oai
+ -c --UE -w USRP --noS1 --eNB --ue-autotest-trace
+ source ./targets/bin/init_nas_nos1 UE
+
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -T -C2350000000 -r25 --ue-scan-carrier --ue-txgain 80 --ue-rxgain 100 -S --phy-test
+
+
+
+
+
+ False
+
+ UE_USRP.NOS1.PHYTEST_PERF.BAND40.5MHZ.MCS00
+ 11
+
+
+
+
+
lte-softmodem-noS1
@@ -173,7 +226,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S --phy-test
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S --phy-test
@@ -280,7 +333,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S --phy-test
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S --phy-test
@@ -382,7 +435,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S --phy-test
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S --phy-test
@@ -484,7 +537,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S --phy-test
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S --phy-test
@@ -586,7 +639,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S --phy-test
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S --phy-test
@@ -688,7 +741,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S --phy-test
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S --phy-test
@@ -790,7 +843,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S --phy-test
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S --phy-test
@@ -893,7 +946,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S --phy-test
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S --phy-test
@@ -995,7 +1048,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S --phy-test
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S --phy-test
@@ -1097,7 +1150,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S --phy-test
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S --phy-test
@@ -1199,7 +1252,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S --phy-test
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S --phy-test
@@ -1301,7 +1354,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S --phy-test
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S --phy-test
@@ -1404,7 +1457,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S --phy-test
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S --phy-test
@@ -1506,7 +1559,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S --phy-test
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S --phy-test
@@ -1608,7 +1661,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S --phy-test
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S --phy-test
@@ -1762,7 +1815,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S --phy-test
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S --phy-test
@@ -1865,7 +1918,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2685000000 -r50 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S --phy-test
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2685000000 -r50 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S --phy-test
@@ -1968,7 +2021,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2685000000 -r50 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S --phy-test
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2685000000 -r50 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S --phy-test
@@ -2074,7 +2127,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2685000000 -r50 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2685000000 -r50 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S
iperf -s -i 1 -u
@@ -2098,6 +2151,54 @@
+
+ lte-softmodem-noS1
+
+ TCT-Labo1
+ TCT-Labo3
+ 300
+ /tmp
+ $OPENAIR_DIR/cmake_targets/build_oai
+ -c -w USRP --eNB --noS1
+ source $OPENAIR_DIR/cmake_targets/tools/init_nas_nos1 eNB
+
+ $OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1
+ -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band40.tm1.TDD3SS5.50PRB.usrpb210.conf -W -m 28
+ sleep 30;iperf -c 10.0.1.9 -i 1 -u -b 18M
+
+
+
+ False
+
+ /tmp
+
+ $OPENAIR_DIR/cmake_targets/build_oai
+ -c --UE -w USRP --noS1 --eNB --ue-autotest-trace
+ source ./targets/bin/init_nas_nos1 UE
+
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -T -C2350000000 -r50 --ue-scan-carrier --ue-txgain 80 --ue-rxgain 100 -S
+
+ iperf -s -i 1 -u
+
+ 200
+
+ False
+ UE_USRP.NOS1.DATA_IPERF.BAND40.10MHZ.MCS28
+ 36
+
+
+
+
+
@@ -2441,7 +2542,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S
iperf -s -i 1 -u
@@ -2518,7 +2619,8 @@
-
+
+
lte-softmodem-noS1
TCT-Labo1
@@ -2544,7 +2646,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S
iperf -s -i 1 -u
@@ -2568,6 +2670,54 @@
+
+ lte-softmodem-noS1
+
+ TCT-Labo1
+ TCT-Labo3
+ 300
+ /tmp
+ $OPENAIR_DIR/cmake_targets/build_oai
+ -c -w USRP --eNB --noS1
+ source $OPENAIR_DIR/cmake_targets/tools/init_nas_nos1 eNB
+
+ $OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1
+ -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band40.tm1.TDD3SS5.25PRB.usrpb210.conf -W -m 0
+ sleep 80;iperf -c 10.0.1.9 -i 1 -u -b 300K
+
+
+
+ False
+
+ /tmp
+
+ $OPENAIR_DIR/cmake_targets/build_oai
+ -c --UE -w USRP --noS1 --eNB --ue-autotest-trace
+ source ./targets/bin/init_nas_nos1 UE
+
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -T -C2350000000 -r25 --ue-scan-carrier --ue-txgain 80 --ue-rxgain 100 -S
+
+ iperf -s -i 1 -u
+
+ 200
+
+ False
+ UE_USRP.NOS1.DATA_IPERF.BAND40.5MHZ.MCS00
+ 36
+
+
+
+
+
lte-softmodem-noS1
@@ -2595,7 +2745,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S
iperf -s -i 1 -u
@@ -2645,7 +2795,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S
iperf -s -i 1 -u
@@ -2696,7 +2846,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S
iperf -s -i 1 -u
@@ -2719,6 +2869,54 @@
unit_of_meas = ""/>
+
+
+ lte-softmodem-noS1
+
+ TCT-Labo1
+ TCT-Labo3
+ 300
+ /tmp
+ $OPENAIR_DIR/cmake_targets/build_oai
+ -c -w USRP --eNB --noS1
+ source $OPENAIR_DIR/cmake_targets/tools/init_nas_nos1 eNB
+
+ $OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1
+ -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band40.tm1.TDD3SS5.25PRB.usrpb210.conf -W -m 0
+ sleep 80;iperf -c 10.0.1.9 -i 1 -u -b 1200K
+
+
+
+ False
+
+ /tmp
+
+ $OPENAIR_DIR/cmake_targets/build_oai
+ -c --UE -w USRP --noS1 --eNB --ue-autotest-trace
+ source ./targets/bin/init_nas_nos1 UE
+
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -T -C2350000000 -r25 --ue-scan-carrier --ue-txgain 80 --ue-rxgain 100 -S
+
+ iperf -s -i 1 -u
+
+ 200
+
+ False
+ UE_USRP.NOS1.DATA_IPERF.BAND40.5MHZ.MCS16
+ 36
+
+
+
+
lte-softmodem-noS1
@@ -2746,7 +2944,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S
iperf -s -i 1 -u
@@ -2796,7 +2994,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S
iperf -s -i 1 -u
@@ -2846,7 +3044,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 5; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S
+ sleep 5; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S
iperf -s -i 1 -u
@@ -2905,7 +3103,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S --phy-test
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S --phy-test
@@ -2956,7 +3154,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S --phy-test
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S --phy-test
@@ -3008,7 +3206,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 5; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S
+ sleep 5; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S
iperf -s -i 1 -u
@@ -3037,6 +3235,55 @@
+
+ lte-softmodem-noS1
+
+ TCT-Labo1
+ TCT-Labo3
+ 300
+ /tmp
+ $OPENAIR_DIR/cmake_targets/build_oai
+ -c -w USRP --eNB --noS1
+ source $OPENAIR_DIR/cmake_targets/tools/init_nas_nos1 eNB
+
+ $OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1
+ -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band40.tm1.TDD3SS5.25PRB.usrpb210.conf -W -m 28
+ sleep 30;iperf -c 10.0.1.9 -i 1 -u -b 8220K
+
+
+
+ False
+
+ /tmp
+
+ $OPENAIR_DIR/cmake_targets/build_oai
+ -c --UE -w USRP --noS1 --eNB --ue-autotest-trace
+ source ./targets/bin/init_nas_nos1 UE
+
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -T -C2350000000 -r25 --ue-scan-carrier --ue-txgain 80 --ue-rxgain 100 -S
+
+ iperf -s -i 1 -u
+
+ 200
+
+ False
+ UE_USRP.NOS1.DATA_IPERF.BAND40.5MHZ.MCS28
+ 36
+
+
+
+
+
+
lte-softmodem-noS1
@@ -3066,7 +3313,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S
iperf -s -i 1 -u
@@ -3116,7 +3363,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 5; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S
+ sleep 5; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2660000000 -r25 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S
iperf -s -i 1
@@ -3171,7 +3418,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2685000000 -r50 --ue-scan-carrier --ue-txgain 85 -A 24 --ue-rxgain 100 -S
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2685000000 -r50 --ue-scan-carrier --ue-txgain 80 -A 24 --ue-rxgain 100 -S
iperf -s -i 1
@@ -3228,7 +3475,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2680000000 -r100 --ue-scan-carrier --ue-txgain 85 --ue-rxgain 100 -S --phy-test
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2680000000 -r100 --ue-scan-carrier --ue-txgain 80 --ue-rxgain 100 -S --phy-test
@@ -3254,6 +3501,9 @@
+
+
+
lte-softmodem-noS1
@@ -3280,7 +3530,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2680000000 -r100 --ue-scan-carrier --ue-txgain 85 --ue-rxgain 100 -S --phy-test
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2680000000 -r100 --ue-scan-carrier --ue-txgain 80 --ue-rxgain 100 -S --phy-test
@@ -3332,7 +3582,7 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2680000000 -r100 --ue-scan-carrier --ue-txgain 85 --ue-rxgain 100 -S --phy-test
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2680000000 -r100 --ue-scan-carrier --ue-txgain 80 --ue-rxgain 100 -S --phy-test
@@ -3373,7 +3623,7 @@
$OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1
-O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpb210.conf -m 0
- sleep 80;iperf -c 10.0.1.9 -i 1 -u -b 2M
+ sleep 60;iperf -c 10.0.1.9 -i 1 -u -b 2M
@@ -3385,11 +3635,11 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2680000000 -r100 --ue-scan-carrier --ue-txgain 85 --ue-rxgain 100
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2680000000 -r100 --ue-scan-carrier --ue-txgain 80 --ue-rxgain 100
iperf -s -i 1 -u
- 600
+ 200
False
$OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1
-O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpb210.conf -m 18
- sleep 80;iperf -c 10.0.1.9 -i 1 -u -b 24M
+ sleep 60;iperf -c 10.0.1.9 -i 1 -u -b 24M
@@ -3435,11 +3685,11 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2680000000 -r100 --ue-scan-carrier --ue-txgain 85 --ue-rxgain 100
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2680000000 -r100 --ue-scan-carrier --ue-txgain 80 --ue-rxgain 100
iperf -s -i 1 -u
- 600
+ 200
False
$OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1
-O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.100PRB.usrpb210.conf -m 28
- sleep 80;iperf -c 10.0.1.9 -i 1 -u -b 55M
+ sleep 60;iperf -c 10.0.1.9 -i 1 -u -b 55M
@@ -3486,11 +3736,11 @@
-c --UE -w USRP --noS1 --eNB --ue-autotest-trace
source ./targets/bin/init_nas_nos1 UE
- sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2680000000 -r100 --ue-scan-carrier --ue-txgain 85 --ue-rxgain 100
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -C2680000000 -r100 --ue-scan-carrier --ue-txgain 80 --ue-rxgain 100
iperf -s -i 1 -u
- 600
+ 200
False
36
+
+ lte-softmodem-noS1
+
+ TCT-Labo1
+ TCT-Labo3
+ 300
+ /tmp
+ $OPENAIR_DIR/cmake_targets/build_oai
+ -c -w USRP --eNB --noS1
+ source $OPENAIR_DIR/cmake_targets/tools/init_nas_nos1 eNB
+
+ $OPENAIR_DIR/cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1
+ -O $OPENAIR_DIR/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band40.tm1.TDD3SS5.100PRB.usrpb210.conf -W -m 28
+ sleep 30;iperf -c 10.0.1.9 -i 1 -u -b 33M
+
+
+
+ False
+ /tmp
+
+ $OPENAIR_DIR/cmake_targets/build_oai
+ -c --UE -w USRP --noS1 --eNB --ue-autotest-trace
+ source ./targets/bin/init_nas_nos1 UE
+
+ sleep 20; ./cmake_targets/autotests/tools/run_gdb ./cmake_targets/lte_noS1_build_oai/build/lte-softmodem-nos1 -U -T -C2350000000 -r100 --ue-scan-carrier --ue-txgain 80 --ue-rxgain 100 -S
+
+ iperf -s -i 1 -u
+
+ 200
+
+ False
+ UE_USRP.NOS1.DATA_IPERF.BAND40.20MHZ.MCS28
+ 36
+
+
+
+
diff --git a/cmake_targets/autotests/v2/actions/alu_hss.bash b/cmake_targets/autotests/v2/actions/alu_hss.bash
index be32fe9eb0..1fb719c25b 100644
--- a/cmake_targets/autotests/v2/actions/alu_hss.bash
+++ b/cmake_targets/autotests/v2/actions/alu_hss.bash
@@ -1,4 +1,5 @@
sudo rmmod nasmesh || true
sudo rmmod ue_ip || true
sudo /opt/ltebox/tools/stop_ltebox || true
+sudo killall -9 hss_sim || true
sudo /opt/hss_sim0609/starthss_real
diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai
index 93a7ac073e..d4ced88c31 100755
--- a/cmake_targets/build_oai
+++ b/cmake_targets/build_oai
@@ -61,9 +61,12 @@ BUILD_DOXYGEN=0
T_TRACER="False"
DISABLE_HARDWARE_DEPENDENCY="False"
CMAKE_BUILD_TYPE=""
+CMAKE_CMD="$CMAKE"
UE_AUTOTEST_TRACE="False"
+UE_DEBUG_TRACE="False"
+UE_TIMING_TRACE="False"
+DISABLE_LOG_X="False"
BUILD_ECLIPSE=0
-CMAKE_CMD='cmake'
trap handle_ctrl_c INT
function print_help() {
@@ -147,6 +150,12 @@ Options
Disable HW dependency during installation
--ue-autotest-trace
Enable specific traces for UE autotest framework
+--ue-trace
+ Enable traces for UE debugging
+--ue-timing
+ Enable traces for timing
+--disable-log
+ Disable all LOG_* macros
--build-eclipse
Build eclipse project files. Paths are auto corrected by fixprj.sh
Usage (first build):
@@ -316,6 +325,18 @@ function main() {
UE_AUTOTEST_TRACE="True"
echo_info "Enabling autotest specific trace for UE"
shift 1;;
+ --ue-trace)
+ UE_DEBUG_TRACE="True"
+ echo_info "Enabling UE trace for debug"
+ shift 1;;
+ --ue-timing)
+ UE_TIMING_TRACE="True"
+ echo_info "Enabling UE timing trace"
+ shift 1;;
+ --disable-log)
+ DISABLE_LOG_X="True"
+ echo_info "Disabling all LOG_* traces"
+ shift 1;;
--uhd-images-dir)
UHD_IMAGES_DIR=$2
echo_info "Downloading UHD images in the indicated location"
@@ -504,6 +525,9 @@ function main() {
echo "set (CPU_AFFINITY \"${CPU_AFFINITY_FLAG_USER}\" )" >>$cmake_file
echo "set ( T_TRACER $T_TRACER )" >> $cmake_file
echo "set (UE_AUTOTEST_TRACE $UE_AUTOTEST_TRACE)" >> $cmake_file
+ echo "set (UE_DEBUG_TRACE $UE_DEBUG_TRACE)" >> $cmake_file
+ echo "set (UE_TIMING_TRACE $UE_TIMING_TRACE)" >> $cmake_file
+ echo "set (DISABLE_LOG_X $DISABLE_LOG_X)" >> $cmake_file
if [ "$UE" = 1 -a "$NOS1" = "0" ] ; then
echo_info "Compiling UE S1 build : enabling Linux and NETLINK"
echo "set (LINUX True )" >> $cmake_file
diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper
index a57040449c..29d839b543 100755
--- a/cmake_targets/tools/build_helper
+++ b/cmake_targets/tools/build_helper
@@ -24,6 +24,22 @@
# authors Laurent Thomas, Lionel GAUTHIER
#
#######################################
+if [ ! -f /etc/os-release ]; then
+ echo "No /etc/os-release file found. You're likely on an unsupported distro."
+ exit -1
+fi
+OS_DISTRO=$(grep "^ID=" /etc/os-release | sed "s/ID=//" | sed "s/\"//g")
+OS_RELEASE=$(grep "^VERSION_ID=" /etc/os-release | sed "s/VERSION_ID=//" | sed "s/\"//g")
+case "$OS_DISTRO" in
+ fedora) OS_BASEDISTRO="fedora"; INSTALLER="dnf"; CMAKE="cmake" ;;
+ rhel) OS_BASEDISTRO="fedora"; INSTALLER="yum"; CMAKE="cmake3" ;;
+ centos) OS_BASEDISTRO="fedora"; INSTALLER="yum"; CMAKE="cmake3" ;;
+ debian) OS_BASEDISTRO="debian"; INSTALLER="apt-get"; CMAKE="cmake" ;;
+ ubuntu) OS_BASEDISTRO="debian"; INSTALLER="apt-get"; CMAKE="cmake" ;;
+esac
+KERNEL_VERSION=$(uname -r | cut -d '.' -f1)
+KERNEL_MAJOR=$(uname -r | cut -d '.' -f2)
+
SUDO='sudo -E'
###############################
@@ -66,12 +82,11 @@ echo_info() { cecho "$*" $blue ;}
# If we can't check the distribution, it returns "Unknown"
# This function return always true as exit code by design
# Examples:
-# Ubuntu16.04
-# Debian8.5
+# ubuntu16.04
+# debian8.5
get_distribution_release() {
- local distributor
- if distributor=$(lsb_release -si 2>/dev/null) ; then
- echo $distributor$(lsb_release -sr)
+ if [[ ! -z "$OS_DISTRO$OS_RELEASE" ]]; then
+ echo "$OS_DISTRO$OS_RELEASE"
else
echo Unknown
fi
@@ -80,8 +95,11 @@ get_distribution_release() {
check_supported_distribution() {
local distribution=$(get_distribution_release)
case "$distribution" in
- "Ubuntu16.04") return 0 ;;
- "Ubuntu14.04") return 0 ;;
+ "ubuntu16.04") return 0 ;;
+ "ubuntu14.04") return 0 ;;
+ "fedora24") return 0 ;;
+ "rhel7") return 0 ;;
+ "centos7") return 0 ;;
esac
return 1
}
@@ -200,6 +218,9 @@ install_protobuf_c_from_source(){
protobuf_c_install_log=$OPENAIR_DIR/cmake_targets/log/protobuf_c_install_log.txt
echo_info "\nInstalling Google Protobuf_C from sources. The log file for Protobuf_C installation is here: $protobuf_c_install_log "
(
+ if [[ "$OS_DISTRO" == "rhel" ]] || [[ "$OS_DISTRO" == "centos" ]]; then
+ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
+ fi
cd /tmp
echo "Downloading protobuf-c"
rm -rf /tmp/protobuf-c
@@ -214,7 +235,29 @@ install_protobuf_c_from_source(){
) >& $protobuf_c_install_log
}
+install_usrp_uhd_driver_from_source(){
+ uhd_install_log=$OPENAIR_DIR/cmake_targets/log/uhd_install_log.txt
+ echo_info "\nInstalling UHD driver from sources. The log file for UHD driver installation is here: $uhd_install_log "
+ (
+ cd /tmp
+ echo "Downloading UHD driver"
+ rm -rf /tmp/uhd
+ git clone git://github.com/EttusResearch/uhd.git
+ cd uhd
+ git checkout tags/release_003_010_001_001
+ mkdir -p host/build
+ cd host/build
+ $CMAKE ../
+ echo "Compiling UHD"
+ make
+ make test
+ $SUDO make install
+ $SUDO ldconfig
+ ) >& $uhd_install_log
+}
+
check_install_usrp_uhd_driver(){
+ if [[ "$OS_DISTRO" == "ubuntu" ]]; then
#first we remove old installation
$SUDO apt-get remove -y uhd || true
$SUDO apt-get remove libuhd-dev libuhd003 uhd-host -y
@@ -225,27 +268,72 @@ check_install_usrp_uhd_driver(){
$SUDO apt-get update
$SUDO apt-get -y --allow-unauthenticated install python python-tk libboost-all-dev libusb-1.0-0-dev
$SUDO apt-get -y --allow-unauthenticated install libuhd-dev libuhd003 uhd-host
+ elif [[ "$OS_BASEDISTRO" == "fedora" ]]; then
+ $SUDO $INSTALLER -y install python boost libusb-devel libusbx-devel boost-devel python-mako python-docutils cmake
+ if [[ "$OS_DISTRO" == "rhel" ]] || [[ "$OS_DISTRO" == "centos" ]]; then
+ # until EPEL repo hasn't bumped UHD driver to >=3.10 in EPEL, build driver from source
+ $SUDO $INSTALLER -y remove uhd uhd-devel uhd-firmware
+ install_ursp_uhd_driver_from_source
+ else
+ $SUDO $INSTALLER -y install uhd uhd-devel uhd-firmware
+ fi
+ fi
}
install_usrp_uhd_driver() {
+ if [[ "$OS_DISTRO" == "ubuntu" ]]; then
# We move uhd-host apart because it depends on linux kernel version
# On newer kernels, it fails to install
$SUDO apt-get -y install uhd-host
- if [ -z $1 ]; then
- $SUDO uhd_images_downloader
- else
- $SUDO uhd_images_downloader -i $1
- fi
+ fi
+ if [ -z $1 ]; then
+ $SUDO uhd_images_downloader
+ else
+ $SUDO uhd_images_downloader -i $1
+ fi
+}
+
+install_bladerf_driver_from_source(){
+ bladerf_install_log=$OPENAIR_DIR/cmake_targets/log/bladerf_install_log.txt
+ echo_info "\nInstalling BladeRF driver from sources. The log file for BladeRF driver installation is here: $bladerf_install_log "
+ (
+ cd /tmp
+ echo "Downloading BladeRF driver"
+ rm -rf /tmp/bladeRF
+ git clone https://github.com/Nuand/bladeRF.git
+ cd bladeRF
+ git checkout tags/2016.06
+ mkdir -p build
+ cd build
+ $CMAKE ../
+ echo "Compiling BladeRF driver"
+ make
+ $SUDO make install
+ $SUDO ldconfig
+ echo "Downloading FPGA and firmware images"
+ cd /tmp/bladeRF
+ wget https://www.nuand.com/fx3/bladeRF_fw_latest.img
+ wget https://www.nuand.com/fpga/hostedx40-latest.rbf
+ sudo mkdir -p /usr/share/Nuand/bladeRF
+ sudo mv bladeRF_fw_latest.img /usr/share/Nuand/bladeRF/bladeRF_fw.img
+ sudo mv hostedx40-latest.rbf /usr/share/Nuand/bladeRF/hostedx40.rbf
+ ) >& $bladerf_install_log
}
check_install_bladerf_driver(){
- if [ "$(get_distribution_release)" == "Ubuntu14.04" ] ; then
- $SUDO add-apt-repository -y ppa:bladerf/bladerf
- $SUDO apt-get update
- fi
- $SUDO apt-get install -y --allow-unauthenticated bladerf libbladerf-dev
- $SUDO apt-get install -y --allow-unauthenticated bladerf-firmware-fx3
- $SUDO apt-get install -y --allow-unauthenticated bladerf-fpga-hostedx40
+ if [[ "$OS_DISTRO" == "ubuntu" ]]; then
+ if [ "$(get_distribution_release)" == "ubuntu14.04" ] ; then
+ $SUDO add-apt-repository -y ppa:bladerf/bladerf
+ $SUDO apt-get update
+ fi
+ $SUDO apt-get install -y --allow-unauthenticated bladerf libbladerf-dev
+ $SUDO apt-get install -y --allow-unauthenticated bladerf-firmware-fx3
+ $SUDO apt-get install -y --allow-unauthenticated bladerf-fpga-hostedx40
+ elif [[ "$OS_BASEDISTRO" == "fedora" ]]; then
+ install_bladerf_driver_from_source
+ else
+ echo_error "BladeRF Installer for OAI does not support automatic build. Install BladeRF compiling sources manually from BladeRF website"
+ fi
}
flash_firmware_bladerf() {
@@ -268,8 +356,9 @@ check_install_lmssdr_driver(){
}
check_install_additional_tools (){
- $SUDO apt-get update
- $SUDO apt-get install -y \
+ $SUDO $INSTALLER update -y
+ if [[ "$OS_DISTRO" == "ubuntu" ]]; then
+ PACKAGE_LIST="\
check \
dialog \
dkms \
@@ -298,13 +387,73 @@ check_install_additional_tools (){
bc \
ntp \
python-scipy \
- python-matplotlib
-
- $SUDO pip install paramiko
- $SUDO pip install pyroute2 colorama
+ python-matplotlib"
+ elif [[ "$OS_DISTRO" == "rhel" ]] || [[ "$OS_DISTRO" == "centos" ]]; then
+ PACKAGE_LIST="\
+ check \
+ dialog \
+ dkms \
+ gawk \
+ boost-devel \
+ openvpn \
+ pkgconfig \
+ pexpect \
+ sshfs \
+ swig \
+ wireshark \
+ unzip \
+ valgrind \
+ vconfig \
+ ctags \
+ ntpdate \
+ iperf3 \
+ wvdial \
+ numpy \
+ sshpass \
+ nscd \
+ python2-paramiko \
+ python-pyroute2 \
+ python-netifaces \
+ scipy \
+ python-matplotlib"
+ elif [[ "$OS_DISTRO" == "fedora" ]]; then
+ PACKAGE_LIST=" \
+ check \
+ dialog \
+ dkms \
+ gawk \
+ boost-devel \
+ openvpn \
+ pkgconfig \
+ python-pexpect \
+ sshfs \
+ swig \
+ wireshark \
+ unzip \
+ valgrind \
+ vconfig \
+ ctags \
+ ntpdate \
+ iperf3 \
+ wvdial \
+ python-numpy \
+ sshpass \
+ nscd \
+ python2-paramiko \
+ python-pyroute2 \
+ python-netifaces \
+ python2-scipy \
+ python2-matplotlib"
+ fi
+ $SUDO $INSTALLER install -y $PACKAGE_LIST
+
$SUDO rm -fr /opt/ssh
$SUDO GIT_SSL_NO_VERIFY=true git clone https://gitlab.eurecom.fr/oai/ssh.git /opt/ssh
-
+
+ #The packages below are already installed for Redhat distros (RHEL, CentOS, Fedora)
+ if [[ "$OS_DISTRO" == "ubuntu" ]]; then
+ $SUDO pip install paramiko
+ $SUDO pip install pyroute2 colorama
log_netiface=$OPENAIR_DIR/cmake_targets/log/netiface_install_log.txt
echo_info "Installing Netinterfaces package. The logfile for installation is in $log_netiface"
(
@@ -315,6 +464,7 @@ check_install_additional_tools (){
$SUDO python setup.py install
cd -
) >& $log_netiface
+ fi
}
check_install_oai_software() {
@@ -323,16 +473,17 @@ check_install_oai_software() {
echo_error "Your distribution $(get_distribution_release) is not supported by oai !"
exit 1
fi
- $SUDO apt-get update
+ $SUDO $INSTALLER update -y
+ if [[ "$OS_DISTRO" == "ubuntu" ]]; then
$SUDO apt install -y software-properties-common
case "$(get_distribution_release)" in
- "Ubuntu14.04")
+ "ubuntu14.04")
specific_packages="libtasn1-3-dev"
# For iperf3
$SUDO add-apt-repository "deb http://archive.ubuntu.com/ubuntu trusty-backports universe"
$SUDO apt-get update
;;
- "Ubuntu16.04")
+ "ubuntu16.04")
specific_packages="libtasn1-6-dev"
;;
esac
@@ -395,7 +546,8 @@ check_install_oai_software() {
python-pip \
pydb \
libyaml-dev \
- wget
+ wget \
+ libxpm-dev
$SUDO update-alternatives --set liblapack.so /usr/lib/atlas-base/atlas/liblapack.so
@@ -406,7 +558,86 @@ check_install_oai_software() {
remove_gnutls_from_source
$SUDO apt-get install -y libgnutls-dev
+ elif [[ "$OS_BASEDISTRO" == "fedora" ]]; then
+ if [[ "$OS_DISTRO" == "rhel" ]] || [[ "$OS_DISTRO" == "centos" ]]; then
+ if rpm -q epel-release > /dev/null; then
+ echo "EPEL repos already present. Good."
+ else
+ echo "EPEL repos not present. Installing them."
+ $SUDO $INSTALLER install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
+ fi
+ $SUDO $INSTALLER install -y python-epdb
+ $SUDO $INSTALLER install -y gccxml
+ else
+ $SUDO $INSTALLER install -y mscgen pydb
+ # Fedora repos already contain gccxml's successor castxml.
+ $SUDO $INSTALLER install -y castxml
+ fi
+ $SUDO $INSTALLER install -y \
+ autoconf \
+ automake \
+ bc \
+ bison \
+ $CMAKE \
+ doxygen \
+ ethtool \
+ flex \
+ gdb \
+ git \
+ graphviz \
+ gtkwave \
+ guile-devel \
+ iperf \
+ iproute \
+ iptables \
+ iptables-devel \
+ atlas-devel \
+ blas-devel \
+ libconfig-devel \
+ libffi-devel \
+ xforms \
+ xforms-devel \
+ libgcrypt-devel \
+ gmp-devel \
+ gtk3-devel \
+ libidn2-devel \
+ libidn-devel \
+ mariadb-devel \
+ octave-devel \
+ openpgm-devel \
+ lksctp-tools \
+ lksctp-tools-devel \
+ openssl-devel \
+ libtasn1 \
+ libtool \
+ libusb-devel \
+ libxml2 \
+ libxml2-devel \
+ libxslt-devel \
+ octave \
+ octave-signal \
+ openssh-clients \
+ openssh-server \
+ openssl \
+ patch \
+ psmisc \
+ python \
+ subversion \
+ xmlstarlet \
+ python-pip \
+ wget \
+ kernel-headers \
+ kernel-devel \
+ nettle-devel \
+ gnutls-devel \
+ libXpm-devel \
+ lapack \
+ lapack-devel \
+ blas \
+ blas-devel
+ fi
+
install_asn1c_from_source
$SUDO rm -fr /opt/ssh
$SUDO git clone https://gist.github.com/2190472.git /opt/ssh
@@ -414,7 +645,7 @@ check_install_oai_software() {
install_protobuf_c_from_source
}
-### Remove Nettle installation which was done from sources
+### Remove Nettle installation which was done from sources (only done for Ubuntu Distro)
remove_nettle_from_source() {
nettle_uninstall_log=$OPENAIR_DIR/cmake_targets/log/nettle_uninstall_log.txt
echo_info "\nUn-Installing Nettle from sources. The log file for nettle un-installation is here: $nettle_uninstall_log "
@@ -440,7 +671,7 @@ remove_nettle_from_source() {
) >& $nettle_uninstall_log
}
-### Remove Gnutls from source
+### Remove Gnutls from source (Only done for Ubuntu Distro)
remove_gnutls_from_source(){
gnutls_uninstall_log=$OPENAIR_DIR/cmake_targets/log/gnutls_uninstall_log.txt
echo_info "\nUn-Installing Gnutls. The log file for Gnutls un-installation is here: $gnutls_uninstall_log "
diff --git a/openair1/PHY/INIT/lte_parms.c b/openair1/PHY/INIT/lte_parms.c
index f0c63df9e6..730371dd61 100644
--- a/openair1/PHY/INIT/lte_parms.c
+++ b/openair1/PHY/INIT/lte_parms.c
@@ -44,7 +44,11 @@ int init_frame_parms(LTE_DL_FRAME_PARMS *frame_parms,uint8_t osf)
uint8_t log2_osf;
+#if DISABLE_LOG_X
+ printf("Initializing frame parms for N_RB_DL %d, Ncp %d, osf %d\n",frame_parms->N_RB_DL,frame_parms->Ncp,osf);
+#else
LOG_I(PHY,"Initializing frame parms for N_RB_DL %d, Ncp %d, osf %d\n",frame_parms->N_RB_DL,frame_parms->Ncp,osf);
+#endif
if (frame_parms->Ncp==EXTENDED) {
frame_parms->nb_prefix_samples0=512;
diff --git a/openair1/PHY/LTE_TRANSPORT/dci.c b/openair1/PHY/LTE_TRANSPORT/dci.c
index 8b7a818297..41180b6e61 100755
--- a/openair1/PHY/LTE_TRANSPORT/dci.c
+++ b/openair1/PHY/LTE_TRANSPORT/dci.c
@@ -1754,8 +1754,8 @@ int32_t rx_pdcch(PHY_VARS_UE *ue,
avgs = cmax(avgs,avgP[(aarx<<1)+aatx]);
log2_maxh = (log2_approx(avgs)/2) + 5; //+frame_parms->nb_antennas_rx;
-#ifdef DEBUG_PHY
- LOG_I(PHY,"subframe %d: pdcch log2_maxh = %d (%d,%d)\n",subframe,log2_maxh,avgP[0],avgs);
+#ifdef UE_DEBUG_TRACE
+ LOG_D(PHY,"subframe %d: pdcch log2_maxh = %d (%d,%d)\n",subframe,log2_maxh,avgP[0],avgs);
#endif
#if T_TRACER
@@ -2653,7 +2653,8 @@ int get_nCCE_offset_l1(int *CCE_table,
search_space_free = 1;
for (l=0; l= nCCE || CCE_table[cce] == 1) {
search_space_free = 0;
break;
}
diff --git a/openair1/PHY/LTE_TRANSPORT/dci_tools.c b/openair1/PHY/LTE_TRANSPORT/dci_tools.c
index bf68310ba7..9d63ac6ca7 100644
--- a/openair1/PHY/LTE_TRANSPORT/dci_tools.c
+++ b/openair1/PHY/LTE_TRANSPORT/dci_tools.c
@@ -6416,24 +6416,23 @@ int generate_ue_dlsch_params_from_dci(int frame,
break;
}
-/*#ifdef DEBUG_DCI
+#ifdef UE_DEBUG_TRACE
if (dlsch[0] && (dlsch[0]->rnti != 0xffff)) {
- printf("dci_format:%d Abssubframe: %d.%d \n",dci_format,frame%1024,subframe);
- printf("PDSCH dlsch0 UE: rnti %x\n",dlsch[0]->rnti);
- printf("PDSCH dlsch0 UE: NBRB %d\n",dlsch0_harq->nb_rb);
- printf("PDSCH dlsch0 UE: rballoc %x\n",dlsch0_harq->rb_alloc_even[0]);
- printf("PDSCH dlsch0 UE: harq_pid %d\n",harq_pid);
- //printf("PDSCH dlsch0 UE: tpc %d\n",TPC);
- printf("PDSCH dlsch0 UE: g %d\n",dlsch[0]->g_pucch);
- printf("PDSCH dlsch0 UE: round %d\n",dlsch0_harq->round);
- printf("PDSCH dlsch0 UE: DCINdi %d\n",dlsch0_harq->DCINdi);
- printf("PDSCH dlsch0 UE: rvidx %d\n",dlsch0_harq->rvidx);
- printf("PDSCH dlsch0 UE: TBS %d\n",dlsch0_harq->TBS);
- printf("PDSCH dlsch0 UE: mcs %d\n",dlsch0_harq->mcs);
- printf("PDSCH dlsch0 UE: pwr_off %d\n",dlsch0_harq->dl_power_off);
+ LOG_I(PHY,"dci_format:%d Abssubframe: %d.%d \n",dci_format,frame%1024,subframe);
+ LOG_D(PHY,"PDSCH dlsch0 UE: rnti %x\n",dlsch[0]->rnti);
+ LOG_D(PHY,"PDSCH dlsch0 UE: NBRB %d\n",dlsch0_harq->nb_rb);
+ LOG_D(PHY,"PDSCH dlsch0 UE: rballoc %x\n",dlsch0_harq->rb_alloc_even[0]);
+ LOG_D(PHY,"PDSCH dlsch0 UE: harq_pid %d\n",harq_pid);
+ LOG_D(PHY,"PDSCH dlsch0 UE: g %d\n",dlsch[0]->g_pucch);
+ LOG_D(PHY,"PDSCH dlsch0 UE: round %d\n",dlsch0_harq->round);
+ LOG_D(PHY,"PDSCH dlsch0 UE: DCINdi %d\n",dlsch0_harq->DCINdi);
+ LOG_D(PHY,"PDSCH dlsch0 UE: rvidx %d\n",dlsch0_harq->rvidx);
+ LOG_D(PHY,"PDSCH dlsch0 UE: TBS %d\n",dlsch0_harq->TBS);
+ LOG_D(PHY,"PDSCH dlsch0 UE: mcs %d\n",dlsch0_harq->mcs);
+ LOG_D(PHY,"PDSCH dlsch0 UE: pwr_off %d\n",dlsch0_harq->dl_power_off);
}
-#endif*/
+#endif
#if T_TRACER
if( (dlsch[0]->rnti != si_rnti) && (dlsch[0]->rnti != ra_rnti) && (dlsch[0]->rnti != p_rnti))
@@ -8061,7 +8060,7 @@ int generate_ue_ulsch_params_from_dci(void *dci_pdu,
if (ulsch->bundling)
ulsch->harq_processes[harq_pid]->O_ACK = (dai == 3)? 0 : 1;
else
- ulsch->harq_processes[harq_pid]->O_ACK = (dai+1)&3;
+ ulsch->harq_processes[harq_pid]->O_ACK = (dai >= 2)? 2 : (dai+1)&3; //(dai+1)&3;
// ulsch->harq_processes[harq_pid]->V_UL_DAI = dai+1;
}
@@ -8129,28 +8128,28 @@ int generate_ue_ulsch_params_from_dci(void *dci_pdu,
// ulsch->n_DMRS2 = ((DCI0_5MHz_TDD_1_6_t *)dci_pdu)->cshift;
-#ifdef DEBUG_DCI
+#ifdef UE_DEBUG_TRACE
- printf("Format 0 DCI : ulsch (ue): AbsSubframe %d.%d\n",proc->frame_rx%1024,subframe);
- printf("Format 0 DCI : ulsch (ue): NBRB %d\n",ulsch->harq_processes[harq_pid]->nb_rb);
- printf("Format 0 DCI :ulsch (ue): first_rb %d\n",ulsch->harq_processes[harq_pid]->first_rb);
- printf("Format 0 DCI :ulsch (ue): rballoc %d\n",rballoc);
- printf("Format 0 DCI :ulsch (ue): harq_pid %d\n",harq_pid);
- printf("Format 0 DCI :ulsch (ue): first_tx %d\n",ulsch->harq_processes[harq_pid]->first_tx);
- printf("Format 0 DCI :ulsch (ue): DCINdi %d\n",ulsch->harq_processes[harq_pid]->DCINdi);
- printf("Format 0 DCI :ulsch (ue): round %d\n",ulsch->harq_processes[harq_pid]->round);
- //printf("Format 0 DCI :ulsch (ue): TBS %d\n",ulsch->harq_processes[harq_pid]->TBS);
- printf("Format 0 DCI :ulsch (ue): mcs %d\n",ulsch->harq_processes[harq_pid]->mcs);
- //printf("Format 0 DCI :ulsch (ue): O %d\n",ulsch->O);
- //printf("Format 0 DCI :ulsch (ue): cqiReq %d\n",cqi_req);
+ LOG_I(PHY,"Format 0 DCI : ulsch (ue): AbsSubframe %d.%d\n",proc->frame_rx%1024,subframe);
+ LOG_D(PHY,"Format 0 DCI : ulsch (ue): NBRB %d\n",ulsch->harq_processes[harq_pid]->nb_rb);
+ LOG_D(PHY,"Format 0 DCI :ulsch (ue): first_rb %d\n",ulsch->harq_processes[harq_pid]->first_rb);
+ LOG_D(PHY,"Format 0 DCI :ulsch (ue): rballoc %d\n",rballoc);
+ LOG_D(PHY,"Format 0 DCI :ulsch (ue): harq_pid %d\n",harq_pid);
+ LOG_D(PHY,"Format 0 DCI :ulsch (ue): first_tx %d\n",ulsch->harq_processes[harq_pid]->first_tx);
+ LOG_D(PHY,"Format 0 DCI :ulsch (ue): DCINdi %d\n",ulsch->harq_processes[harq_pid]->DCINdi);
+ LOG_D(PHY,"Format 0 DCI :ulsch (ue): round %d\n",ulsch->harq_processes[harq_pid]->round);
+ //LOG_I(PHY,"Format 0 DCI :ulsch (ue): TBS %d\n",ulsch->harq_processes[harq_pid]->TBS);
+ LOG_D(PHY,"Format 0 DCI :ulsch (ue): mcs %d\n",ulsch->harq_processes[harq_pid]->mcs);
+ //LOG_I(PHY,"Format 0 DCI :ulsch (ue): O %d\n",ulsch->O);
+ //LOG_I(PHY,"Format 0 DCI :ulsch (ue): cqiReq %d\n",cqi_req);
//if (frame_parms->frame_type == TDD)
- // printf("Format 0 DCI :ulsch (ue): O_ACK/DAI %d/%d\n",ulsch->harq_processes[harq_pid]->O_ACK,dai);
+ // LOG_I(PHY,"Format 0 DCI :ulsch (ue): O_ACK/DAI %d/%d\n",ulsch->harq_processes[harq_pid]->O_ACK,dai);
//else
- // printf("Format 0 DCI :ulsch (ue): O_ACK %d\n",ulsch->harq_processes[harq_pid]->O_ACK);
+ // LOG_I(PHY,"Format 0 DCI :ulsch (ue): O_ACK %d\n",ulsch->harq_processes[harq_pid]->O_ACK);
- printf("Format 0 DCI :ulsch (ue): Nsymb_pusch %d\n",ulsch->Nsymb_pusch);
- printf("Format 0 DCI :ulsch (ue): cshift %d\n",ulsch->harq_processes[harq_pid]->n_DMRS2);
- printf("Format 0 DCI :ulsch (ue): phich status %d\n",ulsch->harq_processes[harq_pid]->status);
+ LOG_D(PHY,"Format 0 DCI :ulsch (ue): Nsymb_pusch %d\n",ulsch->Nsymb_pusch);
+ LOG_D(PHY,"Format 0 DCI :ulsch (ue): cshift %d\n",ulsch->harq_processes[harq_pid]->n_DMRS2);
+ LOG_D(PHY,"Format 0 DCI :ulsch (ue): phich status %d\n",ulsch->harq_processes[harq_pid]->status);
#else
UNUSED_VARIABLE(dai);
#endif
diff --git a/openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c b/openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c
index 13109b148a..9611848c19 100644
--- a/openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c
+++ b/openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c
@@ -167,10 +167,11 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
uint8_t llr8_flag)
{
-
+#if UE_TIMING_TRACE
time_stats_t *dlsch_rate_unmatching_stats=&phy_vars_ue->dlsch_rate_unmatching_stats;
time_stats_t *dlsch_turbo_decoding_stats=&phy_vars_ue->dlsch_turbo_decoding_stats;
time_stats_t *dlsch_deinterleaving_stats=&phy_vars_ue->dlsch_deinterleaving_stats;
+#endif
uint32_t A,E;
uint32_t G;
uint32_t ret,offset;
@@ -372,7 +373,9 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
printf("f1 %d, f2 %d, F %d\n",f1f2mat_old[2*iind],f1f2mat_old[1+(2*iind)],(r==0) ? harq_process->F : 0);
#endif
+#if UE_TIMING_TRACE
start_meas(dlsch_rate_unmatching_stats);
+#endif
memset(&dummy_w[r][0],0,3*(6144+64)*sizeof(short));
harq_process->RTC[r] = generate_dummy_w(4+(Kr_bytes*8),
(uint8_t*) &dummy_w[r][0],
@@ -408,12 +411,17 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
harq_process->Nl,
r,
&E)==-1) {
+#if UE_TIMING_TRACE
stop_meas(dlsch_rate_unmatching_stats);
+#endif
LOG_E(PHY,"dlsch_decoding.c: Problem in rate_matching\n");
return(dlsch->max_turbo_iterations);
} else
+ {
+#if UE_TIMING_TRACE
stop_meas(dlsch_rate_unmatching_stats);
-
+#endif
+ }
r_offset += E;
/*
@@ -421,13 +429,16 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
harq_process->d[r],
harq_process->w);
*/
+#if UE_TIMING_TRACE
start_meas(dlsch_deinterleaving_stats);
+#endif
sub_block_deinterleaving_turbo(4+Kr,
&harq_process->d[r][96],
harq_process->w[r]);
+#if UE_TIMING_TRACE
stop_meas(dlsch_deinterleaving_stats);
-
+#endif
#ifdef DEBUG_DLSCH_DECODING
/*
if (r==0) {
@@ -472,8 +483,9 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
AssertFatal (Kr >= 256, "turbo algo issue Kr=%d cb_cnt=%d C=%d nbRB=%d TBSInput=%d TBSHarq=%d TBSplus24=%d mcs=%d Qm=%d RIV=%d round=%d\n",
Kr,r,harq_process->C,harq_process->nb_rb,A,harq_process->TBS,harq_process->B,harq_process->mcs,harq_process->Qm,harq_process->rvidx,harq_process->round);
}
-
- start_meas(dlsch_turbo_decoding_stats);
+#if UE_TIMING_TRACE
+ start_meas(dlsch_turbo_decoding_stats);
+#endif
LOG_D(PHY,"AbsSubframe %d.%d Start turbo segment %d/%d \n",frame%1024,subframe,r,harq_process->C-1);
ret = tc
(&harq_process->d[r][96],
@@ -492,14 +504,17 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
&phy_vars_ue->dlsch_tc_intl1_stats,
&phy_vars_ue->dlsch_tc_intl2_stats); //(is_crnti==0)?harq_pid:harq_pid+1);
-
+#if UE_TIMING_TRACE
stop_meas(dlsch_turbo_decoding_stats);
+#endif
}
#else
if ((harq_process->C == 1) ||
((r==harq_process->C-1) && (skipped_last==0))) { // last segment with odd number of segments
- start_meas(dlsch_turbo_decoding_stats);
+#if UE_TIMING_TRACE
+ start_meas(dlsch_turbo_decoding_stats);
+#endif
ret = tc
(&harq_process->d[r][96],
harq_process->c[r],
@@ -516,7 +531,9 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
&phy_vars_ue->dlsch_tc_ext_stats,
&phy_vars_ue->dlsch_tc_intl1_stats,
&phy_vars_ue->dlsch_tc_intl2_stats); //(is_crnti==0)?harq_pid:harq_pid+1);
+ #if UE_TIMING_TRACE
stop_meas(dlsch_turbo_decoding_stats);
+#endif
// printf("single decode, exit\n");
// exit(-1);
}
@@ -533,7 +550,9 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
#ifdef DEBUG_DLSCH_DECODING
printf("single decoding segment %d (%p)\n",r-1,&harq_process->d[r-1][96]);
#endif
+#if UE_TIMING_TRACE
start_meas(dlsch_turbo_decoding_stats);
+#endif
#ifdef DEBUG_DLSCH_DECODING
printf("double decoding segments %d,%d (%p,%p)\n",r-1,r,&harq_process->d[r-1][96],&harq_process->d[r][96]);
#endif
@@ -574,10 +593,14 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
&phy_vars_ue->dlsch_tc_intl2_stats); //(is_crnti==0)?harq_pid:harq_pid+1);
exit(-1);*/
- stop_meas(dlsch_turbo_decoding_stats);
+#if UE_TIMING_TRACE
+ stop_meas(dlsch_turbo_decoding_stats);
+#endif
}
else { // Kr_last != Kr
+#if UE_TIMING_TRACE
start_meas(dlsch_turbo_decoding_stats);
+#endif
ret = tc
(&harq_process->d[r-1][96],
harq_process->c[r-1],
@@ -594,9 +617,12 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
&phy_vars_ue->dlsch_tc_ext_stats,
&phy_vars_ue->dlsch_tc_intl1_stats,
&phy_vars_ue->dlsch_tc_intl2_stats); //(is_crnti==0)?harq_pid:harq_pid+1);
- stop_meas(dlsch_turbo_decoding_stats);
+#if UE_TIMING_TRACE
+ stop_meas(dlsch_turbo_decoding_stats);
start_meas(dlsch_turbo_decoding_stats);
+#endif
+
ret = tc
(&harq_process->d[r][96],
harq_process->c[r],
@@ -613,6 +639,9 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
&phy_vars_ue->dlsch_tc_ext_stats,
&phy_vars_ue->dlsch_tc_intl1_stats,
&phy_vars_ue->dlsch_tc_intl2_stats); //(is_crnti==0)?harq_pid:harq_pid+1);
+
+#if UE_TIMING_TRACE
+
stop_meas(dlsch_turbo_decoding_stats);
/*printf("Segmentation: C %d r %d, dlsch_rate_unmatching_stats %5.3f dlsch_deinterleaving_stats %5.3f dlsch_turbo_decoding_stats %5.3f \n",
@@ -621,7 +650,7 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
dlsch_rate_unmatching_stats->p_time/(cpuf*1000.0),
dlsch_deinterleaving_stats->p_time/(cpuf*1000.0),
dlsch_turbo_decoding_stats->p_time/(cpuf*1000.0));*/
-
+#endif
}
}
}
@@ -643,9 +672,10 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
frame_rx_prev = frame_rx_prev%1024;
if (err_flag == 1) {
- //LOG_I(PHY,"[UE %d] DLSCH: Setting NAK for SFN/SF %d/%d (pid %d, status %d, round %d, TBS %d, mcs %d) Kr %d r %d harq_process->round %d\n",
- // phy_vars_ue->Mod_id, frame, subframe, harq_pid,harq_process->status, harq_process->round,harq_process->TBS,harq_process->mcs,Kr,r,harq_process->round);
-
+#if UE_DEBUG_TRACE
+ LOG_I(PHY,"[UE %d] DLSCH: Setting NAK for SFN/SF %d/%d (pid %d, status %d, round %d, TBS %d, mcs %d) Kr %d r %d harq_process->round %d\n",
+ phy_vars_ue->Mod_id, frame, subframe, harq_pid,harq_process->status, harq_process->round,harq_process->TBS,harq_process->mcs,Kr,r,harq_process->round);
+#endif
dlsch->harq_ack[subframe].ack = 0;
dlsch->harq_ack[subframe].harq_id = harq_pid;
dlsch->harq_ack[subframe].send_harq_status = 1;
@@ -666,9 +696,10 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
return((1+dlsch->max_turbo_iterations));
} else {
-
- //LOG_I(PHY,"[UE %d] DLSCH: Setting ACK for subframe %d TBS %d harq_process->mcs %d harq_process->nb_rb %d\n",
- //phy_vars_ue->Mod_id,subframe,harq_process->TBS,harq_process->mcs,harq_process->nb_rb);
+#if UE_DEBUG_TRACE
+ LOG_I(PHY,"[UE %d] DLSCH: Setting ACK for subframe %d TBS %d mcs %d nb_rb %d\n",
+ phy_vars_ue->Mod_id,subframe,harq_process->TBS,harq_process->mcs,harq_process->nb_rb);
+#endif
harq_process->status = SCH_IDLE;
harq_process->round = 0;
diff --git a/openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c b/openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
index d657493199..4733abdce1 100644
--- a/openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
+++ b/openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
@@ -471,13 +471,13 @@ int rx_pdsch(PHY_VARS_UE *ue,
avg,
symbol,
nb_rb);
-#ifdef DEBUG_PHY
- LOG_I(PHY,"[DLSCH] AbsSubframe %d.%d log2_maxh = %d [log2_maxh0 %d log2_maxh1 %d] (%d,%d)\n",
+#ifdef UE_DEBUG_TRACE
+ LOG_D(PHY,"[DLSCH] AbsSubframe %d.%d log2_maxh = %d [log2_maxh0 %d log2_maxh1 %d] (%d,%d)\n",
frame%1024,subframe, pdsch_vars[eNB_id]->log2_maxh,
pdsch_vars[eNB_id]->log2_maxh0,
pdsch_vars[eNB_id]->log2_maxh1,
avg[0],avgs);
- LOG_D(PHY,"[DLSCH] mimo_mode = %d\n", dlsch0_harq->mimo_mode);
+ //LOG_D(PHY,"[DLSCH] mimo_mode = %d\n", dlsch0_harq->mimo_mode);
#endif
}
diff --git a/openair1/PHY/LTE_TRANSPORT/drs_modulation.c b/openair1/PHY/LTE_TRANSPORT/drs_modulation.c
index 170ca4ce76..861a25fabb 100644
--- a/openair1/PHY/LTE_TRANSPORT/drs_modulation.c
+++ b/openair1/PHY/LTE_TRANSPORT/drs_modulation.c
@@ -87,7 +87,7 @@ int generate_drs_pusch(PHY_VARS_UE *ue,
if (Msc_idx_ptr)
Msc_RS_idx = Msc_idx_ptr - dftsizes;
else {
- printf("generate_drs_pusch: index for Msc_RS=%d not found\n",Msc_RS);
+ LOG_I(PHY,"generate_drs_pusch: index for Msc_RS=%d not found\n",Msc_RS);
return(-1);
}
diff --git a/openair1/PHY/LTE_TRANSPORT/initial_sync.c b/openair1/PHY/LTE_TRANSPORT/initial_sync.c
index 8f7e8b3960..19b0152946 100644
--- a/openair1/PHY/LTE_TRANSPORT/initial_sync.c
+++ b/openair1/PHY/LTE_TRANSPORT/initial_sync.c
@@ -468,13 +468,21 @@ int initial_sync(PHY_VARS_UE *ue, runmode_t mode)
if( (abs(ue->common_vars.freq_offset) > 150) && (ret == 0) )
{
ret=-1;
- LOG_E(HW,"Ignore MIB with high freq offset [%d Hz] estimation \n",ue->common_vars.freq_offset);
+#if DISABLE_LOG_X
+ printf("Ignore MIB with high freq offset [%d Hz] estimation \n",ue->common_vars.freq_offset);
+#else
+ LOG_E(HW, "Ignore MIB with high freq offset [%d Hz] estimation \n",ue->common_vars.freq_offset);
+#endif
}
if (ret==0) { // PBCH found so indicate sync to higher layers and configure frame parameters
//#ifdef DEBUG_INITIAL_SYNCH
- LOG_I(PHY,"[UE%d] In synch, rx_offset %d samples\n",ue->Mod_id, ue->rx_offset);
+#if DISABLE_LOG_X
+ printf("[UE%d] In synch, rx_offset %d samples\n",ue->Mod_id, ue->rx_offset);
+#else
+ LOG_I(PHY, "[UE%d] In synch, rx_offset %d samples\n",ue->Mod_id, ue->rx_offset);
+#endif
//#endif
if (ue->UE_scan_carrier == 0) {
@@ -505,7 +513,8 @@ int initial_sync(PHY_VARS_UE *ue, runmode_t mode)
}
- LOG_I(PHY,"[UE %d] Frame %d RRC Measurements => rssi %3.1f dBm (dig %3.1f dB, gain %d), N0 %d dBm, rsrp %3.1f dBm/RE, rsrq %3.1f dB\n",ue->Mod_id,
+#if DISABLE_LOG_X
+ printf("[UE %d] Frame %d RRC Measurements => rssi %3.1f dBm (dig %3.1f dB, gain %d), N0 %d dBm, rsrp %3.1f dBm/RE, rsrq %3.1f dB\n",ue->Mod_id,
ue->proc.proc_rxtx[0].frame_rx,
10*log10(ue->measurements.rssi)-ue->rx_total_gain_dB,
10*log10(ue->measurements.rssi),
@@ -515,7 +524,7 @@ int initial_sync(PHY_VARS_UE *ue, runmode_t mode)
(10*log10(ue->measurements.rsrq[0])));
- LOG_I(PHY,"[UE %d] Frame %d MIB Information => %s, %s, NidCell %d, N_RB_DL %d, PHICH DURATION %d, PHICH RESOURCE %s, TX_ANT %d\n",
+ printf("[UE %d] Frame %d MIB Information => %s, %s, NidCell %d, N_RB_DL %d, PHICH DURATION %d, PHICH RESOURCE %s, TX_ANT %d\n",
ue->Mod_id,
ue->proc.proc_rxtx[0].frame_rx,
duplex_string[ue->frame_parms.frame_type],
@@ -525,13 +534,42 @@ int initial_sync(PHY_VARS_UE *ue, runmode_t mode)
ue->frame_parms.phich_config_common.phich_duration,
phich_string[ue->frame_parms.phich_config_common.phich_resource],
ue->frame_parms.nb_antenna_ports_eNB);
+#else
+ LOG_I(PHY, "[UE %d] Frame %d RRC Measurements => rssi %3.1f dBm (dig %3.1f dB, gain %d), N0 %d dBm, rsrp %3.1f dBm/RE, rsrq %3.1f dB\n",ue->Mod_id,
+ ue->proc.proc_rxtx[0].frame_rx,
+ 10*log10(ue->measurements.rssi)-ue->rx_total_gain_dB,
+ 10*log10(ue->measurements.rssi),
+ ue->rx_total_gain_dB,
+ ue->measurements.n0_power_tot_dBm,
+ 10*log10(ue->measurements.rsrp[0])-ue->rx_total_gain_dB,
+ (10*log10(ue->measurements.rsrq[0])));
+
+ LOG_I(PHY, "[UE %d] Frame %d MIB Information => %s, %s, NidCell %d, N_RB_DL %d, PHICH DURATION %d, PHICH RESOURCE %s, TX_ANT %d\n",
+ ue->Mod_id,
+ ue->proc.proc_rxtx[0].frame_rx,
+ duplex_string[ue->frame_parms.frame_type],
+ prefix_string[ue->frame_parms.Ncp],
+ ue->frame_parms.Nid_cell,
+ ue->frame_parms.N_RB_DL,
+ ue->frame_parms.phich_config_common.phich_duration,
+ phich_string[ue->frame_parms.phich_config_common.phich_resource],
+ ue->frame_parms.nb_antenna_ports_eNB);
+#endif
#if defined(OAI_USRP) || defined(EXMIMO) || defined(OAI_BLADERF) || defined(OAI_LMSSDR)
- LOG_I(PHY,"[UE %d] Frame %d Measured Carrier Frequency %.0f Hz (offset %d Hz)\n",
+# if DISABLE_LOG_X
+ printf("[UE %d] Frame %d Measured Carrier Frequency %.0f Hz (offset %d Hz)\n",
ue->Mod_id,
ue->proc.proc_rxtx[0].frame_rx,
openair0_cfg[0].rx_freq[0]-ue->common_vars.freq_offset,
ue->common_vars.freq_offset);
+# else
+ LOG_I(PHY, "[UE %d] Frame %d Measured Carrier Frequency %.0f Hz (offset %d Hz)\n",
+ ue->Mod_id,
+ ue->proc.proc_rxtx[0].frame_rx,
+ openair0_cfg[0].rx_freq[0]-ue->common_vars.freq_offset,
+ ue->common_vars.freq_offset);
+# endif
#endif
} else {
#ifdef DEBUG_INITIAL_SYNC
diff --git a/openair1/PHY/LTE_TRANSPORT/phich.c b/openair1/PHY/LTE_TRANSPORT/phich.c
index 17b9540e4a..ab245f2f7a 100644
--- a/openair1/PHY/LTE_TRANSPORT/phich.c
+++ b/openair1/PHY/LTE_TRANSPORT/phich.c
@@ -1098,6 +1098,8 @@ void rx_phich(PHY_VARS_UE *ue,
uint8_t NSF_PHICH = 4;
uint8_t pusch_subframe;
+ int8_t delta_PUSCH_acc[4] = {-1,0,1,3};
+
// check if we're expecting a PHICH in this subframe
LOG_D(PHY,"[UE %d][PUSCH %d] Frame %d subframe %d PHICH RX\n",ue->Mod_id,harq_pid,proc->frame_rx,subframe);
@@ -1379,7 +1381,7 @@ void rx_phich(PHY_VARS_UE *ue,
if (HI16>0) { //NACK
if (ue->ulsch_Msg3_active[eNB_id] == 1) {
- LOG_D(PHY,"[UE %d][PUSCH %d][RAPROC] Frame %d subframe %d Msg3 PHICH, received NAK (%d) nseq %d, ngroup %d\n",
+ LOG_I(PHY,"[UE %d][PUSCH %d][RAPROC] Frame %d subframe %d Msg3 PHICH, received NAK (%d) nseq %d, ngroup %d\n",
ue->Mod_id,harq_pid,
proc->frame_rx,
subframe,
@@ -1387,6 +1389,14 @@ void rx_phich(PHY_VARS_UE *ue,
nseq_PHICH,
ngroup_PHICH);
+ ulsch->f_pusch += delta_PUSCH_acc[ulsch->harq_processes[harq_pid]->TPC];
+
+ LOG_I(PHY,"[PUSCH %d] AbsSubframe %d.%d: f_pusch (ACC) %d, adjusting by %d (TPC %d)\n",
+ harq_pid,proc->frame_rx,subframe,ulsch->f_pusch,
+ delta_PUSCH_acc[ulsch->harq_processes[harq_pid]->TPC],
+ ulsch->harq_processes[harq_pid]->TPC);
+
+
ulsch->harq_processes[harq_pid]->subframe_scheduling_flag = 1;
// ulsch->harq_processes[harq_pid]->Ndi = 0;
ulsch->harq_processes[harq_pid]->round++;
@@ -1399,8 +1409,8 @@ void rx_phich(PHY_VARS_UE *ue,
ue->ulsch_Msg3_active[eNB_id] = 0;
}
} else {
- //#ifdef DEBUG_PHICH
- LOG_D(PHY,"[UE %d][PUSCH %d] Frame %d subframe %d PHICH, received NAK (%d) nseq %d, ngroup %d round %d (Mlimit %d)\n",
+#ifdef UE_DEBUG_TRACE
+ LOG_I(PHY,"[UE %d][PUSCH %d] Frame %d subframe %d PHICH, received NAK (%d) nseq %d, ngroup %d round %d (Mlimit %d)\n",
ue->Mod_id,harq_pid,
proc->frame_rx%1024,
subframe,
@@ -1409,7 +1419,7 @@ void rx_phich(PHY_VARS_UE *ue,
ngroup_PHICH,
ulsch->harq_processes[harq_pid]->round,
ulsch->Mlimit);
- //#endif
+#endif
// ulsch->harq_processes[harq_pid]->Ndi = 0;
ulsch->harq_processes[harq_pid]->round++;
@@ -1448,20 +1458,20 @@ void rx_phich(PHY_VARS_UE *ue,
} else { //ACK
if (ue->ulsch_Msg3_active[eNB_id] == 1) {
- LOG_D(PHY,"[UE %d][PUSCH %d][RAPROC] Frame %d subframe %d Msg3 PHICH, received ACK (%d) nseq %d, ngroup %d\n\n",
+ LOG_I(PHY,"[UE %d][PUSCH %d][RAPROC] Frame %d subframe %d Msg3 PHICH, received ACK (%d) nseq %d, ngroup %d\n\n",
ue->Mod_id,harq_pid,
proc->frame_rx,
subframe,
HI16,
nseq_PHICH,ngroup_PHICH);
} else {
- //#ifdef PHICH_DEBUG
- LOG_D(PHY,"[UE %d][PUSCH %d] Frame %d subframe %d PHICH, received ACK (%d) nseq %d, ngroup %d\n\n",
+#ifdef UE_DEBUG_TRACE
+ LOG_I(PHY,"[UE %d][PUSCH %d] Frame %d subframe %d PHICH, received ACK (%d) nseq %d, ngroup %d\n\n",
ue->Mod_id,harq_pid,
proc->frame_rx%1024,
subframe, HI16,
nseq_PHICH,ngroup_PHICH);
- //#endif
+#endif
}
// LOG_I(PHY,"[HARQ-UL harqId: %d] subframe_scheduling_flag = %d \n",harq_pid, ulsch->harq_processes[harq_pid]->subframe_scheduling_flag);
diff --git a/openair1/PHY/MODULATION/slot_fep.c b/openair1/PHY/MODULATION/slot_fep.c
index 3a3b3b4c0d..4fc1734841 100644
--- a/openair1/PHY/MODULATION/slot_fep.c
+++ b/openair1/PHY/MODULATION/slot_fep.c
@@ -129,11 +129,15 @@ int slot_fep(PHY_VARS_UE *ue,
dft((int16_t *)tmp_dft_in,
(int16_t *)&common_vars->common_vars_rx_data_per_thread[(Ns>>1)&0x1].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],1);
} else { // use dft input from RX buffer directly
- start_meas(&ue->rx_dft_stats);
+#if UE_TIMING_TRACE
+ start_meas(&ue->rx_dft_stats);
+#endif
dft((int16_t *)&common_vars->rxdata[aa][(rx_offset) % frame_length_samples],
(int16_t *)&common_vars->common_vars_rx_data_per_thread[(Ns>>1)&0x1].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],1);
+#if UE_TIMING_TRACE
stop_meas(&ue->rx_dft_stats);
+#endif
}
} else {
@@ -150,8 +154,9 @@ int slot_fep(PHY_VARS_UE *ue,
memcpy((void *)&common_vars->rxdata[aa][frame_length_samples],
(void *)&common_vars->rxdata[aa][0],
frame_parms->ofdm_symbol_size*sizeof(int));
-
+#if UE_TIMING_TRACE
start_meas(&ue->rx_dft_stats);
+#endif
if ((rx_offset&7)!=0) { // if input to dft is not 128-bit aligned, issue for size 6 and 15 PRBs
memcpy((void *)tmp_dft_in,
@@ -164,8 +169,9 @@ int slot_fep(PHY_VARS_UE *ue,
dft((int16_t *)&common_vars->rxdata[aa][(rx_offset) % frame_length_samples],
(int16_t *)&common_vars->common_vars_rx_data_per_thread[(Ns>>1)&0x1].rxdataF[aa][frame_parms->ofdm_symbol_size*symbol],1);
}
-
+#if UE_TIMING_TRACE
stop_meas(&ue->rx_dft_stats);
+#endif
}
@@ -183,13 +189,17 @@ int slot_fep(PHY_VARS_UE *ue,
#ifdef DEBUG_FEP
printf("Channel estimation eNB %d, aatx %d, slot %d, symbol %d\n",eNB_id,aa,Ns,l);
#endif
+#if UE_TIMING_TRACE
start_meas(&ue->dlsch_channel_estimation_stats);
+#endif
lte_dl_channel_estimation(ue,eNB_id,0,
Ns,
aa,
l,
symbol);
+#if UE_TIMING_TRACE
stop_meas(&ue->dlsch_channel_estimation_stats);
+#endif
for (i=0; imeasurements.n_adj_cells; i++) {
lte_dl_channel_estimation(ue,eNB_id,i+1,
@@ -208,13 +218,17 @@ int slot_fep(PHY_VARS_UE *ue,
#endif
if (l==(4-frame_parms->Ncp)) {
- start_meas(&ue->dlsch_freq_offset_estimation_stats);
+#if UE_TIMING_TRACE
+ start_meas(&ue->dlsch_freq_offset_estimation_stats);
+#endif
lte_est_freq_offset(common_vars->common_vars_rx_data_per_thread[(Ns>>1)&0x1].dl_ch_estimates[0],
frame_parms,
l,
&common_vars->freq_offset,
reset_freq_est);
+#if UE_TIMING_TRACE
stop_meas(&ue->dlsch_freq_offset_estimation_stats);
+#endif
}
}
diff --git a/openair1/PHY/MODULATION/slot_fep_mbsfn.c b/openair1/PHY/MODULATION/slot_fep_mbsfn.c
index bead242dd8..e20a984bd1 100644
--- a/openair1/PHY/MODULATION/slot_fep_mbsfn.c
+++ b/openair1/PHY/MODULATION/slot_fep_mbsfn.c
@@ -111,13 +111,17 @@ int slot_fep_mbsfn(PHY_VARS_UE *ue,
for (aa=0; aanb_antennas_rx; aa++) {
memset(&common_vars->common_vars_rx_data_per_thread[subframe&0x1].rxdataF[aa][frame_parms->ofdm_symbol_size*l],0,frame_parms->ofdm_symbol_size*sizeof(int));
if (l==0) {
- start_meas(&ue->rx_dft_stats);
+#if UE_TIMING_TRACE
+ start_meas(&ue->rx_dft_stats);
+#endif
dft((int16_t *)&common_vars->rxdata[aa][(sample_offset +
nb_prefix_samples0 +
subframe_offset -
SOFFSET) % frame_length_samples],
(int16_t *)&common_vars->common_vars_rx_data_per_thread[subframe&0x1].rxdataF[aa][frame_parms->ofdm_symbol_size*l],1);
+#if UE_TIMING_TRACE
stop_meas(&ue->rx_dft_stats);
+#endif
} else {
if ((sample_offset +
(frame_parms->ofdm_symbol_size+nb_prefix_samples0+nb_prefix_samples) +
@@ -128,14 +132,18 @@ int slot_fep_mbsfn(PHY_VARS_UE *ue,
(short *)&common_vars->rxdata[aa][0],
frame_parms->ofdm_symbol_size*sizeof(int));
+#if UE_TIMING_TRACE
start_meas(&ue->rx_dft_stats);
+#endif
dft((int16_t *)&common_vars->rxdata[aa][(sample_offset +
(frame_parms->ofdm_symbol_size+nb_prefix_samples0+nb_prefix_samples) +
(frame_parms->ofdm_symbol_size+nb_prefix_samples)*(l-1) +
subframe_offset-
SOFFSET) % frame_length_samples],
(int16_t *)&common_vars->common_vars_rx_data_per_thread[subframe&0x1].rxdataF[aa][frame_parms->ofdm_symbol_size*l],1);
+#if UE_TIMING_TRACE
stop_meas(&ue->rx_dft_stats);
+#endif
}
}
diff --git a/openair1/SCHED/phy_procedures_lte_common.c b/openair1/SCHED/phy_procedures_lte_common.c
index 0779341334..e14a156018 100644
--- a/openair1/SCHED/phy_procedures_lte_common.c
+++ b/openair1/SCHED/phy_procedures_lte_common.c
@@ -576,16 +576,16 @@ uint8_t get_reset_ack(LTE_DL_FRAME_PARMS *frame_parms,
case 4:
if (subframe_tx == 2) { // ACK subframes 4, 5 and 0
- subframe_dl0 = 4;
- subframe_dl1 = 5;
- subframe_dl2 = 0;
+ subframe_dl0 = 0;
+ subframe_dl1 = 4;
+ subframe_dl2 = 5;
subframe_ul = 2;
//printf("subframe_tx 2, TDD config 3: harq_ack[5] = %d (%d),harq_ack[6] = %d (%d)\n",harq_ack[5].ack,harq_ack[5].send_harq_status,harq_ack[6].ack,harq_ack[6].send_harq_status);
} else if (subframe_tx == 3) { // ACK subframes 6, 7 8 and 9
- subframe_dl0 = 6;
- subframe_dl1 = 7;
- subframe_dl2 = 8;
- subframe_dl3 = 9;
+ subframe_dl0 = 7;
+ subframe_dl1 = 8;
+ subframe_dl2 = 9;
+ subframe_dl3 = 6;
subframe_ul = 3;
//printf("Subframe 3, TDD config 3: harq_ack[7] = %d,harq_ack[8] = %d\n",harq_ack[7].ack,harq_ack[8].ack);
//printf("status %d : o_ACK (%d,%d)\n", status,o_ACK[0],o_ACK[1]);
diff --git a/openair1/SCHED/phy_procedures_lte_ue.c b/openair1/SCHED/phy_procedures_lte_ue.c
index 33279522ab..41c72ec0e6 100644
--- a/openair1/SCHED/phy_procedures_lte_ue.c
+++ b/openair1/SCHED/phy_procedures_lte_ue.c
@@ -633,7 +633,8 @@ PUCCH_FMT_t get_pucch_format(lte_frame_type_t frame_type,
uint8_t SR_payload,
uint8_t nb_cw,
uint8_t cqi_status,
- uint8_t ri_status)
+ uint8_t ri_status,
+ uint8_t bundling_flag)
{
if((cqi_status == 0) && (ri_status==0))
{
@@ -641,10 +642,14 @@ PUCCH_FMT_t get_pucch_format(lte_frame_type_t frame_type,
// 1- SR only ==> PUCCH format 1
// 2- 1bit Ack/Nack with/without SR ==> PUCCH format 1a
// 3- 2bits Ack/Nack with/without SR ==> PUCCH format 1b
- if(nb_cw == 1)
+ if((nb_cw == 1)&&(bundling_flag==bundling))
{
return pucch_format1a;
}
+ if((nb_cw == 1)&&(bundling_flag==multiplexing))
+ {
+ return pucch_format1b;
+ }
if(nb_cw == 2)
{
return pucch_format1b;
@@ -727,10 +732,10 @@ uint16_t get_n1_pucch(PHY_VARS_UE *ue,
#ifdef DEBUG_PHY_PROC
if (bundling_flag==bundling) {
- LOG_I(PHY,"[UE%d] Frame %d subframe %d : get_n1_pucch, bundling, SR %d/%d\n",ue->Mod_id,proc->frame_tx,subframe,SR,
+ LOG_D(PHY,"[UE%d] Frame %d subframe %d : get_n1_pucch, bundling, SR %d/%d\n",ue->Mod_id,proc->frame_tx,subframe,SR,
ue->scheduling_request_config[eNB_id].sr_PUCCH_ResourceIndex);
} else {
- LOG_I(PHY,"[UE%d] Frame %d subframe %d : get_n1_pucch, multiplexing, SR %d/%d\n",ue->Mod_id,proc->frame_tx,subframe,SR,
+ LOG_D(PHY,"[UE%d] Frame %d subframe %d : get_n1_pucch, multiplexing, SR %d/%d\n",ue->Mod_id,proc->frame_tx,subframe,SR,
ue->scheduling_request_config[eNB_id].sr_PUCCH_ResourceIndex);
}
@@ -909,14 +914,13 @@ uint16_t get_n1_pucch(PHY_VARS_UE *ue,
//last_dl = (subframe-2)<<1;
if (subframe == 2) {
// i=0
- //nCCE0 = ue->pdcch_vars[proc->subframe_rx & 0x1][eNB_id]->nCCE[2+subframe];
nCCE0 = ue->pdcch_vars[proc->subframe_rx & 0x1][eNB_id]->nCCE[(8+subframe)%10];
n1_pucch0 = 2*get_Np(frame_parms->N_RB_DL,nCCE0,0) + nCCE0+ frame_parms->pucch_config_common.n1PUCCH_AN;
// i=1
- nCCE1 = ue->pdcch_vars[proc->subframe_rx & 0x1][eNB_id]->nCCE[2+subframe];
+ nCCE1 = ue->pdcch_vars[proc->subframe_rx & 0x1][eNB_id]->nCCE[3+subframe];
n1_pucch1 = get_Np(frame_parms->N_RB_DL,nCCE1,0) + get_Np(frame_parms->N_RB_DL,nCCE1,1) + nCCE1 + frame_parms->pucch_config_common.n1PUCCH_AN;
// i=2
- nCCE2 = ue->pdcch_vars[proc->subframe_rx & 0x1][eNB_id]->nCCE[(8+subframe)%10];
+ nCCE2 = ue->pdcch_vars[proc->subframe_rx & 0x1][eNB_id]->nCCE[(2+subframe)%10];
n1_pucch2 = 2*get_Np(frame_parms->N_RB_DL,nCCE2,1) + nCCE2+ frame_parms->pucch_config_common.n1PUCCH_AN;
// i=3
//nCCE3 = ue->pdcch_vars[proc->subframe_rx & 0x1][eNB_id]->nCCE[(9+subframe)%10];
@@ -926,11 +930,11 @@ uint16_t get_n1_pucch(PHY_VARS_UE *ue,
if (ue->dlsch[proc->subframe_rx&0x1][eNB_id][0]->harq_ack[(8+subframe)%10].send_harq_status>0) // n-6 // subframe 6 is to be ACK/NAKed
harq_ack0 = ue->dlsch[proc->subframe_rx&0x1][eNB_id][0]->harq_ack[(8+subframe)%10].ack;
- if (ue->dlsch[proc->subframe_rx&0x1][eNB_id][0]->harq_ack[2+subframe].send_harq_status>0) // n-6 // subframe 5 is to be ACK/NAKed
- harq_ack1 = ue->dlsch[proc->subframe_rx&0x1][eNB_id][0]->harq_ack[2+subframe].ack;
+ if (ue->dlsch[proc->subframe_rx&0x1][eNB_id][0]->harq_ack[3+subframe].send_harq_status>0) // n-6 // subframe 5 is to be ACK/NAKed
+ harq_ack1 = ue->dlsch[proc->subframe_rx&0x1][eNB_id][0]->harq_ack[3+subframe].ack;
- if (ue->dlsch[proc->subframe_rx&0x1][eNB_id][0]->harq_ack[3+subframe].send_harq_status>0) // n-6 // subframe 6 is to be ACK/NAKed
- harq_ack2 = ue->dlsch[proc->subframe_rx&0x1][eNB_id][0]->harq_ack[3+subframe].ack;
+ if (ue->dlsch[proc->subframe_rx&0x1][eNB_id][0]->harq_ack[(2+subframe)%10].send_harq_status>0) // n-6 // subframe 6 is to be ACK/NAKed
+ harq_ack2 = ue->dlsch[proc->subframe_rx&0x1][eNB_id][0]->harq_ack[(2+subframe)%10].ack;
//if (ue->dlsch[proc->subframe_rx&0x1][eNB_id][0]->harq_ack[(9+subframe)%10].send_harq_status>0) // n-6 // subframe 5 is to be ACK/NAKed
//harq_ack3 = ue->dlsch[proc->subframe_rx&0x1][eNB_id][0]->harq_ack[(9+subframe)%10].ack;
@@ -976,28 +980,38 @@ uint16_t get_n1_pucch(PHY_VARS_UE *ue,
// nCCE3, n1_pucch3, harq_ack3, bundling_flag);
if ((bundling_flag==bundling)&&(SR == 0)) { // This is for bundling without SR,
+ b[0] = 1;
+ ack_counter = 0;
+
+ if ((harq_ack3!=2) ) {
+ b[0] = b[0]&harq_ack3;
+ n1_pucch_inter = n1_pucch3;
+ ack_counter ++;
+ }
if ((harq_ack0!=2) ) {
- b[0] = harq_ack0;
+ b[0] = b[0]&harq_ack0;
n1_pucch_inter = n1_pucch0;
+ ack_counter ++;
}
if ((harq_ack1!=2) ) {
b[0] = b[0]&harq_ack1;
n1_pucch_inter = n1_pucch1;
+ ack_counter ++;
}
if ((harq_ack2!=2) ) {
b[0] = b[0]&harq_ack2;
n1_pucch_inter = n1_pucch2;
- }
- if ((harq_ack3!=2) ) {
- b[0] = b[0]&harq_ack3;
- n1_pucch_inter = n1_pucch3;
+ ack_counter ++;
}
- if (subframe == 3) {
+ if (ack_counter == 0)
+ b[0] = 0;
+
+ /*if (subframe == 3) {
n1_pucch_inter = n1_pucch2;
} else if (subframe == 2) {
- n1_pucch_inter = n1_pucch2;
- }
+ n1_pucch_inter = n1_pucch1;
+ }*/
//LOG_I(PHY,"SFN/SF %d/%d calculating n1_pucch n1_pucch_inter=%d b[0]=%d b[1]=%d \n",
// proc->frame_tx%1024,
@@ -1008,37 +1022,39 @@ uint16_t get_n1_pucch(PHY_VARS_UE *ue,
} else if ((bundling_flag==multiplexing)&&(SR==0)) { // Table 10.1
+ if (subframe == 3) {
+ LOG_I(PHY, "sbuframe=%d \n",subframe);
if ((harq_ack0 == 1) && (harq_ack1 == 1) && (harq_ack2 == 1) && (harq_ack3 == 1)) {
- b[1] = 1;
b[0] = 1;
+ b[1] = 1;
return(n1_pucch1);
} else if ((harq_ack0 == 1) && (harq_ack1 == 1) && (harq_ack2 == 1) && ((harq_ack3 == 2) || (harq_ack3 == 0))) {
b[0] = 1;
b[1] = 0;
return(n1_pucch1);
} else if (((harq_ack0 == 0) || (harq_ack0 == 2)) && ((harq_ack1 == 2) || (harq_ack1 == 0)) && (harq_ack2 == 0) && (harq_ack3 == 2)) {
- b[1] = 1;
b[0] = 1;
+ b[1] = 1;
return(n1_pucch2);
} else if ((harq_ack0 == 1) && (harq_ack1 == 1) && ((harq_ack2 == 2) || (harq_ack2 == 0)) && (harq_ack3 == 1)) {
- b[1] = 1;
- b[0] = 0;
+ b[0] = 1;
+ b[1] = 0;
return(n1_pucch1);
} else if ((harq_ack0 == 0) && (harq_ack1 == 2) && (harq_ack2 == 2) && (harq_ack3 == 2)) {
- b[1] = 1;
- b[0] = 0;
+ b[0] = 1;
+ b[1] = 0;
return(n1_pucch0);
} else if ((harq_ack0 == 1) && (harq_ack1 == 1) && ((harq_ack2 == 2) || (harq_ack2 == 0)) && ((harq_ack3 == 2) || (harq_ack3 == 0))) {
- b[1] = 1;
- b[0] = 0;
+ b[0] = 1;
+ b[1] = 0;
return(n1_pucch1);
} else if ((harq_ack0 == 1) && ((harq_ack1 == 2) || (harq_ack1 == 0)) && (harq_ack2 == 1) && (harq_ack3 == 1)) {
b[0] = 0;
b[1] = 1;
return(n1_pucch3);
} else if (((harq_ack0 == 0) || (harq_ack0 == 2)) && ((harq_ack1 == 2) || (harq_ack1 == 0)) && ((harq_ack2 == 2) || (harq_ack2 == 0)) && (harq_ack3 == 0)) {
- b[1] = 1;
b[0] = 1;
+ b[1] = 1;
return(n1_pucch3);
} else if ((harq_ack0 == 1) && ((harq_ack1 == 2) || (harq_ack1 == 0)) && (harq_ack2 == 1) && ((harq_ack3 == 2) || (harq_ack3 == 0))) {
b[0] = 0;
@@ -1085,9 +1101,53 @@ uint16_t get_n1_pucch(PHY_VARS_UE *ue,
b[1] = 0;
return(n1_pucch3);
}
+ } else if (subframe == 2) {
+ if ((harq_ack0 == 1) && (harq_ack1 == 1) && (harq_ack2 == 1)) {
+ b[0] = 1;
+ b[1] = 1;
+ return(n1_pucch2);
+ } else if ((harq_ack0 == 1) && (harq_ack1 == 1) && ((harq_ack2 == 2) || (harq_ack2 == 0))) {
+ b[0] = 1;
+ b[1] = 1;
+ return(n1_pucch1);
+ } else if ((harq_ack0 == 1) && ((harq_ack1 == 2) || (harq_ack1 == 0)) && (harq_ack2 == 1)) {
+ b[0] = 1;
+ b[1] = 1;
+ return(n1_pucch0);
+ } else if ((harq_ack0 == 1) && ((harq_ack1 == 2) || (harq_ack1 == 0)) && ((harq_ack2 == 2) || (harq_ack2 == 0))) {
+ b[0] = 0;
+ b[1] = 1;
+ return(n1_pucch0);
+ } else if (((harq_ack0 == 2) || (harq_ack0 == 0)) && (harq_ack1 == 1) && (harq_ack2 == 1)) {
+ b[0] = 1;
+ b[1] = 0;
+ return(n1_pucch2);
+ } else if (((harq_ack0 == 2) || (harq_ack0 == 0)) && (harq_ack1 == 1) && ((harq_ack2 == 2) || (harq_ack2 == 0))) {
+ b[1] = 0;
+ b[0] = 0;
+ return(n1_pucch1);
+ } else if (((harq_ack0 == 2) || (harq_ack0 == 0)) && ((harq_ack1 == 2) || (harq_ack1 == 0)) && (harq_ack2 == 1)) {
+ b[0] = 0;
+ b[1] = 0;
+ return(n1_pucch2);
+ } else if ((harq_ack0 == 2) && (harq_ack1 == 2) && (harq_ack2 == 0)) {
+ b[0] = 0;
+ b[1] = 1;
+ return(n1_pucch2);
+ } else if ((harq_ack0 == 2) && (harq_ack1 == 0) && ((harq_ack2 == 2) || (harq_ack2 == 0))) {
+ b[0] = 1;
+ b[1] = 0;
+ return(n1_pucch1);
+ } else if ((harq_ack0 == 0) && ((harq_ack1 == 2) || (harq_ack1 == 0)) && ((harq_ack2 == 2) || (harq_ack2 == 0))) {
+ b[0] = 1;
+ b[1] = 0;
+ return(n1_pucch0);
+ }
+ }
} else if (SR==1) { // SR and 0,1,or 2 ACKS, (first 3 entries in Table 7.3-1 of 36.213)
// this should be number of ACKs (including
+ ack_counter = 0;
if (harq_ack0==1)
ack_counter ++;
if (harq_ack1==1)
@@ -1186,8 +1246,9 @@ void ulsch_common_procedures(PHY_VARS_UE *ue, UE_rxtx_proc_t *proc, uint8_t empt
#endif
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX_ULSCH_COMMON,VCD_FUNCTION_IN);
-
+#if UE_TIMING_TRACE
start_meas(&ue->ofdm_mod_stats);
+#endif
nsymb = (frame_parms->Ncp == 0) ? 14 : 12;
#if defined(EXMIMO) || defined(OAI_USRP) || defined(OAI_BLADERF) || defined(OAI_LMSSDR)//this is the EXPRESS MIMO case
@@ -1322,7 +1383,9 @@ void ulsch_common_procedures(PHY_VARS_UE *ue, UE_rxtx_proc_t *proc, uint8_t empt
} //nb_antennas_tx
- stop_meas(&ue->ofdm_mod_stats);
+#if UE_TIMING_TRACE
+ stop_meas(&ue->ofdm_mod_stats);
+#endif
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX_ULSCH_COMMON,VCD_FUNCTION_OUT);
@@ -1510,12 +1573,14 @@ void ue_ulsch_uespec_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB
} else {
if (harq_pid==255) {
- LOG_E(PHY,"[UE%d] Frame %d subframe %d ulsch_decoding.c: FATAL ERROR: illegal harq_pid, returning\n",
- Mod_id,frame_tx, subframe_tx);
- mac_xface->macphy_exit("Error in ulsch_decoding");
- VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX, VCD_FUNCTION_OUT);
- stop_meas(&ue->phy_proc_tx);
- return;
+ LOG_E(PHY,"[UE%d] Frame %d subframe %d ulsch_decoding.c: FATAL ERROR: illegal harq_pid, returning\n",
+ Mod_id,frame_tx, subframe_tx);
+ mac_xface->macphy_exit("Error in ulsch_decoding");
+ VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX, VCD_FUNCTION_OUT);
+#if UE_TIMING_TRACE
+ stop_meas(&ue->phy_proc_tx);
+#endif
+ return;
}
Msg3_flag=0;
@@ -1635,17 +1700,18 @@ void ue_ulsch_uespec_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB
T_INT(ue->dlsch[proc->subframe_rx&0x1][eNB_id][0]->current_harq_pid));
}
#endif
-
- LOG_D(PHY,"[UE %d][PDSCH %x] AbsSubFrame %d.%d Generating ACK (%d,%d) for %d bits on PUSCH\n",
+#ifdef UE_DEBUG_TRACE
+ LOG_I(PHY,"[UE %d][PDSCH %x] AbsSubFrame %d.%d Generating ACK (%d,%d) for %d bits on PUSCH\n",
Mod_id,
ue->ulsch[eNB_id]->rnti,
frame_tx%1024,subframe_tx,
ue->ulsch[eNB_id]->o_ACK[0],ue->ulsch[eNB_id]->o_ACK[1],
ue->ulsch[eNB_id]->harq_processes[harq_pid]->O_ACK);
+#endif
}
-#ifdef DEBUG_PHY_PROC
- LOG_D(PHY,
+#ifdef UE_DEBUG_TRACE
+ LOG_I(PHY,
"[UE %d][PUSCH %d] AbsSubframe %d.%d Generating PUSCH : first_rb %d, nb_rb %d, round %d, mcs %d, rv %d, "
"cyclic_shift %d (cyclic_shift_common %d,n_DMRS2 %d,n_PRS %d), ACK (%d,%d), O_ACK %d, ack_status_cw0 %d ack_status_cw1 %d bundling %d, Nbundled %d, CQI %d, RI %d\n",
Mod_id,harq_pid,frame_tx%1024,subframe_tx,
@@ -1674,37 +1740,40 @@ void ue_ulsch_uespec_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB
if (Msg3_flag == 1) {
LOG_I(PHY,"[UE %d][RAPROC] Frame %d, Subframe %d Generating (RRCConnectionRequest) Msg3 (nb_rb %d, first_rb %d, round %d, rvidx %d) Msg3: %x.%x.%x|%x.%x.%x.%x.%x.%x\n",Mod_id,frame_tx,
- subframe_tx,
- ue->ulsch[eNB_id]->harq_processes[harq_pid]->nb_rb,
- ue->ulsch[eNB_id]->harq_processes[harq_pid]->first_rb,
- ue->ulsch[eNB_id]->harq_processes[harq_pid]->round,
- ue->ulsch[eNB_id]->harq_processes[harq_pid]->rvidx,
- ue->prach_resources[eNB_id]->Msg3[0],
- ue->prach_resources[eNB_id]->Msg3[1],
- ue->prach_resources[eNB_id]->Msg3[2],
- ue->prach_resources[eNB_id]->Msg3[3],
- ue->prach_resources[eNB_id]->Msg3[4],
- ue->prach_resources[eNB_id]->Msg3[5],
- ue->prach_resources[eNB_id]->Msg3[6],
- ue->prach_resources[eNB_id]->Msg3[7],
- ue->prach_resources[eNB_id]->Msg3[8]);
-
+ subframe_tx,
+ ue->ulsch[eNB_id]->harq_processes[harq_pid]->nb_rb,
+ ue->ulsch[eNB_id]->harq_processes[harq_pid]->first_rb,
+ ue->ulsch[eNB_id]->harq_processes[harq_pid]->round,
+ ue->ulsch[eNB_id]->harq_processes[harq_pid]->rvidx,
+ ue->prach_resources[eNB_id]->Msg3[0],
+ ue->prach_resources[eNB_id]->Msg3[1],
+ ue->prach_resources[eNB_id]->Msg3[2],
+ ue->prach_resources[eNB_id]->Msg3[3],
+ ue->prach_resources[eNB_id]->Msg3[4],
+ ue->prach_resources[eNB_id]->Msg3[5],
+ ue->prach_resources[eNB_id]->Msg3[6],
+ ue->prach_resources[eNB_id]->Msg3[7],
+ ue->prach_resources[eNB_id]->Msg3[8]);
+#if UE_TIMING_TRACE
start_meas(&ue->ulsch_encoding_stats);
+#endif
if (abstraction_flag==0) {
- if (ulsch_encoding(ue->prach_resources[eNB_id]->Msg3,
- ue,
- harq_pid,
- eNB_id,
- proc->subframe_rx,
- ue->transmission_mode[eNB_id],0,0)!=0) {
- LOG_E(PHY,"ulsch_coding.c: FATAL ERROR: returning\n");
- mac_xface->macphy_exit("Error in ulsch_coding");
- VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX, VCD_FUNCTION_OUT);
- stop_meas(&ue->phy_proc_tx);
- //printf("------FULL TX PROC : %5.2f ------\n",ue->phy_proc_tx.p_time/(cpuf*1000.0));
- return;
- }
+ if (ulsch_encoding(ue->prach_resources[eNB_id]->Msg3,
+ ue,
+ harq_pid,
+ eNB_id,
+ proc->subframe_rx,
+ ue->transmission_mode[eNB_id],0,0)!=0) {
+ LOG_E(PHY,"ulsch_coding.c: FATAL ERROR: returning\n");
+ mac_xface->macphy_exit("Error in ulsch_coding");
+ VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX, VCD_FUNCTION_OUT);
+#if UE_TIMING_TRACE
+ stop_meas(&ue->phy_proc_tx);
+ printf("------FULL TX PROC : %5.2f ------\n",ue->phy_proc_tx.p_time/(cpuf*1000.0));
+#endif
+ return;
+ }
}
#ifdef PHY_ABSTRACTION
@@ -1714,8 +1783,9 @@ void ue_ulsch_uespec_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB
#endif
+#if UE_TIMING_TRACE
stop_meas(&ue->ulsch_encoding_stats);
-
+#endif
if (ue->mac_enabled == 1) {
// signal MAC that Msg3 was sent
mac_xface->Msg3_transmitted(Mod_id,
@@ -1761,21 +1831,25 @@ void ue_ulsch_uespec_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB
}
+#if UE_TIMING_TRACE
start_meas(&ue->ulsch_encoding_stats);
-
+#endif
if (abstraction_flag==0) {
- if (ulsch_encoding(ulsch_input_buffer,
- ue,
- harq_pid,
- eNB_id,
- proc->subframe_rx,
- ue->transmission_mode[eNB_id],0,
- Nbundled)!=0) {
- LOG_E(PHY,"ulsch_coding.c: FATAL ERROR: returning\n");
- VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX, VCD_FUNCTION_OUT);
- stop_meas(&ue->phy_proc_tx);
- return;
- }
+
+ if (ulsch_encoding(ulsch_input_buffer,
+ ue,
+ harq_pid,
+ eNB_id,
+ proc->subframe_rx,
+ ue->transmission_mode[eNB_id],0,
+ Nbundled)!=0) {
+ LOG_E(PHY,"ulsch_coding.c: FATAL ERROR: returning\n");
+ VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX, VCD_FUNCTION_OUT);
+#if UE_TIMING_TRACE
+ stop_meas(&ue->phy_proc_tx);
+#endif
+ return;
+ }
}
#ifdef PHY_ABSTRACTION
@@ -1784,7 +1858,9 @@ void ue_ulsch_uespec_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB
}
#endif
+#if UE_TIMING_TRACE
stop_meas(&ue->ulsch_encoding_stats);
+#endif
}
if (abstraction_flag == 0) {
@@ -1809,9 +1885,15 @@ void ue_ulsch_uespec_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB
T(T_UE_PHY_PUSCH_TX_POWER, T_INT(eNB_id),T_INT(Mod_id), T_INT(frame_tx%1024), T_INT(subframe_tx),T_INT(ue->tx_power_dBm[subframe_tx]),
T_INT(tx_amp),T_INT(ue->ulsch[eNB_id]->f_pusch),T_INT(get_PL(Mod_id,0,eNB_id)),T_INT(nb_rb));
#endif
- LOG_D(PHY,"[UE %d][PUSCH %d] AbsSubFrame %d.%d, generating PUSCH, Po_PUSCH: %d dBm (max %d dBm), amp %d\n",
- Mod_id,harq_pid,frame_tx%1024,subframe_tx,ue->tx_power_dBm[subframe_tx],ue->tx_power_max_dBm, tx_amp);
+
+#ifdef UE_DEBUG_TRACE
+ LOG_I(PHY,"[UE %d][PUSCH %d] AbsSubFrame %d.%d, generating PUSCH, Po_PUSCH: %d dBm (max %d dBm), amp %d\n",
+ Mod_id,harq_pid,frame_tx%1024,subframe_tx,ue->tx_power_dBm[subframe_tx],ue->tx_power_max_dBm, tx_amp);
+#endif
+#if UE_TIMING_TRACE
+
start_meas(&ue->ulsch_modulation_stats);
+#endif
ulsch_modulation(ue->common_vars.txdataF,
tx_amp,
frame_tx,
@@ -1819,16 +1901,17 @@ void ue_ulsch_uespec_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB
&ue->frame_parms,
ue->ulsch[eNB_id]);
for (aa=0; aa<1/*frame_parms->nb_antennas_tx*/; aa++)
- generate_drs_pusch(ue,
- proc,
- eNB_id,
- tx_amp,
- subframe_tx,
- first_rb,
- nb_rb,
- aa);
-
+ generate_drs_pusch(ue,
+ proc,
+ eNB_id,
+ tx_amp,
+ subframe_tx,
+ first_rb,
+ nb_rb,
+ aa);
+#if UE_TIMING_TRACE
stop_meas(&ue->ulsch_modulation_stats);
+#endif
}
if (abstraction_flag==1) {
@@ -1994,7 +2077,6 @@ void ue_pucch_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
uint8_t pucch_ack_payload[2];
- uint8_t n2_pucch = -1;
uint16_t pucch_resource;
ANFBmode_t bundling_flag;
PUCCH_FMT_t format;
@@ -2112,7 +2194,8 @@ void ue_pucch_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
SR_payload,
nb_cw,
cqi_status,
- ri_status);
+ ri_status,
+ bundling_flag);
// Determine PUCCH resources and payload: mandatory for pucch encoding
get_pucch_param(ue,
proc,
@@ -2158,9 +2241,11 @@ void ue_pucch_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
T(T_UE_PHY_PUCCH_TX_POWER, T_INT(eNB_id),T_INT(Mod_id), T_INT(frame_tx%1024), T_INT(subframe_tx),T_INT(ue->tx_power_dBm[subframe_tx]),
T_INT(tx_amp),T_INT(ue->dlsch[proc->subframe_rx&0x1][eNB_id][0]->g_pucch),T_INT(get_PL(ue->Mod_id,ue->CC_id,eNB_id)));
#endif
+
+#ifdef UE_DEBUG_TRACE
if(format == pucch_format1)
{
- LOG_D(PHY,"[UE %d][SR %x] AbsSubframe %d.%d Generating PUCCH 1 (SR for PUSCH), an_srs_simultanous %d, shorten_pucch %d, n1_pucch %d, Po_PUCCH %d\n",
+ LOG_I(PHY,"[UE %d][SR %x] AbsSubframe %d.%d Generating PUCCH 1 (SR for PUSCH), an_srs_simultanous %d, shorten_pucch %d, n1_pucch %d, Po_PUCCH %d\n",
Mod_id,
ue->dlsch[proc->subframe_rx&0x1][eNB_id][0]->rnti,
frame_tx%1024, subframe_tx,
@@ -2172,7 +2257,7 @@ void ue_pucch_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
else
{
if (SR_payload>0) {
- LOG_D(PHY,"[UE %d][SR %x] AbsSubFrame %d.%d Generating PUCCH %s payload %d,%d (with SR for PUSCH), an_srs_simultanous %d, shorten_pucch %d, n1_pucch %d, Po_PUCCH %d, amp %d\n",
+ LOG_I(PHY,"[UE %d][SR %x] AbsSubFrame %d.%d Generating PUCCH %s payload %d,%d (with SR for PUSCH), an_srs_simultanous %d, shorten_pucch %d, n1_pucch %d, Po_PUCCH %d, amp %d\n",
Mod_id,
ue->dlsch[proc->subframe_rx&0x1][eNB_id][0]->rnti,
frame_tx % 1024, subframe_tx,
@@ -2185,7 +2270,7 @@ void ue_pucch_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
Po_PUCCH,
tx_amp);
} else {
- LOG_D(PHY,"[UE %d][PDSCH %x] AbsSubFrame %d.%d rx_offset_diff: %d, Generating PUCCH %s, an_srs_simultanous %d, shorten_pucch %d, n1_pucch %d, b[0]=%d,b[1]=%d (SR_Payload %d), Po_PUCCH %d, amp %d\n",
+ LOG_I(PHY,"[UE %d][PDSCH %x] AbsSubFrame %d.%d rx_offset_diff: %d, Generating PUCCH %s, an_srs_simultanous %d, shorten_pucch %d, n1_pucch %d, b[0]=%d,b[1]=%d (SR_Payload %d), Po_PUCCH %d, amp %d\n",
Mod_id,
ue->dlsch[proc->subframe_rx&0x1][eNB_id][0]->rnti,
frame_tx%1024, subframe_tx,ue->rx_offset_diff,
@@ -2198,6 +2283,7 @@ void ue_pucch_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
tx_amp);
}
}
+#endif
#if T_TRACER
if(pucch_payload[0])
@@ -2263,16 +2349,15 @@ void ue_pucch_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
T(T_UE_PHY_PUCCH_TX_POWER, T_INT(eNB_id),T_INT(Mod_id), T_INT(frame_tx%1024), T_INT(subframe_tx),T_INT(ue->tx_power_dBm[subframe_tx]),
T_INT(tx_amp),T_INT(ue->dlsch[proc->subframe_rx&0x1][eNB_id][0]->g_pucch),T_INT(get_PL(ue->Mod_id,ue->CC_id,eNB_id)));
#endif
-
- LOG_D(PHY,"[UE %d][RNTI %x] AbsSubFrame %d.%d Generating PUCCH 2 (RI or CQI), n2_pucch %d, Po_PUCCH %d, isShortenPucch %d, amp %d\n",
+#ifdef UE_DEBUG_TRACE
+ LOG_D(PHY,"[UE %d][RNTI %x] AbsSubFrame %d.%d Generating PUCCH 2 (RI or CQI), Po_PUCCH %d, isShortenPucch %d, amp %d\n",
Mod_id,
ue->dlsch[proc->subframe_rx&0x1][eNB_id][0]->rnti,
frame_tx%1024, subframe_tx,
- n2_pucch,
Po_PUCCH,
isShortenPucch,
tx_amp);
-
+#endif
generate_pucch2x(ue->common_vars.txdataF,
&ue->frame_parms,
ue->ncs_cell,
@@ -2326,8 +2411,9 @@ void phy_procedures_UE_TX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,ui
#endif
ue->generate_ul_signal[eNB_id] = 0;
-
+#if UE_TIMING_TRACE
start_meas(&ue->phy_proc_tx);
+#endif
#ifdef EMOS
//phy_procedures_emos_UE_TX(next_slot);
@@ -2470,7 +2556,9 @@ void phy_procedures_UE_TX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,ui
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX, VCD_FUNCTION_OUT);
+#if UE_TIMING_TRACE
stop_meas(&ue->phy_proc_tx);
+#endif
}
void phy_procedures_UE_S_TX(PHY_VARS_UE *ue,uint8_t eNB_id,uint8_t abstraction_flag,relaying_type_t r_type)
@@ -2954,7 +3042,9 @@ int ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint
#endif
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_PDCCH_PROCEDURES, VCD_FUNCTION_IN);
+#if UE_TIMING_TRACE
start_meas(&ue->dlsch_rx_pdcch_stats);
+#endif
// if (subframe_rx != 5)
// return 0;
@@ -3036,6 +3126,9 @@ int ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint
#endif
+ uint8_t *nCCE_current = &ue->pdcch_vars[subframe_rx & 0x1][eNB_id]->nCCE[subframe_rx];
+ uint8_t *nCCE_dest = &ue->pdcch_vars[(subframe_rx+1) & 0x1][eNB_id]->nCCE[subframe_rx];
+ memcpy(nCCE_dest, nCCE_current, sizeof(uint8_t));
LOG_D(PHY,"[UE %d] AbsSubFrame %d.%d, Mode %s: DCI found %i --> rnti %x / crnti %x : format %d\n",
ue->Mod_id,frame_rx%1024,subframe_rx,mode_string[ue->UE_mode[eNB_id]],
@@ -3302,8 +3395,9 @@ int ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint
}
}
-
+#if UE_TIMING_TRACE
stop_meas(&ue->dlsch_rx_pdcch_stats);
+#endif
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_PDCCH_PROCEDURES, VCD_FUNCTION_OUT);
return(0);
}
@@ -3547,22 +3641,25 @@ void ue_pdsch_procedures(PHY_VARS_UE *ue, UE_rxtx_proc_t *proc, int eNB_id, PDSC
if ((m==s0) && (m<4))
first_symbol_flag = 1;
else
- first_symbol_flag = 0;
-
+ first_symbol_flag = 0;
+#if UE_TIMING_TRACE
start_meas(&ue->dlsch_llr_stats);
+#endif
// process DLSCH received in first slot
rx_pdsch(ue,
- pdsch,
- eNB_id,
- eNB_id_i,
- proc->frame_rx,
- subframe_rx, // subframe,
- m,
- first_symbol_flag,
- dual_stream_UE,
- i_mod,
- dlsch0->current_harq_pid);
+ pdsch,
+ eNB_id,
+ eNB_id_i,
+ proc->frame_rx,
+ subframe_rx, // subframe,
+ m,
+ first_symbol_flag,
+ dual_stream_UE,
+ i_mod,
+ dlsch0->current_harq_pid);
+#if UE_TIMING_TRACE
stop_meas(&ue->dlsch_llr_stats);
+#endif
} // CRNTI active
}
}
@@ -3738,23 +3835,27 @@ void ue_dlsch_procedures(PHY_VARS_UE *ue,
// start turbo decode for CW 0
dlsch0->harq_processes[harq_pid]->G = get_G(&ue->frame_parms,
- dlsch0->harq_processes[harq_pid]->nb_rb,
- dlsch0->harq_processes[harq_pid]->rb_alloc_even,
- dlsch0->harq_processes[harq_pid]->Qm,
- dlsch0->harq_processes[harq_pid]->Nl,
- ue->pdcch_vars[subframe_rx & 0x1][eNB_id]->num_pdcch_symbols,
- frame_rx,
- subframe_rx,
- ue->transmission_mode[eNB_id]<7?0:ue->transmission_mode[eNB_id]);
+ dlsch0->harq_processes[harq_pid]->nb_rb,
+ dlsch0->harq_processes[harq_pid]->rb_alloc_even,
+ dlsch0->harq_processes[harq_pid]->Qm,
+ dlsch0->harq_processes[harq_pid]->Nl,
+ ue->pdcch_vars[subframe_rx & 0x1][eNB_id]->num_pdcch_symbols,
+ frame_rx,
+ subframe_rx,
+ ue->transmission_mode[eNB_id]<7?0:ue->transmission_mode[eNB_id]);
+#if UE_TIMING_TRACE
start_meas(&ue->dlsch_unscrambling_stats);
+#endif
dlsch_unscrambling(&ue->frame_parms,
- 0,
- dlsch0,
- dlsch0->harq_processes[harq_pid]->G,
- pdsch_vars->llr[0],
- 0,
- subframe_rx<<1);
+ 0,
+ dlsch0,
+ dlsch0->harq_processes[harq_pid]->G,
+ pdsch_vars->llr[0],
+ 0,
+ subframe_rx<<1);
+#if UE_TIMING_TRACE
stop_meas(&ue->dlsch_unscrambling_stats);
+#endif
#if 0
LOG_I(PHY," ------ start turbo decoder for AbsSubframe %d.%d / %d ------ \n", frame_rx, subframe_rx, harq_pid);
@@ -3766,25 +3867,36 @@ void ue_dlsch_procedures(PHY_VARS_UE *ue,
LOG_I(PHY,"start turbo decode for CW 0 for AbsSubframe %d.%d / %d --> Kmimo %d \n", frame_rx, subframe_rx, harq_pid, dlsch0->Kmimo);
LOG_I(PHY,"start turbo decode for CW 0 for AbsSubframe %d.%d / %d --> Pdcch Sym %d \n", frame_rx, subframe_rx, harq_pid, ue->pdcch_vars[subframe_rx & 0x1][eNB_id]->num_pdcch_symbols);
#endif
-
+#if UE_TIMING_TRACE
start_meas(&ue->dlsch_decoding_stats[subframe_rx&0x1]);
+#endif
+
ret = dlsch_decoding(ue,
- pdsch_vars->llr[0],
- &ue->frame_parms,
- dlsch0,
- dlsch0->harq_processes[harq_pid],
- frame_rx,
- subframe_rx,
- harq_pid,
- pdsch==PDSCH?1:0,
- dlsch0->harq_processes[harq_pid]->TBS>256?1:0);
+ pdsch_vars->llr[0],
+ &ue->frame_parms,
+ dlsch0,
+ dlsch0->harq_processes[harq_pid],
+ frame_rx,
+ subframe_rx,
+ harq_pid,
+ pdsch==PDSCH?1:0,
+ dlsch0->harq_processes[harq_pid]->TBS>256?1:0);
+#if UE_TIMING_TRACE
stop_meas(&ue->dlsch_decoding_stats[subframe_rx&0x1]);
- LOG_D(PHY," --> Unscrambling for CW0 %5.3f\n",
+#if DISABLE_LOG_X
+ printf(" --> Unscrambling for CW0 %5.3f\n",
(ue->dlsch_unscrambling_stats.p_time)/(cpuf*1000.0));
- LOG_D(PHY,"AbsSubframe %d.%d --> Turbo Decoding for CW0 %5.3f\n",
+ printf("AbsSubframe %d.%d --> Turbo Decoding for CW0 %5.3f\n",
frame_rx%1024, subframe_rx,(ue->dlsch_decoding_stats[subframe_rx&0x1].p_time)/(cpuf*1000.0));
+#else
+ LOG_D(PHY, " --> Unscrambling for CW0 %5.3f\n",
+ (ue->dlsch_unscrambling_stats.p_time)/(cpuf*1000.0));
+ LOG_D(PHY, "AbsSubframe %d.%d --> Turbo Decoding for CW0 %5.3f\n",
+ frame_rx%1024, subframe_rx,(ue->dlsch_decoding_stats[subframe_rx&0x1].p_time)/(cpuf*1000.0));
+#endif
+#endif
if(is_cw1_active)
{
// start turbo decode for CW 1
@@ -3797,8 +3909,9 @@ void ue_dlsch_procedures(PHY_VARS_UE *ue,
frame_rx,
subframe_rx,
ue->transmission_mode[eNB_id]<7?0:ue->transmission_mode[eNB_id]);
-
+#if UE_TIMING_TRACE
start_meas(&ue->dlsch_unscrambling_stats);
+#endif
dlsch_unscrambling(&ue->frame_parms,
0,
dlsch1,
@@ -3806,7 +3919,9 @@ void ue_dlsch_procedures(PHY_VARS_UE *ue,
pdsch_vars->llr[1],
1,
subframe_rx<<1);
+#if UE_TIMING_TRACE
stop_meas(&ue->dlsch_unscrambling_stats);
+#endif
#if 0
LOG_I(PHY,"start turbo decode for CW 1 for AbsSubframe %d.%d / %d --> nb_rb %d \n", frame_rx, subframe_rx, harq_pid, dlsch1->harq_processes[harq_pid]->nb_rb);
@@ -3818,8 +3933,9 @@ void ue_dlsch_procedures(PHY_VARS_UE *ue,
LOG_I(PHY,"start turbo decode for CW 1 for AbsSubframe %d.%d / %d --> Pdcch Sym %d \n", frame_rx, subframe_rx, harq_pid, ue->pdcch_vars[subframe_rx & 0x1][eNB_id]->num_pdcch_symbols);
#endif
+#if UE_TIMING_TRACE
start_meas(&ue->dlsch_decoding_stats[subframe_rx&0x1]);
-
+#endif
ret1 = dlsch_decoding(ue,
pdsch_vars->llr[1],
&ue->frame_parms,
@@ -3830,13 +3946,23 @@ void ue_dlsch_procedures(PHY_VARS_UE *ue,
harq_pid,
pdsch==PDSCH?1:0,
dlsch1->harq_processes[harq_pid]->TBS>256?1:0);
+#if UE_TIMING_TRACE
+
stop_meas(&ue->dlsch_decoding_stats[subframe_rx&0x1]);
-
- LOG_D(PHY," --> Unscrambling for CW1 %5.3f\n",
+#if DISABLE_LOG_X
+ printf(" --> Unscrambling for CW1 %5.3f\n",
(ue->dlsch_unscrambling_stats.p_time)/(cpuf*1000.0));
- LOG_D(PHY,"AbsSubframe %d.%d --> Turbo Decoding for CW1 %5.3f\n",
+ printf("AbsSubframe %d.%d --> Turbo Decoding for CW1 %5.3f\n",
frame_rx%1024, subframe_rx,(ue->dlsch_decoding_stats[subframe_rx&0x1].p_time)/(cpuf*1000.0));
+#else
+ LOG_D(PHY, " --> Unscrambling for CW1 %5.3f\n",
+ (ue->dlsch_unscrambling_stats.p_time)/(cpuf*1000.0));
+ LOG_D(PHY, "AbsSubframe %d.%d --> Turbo Decoding for CW1 %5.3f\n",
+ frame_rx%1024, subframe_rx,(ue->dlsch_decoding_stats[subframe_rx&0x1].p_time)/(cpuf*1000.0));
+#endif
+
+#endif
}
LOG_D(PHY," ------ end turbo decoder for AbsSubframe %d.%d ------ \n", frame_rx, subframe_rx);
@@ -4021,17 +4147,21 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,
#if T_TRACER
T(T_UE_PHY_DL_TICK, T_INT(ue->Mod_id), T_INT(frame_rx%1024), T_INT(subframe_rx));
-#endif
T(T_UE_PHY_INPUT_SIGNAL, T_INT(ue->Mod_id), T_INT(frame_rx%1024), T_INT(subframe_rx), T_INT(0),
T_BUFFER(&ue->common_vars.rxdata[0][subframe_rx*ue->frame_parms.samples_per_tti],
ue->frame_parms.samples_per_tti * 4));
+#endif
// start timers
-
+#ifdef UE_DEBUG_TRACE
LOG_D(PHY," ****** start RX-Chain for AbsSubframe %d.%d ****** \n", frame_rx%1024, subframe_rx);
+#endif
+
+#if UE_TIMING_TRACE
start_meas(&ue->phy_proc_rx[subframe_rx&0x1]);
start_meas(&ue->generic_stat);
+#endif
pmch_flag = is_pmch_subframe(frame_rx,subframe_rx,&ue->frame_parms) ? 1 : 0;
@@ -4088,7 +4218,9 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,
LOG_D(PHY," ------ --> FFT/ChannelEst/PDCCH slot 0: AbsSubframe %d.%d ------ \n", frame_rx%1024, subframe_rx);
for (; l<=l2; l++) {
if (abstraction_flag == 0) {
- start_meas(&ue->ofdm_demod_stats);
+#if UE_TIMING_TRACE
+ start_meas(&ue->ofdm_demod_stats);
+#endif
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP, VCD_FUNCTION_IN);
slot_fep(ue,
l,
@@ -4097,7 +4229,9 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,
0,
0);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP, VCD_FUNCTION_OUT);
+#if UE_TIMING_TRACE
stop_meas(&ue->ofdm_demod_stats);
+#endif
}
ue_measurement_procedures(l-1,ue,proc,eNB_id,(subframe_rx<<1),abstraction_flag,mode);
@@ -4133,12 +4267,20 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,
0);
// first slot has been processed (FFTs + Channel Estimation, PCFICH/PHICH/PDCCH)
+#if UE_TIMING_TRACE
stop_meas(&ue->generic_stat);
- LOG_D(PHY,"[SFN %d] Slot0: FFT + Channel Estimate + PCFICH/PHICH/PDCCH %5.2f \n",subframe_rx,ue->generic_stat.p_time/(cpuf*1000.0));
+#if DISABLE_LOG_X
+ printf("[SFN %d] Slot0: FFT + Channel Estimate + PCFICH/PHICH/PDCCH %5.2f \n",subframe_rx,ue->generic_stat.p_time/(cpuf*1000.0));
+#else
+ LOG_D(PHY, "[SFN %d] Slot0: FFT + Channel Estimate + PCFICH/PHICH/PDCCH %5.2f \n",subframe_rx,ue->generic_stat.p_time/(cpuf*1000.0));
+#endif
+
+#endif
+
LOG_D(PHY," ------ --> PDSCH ChannelComp/LLR slot 0: AbsSubframe %d.%d ------ \n", frame_rx%1024, subframe_rx);
-
+#if UE_TIMING_TRACE
start_meas(&ue->generic_stat);
-
+#endif
// do procedures for C-RNTI
if (ue->dlsch[subframe_rx&0x1][eNB_id][0]->active == 1) {
LOG_D(PHY,"dlsch is active, doing ue_pdsch_procedures\n");
@@ -4207,16 +4349,20 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,
if (subframe_select(&ue->frame_parms,subframe_rx) != SF_S) { // do front-end processing for second slot, and first symbol of next subframe
for (l=1; lframe_parms.symbols_per_tti>>1; l++) {
if (abstraction_flag == 0) {
- start_meas(&ue->ofdm_demod_stats);
- VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP, VCD_FUNCTION_IN);
- slot_fep(ue,
- l,
- 1+(subframe_rx<<1),
- 0,
- 0,
- 0);
- VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP, VCD_FUNCTION_OUT);
- stop_meas(&ue->ofdm_demod_stats);
+#if UE_TIMING_TRACE
+ start_meas(&ue->ofdm_demod_stats);
+#endif
+ VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP, VCD_FUNCTION_IN);
+ slot_fep(ue,
+ l,
+ 1+(subframe_rx<<1),
+ 0,
+ 0,
+ 0);
+ VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP, VCD_FUNCTION_OUT);
+#if UE_TIMING_TRACE
+ stop_meas(&ue->ofdm_demod_stats);
+#endif
}
ue_measurement_procedures(l-1,ue,proc,eNB_id,1+(subframe_rx<<1),abstraction_flag,mode);
@@ -4235,10 +4381,16 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,
0);
}
} // not an S-subframe
-
+#if UE_TIMING_TRACE
stop_meas(&ue->generic_stat);
+#if DISABLE_LOG_X
+ printf("[SFN %d] Slot1: FFT + Channel Estimate + Pdsch Proc Slot0 %5.2f \n",subframe_rx,ue->generic_stat.p_time/(cpuf*1000.0));
+#else
+ LOG_D(PHY, "[SFN %d] Slot1: FFT + Channel Estimate + Pdsch Proc Slot0 %5.2f \n",subframe_rx,ue->generic_stat.p_time/(cpuf*1000.0));
+#endif
+
+#endif
- LOG_D(PHY,"[SFN %d] Slot1: FFT + Channel Estimate + Pdsch Proc Slot0 %5.2f \n",subframe_rx,ue->generic_stat.p_time/(cpuf*1000.0));
LOG_D(PHY," ------ end FFT/ChannelEst/PDCCH slot 1: AbsSubframe %d.%d ------ \n", frame_rx%1024, subframe_rx);
if ( (subframe_rx == 0) && (ue->decode_MIB == 1))
@@ -4252,40 +4404,51 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,
LOG_D(PHY," ------ --> PDSCH ChannelComp/LLR slot 0: AbsSubframe %d.%d ------ \n", frame_rx%1024, subframe_rx);
if (ue->dlsch[subframe_rx&0x1][eNB_id][0]->active == 1) {
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC, VCD_FUNCTION_IN);
+#if UE_TIMING_TRACE
start_meas(&ue->pdsch_procedures_stat);
+#endif
ue_pdsch_procedures(ue,
- proc,
- eNB_id,
- PDSCH,
- ue->dlsch[subframe_rx&0x1][eNB_id][0],
- NULL,
- 1+(ue->frame_parms.symbols_per_tti>>1),
- ue->frame_parms.symbols_per_tti-1,
- abstraction_flag);
- stop_meas(&ue->pdsch_procedures_stat);
-
+ proc,
+ eNB_id,
+ PDSCH,
+ ue->dlsch[subframe_rx&0x1][eNB_id][0],
+ NULL,
+ 1+(ue->frame_parms.symbols_per_tti>>1),
+ ue->frame_parms.symbols_per_tti-1,
+ abstraction_flag);
LOG_D(PHY," ------ end PDSCH ChannelComp/LLR slot 0: AbsSubframe %d.%d ------ \n", frame_rx%1024, subframe_rx);
LOG_D(PHY," ------ --> PDSCH Turbo Decoder slot 0/1: AbsSubframe %d.%d ------ \n", frame_rx%1024, subframe_rx);
-
+#if UE_TIMING_TRACE
+ stop_meas(&ue->pdsch_procedures_stat);
start_meas(&ue->dlsch_procedures_stat);
+#endif
ue_dlsch_procedures(ue,
- proc,
- eNB_id,
- PDSCH,
- ue->dlsch[subframe_rx&0x1][eNB_id][0],
- ue->dlsch[subframe_rx&0x1][eNB_id][1],
- &ue->dlsch_errors[eNB_id],
- mode,
- abstraction_flag);
+ proc,
+ eNB_id,
+ PDSCH,
+ ue->dlsch[subframe_rx&0x1][eNB_id][0],
+ ue->dlsch[subframe_rx&0x1][eNB_id][1],
+ &ue->dlsch_errors[eNB_id],
+ mode,
+ abstraction_flag);
+#if UE_TIMING_TRACE
stop_meas(&ue->dlsch_procedures_stat);
- LOG_D(PHY,"[SFN %d] Slot1: Pdsch Proc %5.2f\n",subframe_rx,ue->pdsch_procedures_stat.p_time/(cpuf*1000.0));
- LOG_D(PHY,"[SFN %d] Slot0 Slot1: Dlsch Proc %5.2f\n",subframe_rx,ue->dlsch_procedures_stat.p_time/(cpuf*1000.0));
+#if DISABLE_LOG_X
+ printf("[SFN %d] Slot1: Pdsch Proc %5.2f\n",subframe_rx,ue->pdsch_procedures_stat.p_time/(cpuf*1000.0));
+ printf("[SFN %d] Slot0 Slot1: Dlsch Proc %5.2f\n",subframe_rx,ue->dlsch_procedures_stat.p_time/(cpuf*1000.0));
+#else
+ LOG_D(PHY, "[SFN %d] Slot1: Pdsch Proc %5.2f\n",subframe_rx,ue->pdsch_procedures_stat.p_time/(cpuf*1000.0));
+ LOG_D(PHY, "[SFN %d] Slot0 Slot1: Dlsch Proc %5.2f\n",subframe_rx,ue->dlsch_procedures_stat.p_time/(cpuf*1000.0));
+#endif
+
+#endif
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDSCH_PROC, VCD_FUNCTION_OUT);
}
-
+#if UE_TIMING_TRACE
start_meas(&ue->generic_stat);
+#endif
#if 0
if(subframe_rx==5 && ue->dlsch[subframe_rx&0x1][eNB_id][0]->harq_processes[ue->dlsch[subframe_rx&0x1][eNB_id][0]->current_harq_pid]->nb_rb > 20){
@@ -4413,8 +4576,10 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,
}
+#if UE_TIMING_TRACE
stop_meas(&ue->generic_stat);
- //printf("after tubo until end of Rx %5.2f \n",ue->generic_stat.p_time/(cpuf*1000.0));
+ printf("after tubo until end of Rx %5.2f \n",ue->generic_stat.p_time/(cpuf*1000.0));
+#endif
#ifdef EMOS
phy_procedures_emos_UE_RX(ue,slot,eNB_id);
@@ -4422,9 +4587,14 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_RX, VCD_FUNCTION_OUT);
+#if UE_TIMING_TRACE
stop_meas(&ue->phy_proc_rx[subframe_rx&0x1]);
-
- LOG_D(PHY,"------FULL RX PROC [SFN %d]: %5.2f ------\n",subframe_rx,ue->phy_proc_rx[subframe_rx&0x1].p_time/(cpuf*1000.0));
+#if DISABLE_LOG_X
+ printf("------FULL RX PROC [SFN %d]: %5.2f ------\n",subframe_rx,ue->phy_proc_rx[subframe_rx&0x1].p_time/(cpuf*1000.0));
+#else
+ LOG_D(PHY, "------FULL RX PROC [SFN %d]: %5.2f ------\n",subframe_rx,ue->phy_proc_rx[subframe_rx&0x1].p_time/(cpuf*1000.0));
+#endif
+#endif
LOG_D(PHY," ****** end RX-Chain for AbsSubframe %d.%d ****** \n", frame_rx%1024, subframe_rx);
return (0);
}
@@ -4485,7 +4655,9 @@ void phy_procedures_UE_lte(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,u
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_LTE,1);
+#if UE_TIMING_TRACE
start_meas(&ue->phy_proc);
+#endif
#if defined(ENABLE_ITTI)
do {
@@ -4577,7 +4749,9 @@ void phy_procedures_UE_lte(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,u
}
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_LTE,0);
+#if UE_TIMING_TRACE
stop_meas(&ue->phy_proc);
+#endif
} // slot
}
diff --git a/openair1/SCHED/pusch_pc.c b/openair1/SCHED/pusch_pc.c
index 6e3c600c76..4976889e64 100644
--- a/openair1/SCHED/pusch_pc.c
+++ b/openair1/SCHED/pusch_pc.c
@@ -155,8 +155,8 @@ void pusch_power_cntl(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uint8_
ue->ulsch[eNB_id]->Po_PUSCH += (mac_xface->get_Po_NOMINAL_PUSCH(ue->Mod_id,0) + PL);
- LOG_I(PHY,"[UE %d][RAPROC] frame %d, subframe %d: Msg3 Po_PUSCH %d dBm (%d,%d,100*PL=%d,%d,%d)\n",
- ue->Mod_id,proc->frame_tx,proc->subframe_tx,ue->ulsch[eNB_id]->Po_PUSCH,
+ LOG_I(PHY,"[UE %d][RAPROC] AbsSubframe %d.%d: Msg3 (%d PRBs) Po_PUSCH %d dBm (%d,%d,100*PL=%d,%d,%d)\n",
+ ue->Mod_id,proc->frame_tx,proc->subframe_tx,nb_rb,ue->ulsch[eNB_id]->Po_PUSCH,
100*mac_xface->get_Po_NOMINAL_PUSCH(ue->Mod_id,0),
hundred_times_log10_NPRB[nb_rb-1],
100*PL,
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c b/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
old mode 100755
new mode 100644
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_primitives.c b/openair2/LAYER2/MAC/eNB_scheduler_primitives.c
index 56ede260e8..6c7ec35399 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_primitives.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_primitives.c
@@ -990,7 +990,8 @@ int get_nCCE_offset(int *CCE_table,
search_space_free = 1;
for (l=0; l= nCCE || CCE_table[cce] == 1) {
search_space_free = 0;
break;
}
@@ -1079,13 +1080,8 @@ try_again:
dci_alloc->rnti,1<L,
nCCE,nCCE_max,DCI_pdu->num_pdcch_symbols);
- if (nCCE + (1<L) > nCCE_max) {
- if (DCI_pdu->num_pdcch_symbols == 3)
- goto failed;
- DCI_pdu->num_pdcch_symbols++;
- nCCE_max = mac_xface->get_nCCE_max(module_idP,CC_idP,DCI_pdu->num_pdcch_symbols,subframeP);
- goto try_again;
- }
+ if (nCCE + (1<L) > nCCE_max)
+ goto failed;
// number of CCEs left can potentially hold this allocation
fCCE = get_nCCE_offset(CCE_table,
@@ -1095,9 +1091,11 @@ try_again:
dci_alloc->rnti,
subframeP);
if (fCCE == -1) {
+failed:
if (DCI_pdu->num_pdcch_symbols == 3) {
- LOG_I(MAC,"subframe %d: Dropping Allocation for RNTI %x\n",
- subframeP,dci_alloc->rnti);
+ LOG_I(MAC,"subframe %d: Dropping Allocation for RNTI %x (DCI %d/%d)\n",
+ subframeP,dci_alloc->rnti,
+ i, DCI_pdu->Num_common_dci + DCI_pdu->Num_ue_spec_dci);
for (j=0;j<=i;j++){
LOG_I(MAC,"DCI %d/%d (%d,%d) : rnti %x dci format %d, aggreg %d nCCE %d / %d (num_pdcch_symbols %d)\n",
j,DCI_pdu->Num_common_dci+DCI_pdu->Num_ue_spec_dci,
@@ -1107,7 +1105,7 @@ try_again:
nCCE,nCCE_max,DCI_pdu->num_pdcch_symbols);
}
//dump_CCE_table(CCE_table,nCCE_max,subframeP,dci_alloc->rnti,1<L);
- goto failed;
+ goto fatal;
}
DCI_pdu->num_pdcch_symbols++;
nCCE_max = mac_xface->get_nCCE_max(module_idP,CC_idP,DCI_pdu->num_pdcch_symbols,subframeP);
@@ -1125,7 +1123,7 @@ try_again:
return 0;
-failed:
+fatal:
return -1;
}
diff --git a/openair2/LAYER2/MAC/ue_procedures.c b/openair2/LAYER2/MAC/ue_procedures.c
index f9488ce543..d7e779c607 100644
--- a/openair2/LAYER2/MAC/ue_procedures.c
+++ b/openair2/LAYER2/MAC/ue_procedures.c
@@ -345,8 +345,9 @@ ue_send_sdu(
unsigned char rx_lcids[NB_RB_MAX];
unsigned short rx_lengths[NB_RB_MAX];
unsigned char *tx_sdu;
-
+#if UE_TIMING_TRACE
start_meas(&UE_mac_inst[module_idP].rx_dlsch_sdu);
+#endif
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SEND_SDU, VCD_FUNCTION_IN);
LOG_T(MAC,"sdu: %x.%x.%x\n",sdu[0],sdu[1],sdu[2]);
@@ -504,13 +505,16 @@ ue_send_sdu(
} // end if (payload_ptr != NULL)
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SEND_SDU, VCD_FUNCTION_OUT);
+#if UE_TIMING_TRACE
stop_meas(&UE_mac_inst[module_idP].rx_dlsch_sdu);
+#endif
}
void ue_decode_si(module_id_t module_idP,int CC_id,frame_t frameP, uint8_t eNB_index, void *pdu,uint16_t len)
{
-
- start_meas(&UE_mac_inst[module_idP].rx_si);
+#if UE_TIMING_TRACE
+ start_meas(&UE_mac_inst[module_idP].rx_si);
+#endif
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_DECODE_SI, VCD_FUNCTION_IN);
LOG_D(MAC,"[UE %d] Frame %d Sending SI to RRC (LCID Id %d,len %d)\n",module_idP,frameP,BCCH,len);
@@ -526,7 +530,9 @@ void ue_decode_si(module_id_t module_idP,int CC_id,frame_t frameP, uint8_t eNB_i
eNB_index,
0);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_DECODE_SI, VCD_FUNCTION_OUT);
+#if UE_TIMING_TRACE
stop_meas(&UE_mac_inst[module_idP].rx_si);
+#endif
if (opt_enabled == 1) {
trace_pdu(0,
(uint8_t *)pdu,
@@ -545,8 +551,9 @@ void ue_decode_si(module_id_t module_idP,int CC_id,frame_t frameP, uint8_t eNB_i
void ue_decode_p(module_id_t module_idP,int CC_id,frame_t frameP, uint8_t eNB_index, void *pdu,uint16_t len)
{
-
- start_meas(&UE_mac_inst[module_idP].rx_p);
+#if UE_TIMING_TRACE
+ start_meas(&UE_mac_inst[module_idP].rx_p);
+#endif
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_DECODE_PCCH, VCD_FUNCTION_IN);
LOG_D(MAC,"[UE %d] Frame %d Sending Paging message to RRC (LCID Id %d,len %d)\n",module_idP,frameP,PCCH,len);
@@ -562,7 +569,9 @@ void ue_decode_p(module_id_t module_idP,int CC_id,frame_t frameP, uint8_t eNB_in
eNB_index,
0);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_DECODE_PCCH, VCD_FUNCTION_OUT);
+#if UE_TIMING_TRACE
stop_meas(&UE_mac_inst[module_idP].rx_p);
+#endif
if (opt_enabled == 1) {
trace_pdu(0,
(uint8_t *)pdu,
@@ -636,8 +645,9 @@ void ue_send_mch_sdu(module_id_t module_idP, uint8_t CC_id, frame_t frameP, uint
unsigned char num_sdu, i, *payload_ptr;
unsigned char rx_lcids[NB_RB_MAX];
unsigned short rx_lengths[NB_RB_MAX];
-
+#if UE_TIMING_TRACE
start_meas(&UE_mac_inst[module_idP].rx_mch_sdu);
+#endif
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SEND_MCH_SDU, VCD_FUNCTION_IN);
LOG_D(MAC,"[UE %d] Frame %d : process the mch PDU for sync area %d \n",module_idP,frameP, sync_area);
@@ -696,7 +706,9 @@ void ue_send_mch_sdu(module_id_t module_idP, uint8_t CC_id, frame_t frameP, uint
}
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SEND_MCH_SDU, VCD_FUNCTION_OUT);
+#if UE_TIMING_TRACE
stop_meas(&UE_mac_inst[module_idP].rx_mch_sdu);
+#endif
}
int8_t ue_get_mbsfn_sf_alloction (module_id_t module_idP, uint8_t mbsfn_sync_area, unsigned char eNB_index)
@@ -721,8 +733,9 @@ int ue_query_mch(module_id_t module_idP, uint8_t CC_id, uint32_t frameP, uint32_
int mbsfn_period = 0;// 1<<(UE_mac_inst[module_idP].mbsfn_SubframeConfig[0]->radioframeAllocationPeriod);
int mcch_period = 0;// 32<<(UE_mac_inst[module_idP].mbsfn_AreaInfo[0]->mcch_Config_r9.mcch_RepetitionPeriod_r9);
int mch_scheduling_period = -1;
-
+#if UE_TIMING_TRACE
start_meas(&UE_mac_inst[module_idP].ue_query_mch);
+#endif
if (UE_mac_inst[module_idP].pmch_Config[0]) {
mch_scheduling_period = 8<<(UE_mac_inst[module_idP].pmch_Config[0]->mch_SchedulingPeriod_r9);
@@ -977,8 +990,9 @@ int ue_query_mch(module_id_t module_idP, uint8_t CC_id, uint32_t frameP, uint32_
}
}
} // end of for
-
+#if UE_TIMING_TRACE
stop_meas(&UE_mac_inst[module_idP].ue_query_mch);
+#endif
if ( (mcch_flag==1)) { // || (msi_flag==1))
*mcch_active=1;
@@ -1302,8 +1316,9 @@ void ue_get_sdu(module_id_t module_idP,int CC_id,frame_t frameP,sub_frame_t subf
mac_xface->macphy_exit("MAC FATAL CC_id>0");
return;
}
-
+#if UE_TIMING_TRACE
start_meas(&UE_mac_inst[module_idP].tx_ulsch_sdu);
+#endif
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_GET_SDU, VCD_FUNCTION_IN);
#ifdef CBA
@@ -1785,7 +1800,9 @@ for (lcid=DCCH; (lcid < MAX_NUM_LCID) && (is_all_lcid_processed == FALSE) ; lcid
}
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_GET_SDU, VCD_FUNCTION_OUT);
+#if UE_TIMING_TRACE
stop_meas(&UE_mac_inst[module_idP].tx_ulsch_sdu);
+#endif
if (opt_enabled) {
trace_pdu(0, ulsch_buffer, buflen, module_idP, 3, UE_mac_inst[module_idP].crnti, UE_mac_inst[module_idP].txFrame, UE_mac_inst[module_idP].txSubframe, 0, 0);
@@ -1829,7 +1846,9 @@ ue_scheduler(
instance_t instance;
int result;
#endif
+#if UE_TIMING_TRACE
start_meas(&UE_mac_inst[module_idP].ue_scheduler);
+#endif
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SCHEDULER, VCD_FUNCTION_IN);
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, module_idP, ENB_FLAG_NO, UE_mac_inst[module_idP].crnti, txFrameP, txSubframeP,eNB_indexP);
@@ -1889,14 +1908,18 @@ ue_scheduler(
case RRC_ConnSetup_failed:
LOG_E(MAC,"RRCConnectionSetup failed, returning to IDLE state\n");
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SCHEDULER, VCD_FUNCTION_OUT);
+#if UE_TIMING_TRACE
stop_meas(&UE_mac_inst[module_idP].ue_scheduler);
+#endif
return(CONNECTION_LOST);
break;
case RRC_PHY_RESYNCH:
LOG_E(MAC,"RRC Loss of synch, returning PHY_RESYNCH\n");
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SCHEDULER, VCD_FUNCTION_OUT);
+#if UE_TIMING_TRACE
stop_meas(&UE_mac_inst[module_idP].ue_scheduler);
+#endif
return(PHY_RESYNCH);
case RRC_Handover_failed:
@@ -1909,7 +1932,9 @@ ue_scheduler(
case RRC_HO_STARTED:
LOG_I(MAC,"RRC handover, Instruct PHY to start the contention-free PRACH and synchronization\n");
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SCHEDULER, VCD_FUNCTION_OUT);
+#if UE_TIMING_TRACE
stop_meas(&UE_mac_inst[module_idP].ue_scheduler);
+#endif
return(PHY_HO_PRACH);
default:
@@ -1926,7 +1951,9 @@ ue_scheduler(
} else {
LOG_E(MAC,"FATAL: radioResourceConfigCommon is NULL!!!\n");
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SCHEDULER, VCD_FUNCTION_OUT);
- stop_meas(&UE_mac_inst[module_idP].ue_scheduler);
+#if UE_TIMING_TRACE
+ stop_meas(&UE_mac_inst[module_idP].ue_scheduler);
+#endif
mac_xface->macphy_exit("");
//return(RRC_OK);
}
@@ -2011,7 +2038,9 @@ ue_scheduler(
UE_mac_inst[module_idP].ul_active=0;
LOG_T(MAC,"[UE %d] Release all SRs \n", module_idP);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SCHEDULER, VCD_FUNCTION_OUT);
+#if UE_TIMING_TRACE
stop_meas(&UE_mac_inst[module_idP].ue_scheduler);
+#endif
return(CONNECTION_OK);
}
@@ -2059,7 +2088,9 @@ ue_scheduler(
//If the UE has UL resources allocated for new transmission for this TTI here:
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SCHEDULER, VCD_FUNCTION_OUT);
- stop_meas(&UE_mac_inst[module_idP].ue_scheduler);
+#if UE_TIMING_TRACE
+ stop_meas(&UE_mac_inst[module_idP].ue_scheduler);
+#endif
return(CONNECTION_OK);
}
diff --git a/openair2/UTIL/LOG/log.h b/openair2/UTIL/LOG/log.h
index 5140a08dbd..86abb5eab6 100644
--- a/openair2/UTIL/LOG/log.h
+++ b/openair2/UTIL/LOG/log.h
@@ -45,6 +45,9 @@
#include
#include
#include
+#ifndef __STDC_FORMAT_MACROS
+#define __STDC_FORMAT_MACROS
+#endif
#include
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
@@ -315,16 +318,29 @@ void *log_thread_function(void * list);
# define LOG_N(c, x...) /* */
# define LOG_F(c, x...) /* */
# else /* T_TRACER */
-# define LOG_G(c, x...) logIt(c, LOG_EMERG, x)
-# define LOG_A(c, x...) logIt(c, LOG_ALERT, x)
-# define LOG_C(c, x...) logIt(c, LOG_CRIT, x)
-# define LOG_E(c, x...) logIt(c, LOG_ERR, x)
-# define LOG_W(c, x...) logIt(c, LOG_WARNING, x)
-# define LOG_N(c, x...) logIt(c, LOG_NOTICE, x)
-# define LOG_I(c, x...) logIt(c, LOG_INFO, x)
-# define LOG_D(c, x...) logIt(c, LOG_DEBUG, x)
-# define LOG_F(c, x...) logIt(c, LOG_FILE, x) // log to a file, useful for the MSC chart generation
-# define LOG_T(c, x...) logIt(c, LOG_TRACE, x)
+# if DISABLE_LOG_X
+# define LOG_I(c, x...) /* */
+# define LOG_W(c, x...) /* */
+# define LOG_E(c, x...) /* */
+# define LOG_D(c, x...) /* */
+# define LOG_T(c, x...) /* */
+# define LOG_G(c, x...) /* */
+# define LOG_A(c, x...) /* */
+# define LOG_C(c, x...) /* */
+# define LOG_N(c, x...) /* */
+# define LOG_F(c, x...) /* */
+# else /*DISABLE_LOG_X*/
+# define LOG_G(c, x...) logIt(c, LOG_EMERG, x)
+# define LOG_A(c, x...) logIt(c, LOG_ALERT, x)
+# define LOG_C(c, x...) logIt(c, LOG_CRIT, x)
+# define LOG_E(c, x...) logIt(c, LOG_ERR, x)
+# define LOG_W(c, x...) logIt(c, LOG_WARNING, x)
+# define LOG_N(c, x...) logIt(c, LOG_NOTICE, x)
+# define LOG_I(c, x...) logIt(c, LOG_INFO, x)
+# define LOG_D(c, x...) logIt(c, LOG_DEBUG, x)
+# define LOG_F(c, x...) logIt(c, LOG_FILE, x) // log to a file, useful for the MSC chart generation
+# define LOG_T(c, x...) logIt(c, LOG_TRACE, x)
+# endif /*DISABLE_LOG_X*/
# endif /* T_TRACER */
#else /* USER_MODE */
# define LOG_G(c, x...) printk(x)
@@ -408,7 +424,11 @@ static inline void printMeas(char * txt, Meas *M, int period) {
M->iterations,
M->maxArray[1],M->maxArray[2], M->maxArray[3],M->maxArray[4], M->maxArray[5],
M->maxArray[6],M->maxArray[7], M->maxArray[8],M->maxArray[9],M->maxArray[10]);
- LOG_W(PHY,"%s",txt2);
+#if DISABLE_LOG_X
+ printf("%s",txt2);
+#else
+ LOG_W(PHY, "%s",txt2);
+#endif
}
}
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band38.generic.oaisim.local_no_mme.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band38.generic.oaisim.local_no_mme.conf
index 8a7a694ece..e97e2d42d1 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band38.generic.oaisim.local_no_mme.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band38.generic.oaisim.local_no_mme.conf
@@ -118,7 +118,7 @@ eNBs =
ENB_INTERFACE_NAME_FOR_S1U = "none";
ENB_IPV4_ADDRESS_FOR_S1U = "0.0.0.0/24";
- ENB_PORT_FOR_S1U = 2153; # Spec 2152
+ ENB_PORT_FOR_S1U = 2152; # Spec 2152
};
log_config :
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band38.tm1.generic.oaisim.local_no_mme.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band38.tm1.generic.oaisim.local_no_mme.conf
index bfd24f2032..532e75d61e 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band38.tm1.generic.oaisim.local_no_mme.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band38.tm1.generic.oaisim.local_no_mme.conf
@@ -119,7 +119,7 @@ eNBs =
ENB_INTERFACE_NAME_FOR_S1U = "none";
ENB_IPV4_ADDRESS_FOR_S1U = "0.0.0.0/24";
- ENB_PORT_FOR_S1U = 2153; # Spec 2152
+ ENB_PORT_FOR_S1U = 2152; # Spec 2152
};
log_config :
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band40.tm1.TDD3SS5.100PRB.usrpb210.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band40.tm1.TDD3SS5.100PRB.usrpb210.conf
new file mode 100644
index 0000000000..9ede18f6af
--- /dev/null
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band40.tm1.TDD3SS5.100PRB.usrpb210.conf
@@ -0,0 +1,175 @@
+Active_eNBs = ( "eNB_Eurecom_LTEBox");
+# Asn1_verbosity, choice in: none, info, annoying
+Asn1_verbosity = "none";
+
+eNBs =
+(
+ {
+ ////////// Identification parameters:
+ eNB_ID = 0xe00;
+
+ cell_type = "CELL_MACRO_ENB";
+
+ eNB_name = "eNB_Eurecom_LTEBox";
+
+ // Tracking area code, 0x0000 and 0xfffe are reserved values
+ tracking_area_code = "1";
+
+ mobile_country_code = "208";
+
+ mobile_network_code = "94";
+
+ ////////// Physical parameters:
+
+ component_carriers = (
+ {
+ node_function = "eNodeB_3GPP";
+ node_timing = "synch_to_ext_device";
+ node_synch_ref = 0;
+ frame_type = "TDD";
+ tdd_config = 3;
+ tdd_config_s = 5;
+ prefix_type = "NORMAL";
+ eutra_band = 40;
+ downlink_frequency = 2350000000L;
+ uplink_frequency_offset = 0;
+ Nid_cell = 0;
+ N_RB_DL = 100;
+ Nid_cell_mbsfn = 0;
+ nb_antenna_ports = 1;
+ nb_antennas_tx = 1;
+ nb_antennas_rx = 1;
+ tx_gain = 90;
+ rx_gain = 125;
+ prach_root = 0;
+ prach_config_index = 0;
+ prach_high_speed = "DISABLE";
+ prach_zero_correlation = 1;
+ prach_freq_offset = 2;
+ pucch_delta_shift = 1;
+ pucch_nRB_CQI = 1;
+ pucch_nCS_AN = 0;
+ pucch_n1_AN = 32;
+ pdsch_referenceSignalPower = -24;
+ pdsch_p_b = 0;
+ pusch_n_SB = 1;
+ pusch_enable64QAM = "DISABLE";
+ pusch_hoppingMode = "interSubFrame";
+ pusch_hoppingOffset = 0;
+ pusch_groupHoppingEnabled = "ENABLE";
+ pusch_groupAssignment = 0;
+ pusch_sequenceHoppingEnabled = "DISABLE";
+ pusch_nDMRS1 = 1;
+ phich_duration = "NORMAL";
+ phich_resource = "ONESIXTH";
+ srs_enable = "DISABLE";
+ /* srs_BandwidthConfig =;
+ srs_SubframeConfig =;
+ srs_ackNackST =;
+ srs_MaxUpPts =;*/
+
+ pusch_p0_Nominal = -96;
+ pusch_alpha = "AL1";
+ pucch_p0_Nominal = -103;
+ msg3_delta_Preamble = 6;
+ pucch_deltaF_Format1 = "deltaF2";
+ pucch_deltaF_Format1b = "deltaF3";
+ pucch_deltaF_Format2 = "deltaF0";
+ pucch_deltaF_Format2a = "deltaF0";
+ pucch_deltaF_Format2b = "deltaF0";
+
+ rach_numberOfRA_Preambles = 64;
+ rach_preamblesGroupAConfig = "DISABLE";
+ /*
+ rach_sizeOfRA_PreamblesGroupA = ;
+ rach_messageSizeGroupA = ;
+ rach_messagePowerOffsetGroupB = ;
+ */
+ rach_powerRampingStep = 4;
+ rach_preambleInitialReceivedTargetPower = -104;
+ rach_preambleTransMax = 10;
+ rach_raResponseWindowSize = 10;
+ rach_macContentionResolutionTimer = 48;
+ rach_maxHARQ_Msg3Tx = 4;
+
+ pcch_default_PagingCycle = 128;
+ pcch_nB = "oneT";
+ bcch_modificationPeriodCoeff = 2;
+ ue_TimersAndConstants_t300 = 1000;
+ ue_TimersAndConstants_t301 = 1000;
+ ue_TimersAndConstants_t310 = 1000;
+ ue_TimersAndConstants_t311 = 10000;
+ ue_TimersAndConstants_n310 = 20;
+ ue_TimersAndConstants_n311 = 1;
+
+ ue_TransmissionMode = 1;
+ }
+ );
+
+ srb1_parameters :
+ {
+ # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
+ timer_poll_retransmit = 80;
+
+ # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
+ timer_reordering = 35;
+
+ # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
+ timer_status_prohibit = 0;
+
+ # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
+ poll_pdu = 4;
+
+ # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
+ poll_byte = 99999;
+
+ # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
+ max_retx_threshold = 4;
+ }
+
+ # ------- SCTP definitions
+ SCTP :
+ {
+ # Number of streams to use in input/output
+ SCTP_INSTREAMS = 2;
+ SCTP_OUTSTREAMS = 2;
+ };
+
+ ////////// MME parameters:
+
+ mme_ip_address = ( { ipv4 = "127.0.0.3";
+ ipv6 = "192:168:30::17";
+ active = "yes";
+ preference = "ipv4";
+ }
+ );
+
+ NETWORK_INTERFACES :
+ {
+
+ ENB_INTERFACE_NAME_FOR_S1_MME = "lo";
+ ENB_IPV4_ADDRESS_FOR_S1_MME = "127.0.0.2/24";
+ ENB_INTERFACE_NAME_FOR_S1U = "lo";
+ ENB_IPV4_ADDRESS_FOR_S1U = "127.0.0.4/24";
+ ENB_PORT_FOR_S1U = 2152; # Spec 2152
+ };
+
+ log_config :
+ {
+ global_log_level ="info";
+ global_log_verbosity ="medium";
+ hw_log_level ="info";
+ hw_log_verbosity ="medium";
+ phy_log_level ="info";
+ phy_log_verbosity ="medium";
+ mac_log_level ="info";
+ mac_log_verbosity ="high";
+ rlc_log_level ="info";
+ rlc_log_verbosity ="medium";
+ pdcp_log_level ="info";
+ pdcp_log_verbosity ="medium";
+ rrc_log_level ="info";
+ rrc_log_verbosity ="medium";
+ };
+ }
+);
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band40.tm1.TDD3SS5.25PRB.usrpb210.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band40.tm1.TDD3SS5.25PRB.usrpb210.conf
new file mode 100644
index 0000000000..c5200f0d79
--- /dev/null
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band40.tm1.TDD3SS5.25PRB.usrpb210.conf
@@ -0,0 +1,175 @@
+Active_eNBs = ( "eNB_Eurecom_LTEBox");
+# Asn1_verbosity, choice in: none, info, annoying
+Asn1_verbosity = "none";
+
+eNBs =
+(
+ {
+ ////////// Identification parameters:
+ eNB_ID = 0xe00;
+
+ cell_type = "CELL_MACRO_ENB";
+
+ eNB_name = "eNB_Eurecom_LTEBox";
+
+ // Tracking area code, 0x0000 and 0xfffe are reserved values
+ tracking_area_code = "1";
+
+ mobile_country_code = "208";
+
+ mobile_network_code = "94";
+
+ ////////// Physical parameters:
+
+ component_carriers = (
+ {
+ node_function = "eNodeB_3GPP";
+ node_timing = "synch_to_ext_device";
+ node_synch_ref = 0;
+ frame_type = "TDD";
+ tdd_config = 3;
+ tdd_config_s = 5;
+ prefix_type = "NORMAL";
+ eutra_band = 40;
+ downlink_frequency = 2350000000L;
+ uplink_frequency_offset = 0;
+ Nid_cell = 0;
+ N_RB_DL = 25;
+ Nid_cell_mbsfn = 0;
+ nb_antenna_ports = 1;
+ nb_antennas_tx = 1;
+ nb_antennas_rx = 1;
+ tx_gain = 90;
+ rx_gain = 125;
+ prach_root = 0;
+ prach_config_index = 0;
+ prach_high_speed = "DISABLE";
+ prach_zero_correlation = 1;
+ prach_freq_offset = 2;
+ pucch_delta_shift = 1;
+ pucch_nRB_CQI = 1;
+ pucch_nCS_AN = 0;
+ pucch_n1_AN = 32;
+ pdsch_referenceSignalPower = -24;
+ pdsch_p_b = 0;
+ pusch_n_SB = 1;
+ pusch_enable64QAM = "DISABLE";
+ pusch_hoppingMode = "interSubFrame";
+ pusch_hoppingOffset = 0;
+ pusch_groupHoppingEnabled = "ENABLE";
+ pusch_groupAssignment = 0;
+ pusch_sequenceHoppingEnabled = "DISABLE";
+ pusch_nDMRS1 = 1;
+ phich_duration = "NORMAL";
+ phich_resource = "ONESIXTH";
+ srs_enable = "DISABLE";
+ /* srs_BandwidthConfig =;
+ srs_SubframeConfig =;
+ srs_ackNackST =;
+ srs_MaxUpPts =;*/
+
+ pusch_p0_Nominal = -96;
+ pusch_alpha = "AL1";
+ pucch_p0_Nominal = -103;
+ msg3_delta_Preamble = 6;
+ pucch_deltaF_Format1 = "deltaF2";
+ pucch_deltaF_Format1b = "deltaF3";
+ pucch_deltaF_Format2 = "deltaF0";
+ pucch_deltaF_Format2a = "deltaF0";
+ pucch_deltaF_Format2b = "deltaF0";
+
+ rach_numberOfRA_Preambles = 64;
+ rach_preamblesGroupAConfig = "DISABLE";
+ /*
+ rach_sizeOfRA_PreamblesGroupA = ;
+ rach_messageSizeGroupA = ;
+ rach_messagePowerOffsetGroupB = ;
+ */
+ rach_powerRampingStep = 4;
+ rach_preambleInitialReceivedTargetPower = -104;
+ rach_preambleTransMax = 10;
+ rach_raResponseWindowSize = 10;
+ rach_macContentionResolutionTimer = 48;
+ rach_maxHARQ_Msg3Tx = 4;
+
+ pcch_default_PagingCycle = 128;
+ pcch_nB = "oneT";
+ bcch_modificationPeriodCoeff = 2;
+ ue_TimersAndConstants_t300 = 1000;
+ ue_TimersAndConstants_t301 = 1000;
+ ue_TimersAndConstants_t310 = 1000;
+ ue_TimersAndConstants_t311 = 10000;
+ ue_TimersAndConstants_n310 = 20;
+ ue_TimersAndConstants_n311 = 1;
+
+ ue_TransmissionMode = 1;
+ }
+ );
+
+ srb1_parameters :
+ {
+ # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
+ timer_poll_retransmit = 80;
+
+ # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
+ timer_reordering = 35;
+
+ # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
+ timer_status_prohibit = 0;
+
+ # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
+ poll_pdu = 4;
+
+ # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
+ poll_byte = 99999;
+
+ # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
+ max_retx_threshold = 4;
+ }
+
+ # ------- SCTP definitions
+ SCTP :
+ {
+ # Number of streams to use in input/output
+ SCTP_INSTREAMS = 2;
+ SCTP_OUTSTREAMS = 2;
+ };
+
+ ////////// MME parameters:
+
+ mme_ip_address = ( { ipv4 = "127.0.0.3";
+ ipv6 = "192:168:30::17";
+ active = "yes";
+ preference = "ipv4";
+ }
+ );
+
+ NETWORK_INTERFACES :
+ {
+
+ ENB_INTERFACE_NAME_FOR_S1_MME = "lo";
+ ENB_IPV4_ADDRESS_FOR_S1_MME = "127.0.0.2/24";
+ ENB_INTERFACE_NAME_FOR_S1U = "lo";
+ ENB_IPV4_ADDRESS_FOR_S1U = "127.0.0.4/24";
+ ENB_PORT_FOR_S1U = 2152; # Spec 2152
+ };
+
+ log_config :
+ {
+ global_log_level ="info";
+ global_log_verbosity ="medium";
+ hw_log_level ="info";
+ hw_log_verbosity ="medium";
+ phy_log_level ="info";
+ phy_log_verbosity ="medium";
+ mac_log_level ="info";
+ mac_log_verbosity ="high";
+ rlc_log_level ="info";
+ rlc_log_verbosity ="medium";
+ pdcp_log_level ="info";
+ pdcp_log_verbosity ="medium";
+ rrc_log_level ="info";
+ rrc_log_verbosity ="medium";
+ };
+ }
+);
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band40.tm1.TDD3SS5.50PRB.usrpb210.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band40.tm1.TDD3SS5.50PRB.usrpb210.conf
new file mode 100644
index 0000000000..f4143f77f0
--- /dev/null
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band40.tm1.TDD3SS5.50PRB.usrpb210.conf
@@ -0,0 +1,175 @@
+Active_eNBs = ( "eNB_Eurecom_LTEBox");
+# Asn1_verbosity, choice in: none, info, annoying
+Asn1_verbosity = "none";
+
+eNBs =
+(
+ {
+ ////////// Identification parameters:
+ eNB_ID = 0xe00;
+
+ cell_type = "CELL_MACRO_ENB";
+
+ eNB_name = "eNB_Eurecom_LTEBox";
+
+ // Tracking area code, 0x0000 and 0xfffe are reserved values
+ tracking_area_code = "1";
+
+ mobile_country_code = "208";
+
+ mobile_network_code = "94";
+
+ ////////// Physical parameters:
+
+ component_carriers = (
+ {
+ node_function = "eNodeB_3GPP";
+ node_timing = "synch_to_ext_device";
+ node_synch_ref = 0;
+ frame_type = "TDD";
+ tdd_config = 3;
+ tdd_config_s = 5;
+ prefix_type = "NORMAL";
+ eutra_band = 40;
+ downlink_frequency = 2350000000L;
+ uplink_frequency_offset = 0;
+ Nid_cell = 0;
+ N_RB_DL = 50;
+ Nid_cell_mbsfn = 0;
+ nb_antenna_ports = 1;
+ nb_antennas_tx = 1;
+ nb_antennas_rx = 1;
+ tx_gain = 90;
+ rx_gain = 125;
+ prach_root = 0;
+ prach_config_index = 0;
+ prach_high_speed = "DISABLE";
+ prach_zero_correlation = 1;
+ prach_freq_offset = 2;
+ pucch_delta_shift = 1;
+ pucch_nRB_CQI = 1;
+ pucch_nCS_AN = 0;
+ pucch_n1_AN = 32;
+ pdsch_referenceSignalPower = -24;
+ pdsch_p_b = 0;
+ pusch_n_SB = 1;
+ pusch_enable64QAM = "DISABLE";
+ pusch_hoppingMode = "interSubFrame";
+ pusch_hoppingOffset = 0;
+ pusch_groupHoppingEnabled = "ENABLE";
+ pusch_groupAssignment = 0;
+ pusch_sequenceHoppingEnabled = "DISABLE";
+ pusch_nDMRS1 = 1;
+ phich_duration = "NORMAL";
+ phich_resource = "ONESIXTH";
+ srs_enable = "DISABLE";
+ /* srs_BandwidthConfig =;
+ srs_SubframeConfig =;
+ srs_ackNackST =;
+ srs_MaxUpPts =;*/
+
+ pusch_p0_Nominal = -96;
+ pusch_alpha = "AL1";
+ pucch_p0_Nominal = -103;
+ msg3_delta_Preamble = 6;
+ pucch_deltaF_Format1 = "deltaF2";
+ pucch_deltaF_Format1b = "deltaF3";
+ pucch_deltaF_Format2 = "deltaF0";
+ pucch_deltaF_Format2a = "deltaF0";
+ pucch_deltaF_Format2b = "deltaF0";
+
+ rach_numberOfRA_Preambles = 64;
+ rach_preamblesGroupAConfig = "DISABLE";
+ /*
+ rach_sizeOfRA_PreamblesGroupA = ;
+ rach_messageSizeGroupA = ;
+ rach_messagePowerOffsetGroupB = ;
+ */
+ rach_powerRampingStep = 4;
+ rach_preambleInitialReceivedTargetPower = -104;
+ rach_preambleTransMax = 10;
+ rach_raResponseWindowSize = 10;
+ rach_macContentionResolutionTimer = 48;
+ rach_maxHARQ_Msg3Tx = 4;
+
+ pcch_default_PagingCycle = 128;
+ pcch_nB = "oneT";
+ bcch_modificationPeriodCoeff = 2;
+ ue_TimersAndConstants_t300 = 1000;
+ ue_TimersAndConstants_t301 = 1000;
+ ue_TimersAndConstants_t310 = 1000;
+ ue_TimersAndConstants_t311 = 10000;
+ ue_TimersAndConstants_n310 = 20;
+ ue_TimersAndConstants_n311 = 1;
+
+ ue_TransmissionMode = 1;
+ }
+ );
+
+ srb1_parameters :
+ {
+ # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
+ timer_poll_retransmit = 80;
+
+ # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
+ timer_reordering = 35;
+
+ # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
+ timer_status_prohibit = 0;
+
+ # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
+ poll_pdu = 4;
+
+ # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
+ poll_byte = 99999;
+
+ # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
+ max_retx_threshold = 4;
+ }
+
+ # ------- SCTP definitions
+ SCTP :
+ {
+ # Number of streams to use in input/output
+ SCTP_INSTREAMS = 2;
+ SCTP_OUTSTREAMS = 2;
+ };
+
+ ////////// MME parameters:
+
+ mme_ip_address = ( { ipv4 = "127.0.0.3";
+ ipv6 = "192:168:30::17";
+ active = "yes";
+ preference = "ipv4";
+ }
+ );
+
+ NETWORK_INTERFACES :
+ {
+
+ ENB_INTERFACE_NAME_FOR_S1_MME = "lo";
+ ENB_IPV4_ADDRESS_FOR_S1_MME = "127.0.0.2/24";
+ ENB_INTERFACE_NAME_FOR_S1U = "lo";
+ ENB_IPV4_ADDRESS_FOR_S1U = "127.0.0.4/24";
+ ENB_PORT_FOR_S1U = 2152; # Spec 2152
+ };
+
+ log_config :
+ {
+ global_log_level ="info";
+ global_log_verbosity ="medium";
+ hw_log_level ="info";
+ hw_log_verbosity ="medium";
+ phy_log_level ="info";
+ phy_log_verbosity ="medium";
+ mac_log_level ="info";
+ mac_log_verbosity ="high";
+ rlc_log_level ="info";
+ rlc_log_verbosity ="medium";
+ pdcp_log_level ="info";
+ pdcp_log_verbosity ="medium";
+ rrc_log_level ="info";
+ rrc_log_verbosity ="medium";
+ };
+ }
+);
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.flexran.oaisim.local_no_mme.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.flexran.oaisim.local_no_mme.conf
index ca36fab455..1881447541 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.flexran.oaisim.local_no_mme.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.flexran.oaisim.local_no_mme.conf
@@ -121,7 +121,7 @@ eNBs =
ENB_INTERFACE_NAME_FOR_S1U = "none";
ENB_IPV4_ADDRESS_FOR_S1U = "0.0.0.0/24";
- ENB_PORT_FOR_S1U = 2153; # Spec 2152
+ ENB_PORT_FOR_S1U = 2152; # Spec 2152
};
NETWORK_CONTROLLER :
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_mme.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_mme.conf
index 20589158d7..7dd8a500c3 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_mme.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_mme.conf
@@ -152,7 +152,7 @@ eNBs =
ENB_INTERFACE_NAME_FOR_S1U = "lo";
ENB_IPV4_ADDRESS_FOR_S1U = "127.0.0.1/8";
- ENB_PORT_FOR_S1U = 2153; # Spec 2152
+ ENB_PORT_FOR_S1U = 2152; # Spec 2152
};
log_config :
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf
index 5445e35656..e1587e5ceb 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.generic.oaisim.local_no_mme.conf
@@ -121,7 +121,7 @@ eNBs =
ENB_INTERFACE_NAME_FOR_S1U = "none";
ENB_IPV4_ADDRESS_FOR_S1U = "0.0.0.0/24";
- ENB_PORT_FOR_S1U = 2153; # Spec 2152
+ ENB_PORT_FOR_S1U = 2152; # Spec 2152
};
log_config :
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.generic.oaisim.local_mme.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.generic.oaisim.local_mme.conf
index 495675c871..f7e1ff1e6a 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.generic.oaisim.local_mme.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.generic.oaisim.local_mme.conf
@@ -151,7 +151,7 @@ eNBs =
ENB_INTERFACE_NAME_FOR_S1U = "lo";
ENB_IPV4_ADDRESS_FOR_S1U = "127.0.0.1/8";
- ENB_PORT_FOR_S1U = 2153; # Spec 2152
+ ENB_PORT_FOR_S1U = 2152; # Spec 2152
};
log_config :
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.generic.oaisim.local_no_mme.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.generic.oaisim.local_no_mme.conf
index 140d215b9c..eb85b65afb 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.generic.oaisim.local_no_mme.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.generic.oaisim.local_no_mme.conf
@@ -121,7 +121,7 @@ eNBs =
ENB_INTERFACE_NAME_FOR_S1U = "none";
ENB_IPV4_ADDRESS_FOR_S1U = "0.0.0.0/24";
- ENB_PORT_FOR_S1U = 2153; # Spec 2152
+ ENB_PORT_FOR_S1U = 2152; # Spec 2152
};
log_config :
diff --git a/targets/RT/USER/lte-ue.c b/targets/RT/USER/lte-ue.c
index ffd2a1a2e2..bbfe1f26bf 100644
--- a/targets/RT/USER/lte-ue.c
+++ b/targets/RT/USER/lte-ue.c
@@ -311,7 +311,11 @@ static void *UE_thread_synch(void *arg) {
case pbch:
- LOG_I(PHY,"[UE thread Synch] Running Initial Synch (mode %d)\n",UE->mode);
+#if DISABLE_LOG_X
+ printf("[UE thread Synch] Running Initial Synch (mode %d)\n",UE->mode);
+#else
+ LOG_I(PHY, "[UE thread Synch] Running Initial Synch (mode %d)\n",UE->mode);
+#endif
if (initial_sync( UE, UE->mode ) == 0) {
hw_slot_offset = (UE->rx_offset<<1) / UE->frame_parms.samples_per_tti;
@@ -432,11 +436,19 @@ static void *UE_thread_synch(void *arg) {
return &UE_thread_synch_retval; // not reached
}
}
- LOG_I( PHY, "[initial_sync] trying carrier off %d Hz, rxgain %d (DL %u, UL %u)\n",
+#if DISABLE_LOG_X
+ printf("[initial_sync] trying carrier off %d Hz, rxgain %d (DL %u, UL %u)\n",
freq_offset,
UE->rx_total_gain_dB,
downlink_frequency[0][0]+freq_offset,
downlink_frequency[0][0]+uplink_frequency_offset[0][0]+freq_offset );
+#else
+ LOG_I(PHY, "[initial_sync] trying carrier off %d Hz, rxgain %d (DL %u, UL %u)\n",
+ freq_offset,
+ UE->rx_total_gain_dB,
+ downlink_frequency[0][0]+freq_offset,
+ downlink_frequency[0][0]+uplink_frequency_offset[0][0]+freq_offset );
+#endif
for (i=0; irf_map.card].rx_num_channels; i++) {
openair0_cfg[UE->rf_map.card].rx_freq[UE->rf_map.chain+i] = downlink_frequency[CC_id][i]+freq_offset;
@@ -546,8 +558,9 @@ static void *UE_thread_rxn_txnp4(void *arg) {
phy_procedures_UE_RX( UE, proc, 0, 0, 1, UE->mode, no_relay, NULL );
}
+#if UE_TIMING_TRACE
start_meas(&UE->generic_stat);
-
+#endif
if (UE->mac_enabled==1) {
ret = mac_xface->ue_scheduler(UE->Mod_id,
@@ -577,8 +590,9 @@ static void *UE_thread_rxn_txnp4(void *arg) {
UE->Mod_id, proc->frame_rx, proc->subframe_tx,txt );
}
}
-
+#if UE_TIMING_TRACE
stop_meas(&UE->generic_stat);
+#endif
// Prepare the future Tx data