diff --git a/README.md b/README.md
index 7651aea5c998e7a55b2096d1562487d5155183b5..62f8576e81547cf7769ff966ec0b524629a40ea3 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,24 @@
+<h1 align="center">
+    <a href="https://openairinterface.org/"><img src="https://openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png" alt="OAI" width="550"></a>
+</h1>
+
+<p align="center">
+    <a href="https://gitlab.eurecom.fr/oai/openairinterface5g/-/blob/master/LICENSE"><img src="https://img.shields.io/badge/license-OAI--Public--V1.1-blue" alt="License"></a>
+    <a href="https://releases.ubuntu.com/18.04/"><img src="https://img.shields.io/badge/OS-Ubuntu18-Green" alt="Supported OS"></a>
+    <a href="https://www.redhat.com/en/enterprise-linux-8"><img src="https://img.shields.io/badge/OS-RHEL8-Green" alt="Supported OS"></a>
+</p>
+
+<p align="center">
+    <a href="https://jenkins-oai.eurecom.fr/job/RAN-Container-Parent/"><img src="https://img.shields.io/jenkins/build?jobUrl=https%3A%2F%2Fjenkins-oai.eurecom.fr%2Fjob%2FRAN-Container-Parent%2F&label=build%20Images"></a>
+</p>
+
+<p align="center">
+  <a href="https://hub.docker.com/r/rdefosseoai/oai-enb"><img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/rdefosseoai/oai-enb?label=eNB%20docker%20pulls"></a>
+  <a href="https://hub.docker.com/r/rdefosseoai/oai-lte-ue"><img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/rdefosseoai/oai-lte-ue?label=LTE-UE%20docker%20pulls"></a>
+  <a href="https://hub.docker.com/r/rdefosseoai/oai-gnb"><img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/rdefosseoai/oai-gnb?label=gNB%20docker%20pulls"></a>
+  <a href="https://hub.docker.com/r/rdefosseoai/oai-nr-ue"><img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/rdefosseoai/oai-nr-ue?label=NR-UE%20docker%20pulls"></a>
+</p>
+
 # OpenAirInterface License #
 
 OpenAirInterface is under OpenAirInterface Software Alliance license.
diff --git a/ci-scripts/Jenkinsfile-GitLab-Container b/ci-scripts/Jenkinsfile-GitLab-Container
index a6621afe25e217f668f6595380919178f0a6d4de..b41361758095cd4c11c090383c56f707d86dcf59 100644
--- a/ci-scripts/Jenkinsfile-GitLab-Container
+++ b/ci-scripts/Jenkinsfile-GitLab-Container
@@ -262,6 +262,7 @@ pipeline {
           echo "This is a MERGE event"
           addGitLabMRComment comment: message
         }
+        echo "Pipeline is SUCCESSFUL"
       }
     }
     failure {
@@ -271,6 +272,7 @@ pipeline {
           echo "This is a MERGE event"
           addGitLabMRComment comment: message
         }
+        echo "Pipeline FAILED"
       }
     }
   }
diff --git a/ci-scripts/cls_containerize.py b/ci-scripts/cls_containerize.py
index 3e65f83e063a7f5385771290437ce6d3fd9f6d73..d0669b7665f3e5b9692ee6fa336227a5583ddbf4 100644
--- a/ci-scripts/cls_containerize.py
+++ b/ci-scripts/cls_containerize.py
@@ -195,6 +195,7 @@ class Containerize():
 		# the potential merge. Note that merge conflicts should already been checked earlier
 		imageTag = 'develop'
 		sharedTag = 'develop'
+		forceSharedImageBuild = False
 		if (self.ranAllowMerge):
 			imageTag = 'ci-temp'
 			if self.ranTargetBranch == '':
@@ -203,6 +204,13 @@ class Containerize():
 			else:
 				logging.debug('Merging with the target branch: ' + self.ranTargetBranch)
 				mySSH.command('git merge --ff origin/' + self.ranTargetBranch + ' -m "Temporary merge for CI"', '\$', 5)
+				mySSH.command('git diff HEAD..origin/develop -- docker/Dockerfile.ran' + self.dockerfileprefix + ' | grep -i INDEX', '\$', 5)
+				result = re.search('index', mySSH.getBefore())
+				if result is not None:
+					forceSharedImageBuild = True
+					sharedTag = 'ci-temp'
+		else:
+			forceSharedImageBuild = True
 
  		# if asterix, copy the entitlement and subscription manager configurations
 		if self.host == 'Red Hat':
@@ -214,13 +222,14 @@ class Containerize():
 		sharedimage = 'ran-build'
 		# Let's remove any previous run artifacts if still there
 		mySSH.command(self.cli + ' image prune --force', '\$', 30)
-		if (not self.ranAllowMerge):
-			mySSH.command(self.cli + ' image rm ' + sharedimage + ':' + sharedTag, '\$', 30)
+		if forceSharedImageBuild:
+			mySSH.command(self.cli + ' image rm ' + sharedimage + ':' + sharedTag + ' || true', '\$', 30)
 		for image,pattern in imageNames:
-			mySSH.command(self.cli + ' image rm ' + image + ':' + imageTag, '\$', 30)
+			mySSH.command(self.cli + ' image rm ' + image + ':' + imageTag + ' || true', '\$', 30)
 
 		# Build the shared image only on Push Events (not on Merge Requests)
-		if (not self.ranAllowMerge):
+		# On when the shared image docker file is being modified.
+		if forceSharedImageBuild:
 			mySSH.command(self.cli + ' build ' + self.cliBuildOptions + ' --target ' + sharedimage + ' --tag ' + sharedimage + ':' + sharedTag + ' --file docker/Dockerfile.ran' + self.dockerfileprefix + ' --build-arg NEEDED_GIT_PROXY="http://proxy.eurecom.fr:8080" . > cmake_targets/log/ran-build.log 2>&1', '\$', 1600)
 		# First verify if the shared image was properly created.
 		status = True
diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt
index b18f92f9c24b7c29459c57e2dd09f83d67b74dc6..67f65b6848f2a039887de36bcf5a59e79be8d95b 100644
--- a/cmake_targets/CMakeLists.txt
+++ b/cmake_targets/CMakeLists.txt
@@ -982,8 +982,6 @@ Message("CPU_Affinity flag is ${CPU_AFFINITY}")
 #    ???!!! TO BE DOCUMENTED OPTIONS !!!???
 ##############################################################
 
-add_boolean_option(NO_RRM                  True  "DO WE HAVE A RADIO RESSOURCE MANAGER: NO")
-
 add_boolean_option(OAI_NW_DRIVER_TYPE_ETHERNET False "????")
 add_boolean_option(DEADLINE_SCHEDULER False "Use the Linux scheduler SCHED_DEADLINE: kernel >= 3.14")
 add_boolean_option(CPU_AFFINITY False "Enable CPU Affinity of threads (only valid without deadline scheduler). It is enabled only with >2 CPUs")
@@ -1044,7 +1042,6 @@ add_boolean_option(JUMBO_FRAME             True  "ENABLE LARGE SDU in ACCESS STR
 ##########################
 # RLC LAYER OPTIONS
 ##########################
-add_boolean_option(OPENAIR2                True  "Access Stratum layer 2 built in executable")
 add_boolean_option(TRACE_RLC_PAYLOAD       False "Fatal assert in this case")
 add_boolean_option(RLC_STOP_ON_LOST_PDU    False "Fatal assert in this case")
 
@@ -1072,8 +1069,6 @@ add_boolean_option(TRACE_RLC_UM_TX_STATUS  False "TRACE for RLC UM, TO BE CHANGE
 ##########################
 # PDCP LAYER OPTIONS
 ##########################
-#add_boolean_option(PDCP_USE_NETLINK            False "For eNB, PDCP communicate with a NETLINK socket if connected to network driver, else could use a RT-FIFO")
-#add_boolean_option(PDCP_USE_NETLINK_QUEUES     False "When PDCP_USE_NETLINK is true, incoming IP packets are stored in queues")
 #add_boolean_option(LINK_ENB_PDCP_TO_IP_DRIVER  False "For eNB, PDCP communicate with a IP driver")
 #add_boolean_option(LINK_ENB_PDCP_TO_GTPV1U     True  "For eNB, PDCP communicate with GTP-U protocol (eNB<->S-GW)")
 
diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai
index c9390d67ce5202478b4951746a58505aef22c5c8..c68ca8a553f2ad94987c28f969159dd639f44eae 100755
--- a/cmake_targets/build_oai
+++ b/cmake_targets/build_oai
@@ -551,7 +551,7 @@ function main() {
     if [ "$HW" == "OAI_USRP" ] ; then
       echo_info "installing packages for USRP support"
       check_install_usrp_uhd_driver
-      if [ ! "$DISABLE_HARDWARE_DEPENDENCY" == "True" ]; then
+      if [ ! -v BUILD_UHD_FROM_SOURCE ] && [ ! "$DISABLE_HARDWARE_DEPENDENCY" == "True" ]; then
         install_usrp_uhd_driver $UHD_IMAGES_DIR
       fi
     fi 
diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper
index d3fcf615e220140d9c21e7b266a2248651a95e5b..06f32183b7feb3a9b9d1da3c56d78a3100354a92 100755
--- a/cmake_targets/tools/build_helper
+++ b/cmake_targets/tools/build_helper
@@ -117,6 +117,9 @@ check_supported_distribution() {
         "rhel8.2")     return 0 ;;
         "rhel8.3")     return 0 ;;
         "rhel8.4")     return 0 ;;
+        "rhel8.5")     return 0 ;;
+        "rhel8.6")     return 0 ;;
+        "rhel8.7")     return 0 ;;
         "centos7")     return 0 ;;
     esac
     return 1
@@ -317,19 +320,30 @@ install_usrp_uhd_driver_from_source(){
     echo_info "\nInstalling UHD driver from sources. The log file for UHD driver installation is here: $uhd_install_log "
     (
     pushd /tmp
-    echo "Downloading UHD driver"
+    echo "Cloning UHD driver repository"
     rm -rf /tmp/uhd
     git clone https://github.com/EttusResearch/uhd.git
     cd uhd
-    git checkout tags/v4.0.0.0
+    if [[ -v UHD_VERSION ]]; then
+        git checkout tags/v${UHD_VERSION}
+    else
+        git checkout tags/v4.0.0.0
+    fi
     mkdir -p host/build
-    cd host/build
-    $CMAKE ../
+    cd host/build || true
+    $CMAKE ../ -GNinja
     echo "Compiling UHD"
-    make -j`nproc`
-    make test
-    $SUDO make install
+    ninja
+    $SUDO ninja install
     $SUDO ldconfig -v
+    if [ $IS_CONTAINER -eq 0 ]; then
+        if [[ "$OS_DISTRO" == "ubuntu" ]]; then
+            $SUDO /usr/local/lib/uhd/utils/uhd_images_downloader.py
+        fi
+        if [[ "$OS_DISTRO" == "rhel" ]]; then
+            $SUDO /usr/local/lib64/uhd/utils/uhd_images_downloader.py
+        fi
+    fi
     popd
     rm -rf /tmp/uhd
     ) >& $uhd_install_log
@@ -338,10 +352,26 @@ install_usrp_uhd_driver_from_source(){
 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 || true
+        $SUDO apt-get remove uhd -y || true
+        $SUDO apt-get remove uhd-host -y || true
+        $SUDO apt-get remove libuhd-dev -y || true
+        $SUDO apt-get remove libuhd003 -y || true
+        $SUDO apt-get remove libuhd3.13.1 -y || true
+        $SUDO apt-get remove libuhd3.14.0 -y || true
+        $SUDO apt-get remove libuhd3.14.1 -y || true
+        $SUDO apt-get remove libuhd3.15.0 -y || true
+        local distribution=$(get_distribution_release)
+        if [[ "$distribution" == "ubuntu18.04" ]]; then
+            $SUDO apt-get remove libuhd4.0.0 -y || true
+            $SUDO apt-get remove libuhd4.1.0 -y || true
+        fi
         v=$(lsb_release -cs)
         $SUDO apt-add-repository --remove "deb http://files.ettus.com/binaries/uhd/repo/uhd/ubuntu/$v $v main"
+        if [[ -v BUILD_UHD_FROM_SOURCE ]]; then
+            $SUDO apt-get install -y libboost-all-dev libusb-1.0-0-dev doxygen python3-docutils python3-mako python3-numpy python3-requests python3-setuptools ninja-build
+            install_usrp_uhd_driver_from_source
+            return
+        fi
         # The new USRP repository
         # Raphael Defosseux: Adding a loop on adding PPA because in CI the gpg key retrieve may
         # timeout due to proxy / network latencies in Eurecom on VM
@@ -361,7 +391,12 @@ check_install_usrp_uhd_driver(){
         done
         $SUDO apt-get update
         $SUDO apt-get -y install  python python-tk libboost-all-dev libusb-1.0-0-dev
-        $SUDO apt-get -y install libuhd-dev libuhd003 uhd-host
+        if [[ "$distribution" == "ubuntu16.04" ]]; then
+            $SUDO apt-get -y install libuhd-dev libuhd3.15.0 uhd-host
+        fi
+        if [[ "$distribution" == "ubuntu18.04" ]]; then
+            $SUDO apt-get -y install libuhd-dev libuhd4.1.0 uhd-host
+        fi
     elif [[ "$OS_BASEDISTRO" == "fedora" ]]; then
         if [ $IS_CONTAINER -eq 0 ]
         then
@@ -692,6 +727,7 @@ check_install_oai_software() {
 	build-essential \
 	$CMAKE \
 	cmake-curses-gui  \
+	curl \
         ninja-build \
 	doxygen \
 	doxygen-gui \
diff --git a/common/utils/LOG/log_extern.h b/common/utils/LOG/log_extern.h
index f6205889dc1477f2bc1bc86115ed89ff9ecaed72..23f9217d7e33de62b4efad7ec7f206a3e10c5661 100644
--- a/common/utils/LOG/log_extern.h
+++ b/common/utils/LOG/log_extern.h
@@ -19,7 +19,7 @@
  *      contact@openairinterface.org
  */
 
-#include"log.h"
+#include "log.h"
 
 extern log_t *g_log;
 
diff --git a/common/utils/nr/nr_common.c b/common/utils/nr/nr_common.c
index 0a532c346bc00a51621654c0fc85386d86fdd20f..a704a66c767ace9d3b6dc0011bf8f6574b149e02 100644
--- a/common/utils/nr/nr_common.c
+++ b/common/utils/nr/nr_common.c
@@ -65,8 +65,8 @@ nr_bandentry_t nr_bandtable[] = {
   {41,  2496000, 2690000, 2496000, 2690000,  3, 499200,  15},
   {41,  2496000, 2690000, 2496000, 2690000,  6, 499200,  30},
   {47,  5855000, 5925000, 5855000, 5925000,  1, 790334,  15},
-  //{48,  3550000, 3700000, 3550000, 3700000,  1, 636667,  15},
-  //{48,  3550000, 3700000, 3550000, 3700000,  2, 636668,  30},
+  {48,  3550000, 3700000, 3550000, 3700000,  1, 636667,  15},
+  {48,  3550000, 3700000, 3550000, 3700000,  2, 636668,  30},
   {50,  1432000, 1517000, 1432000, 1517000, 20, 286400, 100},
   {51,  1427000, 1432000, 1427000, 1432000, 20, 285400, 100},
   {53,  2483500, 2495000, 2483500, 2495000, 20, 496700, 100},
@@ -90,14 +90,15 @@ nr_bandentry_t nr_bandtable[] = {
   {84,  1920000, 1980000,     000,     000, 20, 384000, 100},
   {86,  1710000, 1785000,     000,     000, 20, 342000, 100},
   {89,   824000,  849000,     000,     000, 20, 342000, 100},
-  {90,  2496000, 2690000, 2496000, 2690000, 3,  499200,  15},
-  {90,  2496000, 2690000, 2496000, 2690000, 6,  499200,  30},
+  {90,  2496000, 2690000, 2496000, 2690000,  3, 499200,  15},
+  {90,  2496000, 2690000, 2496000, 2690000,  6, 499200,  30},
   {90,  2496000, 2690000, 2496000, 2690000, 20, 499200, 100},
   {91,   832000,  862000, 1427000, 1432000, 20, 285400, 100},
   {92,   832000,  862000, 1432000, 1517000, 20, 286400, 100},
   {93,   880000,  915000, 1427000, 1432000, 20, 285400, 100},
   {94,   880000,  915000, 1432000, 1517000, 20, 286400, 100},
   {95,  2010000, 2025000,     000,     000, 20, 402000, 100},
+  {96,  5925000, 7125000, 5925000, 7125000,  1, 795000,  15},
   {257,26500020,29500000,26500020,29500000,  1,2054166,  60},
   {257,26500080,29500000,26500080,29500000,  2,2054167, 120},
   {258,24250080,27500000,24250080,27500000,  1,2016667,  60},
@@ -437,9 +438,17 @@ int get_nr_table_idx(int nr_bandP, uint8_t scs_index) {
   AssertFatal(nr_bandP <= nr_bandtable[nr_bandtable_size-1].band, "NR band %d exceeds NR bands table maximum limit %d\n", nr_bandP, nr_bandtable[nr_bandtable_size-1].band);
   for (i = 0; i < nr_bandtable_size && nr_bandtable[i].band != nr_bandP; i++);
 
-  // selection of correct Deltaf raster according to SCS
-  if ((nr_bandtable[i].deltaf_raster != 100) && (nr_bandtable[i].deltaf_raster != scs_khz))
+  // In frequency bands with two deltaFRaster,
+  // the higher deltaFRaster applies to channels using only the SCS that is equal to or larger than the higher deltaFRaster
+  // and SSB SCS is equal to the higher deltaFRaster.
+  while(((i+1)<nr_bandtable_size) &&
+        (nr_bandtable[i+1].band == nr_bandtable[i].band) &&
+        (nr_bandtable[i].deltaf_raster != scs_khz)) {
     i++;
+  }
+
+  AssertFatal(nr_bandtable[i].band == nr_bandP, "Found band table %d does not correspond to the input one %d\n",nr_bandtable[i].band,nr_bandP);
+
 
   LOG_D(PHY, "NR band table index %d (Band %d, dl_min %lu, ul_min %lu)\n", i, nr_bandtable[i].band, nr_bandtable[i].dl_min,nr_bandtable[i].ul_min);
 
diff --git a/doc/BUILD.md b/doc/BUILD.md
index 166563877ef34dd7e4983057291e8ff69a5188f1..40b63ac697587fd2d4348dfeeb8e480ad3bd4cdf 100644
--- a/doc/BUILD.md
+++ b/doc/BUILD.md
@@ -88,6 +88,21 @@ You can build any oai softmodem executable separately, you may not need all of t
 
 After completing the build, the binaries are available in the `cmake_targets/ran_build/build` directory. A copy is also available in the `target/bin` directory, with all binaries suffixed by the 3GPP release number, today .Rel15.
 
+When installing the pre-requisites, especially the `UHD` driver, you can now specify if you want to install from source or not.
+
+- For `fedora`-based OS, it was already the case all the time. But now you can specify which version to install.
+- For `ubuntu` OS, the Ettus PPA currently installs the following versions:
+  * `Ubuntu16.04`: --> version `3.15.0.0`
+  * `Ubuntu18.04`: --> version `4.1.0.0`
+
+```bash
+export BUILD_UHD_FROM_SOURCE=True
+export UHD_VERSION=3.15.0.0
+./build_oai -I -w USRP
+```
+
+The `UHD_VERSION` env variable `SHALL` be a valid tag (minus `v`) from the `https://github.com/EttusResearch/uhd.git` repository.
+
 ## Issue when building `nasmeh` module ##
 
 A lot of users and contributors have faced the issue: `nasmesh` module does not build.
diff --git a/docker/Dockerfile.eNB.rhel8.2 b/docker/Dockerfile.eNB.rhel8.2
index 90c807fc0e3b0719ed52daad370d465e3a84d7e7..0522271df013f32bd9038186853d7c62149d2a45 100644
--- a/docker/Dockerfile.eNB.rhel8.2
+++ b/docker/Dockerfile.eNB.rhel8.2
@@ -41,17 +41,23 @@ RUN python3 ./docker/scripts/generateTemplate.py ./docker/scripts/enb_parameters
 
 #start from scratch for target executable
 FROM registry.access.redhat.com/ubi8/ubi:latest as oai-enb
+ENV TZ=Europe/Paris
 
 RUN yum update -y && \
     yum install -y --enablerepo="ubi-8-codeready-builder" \
         lksctp-tools \
         nettle \
+        tzdata \
         procps-ng \
         atlas \
+        python3 \
+        python3-pip \
         net-tools \
         iputils \
         iproute \
         libyaml && \
+    pip3 install six && \
+    pip3 install requests && \
     echo "/usr/local/lib" > /etc/ld.so.conf.d/local-lib.conf && \
     echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local-lib.conf
 
@@ -78,6 +84,8 @@ COPY --from=enb-build /lib64/libconfig.so.9 /lib64
 COPY --from=enb-build /lib64/libblas.so.3 /lib64
 COPY --from=enb-build /lib64/liblapack.so.3 /lib64
 COPY --from=enb-build /lib64/liblapacke.so.3 /lib64
+
+# Now we are copying from builder-image the UHD files.
 COPY --from=enb-build /lib64/libboost_chrono.so.1.66.0 /lib64
 COPY --from=enb-build /lib64/libboost_date_time.so.1.66.0 /lib64
 COPY --from=enb-build /lib64/libboost_filesystem.so.1.66.0 /lib64
@@ -88,7 +96,14 @@ COPY --from=enb-build /lib64/libboost_system.so.1.66.0 /lib64
 COPY --from=enb-build /lib64/libboost_unit_test_framework.so.1.66.0 /lib64
 COPY --from=enb-build /lib64/libboost_atomic.so.1.66.0 /lib64
 COPY --from=enb-build /lib64/libboost_timer.so.1.66.0 /lib64
-COPY --from=enb-build /usr/local/lib64/libuhd.so.4.0.0 /usr/local/lib64
+COPY --from=enb-build /lib64/libboost_regex.so.1.66.0 /lib64
+
+COPY --from=enb-build /usr/local/bin/uhd_find_devices /usr/local/bin
+COPY --from=enb-build /usr/local/lib64/libuhd.so.3.15.0 /usr/local/lib64
+COPY --from=enb-build /usr/local/lib64/uhd/utils/uhd_images_downloader.py /opt/oai-enb/bin
+
+WORKDIR /usr/local/share/uhd/rfnoc
+COPY --from=enb-build /usr/local/share/uhd/rfnoc/ .
 
 RUN ldconfig
 
diff --git a/docker/Dockerfile.eNB.ubuntu18 b/docker/Dockerfile.eNB.ubuntu18
index c4393dc78e6b16f027d9d760bfb3821d388eed52..cf748784e597a8780ffce23cf51ef647be601d1a 100644
--- a/docker/Dockerfile.eNB.ubuntu18
+++ b/docker/Dockerfile.eNB.ubuntu18
@@ -25,7 +25,7 @@
 #
 #---------------------------------------------------------------------
 
-FROM ran-build:latest AS enb-build 
+FROM ran-build:latest AS enb-build
 
 RUN rm -Rf /oai-ran
 WORKDIR /oai-ran
@@ -42,8 +42,7 @@ RUN python3 ./docker/scripts/generateTemplate.py ./docker/scripts/enb_parameters
 #start from scratch for target executable
 FROM ubuntu:bionic as oai-enb
 ENV DEBIAN_FRONTEND=noninteractive
-ENV TZ=Europe
-RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
+ENV TZ=Europe/Paris
 
 RUN apt-get update && \
     DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \
@@ -60,16 +59,12 @@ RUN apt-get update && \
         iputils-ping \
         iproute2 \
         iperf \
-        libyaml-0-2 && \
-    # Install UHD driver from ettus ppa 
-    # At time of writing, it is 3.14
-    add-apt-repository ppa:ettusresearch/uhd --yes && \
-    apt-get update && \
-    DEBIAN_FRONTEND=noninteractive apt-get install --yes \
         python \
+        python3 \
+        python3-six \
+        python3-requests \
         libusb-1.0-0 \
-        libuhd003 \
-        uhd-host && \
+        libyaml-0-2 && \
     rm -rf /var/lib/apt/lists/*
 
 WORKDIR /opt/oai-enb/bin
@@ -90,6 +85,17 @@ RUN /bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so.Rel15 /usr/local/lib/
 RUN /bin/bash -c "ln -s /usr/local/lib/librfsimulator.so.Rel15 /usr/local/lib/librfsimulator.so"
 
 COPY --from=enb-build /usr/local/lib/libprotobuf-c.so.1 .
+# Now we are copying from builder-image the UHD files.
+COPY --from=enb-build /usr/local/bin/uhd_find_devices /usr/local/bin
+COPY --from=enb-build /usr/local/lib/libuhd.so.3.15.0 /usr/local/lib
+COPY --from=enb-build /usr/local/lib/uhd/utils/uhd_images_downloader.py /opt/oai-enb/bin
+WORKDIR /usr/lib/x86_64-linux-gnu
+COPY --from=enb-build /usr/lib/x86_64-linux-gnu/libboost_date_time.so.1.65.1 .
+COPY --from=enb-build /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.65.1 .
+COPY --from=enb-build /usr/lib/x86_64-linux-gnu/libboost_regex.so.1.65.1 .
+COPY --from=enb-build /usr/lib/x86_64-linux-gnu/libboost_serialization.so.1.65.1 .
+COPY --from=enb-build /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.65.1 .
+COPY --from=enb-build /usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1 .
 
 RUN ldconfig
 
diff --git a/docker/Dockerfile.gNB.rhel8.2 b/docker/Dockerfile.gNB.rhel8.2
index 9ee0bf9ae9d52683895b6940909858c0b0df8696..b34a9d242d094776aa3f3c0782bccc4cde5650f7 100644
--- a/docker/Dockerfile.gNB.rhel8.2
+++ b/docker/Dockerfile.gNB.rhel8.2
@@ -41,6 +41,7 @@ RUN python3 ./docker/scripts/generateTemplate.py ./docker/scripts/gnb_parameters
 
 #start from scratch for target executable
 FROM registry.access.redhat.com/ubi8/ubi:latest as oai-gnb
+ENV TZ=Europe/Paris
 
 RUN yum repolist --disablerepo=* && \
     yum update -y && \
@@ -51,9 +52,14 @@ RUN yum repolist --disablerepo=* && \
         atlas \
         lksctp-tools \
         nettle \
+        tzdata \
+        python3 \
+        python3-pip \
         net-tools \
         iputils \
         libyaml && \
+    pip3 install six && \
+    pip3 install requests && \
     echo "/usr/local/lib" > /etc/ld.so.conf.d/local-lib.conf && \
     echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local-lib.conf
 
@@ -84,6 +90,8 @@ COPY --from=gnb-build /lib64/libforms.so.2 /lib64
 COPY --from=gnb-build /lib64/libblas.so.3 /lib64
 COPY --from=gnb-build /lib64/liblapack.so.3 /lib64
 COPY --from=gnb-build /lib64/liblapacke.so.3 /lib64
+
+# Now we are copying from builder-image the UHD files.
 COPY --from=gnb-build /lib64/libboost_chrono.so.1.66.0 /lib64
 COPY --from=gnb-build /lib64/libboost_date_time.so.1.66.0 /lib64
 COPY --from=gnb-build /lib64/libboost_filesystem.so.1.66.0 /lib64
@@ -94,7 +102,14 @@ COPY --from=gnb-build /lib64/libboost_system.so.1.66.0 /lib64
 COPY --from=gnb-build /lib64/libboost_unit_test_framework.so.1.66.0 /lib64
 COPY --from=gnb-build /lib64/libboost_atomic.so.1.66.0 /lib64
 COPY --from=gnb-build /lib64/libboost_timer.so.1.66.0 /lib64
-COPY --from=gnb-build /usr/local/lib64/libuhd.so.4.0.0 /usr/local/lib64
+COPY --from=gnb-build /lib64/libboost_regex.so.1.66.0 /lib64
+
+COPY --from=gnb-build /usr/local/bin/uhd_find_devices /usr/local/bin
+COPY --from=gnb-build /usr/local/lib64/libuhd.so.3.15.0 /usr/local/lib64
+COPY --from=gnb-build /usr/local/lib64/uhd/utils/uhd_images_downloader.py /opt/oai-gnb/bin
+
+WORKDIR /usr/local/share/uhd/rfnoc
+COPY --from=gnb-build /usr/local/share/uhd/rfnoc/ .
 
 RUN ldconfig
 
diff --git a/docker/Dockerfile.gNB.ubuntu18 b/docker/Dockerfile.gNB.ubuntu18
index 990c4363e5b98aad04ee852826937807b8883487..cfd9d8214491c3f0d4ac4d9cd16a42e775cecc4b 100644
--- a/docker/Dockerfile.gNB.ubuntu18
+++ b/docker/Dockerfile.gNB.ubuntu18
@@ -59,16 +59,12 @@ RUN apt-get update && \
         net-tools \
         iproute2 \
         iputils-ping \
-        libyaml-0-2 && \
-    # Install UHD driver from ettus ppa 
-    # At time of writing, it is 3.14
-    add-apt-repository ppa:ettusresearch/uhd --yes && \
-    apt-get update && \
-    DEBIAN_FRONTEND=noninteractive apt-get install --yes \
         python \
+        python3 \
+        python3-six \
+        python3-requests \
         libusb-1.0-0 \
-        libuhd003 \
-        uhd-host && \
+        libyaml-0-2 && \
     rm -rf /var/lib/apt/lists/*
 
 WORKDIR /opt/oai-gnb/bin
@@ -93,6 +89,18 @@ RUN /bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so.Rel15 /usr/local/lib/
 RUN /bin/bash -c "ln -s /usr/local/lib/librfsimulator.so.Rel15 /usr/local/lib/librfsimulator.so"
 COPY --from=gnb-build /usr/local/lib/libprotobuf-c.so.1 .
 
+# Now we are copying from builder-image the UHD files.
+COPY --from=gnb-build /usr/local/bin/uhd_find_devices /usr/local/bin
+COPY --from=gnb-build /usr/local/lib/libuhd.so.3.15.0 /usr/local/lib
+COPY --from=gnb-build /usr/local/lib/uhd/utils/uhd_images_downloader.py /opt/oai-gnb/bin
+WORKDIR /usr/lib/x86_64-linux-gnu
+COPY --from=gnb-build /usr/lib/x86_64-linux-gnu/libboost_date_time.so.1.65.1 .
+COPY --from=gnb-build /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.65.1 .
+COPY --from=gnb-build /usr/lib/x86_64-linux-gnu/libboost_regex.so.1.65.1 .
+COPY --from=gnb-build /usr/lib/x86_64-linux-gnu/libboost_serialization.so.1.65.1 .
+COPY --from=gnb-build /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.65.1 .
+COPY --from=gnb-build /usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1 .
+
 RUN ldconfig
 
 # Copy the relevant configuration files for gNB
diff --git a/docker/Dockerfile.lteRU.rhel8.2 b/docker/Dockerfile.lteRU.rhel8.2
index 314c01dff39eb3d46014216ad947929172915bd3..7e2a054a1291a08128e19b796ee2148b4d95571a 100644
--- a/docker/Dockerfile.lteRU.rhel8.2
+++ b/docker/Dockerfile.lteRU.rhel8.2
@@ -48,9 +48,13 @@ RUN yum update -y && \
         tzdata \
         procps-ng \
         atlas \
+        python3 \
+        python3-pip \
         net-tools \
         iputils \
         iproute && \
+    pip3 install six && \
+    pip3 install requests && \
     echo "/usr/local/lib" > /etc/ld.so.conf.d/local-lib.conf && \
     echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local-lib.conf
 
@@ -66,11 +70,12 @@ COPY --from=ru-build /oai-ran/targets/bin/liboai_usrpdevif.so.Rel15 .
 COPY --from=ru-build /oai-ran/targets/bin/libparams_libconfig.so .
 COPY --from=ru-build /oai-ran/cmake_targets/ran_build/build/libdfts.so .
 
-# Copying from the ran-build image the USRP needed packages
 COPY --from=ru-build /lib64/libconfig.so.9 /lib64
 COPY --from=ru-build /lib64/libblas.so.3 /lib64
 COPY --from=ru-build /lib64/liblapack.so.3 /lib64
 COPY --from=ru-build /lib64/liblapacke.so.3 /lib64
+
+# Copying from the ran-build image the USRP needed packages
 COPY --from=ru-build /lib64/libboost_chrono.so.1.66.0 /lib64
 COPY --from=ru-build /lib64/libboost_date_time.so.1.66.0 /lib64
 COPY --from=ru-build /lib64/libboost_filesystem.so.1.66.0 /lib64
@@ -81,7 +86,14 @@ COPY --from=ru-build /lib64/libboost_system.so.1.66.0 /lib64
 COPY --from=ru-build /lib64/libboost_unit_test_framework.so.1.66.0 /lib64
 COPY --from=ru-build /lib64/libboost_atomic.so.1.66.0 /lib64
 COPY --from=ru-build /lib64/libboost_timer.so.1.66.0 /lib64
-COPY --from=ru-build /usr/local/lib64/libuhd.so.4.0.0 /usr/local/lib64
+COPY --from=ru-build /lib64/libboost_regex.so.1.66.0 /lib64
+
+COPY --from=ru-build /usr/local/bin/uhd_find_devices /usr/local/bin
+COPY --from=ru-build /usr/local/lib64/libuhd.so.3.15.0 /usr/local/lib64
+COPY --from=ru-build /usr/local/lib64/uhd/utils/uhd_images_downloader.py /opt/oai-lte-ru/bin
+
+WORKDIR /usr/local/share/uhd/rfnoc
+COPY --from=ru-build /usr/local/share/uhd/rfnoc/ .
 
 RUN /bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so.Rel15 /usr/local/lib/liboai_transpro.so" && \
     /bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so.Rel15 /usr/local/lib/liboai_device.so" && \
diff --git a/docker/Dockerfile.lteRU.ubuntu18 b/docker/Dockerfile.lteRU.ubuntu18
index fa99827d942ca3e9e5e566acbb75860fd14f5554..eafb8fa8af495631bdc0a6a88852422351ca0cc2 100644
--- a/docker/Dockerfile.lteRU.ubuntu18
+++ b/docker/Dockerfile.lteRU.ubuntu18
@@ -54,17 +54,13 @@ RUN apt-get update && \
         libatlas3-base \
         libconfig9 \
         net-tools \
-        iputils-ping \
-        iproute2 && \
-    # Install UHD driver from ettus ppa
-    # At time of writing, it is 3.14
-    add-apt-repository ppa:ettusresearch/uhd --yes && \
-    apt-get update && \
-    DEBIAN_FRONTEND=noninteractive apt-get install --yes \
         python \
+        python3 \
+        python3-six \
+        python3-requests \
         libusb-1.0-0 \
-        libuhd003 \
-        uhd-host && \
+        iputils-ping \
+        iproute2 && \
     rm -rf /var/lib/apt/lists/*
 
 WORKDIR /opt/oai-lte-ru/bin
@@ -78,6 +74,19 @@ COPY --from=ru-build /oai-ran/targets/bin/librfsimulator.so.Rel15 .
 COPY --from=ru-build /oai-ran/targets/bin/liboai_usrpdevif.so.Rel15 .
 COPY --from=ru-build /oai-ran/targets/bin/libparams_libconfig.so .
 COPY --from=ru-build /oai-ran/cmake_targets/ran_build/build/libdfts.so .
+
+# Now we are copying from builder-image the UHD files.
+COPY --from=ru-build /usr/local/bin/uhd_find_devices /usr/local/bin
+COPY --from=ru-build /usr/local/lib/libuhd.so.3.15.0 /usr/local/lib
+COPY --from=ru-build /usr/local/lib/uhd/utils/uhd_images_downloader.py /opt/oai-lte-ru/bin
+WORKDIR /usr/lib/x86_64-linux-gnu
+COPY --from=ru-build /usr/lib/x86_64-linux-gnu/libboost_date_time.so.1.65.1 .
+COPY --from=ru-build /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.65.1 .
+COPY --from=ru-build /usr/lib/x86_64-linux-gnu/libboost_regex.so.1.65.1 .
+COPY --from=ru-build /usr/lib/x86_64-linux-gnu/libboost_serialization.so.1.65.1 .
+COPY --from=ru-build /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.65.1 .
+COPY --from=ru-build /usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1 .
+
 RUN /bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so.Rel15 /usr/local/lib/liboai_transpro.so" && \
     /bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so.Rel15 /usr/local/lib/liboai_device.so" && \
     /bin/bash -c "ln -s /usr/local/lib/librfsimulator.so.Rel15 /usr/local/lib/librfsimulator.so" && \
diff --git a/docker/Dockerfile.lteUE.rhel8.2 b/docker/Dockerfile.lteUE.rhel8.2
index 936780297a6c8f1d5976e3fbe374dd15316aba70..a6814be1361333445c03e2d51a51bfbf943a84b4 100644
--- a/docker/Dockerfile.lteUE.rhel8.2
+++ b/docker/Dockerfile.lteUE.rhel8.2
@@ -42,17 +42,23 @@ RUN python3 ./docker/scripts/generateTemplate.py ./docker/scripts/lte_ue_paramet
 
 #start from scratch for target executable
 FROM registry.access.redhat.com/ubi8/ubi:latest as oai-lte-ue
+ENV TZ=Europe/Paris
 
 RUN yum update -y && \
     yum install -y --enablerepo="ubi-8-codeready-builder" \
         lksctp-tools \
         procps-ng \
         nettle \
+        tzdata \
         atlas \
+        python3 \
+        python3-pip \
         iproute \
         net-tools \
         iputils \
         libyaml && \
+    pip3 install six && \
+    pip3 install requests && \
     echo "/usr/local/lib" > /etc/ld.so.conf.d/local-lib.conf && \
     echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local-lib.conf
 
@@ -82,6 +88,8 @@ COPY --from=lte-ue-build /lib64/libconfig.so.9 /lib64
 COPY --from=lte-ue-build /lib64/libblas.so.3 /lib64
 COPY --from=lte-ue-build /lib64/liblapack.so.3 /lib64
 COPY --from=lte-ue-build /lib64/liblapacke.so.3 /lib64
+
+# Now we are copying from builder-image the UHD files.
 COPY --from=lte-ue-build /lib64/libboost_chrono.so.1.66.0 /lib64
 COPY --from=lte-ue-build /lib64/libboost_date_time.so.1.66.0 /lib64
 COPY --from=lte-ue-build /lib64/libboost_filesystem.so.1.66.0 /lib64
@@ -92,7 +100,14 @@ COPY --from=lte-ue-build /lib64/libboost_system.so.1.66.0 /lib64
 COPY --from=lte-ue-build /lib64/libboost_unit_test_framework.so.1.66.0 /lib64
 COPY --from=lte-ue-build /lib64/libboost_atomic.so.1.66.0 /lib64
 COPY --from=lte-ue-build /lib64/libboost_timer.so.1.66.0 /lib64
-COPY --from=lte-ue-build /usr/local/lib64/libuhd.so.4.0.0 /usr/local/lib64
+COPY --from=lte-ue-build /lib64/libboost_regex.so.1.66.0 /lib64
+
+COPY --from=lte-ue-build /usr/local/bin/uhd_find_devices /usr/local/bin
+COPY --from=lte-ue-build /usr/local/lib64/libuhd.so.3.15.0 /usr/local/lib64
+COPY --from=lte-ue-build /usr/local/lib64/uhd/utils/uhd_images_downloader.py /opt/oai-lte-ue/bin
+
+WORKDIR /usr/local/share/uhd/rfnoc
+COPY --from=lte-ue-build /usr/local/share/uhd/rfnoc/ .
 
 RUN ldconfig
 
diff --git a/docker/Dockerfile.lteUE.ubuntu18 b/docker/Dockerfile.lteUE.ubuntu18
index 34cbe651adc90fcae4150080148b4468455be982..6d54ab08fc79ca8f38bca7e181df123f336c47f0 100644
--- a/docker/Dockerfile.lteUE.ubuntu18
+++ b/docker/Dockerfile.lteUE.ubuntu18
@@ -43,8 +43,7 @@ RUN python3 ./docker/scripts/generateTemplate.py ./docker/scripts/lte_ue_paramet
 #start from scratch for target executable
 FROM ubuntu:bionic as oai-lte-ue
 ENV DEBIAN_FRONTEND=noninteractive
-ENV TZ=Europe
-RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
+ENV TZ=Europe/Paris
 
 RUN apt-get update && \
     DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \
@@ -58,19 +57,15 @@ RUN apt-get update && \
         libconfig9 \
         openssl \
         net-tools \
+        python \
+        python3 \
+        python3-six \
+        python3-requests \
+        libusb-1.0-0 \
         iputils-ping \
         iproute2 \
         iperf \
         libyaml-0-2 && \
-    # Install UHD driver from ettus ppa 
-    # At time of writing, it is 3.14
-    add-apt-repository ppa:ettusresearch/uhd --yes && \
-    apt-get update && \
-    DEBIAN_FRONTEND=noninteractive apt-get install --yes \
-        python \
-        libusb-1.0-0 \
-        libuhd003 \
-        uhd-host && \
     rm -rf /var/lib/apt/lists/*
 
 WORKDIR /opt/oai-lte-ue/bin
@@ -95,6 +90,18 @@ RUN /bin/bash -c "ln -s /usr/local/lib/librfsimulator.so.Rel15 /usr/local/lib/li
 
 COPY --from=lte-ue-build /usr/local/lib/libprotobuf-c.so.1 .
 
+# Now we are copying from builder-image the UHD files.
+COPY --from=lte-ue-build /usr/local/bin/uhd_find_devices /usr/local/bin
+COPY --from=lte-ue-build /usr/local/lib/libuhd.so.3.15.0 /usr/local/lib
+COPY --from=lte-ue-build /usr/local/lib/uhd/utils/uhd_images_downloader.py /opt/oai-lte-ue/bin
+WORKDIR /usr/lib/x86_64-linux-gnu
+COPY --from=lte-ue-build /usr/lib/x86_64-linux-gnu/libboost_date_time.so.1.65.1 .
+COPY --from=lte-ue-build /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.65.1 .
+COPY --from=lte-ue-build /usr/lib/x86_64-linux-gnu/libboost_regex.so.1.65.1 .
+COPY --from=lte-ue-build /usr/lib/x86_64-linux-gnu/libboost_serialization.so.1.65.1 .
+COPY --from=lte-ue-build /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.65.1 .
+COPY --from=lte-ue-build /usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1 .
+
 RUN ldconfig
 
 # Copy the relevant configuration files for UE
diff --git a/docker/Dockerfile.nrUE.rhel8.2 b/docker/Dockerfile.nrUE.rhel8.2
index 56fc746adeb53cc0336ca28b88f80cd068b6d4b9..ec74d1194018d134f1558d0fc3f5345d37c45383 100644
--- a/docker/Dockerfile.nrUE.rhel8.2
+++ b/docker/Dockerfile.nrUE.rhel8.2
@@ -51,9 +51,13 @@ RUN yum update -y && \
         iputils \
         iproute \
         atlas \
+        python3 \
+        python3-pip \
         libXpm \
         libX11 \
         libyaml && \
+    pip3 install six && \
+    pip3 install requests && \
     echo "/usr/local/lib" > /etc/ld.so.conf.d/local-lib.conf && \
     echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local-lib.conf
 
@@ -87,6 +91,8 @@ COPY --from=nr-ue-build /lib64/libblas.so.3 /lib64
 COPY --from=nr-ue-build /lib64/liblapack.so.3 /lib64
 COPY --from=nr-ue-build /lib64/liblapacke.so.3 /lib64
 COPY --from=nr-ue-build /lib64/libforms.so.2 /lib64
+
+# Now we are copying from builder-image the UHD files.
 COPY --from=nr-ue-build /lib64/libboost_chrono.so.1.66.0 /lib64
 COPY --from=nr-ue-build /lib64/libboost_date_time.so.1.66.0 /lib64
 COPY --from=nr-ue-build /lib64/libboost_filesystem.so.1.66.0 /lib64
@@ -97,7 +103,15 @@ COPY --from=nr-ue-build /lib64/libboost_system.so.1.66.0 /lib64
 COPY --from=nr-ue-build /lib64/libboost_unit_test_framework.so.1.66.0 /lib64
 COPY --from=nr-ue-build /lib64/libboost_atomic.so.1.66.0 /lib64
 COPY --from=nr-ue-build /lib64/libboost_timer.so.1.66.0 /lib64
-COPY --from=nr-ue-build /usr/local/lib64/libuhd.so.4.0.0 /usr/local/lib64
+COPY --from=nr-ue-build /lib64/libboost_regex.so.1.66.0 /lib64
+
+COPY --from=nr-ue-build /usr/local/bin/uhd_find_devices /usr/local/bin
+COPY --from=nr-ue-build /usr/local/lib64/libuhd.so.3.15.0 /usr/local/lib64
+COPY --from=nr-ue-build /usr/local/lib64/uhd/utils/uhd_images_downloader.py /opt/oai-nr-ue/bin
+
+WORKDIR /usr/local/share/uhd/rfnoc
+COPY --from=nr-ue-build /usr/local/share/uhd/rfnoc/ .
+
 
 RUN ldconfig
 
diff --git a/docker/Dockerfile.nrUE.ubuntu18 b/docker/Dockerfile.nrUE.ubuntu18
index fc30af7286f9f93af74f2762fba9ad7fac164d28..49e3f3213ba779cd78e0e0c55eecba3acb80ae3e 100644
--- a/docker/Dockerfile.nrUE.ubuntu18
+++ b/docker/Dockerfile.nrUE.ubuntu18
@@ -55,19 +55,15 @@ RUN apt-get update && \
         libconfig9 \
         openssl \
         net-tools \
+        python \
+        python3 \
+        python3-six \
+        python3-requests \
+        libusb-1.0-0 \
         iputils-ping \
         iproute2 \
         iperf \
         libyaml-0-2 && \
-    # Install UHD driver from ettus ppa 
-    # At time of writing, it is 3.14
-    add-apt-repository ppa:ettusresearch/uhd --yes && \
-    apt-get update && \
-    DEBIAN_FRONTEND=noninteractive apt-get install --yes \
-        python \
-        libusb-1.0-0 \
-        libuhd003 \
-        uhd-host && \
     rm -rf /var/lib/apt/lists/*
 
 WORKDIR /opt/oai-nr-ue/bin
@@ -95,6 +91,18 @@ RUN /bin/bash -c "ln -s /usr/local/lib/librfsimulator.so.Rel15 /usr/local/lib/li
 
 COPY --from=nr-ue-build /usr/local/lib/libprotobuf-c.so.1 .
 
+# Now we are copying from builder-image the UHD files.
+COPY --from=nr-ue-build /usr/local/bin/uhd_find_devices /usr/local/bin
+COPY --from=nr-ue-build /usr/local/lib/libuhd.so.3.15.0 /usr/local/lib
+COPY --from=nr-ue-build /usr/local/lib/uhd/utils/uhd_images_downloader.py /opt/oai-nr-ue/bin
+WORKDIR /usr/lib/x86_64-linux-gnu
+COPY --from=nr-ue-build /usr/lib/x86_64-linux-gnu/libboost_date_time.so.1.65.1 .
+COPY --from=nr-ue-build /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.65.1 .
+COPY --from=nr-ue-build /usr/lib/x86_64-linux-gnu/libboost_regex.so.1.65.1 .
+COPY --from=nr-ue-build /usr/lib/x86_64-linux-gnu/libboost_serialization.so.1.65.1 .
+COPY --from=nr-ue-build /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.65.1 .
+COPY --from=nr-ue-build /usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1 .
+
 RUN ldconfig
 
 WORKDIR /opt/oai-nr-ue
diff --git a/docker/Dockerfile.ran.rhel8.2 b/docker/Dockerfile.ran.rhel8.2
index 3972fd0c35ffb054a5af11a9479753d68f077368..4d15220ca8f4c8c9c6ed53285975d13bc766bf76 100644
--- a/docker/Dockerfile.ran.rhel8.2
+++ b/docker/Dockerfile.ran.rhel8.2
@@ -28,6 +28,9 @@
 
 FROM registry.access.redhat.com/ubi8/ubi:latest AS ran-build
 ARG NEEDED_GIT_PROXY
+ENV TZ=Europe/Paris
+ENV BUILD_UHD_FROM_SOURCE=True
+ENV UHD_VERSION=3.15.0.0
 
 COPY tmp/ca/redhat-uep.pem /etc/rhsm/ca
 COPY tmp/entitlement/*.pem /etc/pki/entitlement
diff --git a/docker/Dockerfile.ran.ubuntu18 b/docker/Dockerfile.ran.ubuntu18
index 4b296408fd8d5747533e02e55ca13ebd2308290f..3ef81ec030235f58634b89864e3f8896d24b74fc 100644
--- a/docker/Dockerfile.ran.ubuntu18
+++ b/docker/Dockerfile.ran.ubuntu18
@@ -29,8 +29,9 @@
 FROM ubuntu:bionic AS ran-build
 ARG NEEDED_GIT_PROXY
 ENV DEBIAN_FRONTEND=noninteractive
-ENV TZ=Europe
-RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
+ENV TZ=Europe/Paris
+ENV BUILD_UHD_FROM_SOURCE=True
+ENV UHD_VERSION=3.15.0.0
 
 #install developers pkg/repo
 RUN apt-get update && \
diff --git a/docker/scripts/enb_entrypoint.sh b/docker/scripts/enb_entrypoint.sh
index 2e8886e8558071a79482a439ef726af5b7a69b87..ff92e3c86f817932cb55f0a1e25843871ab8119e 100755
--- a/docker/scripts/enb_entrypoint.sh
+++ b/docker/scripts/enb_entrypoint.sh
@@ -46,11 +46,11 @@ done
 
 # Load the USRP binaries
 if [[ -v USE_B2XX ]]; then
-    /usr/lib/uhd/utils/uhd_images_downloader.py -t b2xx
+    $PREFIX/bin/uhd_images_downloader.py -t b2xx
 elif [[ -v USE_X3XX ]]; then
-    /usr/lib/uhd/utils/uhd_images_downloader.py -t x3xx
+    $PREFIX/bin/uhd_images_downloader.py -t x3xx
 elif [[ -v USE_N3XX ]]; then
-    /usr/lib/uhd/utils/uhd_images_downloader.py -t n3xx
+    $PREFIX/bin/uhd_images_downloader.py -t n3xx
 fi
 
 echo "=================================="
diff --git a/docker/scripts/gnb_entrypoint.sh b/docker/scripts/gnb_entrypoint.sh
index 678ec6cb1bd0e5ca00bac201fd0b5dfdafa3fca1..05b42d76bbbe0bcbcb056152e5563eed72b6f4b4 100755
--- a/docker/scripts/gnb_entrypoint.sh
+++ b/docker/scripts/gnb_entrypoint.sh
@@ -37,11 +37,11 @@ done
 
 # Load the USRP binaries
 if [[ -v USE_B2XX ]]; then
-    /usr/lib/uhd/utils/uhd_images_downloader.py -t b2xx
+    $PREFIX/bin/uhd_images_downloader.py -t b2xx
 elif [[ -v USE_X3XX ]]; then
-    /usr/lib/uhd/utils/uhd_images_downloader.py -t x3xx
+    $PREFIX/bin/uhd_images_downloader.py -t x3xx
 elif [[ -v USE_N3XX ]]; then
-    /usr/lib/uhd/utils/uhd_images_downloader.py -t n3xx
+    $PREFIX/bin/uhd_images_downloader.py -t n3xx
 fi
 
 echo "=================================="
diff --git a/docker/scripts/lte_ru_entrypoint.sh b/docker/scripts/lte_ru_entrypoint.sh
index f466e25ec28a30acad6af2d4bea9a5743859e7a5..93122b0d029ca94ff824fc52daa563042785ef11 100755
--- a/docker/scripts/lte_ru_entrypoint.sh
+++ b/docker/scripts/lte_ru_entrypoint.sh
@@ -35,11 +35,11 @@ done
 
 # Load the USRP binaries
 if [[ -v USE_B2XX ]]; then
-    /usr/lib/uhd/utils/uhd_images_downloader.py -t b2xx
+    $PREFIX/bin/uhd_images_downloader.py -t b2xx
 elif [[ -v USE_X3XX ]]; then
-    /usr/lib/uhd/utils/uhd_images_downloader.py -t x3xx
+    $PREFIX/bin/uhd_images_downloader.py -t x3xx
 elif [[ -v USE_N3XX ]]; then
-    /usr/lib/uhd/utils/uhd_images_downloader.py -t n3xx
+    $PREFIX/bin/uhd_images_downloader.py -t n3xx
 fi
 
 echo "=================================="
diff --git a/docker/scripts/lte_ue_entrypoint.sh b/docker/scripts/lte_ue_entrypoint.sh
index 235128f73855aea4452d89940ea64d640e844e6d..de7ae8b496e70b24597f4e1ceb9d48e677d7f35b 100755
--- a/docker/scripts/lte_ue_entrypoint.sh
+++ b/docker/scripts/lte_ue_entrypoint.sh
@@ -39,11 +39,11 @@ $PREFIX/bin/conf2uedata -c $PREFIX/etc/ue_usim.conf -o $PREFIX
 
 # Load the USRP binaries
 if [[ -v USE_B2XX ]]; then
-    /usr/lib/uhd/utils/uhd_images_downloader.py -t b2xx
+    $PREFIX/bin/uhd_images_downloader.py -t b2xx
 elif [[ -v USE_X3XX ]]; then
-    /usr/lib/uhd/utils/uhd_images_downloader.py -t x3xx
+    $PREFIX/bin/uhd_images_downloader.py -t x3xx
 elif [[ -v USE_N3XX ]]; then
-    /usr/lib/uhd/utils/uhd_images_downloader.py -t n3xx
+    $PREFIX/bin/uhd_images_downloader.py -t n3xx
 fi
 
 # in case we have conf file, append
diff --git a/docker/scripts/nr_ue_entrypoint.sh b/docker/scripts/nr_ue_entrypoint.sh
index 691258b8fa9e30a732a1c6904a4404cd82934913..91d25c9e1eec3cc71db9424a87d1218c3acc7176 100755
--- a/docker/scripts/nr_ue_entrypoint.sh
+++ b/docker/scripts/nr_ue_entrypoint.sh
@@ -34,11 +34,11 @@ done
 
 # Load the USRP binaries
 if [[ -v USE_B2XX ]]; then
-    /usr/lib/uhd/utils/uhd_images_downloader.py -t b2xx
+    $PREFIX/bin/uhd_images_downloader.py -t b2xx
 elif [[ -v USE_X3XX ]]; then
-    /usr/lib/uhd/utils/uhd_images_downloader.py -t x3xx
+    $PREFIX/bin/uhd_images_downloader.py -t x3xx
 elif [[ -v USE_N3XX ]]; then
-    /usr/lib/uhd/utils/uhd_images_downloader.py -t n3xx
+    $PREFIX/bin/uhd_images_downloader.py -t n3xx
 fi
 
 # in case we have conf file, append
diff --git a/executables/nr-gnb.c b/executables/nr-gnb.c
index 95b983190eccd419778a1dc7724c3787f3a85a55..d659739ffae8cd0ffd8e6e8ea138938008abe41f 100644
--- a/executables/nr-gnb.c
+++ b/executables/nr-gnb.c
@@ -76,10 +76,6 @@
 #include "gnb_paramdef.h"
 
 
-#ifndef OPENAIR2
-  #include "UTIL/OTG/otg_extern.h"
-#endif
-
 #include "s1ap_eNB.h"
 #include "SIMULATION/ETH_TRANSPORT/proto.h"
 #include <executables/softmodem-common.h>
diff --git a/executables/nr-ru.c b/executables/nr-ru.c
index 336b7bec120634bb716149e5289b785f27106c11..c90750d39aa37793710943c048f7d1e99345b189 100644
--- a/executables/nr-ru.c
+++ b/executables/nr-ru.c
@@ -70,10 +70,6 @@ static int DEFBFW[] = {0x00007fff};
 #include "GNB_APP/gnb_paramdef.h"
 #include "common/config/config_userapi.h"
 
-#ifndef OPENAIR2
-  #include "UTIL/OTG/otg_extern.h"
-#endif
-
 #include "s1ap_eNB.h"
 #include "SIMULATION/ETH_TRANSPORT/proto.h"
 #include <openair1/PHY/TOOLS/phy_scope_interface.h>
diff --git a/executables/nr-softmodem-common.h b/executables/nr-softmodem-common.h
index 5b6d21d177d603021b84c916d11683641fd53279..c02155326b6b5be42f0c2225604078d70ba430f5 100644
--- a/executables/nr-softmodem-common.h
+++ b/executables/nr-softmodem-common.h
@@ -30,12 +30,8 @@
 #include "PHY/types.h"
 #include <threadPool/thread-pool.h>
 
-#if defined(ENABLE_USE_MME)
 #include "s1ap_eNB.h"
-#ifdef PDCP_USE_NETLINK
 #include "SIMULATION/ETH_TRANSPORT/proto.h"
-#endif
-#endif
 
 /* help strings definition for command line options, used in CMDLINE_XXX_DESC macros and printed when -h option is used */
 #define CONFIG_HLP_RFCFGF        "Configuration file for front-end (e.g. LMS7002M)\n"
diff --git a/executables/nr-softmodem.c b/executables/nr-softmodem.c
index 1b33667b1396811eaeaf23e3c68fa8bb40039bcf..a2b5c18b6c0a99b0cf516febc6601622c7691704 100644
--- a/executables/nr-softmodem.c
+++ b/executables/nr-softmodem.c
@@ -66,10 +66,6 @@ unsigned short config_frames[4] = {2,9,11,13};
 
 //#include "PHY/TOOLS/time_meas.h"
 
-#ifndef OPENAIR2
-  #include "UTIL/OTG/otg_vars.h"
-#endif
-
 #include "intertask_interface.h"
 
 #include "PHY/INIT/phy_init.h"
@@ -692,15 +688,10 @@ int main( int argc, char **argv ) {
   // initialize mscgen log after ITTI
   MSC_INIT(MSC_E_UTRAN, ADDED_QUEUES_MAX+TASK_MAX);
   init_opt();
-#ifdef PDCP_USE_NETLINK
-
-  if(!IS_SOFTMODEM_NOS1)
-    netlink_init();
-
-#if defined(PDCP_USE_NETLINK_QUEUES)
-  pdcp_netlink_init();
-#endif
-#endif
+  if(PDCP_USE_NETLINK)
+    if(!IS_SOFTMODEM_NOS1)
+      netlink_init();
+  
 #ifndef PACKAGE_VERSION
 #  define PACKAGE_VERSION "UNKNOWN-EXPERIMENTAL"
 #endif
diff --git a/executables/nr-ue.c b/executables/nr-ue.c
index 1d415e123005bd809e1b835c93faa597d2b9b586..77fc7d171b72bb412515154ad5ba998d4cbdeb42 100644
--- a/executables/nr-ue.c
+++ b/executables/nr-ue.c
@@ -19,6 +19,7 @@
  *      contact@openairinterface.org
  */
 
+#include <openair1/PHY/impl_defs_top.h>
 #include "executables/nr-uesoftmodem.h"
 #include "PHY/phy_extern_nr_ue.h"
 #include "PHY/INIT/phy_init.h"
@@ -87,11 +88,7 @@
  *
  */
 
-#ifndef NO_RAT_NR
-  #define DURATION_RX_TO_TX           (NR_UE_CAPABILITY_SLOT_RX_TO_TX)  /* for NR this will certainly depends to such UE capability which is not yet defined */
-#else
-  #define DURATION_RX_TO_TX           (6)   /* For LTE, this duration is fixed to 4 and it is linked to LTE standard for both modes FDD/TDD */
-#endif
+
 #define RX_JOB_ID 0x1010
 #define TX_JOB_ID 100
 
@@ -463,13 +460,18 @@ int computeSamplesShift(PHY_VARS_NR_UE *UE) {
   // compute TO compensation that should be applied for this frame
   if ( UE->rx_offset < UE->frame_parms.samples_per_frame/2  &&
        UE->rx_offset > 0 ) {
-    //LOG_I(PHY,"!!!adjusting -1 samples!!!\n");
+    LOG_I(PHY,"!!!adjusting -1 samples!!! rx_offset == %d\n", UE->rx_offset);
+    UE->rx_offset   = 0; // reset so that it is not applied falsely in case of SSB being only in every second frame
+    UE->max_pos_fil = 0; // reset IIR filter when sample shift is applied
     return -1 ;
   }
 
   if ( UE->rx_offset > UE->frame_parms.samples_per_frame/2 &&
        UE->rx_offset < UE->frame_parms.samples_per_frame ) {
-    //LOG_I(PHY,"!!!adjusting +1 samples!!!\n");
+    int rx_offset = UE->rx_offset - UE->frame_parms.samples_per_frame;
+    LOG_I(PHY,"!!!adjusting +1 samples!!! rx_offset == %d\n", rx_offset);
+    UE->rx_offset   = 0; // reset so that it is not applied falsely in case of SSB being only in every second frame
+    UE->max_pos_fil = 0; // reset IIR filter when sample shift is applied
     return 1;
   }
 
diff --git a/executables/nr-uesoftmodem.c b/executables/nr-uesoftmodem.c
index fca9c72f4273a02b267a2d37b7dc8392f6d5fb04..ad5ea982c944e7a32fbc2d69fc56afc4b2e5f755 100644
--- a/executables/nr-uesoftmodem.c
+++ b/executables/nr-uesoftmodem.c
@@ -63,10 +63,6 @@ unsigned short config_frames[4] = {2,9,11,13};
 #include "enb_config.h"
 //#include "PHY/TOOLS/time_meas.h"
 
-#ifndef OPENAIR2
-  #include "UTIL/OTG/otg_vars.h"
-#endif
-
 #include "intertask_interface.h"
 
 #include "PHY/INIT/phy_init.h"
diff --git a/nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_constants.h b/nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_constants.h
index 8e6bf9a8026ae90dd7d5ab3a0a9d65af53e5f233..e144ce9447a4aee059b7c7994b9ff32d20cbfb9a 100644
--- a/nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_constants.h
+++ b/nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_constants.h
@@ -10,7 +10,7 @@
 #define FAPI_NR_MAX_RA_OCCASION_PER_CSIRS          64
 // Constants Defined in 38.213
 #define FAPI_NR_MAX_CORESET_PER_BWP                3
-#define FAPI_NR_MAX_SS_PER_CORESET                 10
+#define FAPI_NR_MAX_SS                             10
 
 
 /// RX_IND
diff --git a/openair1/PHY/CODING/defs_NB_IoT.h b/openair1/PHY/CODING/defs_NB_IoT.h
index 2a6bee792412ae4f73d38f741b6ef5b615065418..d33ae1c4406d62a522535c8ef0f2911db1c63255 100644
--- a/openair1/PHY/CODING/defs_NB_IoT.h
+++ b/openair1/PHY/CODING/defs_NB_IoT.h
@@ -30,14 +30,6 @@
 
 #include <stdint.h>  // for uint8/16/32_t
 
-/* check if this ifndef is required for NB-IoT ?!
-//#ifndef NO_OPENAIR1
-//#include "PHY/defs_NB_IoT.h"
-//#else
-//#include "PHY/TOOLS/time_meas.h"
-//#endif
-*/
-
 #define CRC24_A_NB_IoT 0
 #define CRC24_B_NB_IoT 1
 #define CRC16_NB_IoT 2
diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_init_mem.h b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_init_mem.h
index 3292c0debefc82ffb5ef9dbc71d6c2d39791747d..f08549130ee08db0296b623482cf8411ef71b257 100644
--- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_init_mem.h
+++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_init_mem.h
@@ -34,7 +34,6 @@
 #include <stdlib.h>
 #include "nrLDPC_types.h"
 
-#ifndef malloc32_clear
 /**
    \brief Allocates 32 byte aligned memory and initializes to zero
    \param size Input size in bytes
@@ -46,7 +45,6 @@ static inline void* malloc32_clear(size_t size)
     memset(ptr, 0, size);
     return ptr;
 }
-#endif
 
 /**
    \brief Allocates and initializes the internal decoder processing buffers
diff --git a/openair1/PHY/INIT/nr_parms.c b/openair1/PHY/INIT/nr_parms.c
index 0920da667d3d99d67949c58490e2bed19724e8e1..42d4a30e3ba3943bec2fbd79aabe8bd5196d3050 100644
--- a/openair1/PHY/INIT/nr_parms.c
+++ b/openair1/PHY/INIT/nr_parms.c
@@ -27,6 +27,58 @@
 uint32_t nr_subcarrier_spacing[MAX_NUM_SUBCARRIER_SPACING] = {15e3, 30e3, 60e3, 120e3, 240e3};
 uint16_t nr_slots_per_subframe[MAX_NUM_SUBCARRIER_SPACING] = {1, 2, 4, 8, 16};
 
+// Table 5.4.3.3-1 38-101
+int nr_ssb_table[48][3] = {
+  {1, 15, nr_ssb_type_A},
+  {2, 15, nr_ssb_type_A},
+  {3, 15, nr_ssb_type_A},
+  {5, 15, nr_ssb_type_A},
+  {5, 30, nr_ssb_type_B},
+  {7, 15, nr_ssb_type_A},
+  {8, 15, nr_ssb_type_A},
+  {12, 15, nr_ssb_type_A},
+  {14, 15, nr_ssb_type_A},
+  {18, 15, nr_ssb_type_A},
+  {20, 15, nr_ssb_type_A},
+  {25, 15, nr_ssb_type_A},
+  {26, 15, nr_ssb_type_A},
+  {28, 15, nr_ssb_type_A},
+  {29, 15, nr_ssb_type_A},
+  {30, 15, nr_ssb_type_A},
+  {34, 15, nr_ssb_type_A},
+  {34, 30, nr_ssb_type_C},
+  {38, 15, nr_ssb_type_A},
+  {38, 30, nr_ssb_type_C},
+  {39, 15, nr_ssb_type_A},
+  {39, 30, nr_ssb_type_C},
+  {40, 30, nr_ssb_type_C},
+  {41, 15, nr_ssb_type_A},
+  {41, 30, nr_ssb_type_C},
+  {46, 30, nr_ssb_type_C},
+  {48, 30, nr_ssb_type_C},
+  {50, 30, nr_ssb_type_C},
+  {51, 15, nr_ssb_type_A},
+  {53, 15, nr_ssb_type_A},
+  {65, 15, nr_ssb_type_A},
+  {66, 15, nr_ssb_type_A},
+  {66, 30, nr_ssb_type_B},
+  {70, 15, nr_ssb_type_A},
+  {71, 15, nr_ssb_type_A},
+  {74, 15, nr_ssb_type_A},
+  {75, 15, nr_ssb_type_A},
+  {76, 15, nr_ssb_type_A},
+  {77, 30, nr_ssb_type_C},
+  {78, 30, nr_ssb_type_C},
+  {79, 30, nr_ssb_type_C},
+  {90, 15, nr_ssb_type_A},
+  {90, 30, nr_ssb_type_C},
+  {91, 15, nr_ssb_type_A},
+  {92, 15, nr_ssb_type_A},
+  {93, 15, nr_ssb_type_A},
+  {94, 15, nr_ssb_type_A},
+  {96, 30, nr_ssb_type_C}
+};
+
 
 void set_Lmax(NR_DL_FRAME_PARMS *fp) {
   // definition of Lmax according to ts 38.213 section 4.1
@@ -85,27 +137,28 @@ int nr_get_ssb_start_symbol(NR_DL_FRAME_PARMS *fp,uint8_t i_ssb) {
 
 void set_scs_parameters (NR_DL_FRAME_PARMS *fp, int mu, int N_RB_DL)
 {
+  int idx = 0;
   switch(mu) {
-
     case NR_MU_0: //15kHz scs
       fp->subcarrier_spacing = nr_subcarrier_spacing[NR_MU_0];
       fp->slots_per_subframe = nr_slots_per_subframe[NR_MU_0];
       fp->ssb_type = nr_ssb_type_A;
+      while(nr_ssb_table[idx][0]!=fp->nr_band)
+        idx++;
+      AssertFatal(nr_ssb_table[idx][1]==15,"SCS %d not applicable to band %d\n",
+                  fp->subcarrier_spacing,fp->nr_band);
       break;
 
     case NR_MU_1: //30kHz scs
       fp->subcarrier_spacing = nr_subcarrier_spacing[NR_MU_1];
       fp->slots_per_subframe = nr_slots_per_subframe[NR_MU_1];
-
-      // selection of SS block pattern according to TS 38101-1 Table 5.4.3.3-1 for SCS 30kHz
-      if (fp->nr_band == 5 || fp->nr_band == 66) 
-        fp->ssb_type = nr_ssb_type_B;
-      else{  
-      	if (fp->nr_band == 41 || fp->nr_band == 38 || ( fp->nr_band > 76 && fp->nr_band < 80) )
-	  fp->ssb_type = nr_ssb_type_C;
-	else
-	  AssertFatal(1==0,"NR Operating Band n%d not available for SS block SCS with mu=%d\n", fp->nr_band, mu);
+       while(nr_ssb_table[idx][0]!=fp->nr_band ||
+             nr_ssb_table[idx][1]!=30) {
+        AssertFatal(nr_ssb_table[idx][0]<=fp->nr_band,"SCS %d not applicable to band %d\n",
+                    fp->subcarrier_spacing,fp->nr_band);
+        idx++;
       }
+      fp->ssb_type = nr_ssb_table[idx][2];
       break;
 
     case NR_MU_2: //60kHz scs
diff --git a/openair1/PHY/LTE_TRANSPORT/dci.c b/openair1/PHY/LTE_TRANSPORT/dci.c
index 1913afab2df61d0dca23cb3d510a66b3eb643c00..99f37c1323a63d048356cf8ccb54f234ee539327 100644
--- a/openair1/PHY/LTE_TRANSPORT/dci.c
+++ b/openair1/PHY/LTE_TRANSPORT/dci.c
@@ -50,8 +50,6 @@
 //#define DEBUG_DCI_DECODING 1
 //#define DEBUG_PHY
 
-//#undef ALL_AGGREGATION
-
 //extern uint16_t phich_reg[MAX_NUM_PHICH_GROUPS][3];
 //extern uint16_t pcfich_reg[4];
 
diff --git a/openair1/PHY/LTE_TRANSPORT/dci_NB_IoT.h b/openair1/PHY/LTE_TRANSPORT/dci_NB_IoT.h
index 60720e13b706c7112aa40e6a29bb0200200be355..512316f5653d2cd00558a7e2466983440c33db83 100644
--- a/openair1/PHY/LTE_TRANSPORT/dci_NB_IoT.h
+++ b/openair1/PHY/LTE_TRANSPORT/dci_NB_IoT.h
@@ -32,11 +32,8 @@
 #ifndef __DCI_NB_IOT_H__
 #define __DCI_NB_IOT_H__
 
-//#ifndef USER_MODE
-//#include "PHY/types.h"
-//#else
 #include <stdint.h>
-//#endif
+
 
 typedef enum 
 {
diff --git a/openair1/PHY/LTE_TRANSPORT/print_stats.c b/openair1/PHY/LTE_TRANSPORT/print_stats.c
index 031c97e50d6c52051abc5f62f3829fdf2c2dbbf3..44f57f43043c804f11a7ecaf93d6a7a6986987f6 100644
--- a/openair1/PHY/LTE_TRANSPORT/print_stats.c
+++ b/openair1/PHY/LTE_TRANSPORT/print_stats.c
@@ -36,10 +36,8 @@
 #include "PHY/extern.h"
 #include "SCHED/extern.h"
 
-#ifdef OPENAIR2
   #include "openair2/LAYER2/MAC/proto.h"
   #include "openair2/RRC/L2_INTERFACE/openair_rrc_L2_interface.h"
-#endif
 
 extern int mac_get_rrc_status(uint8_t Mod_id,uint8_t eNB_flag,uint8_t index);
 
@@ -434,10 +432,8 @@ int dump_ue_stats(PHY_VARS_UE *ue, UE_rxtx_proc_t *proc,char *buffer, int length
           break;
       }
 
-#ifdef OPENAIR2
       RRC_status = mac_UE_get_rrc_status(ue->Mod_id, 0);
       len += sprintf(&buffer[len],"[UE PROC] RRC status = %d\n",RRC_status);
-#endif
       len += sprintf(&buffer[len], "[UE PROC] Transmission Mode %d \n",ue->transmission_mode[eNB]);
       len += sprintf(&buffer[len], "[UE PROC] PBCH err conseq %d, PBCH error total %d, PBCH FER %d\n",
                      ue->pbch_vars[eNB]->pdu_errors_conseq,
diff --git a/openair1/PHY/LTE_TRANSPORT/uci_NB_IoT.h b/openair1/PHY/LTE_TRANSPORT/uci_NB_IoT.h
index 6f2dd0f989cb90fc65ac8a658a6ad9ca78db7051..c16be6a3080647c3325161b613bee2f2e987d892 100644
--- a/openair1/PHY/LTE_TRANSPORT/uci_NB_IoT.h
+++ b/openair1/PHY/LTE_TRANSPORT/uci_NB_IoT.h
@@ -321,4 +321,4 @@ HLC_subband_cqi_mcs_CBA_20MHz_NB_IoT;
 #define MAX_ACK_PAYLOAD_NB_IoT 18
 #define MAX_RI_PAYLOAD_NB_IoT 6
 
-#endif
\ No newline at end of file
+#endif
diff --git a/openair1/PHY/LTE_UE_TRANSPORT/dci_ue.c b/openair1/PHY/LTE_UE_TRANSPORT/dci_ue.c
index 3c7e3f986b633aa7004149c8a0fb798fa318f755..0d8c3c9960b594508417371e03a78db11c06eff1 100644
--- a/openair1/PHY/LTE_UE_TRANSPORT/dci_ue.c
+++ b/openair1/PHY/LTE_UE_TRANSPORT/dci_ue.c
@@ -50,9 +50,6 @@
 //#define DEBUG_DCI_DECODING 1
 //#define DEBUG_PHY
 
-//#undef ALL_AGGREGATION
-
-
 uint16_t extract_crc(uint8_t *dci,uint8_t dci_len)
 {
 
@@ -2802,7 +2799,6 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
     if (dci_cnt>old_dci_cnt)
       return(dci_cnt);
 
-    //#ifdef ALL_AGGREGATION
     // Now check UE_SPEC format 1 search spaces at aggregation 8
     old_dci_cnt=dci_cnt;
     dci_decoding_procedure0(pdcch_vars,0,mode,subframe,
@@ -2836,7 +2832,6 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
     if (dci_cnt>old_dci_cnt)
       return(dci_cnt);
 
-    //#endif //ALL_AGGREGATION
   } else if (tmode == 3) {
 
 
@@ -2946,7 +2941,6 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
     if (dci_cnt>old_dci_cnt)
       return(dci_cnt);
 
-    //#ifdef ALL_AGGREGATION
     // Now check UE_SPEC format 2_2A search spaces at aggregation 8
     LOG_D(PHY," Now check UE_SPEC format 2_2A search spaces at aggregation 8 dci length: %d[bits] %d[bytes]\n",format2A_size_bits,format2A_size_bytes);
     old_dci_cnt=dci_cnt;
@@ -3082,7 +3076,6 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
     if (dci_cnt>old_dci_cnt)
       return(dci_cnt);
 
-    //#ifdef ALL_AGGREGATION
     // Now check UE_SPEC format 2_2A search spaces at aggregation 8
     old_dci_cnt=dci_cnt;
     dci_decoding_procedure0(pdcch_vars,0,mode,
@@ -3214,7 +3207,6 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
     if (dci_cnt>old_dci_cnt)
       return(dci_cnt);
 
-    //#ifdef ALL_AGGREGATION
 
     // Now check UE_SPEC format 1E_2A_M10PRB search spaces at aggregation 8
     old_dci_cnt=dci_cnt;
@@ -3249,7 +3241,6 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
     if (dci_cnt>old_dci_cnt)
       return(dci_cnt);
 
-    //#endif  //ALL_AGGREGATION
 
   }
 
diff --git a/openair1/PHY/LTE_UE_TRANSPORT/dlsch_demodulation.c b/openair1/PHY/LTE_UE_TRANSPORT/dlsch_demodulation.c
index 9906b945d81ca209046cb839280ec18926fb7afb..91de5386ae45cf5fa012d553c3cbd319bd559ce9 100644
--- a/openair1/PHY/LTE_UE_TRANSPORT/dlsch_demodulation.c
+++ b/openair1/PHY/LTE_UE_TRANSPORT/dlsch_demodulation.c
@@ -51,7 +51,6 @@
 #include <cblas.h>
 #include "linear_preprocessing_rec.h"
 
-#define NOCYGWIN_STATIC
 //#define DEBUG_MMSE
 
 
diff --git a/openair1/PHY/LTE_UE_TRANSPORT/ulsch_modulation.c b/openair1/PHY/LTE_UE_TRANSPORT/ulsch_modulation.c
index b08fe30248299c18f3dc4d96a986acfee1af1aee..7ec3e7bfb684dac869dc84bc04e4bb924995117b 100644
--- a/openair1/PHY/LTE_UE_TRANSPORT/ulsch_modulation.c
+++ b/openair1/PHY/LTE_UE_TRANSPORT/ulsch_modulation.c
@@ -42,7 +42,6 @@
 
 //#define DEBUG_ULSCH_MODULATION
 
-#ifndef OFDMA_ULSCH
 void dft_lte(int32_t *z,int32_t *d, int32_t Msc_PUSCH, uint8_t Nsymb)
 {
 
@@ -371,7 +370,6 @@ void dft_lte(int32_t *z,int32_t *d, int32_t Msc_PUSCH, uint8_t Nsymb)
   //  printf("\n");
 }
 
-#endif
 void ulsch_modulation(int32_t **txdataF,
                       short amp,
                       uint32_t frame,
@@ -690,57 +688,10 @@ void ulsch_modulation(int32_t **txdataF,
 
   // Transform Precoding
 
-#ifdef OFDMA_ULSCH
-
-  for (i=0; i<ulsch_Msymb; i++) {
-    ulsch->z[i] = ulsch->d[i];
-  }
-
-#else
   dft_lte(ulsch->z,ulsch->d,Msc_PUSCH,ulsch->Nsymb_pusch);
-#endif
 
   DevAssert(txdataF);
 
-#ifdef OFDMA_ULSCH
-  re_offset0 = frame_parms->first_carrier_offset + (ulsch->harq_processes[harq_pid]->first_rb*12);
-
-  if (re_offset0>frame_parms->ofdm_symbol_size) {
-    re_offset0 -= frame_parms->ofdm_symbol_size;
-    //    re_offset0++;
-  }
-
-  //  printf("re_offset0 %d\n",re_offset0);
-
-
-  for (j=0,l=0; l<(nsymb-ulsch->srs_active); l++) {
-    re_offset = re_offset0;
-    symbol_offset = (int)frame_parms->ofdm_symbol_size*(l+(subframe*nsymb));
-#ifdef DEBUG_ULSCH_MODULATION
-    printf("symbol %d (subframe %d): symbol_offset %d\n",l,subframe,symbol_offset);
-#endif
-    txptr = &txdataF[0][symbol_offset];
-
-    if (((frame_parms->Ncp == 0) && ((l==3) || (l==10)))||
-        ((frame_parms->Ncp == 1) && ((l==2) || (l==8)))) {
-    }
-    // Skip reference symbols
-    else {
-
-      //      printf("copying %d REs\n",Msc_PUSCH);
-      for (i=0; i<Msc_PUSCH; i++,j++) {
-#ifdef DEBUG_ULSCH_MODULATION
-        printf("re_offset %d (%p): %d,%d\n", re_offset,&ulsch->z[j],((int16_t*)&ulsch->z[j])[0],((int16_t*)&ulsch->z[j])[1]);
-#endif
-        txptr[re_offset++] = ulsch->z[j];
-
-        if (re_offset==frame_parms->ofdm_symbol_size)
-          re_offset = 0;
-      }
-    }
-  }
-
-# else  // OFDMA_ULSCH = 0
   re_offset0 = frame_parms->first_carrier_offset + (ulsch->harq_processes[harq_pid]->first_rb*12);
 
   if (re_offset0>frame_parms->ofdm_symbol_size) {
@@ -777,8 +728,5 @@ void ulsch_modulation(int32_t **txdataF,
     }
   }
 
-#endif
-  VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_ULSCH_MODULATION, VCD_FUNCTION_OUT);
-
 }
 
diff --git a/openair1/PHY/NR_TRANSPORT/pucch_rx.c b/openair1/PHY/NR_TRANSPORT/pucch_rx.c
index cdc6825d4c425ae58c2f8f9510502bc754e4fa78..2491c24ab679d89613c724fab493b0f9721e7e6f 100644
--- a/openair1/PHY/NR_TRANSPORT/pucch_rx.c
+++ b/openair1/PHY/NR_TRANSPORT/pucch_rx.c
@@ -206,7 +206,9 @@ void nr_decode_pucch0(PHY_VARS_gNB *gNB,
     nr_sequences=8>>(1-pucch_pdu->sr_flag);
   }
 
-  LOG_D(PHY,"pucch0: nr_symbols %d, start_symbol %d, prb_start %d, second_hop_prb %d,  group_hop_flag %d, sequence_hop_flag %d, O_ACK %d, O_SR %d, mcs %d initial_cyclic_shift %d\n",pucch_pdu->nr_of_symbols,pucch_pdu->start_symbol_index,pucch_pdu->prb_start,pucch_pdu->second_hop_prb,pucch_pdu->group_hop_flag,pucch_pdu->sequence_hop_flag,pucch_pdu->bit_len_harq,pucch_pdu->sr_flag,mcs[0],pucch_pdu->initial_cyclic_shift);
+  LOG_D(PHY,"pucch0: nr_symbols %d, start_symbol %d, prb_start %d, second_hop_prb %d,  group_hop_flag %d, sequence_hop_flag %d, O_ACK %d, O_SR %d, mcs %d initial_cyclic_shift %d\n",
+        pucch_pdu->nr_of_symbols,pucch_pdu->start_symbol_index,pucch_pdu->prb_start,pucch_pdu->second_hop_prb,pucch_pdu->group_hop_flag,pucch_pdu->sequence_hop_flag,pucch_pdu->bit_len_harq,
+        pucch_pdu->sr_flag,mcs[0],pucch_pdu->initial_cyclic_shift);
 
   int cs_ind = get_pucch0_cs_lut_index(gNB,pucch_pdu);
   /*
diff --git a/openair1/PHY/NR_UE_ESTIMATION/nr_adjust_synch_ue.c b/openair1/PHY/NR_UE_ESTIMATION/nr_adjust_synch_ue.c
index 3908febae9bf2531e941e18777bcd8154b1ede72..19d4bf5079e08073040a4c71c2619d90fa6920fe 100644
--- a/openair1/PHY/NR_UE_ESTIMATION/nr_adjust_synch_ue.c
+++ b/openair1/PHY/NR_UE_ESTIMATION/nr_adjust_synch_ue.c
@@ -42,7 +42,6 @@ void nr_adjust_synch_ue(NR_DL_FRAME_PARMS *frame_parms,
                         short coef)
 {
 
-  static int max_pos_fil = 0;
   static int count_max_pos_ok = 0;
   static int first_time = 1;
   int max_val = 0, max_pos = 0;
@@ -55,13 +54,14 @@ void nr_adjust_synch_ue(NR_DL_FRAME_PARMS *frame_parms,
 
   LOG_D(PHY,"AbsSubframe %d: rx_offset (before) = %d\n",subframe,ue->rx_offset);
 
-  // we only use channel estimates from tx antenna 0 here
-  for (int i = 0; i < frame_parms->nb_prefix_samples; i++) {
+  // search for maximum position within the cyclic prefix
+  for (int i = -frame_parms->nb_prefix_samples/2; i < frame_parms->nb_prefix_samples/2; i++) {
     int temp = 0;
 
+    int j = (i < 0) ? (i + frame_parms->ofdm_symbol_size) : i;
     for (int aa = 0; aa < frame_parms->nb_antennas_rx; aa++) {
-      int Re = ((int16_t*)ue->pbch_vars[gNB_id]->dl_ch_estimates_time[aa])[(i<<1)];
-      int Im = ((int16_t*)ue->pbch_vars[gNB_id]->dl_ch_estimates_time[aa])[1+(i<<1)];
+      int Re = ((int16_t*)ue->pbch_vars[gNB_id]->dl_ch_estimates_time[aa])[(j<<1)];
+      int Im = ((int16_t*)ue->pbch_vars[gNB_id]->dl_ch_estimates_time[aa])[1+(j<<1)];
       temp += (Re*Re/2) + (Im*Im/2);
     }
 
@@ -71,19 +71,16 @@ void nr_adjust_synch_ue(NR_DL_FRAME_PARMS *frame_parms,
     }
   }
 
-  if (max_pos > frame_parms->ofdm_symbol_size/2)
-    max_pos = max_pos - frame_parms->ofdm_symbol_size;
-
   // filter position to reduce jitter
   if (clear == 1)
-    max_pos_fil = max_pos;
+    ue->max_pos_fil = max_pos;
   else
-    max_pos_fil = ((max_pos_fil * coef) + (max_pos * ncoef)) >> 15;
+    ue->max_pos_fil = ((ue->max_pos_fil * coef) + (max_pos * ncoef)) >> 15;
 
   // do not filter to have proactive timing adjustment
-  //max_pos_fil = max_pos;
+  //ue->max_pos_fil = max_pos;
 
-  int diff = max_pos_fil - sync_pos;
+  int diff = ue->max_pos_fil - sync_pos;
 
   if (frame_parms->freq_range==nr_FR2) 
     sync_offset = 2;
@@ -131,7 +128,7 @@ void nr_adjust_synch_ue(NR_DL_FRAME_PARMS *frame_parms,
         ue->rx_offset,
         clear,
         max_pos,
-        max_pos_fil,
+        ue->max_pos_fil,
         max_val,
         sync_pos);
 #endif //DEBUG_PHY
diff --git a/openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c b/openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
index 8097b9b3ea12b3d4fa6b6c06941d21ea39b08ea6..30eae2d30f511255e56bef6783b2f116c2e626a9 100644
--- a/openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
+++ b/openair1/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
@@ -485,8 +485,8 @@ int nr_pdcch_channel_estimation(PHY_VARS_NR_UE *ue,
 
 
 #ifdef DEBUG_PDCCH
-  printf("PDCCH Channel Estimation : ThreadId %d, gNB_id %d ch_offset %d, OFDM size %d, Ncp=%d, Ns=%d, k=%d symbol %d\n",proc->thread_id, gNB_id,ch_offset,ue->frame_parms.ofdm_symbol_size,
-         ue->frame_parms.Ncp,Ns,k, symbol);
+  printf("PDCCH Channel Estimation : ThreadId %d, gNB_id %d ch_offset %d, OFDM size %d, Ncp=%d, Ns=%d, symbol %d\n",
+         proc->thread_id, gNB_id,ch_offset,ue->frame_parms.ofdm_symbol_size,ue->frame_parms.Ncp,Ns,symbol);
 #endif
 
   fl = filt16a_l1;
diff --git a/openair1/PHY/NR_UE_TRANSPORT/dci_nr.c b/openair1/PHY/NR_UE_TRANSPORT/dci_nr.c
index 3afe27310ff8390387329a52f1c44a163973cee8..84c9627c8a0fc6ffb78f6fd199cd42eb4f7d888d 100644
--- a/openair1/PHY/NR_UE_TRANSPORT/dci_nr.c
+++ b/openair1/PHY/NR_UE_TRANSPORT/dci_nr.c
@@ -30,11 +30,9 @@
  * \warning
  */
 
-#ifdef USER_MODE
-  #include <stdio.h>
-  #include <stdlib.h>
-  #include <string.h>
-#endif
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
 
 
 #include "executables/softmodem-common.h"
@@ -61,7 +59,6 @@ char nr_dci_format_string[8][30] = {
 //#define DEBUG_DCI_DECODING 1
 
 //#define NR_LTE_PDCCH_DCI_SWITCH
-#define NR_PDCCH_DCI_RUN              // activates new nr functions
 //#define NR_PDCCH_DCI_DEBUG            // activates NR_PDCCH_DCI_DEBUG logs
 #ifdef NR_PDCCH_DCI_DEBUG
 #define LOG_DNL(a, ...) printf("\n\t\t<-NR_PDCCH_DCI_DEBUG (%s)-> " a, __func__, ##__VA_ARGS__ )
@@ -81,7 +78,6 @@ char nr_dci_format_string[8][30] = {
   #define LOG_I(A,B...) printf(B)
 #endif
 
-#ifdef NR_PDCCH_DCI_RUN
 
 
 //static const int16_t conjugate[8]__attribute__((aligned(32))) = {-1,1,-1,1,-1,1,-1,1};
@@ -90,6 +86,7 @@ char nr_dci_format_string[8][30] = {
 void nr_pdcch_demapping_deinterleaving(uint32_t *llr,
                                        uint32_t *z,
                                        uint8_t coreset_time_dur,
+                                       uint8_t start_symbol,
                                        uint32_t coreset_nbr_rb,
                                        uint8_t reg_bundle_size_L,
                                        uint8_t coreset_interleaver_size_R,
@@ -186,7 +183,7 @@ void nr_pdcch_demapping_deinterleaving(uint32_t *llr,
 
   int rb = 0;
   for (int c_id = 0; c_id < number_of_candidates; c_id++ ) {
-    for (int symbol_idx = 0; symbol_idx < coreset_time_dur; symbol_idx++) {
+    for (int symbol_idx = start_symbol; symbol_idx < start_symbol+coreset_time_dur; symbol_idx++) {
       for (int cce_count = CCE[c_id/coreset_time_dur]+c_id%coreset_time_dur; cce_count < CCE[c_id/coreset_time_dur]+c_id%coreset_time_dur+L[c_id]; cce_count += coreset_time_dur) {
         for (int reg_in_cce_idx = 0; reg_in_cce_idx < NR_NB_REG_PER_CCE; reg_in_cce_idx++) {
 
@@ -209,9 +206,6 @@ void nr_pdcch_demapping_deinterleaving(uint32_t *llr,
   }
 }
 
-#endif
-
-#ifdef NR_PDCCH_DCI_RUN
 int32_t nr_pdcch_llr(NR_DL_FRAME_PARMS *frame_parms, int32_t **rxdataF_comp,
                      int16_t *pdcch_llr, uint8_t symbol,uint32_t coreset_nbr_rb) {
   int16_t *rxF = (int16_t *) &rxdataF_comp[0][(symbol * coreset_nbr_rb * 12)];
@@ -242,7 +236,6 @@ int32_t nr_pdcch_llr(NR_DL_FRAME_PARMS *frame_parms, int32_t **rxdataF_comp,
 
   return (0);
 }
-#endif
 
 
 #if 0
@@ -283,9 +276,10 @@ int32_t pdcch_llr(NR_DL_FRAME_PARMS *frame_parms,
 
 //compute average channel_level on each (TX,RX) antenna pair
 void nr_pdcch_channel_level(int32_t **dl_ch_estimates_ext,
-                         NR_DL_FRAME_PARMS *frame_parms,
-                         int32_t *avg,
-                         uint8_t nb_rb) {
+                            NR_DL_FRAME_PARMS *frame_parms,
+                            int32_t *avg,
+                            int symbol,
+                            uint8_t nb_rb) {
   int16_t rb;
   uint8_t aarx;
 #if defined(__x86_64__) || defined(__i386__)
@@ -300,9 +294,9 @@ void nr_pdcch_channel_level(int32_t **dl_ch_estimates_ext,
     //clear average level
 #if defined(__x86_64__) || defined(__i386__)
     avg128P = _mm_setzero_si128();
-    dl_ch128=(__m128i *)&dl_ch_estimates_ext[aarx][0];
+    dl_ch128=(__m128i *)&dl_ch_estimates_ext[aarx][symbol*nb_rb*12];
 #elif defined(__arm__)
-    dl_ch128=(int16x8_t *)&dl_ch_estimates_ext[aarx][0];
+    dl_ch128=(int16x8_t *)&dl_ch_estimates_ext[aarx][symbol*nb_rb*12];
 #endif
 
     for (rb=0; rb<(nb_rb*3)>>2; rb++) {
@@ -328,7 +322,7 @@ void nr_pdcch_channel_level(int32_t **dl_ch_estimates_ext,
                  ((int32_t *)&avg128P)[1] +
                  ((int32_t *)&avg128P)[2] +
                  ((int32_t *)&avg128P)[3])/(nb_rb*9);
-    //            printf("Channel level : %d\n",avg[(aatx<<1)+aarx]);
+    LOG_DDD("Channel level : %d\n",avg[aarx]);
   }
 
 #if defined(__x86_64__) || defined(__i386__)
@@ -346,7 +340,6 @@ void nr_pdcch_channel_level(int32_t **dl_ch_estimates_ext,
 
 
 
-#ifdef NR_PDCCH_DCI_RUN
 // This function will extract the mapped DM-RS PDCCH REs as per 38.211 Section 7.4.1.3.2 (Mapping to physical resources)
 void nr_pdcch_extract_rbs_single(int32_t **rxdataF,
                                  int32_t **dl_ch_estimates,
@@ -385,7 +378,7 @@ void nr_pdcch_extract_rbs_single(int32_t **rxdataF,
 #endif
 
   for (aarx = 0; aarx < frame_parms->nb_antennas_rx; aarx++) {
-    dl_ch0 = &dl_ch_estimates[aarx][0];
+    dl_ch0 = &dl_ch_estimates[aarx][frame_parms->ofdm_symbol_size*symbol];
     LOG_DDD("dl_ch0 = &dl_ch_estimates[aarx = (%d)][0]\n",aarx);
 
     dl_ch0_ext = &dl_ch_estimates_ext[aarx][symbol * (coreset_nbr_rb * NBR_RE_PER_RB_WITH_DMRS)];
@@ -542,9 +535,6 @@ void nr_pdcch_extract_rbs_single(int32_t **rxdataF,
   }
 }
 
-#endif
-
-
 #define print_shorts(s,x) printf("%s %d,%d,%d,%d,%d,%d,%d,%d\n",s,(x)[0],(x)[1],(x)[2],(x)[3],(x)[4],(x)[5],(x)[6],(x)[7])
 
 void nr_pdcch_channel_compensation(int32_t **rxdataF_ext,
@@ -639,9 +629,9 @@ void nr_pdcch_channel_compensation(int32_t **rxdataF_ext,
 
       for (int i=0; i<12 ; i++)
         LOG_DDD("rxdataF128[%d]=(%d,%d) X dlch[%d]=(%d,%d) rxdataF_comp128[%d]=(%d,%d)\n",
-               (rb*12)+i, ((short *)rxdataF128)[i<<1],((short *)rxdataF128)[1+(i<<1)],
-               (rb*12)+i, ((short *)dl_ch128)[i<<1],((short *)dl_ch128)[1+(i<<1)],
-               (rb*12)+i, ((short *)rxdataF_comp128)[i<<1],((short *)rxdataF_comp128)[1+(i<<1)]);
+                (rb*12)+i, ((short *)rxdataF128)[i<<1],((short *)rxdataF128)[1+(i<<1)],
+                (rb*12)+i, ((short *)dl_ch128)[i<<1],((short *)dl_ch128)[1+(i<<1)],
+                (rb*12)+i, ((short *)rxdataF_comp128)[i<<1],((short *)rxdataF_comp128)[1+(i<<1)]);
 
       dl_ch128+=3;
       rxdataF128+=3;
@@ -694,24 +684,6 @@ void nr_pdcch_detection_mrc(NR_DL_FRAME_PARMS *frame_parms,
 #endif
 }
 
-#if 0
-void pdcch_siso(NR_DL_FRAME_PARMS *frame_parms,
-                int32_t **rxdataF_comp,
-                uint8_t l) {
-  uint8_t rb,re,jj,ii;
-  jj=0;
-  ii=0;
-
-  for (rb=0; rb<frame_parms->N_RB_DL; rb++) {
-    for (re=0; re<12; re++) {
-      rxdataF_comp[0][jj++] = rxdataF_comp[0][ii];
-      ii++;
-    }
-  }
-}
-#endif
-
-#ifdef NR_PDCCH_DCI_RUN
 int32_t nr_rx_pdcch(PHY_VARS_NR_UE *ue,
                     UE_nr_rxtx_proc_t *proc,
                     fapi_nr_dl_config_dci_dl_pdu_rel15_t *rel15) {
@@ -748,6 +720,7 @@ int32_t nr_rx_pdcch(PHY_VARS_NR_UE *ue,
     nr_pdcch_channel_level(pdcch_vars->dl_ch_estimates_ext,
                            frame_parms,
                            avgP,
+                           s,
                            n_rb);
     avgs = 0;
 
@@ -802,6 +775,7 @@ int32_t nr_rx_pdcch(PHY_VARS_NR_UE *ue,
   nr_pdcch_demapping_deinterleaving((uint32_t *) pdcch_vars->llr,
                                     (uint32_t *) pdcch_vars->e_rx,
                                     rel15->coreset.duration,
+                                    rel15->coreset.StartSymbolIndex,
                                     n_rb,
                                     rel15->coreset.RegBundleSize,
                                     rel15->coreset.InterleaverSize,
@@ -824,36 +798,7 @@ int32_t nr_rx_pdcch(PHY_VARS_NR_UE *ue,
   return (0);
 }
 
-#endif
-
-#if 0
-void nr_pdcch_scrambling(NR_DL_FRAME_PARMS *frame_parms,
-                      uint8_t nr_slot_rx,
-                      uint8_t *e,
-                      uint32_t length) {
-  int i;
-  uint8_t reset;
-  uint32_t x1, x2, s=0;
-  reset = 1;
-  // x1 is set in lte_gold_generic
-  x2 = (nr_slot_rx<<9) + frame_parms->Nid_cell; //this is c_init in 36.211 Sec 6.8.2
-
-  for (i=0; i<length; i++) {
-    if ((i&0x1f)==0) {
-      s = lte_gold_generic(&x1, &x2, reset);
-      //printf("lte_gold[%d]=%x\n",i,s);
-      reset = 0;
-    }
-
-    //    printf("scrambling %d : e %d, c %d\n",i,e[i],((s>>(i&0x1f))&1));
-    if (e[i] != 2) // <NIL> element is 2
-      e[i] = (e[i]&1) ^ ((s>>(i&0x1f))&1);
-  }
-}
-#endif
-
 
-#ifdef NR_PDCCH_DCI_RUN
 
 void nr_pdcch_unscrambling(int16_t *z,
                            uint16_t scrambling_RNTI,
@@ -883,10 +828,7 @@ void nr_pdcch_unscrambling(int16_t *z,
   }
 }
 
-#endif
-
 
-#ifdef NR_PDCCH_DCI_RUN
 /* This function compares the received DCI bits with
  * re-encoded DCI bits and returns the number of mismatched bits
  */
@@ -946,7 +888,8 @@ uint8_t nr_dci_decoding_procedure(PHY_VARS_NR_UE *ue,
       uint64_t dci_estimation[2]= {0};
       const t_nrPolar_params *currentPtrDCI = nr_polar_params(NR_POLAR_DCI_MESSAGE_TYPE, dci_length, L, 1, &ue->polarList);
 
-      LOG_D(PHY, "Trying DCI candidate %d of %d number of candidates, CCE %d (%d), L %d, length %d, format %s\n", j, rel15->number_of_candidates, CCEind, CCEind*9*6*2, L, dci_length,nr_dci_format_string[rel15->dci_format_options[k]]);
+      LOG_D(PHY, "Trying DCI candidate %d of %d number of candidates, CCE %d (%d), L %d, length %d, format %s\n",
+            j, rel15->number_of_candidates, CCEind, CCEind*9*6*2, L, dci_length,nr_dci_format_string[rel15->dci_format_options[k]]);
 
       nr_pdcch_unscrambling(&pdcch_vars->e_rx[CCEind*108], rel15->coreset.scrambling_rnti, L*108, rel15->coreset.pdcch_dmrs_scrambling_id, tmp_e);
 
@@ -997,846 +940,4 @@ uint8_t nr_dci_decoding_procedure(PHY_VARS_NR_UE *ue,
   return(dci_ind->number_of_dcis);
 }
 
-/*
-void nr_dci_decoding_procedure0(int s,
-                                int p,
-                                int coreset_time_dur,
-                                uint16_t coreset_nbr_rb,
-                                NR_UE_PDCCH **pdcch_vars,
-                                int do_common,
-                                uint8_t nr_slot_rx,
-                                NR_DCI_ALLOC_t *dci_alloc,
-                                int16_t eNB_id,
-                                uint8_t current_thread_id,
-                                NR_DL_FRAME_PARMS *frame_parms,
-                                //uint8_t mi,
-                                uint16_t crc_scrambled_values[TOTAL_NBR_SCRAMBLED_VALUES],
-                                uint8_t L,
-                                NR_UE_SEARCHSPACE_CSS_DCI_FORMAT_t format_css,
-                                NR_UE_SEARCHSPACE_USS_DCI_FORMAT_t format_uss,
-                                uint8_t sizeof_bits,
-                                uint8_t sizeof_bytes,
-                                uint8_t *dci_cnt,
-                                crc_scrambled_t *crc_scrambled,
-                                format_found_t *format_found,
-                                uint16_t pdcch_DMRS_scrambling_id,
-                                uint32_t *CCEmap0,
-                                uint32_t *CCEmap1,
-                                uint32_t *CCEmap2) {
-  uint32_t crc, CCEind, nCCE[3];
-  uint32_t *CCEmap = NULL, CCEmap_mask = 0;
-  uint8_t L2 = (1 << L);
-  unsigned int Yk, nb_candidates = 0, i, m;
-  unsigned int CCEmap_cand;
-  uint32_t decoderState=0;
-  // A[p], p is the current active CORESET
-  uint16_t A[3]= {39827,39829,39839};
-  //Table 10.1-2: Maximum number of PDCCH candidates    per slot and per serving cell as a function of the subcarrier spacing value 2^mu*15 KHz, mu {0,1,2,3}
-  uint8_t m_max_slot_pdcch_Table10_1_2 [4] = {44,36,22,20};
-  //Table 10.1-3: Maximum number of non-overlapped CCEs per slot and per serving cell as a function of the subcarrier spacing value 2^mu*15 KHz, mu {0,1,2,3}
-  //uint8_t cce_max_slot_pdcch_Table10_1_3 [4] = {56,56,48,32};
-  int coreset_nbr_cce_per_symbol=0;
-  LOG_DDD("format_found is %d \n", *format_found);
-  //if (mode == NO_DCI) {
-  //  #ifdef NR_PDCCH_DCI_DEBUG
-  //    LOG_DDD("skip DCI decoding: expect no DCIs at nr_slot_rx %d in current searchSpace\n", nr_slot_rx);
-  //  #endif
-  //  return;
-  //}
-  LOG_DDD("frequencyDomainResources=%lx, duration=%d\n",
-         pdcch_vars[eNB_id]->coreset[p].frequencyDomainResources, pdcch_vars[eNB_id]->coreset[p].duration);
-
-  // nCCE = get_nCCE(pdcch_vars[eNB_id]->num_pdcch_symbols, frame_parms, mi);
-  for (int i = 0; i < 45; i++) {
-    // this loop counts each bit of the bit map coreset_freq_dom, and increments nbr_RB_coreset for each bit set to '1'
-    if (((pdcch_vars[eNB_id]->coreset[p].frequencyDomainResources & 0x1FFFFFFFFFFF) >> i) & 0x1) coreset_nbr_cce_per_symbol++;
-  }
-
-  nCCE[p] = pdcch_vars[eNB_id]->coreset[p].duration*coreset_nbr_cce_per_symbol; // 1 CCE = 6 RB
-  // p is the current CORESET we are currently monitoring (among the 3 possible CORESETs in a BWP)
-  // the number of CCE in the current CORESET is:
-  //   the number of symbols in the CORESET (pdcch_vars[eNB_id]->coreset[p].duration)
-  //   multiplied by the number of bits set to '1' in the frequencyDomainResources bitmap
-  //   (1 bit set to '1' corresponds to 6 RB and 1 CCE = 6 RB)
-  LOG_DDD("nCCE[%d]=%d\n",p,nCCE[p]);
-
-  //  if (nCCE > get_nCCE(3, frame_parms, 1)) {
-  //LOG_D(PHY,
-  //"skip DCI decoding: nCCE=%d > get_nCCE(3,frame_parms,1)=%d\n",
-  //nCCE, get_nCCE(3, frame_parms, 1));
-  //return;
- // }
-
-//  if (nCCE < L2) {
-//  LOG_D(PHY, "skip DCI decoding: nCCE=%d < L2=%d\n", nCCE, L2);
-//  return;
-//  }
-
-//  if (mode == NO_DCI) {
-//  LOG_D(PHY, "skip DCI decoding: expect no DCIs at nr_slot_rx %d\n",
-//  nr_slot_rx);
-//  return;
-//  }
-
-  if (do_common == 1) {
-    Yk = 0;
-
-    if (pdcch_vars[eNB_id]->searchSpace[s].searchSpaceType.common_dci_formats == cformat2_0) {
-      // for dci_format_2_0, the nb_candidates is obtained from a different variable
-      switch (L2) {
-        case 1:
-          nb_candidates = pdcch_vars[eNB_id]->searchSpace[s].searchSpaceType.sfi_nrofCandidates_aggrlevel1;
-          break;
-
-        case 2:
-          nb_candidates = pdcch_vars[eNB_id]->searchSpace[s].searchSpaceType.sfi_nrofCandidates_aggrlevel2;
-          break;
-
-        case 4:
-          nb_candidates = pdcch_vars[eNB_id]->searchSpace[s].searchSpaceType.sfi_nrofCandidates_aggrlevel4;
-          break;
-
-        case 8:
-          nb_candidates = pdcch_vars[eNB_id]->searchSpace[s].searchSpaceType.sfi_nrofCandidates_aggrlevel8;
-          break;
-
-        case 16:
-          nb_candidates = pdcch_vars[eNB_id]->searchSpace[s].searchSpaceType.sfi_nrofCandidates_aggrlevel16;
-          break;
-
-        default:
-          break;
-      }
-    } else if (pdcch_vars[eNB_id]->searchSpace[s].searchSpaceType.common_dci_formats == cformat2_3) {
-      // for dci_format_2_3, the nb_candidates is obtained from a different variable
-      nb_candidates = pdcch_vars[eNB_id]->searchSpace[s].searchSpaceType.srs_nrofCandidates;
-    } else {
-      nb_candidates = (L2 == 4) ? 4 : ((L2 == 8)? 2 : 1); // according to Table 10.1-1 (38.213 section 10.1)
-      LOG_DDD("we are in common searchSpace and nb_candidates=%u for L2=%d\n", nb_candidates, L2);
-    }
-  } else {
-    switch (L2) {
-      case 1:
-        nb_candidates = pdcch_vars[eNB_id]->searchSpace[s].nrofCandidates_aggrlevel1;
-        break;
-
-      case 2:
-        nb_candidates = pdcch_vars[eNB_id]->searchSpace[s].nrofCandidates_aggrlevel2;
-        break;
-
-      case 4:
-        nb_candidates = pdcch_vars[eNB_id]->searchSpace[s].nrofCandidates_aggrlevel4;
-        break;
-
-      case 8:
-        nb_candidates = pdcch_vars[eNB_id]->searchSpace[s].nrofCandidates_aggrlevel8;
-        break;
-
-      case 16:
-        nb_candidates = pdcch_vars[eNB_id]->searchSpace[s].nrofCandidates_aggrlevel16;
-        break;
-
-      default:
-        break;
-    }
-
-    // Find first available in ue specific search space
-    // according to procedure in Section 10.1 of 38.213
-    // compute Yk
-    Yk = (unsigned int) pdcch_vars[eNB_id]->crnti;
-
-    for (i = 0; i <= nr_slot_rx; i++)
-      Yk = (Yk * A[p%3]) % 65537;
-  }
-
-  LOG_DDD("L2(%d) | nCCE[%d](%d) | Yk(%u) | nb_candidates(%u)\n", L2, p, nCCE[p], Yk, nb_candidates);
-  //  for (CCEind=0;
-  //    CCEind<nCCE2;
-  //    CCEind+=(1<<L)) {
-  //  if (nb_candidates * L2 > nCCE[p])
-  //    nb_candidates = nCCE[p] / L2;
-  // In the next code line there is maybe a bug. The spec is not comparing Table 10.1-2 with nb_candidates, but with total number of candidates for all s and all p
-  int m_p_s_L_max = (m_max_slot_pdcch_Table10_1_2[1]<=nb_candidates ? m_max_slot_pdcch_Table10_1_2[1] : nb_candidates);
-
-  if (L==4) m_p_s_L_max=1; // Table 10.1-2 is not defined for L=4
-
-  if(0 <= L && L < 4) LOG_DDD("m_max_slot_pdcch_Table10_1_2(%d)=%d\n",L,m_max_slot_pdcch_Table10_1_2[L]);
-
-  for (m = 0; m < nb_candidates; m++) {
-    int n_ci = 0;
-
-    if (nCCE[p] < L2) return;
-
-  LOG_DDD("debug1(%d)=nCCE[p]/L2 | nCCE[%d](%d) | L2(%d)\n",nCCE[p] / L2,p,nCCE[p],L2);
-  LOG_DDD("debug2(%d)=L2*m_p_s_L_max | L2(%d) | m_p_s_L_max(%d)\n",L2*m_p_s_L_max,L2,m_p_s_L_max);
-  CCEind = (((Yk + (uint16_t)(floor((m*nCCE[p])/(L2*m_p_s_L_max))) + n_ci) % (uint16_t)(floor(nCCE[p] / L2))) * L2);
-  LOG_DDD("CCEind(%u) = (((Yk(%u) + ((m(%u)*nCCE[p](%u))/(L2(%d)*m_p_s_L_max(%d)))) %% (nCCE[p] / L2)) * L2)\n",
-            CCEind,Yk,m,nCCE[p],L2,m_p_s_L_max);
-  LOG_DDD("n_candidate(m)=%u | CCEind=%u |",m,CCEind);
-
-    if (CCEind < 32)
-      CCEmap = CCEmap0;
-    else if (CCEind < 64)
-      CCEmap = CCEmap1;
-    else if (CCEind < 96)
-      CCEmap = CCEmap2;
-    else AssertFatal(1==0,"Illegal CCEind %u (Yk %u, m %u, nCCE %u, L2 %u\n", CCEind, Yk, m, nCCE[p], L2);
-
-    switch (L2) {
-      case 1:
-        CCEmap_mask = (1 << (CCEind & 0x1f));
-        break;
-
-      case 2:
-        CCEmap_mask = (3 << (CCEind & 0x1f));
-        break;
-
-      case 4:
-        CCEmap_mask = (0xf << (CCEind & 0x1f));
-        break;
-
-      case 8:
-        CCEmap_mask = (0xff << (CCEind & 0x1f));
-        break;
-
-      case 16:
-        CCEmap_mask = (0xfff << (CCEind & 0x1f));
-        break;
-
-      default:
-        LOG_E(PHY, "Illegal L2 value %d\n", L2);
-        //mac_xface->macphy_exit("Illegal L2\n");
-        return; // not reached
-    }
-
-    CCEmap_cand = (*CCEmap) & CCEmap_mask;
-    // CCE is not allocated yet
-    LOG_DDD("CCEmap_cand=%u \n",CCEmap_cand);
-
-    if (CCEmap_cand == 0) {
-#ifdef DEBUG_DCI_DECODING
-
-      if (do_common == 1)
-        LOG_I(PHY,"[DCI search nPdcch %d - common] Attempting candidate %d Aggregation Level %d DCI length %d at CCE %d/%d (CCEmap %x,CCEmap_cand %x)\n",
-              pdcch_vars[eNB_id]->num_pdcch_symbols,m,L2,sizeof_bits,CCEind,nCCE,*CCEmap,CCEmap_mask);
-      else
-        LOG_I(PHY,"[DCI search nPdcch %d - ue spec] Attempting candidate %d Aggregation Level %d DCI length %d at CCE %d/%d (CCEmap %x,CCEmap_cand %x) format %d\n",
-              pdcch_vars[eNB_id]->num_pdcch_symbols,m,L2,sizeof_bits,CCEind,nCCE,*CCEmap,CCEmap_mask,format_uss);
-
-#endif
-      LOG_DDD("... we enter function dci_decoding(sizeof_bits=%d L=%d) -----\n",sizeof_bits,L);
-      LOG_DDD("... we have to replace this part of the code by polar decoding\n");
-      //      for (int m=0; m < (nCCE[p]*6*9*2); m++)
-      LOG_DDD("(polar decoding)-> polar intput (with coreset_time_dur=%d, coreset_nbr_rb=%d, p=%d, CCEind=%u): \n",
-             coreset_time_dur,coreset_nbr_rb,p,CCEind);
-      
-      //int reg_p=0,reg_e=0;
-      //for (int m=0; m < (L2*6); m++){
-      //reg_p = (((int)floor(m/coreset_time_dur))+((m%coreset_time_dur)*(L2*6/coreset_time_dur)))*9*2;
-      //reg_e = m*9*2;
-      //for (int i=0; i<9*2; i++){
-      //polar_input[reg_p+i] = (pdcch_vars[eNB_id]->e_rx[((CCEind*9*6*2) + reg_e + i)]>0) ? (1.0):(-1.0);
-      //polar_input[reg_e+i] = (pdcch_vars[eNB_id]->e_rx[((CCEind*9*6*2) + reg_e + i)]>0) ? (1/sqrt(2)):((-1)/sqrt(2));
-      //printf("\t m=%d \tpolar_input[%d]=%lf <-> e_rx[%d]=%d\n",m,reg_e+i,polar_input[reg_e+i],
-      //        ((CCEind*9*6*2) + reg_e + i),pdcch_vars[eNB_id]->e_rx[((CCEind*9*6*2) + reg_e + i)]);
-      //printf("\t m=%d \tpolar_input[%d]=%lf <-> e_rx[%d]=%d\n",m,reg_p+i,polar_input[reg_p+i],
-      //        ((CCEind*9*6*2) + reg_e + i),pdcch_vars[eNB_id]->e_rx[((CCEind*9*6*2) + reg_e + i)]);
-      //}
-      //}
-
-      //#ifdef NR_PDCCH_DCI_DEBUG
-      //printf("\n");
-      //int j=0;
-      //uint32_t polar_hex[27] = {0};
-      //for (int i=0; i<L2*9*6*2; i++){2
-      //if ((i%32 == 0) && (i!=0)) j++;
-      //polar_hex[j] = (polar_hex[j]<<1) + ((polar_input[i]==-1)? 1:0);
-      //polar_hex[j] = polar_hex[j] + (((polar_input[i]==((-1)/sqrt(2)))?1:0)<<(i%32));
-      //}
-      //for (j=0;j<27;j++) LOG_DDD("polar_hex[%d]=%x\n",j,polar_hex[j]);
-      //#endif
-      
-      uint64_t dci_estimation[2]= {0};
-      const t_nrPolar_params *currentPtrDCI=nr_polar_params(1, sizeof_bits, L2,1);
-      decoderState = polar_decoder_int16(&pdcch_vars[eNB_id]->e_rx[CCEind*9*6*2],
-                                         dci_estimation,
-                                         1,
-                                         currentPtrDCI);
-      crc = decoderState;
-      //crc = (crc16(&dci_decoded_output[current_thread_id][0], sizeof_bits) >> 16) ^ extract_crc(&dci_decoded_output[current_thread_id][0], sizeof_bits);
-      LOG_DDD("... we end function dci_decoding() with crc=%x\n",crc);
-      LOG_DDD("... we have to replace this part of the code by polar decoding\n");
-#ifdef DEBUG_DCI_DECODING
-      LOG_DDD("(nr_dci_decoding_procedure0: crc =>%d\n",crc);
-#endif //uint16_t tc_rnti, uint16_t int_rnti, uint16_t sfi_rnti, uint16_t tpc_pusch_rnti, uint16_t tpc_pucch_rnti, uint16_t tpc_srs__rnti
-      LOG_DDD("format_found=%d\n",*format_found);
-      LOG_DDD("crc_scrambled=%d\n",*crc_scrambled);
-
-      if (crc == crc_scrambled_values[_C_RNTI_])  {
-        *crc_scrambled =_c_rnti;
-        *format_found=1;
-      }
-
-      if (crc == crc_scrambled_values[_CS_RNTI_])  {
-        *crc_scrambled =_cs_rnti;
-        *format_found=1;
-      }
-
-      if (crc == crc_scrambled_values[_NEW_RNTI_])  {
-        *crc_scrambled =_new_rnti;
-        *format_found=1;
-      }
-
-      if (crc == crc_scrambled_values[_TC_RNTI_])  {
-        *crc_scrambled =_tc_rnti;
-        *format_found=_format_1_0_found;
-      }
-
-      if (crc == crc_scrambled_values[_P_RNTI_])  {
-        *crc_scrambled =_p_rnti;
-        *format_found=_format_1_0_found;
-      }
-
-      if (crc == crc_scrambled_values[_SI_RNTI_])  {
-        *crc_scrambled =_si_rnti;
-        *format_found=_format_1_0_found;
-      }
-
-      if (crc == crc_scrambled_values[_RA_RNTI_])  {
-        *crc_scrambled =_ra_rnti;
-        *format_found=_format_1_0_found;
-      }
-
-      if (crc == crc_scrambled_values[_SP_CSI_RNTI_])  {
-        *crc_scrambled =_sp_csi_rnti;
-        *format_found=_format_0_1_found;
-      }
-
-      if (crc == crc_scrambled_values[_SFI_RNTI_])  {
-        *crc_scrambled =_sfi_rnti;
-        *format_found=_format_2_0_found;
-      }
-
-      if (crc == crc_scrambled_values[_INT_RNTI_])  {
-        *crc_scrambled =_int_rnti;
-        *format_found=_format_2_1_found;
-      }
-
-      if (crc == crc_scrambled_values[_TPC_PUSCH_RNTI_]) {
-        *crc_scrambled =_tpc_pusch_rnti;
-        *format_found=_format_2_2_found;
-      }
-
-      if (crc == crc_scrambled_values[_TPC_PUCCH_RNTI_]) {
-        *crc_scrambled =_tpc_pucch_rnti;
-        *format_found=_format_2_2_found;
-      }
-
-      if (crc == crc_scrambled_values[_TPC_SRS_RNTI_]) {
-        *crc_scrambled =_tpc_srs_rnti;
-        *format_found=_format_2_3_found;
-      }
-
-
-      LOG_DDD("format_found=%d\n",*format_found);
-      LOG_DDD("crc_scrambled=%d\n",*crc_scrambled);
-
-      if (*format_found!=255) {
-        dci_alloc[*dci_cnt].dci_length = sizeof_bits;
-        dci_alloc[*dci_cnt].rnti = crc;
-        dci_alloc[*dci_cnt].L = L;
-        dci_alloc[*dci_cnt].firstCCE = CCEind;
-        memcpy(&dci_alloc[*dci_cnt].dci_pdu[0],dci_estimation,8);
-
-        LOG_DDD("rnti matches -> DCI FOUND !!! crc =>0x%x, sizeof_bits %d, sizeof_bytes %d \n",
-                dci_alloc[*dci_cnt].rnti, dci_alloc[*dci_cnt].dci_length, sizeof_bytes);
-        LOG_DDD("dci_cnt %d (format_css %d crc_scrambled %d) L %d, firstCCE %d pdu[0] 0x%lx pdu[1] 0x%lx \n",
-                *dci_cnt, format_css,*crc_scrambled,dci_alloc[*dci_cnt].L, dci_alloc[*dci_cnt].firstCCE,dci_alloc[*dci_cnt].dci_pdu[0],dci_alloc[*dci_cnt].dci_pdu[1]);
-        if ((format_css == cformat0_0_and_1_0) || (format_uss == uformat0_0_and_1_0)) {
-          if ((*crc_scrambled == _p_rnti) || (*crc_scrambled == _si_rnti) || (*crc_scrambled == _ra_rnti)) {
-            dci_alloc[*dci_cnt].format = format1_0;
-            *dci_cnt = *dci_cnt + 1;
-            *format_found=_format_1_0_found;
-            //      LOG_DDD("a format1_0=%d and dci_cnt=%d\n",*format_found,*dci_cnt);
-          } else {
-            if ((dci_estimation[0]&1) == 0) {
-              dci_alloc[*dci_cnt].format = format0_0;
-              *dci_cnt = *dci_cnt + 1;
-              *format_found=_format_0_0_found;
-              //        LOG_DDD("b format0_0=%d and dci_cnt=%d\n",*format_found,*dci_cnt);
-            }
-
-            if ((dci_estimation[0]&1) == 1) {
-              dci_alloc[*dci_cnt].format = format1_0;
-              *dci_cnt = *dci_cnt + 1;
-              *format_found=_format_1_0_found;
-              //        LOG_DDD("c format1_0=%d and dci_cnt=%d\n",*format_found,*dci_cnt);
-            }
-          }
-        }
-
-        if (format_css == cformat2_0) {
-          dci_alloc[*dci_cnt].format = format2_0;
-          *dci_cnt = *dci_cnt + 1;
-          *format_found=_format_2_0_found;
-        }
-
-        if (format_css == cformat2_1) {
-          dci_alloc[*dci_cnt].format = format2_1;
-          *dci_cnt = *dci_cnt + 1;
-          *format_found=_format_2_1_found;
-        }
-
-        if (format_css == cformat2_2) {
-          dci_alloc[*dci_cnt].format = format2_2;
-          *dci_cnt = *dci_cnt + 1;
-          *format_found=_format_2_2_found;
-        }
-
-        if (format_css == cformat2_3) {
-          dci_alloc[*dci_cnt].format = format2_3;
-          *dci_cnt = *dci_cnt + 1;
-          *format_found=_format_2_3_found;
-        }
-
-        if (format_uss == uformat0_1_and_1_1) {
-          if ((dci_estimation[0]&1) == 0) {
-            dci_alloc[*dci_cnt].format = format0_1;
-            *dci_cnt = *dci_cnt + 1;
-            *format_found=_format_0_1_found;
-          }
-
-          if ((dci_estimation[0]&1) == 1) {
-            dci_alloc[*dci_cnt].format = format1_1;
-            *dci_cnt = *dci_cnt + 1;
-            *format_found=_format_1_1_found;
-          }
-        }
-
-        // store first nCCE of group for PUCCH transmission of ACK/NAK
-        pdcch_vars[eNB_id]->nCCE[nr_slot_rx] = CCEind;
-
-        //        if (crc == si_rnti) {
-        //        dci_alloc[*dci_cnt].format = format_si;
-        //        *dci_cnt = *dci_cnt + 1;
-        //        } else if (crc == p_rnti) {
-        //        dci_alloc[*dci_cnt].format = format_p;
-        //        *dci_cnt = *dci_cnt + 1;
-        //        } else if (crc == ra_rnti) {
-        //        dci_alloc[*dci_cnt].format = format_ra;
-        //        // store first nCCE of group for PUCCH transmission of ACK/NAK
-        //        pdcch_vars[eNB_id]->nCCE[nr_slot_rx] = CCEind;
-        //        *dci_cnt = *dci_cnt + 1;
-        //        } else if (crc == pdcch_vars[eNB_id]->crnti) {
-
-        //        if ((mode & UL_DCI) && (format_c == format0)
-        //        && ((dci_decoded_output[current_thread_id][0] & 0x80)
-        //        == 0)) { // check if pdu is format 0 or 1A
-        //        if (*format0_found == 0) {
-        //        dci_alloc[*dci_cnt].format = format0;
-        //        *format0_found = 1;
-        //        *dci_cnt = *dci_cnt + 1;
-        //        pdcch_vars[eNB_id]->nCCE[nr_slot_rx] = CCEind;
-        //        }
-        //        } else if (format_c == format0) { // this is a format 1A DCI
-        //        dci_alloc[*dci_cnt].format = format1A;
-        //        *dci_cnt = *dci_cnt + 1;
-        //        pdcch_vars[eNB_id]->nCCE[nr_slot_rx] = CCEind;
-        //        } else {
-        //        // store first nCCE of group for PUCCH transmission of ACK/NAK
-        //        if (*format_c_found == 0) {
-        //        dci_alloc[*dci_cnt].format = format_c;
-        //        *dci_cnt = *dci_cnt + 1;
-        //        *format_c_found = 1;
-        //        pdcch_vars[eNB_id]->nCCE[nr_slot_rx] = CCEind;
-        //        }
-        //        }
-        //        }
-        //LOG_I(PHY,"DCI decoding CRNTI  [format: %d, nCCE[nr_slot_rx: %d]: %d ], AggregationLevel %d \n",format_c, nr_slot_rx, pdcch_vars[eNB_id]->nCCE[nr_slot_rx],L2);
-        //  memcpy(&dci_alloc[*dci_cnt].dci_pdu[0],dci_decoded_output,sizeof_bytes);
-        switch (1 << L) {
-          case 1:
-            *CCEmap |= (1 << (CCEind & 0x1f));
-            break;
-
-          case 2:
-            *CCEmap |= (1 << (CCEind & 0x1f));
-            break;
-
-          case 4:
-            *CCEmap |= (1 << (CCEind & 0x1f));
-            break;
-
-          case 8:
-            *CCEmap |= (1 << (CCEind & 0x1f));
-            break;
-
-          case 16:
-            *CCEmap |= (1 << (CCEind & 0x1f));
-            break;
-        }
-
-#ifdef DEBUG_DCI_DECODING
-        LOG_I(PHY,"[DCI search] Found DCI %d rnti %x Aggregation %d length %d format %d in CCE %d (CCEmap %x) candidate %d / %d \n",
-              *dci_cnt,crc,1<<L,sizeof_bits,dci_alloc[*dci_cnt-1].format,CCEind,*CCEmap,m,nb_candidates );
-        //  nr_extract_dci_into(
-        //  dump_dci(frame_parms,&dci_alloc[*dci_cnt-1]);
-#endif
-        return;
-      } // rnti match
-    } else { // CCEmap_cand == 0
-      printf("\n");
-    }
-
-    
-    //  if ( agregationLevel != 0xFF &&
-    //  (format_c == format0 && m==0 && si_rnti != SI_RNTI))
-    //  {
-    //  //Only valid for OAI : Save some processing time when looking for DCI format0. From the log we see the DCI only on candidate 0.
-    //  return;
-    //  }
-    
-  } // candidate loop
-
-  LOG_DDD("end candidate loop\n");
-}
-*/
-#endif
-
-
-
-
-
-
-
-
-#if 0
-
-
-uint8_t nr_dci_decoding_procedure(int s,
-                                  int p,
-                                  PHY_VARS_NR_UE *ue,
-                                  NR_DCI_ALLOC_t *dci_alloc,
-                                  NR_SEARCHSPACE_TYPE_t searchSpacetype,
-                                  int16_t eNB_id,
-                                  uint8_t nr_slot_rx,
-                                  uint8_t dci_fields_sizes_cnt[MAX_NR_DCI_DECODED_SLOT][NBR_NR_DCI_FIELDS][NBR_NR_FORMATS],
-                                  uint16_t n_RB_ULBWP,
-                                  uint16_t n_RB_DLBWP,
-                                  crc_scrambled_t *crc_scrambled,
-                                  format_found_t *format_found,
-                                  uint16_t crc_scrambled_values[TOTAL_NBR_SCRAMBLED_VALUES]) {
-  //                                  uint8_t dci_fields_sizes[NBR_NR_DCI_FIELDS][NBR_NR_FORMATS],
-  LOG_DD("(nr_dci_decoding_procedure) nr_slot_rx=%d n_RB_ULBWP=%d n_RB_DLBWP=%d format_found=%d\n",
-         nr_slot_rx,n_RB_ULBWP,n_RB_DLBWP,*format_found);
-  int do_common = (int)searchSpacetype;
-  uint8_t dci_fields_sizes[NBR_NR_DCI_FIELDS][NBR_NR_FORMATS];
-  crc_scrambled_t crc_scrambled_ = *crc_scrambled;
-  format_found_t format_found_   = *format_found;
-  uint8_t dci_cnt = 0, old_dci_cnt = 0;
-  uint32_t CCEmap0 = 0, CCEmap1 = 0, CCEmap2 = 0;
-  NR_UE_PDCCH **pdcch_vars = ue->pdcch_vars[ue->current_thread_id[nr_slot_rx]];
-  NR_UE_PDCCH *pdcch_vars2 = ue->pdcch_vars[ue->current_thread_id[nr_slot_rx]][eNB_id];
-  uint16_t pdcch_DMRS_scrambling_id = pdcch_vars2->coreset[p].pdcchDMRSScramblingID;
-  uint64_t coreset_freq_dom = pdcch_vars2->coreset[p].frequencyDomainResources;
-  int coreset_time_dur = pdcch_vars2->coreset[p].duration;
-  uint16_t coreset_nbr_rb=0;
-
-  for (int i = 0; i < 45; i++) {
-    // this loop counts each bit of the bit map coreset_freq_dom, and increments nbr_RB_coreset for each bit set to '1'
-    if (((coreset_freq_dom & 0x1FFFFFFFFFFF) >> i) & 0x1) coreset_nbr_rb++;
-  }
-
-  coreset_nbr_rb = 6 * coreset_nbr_rb;
-  // coreset_time_dur,coreset_nbr_rb,
-  NR_DL_FRAME_PARMS *frame_parms = &ue->frame_parms;
-  //uint8_t mi;// = get_mi(&ue->frame_parms, nr_slot_rx);
-  //uint8_t tmode = ue->transmission_mode[eNB_id];
-  //uint8_t frame_type = frame_parms->frame_type;
-  uint8_t format_0_0_1_0_size_bits = 0, format_0_0_1_0_size_bytes = 0; //FIXME
-  uint8_t format_0_1_1_1_size_bits = 0, format_0_1_1_1_size_bytes = 0; //FIXME
-  uint8_t format_2_0_size_bits = 0, format_2_0_size_bytes = 0; //FIXME
-  uint8_t format_2_1_size_bits = 0, format_2_1_size_bytes = 0; //FIXME
-  uint8_t format_2_2_size_bits = 0, format_2_2_size_bytes = 0; //FIXME
-  uint8_t format_2_3_size_bits = 0, format_2_3_size_bytes = 0; //FIXME
-  /*
-   *
-   * The implementation of this function will depend on the information given by the searchSpace IE
-   *
-   * In LTE the UE has no knowledge about:
-   * - the type of search (common or ue-specific)
-   * - the DCI format it is going to be decoded when performing the PDCCH monitoring
-   * So the blind decoding has to be done for common and ue-specific searchSpaces for each aggregation level and for each dci format
-   *
-   * In NR the UE has a knowledge about the search Space type and the DCI format it is going to be decoded,
-   * so in the blind decoding we can call the function nr_dci_decoding_procedure0 with the searchSpace type and the dci format parameter
-   * We will call this function as many times as aggregation levels indicated in searchSpace
-   * Implementation according to 38.213 v15.1.0 Section 10.
-   *
-   */
-  NR_UE_SEARCHSPACE_CSS_DCI_FORMAT_t css_dci_format = pdcch_vars2->searchSpace[s].searchSpaceType.common_dci_formats;       //FIXME!!!
-  NR_UE_SEARCHSPACE_USS_DCI_FORMAT_t uss_dci_format = pdcch_vars2->searchSpace[s].searchSpaceType.ue_specific_dci_formats;  //FIXME!!!
-  // The following initialization is only for test purposes. To be removed
-  // NR_UE_SEARCHSPACE_CSS_DCI_FORMAT_t
-  css_dci_format = cformat0_0_and_1_0;
-  //NR_UE_SEARCHSPACE_USS_DCI_FORMAT_t
-  uss_dci_format = uformat0_0_and_1_0;
-  /*
-   * Possible overlap between RE for SS/PBCH blocks (described in section 10, 38.213) has not been implemented yet
-   * This can be implemented by setting variable 'mode = NO_DCI' when overlap occurs
-   */
-  //dci_detect_mode_t mode = 3; //dci_detect_mode_select(&ue->frame_parms, nr_slot_rx);
-  LOG_DD("searSpaceType=%d\n",do_common);
-  LOG_DD("%s_dci_format=%d\n",do_common?"uss":"css",css_dci_format);
-
-
-  // A set of PDCCH candidates for a UE to monitor is defined in terms of PDCCH search spaces
-  if (do_common==0) { // COMMON SearchSpaceType assigned to current SearchSpace/CORESET
-    // Type0-PDCCH  common search space for a DCI format with CRC scrambled by a SI-RNTI
-    // number of consecutive resource blocks and a number of consecutive symbols for
-    // the control resource set of the Type0-PDCCH common search space from
-    // the four most significant bits of RMSI-PDCCH-Config as described in Tables 13-1 through 13-10
-    // and determines PDCCH monitoring occasions
-    // from the four least significant bits of RMSI-PDCCH-Config,
-    // included in MasterInformationBlock, as described in Tables 13-11 through 13-15
-    // Type0A-PDCCH common search space for a DCI format with CRC scrambled by a SI-RNTI
-    // Type1-PDCCH  common search space for a DCI format with CRC scrambled by a RA-RNTI, or a TC-RNTI, or a C-RNTI
-    // Type2-PDCCH  common search space for a DCI format with CRC scrambled by a P-RNTI
-    if (css_dci_format == cformat0_0_and_1_0) {
-      // 38.213 v15.1.0 Table 10.1-1: CCE aggregation levels and maximum number of PDCCH candidates per CCE
-      // aggregation level for Type0/Type0A/Type2-PDCCH common search space
-      //   CCE Aggregation Level    Number of Candidates
-      //           4                       4
-      //           8                       2
-      //           16                      1
-      // FIXME
-      // We shall consider Table 10.1-1 to calculate the blind decoding only for Type0/Type0A/Type2-PDCCH
-      // Shall we consider the nrofCandidates in SearSpace IE that considers Aggregation Levels 1,2,4,8,16? Our implementation considers Table 10.1-1
-      // blind decoding (Type0-PDCCH,Type0A-PDCCH,Type1-PDCCH,Type2-PDCCH)
-      // for format0_0 => we are NOT implementing format0_0 for common search spaces. FIXME!
-      // for format0_0 and format1_0, first we calculate dci pdu size
-      format_0_0_1_0_size_bits = nr_dci_format_size(ue,eNB_id,nr_slot_rx,p,_c_rnti,n_RB_ULBWP,n_RB_DLBWP,dci_fields_sizes,0);
-      format_0_0_1_0_size_bytes = (format_0_0_1_0_size_bits%8 == 0) ? (uint8_t)floor(format_0_0_1_0_size_bits/8) : (uint8_t)(floor(format_0_0_1_0_size_bits/8) + 1);
-      LOG_DD("calculating dci format size for common searchSpaces with format css_dci_format=%d, format_0_0_1_0_size_bits=%d, format_0_0_1_0_size_bytes=%d\n",
-             css_dci_format,format_0_0_1_0_size_bits,format_0_0_1_0_size_bytes);
-
-      for (int aggregationLevel = 0; aggregationLevel<5 ; aggregationLevel++) { // We fix aggregationLevel to 3 for testing=> nbr of CCE=8
-        //for (int aggregationLevel = 2; aggregationLevel<5 ; aggregationLevel++) {
-        // for aggregation level aggregationLevel. The number of candidates (for L2= 2^aggregationLevel) will be calculated in function nr_dci_decoding_procedure0
-        LOG_DD("common searchSpaces with format css_dci_format=%d and aggregation_level=%d\n",
-               css_dci_format,(1<<aggregationLevel));
-        old_dci_cnt = dci_cnt;
-        nr_dci_decoding_procedure0(s,p,coreset_time_dur,coreset_nbr_rb,pdcch_vars, 1, nr_slot_rx, dci_alloc, eNB_id, ue->current_thread_id[nr_slot_rx], frame_parms,
-                                   crc_scrambled_values, aggregationLevel,
-                                   cformat0_0_and_1_0, uformat0_0_and_1_0,
-                                   format_0_0_1_0_size_bits, format_0_0_1_0_size_bytes, &dci_cnt,
-                                   &crc_scrambled_, &format_found_, pdcch_DMRS_scrambling_id,&CCEmap0, &CCEmap1, &CCEmap2);
-
-        if (dci_cnt != old_dci_cnt) {
-          // we will exit the loop as we have found the DCI
-          aggregationLevel = 5;
-          format_0_0_1_0_size_bits = nr_dci_format_size(ue,eNB_id,nr_slot_rx,p,crc_scrambled_,n_RB_ULBWP,n_RB_DLBWP,dci_fields_sizes,
-                                     0); // after decoding dci successfully we recalculate dci pdu size with correct crc scrambled to get the right field sizes
-          old_dci_cnt = dci_cnt;
-
-          for (int i=0; i<NBR_NR_DCI_FIELDS; i++)
-            for (int j=0; j<NBR_NR_FORMATS; j++)
-              dci_fields_sizes_cnt[dci_cnt-1][i][j]=dci_fields_sizes[i][j];
-        }
-      }
-    }
-
-    // Type3-PDCCH  common search space for a DCI format with CRC scrambled by INT-RNTI, or SFI-RNTI,
-    //    or TPC-PUSCH-RNTI, or TPC-PUCCH-RNTI, or TPC-SRS-RNTI, or C-RNTI, or CS-RNTI(s), or SP-CSI-RNTI
-    if (css_dci_format == cformat2_0) {
-      // for format2_0, first we calculate dci pdu size
-      format_2_0_size_bits = nr_dci_format_size(ue,eNB_id,nr_slot_rx,p,_sfi_rnti,n_RB_ULBWP,n_RB_DLBWP,dci_fields_sizes,4);
-      format_2_0_size_bytes = (format_2_0_size_bits%8 == 0) ? (uint8_t)floor(format_2_0_size_bits/8) : (uint8_t)(floor(format_2_0_size_bits/8) + 1);
-      LOG_DD("calculating dci format size for common searchSpaces with format css_dci_format=%d, format2_0_size_bits=%d, format2_0_size_bytes=%d\n",
-             css_dci_format,format_2_0_size_bits,format_2_0_size_bytes);
-
-      for (int aggregationLevelSFI = 0; aggregationLevelSFI<5 ; aggregationLevelSFI++) {
-        LOG_DD("common searchSpaces with format css_dci_format=%d and aggregation_level=%d\n",
-               css_dci_format,(1<<aggregationLevelSFI));
-        // for aggregation level 'aggregationLevelSFI'. The number of candidates (nrofCandidates-SFI) will be calculated in function nr_dci_decoding_procedure0
-        old_dci_cnt = dci_cnt;
-        nr_dci_decoding_procedure0(s,p,coreset_time_dur,coreset_nbr_rb,pdcch_vars, 1, nr_slot_rx, dci_alloc, eNB_id, ue->current_thread_id[nr_slot_rx], frame_parms,
-                                   crc_scrambled_values, aggregationLevelSFI,
-                                   cformat2_0, uformat0_0_and_1_0,
-                                   format_2_0_size_bits, format_2_0_size_bytes, &dci_cnt,
-                                   &crc_scrambled_, &format_found_,pdcch_DMRS_scrambling_id, &CCEmap0, &CCEmap1, &CCEmap2);
-
-        if (dci_cnt != old_dci_cnt) {
-          // we will exit the loop as we have found the DCI
-          aggregationLevelSFI = 5;
-          old_dci_cnt = dci_cnt;
-
-          for (int i=0; i<NBR_NR_DCI_FIELDS; i++)
-            for (int j=0; j<NBR_NR_FORMATS; j++)
-              dci_fields_sizes_cnt[dci_cnt-1][i][j]=dci_fields_sizes[i][j];
-        }
-      }
-    }
-
-    if (css_dci_format == cformat2_1) {
-      // for format2_1, first we calculate dci pdu size
-      format_2_1_size_bits = nr_dci_format_size(ue,eNB_id,nr_slot_rx,p,_int_rnti,n_RB_ULBWP,n_RB_DLBWP,dci_fields_sizes,5);
-      format_2_1_size_bytes = (format_2_1_size_bits%8 == 0) ? (uint8_t)floor(format_2_1_size_bits/8) : (uint8_t)(floor(format_2_1_size_bits/8) + 1);
-      LOG_DD("calculating dci format size for common searchSpaces with format css_dci_format=%d, format2_1_size_bits=%d, format2_1_size_bytes=%d\n",
-             css_dci_format,format_2_1_size_bits,format_2_1_size_bytes);
-
-      for (int aggregationLevel = 0; aggregationLevel<5 ; aggregationLevel++) {
-        LOG_DD("common searchSpaces with format css_dci_format=%d and aggregation_level=%d\n",
-               css_dci_format,(1<<aggregationLevel));
-        // for aggregation level 'aggregationLevelSFI'. The number of candidates (nrofCandidates-SFI) will be calculated in function nr_dci_decoding_procedure0
-        old_dci_cnt = dci_cnt;
-        nr_dci_decoding_procedure0(s,p,coreset_time_dur,coreset_nbr_rb,pdcch_vars, 1, nr_slot_rx, dci_alloc, eNB_id, ue->current_thread_id[nr_slot_rx], frame_parms,
-                                   crc_scrambled_values, aggregationLevel,
-                                   cformat2_1, uformat0_0_and_1_0,
-                                   format_2_1_size_bits, format_2_1_size_bytes, &dci_cnt,
-                                   &crc_scrambled_, &format_found_,pdcch_DMRS_scrambling_id, &CCEmap0, &CCEmap1, &CCEmap2);
-
-        if (dci_cnt != old_dci_cnt) {
-          // we will exit the loop as we have found the DCI
-          aggregationLevel = 5;
-          old_dci_cnt = dci_cnt;
-
-          for (int i=0; i<NBR_NR_DCI_FIELDS; i++)
-            for (int j=0; j<NBR_NR_FORMATS; j++)
-              dci_fields_sizes_cnt[dci_cnt-1][i][j]=dci_fields_sizes[i][j];
-        }
-      }
-    }
-
-    if (css_dci_format == cformat2_2) {
-      // for format2_2, first we calculate dci pdu size
-      format_2_2_size_bits = nr_dci_format_size(ue,eNB_id,nr_slot_rx,p,_tpc_pucch_rnti,n_RB_ULBWP,n_RB_DLBWP,dci_fields_sizes,6);
-      format_2_2_size_bytes = (format_2_2_size_bits%8 == 0) ? (uint8_t)floor(format_2_2_size_bits/8) : (uint8_t)(floor(format_2_2_size_bits/8) + 1);
-      LOG_DD("calculating dci format size for common searchSpaces with format css_dci_format=%d, format2_2_size_bits=%d, format2_2_size_bytes=%d\n",
-             css_dci_format,format_2_2_size_bits,format_2_2_size_bytes);
-
-      for (int aggregationLevel = 0; aggregationLevel<5 ; aggregationLevel++) {
-        LOG_DD("common searchSpaces with format css_dci_format=%d and aggregation_level=%d\n",
-               css_dci_format,(1<<aggregationLevel));
-        // for aggregation level 'aggregationLevelSFI'. The number of candidates (nrofCandidates-SFI) will be calculated in function nr_dci_decoding_procedure0
-        old_dci_cnt = dci_cnt;
-        nr_dci_decoding_procedure0(s,p,coreset_time_dur,coreset_nbr_rb,pdcch_vars, 1, nr_slot_rx, dci_alloc, eNB_id, ue->current_thread_id[nr_slot_rx], frame_parms,
-                                   crc_scrambled_values, aggregationLevel,
-                                   cformat2_2, uformat0_0_and_1_0,
-                                   format_2_2_size_bits, format_2_2_size_bytes, &dci_cnt,
-                                   &crc_scrambled_, &format_found_,pdcch_DMRS_scrambling_id, &CCEmap0, &CCEmap1, &CCEmap2);
-
-        if (dci_cnt != old_dci_cnt) {
-          // we will exit the loop as we have found the DCI
-          aggregationLevel = 5;
-          old_dci_cnt = dci_cnt;
-
-          for (int i=0; i<NBR_NR_DCI_FIELDS; i++)
-            for (int j=0; j<NBR_NR_FORMATS; j++)
-              dci_fields_sizes_cnt[dci_cnt-1][i][j]=dci_fields_sizes[i][j];
-        }
-      }
-    }
-
-    if (css_dci_format == cformat2_3) {
-      // for format2_1, first we calculate dci pdu size
-      format_2_3_size_bits = nr_dci_format_size(ue,eNB_id,nr_slot_rx,p,_tpc_srs_rnti,n_RB_ULBWP,n_RB_DLBWP,dci_fields_sizes,7);
-      format_2_3_size_bytes = (format_2_3_size_bits%8 == 0) ? (uint8_t)floor(format_2_3_size_bits/8) : (uint8_t)(floor(format_2_3_size_bits/8) + 1);
-      LOG_DD("calculating dci format size for common searchSpaces with format css_dci_format=%d, format2_3_size_bits=%d, format2_3_size_bytes=%d\n",
-             css_dci_format,format_2_3_size_bits,format_2_3_size_bytes);
-
-      for (int aggregationLevel = 0; aggregationLevel<5 ; aggregationLevel++) {
-        LOG_DD("common searchSpaces with format css_dci_format=%d and aggregation_level=%d\n",
-               css_dci_format,(1<<aggregationLevel));
-        // for aggregation level 'aggregationLevelSFI'. The number of candidates (nrofCandidates-SFI) will be calculated in function nr_dci_decoding_procedure0
-        old_dci_cnt = dci_cnt;
-        nr_dci_decoding_procedure0(s,p,coreset_time_dur,coreset_nbr_rb,pdcch_vars, 1, nr_slot_rx, dci_alloc, eNB_id, ue->current_thread_id[nr_slot_rx], frame_parms,
-                                   crc_scrambled_values, aggregationLevel,
-                                   cformat2_3, uformat0_0_and_1_0,
-                                   format_2_3_size_bits, format_2_3_size_bytes, &dci_cnt,
-                                   &crc_scrambled_, &format_found_,pdcch_DMRS_scrambling_id, &CCEmap0, &CCEmap1, &CCEmap2);
-
-        if (dci_cnt != old_dci_cnt) {
-          // we will exit the loop as we have found the DCI
-          aggregationLevel = 5;
-          old_dci_cnt = dci_cnt;
-
-          for (int i=0; i<NBR_NR_DCI_FIELDS; i++)
-            for (int j=0; j<NBR_NR_FORMATS; j++)
-              dci_fields_sizes_cnt[dci_cnt-1][i][j]=dci_fields_sizes[i][j];
-        }
-      }
-    }
-  } else { // UE-SPECIFIC SearchSpaceType assigned to current SearchSpace/CORESET
-    // UE-specific search space for a DCI format with CRC scrambled by C-RNTI, or CS-RNTI(s), or SP-CSI-RNTI
-    if (uss_dci_format == uformat0_0_and_1_0) {
-      // for format0_0 and format1_0, first we calculate dci pdu size
-      format_0_0_1_0_size_bits = nr_dci_format_size(ue,eNB_id,nr_slot_rx,p,_c_rnti,n_RB_ULBWP,n_RB_DLBWP,dci_fields_sizes,0);
-      format_0_0_1_0_size_bytes = (format_0_0_1_0_size_bits%8 == 0) ? (uint8_t)floor(format_0_0_1_0_size_bits/8) : (uint8_t)(floor(format_0_0_1_0_size_bits/8) + 1);
-      LOG_DD("calculating dci format size for UE-specific searchSpaces with format uss_dci_format=%d, format_0_0_1_0_size_bits=%d, format_0_0_1_0_size_bytes=%d\n",
-             css_dci_format,format_0_0_1_0_size_bits,format_0_0_1_0_size_bytes);
-
-      for (int aggregationLevel = 0; aggregationLevel<5 ; aggregationLevel++) { // We fix aggregationLevel to 3 for testing=> nbr of CCE=8
-        //for (int aggregationLevel = 2; aggregationLevel<5 ; aggregationLevel++) {
-        // for aggregation level aggregationLevel. The number of candidates (for L2= 2^aggregationLevel) will be calculated in function nr_dci_decoding_procedure0
-        LOG_DD("common searchSpaces with format css_dci_format=%d and aggregation_level=%d\n",
-               css_dci_format,(1<<aggregationLevel));
-        old_dci_cnt = dci_cnt;
-        nr_dci_decoding_procedure0(s,p,coreset_time_dur,coreset_nbr_rb,pdcch_vars, 0, nr_slot_rx, dci_alloc, eNB_id, ue->current_thread_id[nr_slot_rx], frame_parms,
-                                   crc_scrambled_values, aggregationLevel,
-                                   cformat0_0_and_1_0, uformat0_0_and_1_0,
-                                   format_0_0_1_0_size_bits, format_0_0_1_0_size_bytes, &dci_cnt,
-                                   &crc_scrambled_, &format_found_,pdcch_DMRS_scrambling_id, &CCEmap0, &CCEmap1, &CCEmap2);
-
-        if (dci_cnt != old_dci_cnt) {
-          // we will exit the loop as we have found the DCI
-          aggregationLevel = 5;
-          old_dci_cnt = dci_cnt;
-
-          for (int i=0; i<NBR_NR_DCI_FIELDS; i++)
-            for (int j=0; j<NBR_NR_FORMATS; j++)
-              dci_fields_sizes_cnt[dci_cnt-1][i][j]=dci_fields_sizes[i][j];
-        }
-      }
-    }
 
-    if (uss_dci_format == uformat0_1_and_1_1) {
-      // for format0_0 and format1_0, first we calculate dci pdu size
-      format_0_1_1_1_size_bits = nr_dci_format_size(ue,eNB_id,nr_slot_rx,p,_c_rnti,n_RB_ULBWP,n_RB_DLBWP,dci_fields_sizes,1);
-      format_0_1_1_1_size_bytes = (format_0_1_1_1_size_bits%8 == 0) ? (uint8_t)floor(format_0_1_1_1_size_bits/8) : (uint8_t)(floor(format_0_1_1_1_size_bits/8) + 1);
-      LOG_DD("calculating dci format size for UE-specific searchSpaces with format uss_dci_format=%d, format_0_1_1_1_size_bits=%d, format_0_1_1_1_size_bytes=%d\n",
-             css_dci_format,format_0_1_1_1_size_bits,format_0_1_1_1_size_bytes);
-
-      for (int aggregationLevel = 0; aggregationLevel<5 ; aggregationLevel++) { // We fix aggregationLevel to 3 for testing=> nbr of CCE=8
-        //for (int aggregationLevel = 2; aggregationLevel<5 ; aggregationLevel++) {
-        // for aggregation level aggregationLevel. The number of candidates (for L2= 2^aggregationLevel) will be calculated in function nr_dci_decoding_procedure0
-        LOG_DD("common searchSpaces with format css_dci_format=%d and aggregation_level=%d\n",
-               css_dci_format,(1<<aggregationLevel));
-        old_dci_cnt = dci_cnt;
-        nr_dci_decoding_procedure0(s,p,coreset_time_dur,coreset_nbr_rb,pdcch_vars, 0, nr_slot_rx, dci_alloc, eNB_id, ue->current_thread_id[nr_slot_rx], frame_parms,
-                                   crc_scrambled_values, aggregationLevel,
-                                   cformat0_0_and_1_0, uformat0_1_and_1_1,
-                                   format_0_1_1_1_size_bits, format_0_1_1_1_size_bytes, &dci_cnt,
-                                   &crc_scrambled_, &format_found_,pdcch_DMRS_scrambling_id, &CCEmap0, &CCEmap1, &CCEmap2);
-
-        if (dci_cnt != old_dci_cnt) {
-          // we will exit the loop as we have found the DCI
-          aggregationLevel = 5;
-          old_dci_cnt = dci_cnt;
-
-          for (int i=0; i<NBR_NR_DCI_FIELDS; i++)
-            for (int j=0; j<NBR_NR_FORMATS; j++)
-              dci_fields_sizes_cnt[dci_cnt-1][i][j]=dci_fields_sizes[i][j];
-        }
-      }
-    }
-  }
-
-  *crc_scrambled = crc_scrambled_;
-  *format_found  = format_found_;
-  LOG_DD("at the end crc_scrambled=%d and format_found=%d\n",*crc_scrambled,*format_found);
-  LOG_DD("at the end dci_cnt=%d \n",dci_cnt);
-  return(dci_cnt);
-}
-
-#endif
diff --git a/openair1/PHY/NR_UE_TRANSPORT/dci_nr.h b/openair1/PHY/NR_UE_TRANSPORT/dci_nr.h
index 5f1321dd321bfda863e20b1e0a38ddc1c82d59f3..7bbc59ede24f52554d23d571365342903cfd55cb 100644
--- a/openair1/PHY/NR_UE_TRANSPORT/dci_nr.h
+++ b/openair1/PHY/NR_UE_TRANSPORT/dci_nr.h
@@ -33,13 +33,7 @@
 #ifndef __PHY_NR_UE_TRANSPORT_DCI_NR__H__
 #define __PHY_NR_UE_TRANSPORT_DCI_NR__H__
 
-#ifndef USER_MODE
-#include "PHY/types.h"
-#else
 #include <stdint.h>
-#endif
-
-
 
 #define MAX_DCI_SIZE_BITS 45
 
diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c b/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
index 031c08a72dfd52c329bdce03eec8d4eee67175b8..37a2849d212a26c383adcac41a33ab0144d2c633 100644
--- a/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
+++ b/openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
@@ -43,12 +43,6 @@
 #include "PHY/NR_REFSIG/dmrs_nr.h"
 #include "common/utils/nr/nr_common.h"
 
-#ifndef USER_MODE
-#define NOCYGWIN_STATIC static
-#else
-#define NOCYGWIN_STATIC
-#endif
-
 /* dynamic shift for LLR computation for TM3/4
  * set as command line argument, see lte-softmodem.c
  * default value: 0
diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c b/openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
index ffe21b1f6db5d89d72e3d19461816ad7dce66165..767edf9cc65a29f730ce1484b74b33c47ba1dc03 100644
--- a/openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
+++ b/openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
@@ -485,9 +485,9 @@ int nr_initial_sync(UE_nr_rxtx_proc_t *proc,
 
     for(int n_ss = 0; n_ss<pdcch_vars->nb_search_space; n_ss++) {
       uint8_t nb_symb_pdcch = pdcch_vars->pdcch_config[n_ss].coreset.duration;
+      int start_symb = pdcch_vars->pdcch_config[n_ss].coreset.StartSymbolIndex;
       get_coreset_rballoc(pdcch_vars->pdcch_config[n_ss].coreset.frequency_domain_resource,&coreset_nb_rb,&coreset_start_rb);
-
-      for (uint16_t l=0; l<nb_symb_pdcch; l++) {
+      for (uint16_t l=start_symb; l<start_symb+nb_symb_pdcch; l++) {
         nr_slot_fep_init_sync(ue,
                               proc,
                               l, // the UE PHY has no notion of the symbols to be monitored in the search space
diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c b/openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
index 4d9e2dce3522f0cd6cdd531073bfaef0bddc48c4..86c9974f68377a7a4f80d10297672ad90235aca3 100644
--- a/openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
+++ b/openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
@@ -40,9 +40,7 @@
 //#define DEBUG_PBCH 
 //#define DEBUG_PBCH_ENCODING
 
-#ifdef OPENAIR2
   //#include "PHY_INTERFACE/defs.h"
-#endif
 
 #define PBCH_A 24
 
diff --git a/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.c b/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.c
index 68d873541156233250def5db490d0f844a56f3d7..cb929f1642439e95ab17274a9e0e283c0046c744 100644
--- a/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.c
+++ b/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.c
@@ -90,8 +90,8 @@ void nr_generate_pucch0(PHY_VARS_NR_UE *ue,
   // the value of u,v (delta always 0 for PUCCH) has to be calculated according to TS 38.211 Subclause 6.3.2.2.1
   uint8_t u[2]={0,0},v[2]={0,0};
 
-  LOG_D(PHY,"pucch0: slot %d nr_symbols %d, start_symbol %d, prb_start %d, second_hop_prb %d,  group_hop_flag %d, sequence_hop_flag %d, mcs %d\n",nr_slot_tx,pucch_pdu->nr_of_symbols,pucch_pdu->start_symbol_index,pucch_pdu->prb_start,pucch_pdu->second_hop_prb,pucch_pdu->group_hop_flag,pucch_pdu->sequence_hop_flag,pucch_pdu->mcs);
-
+  LOG_D(PHY,"pucch0: slot %d nr_symbols %d, start_symbol %d, prb_start %d, second_hop_prb %d,  group_hop_flag %d, sequence_hop_flag %d, mcs %d\n",
+        nr_slot_tx,pucch_pdu->nr_of_symbols,pucch_pdu->start_symbol_index,pucch_pdu->prb_start,pucch_pdu->second_hop_prb,pucch_pdu->group_hop_flag,pucch_pdu->sequence_hop_flag,pucch_pdu->mcs);
 
 #ifdef DEBUG_NR_PUCCH_TX
   printf("\t [nr_generate_pucch0] sequence generation: variable initialization for test\n");
diff --git a/openair1/PHY/TOOLS/lte_enb_scope.c b/openair1/PHY/TOOLS/lte_enb_scope.c
index 220df5b54a3c6629c8259fb6a75b43de141801aa..bed507feeebafcada8f75c7367e492f038c9e8c6 100644
--- a/openair1/PHY/TOOLS/lte_enb_scope.c
+++ b/openair1/PHY/TOOLS/lte_enb_scope.c
@@ -69,18 +69,12 @@ void reset_stats(FL_OBJECT *button, long arg) {
 
 
 static void *scope_thread_eNB(void *arg) {
-# ifdef ENABLE_XFORMS_WRITE_STATS
-  FILE *eNB_stats;
-# endif
   struct sched_param sched_param;
   int UE_id, CC_id;
   int ue_cnt=0;
   sched_param.sched_priority = sched_get_priority_min(SCHED_FIFO)+1;
   sched_setscheduler(0, SCHED_FIFO,&sched_param);
   printf("Scope thread has priority %d\n",sched_param.sched_priority);
-# ifdef ENABLE_XFORMS_WRITE_STATS
-  eNB_stats = fopen("eNB_stats.txt", "w");
-#endif
 
   while (!oai_exit) {
     ue_cnt=0;
@@ -99,16 +93,6 @@ static void *scope_thread_eNB(void *arg) {
     usleep(100*1000);
   }
 
-  //  printf("%s",stats_buffer);
-# ifdef ENABLE_XFORMS_WRITE_STATS
-
-  if (eNB_stats) {
-    rewind (eNB_stats);
-    fwrite (stats_buffer, 1, len, eNB_stats);
-    fclose (eNB_stats);
-  }
-
-# endif
   pthread_exit((void *)arg);
 }
 
diff --git a/openair1/PHY/TOOLS/lte_ue_scope.c b/openair1/PHY/TOOLS/lte_ue_scope.c
index 20d88ebdab5d33d41f278bacea1f22991d7acf73..00560f2d74a0fd73e6841ddc0552bd0af3c2bc3c 100644
--- a/openair1/PHY/TOOLS/lte_ue_scope.c
+++ b/openair1/PHY/TOOLS/lte_ue_scope.c
@@ -72,16 +72,10 @@ void reset_stats(FL_OBJECT *button, long arg) {
 
 static void *scope_thread_UE(void *arg) {
   char stats_buffer[16384];
-# ifdef ENABLE_XFORMS_WRITE_STATS
-  FILE *UE_stats, *eNB_stats;
-# endif
   struct sched_param sched_param;
   sched_param.sched_priority = sched_get_priority_min(SCHED_FIFO)+1;
   sched_setscheduler(0, SCHED_FIFO,&sched_param);
   printf("Scope thread has priority %d\n",sched_param.sched_priority);
-# ifdef ENABLE_XFORMS_WRITE_STATS
-  UE_stats  = fopen("UE_stats.txt", "w");
-#endif
 
   while (!oai_exit) {
     //      dump_ue_stats (PHY_vars_UE_g[0][0], &PHY_vars_UE_g[0][0]->proc.proc_rxtx[0],stats_buffer, 0, mode,rx_input_level_dBm);
@@ -94,16 +88,6 @@ static void *scope_thread_UE(void *arg) {
                  0,7);
     //  printf("%s",stats_buffer);
   }
-
-# ifdef ENABLE_XFORMS_WRITE_STATS
-
-  if (UE_stats) {
-    rewind (UE_stats);
-    fwrite (stats_buffer, 1, len, UE_stats);
-    fclose (UE_stats);
-  }
-
-# endif
   pthread_exit((void *)arg);
 }
 
diff --git a/openair1/PHY/TOOLS/nr_phy_scope.c b/openair1/PHY/TOOLS/nr_phy_scope.c
index fc1fa4c297c5b5bafb244194cecd554ee093b69a..3440e4f28c50391d41179557e9f2f1c212ab3308 100644
--- a/openair1/PHY/TOOLS/nr_phy_scope.c
+++ b/openair1/PHY/TOOLS/nr_phy_scope.c
@@ -517,9 +517,6 @@ void phy_scope_gNB(OAI_phy_scope_t *form,
 }
 static void *scope_thread_gNB(void *arg) {
   scopeData_t *p=(scopeData_t *) arg;
-  //# ifdef ENABLE_XFORMS_WRITE_STATS
-  //  FILE *gNB_stats = fopen("gNB_stats.txt", "w");
-  //#endif
   size_t stksize=0;
   pthread_attr_t atr;
   pthread_attr_init(&atr);
diff --git a/openair1/PHY/defs_L1_NB_IoT.h b/openair1/PHY/defs_L1_NB_IoT.h
index cc3ec94a95d90d50f86905f4569830bc1e744663..a4552c8c271dfe9d91325cd8883b683eb0d1087b 100644
--- a/openair1/PHY/defs_L1_NB_IoT.h
+++ b/openair1/PHY/defs_L1_NB_IoT.h
@@ -48,7 +48,6 @@
 #ifdef MEX
   #define msg mexPrintf
 #else
-  #ifdef OPENAIR2
     #if ENABLE_RAL
       #include "collection/hashtable/hashtable.h"
       #include "COMMON/ral_messages_types.h"
@@ -56,9 +55,6 @@
     #endif
     #include "common/utils/LOG/log.h"
     #define msg(aRGS...) LOG_D(PHY, ##aRGS)
-  #else
-    #define msg printf
-  #endif
 #endif
 //use msg in the real-time thread context
 #define msg_nrt printf
@@ -196,19 +192,6 @@ typedef struct {
   NB_IoT_UE_DLSCH_t   *dlsch_rn_MCH[10];
 
 } PHY_VARS_RN_NB_IoT;
-/*
-#ifdef OCP_FRAMEWORK
-#include <enums.h>
-#else
-//typedef enum {normal_txrx=0,rx_calib_ue=1,rx_calib_ue_med=2,rx_calib_ue_byp=3,debug_prach=4,no_L2_connect=5,calib_prach_tx=6,rx_dump_frame=7,loop_through_memory=8} runmode_t;
-*/
-// enum transmission_access_mode {
-//   NO_ACCESS=0,
-//   POSTPONED_ACCESS,
-//   CANCELED_ACCESS,
-//   UNKNOWN_ACCESS,
-//   SCHEDULED_ACCESS,
-//   CBA_ACCESS};
 
 typedef enum  {
   eNodeB_3GPP_NB_IoT=0,   // classical eNodeB function
diff --git a/openair1/PHY/defs_UE.h b/openair1/PHY/defs_UE.h
index e17b752e7b77781d4cd1207a5ba69aceba484488..2d2697a4b7afbdd4611d49496bac350616a16bcf 100644
--- a/openair1/PHY/defs_UE.h
+++ b/openair1/PHY/defs_UE.h
@@ -87,7 +87,6 @@
   #define LOG_W(x, ...) mexPrintf(__VA_ARGS__)
   #define LOG_M(x, ...) mexPrintf(__VA_ARGS__)
 #else
-  #ifdef OPENAIR2
     #if ENABLE_RAL
       #include "collection/hashtable/hashtable.h"
       #include "COMMON/ral_messages_types.h"
@@ -95,9 +94,6 @@
     #endif
     #include "common/utils/LOG/log.h"
     #define msg(aRGS...) LOG_D(PHY, ##aRGS)
-  #else
-    #define msg printf
-  #endif
 #endif
 
 
diff --git a/openair1/PHY/defs_nr_UE.h b/openair1/PHY/defs_nr_UE.h
index 8ce18aa667d56b51578f90e73da70fa1a3da3a32..027e73ea4a19b25b4325d1103fc34ffd73d9b7cb 100644
--- a/openair1/PHY/defs_nr_UE.h
+++ b/openair1/PHY/defs_nr_UE.h
@@ -51,16 +51,12 @@
 #ifdef MEX
   #define msg mexPrintf
 #else
-  #ifdef OPENAIR2
     #if ENABLE_RAL
       #include "common/utils/hashtable/hashtable.h"
       #include "COMMON/ral_messages_types.h"
       #include "UTIL/queue.h"
     #endif
     #define msg(aRGS...) LOG_D(PHY, ##aRGS)
-  #else
-    #define msg printf
-  #endif
 #endif
 //use msg in the real-time thread context
 #define msg_nrt printf
@@ -638,7 +634,7 @@ typedef struct {
   uint8_t dciFormat;
   uint8_t agregationLevel;
   int nb_search_space;
-  fapi_nr_dl_config_dci_dl_pdu_rel15_t pdcch_config[FAPI_NR_MAX_SS_PER_CORESET];
+  fapi_nr_dl_config_dci_dl_pdu_rel15_t pdcch_config[FAPI_NR_MAX_SS];
   // frame and slot for sib1 in initial sync
   uint16_t sfn;
   uint16_t slot;
@@ -921,9 +917,10 @@ typedef struct {
   uint8_t               init_sync_frame;
   /// temporary offset during cell search prior to MIB decoding
   int              ssb_offset;
-  uint16_t	   symbol_offset; // offset in terms of symbols for detected ssb in sync
-  int              rx_offset; /// Timing offset
+  uint16_t         symbol_offset;  /// offset in terms of symbols for detected ssb in sync
+  int              rx_offset;      /// Timing offset
   int              rx_offset_diff; /// Timing adjustment for ofdm symbol0 on HW USRP
+  int              max_pos_fil;    /// Timing offset IIR filter
   int              time_sync_cell;
 
   /// Timing Advance updates variables
diff --git a/openair1/PHY/phy_extern.h b/openair1/PHY/phy_extern.h
index d5fea5aec66b0ce4d9acf4ac0f75c7275ca4b2eb..1ce042d086dfab93902d7c55cc6b10c18749966d 100644
--- a/openair1/PHY/phy_extern.h
+++ b/openair1/PHY/phy_extern.h
@@ -55,12 +55,6 @@ extern char mode_string[4][20];
 extern unsigned char NB_RU;
 
 
-#ifndef OPENAIR2
-extern unsigned char NB_eNB_INST;
-extern uint16_t NB_UE_INST;
-extern unsigned char NB_RN_INST;
-#endif
-
 extern int flag_LA;
 extern double sinr_bler_map[MCS_COUNT][2][MCS_TABLE_LENGTH_MAX];
 extern double sinr_bler_map_up[MCS_COUNT][2][16];
diff --git a/openair1/PHY/phy_extern_nr_ue.h b/openair1/PHY/phy_extern_nr_ue.h
index f1704a7902e26dd685ef3559c4b24c7f895bd522..66d554f245b1c90416e9874e54fb7a5cdb69f2d5 100644
--- a/openair1/PHY/phy_extern_nr_ue.h
+++ b/openair1/PHY/phy_extern_nr_ue.h
@@ -63,12 +63,6 @@ extern char mode_string[4][20];
 
 extern unsigned char NB_RU;
 
-#ifndef OPENAIR2
-extern unsigned char NB_eNB_INST;
-extern uint16_t NB_UE_INST;
-extern unsigned char NB_RN_INST;
-#endif
-
 extern int flag_LA;
 extern double sinr_bler_map[MCS_COUNT][2][MCS_TABLE_LENGTH_MAX];
 extern double sinr_bler_map_up[MCS_COUNT][2][16];
diff --git a/openair1/PHY/phy_extern_ue.h b/openair1/PHY/phy_extern_ue.h
index 9f227806fd6b577a241a2708bc68e06041dc5e66..cff03e375d810d46388b512c7343c67aa8fef74a 100644
--- a/openair1/PHY/phy_extern_ue.h
+++ b/openair1/PHY/phy_extern_ue.h
@@ -53,12 +53,6 @@ extern int flagMag;
 extern char mode_string[4][20];
 
 
-#ifndef OPENAIR2
-extern unsigned char NB_eNB_INST;
-extern uint16_t NB_UE_INST;
-extern unsigned char NB_RN_INST;
-#endif
-
 extern int flag_LA;
 extern double sinr_bler_map[MCS_COUNT][2][MCS_TABLE_LENGTH_MAX];
 extern double sinr_bler_map_up[MCS_COUNT][2][16];
diff --git a/openair1/PHY/phy_vars.h b/openair1/PHY/phy_vars.h
index 9edb7031b95cf70370b90596ead42c977f4c3255..58797848271b735bec713c2b62b4494eb1b63407 100644
--- a/openair1/PHY/phy_vars.h
+++ b/openair1/PHY/phy_vars.h
@@ -55,13 +55,6 @@ const short conjugate2[8]__attribute__((aligned(16))) = {1,-1,1,-1,1,-1,1,-1};
 
 unsigned char NB_RU=0;
 
-#ifndef OPENAIR2
-//unsigned char NB_eNB_INST=0;
-//uint16_t NB_UE_INST=0;
-//unsigned char NB_RN_INST=0;
-//unsigned char NB_INST=0;
-#endif
-
 int number_of_cards;
 
 
diff --git a/openair1/PHY/phy_vars_nr_ue.h b/openair1/PHY/phy_vars_nr_ue.h
index baa64561f0e4bc5fc8b3dd0f2bc67788e3a10b78..cfdfbeb49d009b9fd4c1f70c642b5e70e9cf367a 100644
--- a/openair1/PHY/phy_vars_nr_ue.h
+++ b/openair1/PHY/phy_vars_nr_ue.h
@@ -57,13 +57,6 @@ const short conjugate2[8]__attribute__((aligned(16))) = {1,-1,1,-1,1,-1,1,-1};
 
 unsigned char NB_RU=0;
 
-#ifndef OPENAIR2
-unsigned char NB_eNB_INST=0;
-uint16_t NB_UE_INST=0;
-unsigned char NB_RN_INST=0;
-unsigned char NB_INST=0;
-#endif
-
 
 int number_of_cards;
 
diff --git a/openair1/PHY/phy_vars_ue.h b/openair1/PHY/phy_vars_ue.h
index 469a5c475470fe044b27382bc1acfd9f3f60001c..ca35ab6629c765e33af7d22616a54cd67a308340 100644
--- a/openair1/PHY/phy_vars_ue.h
+++ b/openair1/PHY/phy_vars_ue.h
@@ -47,14 +47,6 @@ const short conjugate2[8]__attribute__((aligned(16))) = {1,-1,1,-1,1,-1,1,-1};
 #include "SIMULATION/ETH_TRANSPORT/vars.h"
 
 
-#ifndef OPENAIR2
-  unsigned char NB_eNB_INST=0;
-  uint16_t NB_UE_INST=0;
-  unsigned char NB_RN_INST=0;
-  unsigned char NB_INST=0;
-#endif
-
-
 int number_of_cards;
 
 
diff --git a/openair1/PHY/types_NB_IoT.h b/openair1/PHY/types_NB_IoT.h
index 6735092583ce8916ac19ea4966e9dd6a55a30b38..e41129169c7489d763ff071225de27f206632053 100644
--- a/openair1/PHY/types_NB_IoT.h
+++ b/openair1/PHY/types_NB_IoT.h
@@ -22,11 +22,6 @@
 #ifndef __openair_TYPES_NB_IOT_H__
 #define __openair_TYPES_NB_IOT_H__
 
-#ifdef USER_MODE
 #include <stdint.h>
-#else
-#include <linux/types.h>
-#endif
-
 
 #endif /*__openair_TYPES_NB_IOT_H__ */
diff --git a/openair1/SCHED_NR/phy_procedures_nr_gNB.c b/openair1/SCHED_NR/phy_procedures_nr_gNB.c
index 63cf6f2f2d34979013b7e1e315e44509b8a89626..1685e206ae45105829d69560cd7b12db850620c8 100644
--- a/openair1/SCHED_NR/phy_procedures_nr_gNB.c
+++ b/openair1/SCHED_NR/phy_procedures_nr_gNB.c
@@ -403,8 +403,6 @@ void nr_fill_indication(PHY_VARS_gNB *gNB, int frame, int slot_rx, int ULSCH_id,
 
   pthread_mutex_lock(&gNB->UL_INFO_mutex);
 
-  int timing_advance_update, cqi;
-  int sync_pos;
   NR_gNB_ULSCH_t                       *ulsch                 = gNB->ulsch[ULSCH_id][0];
   NR_UL_gNB_HARQ_t                     *harq_process          = ulsch->harq_processes[harq_pid];
   NR_gNB_SCH_STATS_t *stats=get_ulsch_stats(gNB,ulsch);
@@ -412,19 +410,20 @@ void nr_fill_indication(PHY_VARS_gNB *gNB, int frame, int slot_rx, int ULSCH_id,
   nfapi_nr_pusch_pdu_t *pusch_pdu = &harq_process->ulsch_pdu;
 
   //  pdu->data                              = gNB->ulsch[ULSCH_id+1][0]->harq_processes[harq_pid]->b;
-  sync_pos                               = nr_est_timing_advance_pusch(gNB, ULSCH_id); // estimate timing advance for MAC
+  int sync_pos = nr_est_timing_advance_pusch(gNB, ULSCH_id); // estimate timing advance for MAC
 
   // scale the 16 factor in N_TA calculation in 38.213 section 4.2 according to the used FFT size
   uint16_t bw_scaling = 16 * gNB->frame_parms.ofdm_symbol_size / 2048;
-  int sync_pos_rounded;
+
   // do some integer rounding to improve TA accuracy
+  int sync_pos_rounded;
   if (sync_pos > 0)
     sync_pos_rounded = sync_pos + (bw_scaling / 2) - 1;
   else
-    sync_pos_rounded = sync_pos - (bw_scaling / 2) - 1;
+    sync_pos_rounded = sync_pos - (bw_scaling / 2) + 1;
   if (stats) stats->sync_pos = sync_pos;
 
-  timing_advance_update = sync_pos_rounded / bw_scaling;
+  int timing_advance_update = sync_pos_rounded / bw_scaling;
 
   // put timing advance command in 0..63 range
   timing_advance_update += 31;
@@ -449,6 +448,7 @@ void nr_fill_indication(PHY_VARS_gNB *gNB, int frame, int slot_rx, int ULSCH_id,
 
   LOG_D(PHY, "Estimated SNR for PUSCH is = %f dB (ulsch_power %f, noise %f)\n", SNRtimes10/10.0,dB_fixed_x10(gNB->pusch_vars[ULSCH_id]->ulsch_power_tot)/10.0,dB_fixed_x10(gNB->pusch_vars[ULSCH_id]->ulsch_noise_power_tot)/10.0);
 
+  int cqi;
   if      (SNRtimes10 < -640) cqi=0;
   else if (SNRtimes10 >  635) cqi=255;
   else                        cqi=(640+SNRtimes10)/5;
diff --git a/openair1/SCHED_NR_UE/fapi_nr_ue_l1.h b/openair1/SCHED_NR_UE/fapi_nr_ue_l1.h
index 9b7b87a18c7e20ad3a9ca6f69acc77288f837a22..f00ce14b56cc8333e9e9102e6261688113f25000 100755
--- a/openair1/SCHED_NR_UE/fapi_nr_ue_l1.h
+++ b/openair1/SCHED_NR_UE/fapi_nr_ue_l1.h
@@ -44,4 +44,4 @@ int8_t nr_ue_scheduled_response(nr_scheduled_response_t *scheduled_response);
 int8_t nr_ue_phy_config_request(nr_phy_config_t *phy_config);
 
 
-#endif
\ No newline at end of file
+#endif
diff --git a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
index 5faa84193cbdac850230ec00737942d3d7a9e2ff..1a75ae71d16dac2c90a23f01cfbae638a51ae2bf 100644
--- a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
+++ b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
@@ -768,7 +768,8 @@ int nr_ue_pdsch_procedures(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, int gNB_
     uint16_t s1             = dlsch0_harq->nb_symbols;
     bool is_SI              = dlsch0->rnti_type == _SI_RNTI_;
 
-    LOG_D(PHY,"[UE %d] PDSCH type %d active in nr_slot_rx %d, harq_pid %d (%d), rb_start %d, nb_rb %d, symbol_start %d, nb_symbols %d, DMRS mask %x\n",ue->Mod_id,pdsch,nr_slot_rx,harq_pid,dlsch0_harq->status,pdsch_start_rb,pdsch_nb_rb,s0,s1,dlsch0_harq->dlDmrsSymbPos);
+    LOG_D(PHY,"[UE %d] PDSCH type %d active in nr_slot_rx %d, harq_pid %d (%d), rb_start %d, nb_rb %d, symbol_start %d, nb_symbols %d, DMRS mask %x\n",
+          ue->Mod_id,pdsch,nr_slot_rx,harq_pid,dlsch0_harq->status,pdsch_start_rb,pdsch_nb_rb,s0,s1,dlsch0_harq->dlDmrsSymbPos);
 
     for (m = s0; m < (s0 +s1); m++) {
       if (dlsch0_harq->dlDmrsSymbPos & (1 << m)) {
@@ -1739,8 +1740,8 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,
     for (uint16_t l=0; l<nb_symb_pdcch; l++) {
 
       // note: this only works if RBs for PDCCH are contigous!
-      LOG_D(PHY, "pdcch_channel_estimation: first_carrier_offset %d, BWPStart %d, coreset_start_rb %d\n",
-            fp->first_carrier_offset, pdcch_vars->pdcch_config[n_ss].BWPStart, coreset_start_rb);
+      LOG_D(PHY, "pdcch_channel_estimation: first_carrier_offset %d, BWPStart %d, coreset_start_rb %d, coreset_nb_rb %d\n",
+            fp->first_carrier_offset, pdcch_vars->pdcch_config[n_ss].BWPStart, coreset_start_rb, coreset_nb_rb);
 
       if (coreset_nb_rb > 0)
         nr_pdcch_channel_estimation(ue,
diff --git a/openair1/SIMULATION/LTE_PHY/gpib_send.c b/openair1/SIMULATION/LTE_PHY/gpib_send.c
index a8ae48cdfae32fb22fd476d5e9610ba7a3d0560f..06ce60da0f2772e2a641bc2fb3f6fdb5c496e01c 100644
--- a/openair1/SIMULATION/LTE_PHY/gpib_send.c
+++ b/openair1/SIMULATION/LTE_PHY/gpib_send.c
@@ -19,10 +19,10 @@
  *      contact@openairinterface.org
  */
 
-#include<stdio.h>
-#include<string.h>
-#include<gpib/ib.h>
-#include"gpib_send.h"
+#include <stdio.h>
+#include <string.h>
+#include <gpib/ib.h>
+#include "gpib_send.h"
 void gpib_send(unsigned int gpib_board, unsigned int gpib_device, char *command_string )
 {
   unsigned short addlist[2] = {gpib_device, NOADDR};
diff --git a/openair2/COMMON/mac_rrc_primitives.h b/openair2/COMMON/mac_rrc_primitives.h
index 5a45f2f19662698027edc215f6d435985c793bea..d258bb872ae4f7b026f0fae76a83534d1c47a5aa 100644
--- a/openair2/COMMON/mac_rrc_primitives.h
+++ b/openair2/COMMON/mac_rrc_primitives.h
@@ -22,9 +22,7 @@
 #ifndef __MAC_RRC_PRIMITIVES_H__
 #define __MAC_RRC_PRIMITIVES_H__
 
-#ifndef OPENAIR2_IN
-  #include "LAYER2/RLC/rlc.h"
-#endif
+#include "LAYER2/RLC/rlc.h"
 #include "COMMON/platform_types.h"
 #include "COMMON/platform_constants.h"
 #include "openair2/RRC/LTE/rrc_defs.h"
@@ -306,8 +304,6 @@ typedef struct {
 
 
 
-#ifndef OPENAIR2_IN
-
 typedef struct {  //RRC_INTERFACE_FUNCTIONS
   unsigned int Frame_index;
   unsigned short UE_index[NB_MODULES_MAX][NB_SIG_CNX_UE];
@@ -375,10 +371,6 @@ typedef struct {
 } MAC_RLC_XFACE;
 
 
-#endif
-
-
-
 //#define IDLE 0
 #define NEED_RADIO_CONFIG 3
 #define RADIO_CONFIG_TX 2
diff --git a/openair2/COMMON/platform_constants.h b/openair2/COMMON/platform_constants.h
index c56a31711a081d73465266abf3681cb94814427f..355f56f9c9356bfa13acebd645ae6191f7f62dbb 100644
--- a/openair2/COMMON/platform_constants.h
+++ b/openair2/COMMON/platform_constants.h
@@ -77,7 +77,7 @@
     #else
       #define MAX_MOBILES_PER_ENB         4
       #define MAX_MOBILES_PER_ENB_NB_IoT  4
-      #define MAX_MOBILES_PER_GNB         2//16
+      #define MAX_MOBILES_PER_GNB         4//16
       #define MAX_eNB                      2
       #define MAX_gNB                      2
     #endif
diff --git a/openair2/COMMON/rrm_config_structs.h b/openair2/COMMON/rrm_config_structs.h
deleted file mode 100644
index 9d060d102d1b3718349d9371f2aa4fda8384ce5c..0000000000000000000000000000000000000000
--- a/openair2/COMMON/rrm_config_structs.h
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-/*
-                               rrm_config_structs.h
-                             -------------------
-  AUTHOR  : Linus GASSER modified by Lionel GAUTHIER Raymond KNOPP
-  COMPANY : EURECOM
-  EMAIL   : linus.gasser@epfl.ch
-  EMAIL   : lionel.gauthier@eurecom.fr
-  EMAIL   : raymond.knopp@eurecom.fr
-
-
-
- ***************************************************************************/
-#ifdef OLD_RRC_CELLULAR
-#    ifndef __RRM_CONFIG_STRUCTS_H__
-#        define __RRM_CONFIG_STRUCTS_H__
-
-#        include "platform_types.h"
-#        include "platform_constants.h"
-#        include "rrm_constants.h"
-#        include "rlc.h"
-
-typedef volatile struct {
-  uint32_t             e_r;
-  int             timer_poll;
-  int             timer_poll_prohibit;
-  int             timer_discard;
-  int             timer_poll_periodic;
-  int             timer_status_prohibit;
-  int             timer_status_periodic;
-  int             timer_rst;
-  int             timer_mrw;
-  int             missing_pdu_indicator;
-  uint32_t             pdu_size;
-  //      int                                 in_sequence_delivery; // not implemented
-  uint8_t              max_rst;
-  uint8_t              max_dat;
-  uint16_t             poll_pdu;
-  uint16_t             poll_sdu;
-  uint8_t              poll_window;
-  uint32_t             tx_window_size;
-  uint32_t             rx_window_size;
-  uint8_t              max_mrw;
-  uint8_t              last_transmission_pdu_poll_trigger;
-  uint8_t              last_retransmission_pdu_poll_trigger;
-  enum RLC_SDU_DISCARD_MODE sdu_discard_mode;
-  uint32_t             send_mrw;
-} AM;
-
-typedef volatile struct {
-  uint32_t             e_r;
-  uint32_t             timer_discard;
-  uint32_t             sdu_discard_mode;
-  uint32_t             segmentation_indication;
-  uint32_t             delivery_of_erroneous_sdu;
-} TM;
-
-typedef volatile struct {
-  uint32_t             e_r;
-  uint32_t             timer_discard;
-  uint32_t             sdu_discard_mode;
-} UM;
-
-typedef volatile struct {
-  uint8_t              logch_identity;
-  uint8_t              mac_logch_priority;
-} MAP_INFO;
-
-typedef volatile struct {
-  uint32_t             rlc_mode;
-  AM              am;
-  TM              tm;
-  UM              um;
-} RLC_INFO;
-
-typedef volatile struct {
-  int             header_compression_algorithm;
-} PDCP_INFO;
-
-
-
-
-typedef volatile struct {
-  rb_type_t       rb_type;
-  RLC_INFO        rlc_info;
-  PDCP_INFO       pdcp_info;
-  uint16_t             rb_id;
-  // Added for OPENAIR MAC
-  //LCHAN_DESC      Lchan_desc;
-
-} RADIOBEARER;
-
-
-typedef volatile struct {
-  int             TIMER300;
-  int             TIMER302;
-  int             TIMER305;
-  int             TIMER307;
-  int             TIMER308;
-  int             TIMER312;
-  int             TIMER313;
-  int             TIMER314;
-  int             TIMER315;
-} L3TIMERS_;
-
-typedef volatile struct {
-  int             COUNTERN300;
-  int             COUNTERN302;
-  int             COUNTERN308;
-  int             COUNTERN312;
-  int             COUNTERN313;
-} L3COUNTERS_;
-
-
-typedef volatile struct {
-  int             MaxNumRemote;
-  L3TIMERS_       Timers;
-  L3COUNTERS_     Counters;
-} L3_;
-
-
-typedef volatile struct {
-  uint8_t              rrm_action;   // ACTION_NULL,ADD,REMOVE,MODIFY
-  uint8_t              rrm_element;  // rb,trch,cctrch
-  uint8_t              rrm_element_index;    // rb/trch/cctrch index
-} RRM_COMMAND_MT;
-
-typedef volatile struct {
-  uint8_t              rrm_action;   // ACTION_NULL,ADD,REMOVE,MODIFY
-  uint8_t              mobile;
-  uint8_t              rrm_element;  // rb,trch,cctrch
-  uint8_t              rrm_element_index;    // rb/trch/cctrch index
-} RRM_COMMAND_RG;
-
-
-typedef volatile struct {
-  uint8_t              nb_commands;
-  RRM_COMMAND_RG  rrm_commands[JRRM_MAX_COMMANDS_PER_TRANSACTION];
-
-
-  RADIOBEARER     bearer[MAX_RB_RG];
-  L3_             L3;
-
-} RG_CONFIG;
-
-typedef volatile struct {
-  uint8_t              nb_commands;
-  RRM_COMMAND_MT  rrm_commands[JRRM_MAX_COMMANDS_PER_TRANSACTION];
-
-  RADIOBEARER     bearer[MAX_RB_MOBILE];
-  L3_             L3;
-
-} MT_CONFIG;
-
-#        ifdef NODE_RG
-typedef volatile struct {
-  RG_CONFIG       rg_config;
-  MT_CONFIG       mt_config[MAX_MOBILES_PER_RG];
-} RRM_VARS;
-
-#        else
-/* NODE_RG */
-typedef volatile struct {
-  MT_CONFIG       mt_config[MAX_MANAGED_RG_PER_MOBILE];
-
-
-
-} RRM_VARS;
-#        endif
-/* NODE_RG */
-//typedef   MT_CONFIG MAIN_MOBILE ;
-//typedef   RG_CONFIG MAIN_RADIO_GATEWAY;
-
-#    endif
-#endif
diff --git a/openair2/GNB_APP/gnb_config.h b/openair2/GNB_APP/gnb_config.h
index 46102e44888f601a6a589b8f9fcba3e4265cc0a8..013997f4397e34bf748ccb59014308af4c3b9e53 100644
--- a/openair2/GNB_APP/gnb_config.h
+++ b/openair2/GNB_APP/gnb_config.h
@@ -42,10 +42,7 @@
 #include "ngap_messages_types.h"
 #include "f1ap_messages_types.h"
 
-#ifdef CMAKER
 #include "rrc_messages_types.h"
-#endif
-
 #include "intertask_interface.h"
 #include "RRC/NR/nr_rrc_defs.h"
 
diff --git a/openair2/LAYER2/MAC/defs_NB_IoT.h b/openair2/LAYER2/MAC/defs_NB_IoT.h
index 78524e104d2895eca07b67d3eff9dd453bac5d8f..d4945f0182d5b3ddfd0bbb81b554a27b59d75b20 100644
--- a/openair2/LAYER2/MAC/defs_NB_IoT.h
+++ b/openair2/LAYER2/MAC/defs_NB_IoT.h
@@ -9,11 +9,9 @@
  */
 #ifndef __LAYER2_MAC_DEFS_NB_IOT_H__
 #define __LAYER2_MAC_DEFS_NB_IOT_H__
-#ifdef USER_MODE
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#endif
 //#include "COMMON/openair_defs.h"
 #include "COMMON/platform_constants.h"
 #include "COMMON/mac_rrc_primitives.h"
diff --git a/openair2/LAYER2/MAC/mac_vars.h b/openair2/LAYER2/MAC/mac_vars.h
index bd25bd604748080d9210868bd8a40c8b53c4089a..3b51820171e39ba2c3ec03ef26ab6289c60caa9c 100644
--- a/openair2/LAYER2/MAC/mac_vars.h
+++ b/openair2/LAYER2/MAC/mac_vars.h
@@ -105,13 +105,11 @@ eNB_ULSCH_INFO eNB_ulsch_info[NUMBER_OF_eNB_MAX][MAX_NUM_CCs][MAX_MOBILES_PER_EN
 eNB_DLSCH_INFO eNB_dlsch_info[NUMBER_OF_eNB_MAX][MAX_NUM_CCs][MAX_MOBILES_PER_ENB]; // eNBxUE = 8x8
 
 
-#ifdef OPENAIR2
   unsigned char NB_eNB_INST = 0;
   uint16_t NB_UE_INST = 0;
   uint16_t NB_THREAD_INST = 0;
   unsigned char NB_RN_INST = 0;
   unsigned char NB_INST = 0;
-#endif
 
 
 DCI0_5MHz_TDD_1_6_t UL_alloc_pdu;
diff --git a/openair2/LAYER2/MAC/ue_procedures.c b/openair2/LAYER2/MAC/ue_procedures.c
index 9ae8f82a00cd2d0363c4cb4c644bd36ce2051c5e..21d349ea5284c468bfb27e08f772849e53d4431d 100644
--- a/openair2/LAYER2/MAC/ue_procedures.c
+++ b/openair2/LAYER2/MAC/ue_procedures.c
@@ -77,13 +77,6 @@ static int mbms_mch_i=0;
 //static int num_msi_per_CSA[28];
 
 
-/*
- *
-#ifndef USER_MODE
-#define msg debug_msg
-#endif
- */
-
 mapping BSR_names[] = {
   {"NONE", 0},
   {"SHORT BSR", 1},
@@ -1251,65 +1244,6 @@ int ue_query_mch_fembms(module_id_t module_idP, uint8_t CC_id, uint32_t frameP,
   }
 
 
-
-  
-#ifdef OLD
-          // Acount for sf_allocable in CSA
-        int num_sf_alloc = 0;
-
-        for (l = 0; l < 8; l++) {
-          if (UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[l] == NULL)
-            continue;
-
-          if (UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[l]->subframeAllocation.present != LTE_MBSFN_SubframeConfig__subframeAllocation_PR_oneFrame)
-            continue;
-
-          uint32_t common_mbsfn_SubframeConfig = UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[l]->subframeAllocation.choice.oneFrame.buf[0];
-
-
-          for (j = 0; j < 6; j++)
-            num_sf_alloc += ((common_mbsfn_SubframeConfig & (0x80 >> j)) == (0x80 >> j));
-            //num_sf_alloc=1;
-        }
-	
-	num_sf_alloc = 10;
-
-        num_non_mbsfn_SubframeConfig = (UE_mac_inst[module_idP].non_mbsfn_SubframeConfig->subframeAllocation_r14.buf[0]<<1 | UE_mac_inst[module_idP].non_mbsfn_SubframeConfig->subframeAllocation_r14.buf[0]>>7);
-	int ones=0;
-	for(j=0; j < 16; j++){
-		if(num_non_mbsfn_SubframeConfig & 1)
-			ones++;
-		num_non_mbsfn_SubframeConfig>>=1;
-	}
-
-        for (l = 0; l < 28; l++) {
-          if (UE_mac_inst[module_idP].pmch_stop_mtch[l] >= 1/*num_sf_alloc*/) {
-            if (UE_mac_inst[module_idP].pmch_stop_mtch[l] != 2047) {
-              if (UE_mac_inst[module_idP].pmch_Config[UE_mac_inst[module_idP].msi_pmch] != NULL){
-                mtch_mcs = UE_mac_inst[module_idP].pmch_Config[UE_mac_inst[module_idP].msi_pmch]->dataMCS_r9;
-    	       //int common_mbsfn_alloc_offset = UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[0]->radioframeAllocationOffset;
-               long common_mbsfn_period  = 1 << UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[0]->radioframeAllocationPeriod;
-               long commonSF_AllocPeriod = 4 << UE_mac_inst[module_idP].commonSF_AllocPeriod_r9;
-               if(UE_mac_inst[module_idP].common_num_sf_alloc >= UE_mac_inst[module_idP].pmch_stop_mtch[l]){
-                       //LOG_E(MAC,"Attemp to UE_mac_inst[module_idP].common_num_sf_alloc %d\n",UE_mac_inst[module_idP].common_num_sf_alloc);
-
-                       mtch_mcs = -1;
-               }/*else
-                       OG_W(MAC,"Attemp to UE_mac_inst[module_idP].common_num_sf_alloc %d\n",UE_mac_inst[module_idP].common_num_sf_alloc);*/
-                       LOG_D(MAC,"Attemp to UE_mac_inst[module_idP].common_num_sf_alloc %d num_sf_alloc %d commonSF_AllocPeriod %ld, common_mbsfn_period %ld num_non_mbsfn_SubframeConfig %x ones %d\n",UE_mac_inst[module_idP].common_num_sf_alloc,num_sf_alloc, commonSF_AllocPeriod,common_mbsfn_period,num_non_mbsfn_SubframeConfig,ones);
-                UE_mac_inst[module_idP].common_num_sf_alloc++;
-                UE_mac_inst[module_idP].common_num_sf_alloc = UE_mac_inst[module_idP].common_num_sf_alloc % (num_sf_alloc * commonSF_AllocPeriod / common_mbsfn_period-(1+ones)*(commonSF_AllocPeriod/4)); //TODO
-              }
-              else
-                mtch_mcs = -1;
-
-              mch_lcid = (uint8_t)l;
-              break;
-            }
-          }
-        }
-#endif
-
 {
  	 // Acount for sf_allocable in Common SF Allocation
  	 int num_sf_alloc = 0;
@@ -1869,49 +1803,7 @@ int ue_query_mch(module_id_t module_idP, uint8_t CC_id, uint32_t frameP, uint32_
 	//}
   }
 
-#ifdef OLD
-        // Acount for sf_allocable in CSA
-        int num_sf_alloc = 0;
 
-        for (l = 0; l < 8; l++) {
-          if (UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[l] == NULL)
-            continue;
-
-          if (UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[l]->subframeAllocation.present != LTE_MBSFN_SubframeConfig__subframeAllocation_PR_oneFrame)
-            continue;
-
-          uint32_t common_mbsfn_SubframeConfig = UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[l]->subframeAllocation.choice.oneFrame.buf[0];
-
-          for (j = 0; j < 6; j++)
-            num_sf_alloc += ((common_mbsfn_SubframeConfig & (0x80 >> j)) == (0x80 >> j));
-	    //num_sf_alloc=1;
-        }
-
-        for (l = 0; l < 28; l++) {
-          if (UE_mac_inst[module_idP].pmch_stop_mtch[l] >= 1/*num_sf_alloc*/) {
-            if (UE_mac_inst[module_idP].pmch_stop_mtch[l] != 2047) {
-              if (UE_mac_inst[module_idP].pmch_Config[UE_mac_inst[module_idP].msi_pmch] != NULL){
-                mtch_mcs = UE_mac_inst[module_idP].pmch_Config[UE_mac_inst[module_idP].msi_pmch]->dataMCS_r9;
-               long common_mbsfn_period  = 1 << UE_mac_inst[module_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[0]->radioframeAllocationPeriod;
-               long commonSF_AllocPeriod = 4 << UE_mac_inst[module_idP].commonSF_AllocPeriod_r9;
-               if(UE_mac_inst[module_idP].common_num_sf_alloc >= UE_mac_inst[module_idP].pmch_stop_mtch[l]){
-		       //LOG_E(MAC,"Attemp to UE_mac_inst[module_idP].common_num_sf_alloc %d\n",UE_mac_inst[module_idP].common_num_sf_alloc);
-
-                       mtch_mcs = -1;
-	       }/*else
-		       LOG_W(MAC,"Attemp to UE_mac_inst[module_idP].common_num_sf_alloc %d\n",UE_mac_inst[module_idP].common_num_sf_alloc);*/
-               	UE_mac_inst[module_idP].common_num_sf_alloc++;
-           	UE_mac_inst[module_idP].common_num_sf_alloc = UE_mac_inst[module_idP].common_num_sf_alloc % (num_sf_alloc * commonSF_AllocPeriod / common_mbsfn_period);
-	      }
-              else
-                mtch_mcs = -1;
-
-              mch_lcid = (uint8_t)l;
-              break;
-            }
-          }
-        }
-#endif
 
 {
  	 // Acount for sf_allocable in Common SF Allocation
diff --git a/openair2/LAYER2/NR_MAC_UE/config_ue.c b/openair2/LAYER2/NR_MAC_UE/config_ue.c
index 91dfe1e9d204679678870f4efa997575cc1697ba..9f2817cd0dff9b80399f3cb446975c5bf613c6f6 100644
--- a/openair2/LAYER2/NR_MAC_UE/config_ue.c
+++ b/openair2/LAYER2/NR_MAC_UE/config_ue.c
@@ -614,7 +614,7 @@ void configure_ss_coreset(NR_UE_MAC_INST_t *mac,
   struct NR_PDCCH_Config__searchSpacesToAddModList *searchSpacesToAddModList = pdcch_Config->choice.setup->searchSpacesToAddModList;
   AssertFatal(searchSpacesToAddModList != NULL, "searchSpacesToAddModList is null\n");
   AssertFatal(searchSpacesToAddModList->list.count > 0, "list of UE specifically configured Search Spaces is empty\n");
-  AssertFatal(searchSpacesToAddModList->list.count < FAPI_NR_MAX_SS_PER_CORESET, "too many searchpaces per coreset %d\n", searchSpacesToAddModList->list.count);
+  AssertFatal(searchSpacesToAddModList->list.count < FAPI_NR_MAX_SS, "too many searchpaces per coreset %d\n", searchSpacesToAddModList->list.count);
 
   // check available Search Spaces in the searchSpacesToAddModList and pass to MAC
   // note: the network configures at most 10 Search Spaces per BWP per cell (including UE-specific and common Search Spaces).
diff --git a/openair2/LAYER2/NR_MAC_UE/mac_defs.h b/openair2/LAYER2/NR_MAC_UE/mac_defs.h
index 56d1d1716faca5057146995d0de2aada8df5791d..a3c1ea024036c25a133e189c000af771dce3ced6 100644
--- a/openair2/LAYER2/NR_MAC_UE/mac_defs.h
+++ b/openair2/LAYER2/NR_MAC_UE/mac_defs.h
@@ -367,7 +367,7 @@ typedef struct {
   NR_BWP_Downlink_t               *DLbwp[MAX_NUM_BWP_UE];
   NR_BWP_Uplink_t                 *ULbwp[MAX_NUM_BWP_UE];
   NR_ControlResourceSet_t         *coreset[MAX_NUM_BWP_UE][FAPI_NR_MAX_CORESET_PER_BWP];
-  NR_SearchSpace_t                *SSpace[MAX_NUM_BWP_UE][FAPI_NR_MAX_SS_PER_CORESET];
+  NR_SearchSpace_t                *SSpace[MAX_NUM_BWP_UE][FAPI_NR_MAX_SS];
 
   lte_frame_type_t frame_type;
 
diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ue_dci_configuration.c b/openair2/LAYER2/NR_MAC_UE/nr_ue_dci_configuration.c
index 209ed8c513dc1dbbd9e89a174c8299a3b0fda5b7..8b01536540dc923eb32c55712669b22c97f9a4ca 100644
--- a/openair2/LAYER2/NR_MAC_UE/nr_ue_dci_configuration.c
+++ b/openair2/LAYER2/NR_MAC_UE/nr_ue_dci_configuration.c
@@ -76,7 +76,6 @@ void fill_dci_search_candidates(NR_SearchSpace_t *ss,fapi_nr_dl_config_dci_dl_pd
 void config_dci_pdu(NR_UE_MAC_INST_t *mac, fapi_nr_dl_config_dci_dl_pdu_rel15_t *rel15, fapi_nr_dl_config_request_t *dl_config, int rnti_type, int ss_id){
 
   uint16_t monitoringSymbolsWithinSlot = 0;
-  uint8_t coreset_id = 1;
   int sps = 0;
 
   AssertFatal(mac->scc == NULL || mac->scc_SIB == NULL, "both scc and scc_SIB cannot be non-null\n");
@@ -97,11 +96,23 @@ void config_dci_pdu(NR_UE_MAC_INST_t *mac, fapi_nr_dl_config_dci_dl_pdu_rel15_t
   NR_SearchSpace_t *ss;
   NR_ControlResourceSet_t *coreset;
   if(ss_id>=0) {
-    ss = mac->SSpace[dl_bwp_id][ss_id-1];
+    if (rnti_type == NR_RNTI_TC || rnti_type == NR_RNTI_RA) {
+      ss = mac->ra.ss;
+      AssertFatal(mac->ra.ss->searchSpaceId == ss_id,"Search Space id %d does not correspond to the one in ra->ss %ld for RA procedures\n",
+                  ss_id,mac->ra.ss->searchSpaceId);
+    }
+    else
+      ss = mac->SSpace[dl_bwp_id][ss_id-1];
+  }
+  else
+    ss = mac->search_space_zero;
+
+  uint8_t coreset_id = *ss->controlResourceSetId;
+
+  if(coreset_id>0) {
     coreset = mac->coreset[dl_bwp_id][coreset_id - 1];
     rel15->coreset.CoreSetType = NFAPI_NR_CSET_CONFIG_PDCCH_CONFIG;
   } else {
-    ss = mac->search_space_zero;
     coreset = mac->coreset0;
     if(rnti_type == NR_RNTI_SI) {
       rel15->coreset.CoreSetType = NFAPI_NR_CSET_CONFIG_MIB_SIB1;
@@ -264,7 +275,7 @@ void ue_dci_configuration(NR_UE_MAC_INST_t *mac, fapi_nr_dl_config_request_t *dl
 
   // loop over all available SS for bwp_id
   if (bwpd) {
-      for (ss_id = 1; ss_id <= FAPI_NR_MAX_SS_PER_CORESET && mac->SSpace[bwp_id][ss_id-1] != NULL; ss_id++){
+      for (ss_id = 1; ss_id <= FAPI_NR_MAX_SS && mac->SSpace[bwp_id][ss_id-1] != NULL; ss_id++){
 	LOG_D(NR_MAC, "[DCI_CONFIG] ss_id %d\n",ss_id);
 	NR_SearchSpace_t *ss = mac->SSpace[bwp_id][ss_id-1];
         AssertFatal(ss_id == ss->searchSpaceId,"SS IDs don't correspond\n");
diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c b/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
index 15ead15014666f17e9ce45201d0c95e1339e589e..a0f64f67ee587c04f8b613f1c57d383f3a2a0a9f 100644
--- a/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
+++ b/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
@@ -929,7 +929,7 @@ NR_UE_L2_STATE_t nr_ue_scheduler(nr_downlink_indication_t *dl_info, nr_uplink_in
         rel15->dci_format_options[0] = NR_DL_DCI_FORMAT_1_0;
         if (mac->ra.ra_state == WAIT_CONTENTION_RESOLUTION)
           rel15->dci_format_options[1] = NR_UL_DCI_FORMAT_0_0; // msg3 retransmission
-        config_dci_pdu(mac, rel15, dl_config, mac->ra.ra_state == WAIT_RAR ? NR_RNTI_RA : NR_RNTI_TC , -1);
+        config_dci_pdu(mac, rel15, dl_config, mac->ra.ra_state == WAIT_RAR ? NR_RNTI_RA : NR_RNTI_TC , mac->ra.ss->searchSpaceId);
         fill_dci_search_candidates(mac->ra.ss, rel15);
         dl_config->number_pdus = 1;
         LOG_D(MAC,"mac->cg %p: Calling fill_scheduled_response rnti %x, type0_pdcch, num_pdus %d\n",mac->cg,rel15->rnti,dl_config->number_pdus);
diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
index f35de9e28b855bdc7267956309c751edebffa76a..df25b085e6684222ae124d2be21b0d4e7841cc3c 100644
--- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
+++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
@@ -60,22 +60,21 @@ uint16_t get_ssboffset_pointa(NR_ServingCellConfigCommon_t *scc,const long band)
   int ratio;
   switch (*scc->ssbSubcarrierSpacing) {
     case NR_SubcarrierSpacing_kHz15:
-      AssertFatal(band <= 79,
+      AssertFatal(band <= 95,
                   "Band %ld is not possible for SSB with 15 kHz SCS\n",
                   band);
-      if (band < 77)  // below 3GHz
-        ratio = 3;    // NRARFCN step is 5 kHz
-      else
-        ratio = 1;  // NRARFCN step is 15 kHz
+      // no band available above 3GHz using 15kHz
+      ratio = 3;  // NRARFCN step is 5 kHz
       break;
     case NR_SubcarrierSpacing_kHz30:
-      AssertFatal(band <= 79,
-                  "Band %ld is not possible for SSB with 15 kHz SCS\n",
+      AssertFatal(band <= 96,
+                  "Band %ld is not possible for SSB with 30 kHz SCS\n",
                   band);
-      if (band < 77)  // below 3GHz
-        ratio = 6;    // NRARFCN step is 5 kHz
+      if (band == 46 || band == 48 || band == 77 ||
+          band == 78 || band == 79 || band == 96)  // above 3GHz
+        ratio = 2;    // NRARFCN step is 15 kHz
       else
-        ratio = 2;  // NRARFCN step is 15 kHz
+        ratio = 6;  // NRARFCN step is 5 kHz
       break;
     case NR_SubcarrierSpacing_kHz120:
       AssertFatal(band >= 257,
diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
index eccc78a95cdc75e1e02704a2f115abe033ba52c6..a5fd6a3c91f3574106d221798e6c8899654150cf 100644
--- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
+++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
@@ -446,7 +446,7 @@ void nr_store_dlsch_buffer(module_id_t module_id,
 
     if (sched_ctrl->num_total_bytes == 0
         && !sched_ctrl->ta_apply) /* If TA should be applied, give at least one RB */
-      return;
+      continue;
 
     LOG_D(NR_MAC,
           "[%s][%d.%d], %s%d->DLSCH, RLC status %d bytes TA %d\n",
diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp.h b/openair2/LAYER2/PDCP_v10.1.0/pdcp.h
index 0c3dd2f04fed4798988e4cab59ef53d2cc29b8d4..9d9224d660493d43686cdb974f6a0b2702c854b3 100644
--- a/openair2/LAYER2/PDCP_v10.1.0/pdcp.h
+++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp.h
@@ -67,9 +67,7 @@ typedef struct {
 } pdcp_params_t;
 
 
-#ifndef PDCP_USE_NETLINK
-  #define PDCP_USE_NETLINK          ( get_pdcp_optmask() & PDCP_USE_NETLINK_BIT)
-#endif
+#define PDCP_USE_NETLINK          ( get_pdcp_optmask() & PDCP_USE_NETLINK_BIT)
 #define LINK_ENB_PDCP_TO_IP_DRIVER  ( get_pdcp_optmask() & LINK_ENB_PDCP_TO_IP_DRIVER_BIT)
 #define LINK_ENB_PDCP_TO_GTPV1U     ( get_pdcp_optmask() & LINK_ENB_PDCP_TO_GTPV1U_BIT)
 #define UE_NAS_USE_TUN              ( get_pdcp_optmask() & UE_NAS_USE_TUN_BIT)
@@ -501,7 +499,6 @@ typedef struct {
 #define REORDERING_WINDOW_SN_7BIT 64
 #define REORDERING_WINDOW_SN_12BIT 2048
 
-extern signed int             pdcp_2_nas_irq;
 extern pdcp_stats_t              UE_pdcp_stats[MAX_MOBILES_PER_ENB];
 extern pdcp_stats_t              eNB_pdcp_stats[NUMBER_OF_eNB_MAX];
 
diff --git a/openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm_init.h b/openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm_init.h
index c6ab681819dbd10df750d388df57f19ca3443aae..57e2116a724969c37e538659628791263cb6ebb8 100644
--- a/openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm_init.h
+++ b/openair2/LAYER2/RLC/TM_v9.3.0/rlc_tm_init.h
@@ -37,7 +37,6 @@
 //-----------------------------------------------------------------------------
 #        include "rlc_tm_entity.h"
 #        include "mem_block.h"
-//#        include "rrm_config_structs.h"
 #        include "rlc_tm_structs.h"
 //#        include "rlc.h"
 #        include "platform_types.h"
diff --git a/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_control_primitives.c b/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_control_primitives.c
index 940740943e06b4da2125a9f88cd257f3e523ebf3..05c3423f76c36021710da06dd6931f8fe2897f59 100644
--- a/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_control_primitives.c
+++ b/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_control_primitives.c
@@ -27,7 +27,6 @@
 #include "rlc_um.h"
 #include "rlc_primitives.h"
 #include "list.h"
-#include "rrm_config_structs.h"
 #include "LAYER2/MAC/mac_extern.h"
 #include "common/utils/LOG/log.h"
 
diff --git a/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_very_simple_test.h b/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_very_simple_test.h
index 598518f1c864b92e877dd2a4d1b81b531e2aae8d..b762a4fdb45f23feee8f3cf83c77bb08cd1647d1 100644
--- a/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_very_simple_test.h
+++ b/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um_very_simple_test.h
@@ -33,7 +33,6 @@
 //-----------------------------------------------------------------------------
 #        include "rlc_um_entity.h"
 #        include "mem_block.h"
-#        include "rrm_config_structs.h"
 #        include "rlc_um_structs.h"
 #        include "rlc_um_constants.h"
 //-----------------------------------------------------------------------------
diff --git a/openair2/LAYER2/openair2_proc.c b/openair2/LAYER2/openair2_proc.c
index 3d2c06f4893c5fa457bb068922a02d5765845bdc..7ffdc7519561372650f78e1276e47a5da14d19b7 100644
--- a/openair2/LAYER2/openair2_proc.c
+++ b/openair2/LAYER2/openair2_proc.c
@@ -362,264 +362,5 @@ int dump_eNB_l2_stats(char *buffer, int length) {
 
     return len + 1 /* SR: for trailing \0 */;
 }
-#ifdef PROC
-int openair2_stats_read(char *buffer, char **my_buffer, off_t off, int length) {
-    int len = 0,fg,Overhead, Sign;
-    unsigned int i,j,k,kk;
-    unsigned int Mod_id = 0,CH_index;
-    unsigned int tx_pdcp_sdu;
-    unsigned int tx_pdcp_sdu_discarded;
-    unsigned int tx_retransmit_pdu_unblock;
-    unsigned int tx_retransmit_pdu_by_status;
-    unsigned int tx_retransmit_pdu;
-    unsigned int tx_data_pdu;
-    unsigned int tx_control_pdu;
-    unsigned int rx_sdu;
-    unsigned int rx_error_pdu;
-    unsigned int rx_data_pdu;
-    unsigned int rx_data_pdu_out_of_window;
-    unsigned int rx_control_pdu;
 
-    //    if (mac_xface->is_cluster_head == 0) {
-    for (k=0; k<NB_INST; k++) {
-        if (Mac_rlc_xface->Is_cluster_head[k] == 0) {
-#ifndef PHY_EMUL_ONE_MACHINE
-            Mod_id=k-NB_CH_INST;
-            len+=sprintf(&buffer[len],"UE TTI: %d\n",Mac_rlc_xface->frame);
-
-            for (CH_index = 0; CH_index<NB_CNX_UE; CH_index++) {
-                if (UE_mac_inst[Mod_id].Dcch_lchan[CH_index].Active==1) {
-                    len+=sprintf(&buffer[len],"CH %u: Wideband SINR %d dB---\n",
-                                 CH_index,UE_mac_inst[Mod_id].Def_meas[CH_index].Wideband_sinr);
-                    len+=sprintf(&buffer[len],"CH %u: Subband SINR (dB) :",
-                                 CH_index);
-
-                    for (fg=0; fg<NUMBER_OF_MEASUREMENT_SUBBANDS; fg++) {
-                        len+=sprintf(&buffer[len],"%d ",UE_mac_inst[Mod_id].Def_meas[CH_index].Sinr_meas[0][fg]);
-                    }
-
-                    len+=sprintf(&buffer[len],"\n");
-                    len+=sprintf(&buffer[len],"BCCH %d, NB_RX_MAC = %d (%d errors)\n",
-                                 UE_mac_inst[Mod_id].Bcch_lchan[CH_index].Lchan_info.Lchan_id.Index,
-                                 UE_mac_inst[Mod_id].Bcch_lchan[CH_index].Lchan_info.NB_RX,
-                                 UE_mac_inst[Mod_id].Bcch_lchan[CH_index].Lchan_info.NB_RX_ERRORS);
-                    len+=sprintf(&buffer[len],"CCCH %d, NB_RX_MAC = %d (%d errors)\n",
-                                 UE_mac_inst[Mod_id].Ccch_lchan[CH_index].Lchan_info.Lchan_id.Index,
-                                 UE_mac_inst[Mod_id].Ccch_lchan[CH_index].Lchan_info.NB_RX,
-                                 UE_mac_inst[Mod_id].Ccch_lchan[CH_index].Lchan_info.NB_RX_ERRORS);
-                    len+=sprintf(&buffer[len],"LCHAN %d (DCCH), NB_TX_MAC = %d (%d bits/TTI, %d kbits/sec), NB_RX_MAC = %d (%d errors)\n",
-                                 UE_mac_inst[Mod_id].Dcch_lchan[CH_index].Lchan_info.Lchan_id.Index,
-                                 UE_mac_inst[Mod_id].Dcch_lchan[CH_index].Lchan_info.NB_TX,
-                                 UE_mac_inst[Mod_id].Dcch_lchan[CH_index].Lchan_info.output_rate,
-                                 (10*UE_mac_inst[Mod_id].Dcch_lchan[CH_index].Lchan_info.output_rate)>>5,
-                                 UE_mac_inst[Mod_id].Dcch_lchan[CH_index].Lchan_info.NB_RX,
-                                 UE_mac_inst[Mod_id].Dcch_lchan[CH_index].Lchan_info.NB_RX_ERRORS);
-
-                    for(i=1; i<NB_RAB_MAX; i++) {
-                        if (UE_mac_inst[Mod_id].Dtch_lchan[i][CH_index].Active==1) {
-                            Overhead=UE_mac_inst[Mod_id].Dtch_lchan[i][CH_index].Lchan_info.output_rate - Pdcp_stats_tx_rate[k][CH_index][i];
-
-                            if(Overhead<0) {
-                                Overhead=-Overhead;
-                                Sign=-1;
-                            } else {
-                                Sign=1;
-                            }
-
-                            len+=sprintf(&buffer[len],
-                                         "[PDCP]LCHAN %d: NB_TX = %d ,Tx_rate =(%d bits/TTI ,%d Kbits/s), NB_RX = %d ,Rx_rate =(%d bits/TTI ,%d Kbits/s) , LAYER2 TX OVERHEAD: %d Kbits/s\n",
-                                         UE_mac_inst[Mod_id].Dtch_lchan[i][CH_index].Lchan_info.Lchan_id.Index,
-                                         Pdcp_stats_tx[k][CH_index][i],
-                                         Pdcp_stats_tx_rate[k][CH_index][i],
-                                         (10*Pdcp_stats_tx_rate[k][CH_index][i])>>5,
-                                         Pdcp_stats_rx[k][CH_index][i],
-                                         Pdcp_stats_rx_rate[k][CH_index][i],
-                                         (10*Pdcp_stats_rx_rate[k][CH_index][i])>>5,
-                                         Sign*(10*Overhead)>>5);
-                            int status =  rlc_stat_req     (k,
-                                                            UE_mac_inst[Mod_id].Dtch_lchan[i][CH_index].Lchan_info.Lchan_id.Index,
-                                                            &tx_pdcp_sdu,
-                                                            &tx_pdcp_sdu_discarded,
-                                                            &tx_retransmit_pdu_unblock,
-                                                            &tx_retransmit_pdu_by_status,
-                                                            &tx_retransmit_pdu,
-                                                            &tx_data_pdu,
-                                                            &tx_control_pdu,
-                                                            &rx_sdu,
-                                                            &rx_error_pdu,
-                                                            &rx_data_pdu,
-                                                            &rx_data_pdu_out_of_window,
-                                                            &rx_control_pdu) ;
-
-                            if (status == RLC_OP_STATUS_OK) {
-                                len+=sprintf(&buffer[len],"RLC LCHAN %d, NB_SDU_TO_TX = %u\tNB_SDU_DISC %u\tNB_RX_SDU %u\n",
-                                             UE_mac_inst[Mod_id].Dtch_lchan[i][CH_index].Lchan_info.Lchan_id.Index,
-                                             tx_pdcp_sdu,
-                                             tx_pdcp_sdu_discarded,
-                                             rx_sdu);
-                                len+=sprintf(&buffer[len],"RLC LCHAN %d, NB_TB_TX_DATA = %u\tNB_TB_TX_CONTROL %u\tNB_TX_TB_RETRANS %u",
-                                             UE_mac_inst[Mod_id].Dtch_lchan[i][CH_index].Lchan_info.Lchan_id.Index,
-                                             tx_data_pdu,
-                                             tx_control_pdu,
-                                             tx_retransmit_pdu);
-                                len+=sprintf(&buffer[len],"\tRLC LCHAN %d, NB_TX_TB_RETRANS_BY_STATUS = %u\tNB_TX_TB_RETRANS_PADD %u\n",
-                                             UE_mac_inst[Mod_id].Dtch_lchan[i][CH_index].Lchan_info.Lchan_id.Index,
-                                             tx_retransmit_pdu_by_status,
-                                             tx_retransmit_pdu_unblock);
-                                len+=sprintf(&buffer[len],"RLC LCHAN %d, NB_RX_DATA = %u\tNB_RX_TB_OUT_WIN %u\tNB_RX_TB_CORRUPT %u\n",
-                                             UE_mac_inst[Mod_id].Dtch_lchan[i][CH_index].Lchan_info.Lchan_id.Index,
-                                             rx_data_pdu,
-                                             rx_data_pdu_out_of_window,
-                                             rx_error_pdu);
-                            }
-
-                            len+=sprintf(&buffer[len],"[MAC]: LCHAN %d, NB_TX_MAC = %d (%d bits/TTI, %d kbits/s), NB_RX_MAC = %d (%d errors)\n",
-                                         UE_mac_inst[Mod_id].Dtch_lchan[i][CH_index].Lchan_info.Lchan_id.Index,
-                                         UE_mac_inst[Mod_id].Dtch_lchan[i][CH_index].Lchan_info.NB_TX,
-                                         UE_mac_inst[Mod_id].Dtch_lchan[i][CH_index].Lchan_info.output_rate,
-                                         (10*UE_mac_inst[Mod_id].Dtch_lchan[i][CH_index].Lchan_info.output_rate)>>5,
-                                         UE_mac_inst[Mod_id].Dtch_lchan[i][CH_index].Lchan_info.NB_RX,
-                                         UE_mac_inst[Mod_id].Dtch_lchan[i][CH_index].Lchan_info.NB_RX_ERRORS);
-                            len+=sprintf(&buffer[len],"        TX per TB: ");
-
-                            for(kk=0; kk<MAX_NUMBER_TB_PER_LCHAN/2; kk++) {
-                                len+=sprintf(&buffer[len],"%d . ",UE_mac_inst[Mod_id].Dtch_lchan[i][CH_index].Lchan_info.NB_TX_TB[kk]);
-                            }
-
-                            len+=sprintf(&buffer[len],"\n");
-                            len+=sprintf(&buffer[len],"        RXerr per TB: ");
-
-                            for(kk=0; kk<MAX_NUMBER_TB_PER_LCHAN/2; kk++)
-                                len+=sprintf(&buffer[len],"%d/%d . ",UE_mac_inst[Mod_id].Dtch_lchan[i][CH_index].Lchan_info.NB_RX_ERRORS_TB[kk],
-                                             UE_mac_inst[Mod_id].Dtch_lchan[i][CH_index].Lchan_info.NB_RX_TB[kk]);
-
-                            len+=sprintf(&buffer[len],"\n");
-                        }
-                    }
-                }
-            }
-
-#endif //PHY_EMUL_ONE_MACHINE
-        } else if(Mac_rlc_xface->Is_cluster_head[k] ==1) {
-            Mod_id=k;
-            len+=sprintf(&buffer[len],
-                         "------------------------------------------------------------------- TTI: %d------------------------------------------------------------------\n",
-                         Mac_rlc_xface->frame);
-
-            for(i=1; i<=NB_CNX_CH; i++) {
-                if (CH_mac_inst[Mod_id].Dcch_lchan[i].Active==1) {
-                    len+=sprintf(&buffer[len],"\nMR index %u: DL SINR (feedback) %d dB, CQI: %s\n\n",
-                                 i,//CH_rrc_inst[Mod_id].Info.UE_info[i].L2_id[0],
-                                 CH_mac_inst[Mod_id].Def_meas[i].Wideband_sinr,
-                                 print_cqi(CH_mac_inst[Mod_id].Def_meas[i].cqi));
-                    len+=sprintf(&buffer[len],
-                                 "[MAC] LCHAN %d (DCCH), NB_TX_MAC= %d (%d bits/TTI, %d kbits/s), NB_RX_MAC= %d (errors %d, sacch errors %d, sach errors %d, sach_missing %d)\n\n",
-                                 CH_mac_inst[Mod_id].Dcch_lchan[i].Lchan_info.Lchan_id.Index,
-                                 CH_mac_inst[Mod_id].Dcch_lchan[i].Lchan_info.NB_TX,
-                                 CH_mac_inst[Mod_id].Dcch_lchan[i].Lchan_info.output_rate,
-                                 (10*CH_mac_inst[Mod_id].Dcch_lchan[i].Lchan_info.output_rate)>>5,
-                                 CH_mac_inst[Mod_id].Dcch_lchan[i].Lchan_info.NB_RX,
-                                 CH_mac_inst[Mod_id].Dcch_lchan[i].Lchan_info.NB_RX_ERRORS,
-                                 CH_mac_inst[Mod_id].Dcch_lchan[i].Lchan_info.NB_RX_SACCH_ERRORS,
-                                 CH_mac_inst[Mod_id].Dcch_lchan[i].Lchan_info.NB_RX_SACH_ERRORS,
-                                 CH_mac_inst[Mod_id].Dcch_lchan[i].Lchan_info.NB_RX_SACH_MISSING);
-
-                    for(j=0; j<NB_RAB_MAX; j++) {
-                        if (CH_mac_inst[Mod_id].Dtch_lchan[j][i].Active==1) {
-                            Overhead=CH_mac_inst[Mod_id].Dtch_lchan[j][i].Lchan_info.output_rate - Pdcp_stats_tx_rate[k][i][j];
-
-                            if(Overhead<0) {
-                                Overhead=-Overhead;
-                                Sign=-1;
-                            } else {
-                                Sign=1;
-                            }
-
-                            len+=sprintf(&buffer[len],
-                                         "[PDCP]LCHAN %d: NB_TX = %d ,Tx_rate =(%d bits/TTI ,%d Kbits/s), NB_RX = %d ,Rx_rate =(%d bits/TTI ,%d Kbits/s), LAYER2 TX OVERHEAD= %d Kbits/s\n",
-                                         CH_mac_inst[Mod_id].Dtch_lchan[j][i].Lchan_info.Lchan_id.Index,
-                                         Pdcp_stats_tx[k][i][j],
-                                         Pdcp_stats_tx_rate[k][i][j],
-                                         (10*Pdcp_stats_tx_rate[k][i][j])>>5,
-                                         Pdcp_stats_rx[k][i][j],
-                                         Pdcp_stats_rx_rate[k][i][j],
-                                         (10*Pdcp_stats_rx_rate[k][i][j])>>5,
-                                         Sign*(10*Overhead)>>5);
-                            int status =  rlc_stat_req     (k,
-                                                            CH_mac_inst[Mod_id].Dtch_lchan[j][i].Lchan_info.Lchan_id.Index,
-                                                            &tx_pdcp_sdu,
-                                                            &tx_pdcp_sdu_discarded,
-                                                            &tx_retransmit_pdu_unblock,
-                                                            &tx_retransmit_pdu_by_status,
-                                                            &tx_retransmit_pdu,
-                                                            &tx_data_pdu,
-                                                            &tx_control_pdu,
-                                                            &rx_sdu,
-                                                            &rx_error_pdu,
-                                                            &rx_data_pdu,
-                                                            &rx_data_pdu_out_of_window,
-                                                            &rx_control_pdu) ;
-                            /*
-                            if (status == RLC_OP_STATUS_OK) {
-                            len+=sprintf(&buffer[len],"\t[RLC] LCHAN %d, NB_SDU_TO_TX = %d\tNB_SDU_DISC %d\tNB_RX_SDU %d\n",
-                                CH_mac_inst[Mod_id].Dtch_lchan[j][i].Lchan_info.Lchan_id.Index,
-                             tx_pdcp_sdu,
-                             tx_pdcp_sdu_discarded,
-                             rx_sdu);
-                            len+=sprintf(&buffer[len],"\t[RLC] LCHAN %d, NB_TB_TX_DATA = %d\tNB_TB_TX_CONTROL %d\tNB_TX_TB_RETRANS %\n",
-                                CH_mac_inst[Mod_id].Dtch_lchan[j][i].Lchan_info.Lchan_id.Index,
-                             tx_data_pdu,
-                             tx_control_pdu,
-                             tx_retransmit_pdu);
-                            len+=sprintf(&buffer[len],"\t[RLC] LCHAN %d, NB_TX_TB_RETRANS_BY_STATUS = %d\tNB_TX_TB_RETRANS_PADD %d\n",
-                                CH_mac_inst[Mod_id].Dtch_lchan[j][i].Lchan_info.Lchan_id.Index,
-                             tx_retransmit_pdu_by_status,
-                             tx_retransmit_pdu_unblock);
-                            len+=sprintf(&buffer[len],"\t[RLC] LCHAN %d, NB_RX_DATA = %d\tNB_RX_TB_OUT_WIN %d\tNB_RX_TB_CORRUPT %d\n",
-                                CH_mac_inst[Mod_id].Dtch_lchan[j][i].Lchan_info.Lchan_id.Index,
-                             rx_data_pdu,
-                             rx_data_pdu_out_of_window,
-                             rx_error_pdu);
-                            }
-                            */
-                            len+=sprintf(&buffer[len],
-                                         "[MAC]LCHAN %d (CNX %u,RAB %u), NB_TX_MAC= %d (%d bits/TTI, %d kbit/s), NB_RX_MAC= %d (errors %d, sacch_errors %d, sach_errors %d, sach_missing %d)\n",
-                                         CH_mac_inst[Mod_id].Dtch_lchan[j][i].Lchan_info.Lchan_id.Index,
-                                         i,j,
-                                         CH_mac_inst[Mod_id].Dtch_lchan[j][i].Lchan_info.NB_TX,
-                                         CH_mac_inst[Mod_id].Dtch_lchan[j][i].Lchan_info.output_rate,
-                                         (10*CH_mac_inst[Mod_id].Dtch_lchan[j][i].Lchan_info.output_rate)>>5,
-                                         CH_mac_inst[Mod_id].Dtch_lchan[j][i].Lchan_info.NB_RX,
-                                         CH_mac_inst[Mod_id].Dtch_lchan[j][i].Lchan_info.NB_RX_ERRORS,
-                                         CH_mac_inst[Mod_id].Dtch_lchan[j][i].Lchan_info.NB_RX_SACCH_ERRORS,
-                                         CH_mac_inst[Mod_id].Dtch_lchan[j][i].Lchan_info.NB_RX_SACH_ERRORS,
-                                         CH_mac_inst[Mod_id].Dtch_lchan[j][i].Lchan_info.NB_RX_SACH_MISSING);
-                            len+=sprintf(&buffer[len],"[MAC][SCHEDULER] TX Arrival Rate %d, TX Service Rate %d, RX Arrival rate %d, RX Service rate %d, NB_BW_REQ_RX %d\n\n",
-                                         CH_mac_inst[Mod_id].Dtch_lchan[j][i].Lchan_info.Arrival_rate,
-                                         CH_mac_inst[Mod_id].Dtch_lchan[j][i].Lchan_info.Tx_rate,
-                                         CH_mac_inst[Mod_id].Dtch_lchan[j][i].Lchan_info.Req_rate,
-                                         CH_mac_inst[Mod_id].Dtch_lchan[j][i].Lchan_info.Rx_rate,
-                                         CH_mac_inst[Mod_id].Dtch_lchan[j][i].Lchan_info.NB_BW_REQ_RX);
-                            /*
-                                    len+=sprintf(&buffer[len],"        TX per TB: ");
-                                    for(kk=0;kk<MAX_NUMBER_TB_PER_LCHAN/2;kk++)
-                                len+=sprintf(&buffer[len],"%d.",CH_mac_inst[Mod_id].Dtch_lchan[j][i].Lchan_info.NB_TX_TB[kk]);
-                                    len+=sprintf(&buffer[len],"\n");
-                                    len+=sprintf(&buffer[len],"        RXerr per TB: ");
-                                    for(kk=0;kk<MAX_NUMBER_TB_PER_LCHAN/2;kk++)
-                                len+=sprintf(&buffer[len],"%d/%d . ",CH_mac_inst[Mod_id].Dtch_lchan[j][i].Lchan_info.NB_RX_ERRORS_TB[kk],
-                                       CH_mac_inst[Mod_id].Dtch_lchan[j][i].Lchan_info.NB_RX_TB[kk]);
-                                    len+=sprintf(&buffer[len],"\n");
-                            */
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    return len;
-}
-
-#endif
 
diff --git a/openair2/NETWORK_DRIVER/MESH/common.c b/openair2/NETWORK_DRIVER/MESH/common.c
index c5b46440dcf2f24e442a45ef4c4cd767db98d6db..c04acded3eca0a8716c9513cfa61637a46ba6e57 100644
--- a/openair2/NETWORK_DRIVER/MESH/common.c
+++ b/openair2/NETWORK_DRIVER/MESH/common.c
@@ -389,36 +389,19 @@ void nas_COMMON_QOS_send(struct sk_buff *skb, struct cx_entity *cx, struct class
   pdcph.sourceL2Id = 0;
   pdcph.destinationL2Id = 0;
 
-
-
-#ifdef PDCP_USE_NETLINK
   bytes_wrote = nas_netlink_send((char *)&pdcph,NAS_PDCPH_SIZE);
 #ifdef NAS_DEBUG_SEND
   printk("[NAS] Wrote %d bytes (header for %d byte skb) to PDCP via netlink\n",
          bytes_wrote,skb->len);
 #endif
-#else
-  bytes_wrote = rtf_put(NAS2PDCP_FIFO, &pdcph, NAS_PDCPH_SIZE);
-#ifdef NAS_DEBUG_SEND
-  printk("[NAS] Wrote %d bytes (header for %d byte skb) to PDCP fifo\n",
-         bytes_wrote,skb->len);
-#endif
-#endif //PDCP_USE_NETLINK
 
   if (bytes_wrote != NAS_PDCPH_SIZE) {
     printk("NAS_COMMON_QOS_SEND: problem while writing PDCP's header (bytes wrote = %d )\n",bytes_wrote);
     printk("rb_id %ld, Wrote %d, Header Size %lu\n", pdcph.rb_id , bytes_wrote, NAS_PDCPH_SIZE);
-#ifndef PDCP_USE_NETLINK
-    rtf_reset(NAS2PDCP_FIFO);
-#endif //PDCP_USE_NETLINK
     return;
   }
 
-#ifdef  PDCP_USE_NETLINK
   bytes_wrote += nas_netlink_send((char *)skb->data,skb->len);
-#else
-  bytes_wrote += rtf_put(NAS2PDCP_FIFO, skb->data, skb->len);
-#endif //PDCP_USE_NETLINK
 
   if (bytes_wrote != skb->len+NAS_PDCPH_SIZE) {
     printk("NAS_COMMON_QOS_SEND: Inst %d, RB_ID %ld: problem while writing PDCP's data, bytes_wrote = %d, Data_len %d, PDCPH_SIZE %lu\n",
@@ -427,9 +410,6 @@ void nas_COMMON_QOS_send(struct sk_buff *skb, struct cx_entity *cx, struct class
            bytes_wrote,
            skb->len,
            NAS_PDCPH_SIZE); // congestion
-#ifndef PDCP_USE_NETLINK
-    rtf_reset(NAS2PDCP_FIFO);
-#endif //PDCP_USE_NETLINK
     return;
   }
 
@@ -449,69 +429,6 @@ void nas_COMMON_QOS_send(struct sk_buff *skb, struct cx_entity *cx, struct class
 #endif
 }
 
-#ifndef PDCP_USE_NETLINK
-//---------------------------------------------------------------------------
-void nas_COMMON_QOS_receive()
-{
-  //---------------------------------------------------------------------------
-  uint8_t sapi;
-  struct pdcp_data_ind_header_s     pdcph;
-  unsigned char data_buffer[2048];
-  struct classifier_entity *rclass;
-  struct nas_priv *priv;
-  int bytes_read;
-
-  // Start debug information
-#ifdef NAS_DEBUG_RECEIVE
-  printk("NAS_COMMON_QOS_RECEIVE - begin \n");
-#endif
-
-  // End debug information
-
-  bytes_read =  rtf_get(PDCP2PDCP_USE_RT_FIFO,&pdcph, NAS_PDCPH_SIZE);
-
-  while (bytes_read>0) {
-    if (bytes_read != NAS_PDCPH_SIZE) {
-      printk("NAS_COMMON_QOS_RECEIVE: problem while reading PDCP header\n");
-      return;
-    }
-
-    priv=netdev_priv(nasdev[pdcph.inst]);
-    rclass = nas_COMMON_search_class_for_rb(pdcph.rb_id,priv);
-
-    bytes_read+= rtf_get(PDCP2PDCP_USE_RT_FIFO,
-                         data_buffer,
-                         pdcph.data_size);
-
-#ifdef NAS_DEBUG_RECEIVE
-    printk("NAS_COMMON_QOS_RECEIVE - Got header for RB %d, Inst %d \n",
-           pdcph.rb_id,
-           pdcph.inst);
-#endif
-
-    if (rclass) {
-#ifdef NAS_DEBUG_RECEIVE
-      printk("[NAS][COMMON] Found corresponding connection in classifier for RAB\n");
-#endif //NAS_DEBUG_RECEIVE
-
-      nas_COMMON_receive(pdcph.data_size,
-                         (void *)data_buffer,
-                         pdcph.inst,
-                         rclass,
-                         pdcph.rb_id);
-    }
-
-    bytes_read =  rtf_get(PDCP2PDCP_USE_RT_FIFO, &pdcph, NAS_PDCPH_SIZE);
-  }
-
-
-
-#ifdef NAS_DEBUG_RECEIVE
-  printk("NAS_COMMON_QOS_RECEIVE - end \n");
-#endif
-}
-
-#else
 void nas_COMMON_QOS_receive(struct nlmsghdr *nlh)
 {
 
@@ -542,7 +459,6 @@ void nas_COMMON_QOS_receive(struct nlmsghdr *nlh)
   }
 
 }
-#endif //PDCP_USE_NETLINK
 
 //---------------------------------------------------------------------------
 struct cx_entity *nas_COMMON_search_cx(nasLocalConnectionRef_t lcr,struct nas_priv *priv)
diff --git a/openair2/NETWORK_DRIVER/MESH/device.c b/openair2/NETWORK_DRIVER/MESH/device.c
index 47c68466bdc77a0eb65c2936dab0d38e864ae0a1..f63408259c88dce75fa338b4820d86cd2c74ee4e 100644
--- a/openair2/NETWORK_DRIVER/MESH/device.c
+++ b/openair2/NETWORK_DRIVER/MESH/device.c
@@ -53,10 +53,8 @@
 
 struct net_device *nasdev[NB_INSTANCES_MAX];
 
-#ifdef PDCP_USE_NETLINK
 extern void nas_netlink_release(void);
 extern int nas_netlink_init(void);
-#endif
 
 //int bytes_wrote;
 //int bytes_read;
@@ -82,38 +80,6 @@ int find_inst(struct net_device *dev)
 
 //---------------------------------------------------------------------------
 
-#ifndef PDCP_USE_NETLINK
-//void interrupt(void){
-void *nas_interrupt(void)
-{
-  //---------------------------------------------------------------------------
-  uint8_t cxi;
-
-  //  struct nas_priv *priv=netdev_priv(dev_id);
-  //  unsigned int flags;
-
-  //  priv->lock = SPIN_LOCK_UNLOCKED;
-
-#ifdef DEBUG_INTERRUPT
-  printk("INTERRUPT - begin\n");
-#endif
-  //  spin_lock_irqsave(&priv->lock,flags);
-  cxi=0;
-  //  mesh_GC_receive();
-  //  mesh_DC_receive(naspriv->cx+cxi);
-#ifndef PDCP_USE_NETLINK
-  nas_COMMON_QOS_receive();
-#endif
-  //  spin_unlock_irqrestore(&priv->lock,flags);
-#ifdef DEBUG_INTERRUPT
-  printk("INTERRUPT: end\n");
-#endif
-  //  return 0;
-  return NULL;
-}
-#endif //NETLINK
-
-//---------------------------------------------------------------------------
 // Called by ifconfig when the device is activated by ifconfig
 int nas_open(struct net_device *dev)
 {
@@ -121,15 +87,6 @@ int nas_open(struct net_device *dev)
   printk("OPEN: begin\n");
   //  MOD_INC_USE_COUNT;
   // Address has already been set at init
-#ifndef PDCP_USE_NETLINK
-
-  if (pdcp_2_nas_irq==-EBUSY) {
-    printk("OPEN: irq failure\n");
-    return -EBUSY;
-  }
-
-#endif //PDCP_USE_NETLINK
-
   /*
   netif_start_queue(dev);
   //
@@ -449,16 +406,6 @@ int init_module (void)
 
   printk("Starting NASMESH, number of IMEI paramters %d, IMEI %X%X\n",m_arg,nas_IMEI[0],nas_IMEI[1]);
 
-#ifndef PDCP_USE_NETLINK
-
-  if (pdcp_2_nas_irq == -EBUSY || pdcp_2_nas_irq == -EINVAL) {
-    printk("[NAS][INIT] No interrupt resource available\n");
-    return -EBUSY;
-  } else
-    printk("[NAS][INIT]: Interrupt %d\n", pdcp_2_nas_irq);
-
-#endif //NETLINK
-
   for (inst=0; inst<NB_INSTANCES_MAX; inst++) {
     printk("[NAS][INIT] nasmesh_init_module: begin init instance %d\n",inst);
 
@@ -493,15 +440,11 @@ int init_module (void)
     }
   }
 
-#ifdef PDCP_USE_NETLINK
-
   if ((err=nas_netlink_init()) == -1)
     printk("[NAS][INIT] NETLINK failed\n");
 
   printk("[NAS][INIT] NETLINK INIT\n");
 
-#endif //NETLINK
-
   return err;
 
 }
@@ -516,22 +459,6 @@ void cleanup_module(void)
 
   printk("[NAS][CLEANUP]nasmesh_cleanup_module: begin\n");
 
-#ifndef PDCP_USE_NETLINK
-
-  if (pdcp_2_nas_irq!=-EBUSY) {
-    pdcp_2_nas_irq=0;
-    // Start IRQ linux
-    //    free_irq(priv->irq, NULL);
-    // End IRQ linux
-
-  }
-
-#else // NETLINK
-
-
-
-#endif //NETLINK
-
   for (inst=0; inst<NB_INSTANCES_MAX; inst++) {
 #ifdef DEBUG_DEVICE
     printk("nasmesh_cleanup_module: unregister and free net device instance %d\n",inst);
@@ -541,9 +468,7 @@ void cleanup_module(void)
     free_netdev(nasdev[inst]);
   }
 
-#ifdef PDCP_USE_NETLINK
   nas_netlink_release();
-#endif //PDCP_USE_NETLINK
   printk("nasmesh_cleanup_module: end\n");
 }
 
diff --git a/openair2/NETWORK_DRIVER/MESH/local.h b/openair2/NETWORK_DRIVER/MESH/local.h
index 4918e196280f9317dc15bed651f5c60fc31a30c9..aa55c076125483a1e2d998e3a57ebaf9cca0665e 100644
--- a/openair2/NETWORK_DRIVER/MESH/local.h
+++ b/openair2/NETWORK_DRIVER/MESH/local.h
@@ -178,10 +178,4 @@ extern struct net_device *nasdev[NB_INSTANCES_MAX];
 
 extern uint8_t NAS_NULL_IMEI[14];
 
-//global variables shared with RRC
-#ifndef PDCP_USE_NETLINK
-  extern int pdcp_2_nas_irq;
-#endif
-
-
 #endif
diff --git a/openair2/NETWORK_DRIVER/MESH/mesh.c b/openair2/NETWORK_DRIVER/MESH/mesh.c
index 7e147feb684030835a7fa97f2620824bdc92aa84..00cfc35bc8b7fbde715d68a7d2bc2b73f86dbad0 100644
--- a/openair2/NETWORK_DRIVER/MESH/mesh.c
+++ b/openair2/NETWORK_DRIVER/MESH/mesh.c
@@ -293,10 +293,6 @@ int nas_mesh_DC_send_cx_establish_request(struct cx_entity *cx,struct nas_priv *
     nas_tool_print_buffer((char *)p,p->length);
 #endif
     ++cx->retry;
-#ifdef PDCP_USE_NETLINK
-#else
-    //    bytes_wrote = rtf_put(cx->sap[NAS_DC_INPUT_SAPI], p, p->length);
-#endif
     cx->countimer=gpriv->timer_establishment;
 
     if (bytes_wrote==p->length) {
@@ -353,11 +349,6 @@ int nas_mesh_DC_send_cx_release_request(struct cx_entity *cx,
     p->length =  NAS_TL_SIZE + sizeof(struct NASConnReleaseReq);
     p->nasUEDCPrimitive.conn_release_req.localConnectionRef = cx->lcr;
     p->nasUEDCPrimitive.conn_release_req.releaseCause = NAS_CX_RELEASE_UNDEF_CAUSE;
-#ifdef PDCP_USE_NETLINK
-
-#else
-    //      bytes_wrote = rtf_put(cx->sap[NAS_DC_INPUT_SAPI], p, p->length);
-#endif
 
     if (bytes_wrote==p->length) {
       cx->state=NAS_IDLE;
@@ -441,22 +432,12 @@ void nas_mesh_DC_send_sig_data_request(struct sk_buff *skb,
   p->nasUEDCPrimitive.data_transfer_req.localConnectionRef = cx->lcr;
   p->nasUEDCPrimitive.data_transfer_req.priority = 3;  // TBD
   p->nasUEDCPrimitive.data_transfer_req.nasDataLength = (skb->len)+1; //adds category character
-#ifdef PDCP_USE_NETLINK
-#else
-  //  bytes_wrote = rtf_put(cx->sap[NAS_DC_INPUT_SAPI], p, p->length);
-#endif
 
   if (bytes_wrote!=p->length) {
     printk("NAS_MESH_DC_SEND_SIG: Header sent failure in DC-FIFO\n");
     return;
   }
 
-#ifdef PDCP_USE_NETLINK
-#else
-  //  bytes_wrote += rtf_put(cx->sap[NAS_DC_INPUT_SAPI], &data_type, 1);
-  //  bytes_wrote += rtf_put(cx->sap[NAS_DC_INPUT_SAPI], skb->data, skb->len);
-#endif
-
   if (bytes_wrote != p->length + skb->len + 1) {
     printk("NAS_MESH_DC_SEND_SIG: Data sent failure in DC-FIFO\n");
     return;
@@ -511,22 +492,12 @@ void nas_mesh_DC_send_peer_sig_data_request(struct cx_entity *cx, uint8_t sig_ca
   p->nasUEDCPrimitive.data_transfer_req.localConnectionRef = cx->lcr;
   p->nasUEDCPrimitive.data_transfer_req.priority = 3;  // TBD
   p->nasUEDCPrimitive.data_transfer_req.nasDataLength = (nas_length)+1; //adds category character
-#ifdef PDCP_USE_NETLINK
-#else
-  //  bytes_wrote = rtf_put(cx->sap[NAS_DC_INPUT_SAPI], p, p->length);
-#endif
 
   if (bytes_wrote!=p->length) {
     printk("NAS_MESH_DC_PEER_SEND_SIG: Header sent failure in DC-FIFO\n");
     return;
   }
 
-#ifdef PDCP_USE_NETLINK
-#else
-  //  bytes_wrote += rtf_put(cx->sap[NAS_DC_INPUT_SAPI], &data_type, 1);
-  //  bytes_wrote += rtf_put(cx->sap[NAS_DC_INPUT_SAPI], (char *)nas_data, nas_length);
-#endif
-
   if (bytes_wrote != p->length + nas_length + 1) {
     printk("NAS_MESH_DC_PEER_SEND_SIG: Data sent failure in DC-FIFO\n");
     return;
@@ -665,9 +636,6 @@ void nas_mesh_DC_decode_sig_data_ind(struct cx_entity *cx, struct nas_ue_dc_elem
   }
 
   // End debug information
-#ifndef PDCP_USE_NETLINK
-  //  nas_COMMON_receive(p->length, p->nasUEDCPrimitive.data_transfer_ind.nasDataLength, cx->sap[NAS_DC_OUTPUT_SAPI]);
-#endif
 #ifdef NAS_DEBUG_DC
   printk("NAS_MESH_DC_RECEIVE: DATA_TRANSFER_IND reception\n");
   printk(" Local Connection reference %u\n",p->nasUEDCPrimitive.data_transfer_ind.localConnectionRef);
@@ -842,20 +810,12 @@ int nas_mesh_DC_receive(struct cx_entity *cx,struct nas_priv *gpriv)
   }
 
   // End debug information
-#ifdef PDCP_USE_NETLINK
-#else
-  //  bytes_read = rtf_get(cx->sap[NAS_DC_OUTPUT_SAPI] , gpriv->rbuffer, NAS_TL_SIZE);
-#endif
 
   if (bytes_read>0) {
     struct nas_ue_dc_element *p;
 
     p= (struct nas_ue_dc_element *)(gpriv->rbuffer);
     //get the rest of the primitive
-#ifdef PDCP_USE_NETLINK
-#else
-    //    bytes_read += rtf_get(cx->sap[NAS_DC_OUTPUT_SAPI], (uint8_t *)p+NAS_TL_SIZE, p->length-NAS_TL_SIZE);
-#endif
 
     if (bytes_read!=p->length) {
       printk("NAS_MESH_DC_RECEIVE: Problem while reading primitive header\n");
@@ -982,19 +942,11 @@ int nas_mesh_GC_receive(struct nas_priv *gpriv)
 #ifdef NAS_DEBUG_GC
   printk("NAS_MESH_GC_RECEIVE - begin \n");
 #endif
-#ifdef PDCP_USE_NETLINK
-#else
-  //  bytes_read = rtf_get(gpriv->sap[NAS_GC_SAPI], gpriv->rbuffer, NAS_TL_SIZE);
-#endif
 
   if (bytes_read>0) {
     struct nas_ue_gc_element *p;
     p= (struct nas_ue_gc_element *)(gpriv->rbuffer);
     //get the rest of the primitive
-#ifdef PDCP_USE_NETLINK
-#else
-    //      bytes_read += rtf_get(gpriv->sap[NAS_GC_SAPI], (uint8_t *)p+NAS_TL_SIZE, p->length-NAS_TL_SIZE);
-#endif
 
     if (bytes_read!=p->length) {
       printk("NAS_MESH_GC_RECEIVE: Problem while reading primitive's header\n");
@@ -1004,10 +956,6 @@ int nas_mesh_GC_receive(struct nas_priv *gpriv)
     // start decoding message
     switch (p->type) {
     case INFO_BROADCAST_IND :
-#ifdef PDCP_USE_NETLINK
-#else
-      //    bytes_read += rtf_get(gpriv->sap[NAS_GC_SAPI], (uint8_t *)p+p->length, p->nasUEGCPrimitive.broadcast_ind.nasDataLength);
-#endif
       if (bytes_read!=p->length+p->nasUEGCPrimitive.broadcast_ind.nasDataLength) {
         printk("NAS_MESH_GC_RECEIVE: INFO_BROADCAST_IND reception, Problem while reading primitive's data\n");
         return bytes_read;
diff --git a/openair2/NETWORK_DRIVER/MESH/proto_extern.h b/openair2/NETWORK_DRIVER/MESH/proto_extern.h
index ac92b2f8bdceec295bb94d0cffd0ca83038f5c2b..332540f3b702f97e5e26f1b8062579536146cf83 100644
--- a/openair2/NETWORK_DRIVER/MESH/proto_extern.h
+++ b/openair2/NETWORK_DRIVER/MESH/proto_extern.h
@@ -110,14 +110,6 @@ void nas_COMMON_del_send(struct sk_buff *skb,
                          struct cx_entity *cx,
                          struct classifier_entity *gc,int inst, struct nas_priv *gpriv);
 
-#ifndef PDCP_USE_NETLINK
-/**
-\fn void nas_COMMON_QOS_receive()
-\brief Retrieve PDU from PDCP for connection
- */
-void nas_COMMON_QOS_receive(void);
-#endif //PDCP_USE_NETLINK
-
 /**
 \fn struct rb_entity *nas_COMMON_add_rb(struct cx_entity *cx, nasRadioBearerId_t rabi, nasQoSTrafficClass_t qos)
 \brief Add a radio-bearer descriptor
@@ -168,7 +160,6 @@ struct classifier_entity
  */
 void nas_COMMON_flush_rb(struct cx_entity *cx);
 
-#ifdef PDCP_USE_NETLINK
 /**
 \fn int nas_netlink_send(unsigned char *data,unsigned int len)
 \brief Request the transfer of data by PDCP via netlink socket
@@ -185,7 +176,6 @@ int nas_netlink_send(unsigned char *data,unsigned int len);
  */
 void nas_COMMON_QOS_receive(struct nlmsghdr *nlh);
 
-#endif //PDCP_USE_NETLINK
 //nasmesh.c
 
 /**
@@ -305,13 +295,10 @@ void nas_tool_print_buffer(char * buffer,int length);
 void nas_print_rb_entity(struct rb_entity *rb);
 void nas_print_classifier(struct classifier_entity *gc);
 
-#ifdef PDCP_USE_NETLINK
 // nas_netlink.c
 
 void nas_netlink_release(void);
 int nas_netlink_init(void);
 
-#endif
-
 /** @} */
 #endif
diff --git a/openair2/RRC/LITE/rrc_common.c b/openair2/RRC/LITE/rrc_common.c
index f0279f0ef2a53b0ec6dbf9ebca5df7619aaa9f3e..a4239e857d97acc5e9b41ea07599c93f1e94f691 100644
--- a/openair2/RRC/LITE/rrc_common.c
+++ b/openair2/RRC/LITE/rrc_common.c
@@ -97,35 +97,6 @@ rrc_init_global_param(
 //-----------------------------------------------------------------------------
 {
 
-  //#ifdef USER_MODE
-  //  Rrc_xface = (RRC_XFACE*)malloc16(sizeof(RRC_XFACE));
-  //#endif //USRE_MODE
-
-  //  Rrc_xface->openair_rrc_top_init = openair_rrc_top_init;
-  //  Rrc_xface->openair_rrc_eNB_init = openair_rrc_eNB_init;
-  //  Rrc_xface->openair_rrc_UE_init  = openair_rrc_ue_init;
-  //  Rrc_xface->mac_rrc_data_ind     = mac_rrc_data_ind;
-  //Rrc_xface->mac_rrc_data_req     = mac_rrc_data_req;
-  // Rrc_xface->rrc_data_indP        = (void *)rlcrrc_data_ind;
-  //  Rrc_xface->rrc_rx_tx            = rrc_rx_tx;
-  //  Rrc_xface->mac_rrc_meas_ind     = mac_rrc_meas_ind;
-  //  Rrc_xface->get_rrc_status       = get_rrc_status;
-
-  //Rrc_xface->rrc_get_status = ...
-
-  //  Mac_rlc_xface->mac_out_of_sync_ind=mac_out_of_sync_ind;
-
-#ifndef NO_RRM
-  //  Rrc_xface->fn_rrc=fn_rrc;
-#endif
-  //  LOG_D(RRC, "[RRC]INIT_GLOBAL_PARAM: Mac_rlc_xface %p, rrc_rlc_register %p,rlcrrc_data_ind%p\n",Mac_rlc_xface,Mac_rlc_xface->rrc_rlc_register_rrc,rlcrrc_data_ind);
-  /*
-   if((Mac_rlc_xface==NULL) || (Mac_rlc_xface->rrc_rlc_register_rrc==NULL) ||
-   (rlcrrc_data_ind==NULL)) {
-   LOG_E(RRC,"Data structured is not initialized \n");
-   return -1;
-   }
-   */
   rrc_rlc_register_rrc (rrc_data_ind, NULL); //register with rlc
 
   DCCH_LCHAN_DESC.transport_block_size = 4;
diff --git a/openair2/RRC/LTE/MESSAGES/asn1_msg_NB_IoT.h b/openair2/RRC/LTE/MESSAGES/asn1_msg_NB_IoT.h
index 6b56be1022eb9443feb0d6ef0bd7254dc482032d..a862af783680c134aa859918a08f73256cc056a4 100644
--- a/openair2/RRC/LTE/MESSAGES/asn1_msg_NB_IoT.h
+++ b/openair2/RRC/LTE/MESSAGES/asn1_msg_NB_IoT.h
@@ -28,7 +28,6 @@
 * \email: raymond.knopp@eurecom.fr ,navid.nikaein@eurecom.fr, michele.paffetti@studio.unibo.it
 */
 
-#ifdef USER_MODE
 #include <stdio.h>
 #include <sys/types.h>
 #include <stdlib.h> /* for atoi(3) */
@@ -36,9 +35,6 @@
 #include <string.h> /* for strerror(3) */
 #include <sysexits.h> /* for EX_* exit codes */
 #include <errno.h>  /* for errno */
-#else
-#include <linux/module.h>  /* Needed by all modules */
-#endif
 
 #include <asn_application.h>
 #include <asn_internal.h> /* for _ASN_DEFAULT_STACK_MAX */
diff --git a/openair2/RRC/LTE/MESSAGES/asn1_patch b/openair2/RRC/LTE/MESSAGES/asn1_patch
deleted file mode 100644
index 8682f178957c7c03d3138d0265fe3075f13f6cda..0000000000000000000000000000000000000000
--- a/openair2/RRC/LTE/MESSAGES/asn1_patch
+++ /dev/null
@@ -1,522 +0,0 @@
-diff -cB /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/asn_codecs_prim.c patch_dir/asn_codecs_prim.c
-*** /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/asn_codecs_prim.c	2011-03-31 10:22:56.000000000 +0200
---- patch_dir/asn_codecs_prim.c	2011-05-31 10:28:26.000000000 +0200
-***************
-*** 4,10 ****
-   */
-  #include <asn_internal.h>
-  #include <asn_codecs_prim.h>
-- #include <errno.h>
-  
-  /*
-   * Decode an always-primitive type.
---- 4,9 ----
-diff -cB /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/asn_internal.h patch_dir/asn_internal.h
-*** /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/asn_internal.h	2011-03-31 10:22:57.000000000 +0200
---- patch_dir/asn_internal.h	2011-05-31 10:28:26.000000000 +0200
-***************
-*** 10,20 ****
---- 10,31 ----
-  #define	_ASN_INTERNAL_H_
-  
-  #include "asn_application.h"	/* Application-visible API */
-+ #ifndef USER_MODE
-+ #include <rtai.h>
-+ #include <rtai_malloc.h>
-+ #include "rtai_mem.h"
-+ #endif
-  
-  #ifndef	__NO_ASSERT_H__		/* Include assert.h only for internal use. */
-  #include <assert.h>		/* for assert() macro */
-  #endif
-  
-+ #ifndef USER_MODE
-+ #ifndef assert
-+ #define assert(expr) ((expr) ? (void) 0 : printk("Assertion failed in %s:%d\n", __FILE__, __LINE__))
-+ #endif
-+ #endif
-+ 
-  #ifdef	__cplusplus
-  extern "C" {
-  #endif
-***************
-*** 23,32 ****
---- 34,51 ----
-  #define	ASN1C_ENVIRONMENT_VERSION	922	/* Compile-time version */
-  int get_asn1c_environment_version(void);	/* Run-time version */
-  
-+ #ifdef USER_MODE
-  #define	CALLOC(nmemb, size)	calloc(nmemb, size)
-  #define	MALLOC(size)		malloc(size)
-  #define	REALLOC(oldptr, size)	realloc(oldptr, size)
-  #define	FREEMEM(ptr)		free(ptr)
-+ #else
-+ #define	CALLOC(nmemb, size)	rt_calloc(nmemb,size)
-+ #define	MALLOC(size)		rt_malloc(size)
-+ #define	REALLOC(oldptr, size)	rt_realloc(oldptr, size)
-+ #define	FREEMEM(ptr)		rt_free(ptr);
-+ #endif
-+ 
-  
-  /*
-   * A macro for debugging the ASN.1 internals.
-***************
-*** 38,45 ****
-  #ifdef	ASN_THREAD_SAFE
-  #define	asn_debug_indent	0
-  #else	/* !ASN_THREAD_SAFE */
-! int asn_debug_indent;
-  #endif	/* ASN_THREAD_SAFE */
-  #define	ASN_DEBUG(fmt, args...)	do {			\
-  		int adi = asn_debug_indent;		\
-  		while(adi--) fprintf(stderr, " ");	\
---- 57,65 ----
-  #ifdef	ASN_THREAD_SAFE
-  #define	asn_debug_indent	0
-  #else	/* !ASN_THREAD_SAFE */
-! extern int asn_debug_indent;
-  #endif	/* ASN_THREAD_SAFE */
-+ #ifdef USER_MODE
-  #define	ASN_DEBUG(fmt, args...)	do {			\
-  		int adi = asn_debug_indent;		\
-  		while(adi--) fprintf(stderr, " ");	\
-***************
-*** 47,52 ****
---- 67,81 ----
-  		fprintf(stderr, " (%s:%d)\n",		\
-  			__FILE__, __LINE__);		\
-  	} while(0)
-+ #else
-+ #define ASN_DEBUG(fmt, args...) do {			\
-+ 		int adi = asn_debug_indent;		\
-+ 		while(adi--) printk(" ");	\
-+ 		printk(fmt, ##args);			\
-+ 		printk(" (%s:%d)\n",			\
-+ 			__FILE__, __LINE__);		\
-+ 	} while(0)
-+ #endif
-  #else	/* !__GNUC__ */
-  void ASN_DEBUG_f(const char *fmt, ...);
-  #define	ASN_DEBUG	ASN_DEBUG_f
-diff -cB /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/asn_SET_OF.c patch_dir/asn_SET_OF.c
-*** /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/asn_SET_OF.c	2011-03-31 10:22:56.000000000 +0200
---- patch_dir/asn_SET_OF.c	2011-05-31 10:28:26.000000000 +0200
-***************
-*** 4,10 ****
-   */
-  #include <asn_internal.h>
-  #include <asn_SET_OF.h>
-- #include <errno.h>
-  
-  /*
-   * Add another element into the set.
---- 4,9 ----
-***************
-*** 21,26 ****
---- 20,27 ----
-  	/*
-  	 * Make sure there's enough space to insert an element.
-  	 */
-+ 	ASN_DEBUG("SET ADD: count %d, size %d",as->count,as->size);
-+ 
-  	if(as->count == as->size) {
-  		int _newsize = as->size ? (as->size << 1) : 4;
-  		void *_new_arr;
-diff -cB /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/asn_system.h patch_dir/asn_system.h
-*** /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/asn_system.h	2011-03-31 10:22:57.000000000 +0200
---- patch_dir/asn_system.h	2011-05-31 10:28:26.000000000 +0200
-***************
-*** 13,25 ****
-  #include "config.h"
-  #endif
-  
-! #include <stdio.h>	/* For snprintf(3) */
-! #include <stdlib.h>	/* For *alloc(3) */
-! #include <string.h>	/* For memcpy(3) */
-! #include <sys/types.h>	/* For size_t */
-! #include <limits.h>	/* For LONG_MAX */
-! #include <stdarg.h>	/* For va_start */
-! #include <stddef.h>	/* for offsetof and ptrdiff_t */
-  
-  #ifdef	WIN32
-  
---- 13,39 ----
-  #include "config.h"
-  #endif
-  
-! #ifdef USER_MODE
-! #include <stdio.h>	// For snprintf(3)
-! #include <stdlib.h>	// For *alloc(3)
-! #include <string.h>	// For memcpy(3)
-! #include <sys/types.h>	// For size_t
-! #include <limits.h>	// For LONG_MAX
-! #include <stdarg.h>	// For va_start
-! #include <stddef.h>	// for offsetof and ptrdiff_t
-! #include <errno.h>      // For errno
-! #else
-! typedef char FILE;
-! #include <linux/types.h>
-! #include <linux/slab.h> // For snprintf
-! #include <linux/sort.h> // For sort
-! #define qsort(base,num,size,cmp_func) sort(base,num,size,cmp_func,NULL)
-! #include <linux/errno.h>// For errno
-! #ifndef errno
-! extern int errno;
-! #endif
-! #include "bsearch.h"
-! #endif
-  
-  #ifdef	WIN32
-  
-***************
-*** 63,69 ****
-  #include <types/vxTypes.h>
-  #else	/* !defined(__vxworks) */
-  
-! #include <inttypes.h>	/* C99 specifies this file */
-  /*
-   * 1. Earlier FreeBSD version didn't have <stdint.h>,
-   * but <inttypes.h> was present.
---- 77,85 ----
-  #include <types/vxTypes.h>
-  #else	/* !defined(__vxworks) */
-  
-! #ifdef USER_MODE
-! #include <inttypes.h>	 /*C99 specifies this file */
-! #endif
-  /*
-   * 1. Earlier FreeBSD version didn't have <stdint.h>,
-   * but <inttypes.h> was present.
-***************
-*** 81,91 ****
-  #define inline
-  #endif	/* __GNUC__ */
-  #else
-! #include <stdint.h>	/* SUSv2+ and C99 specify this file, for uintXX_t */
-  #endif	/* defined(sun) */
-  #endif
-  
-! #include <netinet/in.h> /* for ntohl() */
-  #define	sys_ntohl(foo)	ntohl(foo)
-  
-  #endif	/* defined(__vxworks) */
---- 97,109 ----
-  #define inline
-  #endif	/* __GNUC__ */
-  #else
-! #ifdef USER_MODE
-! #include <stdint.h>	 /*SUSv2+ and C99 specify this file, for uintXX_t */
-! #endif
-  #endif	/* defined(sun) */
-  #endif
-  
-! /*#include <netinet/in.h>  for ntohl() */
-  #define	sys_ntohl(foo)	ntohl(foo)
-  
-  #endif	/* defined(__vxworks) */
-diff -cB /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/ber_tlv_tag.c patch_dir/ber_tlv_tag.c
-*** /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/ber_tlv_tag.c	2011-03-31 10:22:56.000000000 +0200
---- patch_dir/ber_tlv_tag.c	2011-05-31 10:28:26.000000000 +0200
-***************
-*** 4,10 ****
-   */
-  #include <asn_internal.h>
-  #include <ber_tlv_tag.h>
-- #include <errno.h>
-  
-  ssize_t
-  ber_fetch_tag(const void *ptr, size_t size, ber_tlv_tag_t *tag_r) {
---- 4,9 ----
-***************
-*** 57,63 ****
-  	return 0;	/* Want more */
-  }
-  
-! 
-  ssize_t
-  ber_tlv_tag_fwrite(ber_tlv_tag_t tag, FILE *f) {
-  	char buf[sizeof("[APPLICATION ]") + 32];
---- 56,62 ----
-  	return 0;	/* Want more */
-  }
-  
-! #ifdef USER_MODE
-  ssize_t
-  ber_tlv_tag_fwrite(ber_tlv_tag_t tag, FILE *f) {
-  	char buf[sizeof("[APPLICATION ]") + 32];
-***************
-*** 71,76 ****
---- 70,76 ----
-  
-  	return fwrite(buf, 1, ret, f);
-  }
-+ #endif
-  
-  ssize_t
-  ber_tlv_tag_snprint(ber_tlv_tag_t tag, char *buf, size_t size) {
-diff -cB /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/constraints.c patch_dir/constraints.c
-*** /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/constraints.c	2011-03-31 10:22:57.000000000 +0200
---- patch_dir/constraints.c	2011-05-31 10:28:26.000000000 +0200
-***************
-*** 1,4 ****
-! #include "asn_internal.h"
-  #include "constraints.h"
-  
-  int
---- 1,4 ----
-! #include <asn_internal.h>
-  #include "constraints.h"
-  
-  int
-diff -cB /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/constr_TYPE.c patch_dir/constr_TYPE.c
-*** /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/constr_TYPE.c	2011-03-31 10:22:56.000000000 +0200
---- patch_dir/constr_TYPE.c	2011-05-31 10:28:26.000000000 +0200
-***************
-*** 4,10 ****
-   */
-  #include <asn_internal.h>
-  #include <constr_TYPE.h>
-- #include <errno.h>
-  
-  /*
-   * Version of the ASN.1 infrastructure shipped with compiler.
---- 4,9 ----
-***************
-*** 29,34 ****
---- 28,34 ----
-  	return type_descriptor->outmost_tag(type_descriptor, struct_ptr, 0, 0);
-  }
-  
-+ #ifdef USER_MODE
-  /*
-   * Print the target language's structure in human readable form.
-   */
-***************
-*** 75,77 ****
---- 75,78 ----
-  	fprintf(stderr, "\n");
-  	va_end(ap);
-  }
-+ #endif
-diff -cB /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/der_encoder.c patch_dir/der_encoder.c
-*** /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/der_encoder.c	2011-03-31 10:22:56.000000000 +0200
---- patch_dir/der_encoder.c	2011-05-31 10:28:26.000000000 +0200
-***************
-*** 3,9 ****
-   * Redistribution and modifications are permitted subject to BSD license.
-   */
-  #include <asn_internal.h>
-- #include <errno.h>
-  
-  static ssize_t der_write_TL(ber_tlv_tag_t tag, ber_tlv_len_t len,
-  	asn_app_consume_bytes_f *cb, void *app_key, int constructed);
---- 3,8 ----
-***************
-*** 81,89 ****
---- 80,90 ----
-  		asn_app_consume_bytes_f *cb,
-  		void *app_key) {
-  	ber_tlv_tag_t *tags;	/* Copy of tags stream */
-+ 	ber_tlv_tag_t tags_array[8];
-  	int tags_count;		/* Number of tags */
-  	size_t overall_length;
-  	ssize_t *lens;
-+ 	ssize_t lens_array[8];
-  	int i;
-  
-  	ASN_DEBUG("Writing tags (%s, tm=%d, tc=%d, tag=%s, mtc=%d)",
-***************
-*** 102,111 ****
-  		 * and initialize it appropriately.
-  		 */
-  		int stag_offset;
-! 		tags = (ber_tlv_tag_t *)alloca((sd->tags_count + 1) * sizeof(ber_tlv_tag_t));
-  		if(!tags) {	/* Can fail on !x86 */
-! 			errno = ENOMEM;
-! 			return -1;
-  		}
-  		tags_count = sd->tags_count
-  			+ 1	/* EXPLICIT or IMPLICIT tag is given */
---- 103,121 ----
-  		 * and initialize it appropriately.
-  		 */
-  		int stag_offset;
-! 		//tags = (ber_tlv_tag_t *)alloca((sd->tags_count + 1) * sizeof(ber_tlv_tag_t));
-! 		tags = &(tags_array[0]);
-! 		if ((sd->tags_count + 1)>=8) {
-! #ifdef USER_MODE
-! 		  printf("der_encoder.c: ERROR tags array too small. Increase size!\n");
-! 		  exit(-1);
-! #endif
-! 		  errno = ENOMEM;
-! 		  return -1;
-! 		}
-  		if(!tags) {	/* Can fail on !x86 */
-! 		  errno = ENOMEM;
-! 		  return -1;
-  		}
-  		tags_count = sd->tags_count
-  			+ 1	/* EXPLICIT or IMPLICIT tag is given */
-***************
-*** 124,135 ****
-  	if(tags_count == 0)
-  		return 0;
-  
-! 	lens = (ssize_t *)alloca(tags_count * sizeof(lens[0]));
-  	if(!lens) {
-! 		errno = ENOMEM;
-! 		return -1;
-  	}
-! 
-  	/*
-  	 * Array of tags is initialized.
-  	 * Now, compute the size of the TLV pairs, from right to left.
---- 134,154 ----
-  	if(tags_count == 0)
-  		return 0;
-  
-! 	//lens = (ssize_t *)alloca(tags_count * sizeof(lens[0]));
-! 	lens = &(lens_array[0]);
-! 	if (tags_count>=8) {
-! #ifdef USER_MODE
-! 	  printf("der_encoder.c: ERROR lens array too small. Increase size!\n");
-! 	  exit(-1);
-! #endif
-! 	  errno = ENOMEM;
-! 	  return -1;
-! 	}
-  	if(!lens) {
-! 	  errno = ENOMEM;
-! 	  return -1;
-  	}
-! 	
-  	/*
-  	 * Array of tags is initialized.
-  	 * Now, compute the size of the TLV pairs, from right to left.
-diff -cB /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/INTEGER.c patch_dir/INTEGER.c
-*** /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/INTEGER.c	2011-03-31 10:22:56.000000000 +0200
---- patch_dir/INTEGER.c	2011-05-31 10:28:26.000000000 +0200
-***************
-*** 6,12 ****
-  #include <asn_internal.h>
-  #include <INTEGER.h>
-  #include <asn_codecs_prim.h>	/* Encoder and decoder of a primitive type */
-- #include <errno.h>
-  
-  /*
-   * INTEGER basic type description.
---- 6,11 ----
-***************
-*** 103,109 ****
-  static ssize_t
-  INTEGER__dump(asn_TYPE_descriptor_t *td, const INTEGER_t *st, asn_app_consume_bytes_f *cb, void *app_key, int plainOrXER) {
-  	asn_INTEGER_specifics_t *specs=(asn_INTEGER_specifics_t *)td->specifics;
-! 	char scratch[32];	/* Enough for 64-bit integer */
-  	uint8_t *buf = st->buf;
-  	uint8_t *buf_end = st->buf + st->size;
-  	signed long accum;
---- 102,108 ----
-  static ssize_t
-  INTEGER__dump(asn_TYPE_descriptor_t *td, const INTEGER_t *st, asn_app_consume_bytes_f *cb, void *app_key, int plainOrXER) {
-  	asn_INTEGER_specifics_t *specs=(asn_INTEGER_specifics_t *)td->specifics;
-! 	char scratch[128];	
-  	uint8_t *buf = st->buf;
-  	uint8_t *buf_end = st->buf + st->size;
-  	signed long accum;
-***************
-*** 142,149 ****
---- 141,152 ----
-  
-  		el = INTEGER_map_value2enum(specs, accum);
-  		if(el) {
-+ 			scrsize = sizeof(scratch);
-+ 			scr = scratch;
-+ 			/* cannot use alloca in kernel
-  			scrsize = el->enum_len + 32;
-  			scr = (char *)alloca(scrsize);
-+ 			*/
-  			if(plainOrXER == 0)
-  				ret = snprintf(scr, scrsize,
-  					"%ld (%s)", accum, el->enum_name);
-diff -cB /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/NativeEnumerated.c patch_dir/NativeEnumerated.c
-*** /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/NativeEnumerated.c	2011-03-31 10:22:57.000000000 +0200
---- patch_dir/NativeEnumerated.c	2011-05-31 10:28:26.000000000 +0200
-***************
-*** 46,51 ****
---- 46,52 ----
-                  asn_app_consume_bytes_f *cb, void *app_key) {
-  	asn_INTEGER_specifics_t *specs=(asn_INTEGER_specifics_t *)td->specifics;
-          asn_enc_rval_t er;
-+ 	char scratch[128];
-          const long *native = (const long *)sptr;
-  	const asn_INTEGER_enum_map_t *el;
-  
-***************
-*** 57,63 ****
-  	el = INTEGER_map_value2enum(specs, *native);
-  	if(el) {
-  		size_t srcsize = el->enum_len + 5;
-! 		char *src = (char *)alloca(srcsize);
-  
-  		er.encoded = snprintf(src, srcsize, "<%s/>", el->enum_name);
-  		assert(er.encoded > 0 && (size_t)er.encoded < srcsize);
---- 58,64 ----
-  	el = INTEGER_map_value2enum(specs, *native);
-  	if(el) {
-  		size_t srcsize = el->enum_len + 5;
-! 		char *src = (char *)scratch; //alloca(srcsize);
-  
-  		er.encoded = snprintf(src, srcsize, "<%s/>", el->enum_name);
-  		assert(er.encoded > 0 && (size_t)er.encoded < srcsize);
-diff -cB /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/OCTET_STRING.c patch_dir/OCTET_STRING.c
-*** /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/OCTET_STRING.c	2011-03-31 10:22:55.000000000 +0200
---- patch_dir/OCTET_STRING.c	2011-05-31 10:28:26.000000000 +0200
-***************
-*** 6,12 ****
-  #include <asn_internal.h>
-  #include <OCTET_STRING.h>
-  #include <BIT_STRING.h>	/* for .bits_unused member */
-- #include <errno.h>
-  
-  /*
-   * OCTET STRING basic type description.
---- 6,11 ----
-diff -cB /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/xer_encoder.c patch_dir/xer_encoder.c
-*** /homes/kaltenbe/Devel/openair/openair_branches/openair_lte/openair2/RRC/LITE/MESSAGES/asn1c/asn1c/skeletons/xer_encoder.c	2011-04-11 18:03:26.000000000 +0200
---- patch_dir/xer_encoder.c	2011-05-31 10:28:26.000000000 +0200
-***************
-*** 3,10 ****
-   * Redistribution and modifications are permitted subject to BSD license.
-   */
-  #include <asn_internal.h>
-! #include <stdio.h>
-! #include <errno.h>
-  
-  /*
-   * The XER encoder of any type. May be invoked by the application.
---- 3,10 ----
-   * Redistribution and modifications are permitted subject to BSD license.
-   */
-  #include <asn_internal.h>
-! //#include <stdio.h>
-! //#include <errno.h>
-  
-  /*
-   * The XER encoder of any type. May be invoked by the application.
-***************
-*** 41,46 ****
---- 41,47 ----
-   * This is a helper function for xer_fprint, which directs all incoming data
-   * into the provided file descriptor.
-   */
-+ #ifdef USER_MODE
-  static int
-  xer__print2fp(const void *buffer, size_t size, void *app_key) {
-  	FILE *stream = (FILE *)app_key;
-***************
-*** 65,67 ****
---- 66,69 ----
-  
-  	return fflush(stream);
-  }
-+ #endif
diff --git a/openair2/RRC/LTE/rrc_UE.c b/openair2/RRC/LTE/rrc_UE.c
index 30fb20b72797667fcc4ba3c2860874547ef3c85e..4b862fa11da37475ccb6b07882e8630c9843fd58 100644
--- a/openair2/RRC/LTE/rrc_UE.c
+++ b/openair2/RRC/LTE/rrc_UE.c
@@ -393,15 +393,7 @@ char openair_rrc_ue_init( const module_id_t ue_mod_idP, const unsigned char eNB_
   init_SI_UE(&ctxt,eNB_index);
   LOG_D(RRC,PROTOCOL_RRC_CTXT_FMT"  INIT: phy_sync_2_ch_ind\n",
         PROTOCOL_RRC_CTXT_ARGS(&ctxt));
-#ifndef NO_RRM
-  send_msg(&S_rrc,msg_rrc_phy_synch_to_CH_ind(ctxt.module_id,eNB_index,UE_rrc_inst[ctxt.module_id].Mac_id));
-#endif
-#ifndef NO_RRM
-  send_msg(&S_rrc,msg_rrc_phy_synch_to_CH_ind(ctxt.module_id,eNB_index,UE_rrc_inst[ctxt.module_id].Mac_id));
-#endif
-#ifdef NO_RRM //init ch SRB0, SRB1 & BDTCH
   openair_rrc_on_ue(&ctxt);
-#endif
   return 0;
 }
 
@@ -2249,9 +2241,6 @@ rrc_ue_decode_dcch(
     }
   }
 
-#ifndef NO_RRM
-  send_msg(&S_rrc,msg_rrc_end_scan_req(ctxt_pP->module_id,eNB_indexP));
-#endif
 }
 
 const char siWindowLength[9][5] = {"1ms","2ms","5ms","10ms","15ms","20ms","40ms","80ms","ERR"};
@@ -2530,14 +2519,6 @@ int decode_BCCH_MBMS_DLSCH_Message(
         break;
     }
   }*/
-  /*if ((rrc_get_sub_state(ctxt_pP->module_id) == RRC_SUB_STATE_IDLE_SIB_COMPLETE)
-  #if defined(ENABLE_USE_MME)
-      && (UE_rrc_inst[ctxt_pP->module_id].initialNasMsg.data != NULL)
-  #endif
-     ) {
-    rrc_ue_generate_RRCConnectionRequest(ctxt_pP, 0);
-    rrc_set_sub_state( ctxt_pP->module_id, RRC_SUB_STATE_IDLE_CONNECTING );
-  }*/
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_UE_DECODE_BCCH, VCD_FUNCTION_OUT );
   return 0;
 }
diff --git a/openair2/RRC/LTE/rrc_defs.h b/openair2/RRC/LTE/rrc_defs.h
index f5b1db8b8cdbb5366eb03c12187488d4afc47559..40aad67a06be702dbb1bc71b03d6845f8fca925d 100644
--- a/openair2/RRC/LTE/rrc_defs.h
+++ b/openair2/RRC/LTE/rrc_defs.h
@@ -173,13 +173,6 @@ extern pthread_mutex_t slrb_mutex;
 //the thread function
 void *send_UE_status_notification(void *);
 
-
-
-//#include "COMMON/openair_defs.h"
-#ifndef USER_MODE
-  //#include <rtai.h>
-#endif
-
 #include "LTE_SystemInformationBlockType1.h"
 #include "LTE_SystemInformation.h"
 #include "LTE_RRCConnectionReconfiguration.h"
@@ -217,12 +210,6 @@ void *send_UE_status_notification(void *);
 #define NB_SIG_CNX_UE 2 //MAX_MANAGED_RG_PER_MOBILE
 #define NB_CNX_UE 2//MAX_MANAGED_RG_PER_MOBILE
 
-#ifndef NO_RRM
-  #include "L3_rrc_interface.h"
-  #include "rrc_rrm_msg.h"
-  #include "rrc_rrm_interface.h"
-#endif
-
 
 #include "intertask_interface.h"
 
diff --git a/openair2/RRC/LTE/rrc_eNB.c b/openair2/RRC/LTE/rrc_eNB.c
index 2fcafec77845178c625c04a78ad7dc0e059fdda2..819608fbe2ac991cb6b71097eeaa4635c3dcd91b 100644
--- a/openair2/RRC/LTE/rrc_eNB.c
+++ b/openair2/RRC/LTE/rrc_eNB.c
@@ -7279,9 +7279,6 @@ rrc_eNB_decode_ccch(
                 PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
                 rrcConnectionReestablishmentRequest->ue_Identity.physCellId,
                 ue_context_p->ue_context.reestablishment_cause);
-#ifndef NO_RRM
-          send_msg(&S_rrc, msg_rrc_MR_attach_ind(ctxt_pP->module_id, Mac_id));
-#else
           ue_context_p->ue_context.primaryCC_id = CC_id;
           //LG COMMENT Idx = (ue_mod_idP * NB_RB_MAX) + DCCH;
           Idx = DCCH;
@@ -7335,7 +7332,6 @@ rrc_eNB_decode_ccch(
                                    );
           }
 
-#endif //NO_RRM
         }
         break;
 
@@ -7524,9 +7520,6 @@ rrc_eNB_decode_ccch(
           }
         }
 
-#ifndef NO_RRM
-        send_msg(&S_rrc, msg_rrc_MR_attach_ind(ctxt_pP->module_id, Mac_id));
-#else
         ue_context_p->ue_context.primaryCC_id = CC_id;
         //LG COMMENT Idx = (ue_mod_idP * NB_RB_MAX) + DCCH;
         Idx = DCCH;
@@ -7579,7 +7572,6 @@ rrc_eNB_decode_ccch(
                                  );
         }
 
-#endif //NO_RRM
         break;
 
       default:
diff --git a/openair2/RRC/LTE/rrc_rrm_interface.c b/openair2/RRC/LTE/rrc_rrm_interface.c
deleted file mode 100644
index fe15dae46d64a00caba79803873f6f07cfd10310..0000000000000000000000000000000000000000
--- a/openair2/RRC/LTE/rrc_rrm_interface.c
+++ /dev/null
@@ -1,277 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1  (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- *      contact@openairinterface.org
- */
-
-/*!
-*******************************************************************************
-
-\file     rrm_sock.c
-
-\brief    RRM (Radio Ressource Manager ) Socket: communication withe other medium:
-          - RRC ,
-          - CMM ,
-          - PUSU
-
-\author   BURLOT Pascal
-
-\date     10/07/08
-
-
-\par     Historique:
-        P.BURLOT 2009-01-20
-            + send a message via fifo:
-                - sending header
-                - and data if any
-
-*******************************************************************************
-*/
-
-#ifndef RRC_RRM_FIFOS_XFACE
-  #include <stdio.h>
-  #include <stdlib.h>
-  #include <errno.h>
-  #include <string.h>
-  #include <unistd.h>
-
-  #include <sys/socket.h>
-  #include <sys/un.h>
-
-#else
-
-  #include<rtai_fifos.h>
-
-#endif
-
-#include "rrc_rrm_interface.h"
-#include "defs.h"
-//! \brief  Taille maximale de la charge utile
-#define SIZE_MAX_PAYLOAD  2048
-//! \brief PID de l'espace utilisateur (Netlink mode)
-//#define PID_USERSPACE   0xAA
-
-
-
-
-
-#ifndef RRC_RRM_FIFOS_XFACE
-
-/*!
-*******************************************************************************
-\brief  This function opens a unix socket for the rrm communication
-\return  The return value is a socket handle
-*/
-int open_socket(
-  sock_rrm_t *s,    ///< socket descriptor
-  char *path_local,   ///< local socket path if unix socket
-  char *path_dest,    ///< host  Socket path if unix socket
-  int rrm_inst        ///< instance of the rrm entity
-) {
-  /* Unix socket */
-  int   socket_fd ;
-  int   len ;
-
-  if ((socket_fd = socket(AF_UNIX, SOCK_DGRAM, 0)) == -1) {
-    perror("unix socket");
-    return -1 ;
-  }
-
-  memset(&(s->un_local_addr), 0, sizeof(struct  sockaddr_un));
-  s->un_local_addr.sun_family = AF_UNIX;
-  sprintf(s->un_local_addr.sun_path,"%s%d", path_local, rrm_inst );
-  unlink(s->un_local_addr.sun_path);
-  msg("local %s\n",s->un_local_addr.sun_path);
-  len = strlen((s->un_local_addr).sun_path) + sizeof((s->un_local_addr).sun_family);
-
-  if (bind(socket_fd, (struct sockaddr *)&(s->un_local_addr), len) == -1) {
-    perror("bind");
-    return -1 ;
-  }
-
-  memset(&(s->un_dest_addr), 0, sizeof(struct   sockaddr_un));
-  s->un_dest_addr.sun_family = AF_UNIX;
-  sprintf(s->un_dest_addr.sun_path,"%s%d", path_dest, rrm_inst );
-  msg("Dest %s\n",s->un_dest_addr.sun_path);
-  s->s = socket_fd ;
-  return socket_fd ;
-}
-/*!
-*******************************************************************************
-\brief  This function closes a RRM socket
-\return none
-*/
-void close_socket(
-  sock_rrm_t *sock  ///< the socket handle
-) {
-  shutdown(sock->s, SHUT_RDWR);
-  close(sock->s);
-}
-
-/*!
-*******************************************************************************
-\brief  This function send a buffer message to the unix socket
-\return if OK then "0" is returned else "-1"
-*/
-char BUFF[2048];
-int send_msg_sock(
-  sock_rrm_t *s,   ///< socket descriptor
-  msg_t *smsg       ///< the message to send
-) {
-  /* Unix socket */
-  int         ret   = 0 ;
-  //  char        *buf    = NULL;
-  struct  msghdr    msghd ;
-  struct  iovec     iov;
-  int         taille  = sizeof(msg_head_t)  ;
-
-  if ( smsg == NULL ) {
-    return -1 ;
-  }
-
-  if ( smsg->data != NULL ) {
-    taille += smsg->head.size ;
-  }
-
-  //buf = RRM_MALLOC(char, taille);
-  //if (buf ==NULL)
-  //return -1 ;
-  memcpy( BUFF, &(smsg->head), sizeof(msg_head_t) ) ;
-  memcpy( BUFF+sizeof(msg_head_t), smsg->data, smsg->head.size ) ;
-  iov.iov_base    = (void *)BUFF;
-  iov.iov_len     = taille ;
-  msghd.msg_name        = (void *)&(s->un_dest_addr);
-  msghd.msg_namelen     = sizeof(s->un_dest_addr);
-  msghd.msg_iov         = &iov;
-  msghd.msg_iovlen      = 1;
-  msghd.msg_control     = NULL ;
-  msghd.msg_controllen  =   0 ;
-
-  if ( sendmsg(s->s, &msghd, 0) < 0 ) {
-    ret = -1;
-    msg("socket %d, dest %s\n",s->s,s->un_dest_addr.sun_path);
-    perror("sendmsg:unix socket");
-  }
-
-  //RRM_FREE(buf) ;
-  //RRM_FREE(msg->data) ;
-  //RRM_FREE(msg) ;
-  return ret ;
-}
-
-/*!
-*******************************************************************************
-\brief  This function read a buffer from a unix socket
-\return the function returns a message pointer. If the pointeur is NULL, a error
-        is happened.
-*/
-char *recv_msg(
-  sock_rrm_t *s   ///< socket descriptor
-) {
-  /* Unix socket */
-  char        *buf = NULL;
-  char        *smsg = NULL;
-  struct  msghdr    msghd ;
-  struct  iovec     iov;
-  int         size_msg ;
-  msg_head_t      *head  ;
-  int         ret ;
-  int taille =  SIZE_MAX_PAYLOAD ;
-  buf         = RRM_CALLOC( char,taille);
-
-  if ( buf == NULL ) {
-    return NULL ;
-  }
-
-  iov.iov_base      = (void *)buf;
-  iov.iov_len       = taille ;
-  msghd.msg_name      = (void *)&(s->un_dest_addr);
-  msghd.msg_namelen   = sizeof(s->un_dest_addr);
-  msghd.msg_iov       = &iov;
-  msghd.msg_iovlen    = 1;
-  msghd.msg_control   = NULL ;
-  msghd.msg_controllen= 0 ;
-  ret = recvmsg(s->s, &msghd, 0 ) ;
-
-  if ( ret <= 0  ) {
-    // non-blocking socket
-    // perror("PB recvmsg_un");
-    RRM_FREE(buf);
-    return NULL ;
-  }
-
-  if (msghd.msg_flags != 0 ) {
-    fprintf(stderr,"error recvmsg_un: 0x%02x\n", msghd.msg_flags) ;
-    RRM_FREE(buf);
-    return NULL ;
-  }
-
-  head    = (msg_head_t *) buf  ;
-  size_msg  = sizeof(msg_head_t) + head->size ;
-  smsg    = RRM_CALLOC(char, size_msg ) ;
-
-  if ( smsg != NULL ) {
-    memcpy( smsg, buf, size_msg ) ;
-  }
-
-  RRM_FREE( buf ) ;
-  return smsg ;
-}
-
-#else  //XFACE
-
-int send_msg_fifo(int *s, msg_t *fmsg) {
-  int   ret   = 0, ret1;
-  int  taille = sizeof(msg_head_t)  ;
-  msg("write on fifos %d, msg %p\n",*s,fmsg);
-
-  if ( fmsg == NULL ) {
-    return -1 ;
-  }
-
-  // envoi le header
-  ret1 = rtf_put (*s,(char *) &(fmsg->head), taille);
-
-  if(ret1 <0) {
-    msg("rtf_put H ERR %d\n",ret1);
-    rtf_reset(*s);
-    return ret1;
-  }
-
-  ret=ret1;
-
-  // envoi les datas si elles sont definis
-  if ( fmsg->data != NULL ) {
-    ret1 += rtf_put (*s,(char *) fmsg->data, fmsg->head.size);
-
-    if(ret1 <0) {
-      msg("rtf_put D ERR %d\n",ret1);
-      rtf_reset(*s);
-      return ret1;
-    }
-  }
-
-  ret+=ret1;
-  return ret;
-}
-
-#endif //XFACE
-
-int send_msg(void *s, msg_t *smsg) {
-  send_msg_sock((sock_rrm_t *)s, smsg);
-}
diff --git a/openair2/RRC/NR/MESSAGES/asn1_msg.c b/openair2/RRC/NR/MESSAGES/asn1_msg.c
index c619f6181ffdefce9c4e4c7b27294458fab242b5..0d95fce930a0e618f27621cded5c6c13668c9da4 100755
--- a/openair2/RRC/NR/MESSAGES/asn1_msg.c
+++ b/openair2/RRC/NR/MESSAGES/asn1_msg.c
@@ -133,18 +133,6 @@
 
 #include "common/ran_context.h"
 
-//#include "PHY/defs.h"
-/*#ifndef USER_MODE
-#define msg printk
-#ifndef errno
-int errno;
-#endif
-#else
-# if !defined (msg)
-#   define msg printf
-# endif
-#endif*/
-
 //#define XER_PRINT
 
 typedef struct xer_sprint_string_s {
diff --git a/openair2/RRC/NR/rrc_gNB.c b/openair2/RRC/NR/rrc_gNB.c
index 95852c8ccbebc68cb3f6130e8f20219d95431b74..34e570070df862f1e0fb263eb4e98361c9816cf3 100755
--- a/openair2/RRC/NR/rrc_gNB.c
+++ b/openair2/RRC/NR/rrc_gNB.c
@@ -3274,57 +3274,6 @@ void *rrc_gnb_task(void *args_p) {
       case GTPV1U_GNB_DELETE_TUNNEL_RESP:
         break;
 
-      /*
-      #if defined(ENABLE_USE_MME)
-
-            // Messages from S1AP
-          case S1AP_DOWNLINK_NAS:
-            rrc_eNB_process_S1AP_DOWNLINK_NAS(msg_p, msg_name_p, instance, &rrc_gNB_mui);
-            break;
-
-          case S1AP_INITIAL_CONTEXT_SETUP_REQ:
-            rrc_eNB_process_S1AP_INITIAL_CONTEXT_SETUP_REQ(msg_p, msg_name_p, instance);
-            break;
-
-          case S1AP_UE_CTXT_MODIFICATION_REQ:
-            rrc_eNB_process_S1AP_UE_CTXT_MODIFICATION_REQ(msg_p, msg_name_p, instance);
-            break;
-
-          case S1AP_PAGING_IND:
-            LOG_D(RRC, "[eNB %d] Received Paging message from S1AP: %s\n", instance, msg_name_p);
-            rrc_eNB_process_PAGING_IND(msg_p, msg_name_p, instance);
-            break;
-
-          case S1AP_E_RAB_SETUP_REQ:
-            rrc_eNB_process_S1AP_E_RAB_SETUP_REQ(msg_p, msg_name_p, instance);
-            LOG_D(RRC, "[eNB %d] Received the message %s\n", instance, msg_name_p);
-            break;
-
-          case S1AP_E_RAB_MODIFY_REQ:
-            rrc_eNB_process_S1AP_E_RAB_MODIFY_REQ(msg_p, msg_name_p, instance);
-            break;
-
-          case S1AP_E_RAB_RELEASE_COMMAND:
-            rrc_eNB_process_S1AP_E_RAB_RELEASE_COMMAND(msg_p, msg_name_p, instance);
-            break;
-
-          case S1AP_UE_CONTEXT_RELEASE_REQ:
-            rrc_eNB_process_S1AP_UE_CONTEXT_RELEASE_REQ(msg_p, msg_name_p, instance);
-            break;
-
-          case S1AP_UE_CONTEXT_RELEASE_COMMAND:
-            rrc_eNB_process_S1AP_UE_CONTEXT_RELEASE_COMMAND(msg_p, msg_name_p, instance);
-            break;
-
-          case GTPV1U_ENB_DELETE_TUNNEL_RESP:
-            ///Nothing to do. Apparently everything is done in S1AP processing
-            //LOG_I(RRC, "[eNB %d] Received message %s, not processed because procedure not synched\n",
-            //instance, msg_name_p);
-            AssertFatal(false, "Removed double mechanism for same feature: now delete_tunnel() function should be called\n");
-            break;
-
-      #endif
-      */
       /* Messages from gNB app */
       case NRRRC_CONFIGURATION_REQ:
         LOG_I(NR_RRC, "[gNB %ld] Received %s : %p\n", instance, msg_name_p,&NRRRC_CONFIGURATION_REQ(msg_p));
diff --git a/openair2/RRC/NR_UE/rrc_list.h b/openair2/RRC/NR_UE/rrc_list.h
index 32a452e4a2290e320a393ebfc03b8e6e622a4a46..20a0adad56639cac726dea8cb345f8804e22022c 100644
--- a/openair2/RRC/NR_UE/rrc_list.h
+++ b/openair2/RRC/NR_UE/rrc_list.h
@@ -111,4 +111,4 @@
 #define RRC_LIST_ENTRY(list, i)         \
         list.entries[i]
 
-#endif
\ No newline at end of file
+#endif
diff --git a/openair2/SIMULATION/NR_RRC/itti_sim.c b/openair2/SIMULATION/NR_RRC/itti_sim.c
index 0cd022217db1a75d94ef2a67cfd333c58491c509..67a03d8b06711fa58176f0d31136ce57f6e9b570 100644
--- a/openair2/SIMULATION/NR_RRC/itti_sim.c
+++ b/openair2/SIMULATION/NR_RRC/itti_sim.c
@@ -60,10 +60,6 @@ unsigned short config_frames[4] = {2,9,11,13};
 #include "common/utils/LOG/vcd_signal_dumper.h"
 #include "UTIL/OPT/opt.h"
 
-#ifndef OPENAIR2
-  #include "UTIL/OTG/otg_vars.h"
-#endif
-
 #include "intertask_interface.h"
 
 
diff --git a/openair2/UTIL/OMG/makefile_old b/openair2/UTIL/OMG/makefile_old
deleted file mode 100644
index 7bc551cb03c968ea5f174446e8f802c943e07b22..0000000000000000000000000000000000000000
--- a/openair2/UTIL/OMG/makefile_old
+++ /dev/null
@@ -1,123 +0,0 @@
-include $(OPENAIR_TARGETS)/Makefile.common
-ifdef TEST_OMG
-
-CC= gcc
-
-OBJstatic = OMG.c common.c static.c
-OBJrwp = OMG.c common.c job.c rwp.c
-OBJrwalk = OMG.c common.c job.c rwalk.c
-OBJtrace = OMG.c common.c job.c trace.c mobility_parser.c hashtable.c
-OBJsumo = OMG.c common.c sumo.c client_traci_OMG.c socket_traci_OMG.c storage_traci_OMG.c id_manager.c
-
-OBJ = OMG.c common.c static.c job.c rwp.c rwalk.c trace.c sumo.c mobility_parser.c hashtable.c client_traci_OMG.c socket_traci_OMG.c storage_traci_OMG.c id_manager.c
-
-CFLAGS += -m32 -DTEST_OMG
-
-.PHONY: help staticOMG rwpOMG clean
-
-help:
-	@echo '  "make staticOMG" to compile the STATIC version'
-	@echo '  "make rwpOMG" to compile the RWP version'
-	@echo '  "make rwalkOMG" to compile the RWALK version'
-	@echo '  "make traceOMG" to compile the TRACE version'
-	@echo '  "make sumoOMG" to compile the SUMO version'
-	@echo '  "make clean" to remove the generated files and restore the original distribution'
-	@echo '  "make OMG" to compile the complete version'
-
-
-staticOMG:	${OBJstatic} 
-	${CC} ${OBJstatic} -o staticOMG $(CFLAGS)
-
-	
-rwpOMG:	${OBJrwp} 
-	${CC} ${OBJrwp} -lm -o rwpOMG $(CFLAGS)
-	@#-lm: used to link to math lib
-	 
-traceOMG:${OBJtrace} 
-	${CC} ${OBJtrace} -lm -o traceOMG $(CFLAGS)
-
-rwalkOMG:	${OBJrwalk} 
-	${CC} ${OBJrwalk} -lm -o rwalkOMG $(CFLAGS)
-
-sumoOMG:	${OBJsumo} 
-	${CC} ${OBJsumo} -lm -o rwalkOMG $(CFLAGS)
-
-OMG:	${OBJ} 
-	${CC} ${OBJ} -lm -o OMG $(CFLAGS)
-
-clean:
-	@echo "Cleaning"
-	@rm OMG
-	@#rm rwpOMG
-	@#rm rwalkOMG
-	@#rm traceOMG
-	@#rm staticOMG
-        @#rm OMG
-	
-else
-
-TOP_DIR      = ../..
-OPENAIR1_TOP = ../..
-OPENAIR2_TOP = ../../../openair2
-OPENAIR3_TOP = ../../../openair3
-OPENAIR3     = $(OPENAIR3_DIR)
-
-CFLAGS += -DPHYSIM -DNODE_RG -DNB_ANTENNAS_RX=2 -DNB_ANTENNAS_TX=2 -DMAX_MODULES=1 -I/usr/include/X11 #-Wno-packed-bitfield-compat
-
-
-CFLAGS += -DOPENAIR_LTE -DOPENAIR2 #-DOFDMA_ULSCH -DIFFT_FPGA -DIFFT_FPGA_UE 
-
-#CFLAGS += -DXFORMS
-
-ifdef DEBUG_PHY
-CFLAGS += -DDEBUG_PHY
-endif
-
-ifdef PDCP_USE_NETLINK
-CFLAGS += -DPDCP_USE_NETLINK -DLINUX -DDEBUG_CONTROL
-endif
-
-include $(OPENAIR1_DIR)/PHY/Makefile.inc
-include $(OPENAIR1_DIR)/SCHED/Makefile.inc
-include $(OPENAIR2_DIR)/LAYER2/Makefile.inc
-include $(OPENAIR1_DIR)/SIMULATION/ETH_TRANSPORT/Makefile.inc
-
-SIMULATION_OBJS  = $(TOP_DIR)/SIMULATION/TOOLS/gauss.o  
-SIMULATION_OBJS += $(TOP_DIR)/SIMULATION/TOOLS/random_channel.o  
-SIMULATION_OBJS += $(TOP_DIR)/SIMULATION/TOOLS/rangen_double.o  
-SIMULATION_OBJS += $(TOP_DIR)/SIMULATION/TOOLS/taus.o  
-SIMULATION_OBJS += $(TOP_DIR)/SIMULATION/TOOLS/multipath_channel.o
-SIMULATION_OBJS += $(TOP_DIR)/SIMULATION/RF/rf.o
-SIMULATION_OBJS += $(TOP_DIR)/SIMULATION/RF/adc.o
-SIMULATION_OBJS += $(TOP_DIR)/SIMULATION/RF/dac.o
-
-OBJ = $(PHY_OBJS) $(SIMULATION_OBJS) $(ETHERNET_TRANSPORT_OBJS) $(TOOLS_OBJS) $(SCHED_OBJS) $(STATS_OBJS)
-
-all: physim
-
-
-$(OBJ) : %.o : %.c
-	$(CC) -c $(CFLAGS) $(EXTRA_CFLAGS) -DPHY_CONTEXT=1 -I$(TOP_DIR) $(L2_incl) -o $@ $<
-
-$(L2_OBJS) : %.o : %.c
-	$(CC) -c $(CFLAGS) $(EXTRA_CFLAGS) -DMAC_CONTEXT=1 -DPHY_CONTEXT=1 -I$(TOP_DIR) $(L2_incl) -o $@ $<
-
-physim : $(OBJ) $(L2_OBJS) OMG.c common.c static.c job.c rwp.c rwalk.c hashtable.c mobility_parser.c trace.c -I$(TOP_DIR) $(L2_incl) -o physim $(CFLAGS) $(EXTRA_CFLAGS) $(OBJ) $(L2_OBJS) -lm -lforms -L/usr/local/lib -lforms -lX11 -L/usr/X11R6/lib -lXpm -lblas -lpthread
-
-clean:
-	rm -f physim
-	rm -f $(OBJ)
-	rm -f $(L2_OBJS)
-	rm -f *.o
-	rm -f *.exe*
-
-cleanl1:
-	rm -f physim
-	rm -f $(OBJ)
-	rm -f *.o
-	rm -f *.exe
-cleanl2:
-	rm -f $(L2_OBJS)
-
-endif
-
diff --git a/openair2/UTIL/OTG/otg_kpi.c b/openair2/UTIL/OTG/otg_kpi.c
index ac2fff89fe4f40773450db842b1656e5f94f31bf..c55aecf2390d13508cd4ac1ab9493790b073eada 100644
--- a/openair2/UTIL/OTG/otg_kpi.c
+++ b/openair2/UTIL/OTG/otg_kpi.c
@@ -37,8 +37,8 @@ unsigned int start_log_GP=0;
 unsigned int start_log_GP_bg=0;
 unsigned int start_log_jitter=0;
 
-#include"otg_kpi.h"
-#include"otg_externs.h"
+#include "otg_kpi.h"
+#include "otg_externs.h"
 
 extern unsigned char NB_eNB_INST;
 extern uint16_t NB_UE_INST;
diff --git a/openair2/UTIL/OTG/otg_rx_socket.h b/openair2/UTIL/OTG/otg_rx_socket.h
index e7062aaf58c2cb62bc4dd1f978526782c9f199ec..b0c6d1b3646eaade84fd80d104d7cb6965f57743 100644
--- a/openair2/UTIL/OTG/otg_rx_socket.h
+++ b/openair2/UTIL/OTG/otg_rx_socket.h
@@ -32,7 +32,7 @@
 #ifndef __OTG_RX_SOCKET_H__
 #define __OTG_RX_SOCKET_H__
 
-#include"otg.h"
+#include "otg.h"
 
 
 //-----------------------begin func proto-------------------
diff --git a/openair2/UTIL/OTG/otg_tx_socket.c b/openair2/UTIL/OTG/otg_tx_socket.c
index 073b9b6ddd83f1fb22579ffea539ca6a823f1e34..070e44f361517c09ab29d96abd64a0b749c9e98f 100644
--- a/openair2/UTIL/OTG/otg_tx_socket.c
+++ b/openair2/UTIL/OTG/otg_tx_socket.c
@@ -30,7 +30,7 @@
 * \warning
 */
 
-#include"otg_tx_socket.h"
+#include "otg_tx_socket.h"
 #include "otg_vars.h"
 
 
diff --git a/openair2/UTIL/OTG/otg_tx_socket.h b/openair2/UTIL/OTG/otg_tx_socket.h
index 17568244fa73cf33ffea5f79cf9bead75c39223f..1d2345c2424c3fd74da3b71f27f5dd9ab642a865 100644
--- a/openair2/UTIL/OTG/otg_tx_socket.h
+++ b/openair2/UTIL/OTG/otg_tx_socket.h
@@ -37,8 +37,8 @@
 #include <unistd.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include"otg.h"
-#include"otg_tx.h"
+#include "otg.h"
+#include "otg_tx.h"
 
 
 //-----------------------begin func proto-------------------
diff --git a/openair3/GTPV1-U/gtpv1u_eNB_defs.h b/openair3/GTPV1-U/gtpv1u_eNB_defs.h
index 79d9a1dcdd54cb28c850d38b0cd161c6d3478719..fb317e4ca6ff8bc7b8e9b4fa28a243d6b6bf6ceb 100644
--- a/openair3/GTPV1-U/gtpv1u_eNB_defs.h
+++ b/openair3/GTPV1-U/gtpv1u_eNB_defs.h
@@ -111,14 +111,6 @@ typedef struct gtpv1u_data_s {
   uint16_t              seq_num;
   uint8_t               restart_counter;
 
-#ifdef GTPU_IN_KERNEL
-  char                 *interface_name;
-  int                   interface_index;
-
-  struct iovec         *malloc_ring;
-  void                 *sock_mmap_ring[16];
-  int                   sock_desc[16]; // indexed by marking
-#endif
 } gtpv1u_data_t;
 
 int
diff --git a/openair3/GTPV1-U/gtpv1u_gNB_defs.h b/openair3/GTPV1-U/gtpv1u_gNB_defs.h
index ddc8b4445e0f52dc92c5f22cf34420d72dcf1ce7..d4356aa3cf66ff5e2a24192c20c5fcc4256a21c8 100644
--- a/openair3/GTPV1-U/gtpv1u_gNB_defs.h
+++ b/openair3/GTPV1-U/gtpv1u_gNB_defs.h
@@ -102,14 +102,6 @@ typedef struct nr_gtpv1u_data_s {
   uint16_t              seq_num;
   uint8_t               restart_counter;
 
-#ifdef GTPU_IN_KERNEL
-  char                 *interface_name;
-  int                   interface_index;
-
-  struct iovec         *malloc_ring;
-  void                 *sock_mmap_ring[16];
-  int                   sock_desc[16]; // indexed by marking
-#endif
 } nr_gtpv1u_data_t;
 
 
diff --git a/targets/ARCH/COMMON/common_lib.h b/targets/ARCH/COMMON/common_lib.h
index 7b934822ea24b389445251c45bb96476c967af99..0c71a9999a4c780132ab05ec4d4918cd429c841c 100644
--- a/targets/ARCH/COMMON/common_lib.h
+++ b/targets/ARCH/COMMON/common_lib.h
@@ -57,9 +57,7 @@
 #define RAU_REMOTE_THIRDPARTY_RADIO_HEAD 2
 #define MAX_WRITE_THREAD_PACKAGE     10
 #define MAX_WRITE_THREAD_BUFFER_SIZE 8
-#ifndef MAX_CARDS
-  #define MAX_CARDS 8
-#endif
+#define MAX_CARDS 8
 
 typedef int64_t openair0_timestamp;
 typedef volatile int64_t openair0_vtimestamp;
diff --git a/targets/COMMON/create_tasks.c b/targets/COMMON/create_tasks.c
index 3e0d97f60a09aa82be414e510f0f396dd595303a..ffeb368e73786ac09e7aa98b81879d5d3f2d5f55 100644
--- a/targets/COMMON/create_tasks.c
+++ b/targets/COMMON/create_tasks.c
@@ -25,7 +25,6 @@
 # include "targets/RT/USER/lte-softmodem.h"
 # include "common/ran_context.h"
 
-#ifdef OPENAIR2
   #include "sctp_eNB_task.h"
   #include "x2ap_eNB.h"
   #include "s1ap_eNB.h"
@@ -36,7 +35,6 @@
     #include "lteRALenb.h"
   #endif
   #include "RRC/LTE/rrc_defs.h"
-#endif
 # include "f1ap_cu_task.h"
 # include "f1ap_du_task.h"
 # include "enb_app.h"
diff --git a/targets/COMMON/create_tasks_mbms.c b/targets/COMMON/create_tasks_mbms.c
index 579e851ea70e699a113a65baff99abb0bc5905df..8b1736853f2c648da1b962923d7608afc171cf16 100644
--- a/targets/COMMON/create_tasks_mbms.c
+++ b/targets/COMMON/create_tasks_mbms.c
@@ -25,7 +25,6 @@
 # include "targets/RT/USER/lte-softmodem.h"
 # include "common/ran_context.h"
 
-#ifdef OPENAIR2
     #include "sctp_eNB_task.h"
     #include "x2ap_eNB.h"
     #include "s1ap_eNB.h"
@@ -40,7 +39,6 @@
     #include "lteRALenb.h"
   #endif
   #include "RRC/LTE/rrc_defs.h"
-#endif
 # include "f1ap_cu_task.h"
 # include "f1ap_du_task.h"
 # include "enb_app.h"
diff --git a/targets/COMMON/create_tasks_ue.c b/targets/COMMON/create_tasks_ue.c
index 06f36641e73e695bc015c4fc7068b043e3a55a51..3b9b7cf7bb324e0d93cd9c79ef8af1fd1534d7fa 100644
--- a/targets/COMMON/create_tasks_ue.c
+++ b/targets/COMMON/create_tasks_ue.c
@@ -23,7 +23,6 @@
 # include "create_tasks.h"
 # include "common/utils/LOG/log.h"
 
-#ifdef OPENAIR2
   #include "sctp_eNB_task.h"
   #include "s1ap_eNB.h"
   #include "openair3/NAS/UE/nas_ue_task.h"
@@ -34,7 +33,6 @@
     #include "lteRALenb.h"
   #endif
   #include "RRC/LTE/rrc_defs.h"
-#endif
 # include "enb_app.h"
 
 int create_tasks_ue(uint32_t ue_nb) {
diff --git a/targets/Makefile.common b/targets/Makefile.common
deleted file mode 100644
index ecd5f3821a8e3fabd538948d73b25bee6a6b69df..0000000000000000000000000000000000000000
--- a/targets/Makefile.common
+++ /dev/null
@@ -1,248 +0,0 @@
-# This file gathers compilation directive shared between lte-softmodem and oaisim
-export COMMON_UTILS_DIR    = $(OPENAIR_DIR)/common/utils
-export UE_NAS_DIR          = $(OPENAIR_DIR)/openair3/NAS
-export S1AP_DIR            = $(OPENAIR_DIR)/openair3/S1AP
-export X2AP_DIR            = $(OPENAIR_DIR)/openair2/X2AP
-export SCTP_DIR            = $(OPENAIR_DIR)/openair3/SCTP
-export UDP_DIR             = $(OPENAIR_DIR)/openair3/UDP
-export GTPV1U_DIR          = $(OPENAIR_DIR)/openair3/GTPV1-U
-export SECU_DIR            = $(OPENAIR_DIR)/openair3/SECU
-
-UE_NAS_OBJ_DIR      = $(subst $(OPENAIR_DIR),$(OBJS_DIR),$(UE_NAS_DIR))
-SECU_OBJ_DIR        = $(subst $(OPENAIR_DIR),$(OBJS_DIR),$(SECU_DIR))
-S1AP_OBJ_DIR        = $(subst $(OPENAIR_DIR),$(OBJS_DIR),$(S1AP_DIR))
-X2AP_OBJ_DIR        = $(subst $(OPENAIR_DIR),$(OBJS_DIR),$(X2AP_DIR))
-SCTP_OBJ_DIR        = $(subst $(OPENAIR_DIR),$(OBJS_DIR),$(SCTP_DIR))
-UDP_OBJ_DIR         = $(subst $(OPENAIR_DIR),$(OBJS_DIR),$(UDP_DIR))
-GTPV1U_OBJ_DIR      = $(subst $(OPENAIR_DIR),$(OBJS_DIR),$(GTPV1U_DIR))
-
-#Export common cflags (between softmodem and oaisim)
-COMMON_CFLAGS		= \
-	-D'FIRMWARE_VERSION="$(SVN_REV) - $(DATE_REV)"' \
-	-Wall                       \
-	-fno-strict-aliasing        \
-	-O2                         \
-	-Werror=implicit-function-declaration
-
-# the code already uses C99 integer type (like int32_t)
-# switch on full support for C99 + GNU extensions
-CFLAGS += -std=gnu99
-
-ITTI_MESSAGES_H		= messages_xml.h
-ITTI_MESSAGES_XML	= messages.xml
-ITTI_MESSAGES_FILE	= $(ITTI_DIR)/intertask_interface_types.h
-
-include $(COMMON_UTILS_DIR)/Makefile.inc
-include $(OPENAIR_TARGETS)/COMMON/Makefile.inc
-include $(OPENAIR2_DIR)/NAS/Makefile.inc
-
-ifeq ($(SECU), 1)	
-ifeq ($(NETTLE_FOUND), 0)
-@(warning "Nettle library >= 2.5 is not installed on your system, nettle-dev lib needed, continuing with security disabled")
-SECU=0
-else
-ifeq ($(OPENSSL_FOUND), 0)
-@(warning "openssl library is not installed on your system, openssl lib needed, continuing with security disabled")
-SECU=0
-else
-LIBS += $(OPENSSL_LIBS) $(NETTLE_LIBS)
-endif
-endif
-endif
-
-CFLAGS += -DJUMBO_FRAME
-
-ifdef MAX_NUM_CCs
-CFLAGS           += -DMAX_NUM_CCs=$(MAX_NUM_CCs)
-COMMON_CFLAGS    += -DMAX_NUM_CCs=$(MAX_NUM_CCs)
-else
-CFLAGS           += -DMAX_NUM_CCs=1
-COMMON_CFLAGS    += -DMAX_NUM_CCs=1
-endif
-
-ifeq ($(ENABLE_RAL), 1)
-CFLAGS += -DENABLE_RAL
-endif
-
-ifeq ($(PDCP_USE_NETLINK),1)  
-CFLAGS += -DPDCP_USE_NETLINK
-endif
-ifeq ($(LIBCONFIG_LONG),1)	
-CFLAGS += -DLIBCONFIG_LONG
-endif
-
-# add R9
-ifeq ($(USE_MME), R10)	
-COMMON_CFLAGS		+= -DENABLE_USE_MME
-ENABLE_ITTI = 1
-ifeq ($(LINK_ENB_PDCP_TO_GTPV1U), 1)	
-    COMMON_CFLAGS       += -DLINK_ENB_PDCP_TO_GTPV1U
-# COMMON_CFLAGS       += -I$(UDP_DIR)
-# COMMON_CFLAGS       += -I$(GTPV1U_DIR)
-# COMMON_CFLAGS       += -I$(GTPV1U_DIR)/nw-gtpv1u/shared
-endif
-endif
-
-ifeq ($(ENABLE_ITTI),1)
-COMMON_CFLAGS		+= -DENABLE_ITTI
-COMMON_CFLAGS		+= -I$(OPENAIR1_DIR)
-COMMON_CFLAGS		+= -I$(OPENAIR2_DIR)/NAS
-COMMON_CFLAGS 	 	+= $(L2_incl)
-COMMON_CFLAGS		+= $(UTILS_incl)
-SHARED_DEPENDENCIES += $(ITTI_MESSAGES_H)
-endif
-
-ifeq ($(USE_MME), R10)	
-LIBS			+= $(UE_NAS_OBJ_DIR)/libuenas.a $(SECU_OBJ_DIR)/libsecu.a 
-LIBS			+= $(S1AP_OBJ_DIR)/libs1ap.a $(SCTP_OBJ_DIR)/libsctp.a -lsctp -lcrypt
-LIBS			+= $(UDP_OBJ_DIR)/libudp.a $(GTPV1U_OBJ_DIR)/libgtpv1u.a 
-
-ifdef X2AP
-LIBS			+= $(X2AP_OBJ_DIR)/libx2ap.a
-SHARED_DEPENDENCIES	+= $(UE_NAS_OBJ_DIR)/libuenas.a $(SECU_OBJ_DIR)/libsecu.a $(X2AP_OBJ_DIR)/libx2ap.a $(S1AP_OBJ_DIR)/libs1ap.a $(SCTP_OBJ_DIR)/libsctp.a  $(UDP_OBJ_DIR)/libudp.a $(GTPV1U_OBJ_DIR)/libgtpv1u.a
-else 
-SHARED_DEPENDENCIES	+= $(UE_NAS_OBJ_DIR)/libuenas.a $(SECU_OBJ_DIR)/libsecu.a $(S1AP_OBJ_DIR)/libs1ap.a $(SCTP_OBJ_DIR)/libsctp.a  $(UDP_OBJ_DIR)/libudp.a $(GTPV1U_OBJ_DIR)/libgtpv1u.a
-endif 
-
-COMMON_CFLAGS		+= -DLOG_NO_THREAD 
-#-DEMIT_ASN_DEBUG
-
-openair_cn_available := $(shell if [ -d "$(UE_NAS_DIR)" ]; then echo "0" ; else  echo "1" ; fi )
-ifeq 	($(openair_cn_available), 0)
-COMMON_CFLAGS		+= -DENABLE_NAS_UE_LOGGING
-COMMON_CFLAGS		+= -I$(OPENAIR_DIR)/openair3/NAS/EURECOM-NAS/src/api/network
-COMMON_CFLAGS		+= -I$(OPENAIR_DIR)/openair3/NAS/EURECOM-NAS/src/include
-COMMON_CFLAGS		+= -I$(OPENAIR_DIR)/openair3/NAS/EURECOM-NAS/src/ies
-COMMON_CFLAGS		+= -I$(OPENAIR_DIR)/openair3/NAS/EURECOM-NAS/src/emm/msg
-COMMON_CFLAGS		+= -I$(OPENAIR_DIR)/openair3/NAS/EURECOM-NAS/src/esm/msg
-COMMON_CFLAGS		+= -I$(OPENAIR_DIR)/openair3/NAS/EURECOM-NAS/src/util
-endif
-
-UENAS_CFLAGS		= $(COMMON_CFLAGS)
-UENAS_CFLAGS		+= -I$(SECU_DIR)
-export UENAS_CFLAGS
-
-SECU_CFLAGS			= $(COMMON_CFLAGS)
-SECU_CFLAGS			+= -I$(OPENAIR_DIR)/openair3/COMMON
-SECU_CFLAGS			+= -I$(OPENAIR_DIR)/openair3/UTILS
-SECU_CFLAGS			+= -I$(SECU_DIR)
-export SECU_CFLAGS
-
-COMMON_MME_CFLAGS	 = -I$(SECU_DIR)
-COMMON_MME_CFLAGS       += -I$(SCTP_DIR)
-COMMON_MME_CFLAGS	+= -I$(X2AP_DIR) 
-COMMON_MME_CFLAGS	+= -I$(S1AP_DIR)
-COMMON_MME_CFLAGS	+= -I$(UDP_DIR)
-COMMON_MME_CFLAGS	+= -I$(GTPV1U_DIR)
-
-S1AP_CFLAGS          = $(COMMON_CFLAGS) $(COMMON_MME_CFLAGS)
-S1AP_CFLAGS         += -DENB_MODE
-S1AP_CFLAGS         += -I$(TOP_DIR)
-S1AP_CFLAGS         += $(UTIL_incl)
-export S1AP_CFLAGS
-
-X2AP_CFLAGS          = $(COMMON_CFLAGS) 
-X2AP_CFLAGS         += -DENB_MODE
-X2AP_CFLAGS         += -I$(TOP_DIR)
-X2AP_CFLAGS         += $(UTIL_incl)
-export X2AP_CFLAGS
-
-UDP_CFLAGS	 		 = $(COMMON_CFLAGS) $(COMMON_MME_CFLAGS)
-UDP_CFLAGS	 		+= -DENB_MODE
-UDP_CFLAGS	 		+= -I$(TOP_DIR)
-UDP_CFLAGS	 		+= $(UTIL_incl)
-UDP_CFLAGS	 		+= -I$(OPENAIR_DIR)/openair2/ENB_APP
-export UDP_CFLAGS
-
-GTPV1U_CFLAGS            = $(COMMON_CFLAGS) $(COMMON_MME_CFLAGS)
-GTPV1U_CFLAGS           += -DENB_MODE
-GTPV1U_CFLAGS           += -I$(TOP_DIR)
-GTPV1U_CFLAGS           += -I$(GTPV1U_DIR)/nw-gtpv1u/include
-GTPV1U_CFLAGS           += -I$(GTPV1U_DIR)/nw-gtpv1u/shared
-GTPV1U_CFLAGS           += -I$(OPENAIR_DIR)/openair2/ENB_APP
-GTPV1U_CFLAGS           += $(UTIL_incl) -I$(OPENAIR3_DIR)/UTILS
-export GTPV1U_CFLAGS
-
-GTPV1U_ENB_CFLAGS            = $(COMMON_CFLAGS)
-GTPV1U_ENB_CFLAGS           +=  $(OPENAIR_DIR)/openair2/COMMON
-GTPV1U_ENB_CFLAGS           += -I$(X2AP_DIR)
-GTPV1U_ENB_CFLAGS           += -I$(S1AP_DIR)
-GTPV1U_ENB_CFLAGS           += -I$(UDP_DIR)
-GTPV1U_ENB_CFLAGS           += -I$(GTPV1U_DIR)
-GTPV1U_ENB_CFLAGS           += -DENB_MODE
-GTPV1U_ENB_CFLAGS           += -I$(TOP_DIR)
-GTPV1U_ENB_CFLAGS           += -I$(GTPV1U_DIR)/nw-gtpv1u/include
-GTPV1U_ENB_CFLAGS           += -I$(GTPV1U_DIR)/nw-gtpv1u/shared
-GTPV1U_ENB_CFLAGS           += -I$(OPENAIR_DIR)/openair2/ENB_APP
-GTPV1U_ENB_CFLAGS           += $(UTIL_incl) -I$(OPENAIR3_DIR)/UTILS
-export GTPV1U_ENB_CFLAGS
-
-
-$(UE_NAS_OBJ_DIR)/libuenas.a: force_look
-	@$(MAKE) -C $(UE_NAS_DIR) -f Makefile.UE $(UE_NAS_OBJ_DIR)/libuenas.a OUTDIR=$(UE_NAS_OBJ_DIR)
-$(SECU_OBJ_DIR)/libsecu.a: force_look
-	@$(MAKE) -C $(SECU_DIR) -f Makefile.eNB $(SECU_OBJ_DIR)/libsecu.a OUTDIR=$(SECU_OBJ_DIR)
-$(X2AP_OBJ_DIR)/libx2ap.a: force_look
-	@$(MAKE) -C $(X2AP_DIR) -f Makefile.inc $(X2AP_OBJ_DIR)/libx2ap.a OUTDIR=$(X2AP_OBJ_DIR)
-$(S1AP_OBJ_DIR)/libs1ap.a: force_look
-	@$(MAKE) -C $(S1AP_DIR) -f Makefile.eNB $(S1AP_OBJ_DIR)/libs1ap.a OUTDIR=$(S1AP_OBJ_DIR)
-$(SCTP_OBJ_DIR)/libsctp.a: force_look
-	@$(MAKE) -C $(SCTP_DIR) -f Makefile.eNB $(SCTP_OBJ_DIR)/libsctp.a OUTDIR=$(SCTP_OBJ_DIR)
-$(UDP_OBJ_DIR)/libudp.a: force_look
-	@$(MAKE) -C $(UDP_DIR) -f Makefile.eNB $(UDP_OBJ_DIR)/libudp.a OUTDIR=$(UDP_OBJ_DIR)
-$(GTPV1U_OBJ_DIR)/libgtpv1u.a: force_look
-	@$(MAKE) -C $(GTPV1U_DIR) -f Makefile.eNB $(GTPV1U_OBJ_DIR)/libgtpv1u.a OUTDIR=$(GTPV1U_OBJ_DIR)
-
-OBJ = $(NAS_UE_OBJS) $(SECU_OBJS)
-endif
-
-export COMMON_CFLAGS
-
-ifeq ($(ENABLE_ITTI),1)	
-CFLAGS += $(COMMON_CFLAGS) $(COMMON_MME_CFLAGS) $(TARGETS_COMMON_incl)
-OBJ += $(TARGETS_COMMON_OBJS)
-
-gccxml_available = $(shell if [ `gccxml --version | grep GCC-XML -c` = "0" ]; then  echo "0" ; else  echo "1" ; fi )
-ifeq 	($(gccxml_available), 0)
-$(error gccxml is missing, please install)
-endif
-CFLAGS += -I$(OPENAIR2_DIR)/COMMON -DENABLE_ITTI $(UTILS_incl)
-endif
-
-$(ITTI_MESSAGES_XML): $(ITTI_MESSAGES_FILE)
-	@echo "Generating messages.xml ..."
-	@gccxml $(COMMON_CFLAGS) $< -fxml=$@ -I$(ITTI_DIR)
-	@$(CC) -MM $(COMMON_CFLAGS) $< > $(basename $@).d
-	@mv -f $(basename $@).d $(basename $@).d.tmp
-	@sed -e 's|.*:|$@:|' < $(basename $@).d.tmp > $(basename $@).d
-	@sed -e 's/.*://' -e 's/\\$$//' < $(basename $@).d.tmp | fmt -1 | \
-	sed -e 's/^ *//' -e 's/$$/:/' >> $(basename $@).d
-	@rm -f $(basename $@).d.tmp
-
-$(ITTI_MESSAGES_H): $(ITTI_MESSAGES_XML)
-	@echo "Generating messages_xml.h ..."
-	@sed -e 's/[ ]*//' -e 's/"/\\"/g' -e 's/^/"/' -e 's/$$/\\n"/' $< > $@
-
-force_look:
-	@true
-
-common-clean:
-	@$(RM_F_V) $(ITTI_MESSAGES_H) $(ITTI_MESSAGES_XML) $(ITTI_MESSAGES_XML:.xml=.d)
-	@$(MAKE) -C $(LFDS_DIR) -f makefile.linux clean OUTDIR=$(LFDS_OBJ_DIR)
-	@if [ -d $(UE_NAS_OBJ_DIR) ]; then $(MAKE) -C $(UE_NAS_DIR) -f Makefile.UE clean OUTDIR=$(UE_NAS_OBJ_DIR); fi
-	@if [ -d $(SECU_OBJ_DIR) ]; then $(MAKE) -C $(SECU_DIR) -f Makefile.eNB clean OUTDIR=$(SECU_OBJ_DIR); fi
-	@if [ -d $(X2AP_OBJ_DIR) ]; then $(MAKE) -C $(X2AP_DIR) -f Makefile.inc clean OUTDIR=$(X2AP_OBJ_DIR); fi
-	@if [ -d $(S1AP_OBJ_DIR) ]; then $(MAKE) -C $(S1AP_DIR) -f Makefile.eNB clean OUTDIR=$(S1AP_OBJ_DIR); fi
-	@if [ -d $(SCTP_OBJ_DIR) ]; then $(MAKE) -C $(SCTP_DIR) -f Makefile.eNB clean OUTDIR=$(SCTP_OBJ_DIR); fi
-	@if [ -d $(UDP_OBJ_DIR) ]; then $(MAKE) -C $(UDP_DIR) -f Makefile.eNB clean OUTDIR=$(UDP_OBJ_DIR); fi
-	@if [ -d $(GTPV1U_OBJ_DIR) ]; then $(MAKE) -C $(GTPV1U_DIR) -f Makefile.eNB clean OUTDIR=$(GTPV1U_OBJ_DIR); fi
-
-common-cleanall:
-	@if [ -d $(UE_NAS_OBJ_DIR) ]; then $(MAKE) -C $(UE_NAS_DIR) -f Makefile.UE cleanall OUTDIR=$(UE_NAS_OBJ_DIR); fi
-	@if [ -d $(SECU_OBJ_DIR) ]; then $(MAKE) -C $(SECU_DIR) -f Makefile.eNB cleanall OUTDIR=$(SECU_OBJ_DIR); fi
-	@if [ -d $(X2AP_OBJ_DIR) ]; then $(MAKE) -C $(X2AP_DIR) -f Makefile.inc cleanall OUTDIR=$(X2AP_OBJ_DIR); fi
-	@if [ -d $(S1AP_OBJ_DIR) ]; then $(MAKE) -C $(S1AP_DIR) -f Makefile.eNB cleanall OUTDIR=$(S1AP_OBJ_DIR); fi
-	@if [ -d $(SCTP_OBJ_DIR) ]; then $(MAKE) -C $(SCTP_DIR) -f Makefile.eNB cleanall OUTDIR=$(SCTP_OBJ_DIR); fi
-	@if [ -d $(UDP_OBJ_DIR) ]; then $(MAKE) -C $(UDP_DIR) -f Makefile.eNB cleanall OUTDIR=$(UDP_OBJ_DIR); fi
-	@if [ -d $(GTPV1U_OBJ_DIR) ]; then $(MAKE) -C $(GTPV1U_DIR) -f Makefile.eNB cleanall OUTDIR=$(GTPV1U_OBJ_DIR); fi
-	
diff --git a/targets/RT/USER/lte-enb.c b/targets/RT/USER/lte-enb.c
index 31c142c8daecd25ac9eeb5d6e28913f35d8fdc2b..632a47707b4294f635f19676743d5762fb4be9d2 100644
--- a/targets/RT/USER/lte-enb.c
+++ b/targets/RT/USER/lte-enb.c
@@ -88,10 +88,6 @@
 #include "enb_config.h"
 #include "targets/RT/USER/lte-softmodem.h"
 
-#ifndef OPENAIR2
-  #include "UTIL/OTG/otg_extern.h"
-#endif
-
 #include "s1ap_eNB.h"
 #include "SIMULATION/ETH_TRANSPORT/proto.h"
 
diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c
index a67b58d61a90c63fa2b3ef836c76d4f4d022ef89..ed9daf23f68ef2747f5f8385017f881fcd17f3e3 100644
--- a/targets/RT/USER/lte-softmodem.c
+++ b/targets/RT/USER/lte-softmodem.c
@@ -82,10 +82,6 @@ unsigned short config_frames[4] = {2,9,11,13};
 #include "enb_config.h"
 //#include "PHY/TOOLS/time_meas.h"
 
-#ifndef OPENAIR2
-  #include "UTIL/OTG/otg_vars.h"
-#endif
-
 
 #include "create_tasks.h"
 
diff --git a/targets/RT/USER/lte-ue.c b/targets/RT/USER/lte-ue.c
index 6e6c2533b4dd5b56b1b8e6f99e22423ffec3a9b0..1fae6c1e6621596cef3c8ba47c5d756b45a2cfb9 100644
--- a/targets/RT/USER/lte-ue.c
+++ b/targets/RT/USER/lte-ue.c
@@ -2067,7 +2067,6 @@ void init_UE_threads_stub(int inst)
 }
 
 
-#ifdef OPENAIR2
 void fill_ue_band_info(void)
 {
   LTE_UE_EUTRA_Capability_t *UE_EUTRA_Capability = UE_rrc_inst[0].UECap->UE_EUTRA_Capability;
@@ -2092,7 +2091,6 @@ void fill_ue_band_info(void)
       }
   }
 }
-#endif
 
 int setup_ue_buffers(PHY_VARS_UE **phy_vars_ue,
                      openair0_config_t *openair0_cfg)
diff --git a/targets/RT/USER/lte-uesoftmodem.c b/targets/RT/USER/lte-uesoftmodem.c
index 25bbef0bc6a1b37294c19ada7ad263ee0639db6f..da9b0fdfbacecaedef66ffbed1c99e6c54fc4275 100644
--- a/targets/RT/USER/lte-uesoftmodem.c
+++ b/targets/RT/USER/lte-uesoftmodem.c
@@ -75,10 +75,6 @@
 #include "common/utils/LOG/vcd_signal_dumper.h"
 #include "UTIL/OPT/opt.h"
 
-#ifndef OPENAIR2
-  #include "UTIL/OTG/otg_vars.h"
-#endif
-
 #include "create_tasks.h"
 #include "system.h"