diff --git a/ci-scripts/Jenkinsfile-gitlab b/ci-scripts/Jenkinsfile-gitlab
index ad97588d9b3cf80814d9eea138f4da52c02b78a5..d3e55c965594dd98d0eb4a358c4dbf8ce15c67b7 100644
--- a/ci-scripts/Jenkinsfile-gitlab
+++ b/ci-scripts/Jenkinsfile-gitlab
@@ -8,7 +8,7 @@ pipeline {
         disableConcurrentBuilds()
         timestamps()
         gitLabConnection('OAI GitLab')
-        gitlabBuilds(builds: ["Build eNb-USRP", "Build basic-sim", "Build phy-sim", "Analysis with cppcheck"])
+        gitlabBuilds(builds: ["Build eNb-USRP", "Build basic-sim", "Build phy-sim", "Build eNb-ethernet", "Build UE-ethernet", "Analysis with cppcheck", "Test phy-sim"])
     }
 
     stages {
@@ -45,6 +45,50 @@ pipeline {
                     }
                 }
             }
+            post {
+                failure {
+                    script {
+                        def message = "OAI " + JOB_NAME + " build (" + BUILD_ID + "): Merge Conflicts -- Cannot perform CI"
+                        addGitLabMRComment comment: message
+                    }
+                }
+            }
+        }
+
+        stage ("Start VM -- cppcheck") {
+            steps {
+                sh "./ci-scripts/createVM.sh --variant cppcheck --job-name ${JOB_NAME} --build-id ${BUILD_ID}"
+            }
+        }
+
+        stage ("Start VM -- enb-usrp") {
+            steps {
+                sh "./ci-scripts/createVM.sh --variant enb-usrp --job-name ${JOB_NAME} --build-id ${BUILD_ID}"
+            }
+        }
+
+        stage ("Start VM -- basic-sim") {
+            steps {
+                sh "./ci-scripts/createVM.sh --variant basic-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID}"
+            }
+        }
+
+        stage ("Start VM -- phy-sim") {
+            steps {
+                sh "./ci-scripts/createVM.sh --variant phy-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID}"
+            }
+        }
+
+        stage ("Start VM -- enb-ethernet") {
+            steps {
+                sh "./ci-scripts/createVM.sh --variant enb-ethernet --job-name ${JOB_NAME} --build-id ${BUILD_ID}"
+            }
+        }
+
+        stage ("Start VM -- ue-ethernet") {
+            steps {
+                sh "./ci-scripts/createVM.sh --variant ue-ethernet --job-name ${JOB_NAME} --build-id ${BUILD_ID}"
+            }
         }
 
         stage ("Variant Builds") {
@@ -52,28 +96,42 @@ pipeline {
                 stage ("Analysis with cppcheck") {
                     steps {
                         gitlabCommitStatus(name: "Analysis with cppcheck") {
-                            sh "./ci-scripts/buildOnVM.sh --workspace $WORKSPACE --variant cppcheck"
+                            sh "./ci-scripts/buildOnVM.sh --workspace $WORKSPACE --variant cppcheck --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive"
                         }
                     }
                 }
                 stage ("Build eNb-USRP") {
                     steps {
                         gitlabCommitStatus(name: "Build eNb-USRP") {
-                            sh "./ci-scripts/buildOnVM.sh --workspace $WORKSPACE --variant enb-usrp"
+                            sh "./ci-scripts/buildOnVM.sh --workspace $WORKSPACE --variant enb-usrp --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive"
                         }
                     }
                 }
                 stage ("Build basic simulator") {
                     steps {
                         gitlabCommitStatus(name: "Build basic-sim") {
-                            sh "./ci-scripts/buildOnVM.sh --workspace $WORKSPACE --variant basic-sim"
+                            sh "./ci-scripts/buildOnVM.sh --workspace $WORKSPACE --variant basic-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive"
                         }
                     }
                 }
                 stage ("Build physical simulators") {
                     steps {
                         gitlabCommitStatus(name: "Build phy-sim") {
-                            sh "./ci-scripts/buildOnVM.sh --workspace $WORKSPACE --variant phy-sim"
+                            sh "./ci-scripts/buildOnVM.sh --workspace $WORKSPACE --variant phy-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive"
+                        }
+                    }
+                }
+                stage ("Build eNb-ethernet") {
+                    steps {
+                        gitlabCommitStatus(name: "Build eNb-ethernet") {
+                            sh "./ci-scripts/buildOnVM.sh --workspace $WORKSPACE --variant enb-ethernet --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive"
+                        }
+                    }
+                }
+                stage ("Build UE-ethernet") {
+                    steps {
+                        gitlabCommitStatus(name: "Build UE-ethernet") {
+                            sh "./ci-scripts/buildOnVM.sh --workspace $WORKSPACE --variant ue-ethernet --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive"
                         }
                     }
                 }
@@ -82,7 +140,7 @@ pipeline {
                 always {
                     script {
                         dir ('archives') {
-                            sh "zip -r vm_build_logs.zip basic_sim enb_usrp phy_sim cppcheck"
+                            sh "zip -r -qq vm_build_logs.zip basic_sim enb_usrp phy_sim cppcheck enb_eth ue_eth"
                         }
                         if(fileExists('archives/vm_build_logs.zip')) {
                             archiveArtifacts artifacts: 'archives/vm_build_logs.zip'
@@ -99,11 +157,50 @@ pipeline {
                 }
             }
         }
+
+        stage ("Variant Tests") {
+            parallel {
+                stage ("Test physical simulators") {
+                    steps {
+                        gitlabCommitStatus(name: "Test phy-sim") {
+                            sh "./ci-scripts/runTestOnVM.sh --workspace $WORKSPACE --variant phy-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive"
+                        }
+                    }
+                }
+                stage ("Test basic simulator") {
+                    steps {
+                        //gitlabCommitStatus(name: "Test basic-sim") {
+                            sh "./ci-scripts/runTestOnVM.sh --workspace $WORKSPACE --variant basic-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive"
+                        //}
+                    }
+                }
+            }
+            post {
+                always {
+                    script {
+                        dir ('archives') {
+                            sh "if [ -d */test ]; then zip -r -qq vm_tests_logs.zip */test ; fi"
+                        }
+                        if(fileExists('archives/vm_tests_logs.zip')) {
+                            archiveArtifacts artifacts: 'archives/vm_tests_logs.zip'
+                            archiveArtifacts artifacts: 'archives/*/test/results_autotests*.xml'
+                            archiveArtifacts artifacts: 'archives/*/test/*.xsl'
+                        }
+                    }
+                }
+            }
+        }
+        stage ("Destroy all Virtual Machines") {
+            steps {
+                sh "./ci-scripts/destroyAllRunningVM.sh --job-name ${JOB_NAME} --build-id ${BUILD_ID}"
+            }
+        }
     }
     post {
         always {
             script {
-                echo "End of script"
+                // Stage destroy may not be run if error in previous stage
+                sh "./ci-scripts/destroyAllRunningVM.sh --job-name ${JOB_NAME} --build-id ${BUILD_ID}"
             }
         }
         success {
diff --git a/ci-scripts/buildOnVM.sh b/ci-scripts/buildOnVM.sh
index c5389c2b5065228f10d7868789b35ccb7de3e742..ba99436510dd8253f49004872f58d84792985d95 100755
--- a/ci-scripts/buildOnVM.sh
+++ b/ci-scripts/buildOnVM.sh
@@ -15,13 +15,21 @@ function usage {
     echo ""
     echo "Options:"
     echo "--------"
+    echo "    --job-name #### OR -jn ####"
+    echo "    Specify the name of the Jenkins job."
+    echo ""
+    echo "    --build-id #### OR -id ####"
+    echo "    Specify the build ID of the Jenkins job."
+    echo ""
     echo "    --workspace #### OR -ws ####"
     echo "    Specify the workspace."
     echo ""
-    echo "    --variant enb-usrp   OR -v1"
-    echo "    --variant basic-sim  OR -v2"
-    echo "    --variant phy-sim    OR -v3"
-    echo "    --variant cppcheck   OR -v4"
+    echo "    --variant enb-usrp     OR -v1"
+    echo "    --variant basic-sim    OR -v2"
+    echo "    --variant phy-sim      OR -v3"
+    echo "    --variant cppcheck     OR -v4"
+    echo "    --variant enb-ethernet OR -v7"
+    echo "    --variant ue-ethernet  OR -v8"
     echo "    Specify the variant to build."
     echo ""
     echo "    --keep-vm-alive OR -k"
@@ -36,14 +44,16 @@ function variant_usage {
     echo "OAI VM Build Check script"
     echo "   Original Author: Raphael Defosseux"
     echo ""
-    echo "    --variant enb-usrp   OR -v1"
-    echo "    --variant basic-sim  OR -v2"
-    echo "    --variant phy-sim    OR -v3"
-    echo "    --variant cppcheck   OR -v4"
+    echo "    --variant enb-usrp     OR -v1"
+    echo "    --variant basic-sim    OR -v2"
+    echo "    --variant phy-sim      OR -v3"
+    echo "    --variant cppcheck     OR -v4"
+    echo "    --variant enb-ethernet OR -v7"
+    echo "    --variant ue-ethernet  OR -v8"
     echo ""
 }
 
-if [ $# -lt 1 ] || [ $# -gt 5 ]
+if [ $# -lt 1 ] || [ $# -gt 9 ]
 then
     echo "Syntax Error: not the correct number of arguments"
     echo ""
@@ -51,6 +61,9 @@ then
     exit 1
 fi
 
+VM_TEMPLATE=ci-
+JOB_NAME=XX
+BUILD_ID=XX
 VM_NAME=ci-enb-usrp
 ARCHIVES_LOC=enb_usrp
 LOG_PATTERN=.Rel14.txt
@@ -68,6 +81,16 @@ case $key in
     usage
     exit 0
     ;;
+    -jn|--job-name)
+    JOB_NAME="$2"
+    shift
+    shift
+    ;;
+    -id|--build-id)
+    BUILD_ID="$2"
+    shift
+    shift
+    ;;
     -ws|--workspace)
     JENKINS_WKSP="$2"
     shift
@@ -109,6 +132,22 @@ case $key in
     BUILD_OPTIONS="--enable=warning --force --xml --xml-version=2"
     shift
     ;;
+    -v7)
+    VM_NAME=ci-enb-ethernet
+    ARCHIVES_LOC=enb_eth
+    LOG_PATTERN=.Rel14.txt
+    NB_PATTERN_FILES=6
+    BUILD_OPTIONS="--eNB -t ETHERNET --noS1"
+    shift
+    ;;
+    -v8)
+    VM_NAME=ci-ue-ethernet
+    ARCHIVES_LOC=ue_eth
+    LOG_PATTERN=.Rel14.txt
+    NB_PATTERN_FILES=6
+    BUILD_OPTIONS="--UE -t ETHERNET --noS1"
+    shift
+    ;;
     --variant)
     variant="$2"
     case $variant in
@@ -140,6 +179,20 @@ case $key in
         NB_PATTERN_FILES=1
         BUILD_OPTIONS="--enable=warning --force --xml --xml-version=2"
         ;;
+        enb-ethernet)
+        VM_NAME=ci-enb-ethernet
+        ARCHIVES_LOC=enb_eth
+        LOG_PATTERN=.Rel14.txt
+        NB_PATTERN_FILES=6
+        BUILD_OPTIONS="--eNB -t ETHERNET --noS1"
+        ;;
+        ue-ethernet)
+        VM_NAME=ci-ue-ethernet
+        ARCHIVES_LOC=ue_eth
+        LOG_PATTERN=.Rel14.txt
+        NB_PATTERN_FILES=6
+        BUILD_OPTIONS="--UE -t ETHERNET --noS1"
+        ;;
         *)
         echo ""
         echo "Syntax Error: Invalid Variant option -> $variant"
@@ -170,6 +223,14 @@ then
     exit 1
 fi
 
+if [ "$JOB_NAME" == "XX" ] || [ "$BUILD_ID" == "XX" ]
+then
+    VM_TEMPLATE=ci-
+else
+    VM_TEMPLATE=${JOB_NAME}-b${BUILD_ID}-
+fi
+
+VM_NAME=`echo $VM_NAME | sed -e "s#ci-#$VM_TEMPLATE#"`
 VM_CMDS=${VM_NAME}_cmds.txt
 ARCHIVES_LOC=${JENKINS_WKSP}/archives/${ARCHIVES_LOC}
 
@@ -179,10 +240,16 @@ echo "JENKINS_WKSP        = $JENKINS_WKSP"
 echo "ARCHIVES_LOC        = $ARCHIVES_LOC"
 echo "BUILD_OPTIONS       = $BUILD_OPTIONS"
 
-echo "############################################################"
-echo "Creating VM ($VM_NAME) on Ubuntu Cloud Image base"
-echo "############################################################"
-uvt-kvm create $VM_NAME release=xenial --memory 2048 --cpu 4 --unsafe-caching --template ci-scripts/template-host.xml
+IS_VM_ALIVE=`uvt-kvm list | grep -c $VM_NAME`
+
+if [ $IS_VM_ALIVE -eq 0 ]
+then
+    echo "############################################################"
+    echo "Creating VM ($VM_NAME) on Ubuntu Cloud Image base"
+    echo "############################################################"
+    uvt-kvm create $VM_NAME release=xenial --memory 2048 --cpu 4 --unsafe-caching --template ci-scripts/template-host.xml
+fi
+
 echo "Waiting for VM to be started"
 uvt-kvm wait $VM_NAME --insecure
 
@@ -199,20 +266,21 @@ echo "############################################################"
 echo "Running install and build script on VM ($VM_NAME)"
 echo "############################################################"
 echo "sudo cp 01proxy /etc/apt/apt.conf.d/" > $VM_CMDS
-if [ "$VM_NAME" == "ci-cppcheck" ]
+if [[ "$VM_NAME" == *"-cppcheck"* ]]
 then
     echo "echo \"sudo apt-get --yes --quiet install zip cppcheck \"" >> $VM_CMDS
     echo "sudo apt-get update > zip-install.txt 2>&1" >> $VM_CMDS
     echo "sudo apt-get --yes install zip cppcheck >> zip-install.txt 2>&1" >> $VM_CMDS
 else
     echo "echo \"sudo apt-get --yes --quiet install zip subversion libboost-dev \"" >> $VM_CMDS
-    echo "sudo apt-get --yes install zip subversion libboost-dev > zip-install.txt 2>&1" >> $VM_CMDS
+    echo "sudo apt-get update > zip-install.txt 2>&1" >> $VM_CMDS
+    echo "sudo apt-get --yes install zip subversion libboost-dev >> zip-install.txt 2>&1" >> $VM_CMDS
 fi
 echo "mkdir tmp" >> $VM_CMDS
 echo "cd tmp" >> $VM_CMDS
 echo "echo \"unzip -qq -DD ../localZip.zip\"" >> $VM_CMDS
 echo "unzip -qq -DD ../localZip.zip" >> $VM_CMDS
-if [ "$VM_NAME" == "ci-cppcheck" ]
+if [[ "$VM_NAME" == *"-cppcheck"* ]]
 then
     echo "mkdir cmake_targets/log" >> $VM_CMDS
     echo "cp /home/ubuntu/zip-install.txt cmake_targets/log" >> $VM_CMDS
@@ -243,7 +311,7 @@ then
 fi
 
 scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/*.txt $ARCHIVES_LOC
-if [ "$VM_NAME" == "ci-cppcheck" ]
+if [[ "$VM_NAME" == *"-cppcheck"* ]]
 then
     scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/*.xml $ARCHIVES_LOC
 fi
diff --git a/ci-scripts/createVM.sh b/ci-scripts/createVM.sh
new file mode 100755
index 0000000000000000000000000000000000000000..02d9523d676c033bc55c54e2c2d5a7fc662f98ed
--- /dev/null
+++ b/ci-scripts/createVM.sh
@@ -0,0 +1,167 @@
+#!/bin/bash
+
+function usage {
+    echo "OAI VM Creation script"
+    echo "   Original Author: Raphael Defosseux"
+    echo "   Requirements:"
+    echo "     -- uvtool uvtool-libvirt apt-cacher"
+    echo "     -- xenial image already synced"
+    echo "   Default:"
+    echo "     -- eNB with USRP"
+    echo ""
+    echo "Usage:"
+    echo "------"
+    echo "    createVM.sh [OPTIONS]"
+    echo ""
+    echo "Options:"
+    echo "--------"
+    echo "    --job-name #### OR -jn ####"
+    echo "    Specify the name of the Jenkins job."
+    echo ""
+    echo "    --build-id #### OR -id ####"
+    echo "    Specify the build ID of the Jenkins job."
+    echo ""
+    echo "    --variant enb-usrp     OR -v1"
+    echo "    --variant basic-sim    OR -v2"
+    echo "    --variant phy-sim      OR -v3"
+    echo "    --variant cppcheck     OR -v4"
+    echo "    --variant enb-ethernet OR -v7"
+    echo "    --variant ue-ethernet  OR -v8"
+    echo "    Specify the variant to build."
+    echo ""
+    echo "    --help OR -h"
+    echo "    Print this help message."
+    echo ""
+}
+
+function variant_usage {
+    echo "OAI VM Build Check script"
+    echo "   Original Author: Raphael Defosseux"
+    echo ""
+    echo "    --variant enb-usrp     OR -v1"
+    echo "    --variant basic-sim    OR -v2"
+    echo "    --variant phy-sim      OR -v3"
+    echo "    --variant cppcheck     OR -v4"
+    echo "    --variant enb-ethernet OR -v7"
+    echo "    --variant ue-ethernet  OR -v8"
+    echo ""
+}
+
+if [ $# -lt 1 ] || [ $# -gt 6 ]
+then
+    echo "Syntax Error: not the correct number of arguments"
+    echo ""
+    usage
+    exit 1
+fi
+
+VM_TEMPLATE=ci-
+JOB_NAME=XX
+BUILD_ID=XX
+VM_NAME=ci-enb-usrp
+
+while [[ $# -gt 0 ]]
+do
+key="$1"
+
+case $key in
+    -h|--help)
+    shift
+    usage
+    exit 0
+    ;;
+    -jn|--job-name)
+    JOB_NAME="$2"
+    shift
+    shift
+    ;;
+    -id|--build-id)
+    BUILD_ID="$2"
+    shift
+    shift
+    ;;
+    -v1)
+    VM_NAME=ci-enb-usrp
+    shift
+    ;;
+    -v2)
+    VM_NAME=ci-basic-sim
+    shift
+    ;;
+    -v3)
+    VM_NAME=ci-phy-sim
+    shift
+    ;;
+    -v4)
+    VM_NAME=ci-cppcheck
+    shift
+    ;;
+    -v7)
+    VM_NAME=ci-enb-ethernet
+    shift
+    ;;
+    -v8)
+    VM_NAME=ci-ue-ethernet
+    shift
+    ;;
+    --variant)
+    variant="$2"
+    case $variant in
+        enb-usrp)
+        VM_NAME=ci-enb-usrp
+        ;;
+        basic-sim)
+        VM_NAME=ci-basic-sim
+        ;;
+        phy-sim)
+        VM_NAME=ci-phy-sim
+        ;;
+        cppcheck)
+        VM_NAME=ci-cppcheck
+        ;;
+        enb-ethernet)
+        VM_NAME=ci-enb-ethernet
+        ;;
+        ue-ethernet)
+        VM_NAME=ci-ue-ethernet
+        ;;
+        *)
+        echo ""
+        echo "Syntax Error: Invalid Variant option -> $variant"
+        echo ""
+        variant_usage
+        exit 1
+    esac
+    shift
+    shift
+    ;;
+    *)
+    echo "Syntax Error: unknown option: $key"
+    echo ""
+    usage
+    exit 1
+esac
+done
+
+if [ "$JOB_NAME" == "XX" ] || [ "$BUILD_ID" == "XX" ]
+then
+    VM_TEMPLATE=ci-
+else
+    VM_TEMPLATE=${JOB_NAME}-b${BUILD_ID}-
+fi
+
+VM_NAME=`echo $VM_NAME | sed -e "s#ci-#$VM_TEMPLATE#"`
+VM_CMDS=${VM_NAME}_cmds.txt
+
+echo "VM_NAME             = $VM_NAME"
+
+echo "############################################################"
+echo "Creating VM ($VM_NAME) on Ubuntu Cloud Image base"
+echo "############################################################"
+uvt-kvm create $VM_NAME release=xenial --memory 2048 --cpu 4 --unsafe-caching --template ci-scripts/template-host.xml
+echo "Waiting for VM to be started"
+uvt-kvm wait $VM_NAME --insecure
+
+VM_IP_ADDR=`uvt-kvm ip $VM_NAME`
+echo "$VM_NAME has for IP addr = $VM_IP_ADDR"
+exit 0
diff --git a/ci-scripts/destroyAllRunningVM.sh b/ci-scripts/destroyAllRunningVM.sh
new file mode 100755
index 0000000000000000000000000000000000000000..c9eb43b4ef235d83a0803c9055c5cd772406d629
--- /dev/null
+++ b/ci-scripts/destroyAllRunningVM.sh
@@ -0,0 +1,81 @@
+#!/bin/bash
+
+function usage {
+    echo "OAI VM Destroy script"
+    echo "   Original Author: Raphael Defosseux"
+    echo ""
+    echo "Usage:"
+    echo "------"
+    echo "    destroyAllRunningVM.sh [OPTIONS]"
+    echo ""
+    echo "Options:"
+    echo "--------"
+    echo "    --job-name #### OR -jn ####"
+    echo "    Specify the name of the Jenkins job."
+    echo ""
+    echo "    --build-id #### OR -id ####"
+    echo "    Specify the build ID of the Jenkins job."
+    echo ""
+    echo "    --help OR -h"
+    echo "    Print this help message."
+    echo ""
+}
+
+if [ $# -gt 4 ]
+then
+    echo "Syntax Error: not the correct number of arguments"
+    echo ""
+    usage
+    exit 1
+fi
+
+VM_TEMPLATE=ci-
+JOB_NAME=XX
+BUILD_ID=XX
+
+while [[ $# -gt 0 ]]
+do
+key="$1"
+case $key in
+    -h|--help)
+    shift
+    usage
+    exit 0
+    ;;
+    -jn|--job-name)
+    JOB_NAME="$2"
+    shift
+    shift
+    ;;
+    -id|--build-id)
+    BUILD_ID="$2"
+    shift
+    shift
+    ;;
+    *)
+    echo "Syntax Error: unknown option: $key"
+    echo ""
+    usage
+    exit 1
+esac
+done
+
+if [ "$JOB_NAME" == "XX" ] || [ "$BUILD_ID" == "XX" ]
+then
+    VM_TEMPLATE=ci-
+else
+    VM_TEMPLATE=${JOB_NAME}-b${BUILD_ID}-
+fi
+
+LIST_CI_VM=`uvt-kvm list | grep $VM_TEMPLATE`
+
+for CI_VM in $LIST_CI_VM
+do
+    VM_IP_ADDR=`uvt-kvm ip $CI_VM`
+    echo "VM to destroy: $CI_VM -- IP $VM_IP_ADDR"
+    uvt-kvm destroy $CI_VM
+    ssh-keygen -R $VM_IP_ADDR
+done
+
+exit 0
+
diff --git a/ci-scripts/doGitLabMerge.sh b/ci-scripts/doGitLabMerge.sh
index cc6f38c81063b3f7dc370d428fe4f8205f4eb950..dfe2f02b55936173f4f6d63e731aa2a988a7d96e 100755
--- a/ci-scripts/doGitLabMerge.sh
+++ b/ci-scripts/doGitLabMerge.sh
@@ -104,6 +104,10 @@ git checkout -f $SOURCE_COMMIT_ID
 
 git merge --ff $TARGET_COMMIT_ID -m "Temporary merge for CI"
 
-exit 0
-
-
+STATUS=`git status | egrep -c "You have unmerged paths.|fix conflicts"`
+if [ $STATUS -ne 0 ]
+then
+    echo "There are merge conflicts.. Cannot perform further build tasks"
+    STATUS=-1
+fi
+exit $STATUS
diff --git a/ci-scripts/reportBuildLocally.sh b/ci-scripts/reportBuildLocally.sh
index 3a19bae812929e0630709e979a1228be21f332b9..694e92e478d2b30ca999b7b87b7d52e4db116cc2 100755
--- a/ci-scripts/reportBuildLocally.sh
+++ b/ci-scripts/reportBuildLocally.sh
@@ -232,6 +232,10 @@ function sca_summary_table_footer {
         echo "        <th>Total</th>" >> ./build_results.html
         echo "        <th>Unknown</th>" >> ./build_results.html
         echo "        <th>Unknown</th>" >> ./build_results.html
+        if [ -f ccp_error_cnt.txt ]
+        then
+            rm -f ccp_error_cnt.txt
+        fi
     fi
     echo "      </tr>" >> ./build_results.html
     echo "   </table>" >> ./build_results.html
@@ -505,6 +509,24 @@ summary_table_row "UL Simulator - Release 14" ./archives/phy_sim/ulsim.Rel14.txt
 summary_table_row "Coding - Release 14" ./archives/phy_sim/coding.Rel14.txt "Built target coding" ./phy_sim_row3.html
 summary_table_footer
 
+summary_table_header "OAI Build eNB -- ETHERNET transport option"
+summary_table_row "LTE SoftModem w/o S1 - Release 14" ./archives/enb_eth/lte-softmodem-nos1.Rel14.txt "Built target lte-softmodem" ./enb_eth_row1.html
+summary_table_row "Coding - Release 14" ./archives/enb_eth/coding.Rel14.txt "Built target coding" ./enb_eth_row2.html
+summary_table_row "OAI ETHERNET transport - Release 14" ./archives/enb_eth/oai_eth_transpro.Rel14.txt "Built target oai_eth_transpro" ./enb_eth_row3.html
+summary_table_row "Parameters Lib Config - Release 14" ./archives/enb_eth/params_libconfig.Rel14.txt "Built target params_libconfig" ./enb_eth_row4.html
+summary_table_row "RB Tools - Release 14" ./archives/enb_eth/rb_tool.Rel14.txt "Built target rb_tool" ./enb_eth_row5.html
+summary_table_row "NAS Mesh - Release 14" ./archives/enb_eth/nasmesh.Rel14.txt "Built target nasmesh" ./enb_eth_row6.html
+summary_table_footer
+
+summary_table_header "OAI Build UE -- ETHERNET transport option"
+summary_table_row "LTE UE SoftModem w/o S1 - Release 14" ./archives/ue_eth/lte-uesoftmodem-nos1.Rel14.txt "Built target lte-uesoftmodem" ./ue_eth_row1.html
+summary_table_row "Coding - Release 14" ./archives/ue_eth/coding.Rel14.txt "Built target coding" ./ue_eth_row2.html
+summary_table_row "OAI ETHERNET transport - Release 14" ./archives/ue_eth/oai_eth_transpro.Rel14.txt "Built target oai_eth_transpro" ./ue_eth_row3.html
+summary_table_row "Parameters Lib Config - Release 14" ./archives/ue_eth/params_libconfig.Rel14.txt "Built target params_libconfig" ./ue_eth_row4.html
+summary_table_row "RB Tools - Release 14" ./archives/ue_eth/rb_tool.Rel14.txt "Built target rb_tool" ./ue_eth_row5.html
+summary_table_row "NAS Mesh - Release 14" ./archives/ue_eth/nasmesh.Rel14.txt "Built target nasmesh" ./ue_eth_row6.html
+summary_table_footer
+
 echo "   <h3>Details</h3>" >> ./build_results.html
 
 for DETAILS_TABLE in `ls ./enb_usrp_row*.html`
@@ -519,7 +541,15 @@ for DETAILS_TABLE in `ls ./phy_sim_row*.html`
 do
     cat $DETAILS_TABLE >> ./build_results.html
 done
-rm -f ./enb_usrp_row*.html ./basic_sim_row*.html ./phy_sim_row*.html
+for DETAILS_TABLE in `ls ./enb_eth_row*.html`
+do
+    cat $DETAILS_TABLE >> ./build_results.html
+done
+for DETAILS_TABLE in `ls ./ue_eth_row*.html`
+do
+    cat $DETAILS_TABLE >> ./build_results.html
+done
+rm -f ./enb_usrp_row*.html ./basic_sim_row*.html ./phy_sim_row*.html ./enb_eth_row*.html ./ue_eth_row*.html
 
 echo "</body>" >> ./build_results.html
 echo "</html>" >> ./build_results.html
diff --git a/ci-scripts/runTestOnVM.sh b/ci-scripts/runTestOnVM.sh
new file mode 100755
index 0000000000000000000000000000000000000000..4a3a9d6d3898a5cf94e193f33291c4455b03d5f8
--- /dev/null
+++ b/ci-scripts/runTestOnVM.sh
@@ -0,0 +1,298 @@
+#!/bin/bash
+
+function usage {
+    echo "OAI VM Test Run script"
+    echo "   Original Author: Raphael Defosseux"
+    echo "   Default:"
+    echo "     -- eNB with USRP"
+    echo ""
+    echo "Usage:"
+    echo "------"
+    echo "    runTestOnVM.sh [OPTIONS]"
+    echo ""
+    echo "Options:"
+    echo "--------"
+    echo "    --job-name #### OR -jn ####"
+    echo "    Specify the name of the Jenkins job."
+    echo ""
+    echo "    --build-id #### OR -id ####"
+    echo "    Specify the build ID of the Jenkins job."
+    echo ""
+    echo "    --workspace #### OR -ws ####"
+    echo "    Specify the workspace."
+    echo ""
+    echo "    --variant enb-usrp     OR -v1"
+    echo "    --variant basic-sim    OR -v2"
+    echo "    --variant phy-sim      OR -v3"
+    echo "    --variant cppcheck     OR -v4"
+    echo "    --variant enb-ethernet OR -v7"
+    echo "    --variant ue-ethernet  OR -v8"
+    echo "    Specify the variant to build."
+    echo ""
+    echo "    --keep-vm-alive OR -k"
+    echo "    Keep the VM alive after the build."
+    echo ""
+    echo "    --help OR -h"
+    echo "    Print this help message."
+    echo ""
+}
+
+function variant_usage {
+    echo "OAI VM Test Run script"
+    echo "   Original Author: Raphael Defosseux"
+    echo ""
+    echo "    --variant enb-usrp     OR -v1"
+    echo "    --variant basic-sim    OR -v2"
+    echo "    --variant phy-sim      OR -v3"
+    echo "    --variant cppcheck     OR -v4"
+    echo "    --variant enb-ethernet OR -v7"
+    echo "    --variant ue-ethernet  OR -v8"
+    echo ""
+}
+
+if [ $# -lt 1 ] || [ $# -gt 9 ]
+then
+    echo "Syntax Error: not the correct number of arguments"
+    echo ""
+    usage
+    exit 1
+fi
+
+VM_TEMPLATE=ci-
+JOB_NAME=XX
+BUILD_ID=XX
+VM_NAME=ci-enb-usrp
+ARCHIVES_LOC=enb_usrp/test
+KEEP_VM_ALIVE=0
+RUN_OPTIONS="none"
+STATUS=0
+
+while [[ $# -gt 0 ]]
+do
+key="$1"
+
+case $key in
+    -h|--help)
+    shift
+    usage
+    exit 0
+    ;;
+    -jn|--job-name)
+    JOB_NAME="$2"
+    shift
+    shift
+    ;;
+    -id|--build-id)
+    BUILD_ID="$2"
+    shift
+    shift
+    ;;
+    -ws|--workspace)
+    JENKINS_WKSP="$2"
+    shift
+    shift
+    ;;
+    -k|--keep-vm-alive)
+    KEEP_VM_ALIVE=1
+    shift
+    ;;
+    -v1)
+    VM_NAME=ci-enb-usrp
+    shift
+    ;;
+    -v2)
+    VM_NAME=ci-basic-sim
+    shift
+    ;;
+    -v3)
+    VM_NAME=ci-phy-sim
+    RUN_OPTIONS="./run_exec_autotests.bash -g \"01510*\" -q -np -b"
+    ARCHIVES_LOC=phy_sim/test
+    shift
+    ;;
+    -v4)
+    VM_NAME=ci-cppcheck
+    shift
+    ;;
+    -v7)
+    VM_NAME=ci-enb-ethernet
+    shift
+    ;;
+    -v8)
+    VM_NAME=ci-ue-ethernet
+    shift
+    ;;
+    --variant)
+    variant="$2"
+    case $variant in
+        enb-usrp)
+        VM_NAME=ci-enb-usrp
+        ;;
+        basic-sim)
+        VM_NAME=ci-basic-sim
+        ;;
+        phy-sim)
+        VM_NAME=ci-phy-sim
+        RUN_OPTIONS="./run_exec_autotests.bash -g \"01510*\" -q -np -b"
+        ARCHIVES_LOC=phy_sim/test
+        ;;
+        cppcheck)
+        VM_NAME=ci-cppcheck
+        ;;
+        enb-ethernet)
+        VM_NAME=ci-enb-ethernet
+        ;;
+        ue-ethernet)
+        VM_NAME=ci-ue-ethernet
+        ;;
+        *)
+        echo ""
+        echo "Syntax Error: Invalid Variant option -> $variant"
+        echo ""
+        variant_usage
+        exit 1
+    esac
+    shift
+    shift
+    ;;
+    *)
+    echo "Syntax Error: unknown option: $key"
+    echo ""
+    usage
+    exit 1
+esac
+done
+
+if [ "$JOB_NAME" == "XX" ] || [ "$BUILD_ID" == "XX" ]
+then
+    VM_TEMPLATE=ci-
+else
+    VM_TEMPLATE=${JOB_NAME}-b${BUILD_ID}-
+fi
+
+VM_NAME=`echo $VM_NAME | sed -e "s#ci-#$VM_TEMPLATE#"`
+VM_CMDS=${VM_NAME}_cmds.txt
+ARCHIVES_LOC=${JENKINS_WKSP}/archives/${ARCHIVES_LOC}
+
+echo "VM_NAME             = $VM_NAME"
+echo "VM_CMD_FILE         = $VM_CMDS"
+echo "JENKINS_WKSP        = $JENKINS_WKSP"
+echo "ARCHIVES_LOC        = $ARCHIVES_LOC"
+
+echo "############################################################"
+echo "Waiting for VM to be started"
+echo "############################################################"
+uvt-kvm wait $VM_NAME --insecure
+
+VM_IP_ADDR=`uvt-kvm ip $VM_NAME`
+echo "$VM_NAME has for IP addr = $VM_IP_ADDR"
+
+if [ "$RUN_OPTIONS" == "none" ]
+then
+    echo "No run on VM testing for this variant currently"
+else
+
+    echo "############################################################"
+    echo "Running test script on VM ($VM_NAME)"
+    echo "############################################################"
+    echo "echo \"sudo apt-get --yes --quiet install bc \"" > $VM_CMDS
+    echo "sudo apt-get update > bc-install.txt 2>&1" >> $VM_CMDS
+    echo "sudo apt-get --yes install bc >> bc-install.txt 2>&1" >> $VM_CMDS
+    echo "cd tmp" >> $VM_CMDS
+    echo "echo \"source oaienv\"" >> $VM_CMDS
+    echo "source oaienv" >> $VM_CMDS
+    echo "echo \"cd cmake_targets/autotests\"" >> $VM_CMDS
+    echo "cd cmake_targets/autotests" >> $VM_CMDS
+    echo "echo \"rm -Rf log\"" >> $VM_CMDS
+    echo "rm -Rf log" >> $VM_CMDS
+    echo "$RUN_OPTIONS" | sed -e 's@"@\\"@g' -e 's@^@echo "@' -e 's@$@"@' >> $VM_CMDS
+    echo "$RUN_OPTIONS" >> $VM_CMDS
+    echo "cp /home/ubuntu/bc-install.txt log" >> $VM_CMDS
+    echo "cd log" >> $VM_CMDS
+    echo "zip -r -qq tmp.zip *.* 0*" >> $VM_CMDS
+
+    ssh -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR < $VM_CMDS
+
+    echo "############################################################"
+    echo "Creating a tmp folder to store results and artifacts"
+    echo "############################################################"
+
+    if [ -d $ARCHIVES_LOC ]
+    then
+        rm -Rf $ARCHIVES_LOC
+    fi
+    mkdir --parents $ARCHIVES_LOC
+
+    scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/autotests/log/tmp.zip $ARCHIVES_LOC
+    pushd $ARCHIVES_LOC
+    unzip -qq -DD tmp.zip
+    rm tmp.zip
+    if [ -f results_autotests.xml ]
+    then
+        FUNCTION=`echo $VM_NAME | sed -e "s@$VM_TEMPLATE@@"`
+        NEW_NAME=`echo "results_autotests.xml" | sed -e "s@results_autotests@results_autotests-$FUNCTION@"`
+        echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" > $NEW_NAME
+        echo "<?xml-stylesheet type=\"text/xsl\" href=\"$FUNCTION.xsl\" ?>" >> $NEW_NAME
+        cat results_autotests.xml >> $NEW_NAME
+        sed -e "s@TEMPLATE@$FUNCTION@" $JENKINS_WKSP/ci-scripts/template.xsl > $FUNCTION.xsl
+        #mv results_autotests.xml $NEW_NAME
+        rm results_autotests.xml
+    fi
+    popd
+
+    if [ $KEEP_VM_ALIVE -eq 0 ]
+    then
+        echo "############################################################"
+        echo "Destroying VM"
+        echo "############################################################"
+        uvt-kvm destroy $VM_NAME
+        ssh-keygen -R $VM_IP_ADDR
+    fi
+    rm -f $VM_CMDS
+
+    echo "############################################################"
+    echo "Checking build status"
+    echo "############################################################"
+
+    LOG_FILES=`ls $ARCHIVES_LOC/results_autotests*.xml`
+    NB_FOUND_FILES=0
+    NB_RUNS=0
+    NB_FAILURES=0
+
+    for FULLFILE in $LOG_FILES
+    do
+        TESTSUITES=`egrep "testsuite errors" $FULLFILE`
+        for TESTSUITE in $TESTSUITES
+        do
+            if [[ "$TESTSUITE" == *"tests="* ]]
+            then
+                RUNS=`echo $TESTSUITE | awk 'BEGIN{FS="="}{print $2}END{}' | sed -e "s@'@@g" `
+                NB_RUNS=$((NB_RUNS + RUNS))
+            fi
+            if [[ "$TESTSUITE" == *"failures="* ]]
+            then
+                FAILS=`echo $TESTSUITE | awk 'BEGIN{FS="="}{print $2}END{}' | sed -e "s@'@@g" `
+                NB_FAILURES=$((NB_FAILURES + FAILS))
+            fi
+        done
+        NB_FOUND_FILES=$((NB_FOUND_FILES + 1))
+    done
+
+    echo "NB_FOUND_FILES = $NB_FOUND_FILES"
+    echo "NB_RUNS        = $NB_RUNS"
+    echo "NB_FAILURES    = $NB_FAILURES"
+
+    if [ $NB_FOUND_FILES -eq 0 ]; then STATUS=-1; fi
+    if [ $NB_RUNS -eq 0 ]; then STATUS=-1; fi
+    if [ $NB_FAILURES -ne 0 ]; then STATUS=-1; fi
+
+    if [ $STATUS -eq 0 ]
+    then
+        echo "STATUS seems OK"
+    else
+        echo "STATUS failed?"
+    fi
+
+fi
+
+exit $STATUS
diff --git a/ci-scripts/template.xsl b/ci-scripts/template.xsl
new file mode 100644
index 0000000000000000000000000000000000000000..874a4c62bf30ffb1606b8b0b825b609d280589ca
--- /dev/null
+++ b/ci-scripts/template.xsl
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+    <xsl:output method="html" version="4" encoding="UTF-8" indent="no" omit-xml-declaration="yes"/>
+    <!-- main body -->
+    <xsl:template match="/">
+        <html>
+          <body>
+            <h3>TEMPLATE Results Summary</h3>
+            <table border="1">
+              <tr bgcolor="lightcyan">
+                <!--Header only so select first row to get headers-->
+                  <th>Hostname</th>
+                  <th>Nb Tests</th>
+                  <th>Failures</th>
+                  <th>Timestamp</th>
+              </tr>
+              <!--Get all the other rows-->
+              <xsl:for-each select="testsuites/testsuite">
+                <tr>
+                    <td>
+                      <xsl:value-of select="@hostname"/>
+                    </td>
+                    <td>
+                      <xsl:value-of select="@tests"/>
+                    </td>
+                    <td>
+                      <xsl:value-of select="@failures"/>
+                    </td>
+                    <td>
+                      <xsl:value-of select="@timestamp"/>
+                    </td>
+                </tr>
+              </xsl:for-each>
+              </table>
+            <h4>Details</h4>
+            <table border="1">
+              <tr bgcolor="lightcyan">
+                <!--Header only so select first row to get headers-->
+                  <th>Test Name</th>
+                  <th>Result</th>
+                  <th>Time</th>
+                  <th>Description</th>
+              </tr>
+              <!--Get all the other rows-->
+              <xsl:for-each select="testsuites/testsuite/testcase">
+                <tr>
+                    <td>
+                      <xsl:value-of select="@name"/>
+                    </td>
+                    <td>
+                      <xsl:value-of select="@RESULT"/>
+                    </td>
+                    <td>
+                      <xsl:value-of select="@time"/>
+                    </td>
+                    <td>
+                      <xsl:value-of select="@description"/>
+                    </td>
+                </tr>
+              </xsl:for-each>
+              </table>
+          </body>
+        </html>
+    </xsl:template>
+</xsl:stylesheet>
diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt
index 4f449fbc122f9c36980efdda99813cf345720a9f..245bba4f8bc7c36d51baaf9f5f76a796bdef7574 100644
--- a/cmake_targets/CMakeLists.txt
+++ b/cmake_targets/CMakeLists.txt
@@ -1119,7 +1119,6 @@ set(PHY_SRC_COMMON
   ${OPENAIR1_DIR}/PHY/INIT/init_top.c
   ${OPENAIR1_DIR}/PHY/INIT/lte_parms.c
   ${OPENAIR1_DIR}/PHY/INIT/lte_param_init.c
-  ${OPENAIR1_DIR}/PHY/TOOLS/file_output.c
   ${OPENAIR1_DIR}/PHY/TOOLS/cadd_vv.c
   ${OPENAIR1_DIR}/PHY/TOOLS/lte_dfts.c
   ${OPENAIR1_DIR}/PHY/TOOLS/log2_approx.c
@@ -2021,7 +2020,7 @@ target_link_libraries (lte-uesoftmodem ${T_LIB})
 add_executable(lte-uesoftmodem-nos1
   ${rrc_h}
   ${s1ap_h}
-#  ${OPENAIR_BIN_DIR}/messages_xml.h
+  ${OPENAIR_BIN_DIR}/messages_xml.h
   ${OPENAIR_TARGETS}/RT/USER/rt_wrapper.c
   ${OPENAIR_TARGETS}/RT/USER/lte-ue.c
   ${OPENAIR_TARGETS}/RT/USER/lte-uesoftmodem.c
diff --git a/cmake_targets/autotests/run_exec_autotests.bash b/cmake_targets/autotests/run_exec_autotests.bash
index ff38ae9d3c2431fba0c3e4792777d08c3b54f02e..9a1a5cad023973a300da152423245a2fa1bdacbc 100755
--- a/cmake_targets/autotests/run_exec_autotests.bash
+++ b/cmake_targets/autotests/run_exec_autotests.bash
@@ -175,10 +175,10 @@ function test_compile() {
     fi
     if [ "$result" == "1" ]; then
       echo_success "$test_case_name.${tags} PASSED"
-      xUnit_success "compilation" "$test_case_name.$tags" "PASS" "$result_string" "$xmlfile_testcase"
+      xUnit_success "compilation" "$test_case_name.$tags" "PASS" "$result_string" "$xmlfile_testcase" ""
     else             
       echo_error "$test_case_name.${tags} FAILED"
-      xUnit_fail "compilation" "$test_case_name.$tags" "FAIL" "$result_string" "$xmlfile_testcase"
+      xUnit_fail "compilation" "$test_case_name.$tags" "FAIL" "$result_string" "$xmlfile_testcase" ""
     fi
 }
 
@@ -200,6 +200,8 @@ function test_compile() {
 #\param $14 -> tags to help identify the test case for readability in output xml file
 #\param $15 => password for the user to run certain commands as sudo
 #\param $16 => test config file params to be modified
+#\param $17 => bypass flag if main_exec if available
+#\param $18 -> desc to help identify the test case for readability in output xml file
 
 function test_compile_and_run() {
     xUnit_start
@@ -221,6 +223,8 @@ function test_compile_and_run() {
     tags=${14}
     mypassword=${15}
     test_config_file=${16}
+    bypass_compile=${17}
+    desc=${18}
 
     build_dir=$tdir/$1/build
     #exec_file=$build_dir/$6
@@ -231,8 +235,6 @@ function test_compile_and_run() {
     rm -fr $log_dir
     mkdir -p $log_dir
     
-    rm -fr $OPENAIR_DIR/cmake_targets/log
-
     echo "" > $temp_exec_log
     echo "" > $log_file
     #echo "log_dir = $log_dir"
@@ -243,6 +245,7 @@ function test_compile_and_run() {
     #echo "pre_exec_file = $pre_exec_file"
     #echo "nruns = $nruns"
     echo "class = $class"
+    #echo "desc = $desc"
     
     #compile_prog_array=()
     #read -a compile_prog_array <<<"$compile_prog"
@@ -253,11 +256,19 @@ function test_compile_and_run() {
   
     tags_array=()
     read -a tags_array <<<"$tags"
+    desc_array=()
+    readarray -t desc_array <<<"$desc"
     
     main_exec_args_array=()
     readarray -t main_exec_args_array <<< "$exec_args"
     
-    
+    REAL_MAIN_EXEC=`eval "echo $main_exec"`
+    if [ "$bypass_compile" == "1" ] && [ -f $REAL_MAIN_EXEC ]
+    then
+        echo "Bypassing compilation for $main_exec"
+    else
+        rm -fr $OPENAIR_DIR/cmake_targets/log
+
     #for search_expr in "${compile_prog_array[@]}"  
     #do
        echo "Compiling test case $test_case_name Log file = $log_file"  
@@ -283,6 +294,7 @@ function test_compile_and_run() {
        }>> $log_file 2>&1
        echo "</COMPILATION LOG>" >> $log_file 2>&1
     #done
+    fi
     
     #process the test case if it is that of execution
     if [ "$class" == "execution" ]; then
@@ -291,6 +303,7 @@ function test_compile_and_run() {
       do
         global_result=1
         result_string=""
+        PROPER_DESC=`echo ${desc_array[$tags_array_index]} | sed -e "s@^.*lsim.*est case.*(Test@Test@" -e "s@^ *(@@" -e "s/),$//"`
         
        for (( run_index=1; run_index <= $nruns; run_index++ ))
         do
@@ -359,16 +372,16 @@ function test_compile_and_run() {
 
        if [ "$result_string" == "" ]; then
            echo_error "execution $test_case_name.$compile_prog.${tags_array[$tags_array_index]} Run_Result = \"$result_string\"  Result = FAIL"
-	   xUnit_fail "execution" "$test_case_name.${tags_array[$tags_array_index]}" "FAIL" "$result_string" "$xmlfile_testcase"
+	   xUnit_fail "execution" "$test_case_name.${tags_array[$tags_array_index]}" "FAIL" "$result_string" "$xmlfile_testcase" "$PROPER_DESC"
        else
         if [ "$global_result" == "0" ]; then
            echo_error "execution $test_case_name.${tags_array[$tags_array_index]} Run_Result = \"$result_string\" Result =  FAIL"
-           xUnit_fail "execution" "$test_case_name.${tags_array[$tags_array_index]}" "FAIL" "$result_string" "$xmlfile_testcase"
+           xUnit_fail "execution" "$test_case_name.${tags_array[$tags_array_index]}" "FAIL" "$result_string" "$xmlfile_testcase" "$PROPER_DESC"
         fi
 
         if [ "$global_result" == "1" ]; then
             echo_success "execution $test_case_name.${tags_array[$tags_array_index]} Run_Result = \"$result_string\"  Result = PASS "
-	    xUnit_success "execution" "$test_case_name.${tags_array[$tags_array_index]}" "PASS" "$result_string"   "$xmlfile_testcase"     
+	    xUnit_success "execution" "$test_case_name.${tags_array[$tags_array_index]}" "PASS" "$result_string"   "$xmlfile_testcase"  "$PROPER_DESC"
         fi  
        fi
 
@@ -393,10 +406,18 @@ Options
    Run test cases in a group. For example, ./run_exec_autotests "0101* 010102"
 -p
    Use password for logging
+-np | --no-password
+   No need for a password
+-q | --quiet
+   Quiet  mode;  eliminate  informational  messages and comment prompts.
+-b | --bypass-compile
+   Bypass compilation of main-exec if already present
 '
 }
 
 function main () {
+QUIET=0
+BYPASS_COMPILE=0
 RUN_GROUP=0
 SET_PASSWORD=0
 passwd=""
@@ -419,6 +440,16 @@ until [ -z "$1" ]
             SET_PASSWORD=1
             passwd=$2
             shift 2;;
+        -np|--no-password)
+            SET_PASSWORD=1
+            shift ;;
+        -q|--quiet)
+            QUIET=1
+            shift ;;
+        -b|--bypass-compile)
+            BYPASS_COMPILE=1
+            echo "bypass option ON"
+            shift ;;
         -h | --help)
             print_help
             exit 1;;
@@ -449,15 +480,15 @@ xml_conf="$OPENAIR_DIR/cmake_targets/autotests/test_case_list.xml"
 
 test_case_list=`xmlstarlet sel -T -t -m /testCaseList/testCase -s A:N:- "@id" -v "@id" -n $xml_conf`
 test_case_excl_list=`xmlstarlet sel -t -v "/testCaseList/TestCaseExclusionList" $xml_conf`
-echo "Test Case Exclusion List = $test_case_excl_list "
+if [ $QUIET -eq 0 ]; then echo "Test Case Exclusion List = $test_case_excl_list "; fi
 
 test_case_excl_list=`sed "s/\+/\*/g" <<< "$test_case_excl_list" ` # Replace + with * for bash string substituion
 
 read -a test_case_excl_array <<< "$test_case_excl_list"
 
-echo "test_case_list = $test_case_list"
+if [ $QUIET -eq 0 ]; then echo "test_case_list = $test_case_list"; fi
 
-echo "Test Case Exclusion List = $test_case_excl_list \n"
+if [ $QUIET -eq 0 ]; then echo "Test Case Exclusion List = $test_case_excl_list \n"; fi
 
 readarray -t test_case_array <<<"$test_case_list"
 
@@ -484,7 +515,7 @@ for search_expr in "${test_case_array[@]}"
        do  
           if [[ $search_expr == $search_excl ]];then
              flag_run_test_case=0
-             echo_info "Test case $search_expr match found in test case excl group. Will skip the test case for execution..."
+             if [ $QUIET -eq 0 ]; then echo_info "Test case $search_expr match found in test case excl group. Will skip the test case for execution..."; fi
              break
           fi
        done
@@ -533,8 +564,8 @@ for search_expr in "${test_case_array[@]}"
 
     search_array_true=()
 
-    IFS=\"                  #set the shell's field separator
-    set -f                  #don't try to glob 
+    IFS=\"                  #set the shell field separator
+    set -f                  #dont try to glob 
     #set -- $search_expr_true             #split on $IFS
     for i in $search_expr_true
       do echo "i = $i"
@@ -548,10 +579,10 @@ for search_expr in "${test_case_array[@]}"
     #echo "arg1 = ${search_array_true[0]}"
     #echo " arg2 = ${search_array_true[1]}"
     if [ "$class" == "compilation" ]; then
-        test_compile "$name" "$compile_prog" "$compile_prog_args" "$pre_exec" "$pre_exec_args" "$main_exec" "$main_exec_args" "search_array_true[@]" "$search_expr_false" "$nruns" "$pre_compile_prog" "$class" "$compile_prog_out" "$tags"
+        test_compile "$name" "$compile_prog" "$compile_prog_args" "$pre_exec" "$pre_exec_args" "$main_exec" "$main_exec_args" "search_array_true[@]" "$search_expr_false" "$nruns" "$pre_compile_prog" "$class" "$compile_prog_out" "$tags" "$desc"
     elif  [ "$class" == "execution" ]; then
         echo \'passwd\' | $SUDO killall -q oaisim_nos1
-        test_compile_and_run "$name" "$compile_prog" "$compile_prog_args" "$pre_exec" "$pre_exec_args" "$main_exec" "$main_exec_args" "search_array_true[@]" "$search_expr_false" "$nruns" "$pre_compile_prog" "$class" "$compile_prog_out" "$tags" "$mypassword" "$test_config_file"
+        test_compile_and_run "$name" "$compile_prog" "$compile_prog_args" "$pre_exec" "$pre_exec_args" "$main_exec" "$main_exec_args" "search_array_true[@]" "$search_expr_false" "$nruns" "$pre_compile_prog" "$class" "$compile_prog_out" "$tags" "$mypassword" "$test_config_file" "$BYPASS_COMPILE" "$desc"
     else
         echo "Unexpected class of test case...Skipping the test case $name ...."
     fi
diff --git a/cmake_targets/autotests/test_case_list.xml b/cmake_targets/autotests/test_case_list.xml
index d9ed38a4ec84faa06c69e610a37f07e039efbb1a..59fceb6c2dc024e9f8df3609a0d57c7c7dce6354 100644
--- a/cmake_targets/autotests/test_case_list.xml
+++ b/cmake_targets/autotests/test_case_list.xml
@@ -955,7 +955,7 @@
       <compile_prog_args> --phy_simulators  -c </compile_prog_args>
       <pre_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash</pre_exec>
       <pre_exec_args></pre_exec_args>
-      <main_exec> $OPENAIR_DIR/cmake_targets/lte-simulators/build/dlsim</main_exec>
+      <main_exec> $OPENAIR_DIR/targets/bin/dlsim.Rel14</main_exec>
       <main_exec_args> -m5 -gF -s-1 -w1.0 -f.2 -n500 -B50 -c2 -z2 -O70
                        -m4 -gF -s0 -w1.0 -f.2 -n500 -B6 -c4 -z2 -O70
                        -m15 -gF -s6.7 -w1.0 -f.2 -n500 -B50 -c2 -z2 -O70
@@ -970,7 +970,7 @@
                        -m26 -gF -s16.6 -w1.0 -f.2 -n500 -B100 -c2 -z2 -r1899 -O70
 		       -m14 -gF -s6.8  -w1.0 -f.2 -n500 -B50 -c2 -x2 -y2 -z2 -O70
                        -m13 -gF -s5.9  -w1.0 -f.2 -n500 -B25 -c3 -x2 -y2 -z2 -O70</main_exec_args>
-      <tags>dlsim.test1 dlsim.test5 dlsim.test6 dlsim.test6b dlsim.test7 dlsim.test7b dlsim.test10 dlsim.test10b dlsim.test11 dlsim.TM2_test1 dlsim.TM2_test1b</tags>
+      <tags>dlsim.test1 dlsim.test5 dlsim.test6 dlsim.test6b dlsim.test7 dlsim.test7b dlsim.test10 dlsim.test10b dlsim.test11 dlsim.test11b dlsim.TM2_test1 dlsim.TM2_test1b dlsim.TM2_test1c</tags>
       <search_expr_true>"passed"</search_expr_true>
       <search_expr_false>segmentation fault|assertion|exiting|fatal</search_expr_false>
       <nruns>3</nruns>
@@ -989,7 +989,7 @@
       <compile_prog_args> --phy_simulators  -c </compile_prog_args>
       <pre_exec>$OPENAIR_DIR/cmake_targets/autotests/tools/free_mem.bash</pre_exec>
       <pre_exec_args></pre_exec_args>
-      <main_exec> $OPENAIR_DIR/cmake_targets/lte-simulators/build/ulsim</main_exec>
+      <main_exec> $OPENAIR_DIR/targets/bin/ulsim.Rel14</main_exec>
       <main_exec_args> -B25 -m5 -y1 -gN -x1 -s6 -w1.0 -e.1 -P -n500 -O70 -L
                        -B25 -m16 -y1 -gN -x1 -s12 -w1.0 -e.1 -P -n500 -O70 -L
                         -B50 -m5 -y1 -gN -x1 -s6 -w1.0 -e.1 -P -n500 -O70 -L 
diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai
index 9cfe6941a28968e6148b5d617f669ccb0a360fe9..1d511f36f6911ced78931528cb022462b454db28 100755
--- a/cmake_targets/build_oai
+++ b/cmake_targets/build_oai
@@ -546,7 +546,7 @@ function main() {
     echo "set ( CFLAGS_PROCESSOR_USER \"$CFLAGS_PROCESSOR_USER\" )" >>  $cmake_file
     echo "set ( XFORMS $XFORMS )"                  >>  $cmake_file
     echo "set ( UE_EXPANSION $UE_EXPANSION )"      >>  $cmake_file
-    echo "set ( PHY_TX_THREAD $UE_EXPANSION )"     >>  $cmake_file
+#    echo "set ( PHY_TX_THREAD $UE_EXPANSION )"     >>  $cmake_file
     echo "set ( PRE_SCD_THREAD $UE_EXPANSION )"    >>  $cmake_file
     echo "set ( RRC_ASN1_VERSION \"${REL}\")"      >>  $cmake_file
     echo "set ( ENABLE_VCD_FIFO $VCD_TIMING )"     >>  $cmake_file
diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper
index 722db38ffc947ca71e2cbc56e839b90567cd74c3..d5a2d9412c05e5b22c5415281271d1a67a315c9c 100755
--- a/cmake_targets/tools/build_helper
+++ b/cmake_targets/tools/build_helper
@@ -271,8 +271,23 @@ check_install_usrp_uhd_driver(){
         $SUDO apt-get remove libuhd-dev libuhd003 uhd-host -y || true
         v=$(lsb_release -cs)
         $SUDO apt-add-repository --remove "deb http://files.ettus.com/binaries/uhd/repo/uhd/ubuntu/$v $v main"
-        #The new USRP repository
-        $SUDO add-apt-repository ppa:ettusresearch/uhd -y
+        # 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
+        echo_info "\nAdding PPA repository ettusresearch/uhd\n"
+        x=0
+        while [ $x -le 5 ]
+        do
+            if $SUDO add-apt-repository ppa:ettusresearch/uhd -y
+            then
+                echo_info "add-apt-repository successful\n"
+                break
+            else
+                echo_info "add-apt-repository failed, retrying...\n"
+                sleep 30
+            fi
+            x=$((x + 1))
+        done
         $SUDO apt-get update
         $SUDO apt-get -y --allow-unauthenticated install  python python-tk libboost-all-dev libusb-1.0-0-dev
         $SUDO apt-get -y --allow-unauthenticated install libuhd-dev libuhd003 uhd-host
diff --git a/cmake_targets/tools/test_helper b/cmake_targets/tools/test_helper
index cae0bacbe030578fbd3d4a98ea7cdbe792a64dbb..f73b53c4bef1164b718dbbc97f8ac54ce65e2f80 100644
--- a/cmake_targets/tools/test_helper
+++ b/cmake_targets/tools/test_helper
@@ -26,15 +26,17 @@ xUnit_start() {
 # \param $3 testcase result
 # \param $4 run result
 # \param $5 XML file local to test case for storing its own results
+# \param $6 proper description
 xUnit_fail() {
   class=$1
   test_case=$2
   result=$3
   run_result=$4
   xmlfile_testcase=$5
+  desc=$6
   currtime=$(date +%s.%N)
   time=$(echo "$currtime - $XUNIT_START" | bc -l)
-  xml="<testcase classname='$class' name='$test_case' Run_result='$run_result' time='$time s' RESULT='$result'></testcase>"
+  xml="<testcase classname='$class' name='$test_case' description='$desc' Run_result='$run_result' time='$time s' RESULT='$result'></testcase>"
   echo  -e "$xml" >> "$xmlfile_testcase"
   XUNIT_TESTCASES_XML="$XUNIT_TESTCASES_XML \n$xml"
   XUNIT_FAILED=$((XUNIT_FAILED+1))
@@ -48,15 +50,17 @@ xUnit_fail() {
 # \param $3 testcase result
 # \param $4 run result
 # \param $5 XML file local to test case for storing its own results
+# \param $6 proper description
 xUnit_success() {
   class=$1
   test_case=$2
   result=$3
   run_result=$4
   xmlfile_testcase=$5
+  desc=$6
   currtime=$(date +%s.%N)
   time=$(echo "$currtime - $XUNIT_START" | bc -l)
-  xml="<testcase classname='$class' name='$test_case' Run_result='$run_result' time='$time s' RESULT='$result'></testcase>"
+  xml="<testcase classname='$class' name='$test_case' description='$desc' Run_result='$run_result' time='$time s' RESULT='$result'></testcase>"
   echo  -e $xml >> $xmlfile_testcase
   XUNIT_TESTCASES_XML="$XUNIT_TESTCASES_XML \n$xml"
   XUNIT_SUCCESS=$((XUNIT_SUCCESS+1))
diff --git a/common/utils/T/T.h b/common/utils/T/T.h
index cab246a6fff78017ab7e62df8c101f53212d8f8b..c44b9013cd4561741c2f5ed220902ef419eb3cc9 100644
--- a/common/utils/T/T.h
+++ b/common/utils/T/T.h
@@ -151,50 +151,6 @@ extern T_cache_t *T_cache;
     abort(); \
   }
 
-#if 0
-#define T_PUT(type, var, argnum) \
-  do { \
-    if (T_LOCAL_size + sizeof(var) > T_BUFFER_MAX) { \
-      printf("%s:%d:%s: cannot put argument %d in T macro, not enough space" \
-               ", consider increasing T_BUFFER_MAX (%d)\n", \
-               __FILE__, __LINE__, __FUNCTION__, argnum, T_BUFFER_MAX); \
-      abort(); \
-    } \
-    memcpy(T_LOCAL_buf + T_LOCAL_size, &var, sizeof(var)); \
-    T_LOCAL_size += sizeof(var); \
-  } while (0)
-#endif
-
-#if 0
-#define T_PROCESS(x, argnum) \
-  do { \
-    T_PUT(typeof(x), x, argnum); \
-  } while (0)
-#endif
-
-#if 0
-#define T_PROCESS(x, argnum) \
-  do { \
-    if (__builtin_types_compatible_p(typeof(x), int)) \
-      { T_PUT(int, (intptr_t)(x), argnum); printf("int\n"); } \
-    else if (__builtin_types_compatible_p(typeof(x), short)) \
-      { T_PUT(short, (intptr_t)(x), argnum); printf("short\n"); } \
-    else if (__builtin_types_compatible_p(typeof(x), float)) \
-      { T_PUT(float, (x), argnum); printf("float\n"); } \
-    else if (__builtin_types_compatible_p(typeof(x), char *)) \
-      { T_PUT(char *, (char *)(intptr_t)(x), argnum); printf("char *\n"); } \
-    else if (__builtin_types_compatible_p(typeof(x), float *)) \
-      { T_PUT(float *, (float *)(intptr_t)(x), argnum); printf("float *\n"); } \
-    else if (__builtin_types_compatible_p(typeof(x), void *)) \
-      { T_PUT(void *, (void *)(intptr_t)(x), argnum); printf("void *\n"); } \
-    else { \
-      printf("%s:%d:%s: unsupported type for argument %d in T macro\n", \
-               __FILE__, __LINE__, __FUNCTION__, argnum); \
-      abort(); \
-    } \
-  } while (0)
-#endif
-
 /* we have 4 versions of T_HEADER:
  * - bad quality C++ version with time
  * - good quality C version with time
diff --git a/common/utils/T/tracer/extract_input_subframe.c b/common/utils/T/tracer/extract_input_subframe.c
index d7423182018df7a9f33a8d7c3202a6d810a3ed9f..48e3ec07f9ff8a06291d1ad1955eee4cc677fe0c 100644
--- a/common/utils/T/tracer/extract_input_subframe.c
+++ b/common/utils/T/tracer/extract_input_subframe.c
@@ -117,12 +117,7 @@ err:
              e.e[frame_arg].i, e.e[subframe_arg].i, e.e[buffer_arg].bsize);
     if (!(frame == e.e[frame_arg].i && subframe == e.e[subframe_arg].i))
       continue;
-#if 0
-for (i = 0; i < e.e[buffer_arg].bsize/2; i++) {
-short *x = e.e[buffer_arg].b;
-x[i] *= 14;
-}
-#endif
+
     if (fwrite(e.e[buffer_arg].b, e.e[buffer_arg].bsize, 1, out) != 1)
       { perror(output_file); exit(1); }
     processed_subframes++;
diff --git a/common/utils/T/tracer/extract_output_subframe.c b/common/utils/T/tracer/extract_output_subframe.c
index d24393553cee537e16f25cc600e74780fc808bba..d7f9ff95ed0d3c6295d269465e0683da37de1e89 100644
--- a/common/utils/T/tracer/extract_output_subframe.c
+++ b/common/utils/T/tracer/extract_output_subframe.c
@@ -124,12 +124,6 @@ err:
     }
     last_frame = frame;
     last_subframe = subframe;
-#if 0
-for (i = 0; i < e.e[buffer_arg].bsize/2; i++) {
-short *x = e.e[buffer_arg].b;
-x[i] *= 14;
-}
-#endif
     if (verbose)
       printf("save output frame %d subframe %d size %d\n",
              e.e[frame_arg].i, e.e[subframe_arg].i, e.e[buffer_arg].bsize);
diff --git a/common/utils/T/tracer/gui/test.c b/common/utils/T/tracer/gui/test.c
index f64d02347e3383eb7b039156fc07db4585df5d6a..f0429cba17ea0ee8936c67406f88229c945daaa2 100644
--- a/common/utils/T/tracer/gui/test.c
+++ b/common/utils/T/tracer/gui/test.c
@@ -22,13 +22,7 @@ int main(void)
   widget_add_child(g, c1, c2, 0);
 
   plot = new_xy_plot(g, 100, 100, "xy plot test", 30);
-#if 0
-  c2 = new_container(g, HORIZONTAL);
-  widget_add_child(g, c2, plot, -1);
-  widget_add_child(g, c1, c2, -1);
-#else
   widget_add_child(g, c1, plot, -1);
-#endif
 
   tlcol = new_color(g, "#ddf");
   tl = new_textlist(g, 300, 10, tlcol);
diff --git a/common/utils/T/tracer/gui/x.c b/common/utils/T/tracer/gui/x.c
index af3d05cc14b68936fa6be574e35b8e53f0201e21..94448eb666c65836437b4fa36224a2acd01e7e3d 100644
--- a/common/utils/T/tracer/gui/x.c
+++ b/common/utils/T/tracer/gui/x.c
@@ -124,20 +124,6 @@ x_window *x_create_window(x_connection *_x, int width, int height,
 
   XMapWindow(x->d, ret->w);
 
-#if 0
-  /* wait for window to be mapped */
-  LOGD("wait for map\n");
-  while (1) {
-    XEvent ev;
-    //XWindowEvent(x->d, ret->w, StructureNotifyMask, &ev);
-    XWindowEvent(x->d, ret->w, ExposureMask, &ev);
-    LOGD("got ev %d\n", ev.type);
-    //if (ev.type == MapNotify) break;
-    if (ev.type == Expose) break;
-  }
-  LOGD("XXX create connection %p window %p (win id %d pixmap %d) w h %d %d\n", x, ret, (int)ret->w, (int)ret->p, width, height);
-#endif
-
   return ret;
 }
 
@@ -265,14 +251,6 @@ void x_events(gui *_gui)
             ev.xbutton.button, 1);
       }
       break;
-#if 0
-    case MapNotify:
-      if ((w = find_x_window(g, ev.xmap.window)) != NULL) {
-        struct x_window *xw = w->x;
-        xw->repaint = 1;
-      }
-      break;
-#endif
     default: if (gui_logd) WARN("TODO: X event type %d\n", ev.type); break;
     }
   }
diff --git a/common/utils/T/tracer/gui/xy_plot.c b/common/utils/T/tracer/gui/xy_plot.c
index 4115f92103adca50bad18cd022dce6cbbc6b2680..0f15f4862a3f99d3374e000487a6ba47b0b2b609 100644
--- a/common/utils/T/tracer/gui/xy_plot.c
+++ b/common/utils/T/tracer/gui/xy_plot.c
@@ -7,165 +7,6 @@
 #include <string.h>
 #include <math.h>
 
-#if 0
-/* this version behaves differently when you resize the XY plot. Say
- * you increase the size. The old (smaller) view is put at the center
- * of the new view. Everything inside keeps the same size/aspect ratio.
- * The other version below resizes the old view so that it fully occupies
- * the new view. It may introduce aspect ratio changes, but usage seems
- * to suggest it's a better behaviour.
- */
-static void paint(gui *_gui, widget *_this)
-{
-  struct gui *g = _gui;
-  struct xy_plot_widget *this = _this;
-  int wanted_plot_width, allocated_plot_width;
-  int wanted_plot_height, allocated_plot_height;
-  float pxsize;
-  float ticdist;
-  float tic;
-  float ticstep;
-  int k, kmin, kmax;
-  float allocated_xmin, allocated_xmax;
-  float allocated_ymin, allocated_ymax;
-  float center;
-  int i;
-  int n;
-
-# define FLIP(v) (-(v) + allocated_plot_height-1)
-
-  LOGD("PAINT xy plot xywh %d %d %d %d\n", this->common.x, this->common.y, this->common.width, this->common.height);
-
-//x_draw_rectangle(g->x, g->xwin, 1, this->common.x, this->common.y, this->common.width, this->common.height);
-
-  wanted_plot_width = this->wanted_width;
-  allocated_plot_width = this->common.width - this->vrule_width;
-  wanted_plot_height = this->wanted_height;
-  allocated_plot_height = this->common.height - this->label_height * 2;
-
-  /* plot zone */
-  /* TODO: refine height - height of hrule text may be != from label */
-  x_draw_rectangle(g->x, g->xwin, 1,
-      this->common.x + this->vrule_width,
-      this->common.y,
-      this->common.width - this->vrule_width -1, /* -1 to see right border */
-      this->common.height - this->label_height * 2);
-
-  /* horizontal tics */
-  pxsize = (this->xmax - this->xmin) / wanted_plot_width;
-  ticdist = 100;
-  tic = floor(log10(ticdist * pxsize));
-  ticstep = powf(10, tic);
-  center = (this->xmax + this->xmin) / 2;
-  allocated_xmin = center - ((this->xmax - this->xmin) *
-                             allocated_plot_width / wanted_plot_width) / 2;
-  allocated_xmax = center + ((this->xmax - this->xmin) *
-                             allocated_plot_width / wanted_plot_width) / 2;
-  /* adjust tic if too tight */
-  LOGD("pre x ticstep %g\n", ticstep);
-  while (1) {
-    if (ticstep / (allocated_xmax - allocated_xmin)
-                * (allocated_plot_width - 1) > 40) break;
-    ticstep *= 2;
-  }
-  LOGD("post x ticstep %g\n", ticstep);
-  LOGD("xmin/max %g %g width wanted allocated %d %d alloc xmin/max %g %g ticstep %g\n", this->xmin, this->xmax, wanted_plot_width, allocated_plot_width, allocated_xmin, allocated_xmax, ticstep);
-  kmin = ceil(allocated_xmin / ticstep);
-  kmax = floor(allocated_xmax / ticstep);
-  for (k = kmin; k <= kmax; k++) {
-/*
-    (k * ticstep - allocated_xmin) / (allocated_max - allocated_xmin) =
-    (x - 0) / (allocated_plot_width-1 - 0)
- */
-    char v[64];
-    int vwidth, dummy;
-    int x = (k * ticstep - allocated_xmin) /
-            (allocated_xmax - allocated_xmin) *
-            (allocated_plot_width - 1);
-    x_draw_line(g->x, g->xwin, FOREGROUND_COLOR,
-        this->common.x + this->vrule_width + x,
-        this->common.y + this->common.height - this->label_height * 2,
-        this->common.x + this->vrule_width + x,
-        this->common.y + this->common.height - this->label_height * 2 - 5);
-    sprintf(v, "%g", k * ticstep);
-    x_text_get_dimensions(g->x, DEFAULT_FONT, v, &vwidth, &dummy, &dummy);
-    x_draw_string(g->x, g->xwin, DEFAULT_FONT, FOREGROUND_COLOR,
-        this->common.x + this->vrule_width + x - vwidth/2,
-        this->common.y + this->common.height - this->label_height * 2 +
-            this->label_baseline,
-        v);
-    LOGD("tic k %d val %g x %d\n", k, k * ticstep, x);
-  }
-
-  /* vertical tics */
-  pxsize = (this->ymax - this->ymin) / wanted_plot_height;
-  ticdist = 30;
-  tic = floor(log10(ticdist * pxsize));
-  ticstep = powf(10, tic);
-  center = (this->ymax + this->ymin) / 2;
-  allocated_ymin = center - ((this->ymax - this->ymin) *
-                             allocated_plot_height / wanted_plot_height) / 2;
-  allocated_ymax = center + ((this->ymax - this->ymin) *
-                             allocated_plot_height / wanted_plot_height) / 2;
-  /* adjust tic if too tight */
-  LOGD("pre y ticstep %g\n", ticstep);
-  while (1) {
-    if (ticstep / (allocated_ymax - allocated_ymin)
-                * (allocated_plot_height - 1) > 20) break;
-    ticstep *= 2;
-  }
-  LOGD("post y ticstep %g\n", ticstep);
-  LOGD("ymin/max %g %g height wanted allocated %d %d alloc ymin/max %g %g ticstep %g\n", this->ymin, this->ymax, wanted_plot_height, allocated_plot_height, allocated_ymin, allocated_ymax, ticstep);
-  kmin = ceil(allocated_ymin / ticstep);
-  kmax = floor(allocated_ymax / ticstep);
-  for (k = kmin; k <= kmax; k++) {
-    char v[64];
-    int vwidth, dummy;
-    int y = (k * ticstep - allocated_ymin) /
-            (allocated_ymax - allocated_ymin) *
-            (allocated_plot_height - 1);
-    sprintf(v, "%g", k * ticstep);
-    x_text_get_dimensions(g->x, DEFAULT_FONT, v, &vwidth, &dummy, &dummy);
-    x_draw_line(g->x, g->xwin, FOREGROUND_COLOR,
-        this->common.x + this->vrule_width,
-        this->common.y + FLIP(y),
-        this->common.x + this->vrule_width + 5,
-        this->common.y + FLIP(y));
-    x_draw_string(g->x, g->xwin, DEFAULT_FONT, FOREGROUND_COLOR,
-        this->common.x + this->vrule_width - vwidth - 2,
-        this->common.y + FLIP(y) - this->label_height/2+this->label_baseline,
-        v);
-  }
-
-  /* label at bottom, in the middle */
-  x_draw_string(g->x, g->xwin, DEFAULT_FONT, FOREGROUND_COLOR,
-      this->common.x + (this->common.width - this->label_width) / 2,
-      this->common.y + this->common.height - this->label_height
-          + this->label_baseline,
-      this->label);
-
-  for (n = 0; n < this->nplots; n++) {
-    /* points */
-    float ax, bx, ay, by;
-    ax = (allocated_plot_width-1) / (allocated_xmax - allocated_xmin);
-    bx = -ax * allocated_xmin;
-    ay = (allocated_plot_height-1) / (allocated_ymax - allocated_ymin);
-    by = -ay * allocated_ymin;
-    for (i = 0; i < this->plots[n].npoints; i++) {
-      int x, y;
-      x = ax * this->plots[n].x[i] + bx;
-      y = ay * this->plots[n].y[i] + by;
-      if (x >= 0 && x < allocated_plot_width &&
-          y >= 0 && y < allocated_plot_height)
-        x_add_point(g->x,
-            this->common.x + this->vrule_width + x,
-            this->common.y + FLIP(y));
-    }
-    x_plot_points(g->x, g->xwin, this->plots[n].color);
-  }
-}
-#endif
-
 static void paint(gui *_gui, widget *_this)
 {
   struct gui *g = _gui;
diff --git a/common/utils/T/tracer/logger/iqlog.c b/common/utils/T/tracer/logger/iqlog.c
index bea8adccc50b4815da137056f57c7517b0db9799..168c50e39b0978be0409769acf42fcfd9bbbcb33 100644
--- a/common/utils/T/tracer/logger/iqlog.c
+++ b/common/utils/T/tracer/logger/iqlog.c
@@ -20,42 +20,6 @@ struct iqlog {
   int max_length;
 };
 
-#if 0
-/* this function passes all received IQ samples to the views */
-static void _event(void *p, event e)
-{
-  struct iqlog *l = p;
-  int i;
-  void *buffer;
-  int bsize;
-  int nsamples;
-
-  if (l->common.filter != NULL && filter_eval(l->common.filter, e) == 0)
-    return;
-
-  buffer = e.e[l->buffer_arg].b;
-  bsize = e.e[l->buffer_arg].bsize;
-
-  nsamples = bsize / (2*sizeof(int16_t));
-
-  if (nsamples > l->max_length) {
-    l->i = realloc(l->i, nsamples * sizeof(float));
-    if (l->i == NULL) abort();
-    l->q = realloc(l->q, nsamples * sizeof(float));
-    if (l->q == NULL) abort();
-    l->max_length = nsamples;
-  }
-
-  for (i = 0; i < nsamples; i++) {
-    l->i[i] = ((int16_t *)buffer)[i*2];
-    l->q[i] = ((int16_t *)buffer)[i*2+1];
-  }
-
-  for (i = 0; i < l->common.vsize; i++)
-    l->common.v[i]->append(l->common.v[i], l->i, l->q, nsamples);
-}
-#endif
-
 static void _event(void *p, event e)
 {
   struct iqlog *l = p;
diff --git a/common/utils/T/tracer/packet-mac-lte.h b/common/utils/T/tracer/packet-mac-lte.h
index e418f3417eb9b6b5ec97641d466bf864bf3153c8..1bc6df632b7e07810ca1f2c3c87e98e2d97c7d91 100644
--- a/common/utils/T/tracer/packet-mac-lte.h
+++ b/common/utils/T/tracer/packet-mac-lte.h
@@ -56,176 +56,6 @@
 #define SC_RNTI     9
 #define G_RNTI      10
 
-#if 0
-typedef enum mac_lte_oob_event {
-    ltemac_send_preamble,
-    ltemac_send_sr,
-    ltemac_sr_failure
-} mac_lte_oob_event;
-
-typedef enum mac_lte_dl_retx {
-    dl_retx_no,
-    dl_retx_yes,
-    dl_retx_unknown
-} mac_lte_dl_retx;
-
-typedef enum mac_lte_crc_status {
-    crc_fail = 0,
-    crc_success = 1,
-    crc_high_code_rate = 2,
-    crc_pdsch_lost = 3,
-    crc_duplicate_nonzero_rv = 4,
-    crc_false_dci = 5
-} mac_lte_crc_status;
-
-typedef enum mac_lte_carrier_id {
-    carrier_id_primary,
-    carrier_id_secondary_1,
-    carrier_id_secondary_2,
-    carrier_id_secondary_3,
-    carrier_id_secondary_4
-} mac_lte_carrier_id;
-
-typedef enum mac_lte_ce_mode {
-    no_ce_mode = 0,
-    ce_mode_a = 1,
-    ce_mode_b = 2
-} mac_lte_ce_mode;
-
-typedef enum mac_lte_nb_mode {
-    no_nb_mode = 0,
-    nb_mode = 1
-} mac_lte_nb_mode;
-
-/* Context info attached to each LTE MAC frame */
-typedef struct mac_lte_info
-{
-    /* Needed for decode */
-    guint8          radioType;
-    guint8          direction;
-    guint8          rntiType;
-
-    /* Extra info to display */
-    guint16         rnti;
-    guint16         ueid;
-
-    /* Timing info */
-    guint16         sysframeNumber;
-    guint16         subframeNumber;
-
-    /* Optional field. More interesting for TDD (FDD is always -4 subframeNumber) */
-    gboolean        subframeNumberOfGrantPresent;
-    guint16         subframeNumberOfGrant;
-
-    /* Flag set only if doing PHY-level data test - i.e. there may not be a
-       well-formed MAC PDU so just show as raw data */
-    gboolean        isPredefinedData;
-
-    /* Length of DL PDU or UL grant size in bytes */
-    guint16         length;
-
-    /* 0=newTx, 1=first-retx, etc */
-    guint8          reTxCount;
-    guint8          isPHICHNACK; /* FALSE=PDCCH retx grant, TRUE=PHICH NACK */
-
-    /* UL only.  Indicates if the R10 extendedBSR-Sizes parameter is set */
-    gboolean        isExtendedBSRSizes;
-
-    /* UL only.  Indicates if the R10 simultaneousPUCCH-PUSCH parameter is set for PCell */
-    gboolean        isSimultPUCCHPUSCHPCell;
-
-    /* UL only.  Indicates if the R10 extendedBSR-Sizes parameter is set for PSCell */
-    gboolean        isSimultPUCCHPUSCHPSCell;
-
-    /* Status of CRC check. For UE it is DL only. For eNodeB it is UL
-       only. For an analyzer, it is present for both DL and UL. */
-    gboolean        crcStatusValid;
-    mac_lte_crc_status crcStatus;
-
-    /* Carrier ID */
-    mac_lte_carrier_id   carrierId;
-
-    /* DL only.  Is this known to be a retransmission? */
-    mac_lte_dl_retx dl_retx;
-
-    /* DL only. CE mode to be used for RAR decoding */
-    mac_lte_ce_mode ceMode;
-
-    /* DL and UL. NB-IoT mode of the UE */
-    mac_lte_nb_mode nbMode;
-
-    /* More Physical layer info (see direction above for which side of union to use) */
-    union {
-        struct mac_lte_ul_phy_info
-        {
-            guint8 present;  /* Remaining UL fields are present and should be displayed */
-            guint8 modulation_type;
-            guint8 tbs_index;
-            guint8 resource_block_length;
-            guint8 resource_block_start;
-            guint8 harq_id;
-            gboolean ndi;
-        } ul_info;
-        struct mac_lte_dl_phy_info
-        {
-            guint8 present; /* Remaining DL fields are present and should be displayed */
-            guint8 dci_format;
-            guint8 resource_allocation_type;
-            guint8 aggregation_level;
-            guint8 mcs_index;
-            guint8 redundancy_version_index;
-            guint8 resource_block_length;
-            guint8 harq_id;
-            gboolean ndi;
-            guint8   transport_block;  /* 0..1 */
-        } dl_info;
-    } detailed_phy_info;
-
-    /* Relating to out-of-band events */
-    /* N.B. dissector will only look to these fields if length is 0... */
-    mac_lte_oob_event  oob_event;
-    guint8             rapid;
-    guint8             rach_attempt_number;
-    #define MAX_SRs 20
-    guint16            number_of_srs;
-    guint16            oob_ueid[MAX_SRs];
-    guint16            oob_rnti[MAX_SRs];
-} mac_lte_info;
-
-
-typedef struct mac_lte_tap_info {
-    /* Info from context */
-    guint16  rnti;
-    guint16  ueid;
-    guint8   rntiType;
-    guint8   isPredefinedData;
-    gboolean crcStatusValid;
-    mac_lte_crc_status   crcStatus;
-    guint8   direction;
-
-    guint8   isPHYRetx;
-    guint16  ueInTTI;
-
-    nstime_t mac_lte_time;
-
-    /* Number of bytes (which part is used depends upon context settings) */
-    guint32  single_number_of_bytes;
-    guint32  bytes_for_lcid[11];
-    guint32  sdus_for_lcid[11];
-    guint8   number_of_rars;
-    guint8   number_of_paging_ids;
-
-    /* Number of padding bytes includes padding subheaders and trailing padding */
-    guint16  padding_bytes;
-    guint16  raw_length;
-} mac_lte_tap_info;
-
-
-/* Accessor function to check if a frame was considered to be ReTx */
-int is_mac_lte_frame_retx(packet_info *pinfo, guint8 direction);
-
-#endif
-
 /*****************************************************************/
 /* UDP framing format                                            */
 /* -----------------------                                       */
@@ -309,82 +139,3 @@ int is_mac_lte_frame_retx(packet_info *pinfo, guint8 direction);
    continues until the end of the frame) */
 #define MAC_LTE_PAYLOAD_TAG 0x01
 
-
-#if 0
-
-/* Type to store parameters for configuring LCID->RLC channel settings for DRB */
-/* Some are optional, and may not be seen (e.g. on reestablishment) */
-typedef struct drb_mapping_t
-{
-    guint16    ueid;                /* Mandatory */
-    guint8     drbid;               /* Mandatory */
-    gboolean   lcid_present;
-    guint8     lcid;                /* Part of LogicalChannelConfig - optional */
-    gboolean   rlcMode_present;
-    guint8     rlcMode;             /* Part of RLC config - optional */
-    gboolean   rlc_ul_ext_li_field; /* Part of RLC config - optional */
-    gboolean   rlc_dl_ext_li_field; /* Part of RLC config - optional */
-    gboolean   rlc_ul_ext_am_sn;    /* Part of RLC config - optional */
-    gboolean   rlc_dl_ext_am_sn;    /* Part of RLC config - optional */
-    gboolean   um_sn_length_present;
-    guint8     um_sn_length;        /* Part of RLC config - optional */
-    gboolean   ul_priority_present;
-    guint8     ul_priority;         /* Part of LogicalChannelConfig - optional */
-    gboolean   pdcp_sn_size_present;
-    guint8     pdcp_sn_size;        /* Part of pdcp-Config - optional */
-} drb_mapping_t;
-
-
-/* Set details of an LCID -> drb channel mapping.  To be called from
-   configuration protocol (e.g. RRC) */
-void set_mac_lte_channel_mapping(drb_mapping_t *drb_mapping);
-
-
-/* Dedicated DRX config. Used to verify that a sensible config is given.
-   Also, beginning to configure MAC with this config and (optionally) show
-   DRX config and state (cycles/timers) attached to each UL/DL PDU! */
-typedef struct drx_config_t {
-    gboolean    configured;
-    guint32     frameNum;
-    guint32     previousFrameNum;
-
-    guint32     onDurationTimer;
-    guint32     inactivityTimer;
-    guint32     retransmissionTimer;
-    guint32     longCycle;
-    guint32     cycleOffset;
-    /* Optional Short cycle */
-    gboolean    shortCycleConfigured;
-    guint32     shortCycle;
-    guint32     shortCycleTimer;
-} drx_config_t;
-
-/* Functions to set/release up dedicated DRX config */
-void set_mac_lte_drx_config(guint16 ueid, drx_config_t *drx_config, packet_info *pinfo);
-void set_mac_lte_drx_config_release(guint16 ueid,  packet_info *pinfo);
-
-/* RRC can tell this dissector which RAPIDs are Group A, Group A&B */
-void set_mac_lte_rapid_ranges(guint groupA, guint all_RA);
-
-/* RRC can indicate whether extended BSR sizes are used */
-void set_mac_lte_extended_bsr_sizes(guint16 ueid, gboolean use_ext_bsr_sizes, packet_info *pinfo);
-
-/* RRC can indicate whether simultaneous PUCCH/PUSCH is used */
-typedef enum {
-    SIMULT_PUCCH_PUSCH_PCELL = 0,
-    SIMULT_PUCCH_PUSCH_PSCELL
-} simult_pucch_pusch_cell_type;
-void set_mac_lte_simult_pucch_pusch(guint16 ueid, simult_pucch_pusch_cell_type cell_type, gboolean use_simult_pucch_pusch, packet_info *pinfo);
-
-/* Functions to be called from outside this module (e.g. in a plugin, where mac_lte_info
-   isn't available) to get/set per-packet data */
-WS_DLL_PUBLIC
-mac_lte_info *get_mac_lte_proto_data(packet_info *pinfo);
-WS_DLL_PUBLIC
-void set_mac_lte_proto_data(packet_info *pinfo, mac_lte_info *p_mac_lte_info);
-
-/* Function to attempt to populate p_mac_lte_info using framing definition above */
-gboolean dissect_mac_lte_context_fields(struct mac_lte_info  *p_mac_lte_info, tvbuff_t *tvb,
-                                        gint *p_offset);
-
-#endif
diff --git a/common/utils/itti/intertask_interface.c b/common/utils/itti/intertask_interface.c
index 05e5e8c3dc224242b09518394acf255c63150bd8..9dc7876d9f6bd9721587cfba9582b46636d44869 100644
--- a/common/utils/itti/intertask_interface.c
+++ b/common/utils/itti/intertask_interface.c
@@ -328,12 +328,6 @@ int itti_send_msg_to_task(task_id_t destination_task_id, instance_t instance, Me
   /* Increment the global message number */
   message_number = itti_increment_message_number ();
 
-#if 0
-  /* itti dump is disabled */
-  itti_dump_queue_message (origin_task_id, message_number, message, itti_desc.messages_info[message_id].name,
-                           sizeof(MessageHeader) + message->ittiMsgHeader.ittiMsgSize);
-#endif
-
   if (destination_task_id != TASK_UNKNOWN) {
 
     if (itti_desc.threads[destination_thread_id].task_state == TASK_STATE_ENDED) {
@@ -429,12 +423,6 @@ int itti_try_send_msg_to_task(task_id_t destination_task_id, instance_t instance
   /* Increment the global message number */
   message_number = itti_increment_message_number ();
 
-#if 0
-  /* itti dump is disabled */
-  itti_dump_queue_message (origin_task_id, message_number, message, itti_desc.messages_info[message_id].name,
-                           sizeof(MessageHeader) + message->ittiMsgHeader.ittiMsgSize);
-#endif
-
   if (destination_task_id != TASK_UNKNOWN) {
 
     if (itti_desc.threads[destination_thread_id].task_state == TASK_STATE_ENDED) {
@@ -727,12 +715,6 @@ void itti_mark_task_ready(task_id_t task_id)
 
   AssertFatal (thread_id < itti_desc.thread_max, "Thread id (%d) is out of range (%d)!\n", thread_id, itti_desc.thread_max);
 
-#if 0
-  /* itti dump is disabled */
-  /* Register the thread in itti dump */
-  itti_dump_thread_use_ring_buffer();
-#endif
-
   /* Mark the thread as using LFDS queue */
   lfds611_queue_use(itti_desc.tasks[task_id].message_queue);
 
@@ -871,11 +853,6 @@ int itti_init(task_id_t task_max, thread_id_t thread_max, MessagesIds messages_i
   itti_desc.wait_tasks = 0;
   itti_desc.created_tasks = 0;
   itti_desc.ready_tasks = 0;
-#if 0
-  /* itti dump is disabled */
-  itti_dump_init (messages_definition_xml, dump_file_name);
-#endif
-
   CHECK_INIT_RETURN(timer_init ());
 
   return 0;
@@ -940,11 +917,6 @@ void itti_wait_tasks_end(void)
     ITTI_DEBUG(ITTI_DEBUG_ISSUES, " Some threads are still running, force exit\n");
     exit (0);
   }
-
-#if 0
-  /* itti dump is disabled */
-  itti_dump_exit();
-#endif
 }
 
 void itti_send_terminate_message(task_id_t task_id)
diff --git a/common/utils/itti_analyzer/libparser/xml_parse.c b/common/utils/itti_analyzer/libparser/xml_parse.c
index 352b10d6161fdb91606b3963d75119d2bbdc6d0d..72447e7669b6be7ed4bdd2c1cf272be588d020f1 100644
--- a/common/utils/itti_analyzer/libparser/xml_parse.c
+++ b/common/utils/itti_analyzer/libparser/xml_parse.c
@@ -740,25 +740,6 @@ int xml_parse_buffer(char *xml_buffer, const int size) {
     return xml_parse_doc(doc);
 }
 
-#if 0 /* Not used anymore */
-int xml_parse_file(const char *filename) {
-    xmlDocPtr doc; /* the resulting document tree */
-
-    if (filename == NULL) {
-        return RC_NULL_POINTER;
-    }
-
-    doc = xmlReadFile (filename, NULL, 0);
-
-    if (doc == NULL) {
-        ui_notification_dialog(GTK_MESSAGE_ERROR, FALSE, "parse messages format definition", "Failed to parse file \"%s\"", filename);
-        return RC_FAIL;
-    }
-
-    return xml_parse_doc(doc);
-}
-#endif
-
 static int update_filters() {
     types_t *types;
 
diff --git a/nfapi/oai_integration/nfapi_pnf.c b/nfapi/oai_integration/nfapi_pnf.c
index 2d5133a450ffd7d41e19c472b0e8ca919ba32c93..80e144c81cbac28f451cce79aa996dd4f880c464 100644
--- a/nfapi/oai_integration/nfapi_pnf.c
+++ b/nfapi/oai_integration/nfapi_pnf.c
@@ -527,18 +527,6 @@ int config_request(nfapi_pnf_config_t* config, nfapi_pnf_phy_config_t* phy, nfap
 	  fp = (LTE_DL_FRAME_PARMS*) malloc(sizeof(LTE_DL_FRAME_PARMS));
   }
 
-
-#if 0
-  //DJP
-  auto found = std::find_if(pnf->phys.begin(), pnf->phys.end(), [&](phy_info& item)
-      { return item.id == req->header.phy_id; });
-
-  if(found != pnf->phys.end())
-  {
-    phy_info& phy_info = (*found);
-  }
-#endif
-  //DJP 
   phy_info* phy_info = pnf->phys;
 
   if(req->nfapi_config.timing_window.tl.tag == NFAPI_NFAPI_TIMING_WINDOW_TAG) {
diff --git a/nfapi/oai_integration/nfapi_vnf.c b/nfapi/oai_integration/nfapi_vnf.c
index 74e999528c51fc7d40f4eea48d56cd069a7ced04..5380d340a31ceeabd36adb41568122c54746c293 100644
--- a/nfapi/oai_integration/nfapi_vnf.c
+++ b/nfapi/oai_integration/nfapi_vnf.c
@@ -357,18 +357,6 @@ int wake_eNB_rxtx(PHY_VARS_eNB *eNB, uint16_t sfn, uint16_t sf) {
   wait.tv_sec=0;
   wait.tv_nsec=5000000L;
 
-#if 0
-  /* accept some delay in processing - up to 5ms */
-  for (i = 0; i < 10 && proc_rxtx->instance_cnt_rxtx == 0; i++) {
-    LOG_W( PHY,"[eNB] sfn/sf:%d:%d proc_rxtx[%d]:TXsfn:%d/%d eNB RXn-TXnp4 thread busy!! (cnt_rxtx %i)\n", sfn, sf, sf&1, proc_rxtx->frame_tx, proc_rxtx->subframe_tx, proc_rxtx->instance_cnt_rxtx);
-    usleep(500);
-  }
-  if (proc_rxtx->instance_cnt_rxtx == 0) {
-    exit_fun( "TX thread busy" );
-    return(-1);
-  }
-#endif
-
   // wake up TX for subframe n+sf_ahead
   // lock the TX mutex and make sure the thread is ready
   if (pthread_mutex_timedlock(&proc_rxtx->mutex_rxtx,&wait) != 0) {
diff --git a/nfapi/open-nFAPI/pnf/src/pnf_p7.c b/nfapi/open-nFAPI/pnf/src/pnf_p7.c
index 02b828d382bf1a9dfc39cea7fe48544e56ed2000..8d94c23476b1f77f1e7c8a9610d109204a013f7b 100644
--- a/nfapi/open-nFAPI/pnf/src/pnf_p7.c
+++ b/nfapi/open-nFAPI/pnf/src/pnf_p7.c
@@ -1624,10 +1624,6 @@ void pnf_nfapi_p7_read_dispatch_message(pnf_p7_t* pnf_p7, uint32_t now_hr_time)
 
 		// need to update the time as we would only use the value from the
 		// select
-#if 0
-// DJP - why do this here and not on return from recv???
-		now_hr_time = pnf_get_current_time_hr();
-#endif
 	}
 	while(recvfrom_result > 0);
 }
diff --git a/nfapi/open-nFAPI/vnf/src/vnf_p7_interface.c b/nfapi/open-nFAPI/vnf/src/vnf_p7_interface.c
index a35d8e3c1d1963a2927c981c58d9ac7cf0f486d8..4a85f7e4b3b9b245f5f5660e6c1a3a0dc8ce80eb 100644
--- a/nfapi/open-nFAPI/vnf/src/vnf_p7_interface.c
+++ b/nfapi/open-nFAPI/vnf/src/vnf_p7_interface.c
@@ -200,13 +200,6 @@ int nfapi_vnf_p7_start(nfapi_vnf_p7_config_t* config)
 				// still time before the end of the subframe wait
 				pselect_timeout = timespec_sub(sf_start, pselect_start);
 
-#if 0
-                                NFAPI_TRACE(NFAPI_TRACE_INFO, "%s() sf_start:%d.%ld pselect_start:%d.%ld pseclect_timeout:%d.%ld\n",
-                                    __FUNCTION__,
-                                    sf_start.tv_sec, sf_start.tv_nsec,
-                                    pselect_start.tv_sec, pselect_start.tv_nsec,
-                                    pselect_timeout.tv_sec, pselect_timeout.tv_nsec);
-#endif
 			}
 
 //original_pselect_timeout = pselect_timeout;
@@ -266,13 +259,6 @@ if (selectRetval==-1 && errno == 22)
   phy->insync_minor_adjustment_duration, phy->insync_minor_adjustment, 
   sf_duration.tv_sec, sf_duration.tv_nsec);
 }
-#if 0
-                        if (selectRetval != 0 || phy->insync_minor_adjustment_duration != 0)
-                          NFAPI_TRACE(NFAPI_TRACE_NOTE, "pselect()=%d maxSock:%d vnf_p7->socket:%d pselect_timeout:%u.%u original_pselect_timeout:%u.%u\n", 
-                              selectRetval, maxSock, vnf_p7->socket, pselect_timeout.tv_sec, pselect_timeout.tv_nsec,
-                              original_pselect_timeout.tv_sec, original_pselect_timeout.tv_nsec);
-#endif
-
 			if(selectRetval == 0)
 			{
 				// calculate the start of the next subframe
diff --git a/openair1/PHY/CODING/3gpplte_turbo_decoder_avx2_16bit.c b/openair1/PHY/CODING/3gpplte_turbo_decoder_avx2_16bit.c
index d233b8e7b401d755f99711825c3a973acd674382..8c2513b702b9822f7b8930604b46ea6c7e4543c6 100644
--- a/openair1/PHY/CODING/3gpplte_turbo_decoder_avx2_16bit.c
+++ b/openair1/PHY/CODING/3gpplte_turbo_decoder_avx2_16bit.c
@@ -986,134 +986,6 @@ unsigned char phy_threegpplte_turbo_decoder16avx2(int16_t *y,
   yp1 = yparity1;
   yp2 = yparity2;
 
-
-#if 0
-  __m128i *yp128,*yp128_cw2;
-  __m128i tmpe,tmpe_cw2;
-  yp128 = (__m128i*)y;
-  yp128_cw2 = (__m128i*)y2;
-
-
-
-  for (i=0; i<n; i+=8) {
-    pi2_p = &pi2tab16avx2[iind][i];
-
-    j=pi2_p[0];
-
-
-    tmpe  = _mm_load_si128(yp128);
-    tmpe_cw2 = _mm_load_si128(yp128_cw2);
-    //    fprintf(fdavx2,"yp128 %p\n",yp128);
-    //    print_shorts("tmpe",(int16_t*)&tmpe);
-
-    s[j]     = _mm_extract_epi16(tmpe,0);
-    yp1[j]   = _mm_extract_epi16(tmpe,1);
-    yp2[j]   = _mm_extract_epi16(tmpe,2);
-    s[j+8]   = _mm_extract_epi16(tmpe_cw2,0);
-    yp1[j+8] = _mm_extract_epi16(tmpe_cw2,1);
-    yp2[j+8] = _mm_extract_epi16(tmpe_cw2,2);
-
-#ifdef DEBUG_LOGMAP
-    fprintf(fdavx2,"init0: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",((j>>4)<<3)+(j&7),s[j],yp1[j],yp2[j]);
-    fprintf(fdavx2b,"init0: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",((j>>4)<<3)+(j&7),s[j+8],yp1[j+8],yp2[j+8]);
-#endif
-
-    j=pi2_p[1];
-
-    s[j]   = _mm_extract_epi16(tmpe,3);
-    yp1[j] = _mm_extract_epi16(tmpe,4);
-    yp2[j] = _mm_extract_epi16(tmpe,5);
-    s[j+8]   = _mm_extract_epi16(tmpe_cw2,3);
-    yp1[j+8] = _mm_extract_epi16(tmpe_cw2,4);
-    yp2[j+8] = _mm_extract_epi16(tmpe_cw2,5);
-#ifdef DEBUG_LOGMAP
-    fprintf(fdavx2,"init1: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",((j>>4)<<3)+(j&7),s[j],yp1[j],yp2[j]);
-    fprintf(fdavx2b,"init1: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",((j>>4)<<3)+(j&7),s[j+8],yp1[j+8],yp2[j+8]);
-#endif
-    j=pi2_p[2];
-
-    s[j]   = _mm_extract_epi16(tmpe,6);
-    yp1[j] = _mm_extract_epi16(tmpe,7);
-    tmpe = _mm_load_si128(&yp128[1]);
-    yp2[j] = _mm_extract_epi16(tmpe,0);
-    s[j+8]   = _mm_extract_epi16(tmpe_cw2,6);
-    yp1[j+8] = _mm_extract_epi16(tmpe_cw2,7);
-    tmpe_cw2 = _mm_load_si128(&yp128_cw2[1]);
-    yp2[j+8] = _mm_extract_epi16(tmpe_cw2,0);
-#ifdef DEBUG_LOGMAP
-    fprintf(fdavx2,"init2: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",((j>>4)<<3)+(j&7),s[j],yp1[j],yp2[j]);
-    fprintf(fdavx2b,"init2: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",((j>>4)<<3)+(j&7),s[j+8],yp1[j+8],yp2[j+8]);
-#endif
-    j=pi2_p[3];
-
-    s[j]   = _mm_extract_epi16(tmpe,1);
-    yp1[j] = _mm_extract_epi16(tmpe,2);
-    yp2[j] = _mm_extract_epi16(tmpe,3);
-    s[j+8]   = _mm_extract_epi16(tmpe_cw2,1);
-    yp1[j+8] = _mm_extract_epi16(tmpe_cw2,2);
-    yp2[j+8] = _mm_extract_epi16(tmpe_cw2,3);
-#ifdef DEBUG_LOGMAP
-    fprintf(fdavx2,"init3: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",((j>>4)<<3)+(j&7),s[j],yp1[j],yp2[j]);
-    fprintf(fdavx2b,"init3: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",((j>>4)<<3)+(j&7),s[j+8],yp1[j+8],yp2[j+8]);
-#endif
-    j=pi2_p[4];
-
-    s[j]   = _mm_extract_epi16(tmpe,4);
-    yp1[j] = _mm_extract_epi16(tmpe,5);
-    yp2[j] = _mm_extract_epi16(tmpe,6);
-    s[j+8]   = _mm_extract_epi16(tmpe_cw2,4);
-    yp1[j+8] = _mm_extract_epi16(tmpe_cw2,5);
-    yp2[j+8] = _mm_extract_epi16(tmpe_cw2,6);
-#ifdef DEBUG_LOGMAP
-    fprintf(fdavx2,"init4: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",((j>>4)<<3)+(j&7),s[j],yp1[j],yp2[j]);
-    fprintf(fdavx2b,"init4: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",((j>>4)<<3)+(j&7),s[j+8],yp1[j+8],yp2[j+8]);
-#endif
-    j=pi2_p[5];
-
-    s[j]   = _mm_extract_epi16(tmpe,7);
-    tmpe = _mm_load_si128(&yp128[2]);
-    yp1[j] = _mm_extract_epi16(tmpe,0);
-    yp2[j] = _mm_extract_epi16(tmpe,1);
-    s[j+8]   = _mm_extract_epi16(tmpe_cw2,7);
-    tmpe_cw2 = _mm_load_si128(&yp128_cw2[2]);
-    yp1[j+8] = _mm_extract_epi16(tmpe_cw2,0);
-    yp2[j+8] = _mm_extract_epi16(tmpe_cw2,1);
-#ifdef DEBUG_LOGMAP
-    fprintf(fdavx2,"init5: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",((j>>4)<<3)+(j&7),s[j],yp1[j],yp2[j]);
-    fprintf(fdavx2b,"init5: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",((j>>4)<<3)+(j&7),s[j+8],yp1[j+8],yp2[j+8]);
-#endif
-    j=pi2_p[6];
-
-    s[j]   = _mm_extract_epi16(tmpe,2);
-    yp1[j] = _mm_extract_epi16(tmpe,3);
-    yp2[j] = _mm_extract_epi16(tmpe,4);
-    s[j+8]   = _mm_extract_epi16(tmpe_cw2,2);
-    yp1[j+8] = _mm_extract_epi16(tmpe_cw2,3);
-    yp2[j+8] = _mm_extract_epi16(tmpe_cw2,4);
-#ifdef DEBUG_LOGMAP
-    fprintf(fdavx2,"init6: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",((j>>4)<<3)+(j&7),s[j],yp1[j],yp2[j]);
-    fprintf(fdavx2b,"init6: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",((j>>4)<<3)+(j&7),s[j+8],yp1[j+8],yp2[j+8]);
-#endif
-    j=pi2_p[7];
-
-    s[j]   = _mm_extract_epi16(tmpe,5);
-    yp1[j] = _mm_extract_epi16(tmpe,6);
-    yp2[j] = _mm_extract_epi16(tmpe,7);
-    s[j+8]   = _mm_extract_epi16(tmpe_cw2,5);
-    yp1[j+8] = _mm_extract_epi16(tmpe_cw2,6);
-    yp2[j+8] = _mm_extract_epi16(tmpe_cw2,7);
-#ifdef DEBUG_LOGMAP
-    fprintf(fdavx2,"init7: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",((j>>4)<<3)+(j&7),s[j],yp1[j],yp2[j]);
-    fprintf(fdavx2b,"init7: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",((j>>4)<<3)+(j&7),s[j+8],yp1[j+8],yp2[j+8]);
-#endif
-    yp128+=3;
-    yp128_cw2+=3;
-
-  }
-  yp=(llr_t*)yp128;
-  yp_cw2=(llr_t*)yp128_cw2;
-#else
-  
   pi2_p    = &pi2tab16avx2[iind][0];
   for (i=0,j=0; i<n; i++) {
     s[*pi2_p]     = y[j];
@@ -1125,8 +997,6 @@ unsigned char phy_threegpplte_turbo_decoder16avx2(int16_t *y,
   }    
   yp=(llr_t*)&y[j];
   yp_cw2=(llr_t*)&y2[j];
-#endif
-
 
   // Termination
   for (i=0; i<3; i++) {
diff --git a/openair1/PHY/CODING/3gpplte_turbo_decoder_sse.c b/openair1/PHY/CODING/3gpplte_turbo_decoder_sse.c
index 42ccb220e03bf2b620e3f500daea13bd27d2eb26..a02af690770faefc2eeac9de07ffaea721a9ff9a 100644
--- a/openair1/PHY/CODING/3gpplte_turbo_decoder_sse.c
+++ b/openair1/PHY/CODING/3gpplte_turbo_decoder_sse.c
@@ -2617,8 +2617,6 @@ int test_logmap8()
   test[3] = 0x92;
   test[4] = 0xfe;
 
-  crcTableInit();
-
   crc = crc24a(test,
                40)>>8;
 
diff --git a/openair1/PHY/CODING/3gpplte_turbo_decoder_sse_16bit.c b/openair1/PHY/CODING/3gpplte_turbo_decoder_sse_16bit.c
index c72a894e69eab2d9acc9cccbd017cd3ab7d2bff6..a25ba46ff8e40cd777cdaaed6e40e9eb25d4456c 100644
--- a/openair1/PHY/CODING/3gpplte_turbo_decoder_sse_16bit.c
+++ b/openair1/PHY/CODING/3gpplte_turbo_decoder_sse_16bit.c
@@ -232,9 +232,6 @@ void compute_alpha16(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned s
 #if defined(__x86_64__) || defined(__i386__)
     alpha128 = (__m128i *)alpha;
     //#ifdef __AVX2__
-#if 0
-    alpha256 = (__m256i *)alpha;
-#endif
 #elif defined(__arm__)
     alpha128 = (int16x8_t *)alpha;
 #endif
@@ -316,10 +313,6 @@ void compute_alpha16(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned s
 
     alpha_ptr = &alpha128[0];
     //#ifdef __AVX2__
-#if 0
-    alpha_ptr256 = &alpha256[0];
-#endif
-
 #if defined(__x86_64__) || defined(__i386__)
     m11p = (__m128i*)m_11;
     m10p = (__m128i*)m_10;
@@ -449,9 +442,6 @@ void compute_alpha16(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned s
 
       alpha_ptr+=8;
       //#ifdef __AVX2__
-#if 0
-      alpha_ptr256+=4;
-#endif
       m11p++;
       m10p++;
 #if defined(__x86_64__) || defined(__i386__)
diff --git a/openair1/PHY/CODING/3gpplte_turbo_decoder_sse_8bit.c b/openair1/PHY/CODING/3gpplte_turbo_decoder_sse_8bit.c
index 4abfb5de3cb63749727256e5d5709f49b8ac7dc1..bfa898519535474ea6a0731f5c7b97edc5fe6bf9 100644
--- a/openair1/PHY/CODING/3gpplte_turbo_decoder_sse_8bit.c
+++ b/openair1/PHY/CODING/3gpplte_turbo_decoder_sse_8bit.c
@@ -426,67 +426,6 @@ void compute_beta8(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sho
 
   llr_t beta2,beta3,beta4,beta5,beta6,beta7;
 
-
-#if 0
-  int16_t m11,m10;
-  int16_t beta0_16,beta1_16,beta2_16,beta3_16,beta4_16,beta5_16,beta6_16,beta7_16,beta0_2,beta1_2,beta2_2,beta3_2,beta_m;
-  __m128i beta_16;
-  // termination for beta initialization
-
-  m11=(int16_t)m_11[2+frame_length];
-  m10=(int16_t)m_10[2+frame_length];
-
-  beta0 = -m11;//M0T_TERM;
-  beta1 = m11;//M1T_TERM;
-  m11=(int16_t)m_11[1+frame_length];
-  m10=(int16_t)m_10[1+frame_length];
-
-  beta0_2 = beta0-m11;//+M0T_TERM;
-  beta1_2 = beta0+m11;//+M1T_TERM;
-  beta2_2 = beta1+m10;//M2T_TERM;
-  beta3_2 = beta1-m10;//+M3T_TERM;
-  m11=(int16_t)m_11[frame_length];
-  m10=(int16_t)m_10[frame_length];
-
-  beta0_16 = beta0_2-m11;//+M0T_TERM;
-  beta1_16 = beta0_2+m11;//+M1T_TERM;
-  beta2_16 = beta1_2+m10;//+M2T_TERM;
-  beta3_16 = beta1_2-m10;//+M3T_TERM;
-  beta4_16 = beta2_2-m10;//+M4T_TERM;
-  beta5_16 = beta2_2+m10;//+M5T_TERM;
-  beta6_16 = beta3_2+m11;//+M6T_TERM;
-  beta7_16 = beta3_2-m11;//+M7T_TERM;
-
-  beta_m = (beta0_16>beta1_16) ? beta0_16 : beta1_16;
-  beta_m = (beta_m>beta2_16) ? beta_m : beta2_16;
-  beta_m = (beta_m>beta3_16) ? beta_m : beta3_16;
-  beta_m = (beta_m>beta4_16) ? beta_m : beta4_16;
-  beta_m = (beta_m>beta5_16) ? beta_m : beta5_16;
-  beta_m = (beta_m>beta6_16) ? beta_m : beta6_16;
-  beta_m = (beta_m>beta7_16) ? beta_m : beta7_16;
-
-  beta0_16=beta0_16-beta_m;
-  beta1_16=beta1_16-beta_m;
-  beta2_16=beta2_16-beta_m;
-  beta3_16=beta3_16-beta_m;
-  beta4_16=beta4_16-beta_m;
-  beta5_16=beta5_16-beta_m;
-  beta6_16=beta6_16-beta_m;
-  beta7_16=beta7_16-beta_m;
-
-  beta_16 = _mm_set_epi16(beta7_16,beta6_16,beta5_16,beta4_16,beta3_16,beta2_16,beta1_16,beta0_16);
-  beta_16 = _mm_packs_epi16(beta_16,beta_16);
-  beta0 = _mm_extract_epi8(beta_16,0);
-  beta1 = _mm_extract_epi8(beta_16,1);
-  beta2 = _mm_extract_epi8(beta_16,2);
-  beta3 = _mm_extract_epi8(beta_16,3);
-  beta4 = _mm_extract_epi8(beta_16,4);
-  beta5 = _mm_extract_epi8(beta_16,5);
-  beta6 = _mm_extract_epi8(beta_16,6);
-  beta7 = _mm_extract_epi8(beta_16,7);
-
-#endif
-
   if (frame_length > 6144) {
     LOG_E(PHY,"compute_beta: frame_length %d\n",frame_length);
     return;
@@ -1080,209 +1019,6 @@ uint8_t phy_threegpplte_turbo_decoder8(int16_t *y,
       yp2[k]=*yp++;
     }
 
-#endif
-#if 0
-
-  for (i=0; i<n2; i+=16) {
-    pi2_p = &pi2tab8[iind][i];
-
-    j=pi2_p[0];
-#if defined(__x86_64__) || defined(__i386__)
-    s[j]   = _mm_extract_epi8(yp128[0],0);
-    yp1[j] = _mm_extract_epi8(yp128[0],1);
-    yp2[j] = _mm_extract_epi8(yp128[0],2);
-
-
-    j=pi2_p[1];
-    s[j]   = _mm_extract_epi8(yp128[0],3);
-    yp1[j] = _mm_extract_epi8(yp128[0],4);
-    yp2[j] = _mm_extract_epi8(yp128[0],5);
-
-
-    j=pi2_p[2];
-    s[j]   = _mm_extract_epi8(yp128[0],6);
-    yp1[j] = _mm_extract_epi8(yp128[0],7);
-    yp2[j] = _mm_extract_epi8(yp128[0],8);
-
-
-    j=pi2_p[3];
-    s[j]   = _mm_extract_epi8(yp128[0],9);
-    yp1[j] = _mm_extract_epi8(yp128[0],10);
-    yp2[j] = _mm_extract_epi8(yp128[0],11);
-
-
-    j=pi2_p[4];
-    s[j]   = _mm_extract_epi8(yp128[0],12);
-    yp1[j] = _mm_extract_epi8(yp128[0],13);
-    yp2[j] = _mm_extract_epi8(yp128[0],14);
-
-
-    j=pi2_p[5];
-    s[j]   = _mm_extract_epi8(yp128[0],15);
-    yp1[j] = _mm_extract_epi8(yp128[1],0);
-    yp2[j] = _mm_extract_epi8(yp128[1],1);
-
-
-    j=pi2_p[6];
-    s[j]   = _mm_extract_epi8(yp128[1],2);
-    yp1[j] = _mm_extract_epi8(yp128[1],3);
-    yp2[j] = _mm_extract_epi8(yp128[1],4);
-
-
-    j=pi2_p[7];
-    s[j]   = _mm_extract_epi8(yp128[1],5);
-    yp1[j] = _mm_extract_epi8(yp128[1],6);
-    yp2[j] = _mm_extract_epi8(yp128[1],7);
-
-
-    j=pi2_p[8];
-    s[j]   = _mm_extract_epi8(yp128[1],8);
-    yp1[j] = _mm_extract_epi8(yp128[1],9);
-    yp2[j] = _mm_extract_epi8(yp128[1],10);
-
-
-    j=pi2_p[9];
-    s[j]   = _mm_extract_epi8(yp128[1],11);
-    yp1[j] = _mm_extract_epi8(yp128[1],12);
-    yp2[j] = _mm_extract_epi8(yp128[1],13);
-
-
-    j=pi2_p[10];
-    s[j]   = _mm_extract_epi8(yp128[1],14);
-    yp1[j] = _mm_extract_epi8(yp128[1],15);
-    yp2[j] = _mm_extract_epi8(yp128[2],0);
-
-
-    j=pi2_p[11];
-    s[j]   = _mm_extract_epi8(yp128[2],1);
-    yp1[j] = _mm_extract_epi8(yp128[2],2);
-    yp2[j] = _mm_extract_epi8(yp128[2],3);
-
-
-    j=pi2_p[12];
-    s[j]   = _mm_extract_epi8(yp128[2],4);
-    yp1[j] = _mm_extract_epi8(yp128[2],5);
-    yp2[j] = _mm_extract_epi8(yp128[2],6);
-
-
-    j=pi2_p[13];
-    s[j]   = _mm_extract_epi8(yp128[2],7);
-    yp1[j] = _mm_extract_epi8(yp128[2],8);
-    yp2[j] = _mm_extract_epi8(yp128[2],9);
-
-
-    j=pi2_p[14];
-    s[j]   = _mm_extract_epi8(yp128[2],10);
-    yp1[j] = _mm_extract_epi8(yp128[2],11);
-    yp2[j] = _mm_extract_epi8(yp128[2],12);
-
-
-    j=pi2_p[15];
-    s[j]   = _mm_extract_epi8(yp128[2],13);
-    yp1[j] = _mm_extract_epi8(yp128[2],14);
-    yp2[j] = _mm_extract_epi8(yp128[2],15);
-
-
-#elif defined(__arm__)
-    s[j]   = vgetq_lane_s8(yp128[0],0);
-    yp1[j] = vgetq_lane_s8(yp128[0],1);
-    yp2[j] = vgetq_lane_s8(yp128[0],2);
-
-
-    j=pi2_p[1];
-    s[j]   = vgetq_lane_s8(yp128[0],3);
-    yp1[j] = vgetq_lane_s8(yp128[0],4);
-    yp2[j] = vgetq_lane_s8(yp128[0],5);
-
-
-    j=pi2_p[2];
-    s[j]   = vgetq_lane_s8(yp128[0],6);
-    yp1[j] = vgetq_lane_s8(yp128[0],7);
-    yp2[j] = vgetq_lane_s8(yp128[0],8);
-
-
-    j=pi2_p[3];
-    s[j]   = vgetq_lane_s8(yp128[0],9);
-    yp1[j] = vgetq_lane_s8(yp128[0],10);
-    yp2[j] = vgetq_lane_s8(yp128[0],11);
-
-
-    j=pi2_p[4];
-    s[j]   = vgetq_lane_s8(yp128[0],12);
-    yp1[j] = vgetq_lane_s8(yp128[0],13);
-    yp2[j] = vgetq_lane_s8(yp128[0],14);
-
-
-    j=pi2_p[5];
-    s[j]   = vgetq_lane_s8(yp128[0],15);
-    yp1[j] = vgetq_lane_s8(yp128[1],0);
-    yp2[j] = vgetq_lane_s8(yp128[1],1);
-
-
-    j=pi2_p[6];
-    s[j]   = vgetq_lane_s8(yp128[1],2);
-    yp1[j] = vgetq_lane_s8(yp128[1],3);
-    yp2[j] = vgetq_lane_s8(yp128[1],4);
-
-
-    j=pi2_p[7];
-    s[j]   = vgetq_lane_s8(yp128[1],5);
-    yp1[j] = vgetq_lane_s8(yp128[1],6);
-    yp2[j] = vgetq_lane_s8(yp128[1],7);
-
-
-    j=pi2_p[8];
-    s[j]   = vgetq_lane_s8(yp128[1],8);
-    yp1[j] = vgetq_lane_s8(yp128[1],9);
-    yp2[j] = vgetq_lane_s8(yp128[1],10);
-
-
-    j=pi2_p[9];
-    s[j]   = vgetq_lane_s8(yp128[1],11);
-    yp1[j] = vgetq_lane_s8(yp128[1],12);
-    yp2[j] = vgetq_lane_s8(yp128[1],13);
-
-
-    j=pi2_p[10];
-    s[j]   = vgetq_lane_s8(yp128[1],14);
-    yp1[j] = vgetq_lane_s8(yp128[1],15);
-    yp2[j] = vgetq_lane_s8(yp128[2],0);
-
-
-    j=pi2_p[11];
-    s[j]   = vgetq_lane_s8(yp128[2],1);
-    yp1[j] = vgetq_lane_s8(yp128[2],2);
-    yp2[j] = vgetq_lane_s8(yp128[2],3);
-
-
-    j=pi2_p[12];
-    s[j]   = vgetq_lane_s8(yp128[2],4);
-    yp1[j] = vgetq_lane_s8(yp128[2],5);
-    yp2[j] = vgetq_lane_s8(yp128[2],6);
-
-
-    j=pi2_p[13];
-    s[j]   = vgetq_lane_s8(yp128[2],7);
-    yp1[j] = vgetq_lane_s8(yp128[2],8);
-    yp2[j] = vgetq_lane_s8(yp128[2],9);
-
-
-    j=pi2_p[14];
-    s[j]   = vgetq_lane_s8(yp128[2],10);
-    yp1[j] = vgetq_lane_s8(yp128[2],11);
-    yp2[j] = vgetq_lane_s8(yp128[2],12);
-
-
-    j=pi2_p[15];
-    s[j]   = vgetq_lane_s8(yp128[2],13);
-    yp1[j] = vgetq_lane_s8(yp128[2],14);
-    yp2[j] = vgetq_lane_s8(yp128[2],15);
-
-#endif
-    yp128+=3;
-
-  }
-
 #endif
 
   yp=(llr_t*)yp128;
diff --git a/openair1/PHY/CODING/TESTBENCH/pdcch_test.c b/openair1/PHY/CODING/TESTBENCH/pdcch_test.c
index b97427e687a6184ac7aa1fb3eb1cd0492acddf0f..7ff9f27070abe86abd436112eff324329ad3e7e3 100644
--- a/openair1/PHY/CODING/TESTBENCH/pdcch_test.c
+++ b/openair1/PHY/CODING/TESTBENCH/pdcch_test.c
@@ -51,8 +51,6 @@ void lte_param_init(unsigned char N_tx, unsigned char N_rx)
   randominit(0);
   set_taus_seed(0);
 
-  crcTableInit();
-
   lte_frame_parms = &(PHY_config->lte_frame_parms);   //openair1/PHY/impl_defs_lte.h
   lte_ue_common_vars = &(PHY_vars->lte_ue_common_vars);
   lte_ue_dlsch_vars = &(PHY_vars->lte_ue_dlsch_vars);
@@ -248,7 +246,6 @@ int main(int argc, char *argv[])
   randominit(0);
   set_taus_seed(0);
 
-  crcTableInit();
   ccodelte_init();
   ccodelte_init_inv();
 
diff --git a/openair1/PHY/CODING/TESTBENCH/viterbi_test.c b/openair1/PHY/CODING/TESTBENCH/viterbi_test.c
index 385910f680ec52caaee86d45fedc902ce822b0c7..0d41482fef8284b756162fd5c53fb62ba4702536 100644
--- a/openair1/PHY/CODING/TESTBENCH/viterbi_test.c
+++ b/openair1/PHY/CODING/TESTBENCH/viterbi_test.c
@@ -218,8 +218,6 @@ int main(int argc, char *argv[])
   randominit();
   set_taus_seed();
 
-  crcTableInit();
-
   printf("EbN0, sigma, BER, FER\n");
 
   for (SNR=0; SNR<10; SNR++) {
diff --git a/openair1/PHY/CODING/coding_defs.h b/openair1/PHY/CODING/coding_defs.h
index 6a5d6f61943f778c44a3d6afd40c9f4aa52fa41f..9229bf917ece0279ae1b789a8d53e5b81b9c56ae 100644
--- a/openair1/PHY/CODING/coding_defs.h
+++ b/openair1/PHY/CODING/coding_defs.h
@@ -29,8 +29,6 @@
 
 #include <stdint.h>
 
-#include "PHY/defs_common.h"
-
 #define CRC24_A 0
 #define CRC24_B 1
 #define CRC16 2
@@ -338,7 +336,7 @@ void ccodedab_init_inv(void);
 
 /*!\fn void crcTableInit(void)
 \brief This function initializes the different crc tables.*/
-void crcTableInit (void);
+//void crcTableInit (void);
 
 
 
@@ -348,7 +346,7 @@ based on 3GPP UMTS/LTE specifications.
 @param inPtr Pointer to input byte stream
 @param bitlen length of inputs in bits
 */
-uint32_t crc24a (uint8_t *inPtr, int32_t bitlen);
+uint32_t crc24a (uint8_t * inptr, uint32_t bitlen);
 
 /*!\fn uint32_t crc24b(uint8_t *inPtr, int32_t bitlen)
 \brief This computes a 24-bit crc ('b' variant for transport-block segments)
@@ -356,26 +354,26 @@ based on 3GPP UMTS/LTE specifications.
 @param inPtr Pointer to input byte stream
 @param bitlen length of inputs in bits
 */
-uint32_t crc24b (uint8_t *inPtr, int32_t bitlen);
-
+uint32_t crc24b (uint8_t * inptr, uint32_t bitlen);
+    
 /*!\fn uint32_t crc16(uint8_t *inPtr, int32_t bitlen)
 \brief This computes a 16-bit crc based on 3GPP UMTS specifications.
 @param inPtr Pointer to input byte stream
 @param bitlen length of inputs in bits*/
-uint32_t crc16 (uint8_t *inPtr, int32_t bitlen);
+uint32_t crc16 (uint8_t * inptr, uint32_t bitlen);
 
 /*!\fn uint32_t crc12(uint8_t *inPtr, int32_t bitlen)
 \brief This computes a 12-bit crc based on 3GPP UMTS specifications.
 @param inPtr Pointer to input byte stream
 @param bitlen length of inputs in bits*/
-uint32_t crc12 (uint8_t *inPtr, int32_t bitlen);
+uint32_t crc12 (uint8_t * inptr, uint32_t bitlen);
 
 /*!\fn uint32_t crc8(uint8_t *inPtr, int32_t bitlen)
 \brief This computes a 8-bit crc based on 3GPP UMTS specifications.
 @param inPtr Pointer to input byte stream
 @param bitlen length of inputs in bits*/
-uint32_t crc8  (uint8_t *inPtr, int32_t bitlen);
-
+uint32_t crc8 (uint8_t * inptr, uint32_t bitlen);
+    
 /*!\fn void phy_viterbi_dot11_sse2(int8_t *y, uint8_t *decoded_bytes, uint16_t n,int offset,int traceback)
 \brief This routine performs a SIMD optmized Viterbi decoder for the 802.11 64-state convolutional code. It can be
 run in segments with final trace back after last segment.
diff --git a/openair1/PHY/CODING/crc_byte.c b/openair1/PHY/CODING/crc_byte.c
index 0e1f0e065f36b8ade81d103fb2ccc70915a09751..f2f7e4e5c7d213e53c3fab1c392fc042c37d3715 100644
--- a/openair1/PHY/CODING/crc_byte.c
+++ b/openair1/PHY/CODING/crc_byte.c
@@ -30,185 +30,196 @@
    Modified in June, 2001, to include  the length non multiple of 8
 */
 
+#include "PHY/types.h"
 
-#include "coding_defs.h"
+// For initialization && verification purposes, bit by bit implementation with any polynomial
+// The first bit is in the MSB of each byte
 
+// Reference 38.212 V15.1.1 Section 5.1 (36-212 v8.6.0 , pp 8-9)
+// The highest degree is set by default
+/** 1000 0110 0100 1100 1111 1011  D^24 + D^23 + D^18 + D^17 + D^14 + D^11 + D^10 + D^7 + D^6 + D^5 + D^4 + D^3 + D + 1 */
+static const uint32_t poly24a = 0x864cfb00;
+/** 1000 0000 0000 0000 0110 0011  D^24 + D^23 + D^6 + D^5 + D + 1 */
+static const uint32_t poly24b = 0x80006300;
+/** 0001 0000 0010 0001            D^16 + D^12 + D^5 + 1 */
+static const uint32_t poly16  = 0x10210000;
+/** 1000 0000 1111                 D^12 + D^11 + D^3 + D^2 + D + 1 */
+static const uint32_t poly12  = 0x80F00000;
+/** 1001 1011                      D^8  + D^7  + D^4 + D^3 + D + 1 */
+static const uint32_t poly8   = 0x9B000000;
 
-/*ref 36-212 v8.6.0 , pp 8-9 */
-/* the highest degree is set by default */
-unsigned int             poly24a = 0x864cfb00;   //1000 0110 0100 1100 1111 1011  D^24 + D^23 + D^18 + D^17 + D^14 + D^11 + D^10 + D^7 + D^6 + D^5 + D^4 + D^3 + D + 1
-unsigned int             poly24b = 0x80006300;    // 1000 0000 0000 0000 0110 0011  D^24 + D^23 + D^6 + D^5 + D + 1
-unsigned int             poly16 = 0x10210000;    // 0001 0000 0010 0001            D^16 + D^12 + D^5 + 1
-unsigned int             poly12 = 0x80F00000;    // 1000 0000 1111                 D^12 + D^11 + D^3 + D^2 + D + 1
-unsigned int             poly8 = 0x9B000000;     // 1001 1011                      D^8  + D^7  + D^4 + D^3 + D + 1
-/*********************************************************
+// The following arrays are generated with the function 'crcTableInit'
+/** Encoding table for CRC 24A */
+static const uint32_t crc24aTable[256] = {0x0, 0x864cfb00, 0x8ad50d00, 0xc99f600, 0x93e6e100, 0x15aa1a00, 0x1933ec00, 0x9f7f1700, 0xa1813900, 0x27cdc200, 0x2b543400, 0xad18cf00, 0x3267d800, 0xb42b2300, 0xb8b2d500, 0x3efe2e00, 0xc54e8900, 0x43027200, 0x4f9b8400, 0xc9d77f00, 0x56a86800, 0xd0e49300, 0xdc7d6500, 0x5a319e00, 0x64cfb000, 0xe2834b00, 0xee1abd00, 0x68564600, 0xf7295100, 0x7165aa00, 0x7dfc5c00, 0xfbb0a700, 0xcd1e900, 0x8a9d1200, 0x8604e400, 0x481f00, 0x9f370800, 0x197bf300, 0x15e20500, 0x93aefe00, 0xad50d000, 0x2b1c2b00, 0x2785dd00, 0xa1c92600, 0x3eb63100, 0xb8faca00, 0xb4633c00, 0x322fc700, 0xc99f6000, 0x4fd39b00, 0x434a6d00, 0xc5069600, 0x5a798100, 0xdc357a00, 0xd0ac8c00, 0x56e07700, 0x681e5900, 0xee52a200, 0xe2cb5400, 0x6487af00, 0xfbf8b800, 0x7db44300, 0x712db500, 0xf7614e00, 0x19a3d200, 0x9fef2900, 0x9376df00, 0x153a2400, 0x8a453300, 0xc09c800, 0x903e00, 0x86dcc500, 0xb822eb00, 0x3e6e1000, 0x32f7e600, 0xb4bb1d00, 0x2bc40a00, 0xad88f100, 0xa1110700, 0x275dfc00, 0xdced5b00, 0x5aa1a000, 0x56385600, 0xd074ad00, 0x4f0bba00, 0xc9474100, 0xc5deb700, 0x43924c00, 0x7d6c6200, 0xfb209900, 0xf7b96f00, 0x71f59400, 0xee8a8300, 0x68c67800, 0x645f8e00, 0xe2137500, 0x15723b00, 0x933ec000, 0x9fa73600, 0x19ebcd00, 0x8694da00, 0xd82100, 0xc41d700, 0x8a0d2c00, 0xb4f30200, 0x32bff900, 0x3e260f00, 0xb86af400, 0x2715e300, 0xa1591800, 0xadc0ee00, 0x2b8c1500, 0xd03cb200, 0x56704900, 0x5ae9bf00, 0xdca54400, 0x43da5300, 0xc596a800, 0xc90f5e00, 0x4f43a500, 0x71bd8b00, 0xf7f17000, 0xfb688600, 0x7d247d00, 0xe25b6a00, 0x64179100, 0x688e6700, 0xeec29c00, 0x3347a400, 0xb50b5f00, 0xb992a900, 0x3fde5200, 0xa0a14500, 0x26edbe00, 0x2a744800, 0xac38b300, 0x92c69d00, 0x148a6600, 0x18139000, 0x9e5f6b00, 0x1207c00, 0x876c8700, 0x8bf57100, 0xdb98a00, 0xf6092d00, 0x7045d600, 0x7cdc2000, 0xfa90db00, 0x65efcc00, 0xe3a33700, 0xef3ac100, 0x69763a00, 0x57881400, 0xd1c4ef00, 0xdd5d1900, 0x5b11e200, 0xc46ef500, 0x42220e00, 0x4ebbf800, 0xc8f70300, 0x3f964d00, 0xb9dab600, 0xb5434000, 0x330fbb00, 0xac70ac00, 0x2a3c5700, 0x26a5a100, 0xa0e95a00, 0x9e177400, 0x185b8f00, 0x14c27900, 0x928e8200, 0xdf19500, 0x8bbd6e00, 0x87249800, 0x1686300, 0xfad8c400, 0x7c943f00, 0x700dc900, 0xf6413200, 0x693e2500, 0xef72de00, 0xe3eb2800, 0x65a7d300, 0x5b59fd00, 0xdd150600, 0xd18cf000, 0x57c00b00, 0xc8bf1c00, 0x4ef3e700, 0x426a1100, 0xc426ea00, 0x2ae47600, 0xaca88d00, 0xa0317b00, 0x267d8000, 0xb9029700, 0x3f4e6c00, 0x33d79a00, 0xb59b6100, 0x8b654f00, 0xd29b400, 0x1b04200, 0x87fcb900, 0x1883ae00, 0x9ecf5500, 0x9256a300, 0x141a5800, 0xefaaff00, 0x69e60400, 0x657ff200, 0xe3330900, 0x7c4c1e00, 0xfa00e500, 0xf6991300, 0x70d5e800, 0x4e2bc600, 0xc8673d00, 0xc4fecb00, 0x42b23000, 0xddcd2700, 0x5b81dc00, 0x57182a00, 0xd154d100, 0x26359f00, 0xa0796400, 0xace09200, 0x2aac6900, 0xb5d37e00, 0x339f8500, 0x3f067300, 0xb94a8800, 0x87b4a600, 0x1f85d00, 0xd61ab00, 0x8b2d5000, 0x14524700, 0x921ebc00, 0x9e874a00, 0x18cbb100, 0xe37b1600, 0x6537ed00, 0x69ae1b00, 0xefe2e000, 0x709df700, 0xf6d10c00, 0xfa48fa00, 0x7c040100, 0x42fa2f00, 0xc4b6d400, 0xc82f2200, 0x4e63d900, 0xd11cce00, 0x57503500, 0x5bc9c300, 0xdd853800};
 
-For initialization && verification purposes,
-   bit by bit implementation with any polynomial
+/** Encoding table for CRC 24B */
+static const uint32_t crc24bTable[256] = {0x0, 0x80006300, 0x8000a500, 0xc600, 0x80012900, 0x14a00, 0x18c00, 0x8001ef00, 0x80023100, 0x25200, 0x29400, 0x8002f700, 0x31800, 0x80037b00, 0x8003bd00, 0x3de00, 0x80040100, 0x46200, 0x4a400, 0x8004c700, 0x52800, 0x80054b00, 0x80058d00, 0x5ee00, 0x63000, 0x80065300, 0x80069500, 0x6f600, 0x80071900, 0x77a00, 0x7bc00, 0x8007df00, 0x80086100, 0x80200, 0x8c400, 0x8008a700, 0x94800, 0x80092b00, 0x8009ed00, 0x98e00, 0xa5000, 0x800a3300, 0x800af500, 0xa9600, 0x800b7900, 0xb1a00, 0xbdc00, 0x800bbf00, 0xc6000, 0x800c0300, 0x800cc500, 0xca600, 0x800d4900, 0xd2a00, 0xdec00, 0x800d8f00, 0x800e5100, 0xe3200, 0xef400, 0x800e9700, 0xf7800, 0x800f1b00, 0x800fdd00, 0xfbe00, 0x8010a100, 0x10c200, 0x100400, 0x80106700, 0x118800, 0x8011eb00, 0x80112d00, 0x114e00, 0x129000, 0x8012f300, 0x80123500, 0x125600, 0x8013b900, 0x13da00, 0x131c00, 0x80137f00, 0x14a000, 0x8014c300, 0x80140500, 0x146600, 0x80158900, 0x15ea00, 0x152c00, 0x80154f00, 0x80169100, 0x16f200, 0x163400, 0x80165700, 0x17b800, 0x8017db00, 0x80171d00, 0x177e00, 0x18c000, 0x8018a300, 0x80186500, 0x180600, 0x8019e900, 0x198a00, 0x194c00, 0x80192f00, 0x801af100, 0x1a9200, 0x1a5400, 0x801a3700, 0x1bd800, 0x801bbb00, 0x801b7d00, 0x1b1e00, 0x801cc100, 0x1ca200, 0x1c6400, 0x801c0700, 0x1de800, 0x801d8b00, 0x801d4d00, 0x1d2e00, 0x1ef000, 0x801e9300, 0x801e5500, 0x1e3600, 0x801fd900, 0x1fba00, 0x1f7c00, 0x801f1f00, 0x80212100, 0x214200, 0x218400, 0x8021e700, 0x200800, 0x80206b00, 0x8020ad00, 0x20ce00, 0x231000, 0x80237300, 0x8023b500, 0x23d600, 0x80223900, 0x225a00, 0x229c00, 0x8022ff00, 0x252000, 0x80254300, 0x80258500, 0x25e600, 0x80240900, 0x246a00, 0x24ac00, 0x8024cf00, 0x80271100, 0x277200, 0x27b400, 0x8027d700, 0x263800, 0x80265b00, 0x80269d00, 0x26fe00, 0x294000, 0x80292300, 0x8029e500, 0x298600, 0x80286900, 0x280a00, 0x28cc00, 0x8028af00, 0x802b7100, 0x2b1200, 0x2bd400, 0x802bb700, 0x2a5800, 0x802a3b00, 0x802afd00, 0x2a9e00, 0x802d4100, 0x2d2200, 0x2de400, 0x802d8700, 0x2c6800, 0x802c0b00, 0x802ccd00, 0x2cae00, 0x2f7000, 0x802f1300, 0x802fd500, 0x2fb600, 0x802e5900, 0x2e3a00, 0x2efc00, 0x802e9f00, 0x318000, 0x8031e300, 0x80312500, 0x314600, 0x8030a900, 0x30ca00, 0x300c00, 0x80306f00, 0x8033b100, 0x33d200, 0x331400, 0x80337700, 0x329800, 0x8032fb00, 0x80323d00, 0x325e00, 0x80358100, 0x35e200, 0x352400, 0x80354700, 0x34a800, 0x8034cb00, 0x80340d00, 0x346e00, 0x37b000, 0x8037d300, 0x80371500, 0x377600, 0x80369900, 0x36fa00, 0x363c00, 0x80365f00, 0x8039e100, 0x398200, 0x394400, 0x80392700, 0x38c800, 0x8038ab00, 0x80386d00, 0x380e00, 0x3bd000, 0x803bb300, 0x803b7500, 0x3b1600, 0x803af900, 0x3a9a00, 0x3a5c00, 0x803a3f00, 0x3de000, 0x803d8300, 0x803d4500, 0x3d2600, 0x803cc900, 0x3caa00, 0x3c6c00, 0x803c0f00, 0x803fd100, 0x3fb200, 0x3f7400, 0x803f1700, 0x3ef800, 0x803e9b00, 0x803e5d00, 0x3e3e00};
 
-The first bit is in the MSB of each byte
+/** Encoding table for CRC 16 */
+static const uint16_t crc16Table[256] = {0x0, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, 0x1231, 0x210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de, 0x2462, 0x3443, 0x420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485, 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d, 0x3653, 0x2672, 0x1611, 0x630, 0x76d7, 0x66f6, 0x5695, 0x46b4, 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc, 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x840, 0x1861, 0x2802, 0x3823, 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b, 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0xa50, 0x3a33, 0x2a12, 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a, 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0xc60, 0x1c41, 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49, 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0xe70, 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78, 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f, 0x1080, 0xa1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067, 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e, 0x2b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256, 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d, 0x34e2, 0x24c3, 0x14a0, 0x481, 0x7466, 0x6447, 0x5424, 0x4405, 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c, 0x26d3, 0x36f2, 0x691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634, 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab, 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x8e1, 0x3882, 0x28a3, 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a, 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0xaf1, 0x1ad0, 0x2ab3, 0x3a92, 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9, 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0xcc1, 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8, 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0xed1, 0x1ef0};
 
-*********************************************************/
-unsigned int
-crcbit (unsigned char * inputptr, int octetlen, unsigned int poly)
-{
-  unsigned int             i, crc = 0, c;
+/** Encoding table for CRC 12 */
+static const uint16_t crc12Table[256] = {0x0, 0x80f0, 0x8110, 0x1e0, 0x82d0, 0x220, 0x3c0, 0x8330, 0x8550, 0x5a0, 0x440, 0x84b0, 0x780, 0x8770, 0x8690, 0x660, 0x8a50, 0xaa0, 0xb40, 0x8bb0, 0x880, 0x8870, 0x8990, 0x960, 0xf00, 0x8ff0, 0x8e10, 0xee0, 0x8dd0, 0xd20, 0xcc0, 0x8c30, 0x9450, 0x14a0, 0x1540, 0x95b0, 0x1680, 0x9670, 0x9790, 0x1760, 0x1100, 0x91f0, 0x9010, 0x10e0, 0x93d0, 0x1320, 0x12c0, 0x9230, 0x1e00, 0x9ef0, 0x9f10, 0x1fe0, 0x9cd0, 0x1c20, 0x1dc0, 0x9d30, 0x9b50, 0x1ba0, 0x1a40, 0x9ab0, 0x1980, 0x9970, 0x9890, 0x1860, 0xa850, 0x28a0, 0x2940, 0xa9b0, 0x2a80, 0xaa70, 0xab90, 0x2b60, 0x2d00, 0xadf0, 0xac10, 0x2ce0, 0xafd0, 0x2f20, 0x2ec0, 0xae30, 0x2200, 0xa2f0, 0xa310, 0x23e0, 0xa0d0, 0x2020, 0x21c0, 0xa130, 0xa750, 0x27a0, 0x2640, 0xa6b0, 0x2580, 0xa570, 0xa490, 0x2460, 0x3c00, 0xbcf0, 0xbd10, 0x3de0, 0xbed0, 0x3e20, 0x3fc0, 0xbf30, 0xb950, 0x39a0, 0x3840, 0xb8b0, 0x3b80, 0xbb70, 0xba90, 0x3a60, 0xb650, 0x36a0, 0x3740, 0xb7b0, 0x3480, 0xb470, 0xb590, 0x3560, 0x3300, 0xb3f0, 0xb210, 0x32e0, 0xb1d0, 0x3120, 0x30c0, 0xb030, 0xd050, 0x50a0, 0x5140, 0xd1b0, 0x5280, 0xd270, 0xd390, 0x5360, 0x5500, 0xd5f0, 0xd410, 0x54e0, 0xd7d0, 0x5720, 0x56c0, 0xd630, 0x5a00, 0xdaf0, 0xdb10, 0x5be0, 0xd8d0, 0x5820, 0x59c0, 0xd930, 0xdf50, 0x5fa0, 0x5e40, 0xdeb0, 0x5d80, 0xdd70, 0xdc90, 0x5c60, 0x4400, 0xc4f0, 0xc510, 0x45e0, 0xc6d0, 0x4620, 0x47c0, 0xc730, 0xc150, 0x41a0, 0x4040, 0xc0b0, 0x4380, 0xc370, 0xc290, 0x4260, 0xce50, 0x4ea0, 0x4f40, 0xcfb0, 0x4c80, 0xcc70, 0xcd90, 0x4d60, 0x4b00, 0xcbf0, 0xca10, 0x4ae0, 0xc9d0, 0x4920, 0x48c0, 0xc830, 0x7800, 0xf8f0, 0xf910, 0x79e0, 0xfad0, 0x7a20, 0x7bc0, 0xfb30, 0xfd50, 0x7da0, 0x7c40, 0xfcb0, 0x7f80, 0xff70, 0xfe90, 0x7e60, 0xf250, 0x72a0, 0x7340, 0xf3b0, 0x7080, 0xf070, 0xf190, 0x7160, 0x7700, 0xf7f0, 0xf610, 0x76e0, 0xf5d0, 0x7520, 0x74c0, 0xf430, 0xec50, 0x6ca0, 0x6d40, 0xedb0, 0x6e80, 0xee70, 0xef90, 0x6f60, 0x6900, 0xe9f0, 0xe810, 0x68e0, 0xebd0, 0x6b20, 0x6ac0, 0xea30, 0x6600, 0xe6f0, 0xe710, 0x67e0, 0xe4d0, 0x6420, 0x65c0, 0xe530, 0xe350, 0x63a0, 0x6240, 0xe2b0, 0x6180, 0xe170, 0xe090, 0x6060};
 
-  while (octetlen-- > 0) {
-    c = (*inputptr++) << 24;
+/** Encoding table for CRC 8 */
+static const uint8_t crc8Table[256] = {0x0, 0x9b, 0xad, 0x36, 0xc1, 0x5a, 0x6c, 0xf7, 0x19, 0x82, 0xb4, 0x2f, 0xd8, 0x43, 0x75, 0xee, 0x32, 0xa9, 0x9f, 0x4, 0xf3, 0x68, 0x5e, 0xc5, 0x2b, 0xb0, 0x86, 0x1d, 0xea, 0x71, 0x47, 0xdc, 0x64, 0xff, 0xc9, 0x52, 0xa5, 0x3e, 0x8, 0x93, 0x7d, 0xe6, 0xd0, 0x4b, 0xbc, 0x27, 0x11, 0x8a, 0x56, 0xcd, 0xfb, 0x60, 0x97, 0xc, 0x3a, 0xa1, 0x4f, 0xd4, 0xe2, 0x79, 0x8e, 0x15, 0x23, 0xb8, 0xc8, 0x53, 0x65, 0xfe, 0x9, 0x92, 0xa4, 0x3f, 0xd1, 0x4a, 0x7c, 0xe7, 0x10, 0x8b, 0xbd, 0x26, 0xfa, 0x61, 0x57, 0xcc, 0x3b, 0xa0, 0x96, 0xd, 0xe3, 0x78, 0x4e, 0xd5, 0x22, 0xb9, 0x8f, 0x14, 0xac, 0x37, 0x1, 0x9a, 0x6d, 0xf6, 0xc0, 0x5b, 0xb5, 0x2e, 0x18, 0x83, 0x74, 0xef, 0xd9, 0x42, 0x9e, 0x5, 0x33, 0xa8, 0x5f, 0xc4, 0xf2, 0x69, 0x87, 0x1c, 0x2a, 0xb1, 0x46, 0xdd, 0xeb, 0x70, 0xb, 0x90, 0xa6, 0x3d, 0xca, 0x51, 0x67, 0xfc, 0x12, 0x89, 0xbf, 0x24, 0xd3, 0x48, 0x7e, 0xe5, 0x39, 0xa2, 0x94, 0xf, 0xf8, 0x63, 0x55, 0xce, 0x20, 0xbb, 0x8d, 0x16, 0xe1, 0x7a, 0x4c, 0xd7, 0x6f, 0xf4, 0xc2, 0x59, 0xae, 0x35, 0x3, 0x98, 0x76, 0xed, 0xdb, 0x40, 0xb7, 0x2c, 0x1a, 0x81, 0x5d, 0xc6, 0xf0, 0x6b, 0x9c, 0x7, 0x31, 0xaa, 0x44, 0xdf, 0xe9, 0x72, 0x85, 0x1e, 0x28, 0xb3, 0xc3, 0x58, 0x6e, 0xf5, 0x2, 0x99, 0xaf, 0x34, 0xda, 0x41, 0x77, 0xec, 0x1b, 0x80, 0xb6, 0x2d, 0xf1, 0x6a, 0x5c, 0xc7, 0x30, 0xab, 0x9d, 0x6, 0xe8, 0x73, 0x45, 0xde, 0x29, 0xb2, 0x84, 0x1f, 0xa7, 0x3c, 0xa, 0x91, 0x66, 0xfd, 0xcb, 0x50, 0xbe, 0x25, 0x13, 0x88, 0x7f, 0xe4, 0xd2, 0x49, 0x95, 0xe, 0x38, 0xa3, 0x54, 0xcf, 0xf9, 0x62, 0x8c, 0x17, 0x21, 0xba, 0x4d, 0xd6, 0xe0, 0x7b};
 
-    for (i = 8; i != 0; i--) {
-      if ((1 << 31) & (c ^ crc))
-        crc = (crc << 1) ^ poly;
-      else
-        crc <<= 1;
 
-      c <<= 1;
+uint32_t crcbit (uint8_t * inputptr, int32_t octetlen, uint32_t poly)
+{
+    uint32_t i;
+    uint32_t crc = 0;
+    uint32_t c;
+
+    while (octetlen-- > 0)
+    {
+        c = (*inputptr++) << 24;
+
+        for (i = 8; i != 0; i--)
+        {
+            if ( (1 << 31) & (c ^ crc) )
+            {
+                crc = (crc << 1) ^ poly;
+            }
+            else
+            {
+                crc <<= 1;
+            }
+
+            c <<= 1;
+        }
     }
-  }
 
-  return crc;
+    return crc;
 }
 
-/*********************************************************
-
-crc table initialization
-
-*********************************************************/
-static unsigned int      crc24aTable[256];
-static unsigned int      crc24bTable[256];
-static unsigned short      crc16Table[256];
-static unsigned short      crc12Table[256];
-static unsigned char       crc8Table[256];
+// CRC table initialization
 
+/*
 void crcTableInit (void)
 {
-  unsigned char              c = 0;
-
-  do {
-    crc24aTable[c] = crcbit (&c, 1, poly24a);
-    crc24bTable[c] = crcbit (&c, 1, poly24b);
-    crc16Table[c] = (unsigned short) (crcbit (&c, 1, poly16) >> 16);
-    crc12Table[c] = (unsigned short) (crcbit (&c, 1, poly12) >> 16);
-    crc8Table[c] = (unsigned char) (crcbit (&c, 1, poly8) >> 24);
-  } while (++c);
+    uint8_t c = 0;
+
+    do
+    {
+        crc24aTable[c] = crcbit (&c, 1, poly24a);
+        crc24bTable[c] = crcbit (&c, 1, poly24b);
+        crc16Table [c] = (uint16_t) (crcbit (&c, 1, poly16) >> 16);
+        crc12Table [c] = (uint16_t) (crcbit (&c, 1, poly12) >> 16);
+        crc8Table  [c] = (uint8_t)  (crcbit (&c, 1, poly8 ) >> 24);
+    }
+    while (++c);
 }
-/*********************************************************
-
-Byte by byte implementations,
-assuming initial byte is 0 padded (in MSB) if necessary
+*/
 
-*********************************************************/
-unsigned int
-crc24a (unsigned char * inptr, int bitlen)
+// Byte by byte implementations, assuming initial byte is 0 padded (in MSB) if necessary
+uint32_t crc24a (uint8_t * inptr, uint32_t bitlen)
 {
+    int32_t octetlen = bitlen / 8;
+    int32_t resbit = (bitlen % 8);
+    uint32_t crc = 0;
 
-  int             octetlen, resbit;
-  unsigned int             crc = 0;
-  octetlen = bitlen / 8;        /* Change in octets */
-  resbit = (bitlen % 8);
-
-  while (octetlen-- > 0) {
-    //   printf("crc24a: in %x => crc %x\n",crc,*inptr);
-    crc = (crc << 8) ^ crc24aTable[(*inptr++) ^ (crc >> 24)];
-  }
+    while (octetlen-- > 0)
+    {
+        crc = (crc << 8) ^ crc24aTable[(*inptr++) ^ (crc >> 24)];
+    }
 
-  if (resbit > 0)
-    crc = (crc << resbit) ^ crc24aTable[((*inptr) >> (8 - resbit)) ^ (crc >> (32 - resbit))];
+    if (resbit > 0)
+    {
+        crc = (crc << resbit) ^ crc24aTable[((*inptr) >> (8 - resbit)) ^ (crc >> (32 - resbit))];
+    }
 
-  return crc;
+    return crc;
 }
 
-unsigned int crc24b (unsigned char * inptr, int bitlen)
+uint32_t crc24b (uint8_t * inptr, uint32_t bitlen)
 {
+    int32_t octetlen = bitlen / 8;
+    int32_t resbit = (bitlen % 8);
+    uint32_t crc = 0;
 
-  int             octetlen, resbit;
-  unsigned int             crc = 0;
-  octetlen = bitlen / 8;        /* Change in octets */
-  resbit = (bitlen % 8);
-
-  while (octetlen-- > 0) {
-    //    printf("crc24b: in %x => crc %x (%x)\n",crc,*inptr,crc24bTable[(*inptr) ^ (crc >> 24)]);
-    crc = (crc << 8) ^ crc24bTable[(*inptr++) ^ (crc >> 24)];
-  }
+    while (octetlen-- > 0)
+    {
+        crc = (crc << 8) ^ crc24bTable[(*inptr++) ^ (crc >> 24)];
+    }
 
-  if (resbit > 0)
-    crc = (crc << resbit) ^ crc24bTable[((*inptr) >> (8 - resbit)) ^ (crc >> (32 - resbit))];
+    if (resbit > 0)
+    {
+        crc = (crc << resbit) ^ crc24bTable[((*inptr) >> (8 - resbit)) ^ (crc >> (32 - resbit))];
+    }
 
-  return crc;
+    return crc;
 }
 
-unsigned int
-crc16 (unsigned char * inptr, int bitlen)
+uint32_t crc16 (uint8_t * inptr, uint32_t bitlen)
 {
-  int             octetlen, resbit;
-  unsigned int             crc = 0;
-  octetlen = bitlen / 8;        /* Change in octets */
-  resbit = (bitlen % 8);
+    int32_t octetlen = bitlen / 8;
+    int32_t resbit = (bitlen % 8);
+    uint32_t crc = 0;
 
-  while (octetlen-- > 0) {
-
-    crc = (crc << 8) ^ (crc16Table[(*inptr++) ^ (crc >> 24)] << 16);
-  }
+    while (octetlen-- > 0)
+    {
+        crc = (crc << 8) ^ (crc16Table[(*inptr++) ^ (crc >> 24)] << 16);
+    }
 
-  if (resbit > 0)
-    crc = (crc << resbit) ^ (crc16Table[((*inptr) >> (8 - resbit)) ^ (crc >> (32 - resbit))] << 16);
+    if (resbit > 0)
+    {
+        crc = (crc << resbit) ^ (crc16Table[((*inptr) >> (8 - resbit)) ^ (crc >> (32 - resbit))] << 16);
+    }
 
-  return crc;
+    return crc;
 }
 
-unsigned int
-crc12 (unsigned char * inptr, int bitlen)
+uint32_t crc12 (uint8_t * inptr, uint32_t bitlen)
 {
-  int             octetlen, resbit;
-  unsigned int             crc = 0;
-  octetlen = bitlen / 8;        /* Change in octets */
-  resbit = (bitlen % 8);
+    int32_t octetlen = bitlen / 8;
+    int32_t resbit = (bitlen % 8);
+    uint32_t crc = 0;
 
-  while (octetlen-- > 0) {
-    crc = (crc << 8) ^ (crc12Table[(*inptr++) ^ (crc >> 24)] << 16);
-  }
+    while (octetlen-- > 0)
+    {
+        crc = (crc << 8) ^ (crc12Table[(*inptr++) ^ (crc >> 24)] << 16);
+    }
 
-  if (resbit > 0)
-    crc = (crc << resbit) ^ (crc12Table[((*inptr) >> (8 - resbit)) ^ (crc >> (32 - resbit))] << 16);
+    if (resbit > 0)
+    {
+        crc = (crc << resbit) ^ (crc12Table[((*inptr) >> (8 - resbit)) ^ (crc >> (32 - resbit))] << 16);
+    }
 
-  return crc;
+    return crc;
 }
 
-unsigned int
-crc8 (unsigned char * inptr, int bitlen)
+uint32_t crc8 (uint8_t * inptr, uint32_t bitlen)
 {
-  int             octetlen, resbit;
-  unsigned int             crc = 0;
-  octetlen = bitlen / 8;        /* Change in octets */
-  resbit = (bitlen % 8);
+    int32_t octetlen = bitlen / 8;
+    int32_t resbit = (bitlen % 8);
+    uint32_t crc = 0;
 
-  while (octetlen-- > 0) {
-    crc = crc8Table[(*inptr++) ^ (crc >> 24)] << 24;
-  }
+    while (octetlen-- > 0)
+    {
+        crc = crc8Table[(*inptr++) ^ (crc >> 24)] << 24;
+    }
 
-  if (resbit > 0)
-    crc = (crc << resbit) ^ (crc8Table[((*inptr) >> (8 - resbit)) ^ (crc >> (32 - resbit))] << 24);
+    if (resbit > 0)
+    {
+        crc = (crc << resbit) ^ (crc8Table[((*inptr) >> (8 - resbit)) ^ (crc >> (32 - resbit))] << 24);
+    }
 
-  return crc;
+    return crc;
 }
 
 #ifdef DEBUG_CRC
-/*******************************************************************/
-/**
-   Test code
-********************************************************************/
+// Test code
 
 #include <stdio.h>
 
 main()
 {
-  unsigned char test[] = "Thebigredfox";
-  crcTableInit();
-  printf("%x\n", crcbit(test, sizeof(test) - 1, poly24));
-  printf("%x\n", crc24(test, (sizeof(test) - 1)*8));
-  printf("%x\n", crcbit(test, sizeof(test) - 1, poly8));
-  printf("%x\n", crc8(test, (sizeof(test) - 1)*8));
+    unsigned char test[] = "Thebigredfox";
+    crcTableInit();
+    printf("%x\n", crcbit(test, sizeof(test) - 1, poly24));
+    printf("%x\n", crc24 (test, (sizeof(test) - 1)*8));
+    printf("%x\n", crcbit(test, sizeof(test) - 1, poly8));
+    printf("%x\n", crc8  (test, (sizeof(test) - 1)*8));
 }
 #endif
-
diff --git a/openair1/PHY/INIT/init_top.c b/openair1/PHY/INIT/init_top.c
index f033a7e5c17d3db534b91d2008fe49913c2c0c07..25f35ab0828c11b31c38c6d6b73700d4a53064d5 100644
--- a/openair1/PHY/INIT/init_top.c
+++ b/openair1/PHY/INIT/init_top.c
@@ -67,8 +67,6 @@ void generate_qpsk_table(void)
 void init_lte_top(LTE_DL_FRAME_PARMS *frame_parms)
 {
 
-  crcTableInit();
-
   ccodedot11_init();
   ccodedot11_init_inv();
 
diff --git a/openair1/PHY/INIT/lte_init.c b/openair1/PHY/INIT/lte_init.c
index b9522e050ce34b570f507598d28c20aa8bcb790e..247204cb06e6d88ac7d548ddd403584daec1280e 100644
--- a/openair1/PHY/INIT/lte_init.c
+++ b/openair1/PHY/INIT/lte_init.c
@@ -255,12 +255,7 @@ void phy_config_request(PHY_Config_t *phy_config) {
 	      "prach_starting_subframe_periodicity[0] %d < prach_numPetitionPerPreambleAttempt[0] %d\n",
 	      fp->prach_emtc_config_common.prach_ConfigInfo.prach_starting_subframe_periodicity[0],
 	      fp->prach_emtc_config_common.prach_ConfigInfo.prach_numRepetitionPerPreambleAttempt[0]);
-#if 0
-  AssertFatal(fp->prach_emtc_config_common.prach_ConfigInfo.prach_numRepetitionPerPreambleAttempt[0] > 0,
-	      "prach_emtc_config_common.prach_ConfigInfo.prach_numRepetitionPerPreambleAttempt[0]==0\n");
-#else
-  LOG_D(PHY,"***DJP*** removed assert on preamble fp->prach_emtc_config_common.prach_ConfigInfo.prach_numRepetitionPerPreambleAttempt[0]:%d expecting >0 %s:%d\n\n\n", fp->prach_emtc_config_common.prach_ConfigInfo.prach_numRepetitionPerPreambleAttempt[0], __FILE__, __LINE__);
-#endif
+
   fp->prach_emtc_config_common.prach_ConfigInfo.prach_ConfigIndex[0]                     = cfg->emtc_config.prach_ce_level_0_configuration_index.value;
   fp->prach_emtc_config_common.prach_ConfigInfo.prach_FreqOffset[0]                      = cfg->emtc_config.prach_ce_level_0_frequency_offset.value;
   fp->prach_emtc_config_common.prach_ConfigInfo.prach_hopping_enable[0]                = cfg->emtc_config.prach_ce_level_0_hopping_enable.value;
diff --git a/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c b/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c
index f893b70baf7bf42f2d828fa8edef06c9470c12ae..7f4f87dac2d87744cba09179133d19827fa7c514 100644
--- a/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c
+++ b/openair1/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c
@@ -79,7 +79,7 @@ int lte_est_timing_advance(LTE_DL_FRAME_PARMS *frame_parms,
 #ifdef DEBUG_PHY
       sprintf(fname,"srs_ch_estimates_time_%d%d.m",ind,aa);
       sprintf(vname,"srs_time_%d%d",ind,aa);
-      write_output(fname,vname,lte_eNB_srs->srs_ch_estimates_time[aa],frame_parms->ofdm_symbol_size*2,2,1);
+      LOG_M(fname,vname,lte_eNB_srs->srs_ch_estimates_time[aa],frame_parms->ofdm_symbol_size*2,2,1);
 #endif
     }
 
diff --git a/openair1/PHY/LTE_ESTIMATION/lte_dl_bf_channel_estimation.c b/openair1/PHY/LTE_ESTIMATION/lte_dl_bf_channel_estimation.c
index a406e246a6264066c299669fe3df5ddf7d1f7c97..43c0350efb138dd9302d2c0f70ed77ee0c2d9e2b 100644
--- a/openair1/PHY/LTE_ESTIMATION/lte_dl_bf_channel_estimation.c
+++ b/openair1/PHY/LTE_ESTIMATION/lte_dl_bf_channel_estimation.c
@@ -81,7 +81,7 @@ int lte_dl_bf_channel_estimation(PHY_VARS_UE *phy_vars_ue,
     //generate ue specific pilots
     lprime = symbol/3-1;
     lte_dl_ue_spec_rx(phy_vars_ue,uespec_pilot,Ns,5,lprime,0,dlsch0_harq->nb_rb);
-    //write_output("uespec_pilot_rx.m","uespec_pilot",uespec_pilot,300,1,1);
+    //LOG_M("uespec_pilot_rx.m","uespec_pilot",uespec_pilot,300,1,1);
 
     if (frame_parms->Ncp==0){
       if (symbol==3 || symbol==6 || symbol==9 || symbol==12)
diff --git a/openair1/PHY/LTE_ESTIMATION/lte_sync_time.c b/openair1/PHY/LTE_ESTIMATION/lte_sync_time.c
index 587dbed6c506f4221797cd27b83e2d7723ae60d6..0ff4650867e7708336ba38083c4df4d7624cb112 100644
--- a/openair1/PHY/LTE_ESTIMATION/lte_sync_time.c
+++ b/openair1/PHY/LTE_ESTIMATION/lte_sync_time.c
@@ -275,9 +275,9 @@ int lte_sync_time_init(LTE_DL_FRAME_PARMS *frame_parms )   // LTE_UE_COMMON *com
 
 
 #ifdef DEBUG_PHY
-  write_output("primary_sync0.m","psync0",primary_synch0_time,frame_parms->ofdm_symbol_size,1,1);
-  write_output("primary_sync1.m","psync1",primary_synch1_time,frame_parms->ofdm_symbol_size,1,1);
-  write_output("primary_sync2.m","psync2",primary_synch2_time,frame_parms->ofdm_symbol_size,1,1);
+  LOG_M("primary_sync0.m","psync0",primary_synch0_time,frame_parms->ofdm_symbol_size,1,1);
+  LOG_M("primary_sync1.m","psync1",primary_synch1_time,frame_parms->ofdm_symbol_size,1,1);
+  LOG_M("primary_sync2.m","psync2",primary_synch2_time,frame_parms->ofdm_symbol_size,1,1);
 #endif
   return (1);
 }
@@ -466,10 +466,10 @@ int lte_sync_time(int **rxdata, ///rx data in time domain
 
 #ifdef DEBUG_PHY
   if (debug_cnt == 0) {
-    write_output("sync_corr0_ue.m","synccorr0",sync_corr_ue0,2*length,1,2);
-    write_output("sync_corr1_ue.m","synccorr1",sync_corr_ue1,2*length,1,2);
-    write_output("sync_corr2_ue.m","synccorr2",sync_corr_ue2,2*length,1,2);
-    write_output("rxdata0.m","rxd0",rxdata[0],length<<1,1,1);
+    LOG_M("sync_corr0_ue.m","synccorr0",sync_corr_ue0,2*length,1,2);
+    LOG_M("sync_corr1_ue.m","synccorr1",sync_corr_ue1,2*length,1,2);
+    LOG_M("sync_corr2_ue.m","synccorr2",sync_corr_ue2,2*length,1,2);
+    LOG_M("rxdata0.m","rxd0",rxdata[0],length<<1,1,1);
     //    exit(-1);
   } else {
     debug_cnt++;
diff --git a/openair1/PHY/LTE_ESTIMATION/lte_sync_timefreq.c b/openair1/PHY/LTE_ESTIMATION/lte_sync_timefreq.c
index fd7b8d601ab9db9811c99a7df8b6b75cd0e2a9e0..e8225aa1fd2b9299875cb17e2287c56ab2b08903 100644
--- a/openair1/PHY/LTE_ESTIMATION/lte_sync_timefreq.c
+++ b/openair1/PHY/LTE_ESTIMATION/lte_sync_timefreq.c
@@ -67,7 +67,7 @@ void lte_sync_timefreq(PHY_VARS_UE *ue,int band,unsigned int DL_freq)
 
 
   for (i=0; i<38400*4; i+=3072) { // steps of 200 us with 100 us overlap, 0 to 5s
-    //  write_output("rxsig0.m","rxs0",ue->lte_ue_common_vars.rxdata[0],30720,1,1);
+    //  LOG_M("rxsig0.m","rxs0",ue->lte_ue_common_vars.rxdata[0],30720,1,1);
 
     //for (i = 15360-3072*2; i<15360+3072+1; i+=3072)  {
 
@@ -87,9 +87,9 @@ void lte_sync_timefreq(PHY_VARS_UE *ue,int band,unsigned int DL_freq)
       /*
       printf("i %d: sp %p\n",i,sp);
       if (i==12288) {
-        write_output("scan6144F.m","s6144F",sp,6144,1,1);
-        write_output("scan6144.m","s6144",rxp,6144,1,1);
-      write_output("pss0_6144.m","pss0",pss6144_0_0,256,1,1);
+        LOG_M("scan6144F.m","s6144F",sp,6144,1,1);
+        LOG_M("scan6144.m","s6144",rxp,6144,1,1);
+      LOG_M("pss0_6144.m","pss0",pss6144_0_0,256,1,1);
       }*/
 
       for (f = -2000; f<2000; f++) { // this is -10MHz to 10 MHz in 5 kHz steps
@@ -272,10 +272,10 @@ void lte_sync_timefreq(PHY_VARS_UE *ue,int band,unsigned int DL_freq)
               if (i==12288) {
           sprintf(fname,"corr256F_%d.m",abs(f));
           sprintf(vname,"c256F_%d",abs(f));
-                write_output(fname,vname,autocorr0,256,1,1);
+                LOG_M(fname,vname,autocorr0,256,1,1);
           sprintf(fname,"corr256_%d.m",abs(f));
           sprintf(vname,"c256_%d",abs(f));
-                write_output(fname,vname,tmp_t,256,1,1);
+                LOG_M(fname,vname,tmp_t,256,1,1);
           }*/
 
         memset((void*)autocorr0_t,0,256*4);
diff --git a/openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c b/openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
index 2d3acfce9b1f678b31e4a7fd5be285e808fbdafd..48441765b4b7bbb807b8dcdf7cdb2487952fe026 100644
--- a/openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
+++ b/openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
@@ -105,9 +105,9 @@ int32_t temp_in_ifft_0[2048*2] __attribute__((aligned(32)));
 #ifdef DEBUG_CH
 
   if (Ns==0)
-    write_output("drs_seq0.m","drsseq0",ul_ref_sigs_rx[u][v][Msc_RS_idx],2*Msc_RS,2,1);
+    LOG_M("drs_seq0.m","drsseq0",ul_ref_sigs_rx[u][v][Msc_RS_idx],2*Msc_RS,2,1);
   else
-    write_output("drs_seq1.m","drsseq1",ul_ref_sigs_rx[u][v][Msc_RS_idx],2*Msc_RS,2,1);
+    LOG_M("drs_seq1.m","drsseq1",ul_ref_sigs_rx[u][v][Msc_RS_idx],2*Msc_RS,2,1);
 
 #endif
 
@@ -228,7 +228,7 @@ int32_t temp_in_ifft_0[2048*2] __attribute__((aligned(32)));
       if((cyclic_shift != 0)) {
         // Compensating for the phase shift introduced at the transmitte
 #ifdef DEBUG_CH
-        write_output("drs_est_pre.m","drsest_pre",ul_ch_estimates[0],300*12,1,1);
+        LOG_M("drs_est_pre.m","drsest_pre",ul_ch_estimates[0],300*12,1,1);
 #endif
 
         for(i=symbol_offset; i<symbol_offset+Msc_RS; i++) {
@@ -251,7 +251,7 @@ int32_t temp_in_ifft_0[2048*2] __attribute__((aligned(32)));
         }
 
 #ifdef DEBUG_CH
-        write_output("drs_est_post.m","drsest_post",ul_ch_estimates[0],300*12,1,1);
+        LOG_M("drs_est_post.m","drsest_post",ul_ch_estimates[0],300*12,1,1);
 #endif
       }
 
@@ -294,11 +294,11 @@ int32_t temp_in_ifft_0[2048*2] __attribute__((aligned(32)));
 
       if (aa==1) {
         if (Ns == 0) {
-          write_output("rxdataF_ext.m","rxF_ext",&rxdataF_ext[aa][symbol_offset],512*2,2,1);
-          write_output("tmpin_ifft.m","drs_in",temp_in_ifft_0,512,1,1);
-          write_output("drs_est0.m","drs0",ul_ch_estimates_time[aa],512,1,1);
+          LOG_M("rxdataF_ext.m","rxF_ext",&rxdataF_ext[aa][symbol_offset],512*2,2,1);
+          LOG_M("tmpin_ifft.m","drs_in",temp_in_ifft_0,512,1,1);
+          LOG_M("drs_est0.m","drs0",ul_ch_estimates_time[aa],512,1,1);
         } else
-          write_output("drs_est1.m","drs1",ul_ch_estimates_time[aa],512,1,1);
+          LOG_M("drs_est1.m","drs1",ul_ch_estimates_time[aa],512,1,1);
       }
 
 #endif
@@ -454,7 +454,7 @@ int32_t lte_srs_channel_estimation(LTE_DL_FRAME_PARMS *frame_parms,
 		   &srs_vars->srs[eNB_id],
 		   0x7FFF,
 		   subframe)==-1) {
-      LOG_E(PHY,"lte_srs_channel_estimation: Error in generate_srs_rx\n");
+      LOG_E(PHY,"lte_srs_channel_estimation: Error in generate_srs\n");
       return(-1);
     }
 
@@ -466,8 +466,8 @@ int32_t lte_srs_channel_estimation(LTE_DL_FRAME_PARMS *frame_parms,
 	    srs_vars->srs_ch_estimates[aa]);
 #endif
       
-      //write_output("eNB_rxF.m","rxF",&common_vars->rxdataF[0][aa][2*frame_parms->ofdm_symbol_size*symbol],2*(frame_parms->ofdm_symbol_size),2,1);
-      //write_output("eNB_srs.m","srs_eNB",common_vars->srs,(frame_parms->ofdm_symbol_size),1,1);
+      //LOG_M("eNB_rxF.m","rxF",&common_vars->rxdataF[0][aa][2*frame_parms->ofdm_symbol_size*symbol],2*(frame_parms->ofdm_symbol_size),2,1);
+      //LOG_M("eNB_srs.m","srs_eNB",common_vars->srs,(frame_parms->ofdm_symbol_size),1,1);
 
 
       mult_cpx_conj_vector((int16_t*) &common_vars->rxdataF[aa][2*frame_parms->ofdm_symbol_size*symbol],
@@ -480,7 +480,7 @@ int32_t lte_srs_channel_estimation(LTE_DL_FRAME_PARMS *frame_parms,
 #ifdef DEBUG_SRS
       sprintf(fname,"srs_ch_est%d.m",aa);
       sprintf(vname,"srs_est%d",aa);
-      write_output(fname,vname,srs_vars->srs_ch_estimates[aa],frame_parms->ofdm_symbol_size,1,1);
+      LOG_M(fname,vname,srs_vars->srs_ch_estimates[aa],frame_parms->ofdm_symbol_size,1,1);
 #endif
     }
 
diff --git a/openair1/PHY/LTE_REFSIG/lte_dl_cell_spec.c b/openair1/PHY/LTE_REFSIG/lte_dl_cell_spec.c
index 56d8aaf1dfce1826cedefec58e856a64620aabd7..1eabfd6c367afa38701d6d82b7f0514d0e8339a2 100644
--- a/openair1/PHY/LTE_REFSIG/lte_dl_cell_spec.c
+++ b/openair1/PHY/LTE_REFSIG/lte_dl_cell_spec.c
@@ -256,9 +256,9 @@ int lte_dl_cell_spec_rx(PHY_VARS_UE *ue,
 
 
 
-//extern int write_output(const char *,const char *,void *,int,int,char);
+//extern int LOG_M(const char *,const char *,void *,int,int,char);
 // flag change eren
-extern int write_output(const char *,const char *,void *,int,int,char);
+extern int LOG_M(const char *,const char *,void *,int,int,char);
 main()
 {
 
@@ -317,10 +317,10 @@ main()
                    0);
 
 
-  write_output("dl_cell_spec00.m","dl_cs00",output00,1024,1,1);
-  write_output("dl_cell_spec01.m","dl_cs01",output01,1024,1,1);
-  write_output("dl_cell_spec10.m","dl_cs10",output10,1024,1,1);
-  write_output("dl_cell_spec11.m","dl_cs11",output11,1024,1,1);
+  LOG_M("dl_cell_spec00.m","dl_cs00",output00,1024,1,1);
+  LOG_M("dl_cell_spec01.m","dl_cs01",output01,1024,1,1);
+  LOG_M("dl_cell_spec10.m","dl_cs10",output10,1024,1,1);
+  LOG_M("dl_cell_spec11.m","dl_cs11",output11,1024,1,1);
 }
 
 #endif
diff --git a/openair1/PHY/LTE_REFSIG/lte_dl_uespec.c b/openair1/PHY/LTE_REFSIG/lte_dl_uespec.c
index fc03299f2b60bda1ff969d5307c478b51f9fa686..2c5240e14329452b2c294c8e8bde8b994278531c 100644
--- a/openair1/PHY/LTE_REFSIG/lte_dl_uespec.c
+++ b/openair1/PHY/LTE_REFSIG/lte_dl_uespec.c
@@ -317,9 +317,9 @@ int lte_dl_ue_spec_rx(PHY_VARS_UE *ue,
 
 
 
-//extern int write_output(const char *,const char *,void *,int,int,char);
+//extern int LOG_M(const char *,const char *,void *,int,int,char);
 // flag change eren
-extern int write_output(const char *,const char *,void *,int,int,char);
+extern int LOG_M(const char *,const char *,void *,int,int,char);
 main()
 {
 
@@ -378,10 +378,10 @@ main()
                  0);
 
 
-  write_output("dl_ue_spec00.m","dl_cs00",output00,1024,1,1);
-  write_output("dl_ue_spec01.m","dl_cs01",output01,1024,1,1);
-  write_output("dl_ue_spec10.m","dl_cs10",output10,1024,1,1);
-  write_output("dl_ue_spec11.m","dl_cs11",output11,1024,1,1);
+  LOG_M("dl_ue_spec00.m","dl_cs00",output00,1024,1,1);
+  LOG_M("dl_ue_spec01.m","dl_cs01",output01,1024,1,1);
+  LOG_M("dl_ue_spec10.m","dl_cs10",output10,1024,1,1);
+  LOG_M("dl_ue_spec11.m","dl_cs11",output11,1024,1,1);
 }
 
 
diff --git a/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c b/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
index 247e01419a3cc1d10a1a959694a2283e6dc28195..0a5500f3b2aba7acf003ec99689436dcad26fba8 100644
--- a/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
+++ b/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
@@ -795,7 +795,7 @@ int dlsch_encoding(PHY_VARS_eNB *eNB,
 #ifdef DEBUG_DLSCH_CODING
 
       if (r==0)
-        write_output("enc_output0.m","enc0",&dlsch->harq_processes[harq_pid]->d[r][96],(3*8*Kr_bytes)+12,1,4);
+        LOG_M("enc_output0.m","enc0",&dlsch->harq_processes[harq_pid]->d[r][96],(3*8*Kr_bytes)+12,1,4);
 
 #endif
       start_meas(i_stats);
@@ -842,7 +842,7 @@ int dlsch_encoding(PHY_VARS_eNB *eNB,
 #ifdef DEBUG_DLSCH_CODING
 
     if (r==dlsch->harq_processes[harq_pid]->C-1)
-      write_output("enc_output.m","enc",dlsch->harq_processes[harq_pid]->e,r_offset,1,4);
+      LOG_M("enc_output.m","enc",dlsch->harq_processes[harq_pid]->e,r_offset,1,4);
 
 #endif
   }
diff --git a/openair1/PHY/LTE_TRANSPORT/if5_tools.c b/openair1/PHY/LTE_TRANSPORT/if5_tools.c
index 06b4a4ad806fd746323c678dc8a568379f73c82a..0ad138120592a732b9bca09e9df8a21451a57e38 100644
--- a/openair1/PHY/LTE_TRANSPORT/if5_tools.c
+++ b/openair1/PHY/LTE_TRANSPORT/if5_tools.c
@@ -297,7 +297,7 @@ void send_IF5(RU_t *ru, openair0_timestamp proc_timestamp, int subframe, uint8_t
 #ifdef DEBUG_DL_MOBIPASS 
   if(subframe==0) {
     if (dummy_cnt==100) {
-      write_output("txsigmb.m","txs",(void*)dummy_buffer, fp->samples_per_tti,1, 5); 
+      LOG_M("txsigmb.m","txs",(void*)dummy_buffer, fp->samples_per_tti,1, 5); 
       exit(-1);
     } else {
     dummy_cnt++;
@@ -601,7 +601,7 @@ void recv_IF5(RU_t *ru, openair0_timestamp *proc_timestamp, int subframe, uint16
 	  if (rxe > 0){
 	    LOG_I(PHY,"[Mobipass] frame:%d, subframe:%d, energy %d\n", (*proc_timestamp/(10*fp->samples_per_tti))&1023,subframe, rxe);
 	    
-	    //    write_output("rxsigmb.m","rxs",(void*)dummy_buffer_rx, fp->samples_per_tti,1, 5); 
+	    //    LOG_M("rxsigmb.m","rxs",(void*)dummy_buffer_rx, fp->samples_per_tti,1, 5); 
 	    //    exit(-1);
 	  }
 	}
diff --git a/openair1/PHY/LTE_TRANSPORT/pbch.c b/openair1/PHY/LTE_TRANSPORT/pbch.c
index eae88a6afeb794deade5d27373be0bebf142a91f..a27c6dbc9087d5b045104b16615c92c3c78b86b7 100644
--- a/openair1/PHY/LTE_TRANSPORT/pbch.c
+++ b/openair1/PHY/LTE_TRANSPORT/pbch.c
@@ -281,7 +281,7 @@ int generate_pbch(LTE_eNB_PBCH *eNB_pbch,
       #endif
 
       #ifdef DEBUG_PBCH
-      write_output("pbch_encoded_output2.m","pbch_encoded_out2",
+      LOG_M"pbch_encoded_output2.m","pbch_encoded_out2",
       pbch_coded_data2,
       pbch_coded_bits,
       1,
@@ -308,7 +308,7 @@ int generate_pbch(LTE_eNB_PBCH *eNB_pbch,
 
 #ifdef DEBUG_PBCH
     if (frame_mod4==0) {
-      write_output("pbch_e.m","pbch_e",
+      LOG_M"pbch_e.m","pbch_e",
                    eNB_pbch->pbch_e,
                    pbch_E,
                    1,
@@ -325,7 +325,7 @@ int generate_pbch(LTE_eNB_PBCH *eNB_pbch,
                     pbch_E);
 #ifdef DEBUG_PBCH
     if (frame_mod4==0) {
-      write_output("pbch_e_s.m","pbch_e_s",
+      LOG_M"pbch_e_s.m","pbch_e_s",
                    eNB_pbch->pbch_e,
                    pbch_E,
                    1,
diff --git a/openair1/PHY/LTE_TRANSPORT/prach.c b/openair1/PHY/LTE_TRANSPORT/prach.c
index 90dca2337ed460ead6202e76bdaca8f89e3f7a8c..8e225822b138c45359e620f5e32f265a51201d64 100644
--- a/openair1/PHY/LTE_TRANSPORT/prach.c
+++ b/openair1/PHY/LTE_TRANSPORT/prach.c
@@ -239,14 +239,14 @@ void rx_prach0(PHY_VARS_eNB *eNB,
           char buffer[80];
           //counter++;
           sprintf(buffer, "%s%d", "/tmp/prach_rx",counter);
-          write_output(buffer,"prach_rx",prach[0],fp->samples_per_tti,1,13);
+          LOG_M(buffer,"prach_rx",prach[0],fp->samples_per_tti,1,13);
         }
 #endif
 
       if (dbEn0>32)
       {
 #ifdef PRACH_WRITE_OUTPUT_DEBUG
-        if (prach[0]!= NULL) write_output("prach_rx","prach_rx",prach[0],fp->samples_per_tti,1,1);
+        if (prach[0]!= NULL) LOG_M("prach_rx","prach_rx",prach[0],fp->samples_per_tti,1,1);
 #endif
         LOG_I(PHY,"RU %d, br_flag %d ce_level %d frame %d subframe %d per_tti:%d prach:%p (energy %d) TA:%d rach_dBm:%d rxdata:%p index:%d\n",ru->idx,br_flag,ce_level,frame,subframe,fp->samples_per_tti,prach[aa],dbEn0,ru->N_TA_offset,rach_dBm,ru->common.rxdata[aa], (subframe*fp->samples_per_tti)-ru->N_TA_offset);
         }
@@ -614,11 +614,11 @@ void rx_prach0(PHY_VARS_eNB *eNB,
 
       memset(prachF, 0, sizeof(int16_t)*2*1024 );
 #if defined(PRACH_WRITE_OUTPUT_DEBUG)
-      if (prach[0]!= NULL) write_output("prach_rx0.m","prach_rx0",prach[0],6144+792,1,1);
+      if (prach[0]!= NULL) LOG_M("prach_rx0.m","prach_rx0",prach[0],6144+792,1,1);
 #endif
-      // write_output("prach_rx1.m","prach_rx1",prach[1],6144+792,1,1);
-      //       write_output("prach_rxF0.m","prach_rxF0",rxsigF[0],24576,1,1);
-      // write_output("prach_rxF1.m","prach_rxF1",rxsigF[1],6144,1,1);
+      // LOG_M("prach_rx1.m","prach_rx1",prach[1],6144+792,1,1);
+      //       LOG_M("prach_rxF0.m","prach_rxF0",rxsigF[0],24576,1,1);
+      // LOG_M("prach_rxF1.m","prach_rxF1",rxsigF[1],6144,1,1);
 
       for (aa=0;aa<nb_rx; aa++) {
       // Do componentwise product with Xu* on each antenna 
@@ -648,9 +648,9 @@ void rx_prach0(PHY_VARS_eNB *eNB,
 	}
 	
 #if defined(PRACH_WRITE_OUTPUT_DEBUG)
-	if (aa==0) write_output("prach_rxF_comp0.m","prach_rxF_comp0",prachF,1024,1,1);
+	if (aa==0) LOG_M("prach_rxF_comp0.m","prach_rxF_comp0",prachF,1024,1,1);
 #endif
-      // if (aa=1) write_output("prach_rxF_comp1.m","prach_rxF_comp1",prachF,1024,1,1);
+      // if (aa=1) LOG_M("prach_rxF_comp1.m","prach_rxF_comp1",prachF,1024,1,1);
       }// antennas_rx
     } // new dft
     
@@ -697,19 +697,19 @@ void rx_prach0(PHY_VARS_eNB *eNB,
     
     if (br_flag == 0) {
 #if defined(PRACH_WRITE_OUTPUT_DEBUG)
-	write_output("rxsigF.m","prach_rxF",&rxsigF[0][0],12288,1,1);
-	write_output("prach_rxF_comp0.m","prach_rxF_comp0",prachF,1024,1,1);
-	write_output("Xu.m","xu",Xu,N_ZC,1,1);
-	write_output("prach_ifft0.m","prach_t0",prach_ifft,1024,1,1);
+	LOG_M("rxsigF.m","prach_rxF",&rxsigF[0][0],12288,1,1);
+	LOG_M("prach_rxF_comp0.m","prach_rxF_comp0",prachF,1024,1,1);
+	LOG_M("Xu.m","xu",Xu,N_ZC,1,1);
+	LOG_M("prach_ifft0.m","prach_t0",prach_ifft,1024,1,1);
 #endif
     }
     else {
 #if defined(PRACH_WRITE_OUTPUT_DEBUG)
       printf("Dumping prach (br_flag %d), k = %d (n_ra_prb %d)\n",br_flag,k,n_ra_prb);
-      write_output("rxsigF_br.m","prach_rxF_br",&rxsigF[0][0],12288,1,1);
-      write_output("prach_rxF_comp0_br.m","prach_rxF_comp0_br",prachF,1024,1,1);
-      write_output("Xu_br.m","xu_br",Xu,N_ZC,1,1);
-      write_output("prach_ifft0_br.m","prach_t0_br",prach_ifft,1024,1,1);
+      LOG_M("rxsigF_br.m","prach_rxF_br",&rxsigF[0][0],12288,1,1);
+      LOG_M("prach_rxF_comp0_br.m","prach_rxF_comp0_br",prachF,1024,1,1);
+      LOG_M("Xu_br.m","xu_br",Xu,N_ZC,1,1);
+      LOG_M("prach_ifft0_br.m","prach_t0_br",prach_ifft,1024,1,1);
       exit(-1);      
 #endif
     }
diff --git a/openair1/PHY/LTE_TRANSPORT/pucch.c b/openair1/PHY/LTE_TRANSPORT/pucch.c
index fa86c650643f9c83c677e70a3880813ec2889098..3639d55c059ce0ce997bd5c5ed46aac52dce1ccd 100644
--- a/openair1/PHY/LTE_TRANSPORT/pucch.c
+++ b/openair1/PHY/LTE_TRANSPORT/pucch.c
@@ -1102,7 +1102,7 @@ uint32_t rx_pucch(PHY_VARS_eNB *eNB,
 
     /*
     if (eNB->pucch1_stats_cnt[UE_id][subframe] == 0) {
-      write_output("pucch_debug.m","pucch_energy",
+      LOG_M("pucch_debug.m","pucch_energy",
 		   &eNB->pucch1_stats[UE_id][(subframe<<10)],
 		   1024,1,2);
       AssertFatal(0,"Exiting for PUCCH 1 debug\n");
diff --git a/openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c b/openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c
index 6bad4de05bbdfc149fd2a172b5c892edeb5bb6a8..1a51a56cc90f1572817d56d3ae6b22b098843324 100644
--- a/openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c
+++ b/openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c
@@ -1184,8 +1184,8 @@ void rx_ulsch(PHY_VARS_eNB *eNB,
   }
 
 
-  //write_output("rxdataF_ext.m","rxF_ext",pusch_vars->rxdataF_ext[eNB_id][0],300*(frame_parms->symbols_per_tti-ulsch[UE_id]->srs_active),1,1);
-  //write_output("ulsch_chest.m","drs_est",pusch_vars->drs_ch_estimates[eNB_id][0],300*(frame_parms->symbols_per_tti-ulsch[UE_id]->srs_active),1,1);
+  //LOG_M("rxdataF_ext.m","rxF_ext",pusch_vars->rxdataF_ext[eNB_id][0],300*(frame_parms->symbols_per_tti-ulsch[UE_id]->srs_active),1,1);
+  //LOG_M("ulsch_chest.m","drs_est",pusch_vars->drs_ch_estimates[eNB_id][0],300*(frame_parms->symbols_per_tti-ulsch[UE_id]->srs_active),1,1);
 
 
   ulsch_channel_level(pusch_vars->drs_ch_estimates,
@@ -1350,70 +1350,70 @@ void rx_ulsch_emul(PHY_VARS_eNB *eNB,
          eNB->ulsch[UE_id]->harq_processes[harq_pid]->Nsymb_pusch);
   sprintf(fname,"/tmp/ulsch_r%d_d",round);
   sprintf(vname,"/tmp/ulsch_r%d_dseq",round);
-  write_output(fname,vname,&eNB->ulsch[UE_id]->harq_processes[harq_pid]->d[0][96],
+  LOG_M(fname,vname,&eNB->ulsch[UE_id]->harq_processes[harq_pid]->d[0][96],
                eNB->ulsch[UE_id]->harq_processes[harq_pid]->Kplus*3,1,0);
   if (eNB->common_vars.rxdata) {
     sprintf(fname,"/tmp/rxsig0_r%d.m",round);
     sprintf(vname,"rxs0_r%d",round);
-    write_output(fname,vname, &eNB->common_vars.rxdata[0][0],eNB->frame_parms.samples_per_tti*10,1,1);
+    LOG_M(fname,vname, &eNB->common_vars.rxdata[0][0],eNB->frame_parms.samples_per_tti*10,1,1);
   
     if (eNB->frame_parms.nb_antennas_rx>1)
       if (eNB->common_vars.rxdata) {
 	sprintf(fname,"/tmp/rxsig1_r%d.m",round);
 	sprintf(vname,"rxs1_r%d",round);
-	write_output(fname,vname, &eNB->common_vars.rxdata[1][0],eNB->frame_parms.samples_per_tti*10,1,1);
+	LOG_M(fname,vname, &eNB->common_vars.rxdata[1][0],eNB->frame_parms.samples_per_tti*10,1,1);
       }
   }
 
   sprintf(fname,"/tmp/rxsigF0_r%d.m",round);
   sprintf(vname,"rxsF0_r%d",round);
-  write_output(fname,vname, (void*)&eNB->common_vars.rxdataF[0][0],eNB->frame_parms.ofdm_symbol_size*nsymb,1,1);
+  LOG_M(fname,vname, (void*)&eNB->common_vars.rxdataF[0][0],eNB->frame_parms.ofdm_symbol_size*nsymb,1,1);
 
   if (eNB->frame_parms.nb_antennas_rx>1) {
     sprintf(fname,"/tmp/rxsigF1_r%d.m",round);
     sprintf(vname,"rxsF1_r%d",round);
-    write_output(vname,fname, &eNB->common_vars.rxdataF[1][0],eNB->frame_parms.ofdm_symbol_size*nsymb,1,1);
+    LOG_M(vname,fname, &eNB->common_vars.rxdataF[1][0],eNB->frame_parms.ofdm_symbol_size*nsymb,1,1);
   }
 
   sprintf(fname,"/tmp/rxsigF0_ext_r%d.m",round);
   sprintf(vname,"rxsF0_ext_r%d",round);
-  write_output(fname,vname, &eNB->pusch_vars[UE_id]->rxdataF_ext[0][0],eNB->frame_parms.N_RB_UL*12*nsymb,1,1);
+  LOG_M(fname,vname, &eNB->pusch_vars[UE_id]->rxdataF_ext[0][0],eNB->frame_parms.N_RB_UL*12*nsymb,1,1);
 
   if (eNB->frame_parms.nb_antennas_rx>1) {
     sprintf(fname,"/tmp/rxsigF1_ext_r%d.m",round);
     sprintf(vname,"rxsF1_ext_r%d",round);
-    write_output(fname,vname,&eNB->pusch_vars[UE_id]->rxdataF_ext[1][0],eNB->frame_parms.N_RB_UL*12*nsymb,1,1);
+    LOG_M(fname,vname,&eNB->pusch_vars[UE_id]->rxdataF_ext[1][0],eNB->frame_parms.N_RB_UL*12*nsymb,1,1);
   }
   /*
-  if (eNB->srs_vars[UE_id].srs_ch_estimates) write_output("/tmp/srs_est0.m","srsest0",eNB->srs_vars[UE_id].srs_ch_estimates[0],eNB->frame_parms.ofdm_symbol_size,1,1);
+  if (eNB->srs_vars[UE_id].srs_ch_estimates) LOG_M("/tmp/srs_est0.m","srsest0",eNB->srs_vars[UE_id].srs_ch_estimates[0],eNB->frame_parms.ofdm_symbol_size,1,1);
 
   if (eNB->frame_parms.nb_antennas_rx>1)
-    if (eNB->srs_vars[UE_id].srs_ch_estimates) write_output("/tmp/srs_est1.m","srsest1",eNB->srs_vars[UE_id].srs_ch_estimates[1],eNB->frame_parms.ofdm_symbol_size,1,1);
+    if (eNB->srs_vars[UE_id].srs_ch_estimates) LOG_M("/tmp/srs_est1.m","srsest1",eNB->srs_vars[UE_id].srs_ch_estimates[1],eNB->frame_parms.ofdm_symbol_size,1,1);
   */
 
   sprintf(fname,"/tmp/drs_est0_r%d.m",round);
   sprintf(vname,"drsest0_r%d",round);
-  write_output(fname,vname,eNB->pusch_vars[UE_id]->drs_ch_estimates[0],eNB->frame_parms.N_RB_UL*12*nsymb,1,1);
+  LOG_M(fname,vname,eNB->pusch_vars[UE_id]->drs_ch_estimates[0],eNB->frame_parms.N_RB_UL*12*nsymb,1,1);
 
   if (eNB->frame_parms.nb_antennas_rx>1) {
     sprintf(fname,"/tmp/drs_est1_r%d.m",round);
     sprintf(vname,"drsest1_r%d",round);
-    write_output(fname,vname,eNB->pusch_vars[UE_id]->drs_ch_estimates[1],eNB->frame_parms.N_RB_UL*12*nsymb,1,1);
+    LOG_M(fname,vname,eNB->pusch_vars[UE_id]->drs_ch_estimates[1],eNB->frame_parms.N_RB_UL*12*nsymb,1,1);
   }
 
   sprintf(fname,"/tmp/ulsch0_rxF_comp0_r%d.m",round);
   sprintf(vname,"ulsch0_rxF_comp0_r%d",round);
-  write_output(fname,vname,&eNB->pusch_vars[UE_id]->rxdataF_comp[0][0],eNB->frame_parms.N_RB_UL*12*nsymb,1,1);
-  //  write_output("ulsch_rxF_comp1.m","ulsch0_rxF_comp1",&eNB->pusch_vars[UE_id]->rxdataF_comp[0][1][0],eNB->frame_parms.N_RB_UL*12*nsymb,1,1);
+  LOG_M(fname,vname,&eNB->pusch_vars[UE_id]->rxdataF_comp[0][0],eNB->frame_parms.N_RB_UL*12*nsymb,1,1);
+  //  LOG_M("ulsch_rxF_comp1.m","ulsch0_rxF_comp1",&eNB->pusch_vars[UE_id]->rxdataF_comp[0][1][0],eNB->frame_parms.N_RB_UL*12*nsymb,1,1);
   sprintf(fname,"/tmp/ulsch_rxF_llr_r%d.m",round);
   sprintf(vname,"ulsch_llr_r%d",round);
-  write_output(fname,vname,eNB->pusch_vars[UE_id]->llr,
+  LOG_M(fname,vname,eNB->pusch_vars[UE_id]->llr,
                eNB->ulsch[UE_id]->harq_processes[harq_pid]->nb_rb*12*eNB->ulsch[UE_id]->harq_processes[harq_pid]->Qm
                *eNB->ulsch[UE_id]->harq_processes[harq_pid]->Nsymb_pusch,1,0);
   sprintf(fname,"/tmp/ulsch_ch_mag_r%d.m",round);
   sprintf(vname,"ulsch_ch_mag_r%d",round);
-  write_output(fname,vname,&eNB->pusch_vars[UE_id]->ul_ch_mag[0][0],eNB->frame_parms.N_RB_UL*12*nsymb,1,1);
-  //  write_output("ulsch_ch_mag1.m","ulsch_ch_mag1",&eNB->pusch_vars[UE_id]->ul_ch_mag[1][0],eNB->frame_parms.N_RB_UL*12*nsymb,1,1);
+  LOG_M(fname,vname,&eNB->pusch_vars[UE_id]->ul_ch_mag[0][0],eNB->frame_parms.N_RB_UL*12*nsymb,1,1);
+  //  LOG_M("ulsch_ch_mag1.m","ulsch_ch_mag1",&eNB->pusch_vars[UE_id]->ul_ch_mag[1][0],eNB->frame_parms.N_RB_UL*12*nsymb,1,1);
   //#endif
 }
 
diff --git a/openair1/PHY/LTE_UE_TRANSPORT/dci_ue.c b/openair1/PHY/LTE_UE_TRANSPORT/dci_ue.c
index f7afb08286ddb8f58e359bec492d0bdbfca0258d..d783f8dce81a99c485cc944b5f23cac032136a18 100755
--- a/openair1/PHY/LTE_UE_TRANSPORT/dci_ue.c
+++ b/openair1/PHY/LTE_UE_TRANSPORT/dci_ue.c
@@ -1357,7 +1357,7 @@ int32_t rx_pdcch(PHY_VARS_UE *ue,
 
     if (subframe==5) {
       printf("Writing output s0\n");
-      write_output("rxF_comp_d0.m","rxF_c_d",&pdcch_vars[eNB_id]->rxdataF_comp[0][0*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);
+      LOG_M("rxF_comp_d0.m","rxF_c_d",&pdcch_vars[eNB_id]->rxdataF_comp[0][0*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);
     }
 #endif
 
@@ -1435,7 +1435,7 @@ int32_t rx_pdcch(PHY_VARS_UE *ue,
 #ifdef DEBUG_PHY
 	
       if (subframe==5) {
-	write_output("rxF_comp_ds.m","rxF_c_ds",&pdcch_vars[eNB_id]->rxdataF_comp[0][s*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);
+	LOG_M("rxF_comp_ds.m","rxF_c_ds",&pdcch_vars[eNB_id]->rxdataF_comp[0][s*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);
       }
 #endif
 	
@@ -1460,7 +1460,7 @@ int32_t rx_pdcch(PHY_VARS_UE *ue,
 		(char *)pdcch_vars[eNB_id]->llr,
 		s);
       /*#ifdef DEBUG_PHY
-        write_output("llr8_seq.m","llr8",&pdcch_vars[eNB_id]->llr[s*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,4);
+        LOG_M("llr8_seq.m","llr8",&pdcch_vars[eNB_id]->llr[s*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,4);
         #endif*/
     }
   
diff --git a/openair1/PHY/LTE_UE_TRANSPORT/dlsch_decoding.c b/openair1/PHY/LTE_UE_TRANSPORT/dlsch_decoding.c
index fc3344f0ee0838213118098167dfde11b3087ff7..40da105a6bc54081590ac3cb2b2bd71b2beac489 100644
--- a/openair1/PHY/LTE_UE_TRANSPORT/dlsch_decoding.c
+++ b/openair1/PHY/LTE_UE_TRANSPORT/dlsch_decoding.c
@@ -183,32 +183,7 @@ uint32_t  dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
 #ifdef DEBUG_DLSCH_DECODING
   uint16_t i;
 #endif
-  //#ifdef __AVX2__
-#if 0
-  int Kr_last,skipped_last=0;
-  uint8_t (*tc_2cw)(int16_t *y,
-		    int16_t *y2,
-		    uint8_t *,
-		    uint8_t *,
-		    uint16_t,
-		    uint16_t,
-		    uint16_t,
-		    uint8_t,
-		    uint8_t,
-		    uint8_t,
-		    time_stats_t *,
-		    time_stats_t *,
-		    time_stats_t *,
-		    time_stats_t *,
-		    time_stats_t *,
-		    time_stats_t *,
-		    time_stats_t *);
-
-#endif
-decoder_if_t *tc;
-
-
-
+  decoder_if_t *tc;
 
   if (!dlsch_llr) {
     printf("dlsch_decoding.c: NULL dlsch_llr pointer\n");
@@ -236,17 +211,13 @@ decoder_if_t *tc;
   }
 
   if (llr8_flag == 0) {
-    //#ifdef __AVX2__
-#if 0
-    tc_2cw = phy_threegpplte_turbo_decoder16avx2;
-#endif
     tc = decoder16;
   }
   else
   {
-	  AssertFatal (harq_process->TBS >= 256 , "Mismatch flag nbRB=%d TBS=%d mcs=%d Qm=%d RIV=%d round=%d \n",
-			  harq_process->nb_rb, harq_process->TBS,harq_process->mcs,harq_process->Qm,harq_process->rvidx,harq_process->round);
-	    tc = decoder8;
+    AssertFatal (harq_process->TBS >= 256 , "Mismatch flag nbRB=%d TBS=%d mcs=%d Qm=%d RIV=%d round=%d \n",
+		 harq_process->nb_rb, harq_process->TBS,harq_process->mcs,harq_process->Qm,harq_process->rvidx,harq_process->round);
+    tc = decoder8;
   }
 
 
@@ -411,8 +382,8 @@ decoder_if_t *tc;
 #ifdef DEBUG_DLSCH_DECODING
     /*
     if (r==0) {
-              write_output("decoder_llr.m","decllr",dlsch_llr,G,1,0);
-              write_output("decoder_in.m","dec",&harq_process->d[0][96],(3*8*Kr_bytes)+12,1,0);
+              LOG_M("decoder_llr.m","decllr",dlsch_llr,G,1,0);
+              LOG_M("decoder_in.m","dec",&harq_process->d[0][96],(3*8*Kr_bytes)+12,1,0);
     }
 
     printf("decoder input(segment %d) :",r);
@@ -820,7 +791,7 @@ int dlsch_encoding_SIC(PHY_VARS_UE *ue,
 #ifdef DEBUG_DLSCH_CODING
 
       if (r==0)
-        write_output("enc_output0.m","enc0",&dlsch->harq_processes[harq_pid]->d[r][96],(3*8*Kr_bytes)+12,1,4);
+        LOG_M("enc_output0.m","enc0",&dlsch->harq_processes[harq_pid]->d[r][96],(3*8*Kr_bytes)+12,1,4);
 
 #endif
       start_meas(i_stats);
@@ -867,7 +838,7 @@ int dlsch_encoding_SIC(PHY_VARS_UE *ue,
 #ifdef DEBUG_DLSCH_CODING
 
     if (r==dlsch->harq_processes[harq_pid]->C-1)
-      write_output("enc_output.m","enc",dlsch->harq_processes[harq_pid]->e,r_offset,1,4);
+      LOG_M("enc_output.m","enc",dlsch->harq_processes[harq_pid]->e,r_offset,1,4);
 
 #endif
   }
diff --git a/openair1/PHY/LTE_UE_TRANSPORT/dlsch_demodulation.c b/openair1/PHY/LTE_UE_TRANSPORT/dlsch_demodulation.c
index 0bb20dfdc4f39acb3b54409fc87ceaa6eab75520..81347085539ef01ace695a7eb85e891fee79f0a9 100644
--- a/openair1/PHY/LTE_UE_TRANSPORT/dlsch_demodulation.c
+++ b/openair1/PHY/LTE_UE_TRANSPORT/dlsch_demodulation.c
@@ -561,9 +561,10 @@ int rx_pdsch(PHY_VARS_UE *ue,
                                nb_rb,
                                pdsch_vars[eNB_id]->log2_maxh,
                                measurements); // log2_maxh+I0_shift
- /*if (symbol == 5) {
-     write_output("rxF_comp_d.m","rxF_c_d",&pdsch_vars[eNB_id]->rxdataF_comp0[0][symbol*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);
- } */
+    if (symbol == 5) {
+     LOG_M("rxF_comp_d.m","rxF_c_d",&pdsch_vars[eNB_id]->rxdataF_comp0[0][symbol*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);
+    }
+    
     if ((rx_type==rx_IC_single_stream) &&
         (eNB_id_i<ue->n_connected_eNB)) {
          dlsch_channel_compensation(pdsch_vars[eNB_id_i]->rxdataF_ext,
@@ -579,12 +580,10 @@ int rx_pdsch(PHY_VARS_UE *ue,
                                  nb_rb,
                                  pdsch_vars[eNB_id]->log2_maxh,
                                  measurements); // log2_maxh+I0_shift
-#ifdef DEBUG_PHY
       if (symbol == 5) {
-        write_output("rxF_comp_d.m","rxF_c_d",&pdsch_vars[eNB_id]->rxdataF_comp0[0][symbol*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);
-        write_output("rxF_comp_i.m","rxF_c_i",&pdsch_vars[eNB_id_i]->rxdataF_comp0[0][symbol*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);
+        LOG_M("rxF_comp_d.m","rxF_c_d",&pdsch_vars[eNB_id]->rxdataF_comp0[0][symbol*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);
+        LOG_M("rxF_comp_i.m","rxF_c_i",&pdsch_vars[eNB_id_i]->rxdataF_comp0[0][symbol*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);
       }
-#endif
 
       dlsch_dual_stream_correlation(frame_parms,
                                     symbol,
@@ -609,14 +608,14 @@ int rx_pdsch(PHY_VARS_UE *ue,
                                      nb_rb,
                                      pdsch_vars[eNB_id]->log2_maxh0,
                                      pdsch_vars[eNB_id]->log2_maxh1);
-  /*   if (symbol == 5) {
-     write_output("rxF_comp_d00.m","rxF_c_d00",&pdsch_vars[eNB_id]->rxdataF_comp0[0][symbol*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);// should be QAM
-     write_output("rxF_comp_d01.m","rxF_c_d01",&pdsch_vars[eNB_id]->rxdataF_comp0[1][symbol*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);//should be almost 0
-     write_output("rxF_comp_d10.m","rxF_c_d10",&pdsch_vars[eNB_id]->rxdataF_comp1[harq_pid][round][0][symbol*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);//should be almost 0
-     write_output("rxF_comp_d11.m","rxF_c_d11",&pdsch_vars[eNB_id]->rxdataF_comp1[harq_pid][round][1][symbol*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);//should be QAM
-        } */
+      if (symbol == 5) {
+	LOG_M("rxF_comp_d00.m","rxF_c_d00",&pdsch_vars[eNB_id]->rxdataF_comp0[0][symbol*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);// should be QAM
+	LOG_M("rxF_comp_d01.m","rxF_c_d01",&pdsch_vars[eNB_id]->rxdataF_comp0[1][symbol*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);//should be almost 0
+	LOG_M("rxF_comp_d10.m","rxF_c_d10",&pdsch_vars[eNB_id]->rxdataF_comp1[harq_pid][round][0][symbol*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);//should be almost 0
+	LOG_M("rxF_comp_d11.m","rxF_c_d11",&pdsch_vars[eNB_id]->rxdataF_comp1[harq_pid][round][1][symbol*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);//should be QAM
+      }
       // compute correlation between signal and interference channels (rho12 and rho21)
-        dlsch_dual_stream_correlation(frame_parms, // this is doing h11'*h12 and h21'*h22
+      dlsch_dual_stream_correlation(frame_parms, // this is doing h11'*h12 and h21'*h22
                                     symbol,
                                     nb_rb,
                                     pdsch_vars[eNB_id]->dl_ch_estimates_ext,
@@ -634,13 +633,12 @@ int rx_pdsch(PHY_VARS_UE *ue,
                                     pdsch_vars[eNB_id]->log2_maxh1);
     //  printf("rho stream2 =%d\n",&pdsch_vars[eNB_id]->dl_ch_rho2_ext );
       //printf("TM3 log2_maxh : %d\n",pdsch_vars[eNB_id]->log2_maxh);
-  /*     if (symbol == 5) {
-     write_output("rho0_0.m","rho0_0",&pdsch_vars[eNB_id]->dl_ch_rho_ext[harq_pid][round][0][symbol*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);// should be QAM
-     write_output("rho2_0.m","rho2_0",&pdsch_vars[eNB_id]->dl_ch_rho2_ext[0][symbol*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);//should be almost 0
-     write_output("rho0_1.m.m","rho0_1",&pdsch_vars[eNB_id]->dl_ch_rho_ext[harq_pid][round][1][symbol*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);//should be almost 0
-     write_output("rho2_1.m","rho2_1",&pdsch_vars[eNB_id]->dl_ch_rho2_ext[1][symbol*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);//should be QAM
-        } */
-
+      if (symbol == 5) {
+	LOG_M("rho0_0.m","rho0_0",&pdsch_vars[eNB_id]->dl_ch_rho_ext[harq_pid][round][0][symbol*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);// should be QAM
+	LOG_M("rho2_0.m","rho2_0",&pdsch_vars[eNB_id]->dl_ch_rho2_ext[0][symbol*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);//should be almost 0
+	LOG_M("rho0_1.m.m","rho0_1",&pdsch_vars[eNB_id]->dl_ch_rho_ext[harq_pid][round][1][symbol*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);//should be almost 0
+	LOG_M("rho2_1.m","rho2_1",&pdsch_vars[eNB_id]->dl_ch_rho2_ext[1][symbol*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);//should be QAM
+      }
     } else if (dlsch0_harq->mimo_mode<DUALSTREAM_UNIFORM_PRECODING1) {// single-layer precoding (TM5, TM6)
         if ((rx_type==rx_IC_single_stream) && (eNB_id_i==ue->n_connected_eNB) && (dlsch0_harq->dl_power_off==0)) {
           dlsch_channel_compensation_TM56(pdsch_vars[eNB_id]->rxdataF_ext,
@@ -690,12 +688,11 @@ int rx_pdsch(PHY_VARS_UE *ue,
                                       nb_rb,
                                       pdsch_vars[eNB_id]->log2_maxh,
                                       dlsch0_harq->dl_power_off);
-#ifdef DEBUG_PHY
       if (symbol==5) {
-        write_output("rxF_comp_d.m","rxF_c_d",&pdsch_vars[eNB_id]->rxdataF_comp0[0][symbol*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);
-       write_output("rxF_comp_i.m","rxF_c_i",&pdsch_vars[eNB_id_i]->rxdataF_comp0[0][symbol*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);
+        LOG_M("rxF_comp_d.m","rxF_c_d",&pdsch_vars[eNB_id]->rxdataF_comp0[0][symbol*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);
+	LOG_M("rxF_comp_i.m","rxF_c_i",&pdsch_vars[eNB_id_i]->rxdataF_comp0[0][symbol*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);
       }
-#endif
+
       dlsch_dual_stream_correlation(frame_parms,
                                     symbol,
                                     nb_rb,
@@ -765,10 +762,10 @@ int rx_pdsch(PHY_VARS_UE *ue,
                                  symbol,
                                  nb_rb,
                                  1);
-    /*   if (symbol == 5) {
-     write_output("rho0_mrc.m","rho0_0",&pdsch_vars[eNB_id]->dl_ch_rho_ext[harq_pid][round][0][symbol*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);// should be QAM
-     write_output("rho2_mrc.m","rho2_0",&pdsch_vars[eNB_id]->dl_ch_rho2_ext[0][symbol*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);//should be almost 0
-        } */
+	if (symbol == 5) {
+	  LOG_M("rho0_mrc.m","rho0_0",&pdsch_vars[eNB_id]->dl_ch_rho_ext[harq_pid][round][0][symbol*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);// should be QAM
+	  LOG_M("rho2_mrc.m","rho2_0",&pdsch_vars[eNB_id]->dl_ch_rho2_ext[0][symbol*frame_parms->N_RB_DL*12],frame_parms->N_RB_DL*12,1,1);//should be almost 0
+        }
       }
     } else {
       dlsch_detection_mrc(frame_parms,
@@ -1188,7 +1185,8 @@ int rx_pdsch(PHY_VARS_UE *ue,
     LOG_D(PHY, "[AbsSFN %d.%d] Slot%d Symbol %d: LLR Computation  %5.2f \n",frame,subframe,slot,symbol,ue->generic_stat_bis[ue->current_thread_id[subframe]][slot].p_time/(cpuf*1000.0));
 #endif
 #endif
-// Please keep it: useful for debugging
+
+    // Please keep it: useful for debugging
 #if 0
   if( (symbol == 13) && (subframe==0) && (dlsch0_harq->Qm == 6) /*&& (nb_rb==25)*/)
   {
@@ -1196,29 +1194,29 @@ int rx_pdsch(PHY_VARS_UE *ue,
       if(1)
       {
 #if 1
-      write_output("rxdataF0.m"    , "rxdataF0",             &common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].rxdataF[0][0],14*frame_parms->ofdm_symbol_size,1,1);
-      //write_output("rxdataF1.m"    , "rxdataF1",             &common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].rxdataF[0][0],14*frame_parms->ofdm_symbol_size,1,1);
-      write_output("dl_ch_estimates00.m", "dl_ch_estimates00",   &common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates[eNB_id][0][0],14*frame_parms->ofdm_symbol_size,1,1);
-      //write_output("dl_ch_estimates01.m", "dl_ch_estimates01",   &common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates[eNB_id][1][0],14*frame_parms->ofdm_symbol_size,1,1);
-      //write_output("dl_ch_estimates10.m", "dl_ch_estimates10",   &common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates[eNB_id][2][0],14*frame_parms->ofdm_symbol_size,1,1);
-      //write_output("dl_ch_estimates11.m", "dl_ch_estimates11",   &common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates[eNB_id][3][0],14*frame_parms->ofdm_symbol_size,1,1);
-
-
-      //write_output("rxdataF_ext00.m"    , "rxdataF_ext00",       &pdsch_vars[eNB_id]->rxdataF_ext[0][0],14*frame_parms->N_RB_DL*12,1,1);
-      //write_output("rxdataF_ext01.m"    , "rxdataF_ext01",       &pdsch_vars[eNB_id]->rxdataF_ext[1][0],14*frame_parms->N_RB_DL*12,1,1);
-      //write_output("rxdataF_ext10.m"    , "rxdataF_ext10",       &pdsch_vars[eNB_id]->rxdataF_ext[2][0],14*frame_parms->N_RB_DL*12,1,1);
-      //write_output("rxdataF_ext11.m"    , "rxdataF_ext11",       &pdsch_vars[eNB_id]->rxdataF_ext[3][0],14*frame_parms->N_RB_DL*12,1,1);
-      write_output("dl_ch_estimates_ext00.m", "dl_ch_estimates_ext00", &pdsch_vars[eNB_id]->dl_ch_estimates_ext[0][0],14*frame_parms->N_RB_DL*12,1,1);
-      //write_output("dl_ch_estimates_ext01.m", "dl_ch_estimates_ext01", &pdsch_vars[eNB_id]->dl_ch_estimates_ext[1][0],14*frame_parms->N_RB_DL*12,1,1);
-      //write_output("dl_ch_estimates_ext10.m", "dl_ch_estimates_ext10", &pdsch_vars[eNB_id]->dl_ch_estimates_ext[2][0],14*frame_parms->N_RB_DL*12,1,1);
-      //write_output("dl_ch_estimates_ext11.m", "dl_ch_estimates_ext11", &pdsch_vars[eNB_id]->dl_ch_estimates_ext[3][0],14*frame_parms->N_RB_DL*12,1,1);
-      write_output("rxdataF_comp00.m","rxdataF_comp00",              &pdsch_vars[eNB_id]->rxdataF_comp0[0][0],14*frame_parms->N_RB_DL*12,1,1);
-      //write_output("rxdataF_comp01.m","rxdataF_comp01",              &pdsch_vars[eNB_id]->rxdataF_comp0[1][0],14*frame_parms->N_RB_DL*12,1,1);
-      //write_output("rxdataF_comp10.m","rxdataF_comp10",              &pdsch_vars[eNB_id]->rxdataF_comp1[harq_pid][round][0][0],14*frame_parms->N_RB_DL*12,1,1);
-      //write_output("rxdataF_comp11.m","rxdataF_comp11",              &pdsch_vars[eNB_id]->rxdataF_comp1[harq_pid][round][1][0],14*frame_parms->N_RB_DL*12,1,1);
+      LOG_M("rxdataF0.m"    , "rxdataF0",             &common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].rxdataF[0][0],14*frame_parms->ofdm_symbol_size,1,1);
+      //LOG_M("rxdataF1.m"    , "rxdataF1",             &common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].rxdataF[0][0],14*frame_parms->ofdm_symbol_size,1,1);
+      LOG_M("dl_ch_estimates00.m", "dl_ch_estimates00",   &common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates[eNB_id][0][0],14*frame_parms->ofdm_symbol_size,1,1);
+      //LOG_M("dl_ch_estimates01.m", "dl_ch_estimates01",   &common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates[eNB_id][1][0],14*frame_parms->ofdm_symbol_size,1,1);
+      //LOG_M("dl_ch_estimates10.m", "dl_ch_estimates10",   &common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates[eNB_id][2][0],14*frame_parms->ofdm_symbol_size,1,1);
+      //LOG_M("dl_ch_estimates11.m", "dl_ch_estimates11",   &common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates[eNB_id][3][0],14*frame_parms->ofdm_symbol_size,1,1);
+
+
+      //LOG_M("rxdataF_ext00.m"    , "rxdataF_ext00",       &pdsch_vars[eNB_id]->rxdataF_ext[0][0],14*frame_parms->N_RB_DL*12,1,1);
+      //LOG_M("rxdataF_ext01.m"    , "rxdataF_ext01",       &pdsch_vars[eNB_id]->rxdataF_ext[1][0],14*frame_parms->N_RB_DL*12,1,1);
+      //LOG_M("rxdataF_ext10.m"    , "rxdataF_ext10",       &pdsch_vars[eNB_id]->rxdataF_ext[2][0],14*frame_parms->N_RB_DL*12,1,1);
+      //LOG_M("rxdataF_ext11.m"    , "rxdataF_ext11",       &pdsch_vars[eNB_id]->rxdataF_ext[3][0],14*frame_parms->N_RB_DL*12,1,1);
+      LOG_M("dl_ch_estimates_ext00.m", "dl_ch_estimates_ext00", &pdsch_vars[eNB_id]->dl_ch_estimates_ext[0][0],14*frame_parms->N_RB_DL*12,1,1);
+      //LOG_M("dl_ch_estimates_ext01.m", "dl_ch_estimates_ext01", &pdsch_vars[eNB_id]->dl_ch_estimates_ext[1][0],14*frame_parms->N_RB_DL*12,1,1);
+      //LOG_M("dl_ch_estimates_ext10.m", "dl_ch_estimates_ext10", &pdsch_vars[eNB_id]->dl_ch_estimates_ext[2][0],14*frame_parms->N_RB_DL*12,1,1);
+      //LOG_M("dl_ch_estimates_ext11.m", "dl_ch_estimates_ext11", &pdsch_vars[eNB_id]->dl_ch_estimates_ext[3][0],14*frame_parms->N_RB_DL*12,1,1);
+      LOG_M("rxdataF_comp00.m","rxdataF_comp00",              &pdsch_vars[eNB_id]->rxdataF_comp0[0][0],14*frame_parms->N_RB_DL*12,1,1);
+      //LOG_M("rxdataF_comp01.m","rxdataF_comp01",              &pdsch_vars[eNB_id]->rxdataF_comp0[1][0],14*frame_parms->N_RB_DL*12,1,1);
+      //LOG_M("rxdataF_comp10.m","rxdataF_comp10",              &pdsch_vars[eNB_id]->rxdataF_comp1[harq_pid][round][0][0],14*frame_parms->N_RB_DL*12,1,1);
+      //LOG_M("rxdataF_comp11.m","rxdataF_comp11",              &pdsch_vars[eNB_id]->rxdataF_comp1[harq_pid][round][1][0],14*frame_parms->N_RB_DL*12,1,1);
 #endif
-      write_output("llr0.m","llr0",  &pdsch_vars[eNB_id]->llr[0][0],(14*nb_rb*12*dlsch1_harq->Qm) - 4*(nb_rb*4*dlsch1_harq->Qm),1,0);
-      //write_output("llr1.m","llr1",  &pdsch_vars[eNB_id]->llr[1][0],(14*nb_rb*12*dlsch1_harq->Qm) - 4*(nb_rb*4*dlsch1_harq->Qm),1,0);
+      LOG_M("llr0.m","llr0",  &pdsch_vars[eNB_id]->llr[0][0],(14*nb_rb*12*dlsch1_harq->Qm) - 4*(nb_rb*4*dlsch1_harq->Qm),1,0);
+      //LOG_M("llr1.m","llr1",  &pdsch_vars[eNB_id]->llr[1][0],(14*nb_rb*12*dlsch1_harq->Qm) - 4*(nb_rb*4*dlsch1_harq->Qm),1,0);
 
 
       AssertFatal(0," ");
@@ -6030,84 +6028,84 @@ void dump_dlsch2(PHY_VARS_UE *ue,uint8_t eNB_id,uint8_t subframe,unsigned int *c
 
   sprintf(fname,"dlsch%d_rxF_r%d_ext0.m",eNB_id,round);
   sprintf(vname,"dl%d_rxF_r%d_ext0",eNB_id,round);
-  write_output(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->rxdataF_ext[0],12*N_RB_DL*nsymb,1,1);
+  LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->rxdataF_ext[0],12*N_RB_DL*nsymb,1,1);
 
   if (ue->frame_parms.nb_antennas_rx >1) {
     sprintf(fname,"dlsch%d_rxF_r%d_ext1.m",eNB_id,round);
     sprintf(vname,"dl%d_rxF_r%d_ext1",eNB_id,round);
-    write_output(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->rxdataF_ext[1],12*N_RB_DL*nsymb,1,1);
+    LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->rxdataF_ext[1],12*N_RB_DL*nsymb,1,1);
   }
 
   sprintf(fname,"dlsch%d_ch_r%d_ext00.m",eNB_id,round);
   sprintf(vname,"dl%d_ch_r%d_ext00",eNB_id,round);
-  write_output(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_ch_estimates_ext[0],12*N_RB_DL*nsymb,1,1);
+  LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_ch_estimates_ext[0],12*N_RB_DL*nsymb,1,1);
 
   if (ue->transmission_mode[eNB_id]==7){
     sprintf(fname,"dlsch%d_bf_ch_r%d.m",eNB_id,round);
     sprintf(vname,"dl%d_bf_ch_r%d",eNB_id,round);
-    write_output(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_bf_ch_estimates[0],512*nsymb,1,1);
-    //write_output(fname,vname,phy_vars_ue->lte_ue_pdsch_vars[eNB_id]->dl_bf_ch_estimates[0],512,1,1);
+    LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_bf_ch_estimates[0],512*nsymb,1,1);
+    //LOG_M(fname,vname,phy_vars_ue->lte_ue_pdsch_vars[eNB_id]->dl_bf_ch_estimates[0],512,1,1);
 
     sprintf(fname,"dlsch%d_bf_ch_r%d_ext00.m",eNB_id,round);
     sprintf(vname,"dl%d_bf_ch_r%d_ext00",eNB_id,round);
-    write_output(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_bf_ch_estimates_ext[0],12*N_RB_DL*nsymb,1,1);
+    LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_bf_ch_estimates_ext[0],12*N_RB_DL*nsymb,1,1);
   }
 
   if (ue->frame_parms.nb_antennas_rx == 2) {
     sprintf(fname,"dlsch%d_ch_r%d_ext01.m",eNB_id,round);
     sprintf(vname,"dl%d_ch_r%d_ext01",eNB_id,round);
-    write_output(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_ch_estimates_ext[1],12*N_RB_DL*nsymb,1,1);
+    LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_ch_estimates_ext[1],12*N_RB_DL*nsymb,1,1);
   }
 
   if (ue->frame_parms.nb_antenna_ports_eNB == 2) {
     sprintf(fname,"dlsch%d_ch_r%d_ext10.m",eNB_id,round);
     sprintf(vname,"dl%d_ch_r%d_ext10",eNB_id,round);
-    write_output(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_ch_estimates_ext[2],12*N_RB_DL*nsymb,1,1);
+    LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_ch_estimates_ext[2],12*N_RB_DL*nsymb,1,1);
 
     if (ue->frame_parms.nb_antennas_rx == 2) {
       sprintf(fname,"dlsch%d_ch_r%d_ext11.m",eNB_id,round);
       sprintf(vname,"dl%d_ch_r%d_ext11",eNB_id,round);
-      write_output(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_ch_estimates_ext[3],12*N_RB_DL*nsymb,1,1);
+      LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_ch_estimates_ext[3],12*N_RB_DL*nsymb,1,1);
     }
   }
 
   sprintf(fname,"dlsch%d_rxF_r%d_uespec0.m",eNB_id,round);
   sprintf(vname,"dl%d_rxF_r%d_uespec0",eNB_id,round);
-  write_output(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->rxdataF_uespec_pilots[0],12*N_RB_DL,1,1);
+  LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->rxdataF_uespec_pilots[0],12*N_RB_DL,1,1);
 
   /*
-    write_output("dlsch%d_ch_ext01.m","dl01_ch0_ext",pdsch_vars[eNB_id]->dl_ch_estimates_ext[1],12*N_RB_DL*nsymb,1,1);
-    write_output("dlsch%d_ch_ext10.m","dl10_ch0_ext",pdsch_vars[eNB_id]->dl_ch_estimates_ext[2],12*N_RB_DL*nsymb,1,1);
-    write_output("dlsch%d_ch_ext11.m","dl11_ch0_ext",pdsch_vars[eNB_id]->dl_ch_estimates_ext[3],12*N_RB_DL*nsymb,1,1);
+    LOG_M("dlsch%d_ch_ext01.m","dl01_ch0_ext",pdsch_vars[eNB_id]->dl_ch_estimates_ext[1],12*N_RB_DL*nsymb,1,1);
+    LOG_M("dlsch%d_ch_ext10.m","dl10_ch0_ext",pdsch_vars[eNB_id]->dl_ch_estimates_ext[2],12*N_RB_DL*nsymb,1,1);
+    LOG_M("dlsch%d_ch_ext11.m","dl11_ch0_ext",pdsch_vars[eNB_id]->dl_ch_estimates_ext[3],12*N_RB_DL*nsymb,1,1);
   */
   sprintf(fname,"dlsch%d_r%d_rho.m",eNB_id,round);
   sprintf(vname,"dl_rho_r%d_%d",eNB_id,round);
 
-  write_output(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_ch_rho_ext[harq_pid][round][0],12*N_RB_DL*nsymb,1,1);
+  LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_ch_rho_ext[harq_pid][round][0],12*N_RB_DL*nsymb,1,1);
 
   sprintf(fname,"dlsch%d_r%d_rho2.m",eNB_id,round);
   sprintf(vname,"dl_rho2_r%d_%d",eNB_id,round);
 
-  write_output(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_ch_rho2_ext[0],12*N_RB_DL*nsymb,1,1);
+  LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_ch_rho2_ext[0],12*N_RB_DL*nsymb,1,1);
 
   sprintf(fname,"dlsch%d_rxF_r%d_comp0.m",eNB_id,round);
   sprintf(vname,"dl%d_rxF_r%d_comp0",eNB_id,round);
-  write_output(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->rxdataF_comp0[0],12*N_RB_DL*nsymb,1,1);
+  LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->rxdataF_comp0[0],12*N_RB_DL*nsymb,1,1);
   if (ue->frame_parms.nb_antenna_ports_eNB == 2) {
     sprintf(fname,"dlsch%d_rxF_r%d_comp1.m",eNB_id,round);
     sprintf(vname,"dl%d_rxF_r%d_comp1",eNB_id,round);
-    write_output(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->rxdataF_comp1[harq_pid][round][0],12*N_RB_DL*nsymb,1,1);
+    LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->rxdataF_comp1[harq_pid][round][0],12*N_RB_DL*nsymb,1,1);
   }
 
   sprintf(fname,"dlsch%d_rxF_r%d_llr.m",eNB_id,round);
   sprintf(vname,"dl%d_r%d_llr",eNB_id,round);
-  write_output(fname,vname, ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->llr[0],coded_bits_per_codeword[0],1,0);
+  LOG_M(fname,vname, ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->llr[0],coded_bits_per_codeword[0],1,0);
   sprintf(fname,"dlsch%d_r%d_mag1.m",eNB_id,round);
   sprintf(vname,"dl%d_r%d_mag1",eNB_id,round);
-  write_output(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_ch_mag0[0],12*N_RB_DL*nsymb,1,1);
+  LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_ch_mag0[0],12*N_RB_DL*nsymb,1,1);
   sprintf(fname,"dlsch%d_r%d_mag2.m",eNB_id,round);
   sprintf(vname,"dl%d_r%d_mag2",eNB_id,round);
-  write_output(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_ch_magb0[0],12*N_RB_DL*nsymb,1,1);
+  LOG_M(fname,vname,ue->pdsch_vars[ue->current_thread_id[subframe]][eNB_id]->dl_ch_magb0[0],12*N_RB_DL*nsymb,1,1);
 
   //  printf("log2_maxh = %d\n",ue->pdsch_vars[eNB_id]->log2_maxh);
 }
diff --git a/openair1/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation.c b/openair1/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation.c
index 525c8db676b1e60f76e751fee197ff56352e18c1..a3ad9b05ca008d30df368022b90d00e75b299265 100644
--- a/openair1/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation.c
+++ b/openair1/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation.c
@@ -765,11 +765,11 @@ int32_t dlsch_qpsk_llr_SIC(LTE_DL_FRAME_PARMS *frame_parms,
                     13);
 
 #ifdef DEBUG_LLR_SIC
-    write_output("rho_for_multipl.m","rho_for_m", rho_1,len,1,
+    LOG_M("rho_for_multipl.m","rho_for_m", rho_1,len,1,
      symbol==num_pdcch_symbols ? 15 :
      symbol==nsymb-1 ? 14 : 13);
 
-    write_output("rho_rho_in_llr.m","rho2", rho_rho_amp_x0,len,1,
+    LOG_M("rho_rho_in_llr.m","rho2", rho_rho_amp_x0,len,1,
      symbol==num_pdcch_symbols ? 15 :
      symbol==nsymb-1 ? 14 : 13);
 #endif
@@ -781,8 +781,8 @@ int32_t dlsch_qpsk_llr_SIC(LTE_DL_FRAME_PARMS *frame_parms,
                      len*2);
 
 #ifdef DEBUG_LLR_SIC
-    write_output("rxFdata_comp1_after.m","rxF_a", rxF,len,1,1);
-    write_output("rxF_comp1.m","rxF_1_comp", rxF,len,1,
+    LOG_M("rxFdata_comp1_after.m","rxF_a", rxF,len,1,1);
+    LOG_M("rxF_comp1.m","rxF_1_comp", rxF,len,1,
                  symbol==num_pdcch_symbols ? 15 :
                  symbol==nsymb-1 ? 14 : 13);
 #endif
@@ -1208,7 +1208,6 @@ void dlsch_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
 #endif
 }
 
-//#if 0
 void dlsch_64qam_llr_SIC(LTE_DL_FRAME_PARMS *frame_parms,
                          int32_t **rxdataF_comp,
                          int32_t **sic_buffer,  //Q15
@@ -8859,15 +8858,6 @@ int dlsch_64qam_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
   memcpy(ch_mag_i_256i, ch_mag_i, len*4);
   memcpy(rho_256i, rho, len*4);
 
-#if 0
-  qam64_qam16_avx2((short *)rxF_256i,
-                   (short *)rxF_i_256i,
-                   (short *)ch_mag_256i,
-                   (short *)ch_mag_i_256i,
-                   (short *)llr16,
-                   (short *) rho_256i,
-                   len);
-#else
   qam64_qam64_avx2((int32_t *)rxF_256i,
                    (int32_t *)rxF_i_256i,
                    (int32_t *)ch_mag_256i,
@@ -8875,7 +8865,6 @@ int dlsch_64qam_64qam_llr(LTE_DL_FRAME_PARMS *frame_parms,
                    (int16_t *)llr16,
                    (int32_t *) rho_256i,
                    len);
-#endif
   
   free16(rxF_256i, sizeof(rxF_256i));
   free16(rxF_i_256i, sizeof(rxF_i_256i));
diff --git a/openair1/PHY/LTE_UE_TRANSPORT/initial_sync.c b/openair1/PHY/LTE_UE_TRANSPORT/initial_sync.c
index b1d5b9b70e3b50dc3ca03ddbbdeddaff6d629b1e..8fd70ed2a666c2a30d372eca5c048284ab4e8814 100644
--- a/openair1/PHY/LTE_UE_TRANSPORT/initial_sync.c
+++ b/openair1/PHY/LTE_UE_TRANSPORT/initial_sync.c
@@ -284,14 +284,14 @@ int initial_sync(PHY_VARS_UE *ue, runmode_t mode)
 
   init_frame_parms(frame_parms,1);
   /*
-  write_output("rxdata0.m","rxd0",ue->common_vars.rxdata[0],10*frame_parms->samples_per_tti,1,1);
+  LOG_M("rxdata0.m","rxd0",ue->common_vars.rxdata[0],10*frame_parms->samples_per_tti,1,1);
   exit(-1);
   */
   sync_pos = lte_sync_time(ue->common_vars.rxdata,
                            frame_parms,
                            (int *)&ue->common_vars.eNb_id);
 
-  //  write_output("rxdata1.m","rxd1",ue->common_vars.rxdata[0],10*frame_parms->samples_per_tti,1,1);
+  //  LOG_M("rxdata1.m","rxd1",ue->common_vars.rxdata[0],10*frame_parms->samples_per_tti,1,1);
   if (sync_pos >= frame_parms->nb_prefix_samples)
     sync_pos2 = sync_pos - frame_parms->nb_prefix_samples;
   else
@@ -325,7 +325,7 @@ int initial_sync(PHY_VARS_UE *ue, runmode_t mode)
     init_frame_parms(&ue->frame_parms,1);
     lte_gold(frame_parms,ue->lte_gold_table[0],frame_parms->Nid_cell);
     ret = pbch_detection(ue,mode);
-    //   write_output("rxdata2.m","rxd2",ue->common_vars.rxdata[0],10*frame_parms->samples_per_tti,1,1);
+    //   LOG_M("rxdata2.m","rxd2",ue->common_vars.rxdata[0],10*frame_parms->samples_per_tti,1,1);
 
 #ifdef DEBUG_INITIAL_SYNCH
     LOG_I(PHY,"FDD Normal prefix: CellId %d metric %d, phase %d, flip %d, pbch %d\n",
@@ -372,7 +372,7 @@ int initial_sync(PHY_VARS_UE *ue, runmode_t mode)
       init_frame_parms(&ue->frame_parms,1);
       lte_gold(frame_parms,ue->lte_gold_table[0],frame_parms->Nid_cell);
       ret = pbch_detection(ue,mode);
-      //     write_output("rxdata3.m","rxd3",ue->common_vars.rxdata[0],10*frame_parms->samples_per_tti,1,1);
+      //     LOG_M("rxdata3.m","rxd3",ue->common_vars.rxdata[0],10*frame_parms->samples_per_tti,1,1);
 #ifdef DEBUG_INITIAL_SYNCH
       LOG_I(PHY,"FDD Extended prefix: CellId %d metric %d, phase %d, flip %d, pbch %d\n",
             frame_parms->Nid_cell,metric_fdd_ecp,phase_fdd_ecp,flip_fdd_ecp,ret);
@@ -415,7 +415,7 @@ int initial_sync(PHY_VARS_UE *ue, runmode_t mode)
 
       lte_gold(frame_parms,ue->lte_gold_table[0],frame_parms->Nid_cell);
       ret = pbch_detection(ue,mode);
-      //      write_output("rxdata4.m","rxd4",ue->common_vars.rxdata[0],10*frame_parms->samples_per_tti,1,1);
+      //      LOG_M("rxdata4.m","rxd4",ue->common_vars.rxdata[0],10*frame_parms->samples_per_tti,1,1);
 
 #ifdef DEBUG_INITIAL_SYNCH
       LOG_I(PHY,"TDD Normal prefix: CellId %d metric %d, phase %d, flip %d, pbch %d\n",
@@ -452,7 +452,7 @@ int initial_sync(PHY_VARS_UE *ue, runmode_t mode)
         lte_gold(frame_parms,ue->lte_gold_table[0],frame_parms->Nid_cell);
         ret = pbch_detection(ue,mode);
 
-	//	write_output("rxdata5.m","rxd5",ue->common_vars.rxdata[0],10*frame_parms->samples_per_tti,1,1);
+	//	LOG_M("rxdata5.m","rxd5",ue->common_vars.rxdata[0],10*frame_parms->samples_per_tti,1,1);
 #ifdef DEBUG_INITIAL_SYNCH
         LOG_I(PHY,"TDD Extended prefix: CellId %d metric %d, phase %d, flip %d, pbch %d\n",
               frame_parms->Nid_cell,metric_tdd_ecp,phase_tdd_ecp,flip_tdd_ecp,ret);
diff --git a/openair1/PHY/LTE_UE_TRANSPORT/pmch_ue.c b/openair1/PHY/LTE_UE_TRANSPORT/pmch_ue.c
index d944491b6399ead88d0c3d163f22c2e300787376..d2cb9a71a98dff1bb82b8cccf244631ae0131a90 100644
--- a/openair1/PHY/LTE_UE_TRANSPORT/pmch_ue.c
+++ b/openair1/PHY/LTE_UE_TRANSPORT/pmch_ue.c
@@ -49,40 +49,40 @@ void dump_mch(PHY_VARS_UE *ue,uint8_t eNB_id,uint16_t coded_bits_per_codeword,in
 
   sprintf(fname,"mch_rxF_ext0.m");
   sprintf(vname,"pmch_rxF_ext0");
-  write_output(fname,vname,ue->pdsch_vars_MCH[eNB_id]->rxdataF_ext[0],12*N_RB_DL*nsymb_pmch,1,1);
+  LOG_M(fname,vname,ue->pdsch_vars_MCH[eNB_id]->rxdataF_ext[0],12*N_RB_DL*nsymb_pmch,1,1);
   sprintf(fname,"mch_ch_ext00.m");
   sprintf(vname,"pmch_ch_ext00");
-  write_output(fname,vname,ue->pdsch_vars_MCH[eNB_id]->dl_ch_estimates_ext[0],12*N_RB_DL*nsymb_pmch,1,1);
+  LOG_M(fname,vname,ue->pdsch_vars_MCH[eNB_id]->dl_ch_estimates_ext[0],12*N_RB_DL*nsymb_pmch,1,1);
   /*
-    write_output("dlsch%d_ch_ext01.m","dl01_ch0_ext",pdsch_vars[eNB_id]->dl_ch_estimates_ext[1],12*N_RB_DL*nsymb_pmch,1,1);
-    write_output("dlsch%d_ch_ext10.m","dl10_ch0_ext",pdsch_vars[eNB_id]->dl_ch_estimates_ext[2],12*N_RB_DL*nsymb_pmch,1,1);
-    write_output("dlsch%d_ch_ext11.m","dl11_ch0_ext",pdsch_vars[eNB_id]->dl_ch_estimates_ext[3],12*N_RB_DL*nsymb_pmch,1,1);
-    write_output("dlsch%d_rho.m","dl_rho",pdsch_vars[eNB_id]->rho[0],12*N_RB_DL*nsymb_pmch,1,1);
+    LOG_M("dlsch%d_ch_ext01.m","dl01_ch0_ext",pdsch_vars[eNB_id]->dl_ch_estimates_ext[1],12*N_RB_DL*nsymb_pmch,1,1);
+    LOG_M("dlsch%d_ch_ext10.m","dl10_ch0_ext",pdsch_vars[eNB_id]->dl_ch_estimates_ext[2],12*N_RB_DL*nsymb_pmch,1,1);
+    LOG_M("dlsch%d_ch_ext11.m","dl11_ch0_ext",pdsch_vars[eNB_id]->dl_ch_estimates_ext[3],12*N_RB_DL*nsymb_pmch,1,1);
+    LOG_M("dlsch%d_rho.m","dl_rho",pdsch_vars[eNB_id]->rho[0],12*N_RB_DL*nsymb_pmch,1,1);
   */
   sprintf(fname,"mch_rxF_comp0.m");
   sprintf(vname,"pmch_rxF_comp0");
-  write_output(fname,vname,ue->pdsch_vars_MCH[eNB_id]->rxdataF_comp0[0],12*N_RB_DL*nsymb_pmch,1,1);
+  LOG_M(fname,vname,ue->pdsch_vars_MCH[eNB_id]->rxdataF_comp0[0],12*N_RB_DL*nsymb_pmch,1,1);
   sprintf(fname,"mch_rxF_llr.m");
   sprintf(vname,"pmch_llr");
-  write_output(fname,vname, ue->pdsch_vars_MCH[eNB_id]->llr[0],coded_bits_per_codeword,1,0);
+  LOG_M(fname,vname, ue->pdsch_vars_MCH[eNB_id]->llr[0],coded_bits_per_codeword,1,0);
   sprintf(fname,"mch_mag1.m");
   sprintf(vname,"pmch_mag1");
-  write_output(fname,vname,ue->pdsch_vars_MCH[eNB_id]->dl_ch_mag0[0],12*N_RB_DL*nsymb_pmch,1,1);
+  LOG_M(fname,vname,ue->pdsch_vars_MCH[eNB_id]->dl_ch_mag0[0],12*N_RB_DL*nsymb_pmch,1,1);
   sprintf(fname,"mch_mag2.m");
   sprintf(vname,"pmch_mag2");
-  write_output(fname,vname,ue->pdsch_vars_MCH[eNB_id]->dl_ch_magb0[0],12*N_RB_DL*nsymb_pmch,1,1);
+  LOG_M(fname,vname,ue->pdsch_vars_MCH[eNB_id]->dl_ch_magb0[0],12*N_RB_DL*nsymb_pmch,1,1);
 
-  write_output("mch00_ch0.m","pmch00_ch0",
+  LOG_M("mch00_ch0.m","pmch00_ch0",
                &(ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates[eNB_id][0][0]),
                ue->frame_parms.ofdm_symbol_size*12,1,1);
 
-  write_output("rxsig_mch.m","rxs_mch",
+  LOG_M("rxsig_mch.m","rxs_mch",
                &ue->common_vars.rxdata[0][subframe*ue->frame_parms.samples_per_tti],
                ue->frame_parms.samples_per_tti,1,1);
 
   /*
   if (PHY_vars_eNB_g)
-    write_output("txsig_mch.m","txs_mch",
+    LOG_M("txsig_mch.m","txs_mch",
                  &PHY_vars_eNB_g[0][0]->common_vars.txdata[0][0][subframe*ue->frame_parms.samples_per_tti],
                  ue->frame_parms.samples_per_tti,1,1);*/
 }
diff --git a/openair1/PHY/LTE_UE_TRANSPORT/prach_ue.c b/openair1/PHY/LTE_UE_TRANSPORT/prach_ue.c
index 02d0c9aa4f51a78bfcb8bacb4f319d0294086559..06acb31d57f82c025b1c74a8f5f1a1d9c26bc740 100644
--- a/openair1/PHY/LTE_UE_TRANSPORT/prach_ue.c
+++ b/openair1/PHY/LTE_UE_TRANSPORT/prach_ue.c
@@ -523,9 +523,9 @@ int32_t generate_prach( PHY_VARS_UE *ue, uint8_t eNB_id, uint8_t subframe, uint1
 
   
 #if defined(PRACH_WRITE_OUTPUT_DEBUG)
-  write_output("prach_txF0.m","prachtxF0",prachF,prach_len-Ncp,1,1);
-  write_output("prach_tx0.m","prachtx0",prach+(Ncp<<1),prach_len-Ncp,1,1);
-  write_output("txsig.m","txs",(int16_t*)(&ue->common_vars.txdata[0][0]),2*ue->frame_parms.samples_per_tti,1,1);
+  LOG_M("prach_txF0.m","prachtxF0",prachF,prach_len-Ncp,1,1);
+  LOG_M("prach_tx0.m","prachtx0",prach+(Ncp<<1),prach_len-Ncp,1,1);
+  LOG_M("txsig.m","txs",(int16_t*)(&ue->common_vars.txdata[0][0]),2*ue->frame_parms.samples_per_tti,1,1);
   exit(-1);
 #endif
 
diff --git a/openair1/PHY/LTE_UE_TRANSPORT/srs_modulation.c b/openair1/PHY/LTE_UE_TRANSPORT/srs_modulation.c
index 45508fcff27eb5ee25e6694b8903f114e2edcb19..e3ad16978d3ce6e13f246b557944b11bbfa96a8a 100644
--- a/openair1/PHY/LTE_UE_TRANSPORT/srs_modulation.c
+++ b/openair1/PHY/LTE_UE_TRANSPORT/srs_modulation.c
@@ -220,113 +220,6 @@ int generate_srs_tx_emul(PHY_VARS_UE *phy_vars_ue,uint8_t subframe)
   return(0);
 }
 
-#if 0
-int generate_srs_rx(LTE_DL_FRAME_PARMS *frame_parms,
-                    SOUNDINGRS_UL_CONFIG_DEDICATED *soundingrs_ul_config_dedicated,
-                    int *txdataF)
-{
-
-  uint16_t msrsb=0,Nb=0,nb,b,msrs0=0,k,Msc_RS,Msc_RS_idx,carrier_pos;
-  uint16_t *Msc_idx_ptr;
-  int k0;
-  uint8_t Bsrs  = soundingrs_ul_config_dedicated->srs_Bandwidth;
-  uint8_t Csrs  = frame_parms->soundingrs_ul_config_common.srs_BandwidthConfig;
-  uint8_t n_RRC = soundingrs_ul_config_dedicated->freqDomainPosition;
-  uint8_t kTC   = soundingrs_ul_config_dedicated->transmissionComb;
-
-  if (frame_parms->N_RB_UL < 41) {
-    msrs0 = msrsb_6_40[Csrs][0];
-    msrsb = msrsb_6_40[Csrs][Bsrs];
-    Nb    = Nb_6_40[Csrs][Bsrs];
-  } else if (frame_parms->N_RB_UL < 61) {
-    msrs0 = msrsb_41_60[Csrs][0];
-    msrsb = msrsb_41_60[Csrs][Bsrs];
-    Nb    = Nb_41_60[Csrs][Bsrs];
-  } else if (frame_parms->N_RB_UL < 81) {
-    msrs0 = msrsb_61_80[Csrs][0];
-    msrsb = msrsb_61_80[Csrs][Bsrs];
-    Nb    = Nb_61_80[Csrs][Bsrs];
-  } else if (frame_parms->N_RB_UL <111) {
-    msrs0 = msrsb_81_110[Csrs][0];
-    msrsb = msrsb_81_110[Csrs][Bsrs];
-    Nb    = Nb_81_110[Csrs][Bsrs];
-  }
-
-  Msc_RS = msrsb * 6;
-  k0 = (((frame_parms->N_RB_UL>>1)-(msrs0>>1))*12) + kTC;
-  nb  = (4*n_RRC/msrsb)%Nb;
-
-  for (b=0; b<=Bsrs; b++) {
-    k0 += 2*nb*Msc_RS;
-  }
-
-  if (k0<0) {
-    LOG_E(PHY,"Invalid parameter set msrs0=%d, msrsb=%d, Nb=%d => nb=%d, k0=%d\n",msrs0,msrsb,Nb,nb,k0);
-    return(-1);
-  }
-
-  Msc_idx_ptr = (uint16_t*) bsearch((uint16_t*) &Msc_RS, (uint16_t*) dftsizes, 33, sizeof(uint16_t), compareints);
-
-  if (Msc_idx_ptr)
-    Msc_RS_idx = Msc_idx_ptr - dftsizes;
-  else {
-    LOG_E(PHY,"generate_srs: index for Msc_RS=%d not found\n",Msc_RS);
-    return(-1);
-  }
-
-#ifdef DEBUG_SRS
-  LOG_I(PHY,"generate_srs_rx: Msc_RS = %d, Msc_RS_idx = %d, k0=%d\n",Msc_RS, Msc_RS_idx,k0);
-#endif
-
-  carrier_pos = (frame_parms->first_carrier_offset + k0) % frame_parms->ofdm_symbol_size;
-
-  for (k=0; k<Msc_RS; k++) {
-    ((short*) txdataF)[carrier_pos<<1]   = ul_ref_sigs_rx[0][0][Msc_RS_idx][k<<1];
-    ((short*) txdataF)[(carrier_pos<<1)+1] = ul_ref_sigs_rx[0][0][Msc_RS_idx][(k<<1)+1];
-    carrier_pos+=2;
-
-    if (carrier_pos >= frame_parms->ofdm_symbol_size)
-      carrier_pos=1;
-  }
-
-  /*
-  for (k=0;k<Msc_RS;k++) {
-    if ((ul_ref_sigs[0][0][Msc_RS_idx][k<<1] >= 0) && (ul_ref_sigs[0][0][Msc_RS_idx][(k<<1)+1] >= 0)) {
-      ((short*) txdataF)[4*(symbol_offset + carrier_pos)] = ONE_OVER_SQRT2_Q15;
-      ((short*) txdataF)[4*(symbol_offset + carrier_pos)+1] = ONE_OVER_SQRT2_Q15;
-      ((short*) txdataF)[4*(symbol_offset + carrier_pos)+2] = -ONE_OVER_SQRT2_Q15;
-      ((short*) txdataF)[4*(symbol_offset + carrier_pos)+3] = ONE_OVER_SQRT2_Q15;
-    }
-    else if ((ul_ref_sigs[0][0][Msc_RS_idx][k<<1] >= 0) && (ul_ref_sigs[0][0][Msc_RS_idx][(k<<1)+1] < 0)) {
-      ((short*) txdataF)[4*(symbol_offset + carrier_pos)] = ONE_OVER_SQRT2_Q15;
-      ((short*) txdataF)[4*(symbol_offset + carrier_pos)+1] = -ONE_OVER_SQRT2_Q15;
-      ((short*) txdataF)[4*(symbol_offset + carrier_pos)+2] = ONE_OVER_SQRT2_Q15;
-      ((short*) txdataF)[4*(symbol_offset + carrier_pos)+3] = ONE_OVER_SQRT2_Q15;
-    }
-    else if ((ul_ref_sigs[0][0][Msc_RS_idx][k<<1] < 0) && (ul_ref_sigs[0][0][Msc_RS_idx][(k<<1)+1] >= 0)) {
-      ((short*) txdataF)[4*(symbol_offset + carrier_pos)] = -ONE_OVER_SQRT2_Q15;
-      ((short*) txdataF)[4*(symbol_offset + carrier_pos)+1] = ONE_OVER_SQRT2_Q15;
-      ((short*) txdataF)[4*(symbol_offset + carrier_pos)+2] = -ONE_OVER_SQRT2_Q15;
-      ((short*) txdataF)[4*(symbol_offset + carrier_pos)+3] = -ONE_OVER_SQRT2_Q15;
-    }
-    else if ((ul_ref_sigs[0][0][Msc_RS_idx][k<<1] < 0) && (ul_ref_sigs[0][0][Msc_RS_idx][(k<<1)+1] < 0)) {
-      ((short*) txdataF)[4*(symbol_offset + carrier_pos)] = -ONE_OVER_SQRT2_Q15;
-      ((short*) txdataF)[4*(symbol_offset + carrier_pos)+1] = -ONE_OVER_SQRT2_Q15;
-      ((short*) txdataF)[4*(symbol_offset + carrier_pos)+2] = ONE_OVER_SQRT2_Q15;
-      ((short*) txdataF)[4*(symbol_offset + carrier_pos)+3] = -ONE_OVER_SQRT2_Q15;
-    }
-
-    carrier_pos+=2;
-    if (carrier_pos >= frame_parms->ofdm_symbol_size)
-      carrier_pos=0;
-  }
-  */
-
-  //  write_output("srs_rx.m","srsrx",txdataF,1024,2,1);
-  return(0);
-}
-#endif
-
 #ifdef MAIN
 main()
 {
diff --git a/openair1/PHY/LTE_UE_TRANSPORT/sss_ue.c b/openair1/PHY/LTE_UE_TRANSPORT/sss_ue.c
index aee5d6bcf91a37fc50710f63c8cfb4d6048a8153..7087b83bcaa882846ee80c98aba6fca7249aa1a5 100644
--- a/openair1/PHY/LTE_UE_TRANSPORT/sss_ue.c
+++ b/openair1/PHY/LTE_UE_TRANSPORT/sss_ue.c
@@ -313,10 +313,10 @@ int rx_sss(PHY_VARS_UE *ue,int32_t *tot_metric,uint8_t *flip_max,uint8_t *phase_
                   pss_ext,
                   sss0_ext,0);
   /*
-  write_output("rxsig0.m","rxs0",&ue->common_vars.rxdata[0][0],ue->frame_parms.samples_per_tti,1,1);
-  write_output("rxdataF0.m","rxF0",&ue->common_vars.rxdataF[0][0],2*14*ue->frame_parms.ofdm_symbol_size,2,1);
-  write_output("pss_ext0.m","pssext0",pss_ext,72,1,1);
-  write_output("sss0_ext0.m","sss0ext0",sss0_ext,72,1,1);
+  LOG_M("rxsig0.m","rxs0",&ue->common_vars.rxdata[0][0],ue->frame_parms.samples_per_tti,1,1);
+  LOG_M("rxdataF0.m","rxF0",&ue->common_vars.rxdataF[0][0],2*14*ue->frame_parms.ofdm_symbol_size,2,1);
+  LOG_M("pss_ext0.m","pssext0",pss_ext,72,1,1);
+  LOG_M("sss0_ext0.m","sss0ext0",sss0_ext,72,1,1);
   */
 
   // get conjugated channel estimate from PSS (symbol 6), H* = R* \cdot PSS
@@ -326,7 +326,7 @@ int rx_sss(PHY_VARS_UE *ue,int32_t *tot_metric,uint8_t *flip_max,uint8_t *phase_
              pss_ext,
              sss0_ext);
 
-  //  write_output("sss0_comp0.m","sss0comp0",sss0_ext,72,1,1);
+  //  LOG_M("sss0_comp0.m","sss0comp0",sss0_ext,72,1,1);
 
   if (ue->frame_parms.frame_type == FDD) { // FDD
 
@@ -364,7 +364,7 @@ int rx_sss(PHY_VARS_UE *ue,int32_t *tot_metric,uint8_t *flip_max,uint8_t *phase_
                   pss_ext,
                   sss5_ext,5);
 
-  //  write_output("sss5_ext0.m","sss5ext0",sss5_ext,72,1,1);
+  //  LOG_M("sss5_ext0.m","sss5ext0",sss5_ext,72,1,1);
   // get conjugated channel estimate from PSS (symbol 6), H* = R* \cdot PSS
   // and do channel estimation and compensation based on PSS
 
diff --git a/openair1/PHY/LTE_UE_TRANSPORT/ulsch_coding.c b/openair1/PHY/LTE_UE_TRANSPORT/ulsch_coding.c
index a26b66ca519021fb8f9f80c1c7167e7d691d3cb9..211744d4595f4b26d4e5f84388ee06178ee6b1aa 100644
--- a/openair1/PHY/LTE_UE_TRANSPORT/ulsch_coding.c
+++ b/openair1/PHY/LTE_UE_TRANSPORT/ulsch_coding.c
@@ -357,7 +357,7 @@ uint32_t ulsch_encoding(uint8_t *a,
 #ifdef DEBUG_ULSCH_CODING
 
         if (r==0)
-          write_output("enc_output0.m","enc0",&ulsch->harq_processes[harq_pid]->d[r][96],(3*8*Kr_bytes)+12,1,4);
+          LOG_M("enc_output0.m","enc0",&ulsch->harq_processes[harq_pid]->d[r][96],(3*8*Kr_bytes)+12,1,4);
 
 #endif
         start_meas(i_stats);
@@ -527,7 +527,7 @@ uint32_t ulsch_encoding(uint8_t *a,
 #ifdef DEBUG_ULSCH_CODING
 
       if (r==ulsch->harq_processes[harq_pid]->C-1)
-        write_output("enc_output.m","enc",ulsch->e,r_offset,1,4);
+        LOG_M("enc_output.m","enc",ulsch->e,r_offset,1,4);
 
 #endif
     }
diff --git a/openair1/PHY/TOOLS/file_output.c b/openair1/PHY/TOOLS/file_output.c
deleted file mode 100644
index 1e0b31a47f0a31b08a17c279e09a5fb9f53d473f..0000000000000000000000000000000000000000
--- a/openair1/PHY/TOOLS/file_output.c
+++ /dev/null
@@ -1,180 +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
- */
-
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-
-int write_output(const char *fname,const char *vname,void *data,int length,int dec,char format)
-{
-
-  FILE *fp=NULL;
-  int i;
-
-
-  printf("Writing %d elements of type %d to %s\n",length,format,fname);
-
-
-  if (format == 10 || format ==11 || format == 12 || format == 13 || format == 14) {
-    fp = fopen(fname,"a+");
-  } else if (format != 10 && format !=11  && format != 12 && format != 13 && format != 14) {
-    fp = fopen(fname,"w+");
-  }
-
-
-
-  if (fp== NULL) {
-    printf("[OPENAIR][FILE OUTPUT] Cannot open file %s\n",fname);
-    return(-1);
-  }
-
-  if (format != 10 && format !=11  && format != 12 && format != 13 && format != 14)
-    fprintf(fp,"%s = [",vname);
-
-
-  switch (format) {
-  case 0:   // real 16-bit
-
-    for (i=0; i<length; i+=dec) {
-      fprintf(fp,"%d\n",((short *)data)[i]);
-    }
-
-    break;
-
-  case 1:  // complex 16-bit
-  case 13:
-  case 14:
-  case 15:
-
-    for (i=0; i<length<<1; i+=(2*dec)) {
-      fprintf(fp,"%d + j*(%d)\n",((short *)data)[i],((short *)data)[i+1]);
-
-    }
-
-
-    break;
-
-  case 2:  // real 32-bit
-    for (i=0; i<length; i+=dec) {
-      fprintf(fp,"%d\n",((int *)data)[i]);
-    }
-
-    break;
-
-  case 3: // complex 32-bit
-    for (i=0; i<length<<1; i+=(2*dec)) {
-      fprintf(fp,"%d + j*(%d)\n",((int *)data)[i],((int *)data)[i+1]);
-    }
-
-    break;
-
-  case 4: // real 8-bit
-    for (i=0; i<length; i+=dec) {
-      fprintf(fp,"%d\n",((char *)data)[i]);
-    }
-
-    break;
-
-  case 5: // complex 8-bit
-    for (i=0; i<length<<1; i+=(2*dec)) {
-      fprintf(fp,"%d + j*(%d)\n",((char *)data)[i],((char *)data)[i+1]);
-    }
-
-    break;
-
-  case 6:  // real 64-bit
-    for (i=0; i<length; i+=dec) {
-      fprintf(fp,"%lld\n",((long long*)data)[i]);
-    }
-
-    break;
-
-  case 7: // real double
-    for (i=0; i<length; i+=dec) {
-      fprintf(fp,"%g\n",((double *)data)[i]);
-    }
-
-    break;
-
-  case 8: // complex double
-    for (i=0; i<length<<1; i+=2*dec) {
-      fprintf(fp,"%g + j*(%g)\n",((double *)data)[i], ((double *)data)[i+1]);
-    }
-
-    break;
-
-  case 9: // real unsigned 8-bit
-    for (i=0; i<length; i+=dec) {
-      fprintf(fp,"%d\n",((unsigned char *)data)[i]);
-    }
-
-    break;
-
-
-  case 10 : // case eren 16 bit complex :
-
-    for (i=0; i<length<<1; i+=(2*dec)) {
-
-      if((i < 2*(length-1)) && (i > 0))
-        fprintf(fp,"%d + j*(%d),",((short *)data)[i],((short *)data)[i+1]);
-      else if (i == 2*(length-1))
-        fprintf(fp,"%d + j*(%d);",((short *)data)[i],((short *)data)[i+1]);
-      else if (i == 0)
-        fprintf(fp,"\n%d + j*(%d),",((short *)data)[i],((short *)data)[i+1]);
-
-
-
-    }
-
-    break;
-
-  case 11 : //case eren 16 bit real for channel magnitudes:
-    for (i=0; i<length; i+=dec) {
-
-      if((i <(length-1))&& (i > 0))
-        fprintf(fp,"%d,",((short *)data)[i]);
-      else if (i == (length-1))
-        fprintf(fp,"%d;",((short *)data)[i]);
-      else if (i == 0)
-        fprintf(fp,"\n%d,",((short *)data)[i]);
-    }
-
-    printf("\n erennnnnnnnnnnnnnn: length :%d",length);
-    break;
-
-  case 12 : // case eren for log2_maxh real unsigned 8 bit
-    fprintf(fp,"%d \n",((unsigned char *)&data)[0]);
-    break;
-
-  }
-
-  if (format != 10 && format !=11 && format !=12 && format != 13 && format != 15) {
-    fprintf(fp,"];\n");
-    fclose(fp);
-    return(0);
-  } else if (format == 10 || format ==11 || format == 12 || format == 13 || format == 15) {
-    fclose(fp);
-    return(0);
-  }
-
-  return 0;
-}
diff --git a/openair1/PHY/TOOLS/lte_dfts.c b/openair1/PHY/TOOLS/lte_dfts.c
index 9a5a504ec41eea3d6f69ecf84ed20e5d03c0ed9f..4bf6afd1fd367d99d1aa06635f93baefd7082454 100644
--- a/openair1/PHY/TOOLS/lte_dfts.c
+++ b/openair1/PHY/TOOLS/lte_dfts.c
@@ -2511,25 +2511,6 @@ const static int16_t tw64[96] __attribute__((aligned(32))) = {
 -23170,-23170,-28898,-15447,-32138,-6393,-32610,3211,
 -30273,12539,-25330,20787,-18205,27244,-9512,31356
                                                 };
-
-#if 0
-/* this is defined but not used, let's comment */
-const static int16_t tw64rep[192] __attribute__((aligned(32))) = { 
-32767,0,32609,-3212,32137,-6393,31356,-9512,32767,0,32609,-3212,32137,-6393,31356,-9512,
-30272,-12540,28897,-15447,27244,-18205,25329,-20788,30272,-12540,28897,-15447,27244,-18205,25329,-20788,
-23169,-23170,20787,-25330,18204,-27245,15446,-28898,23169,-23170,20787,-25330,18204,-27245,15446,-28898,
-12539,-30273,9511,-31357,6392,-32138,3211,-32610,12539,-30273,9511,-31357,6392,-32138,3211,-32610,
-32767,0,32137,-6393,30272,-12540,27244,-18205,32767,0,32137,-6393,30272,-12540,27244,-18205,
-23169,-23170,18204,-27245,12539,-30273,6392,-32138,23169,-23170,18204,-27245,12539,-30273,6392,-32138,
-0,-32767,-6393,-32138,-12540,-30273,-18205,-27245,0,-32767,-6393,-32138,-12540,-30273,-18205,-27245,
--23170,-23170,-27245,-18205,-30273,-12540,-32138,-6393,-23170,-23170,-27245,-18205,-30273,-12540,-32138,-6393,
-32767,0,31356,-9512,27244,-18205,20787,-25330,32767,0,31356,-9512,27244,-18205,20787,-25330,
-12539,-30273,3211,-32610,-6393,-32138,-15447,-28898,12539,-30273,3211,-32610,-6393,-32138,-15447,-28898,
--23170,-23170,-28898,-15447,-32138,-6393,-32610,3211,-23170,-23170,-28898,-15447,-32138,-6393,-32610,3211,
--30273,12539,-25330,20787,-18205,27244,-9512,31356,-30273,12539,-25330,20787,-18205,27244,-9512,31356
-                                                };
-#endif
-
 const static int16_t tw64a[96] __attribute__((aligned(32))) = { 
 32767,0,32609,3212,32137,6393,31356,9512,
 30272,12540,28897,15447,27244,18205,25329,20788,
@@ -2544,24 +2525,6 @@ const static int16_t tw64a[96] __attribute__((aligned(32))) = {
 -23170,23170,-28898,15447,-32138,6393,-32610,-3211,
 -30273,-12539,-25330,-20787,-18205,-27244,-9512,-31356
                                                  };
-#if 0
-/* this is defined but not used, let's comment */
-const static int16_t tw64arep[192] __attribute__((aligned(32))) = { 
-32767,0,32609,3212,32137,6393,31356,9512,32767,0,32609,3212,32137,6393,31356,9512,
-30272,12540,28897,15447,27244,18205,25329,20788,30272,12540,28897,15447,27244,18205,25329,20788,
-23169,23170,20787,25330,18204,27245,15446,28898,23169,23170,20787,25330,18204,27245,15446,28898,
-12539,30273,9511,31357,6392,32138,3211,32610,12539,30273,9511,31357,6392,32138,3211,32610,
-32767,0,32137,6393,30272,12540,27244,18205,32767,0,32137,6393,30272,12540,27244,18205,
-23169,23170,18204,27245,12539,30273,6392,32138,23169,23170,18204,27245,12539,30273,6392,32138,
-0,32767,-6393,32138,-12540,30273,-18205,27245,0,32767,-6393,32138,-12540,30273,-18205,27245,
--23170,23170,-27245,18205,-30273,12540,-32138,6393,-23170,23170,-27245,18205,-30273,12540,-32138,6393,
-32767,0,31356,9512,27244,18205,20787,25330,32767,0,31356,9512,27244,18205,20787,25330,
-12539,30273,3211,32610,-6393,32138,-15447,28898,12539,30273,3211,32610,-6393,32138,-15447,28898,
--23170,23170,-28898,15447,-32138,6393,-32610,-3211,-23170,23170,-28898,15447,-32138,6393,-32610,-3211,
--30273,-12539,-25330,-20787,-18205,-27244,-9512,-31356,-30273,-12539,-25330,-20787,-18205,-27244,-9512,-31356
-                                                 };
-#endif
-
 const static int16_t tw64b[96] __attribute__((aligned(32))) = { 
 0,32767,-3212,32609,-6393,32137,-9512,31356,
 -12540,30272,-15447,28897,-18205,27244,-20788,25329,
@@ -2576,25 +2539,6 @@ const static int16_t tw64b[96] __attribute__((aligned(32))) = {
 -23170,-23170,-15447,-28898,-6393,-32138,3211,-32610,
 12539,-30273,20787,-25330,27244,-18205,31356,-9512
                                                  };
-
-#if 0
-/* this is defined but not used, let's comment */
-const static int16_t tw64brep[192] __attribute__((aligned(32))) = { 
-0,32767,-3212,32609,-6393,32137,-9512,31356,0,32767,-3212,32609,-6393,32137,-9512,31356,
--12540,30272,-15447,28897,-18205,27244,-20788,25329,-12540,30272,-15447,28897,-18205,27244,-20788,25329,
--23170,23169,-25330,20787,-27245,18204,-28898,15446,-23170,23169,-25330,20787,-27245,18204,-28898,15446,
--30273,12539,-31357,9511,-32138,6392,-32610,3211,-30273,12539,-31357,9511,-32138,6392,-32610,3211,
-0,32767,-6393,32137,-12540,30272,-18205,27244,0,32767,-6393,32137,-12540,30272,-18205,27244,
--23170,23169,-27245,18204,-30273,12539,-32138,6392,-23170,23169,-27245,18204,-30273,12539,-32138,6392,
--32767,0,-32138,-6393,-30273,-12540,-27245,-18205,-32767,0,-32138,-6393,-30273,-12540,-27245,-18205,
--23170,-23170,-18205,-27245,-12540,-30273,-6393,-32138,-23170,-23170,-18205,-27245,-12540,-30273,-6393,-32138,
-0,32767,-9512,31356,-18205,27244,-25330,20787,0,32767,-9512,31356,-18205,27244,-25330,20787,
--30273,12539,-32610,3211,-32138,-6393,-28898,-15447,-30273,12539,-32610,3211,-32138,-6393,-28898,-15447,
--23170,-23170,-15447,-28898,-6393,-32138,3211,-32610,-23170,-23170,-15447,-28898,-6393,-32138,3211,-32610,
-12539,-30273,20787,-25330,27244,-18205,31356,-9512,12539,-30273,20787,-25330,27244,-18205,31356,-9512
-                                                 };
-#endif
-
 const static int16_t tw64c[96] __attribute__((aligned(32))) = { 
 0,32767,3212,32609,6393,32137,9512,31356,
 12540,30272,15447,28897,18205,27244,20788,25329,
@@ -2609,26 +2553,6 @@ const static int16_t tw64c[96] __attribute__((aligned(32))) = {
 23170,-23170,15447,-28898,6393,-32138,-3211,-32610,
 -12539,-30273,-20787,-25330,-27244,-18205,-31356,-9512
                                                  };
-
-#if 0
-/* this is defined but not used, let's comment */
-const static int16_t tw64crep[192] __attribute__((aligned(32))) = { 
-0,32767,3212,32609,6393,32137,9512,31356,0,32767,3212,32609,6393,32137,9512,31356,
-12540,30272,15447,28897,18205,27244,20788,25329,12540,30272,15447,28897,18205,27244,20788,25329,
-23170,23169,25330,20787,27245,18204,28898,15446,23170,23169,25330,20787,27245,18204,28898,15446,
-30273,12539,31357,9511,32138,6392,32610,3211,30273,12539,31357,9511,32138,6392,32610,3211,
-0,32767,6393,32137,12540,30272,18205,27244,0,32767,6393,32137,12540,30272,18205,27244,
-23170,23169,27245,18204,30273,12539,32138,6392,23170,23169,27245,18204,30273,12539,32138,6392,
-32767,0,32138,-6393,30273,-12540,27245,-18205,32767,0,32138,-6393,30273,-12540,27245,-18205,
-23170,-23170,18205,-27245,12540,-30273,6393,-32138,23170,-23170,18205,-27245,12540,-30273,6393,-32138,
-0,32767,9512,31356,18205,27244,25330,20787,0,32767,9512,31356,18205,27244,25330,20787,
-30273,12539,32610,3211,32138,-6393,28898,-15447,30273,12539,32610,3211,32138,-6393,28898,-15447,
-23170,-23170,15447,-28898,6393,-32138,-3211,-32610,23170,-23170,15447,-28898,6393,-32138,-3211,-32610,
--12539,-30273,-20787,-25330,-27244,-18205,-31356,-9512,-12539,-30273,-20787,-25330,-27244,-18205,-31356,-9512
-                                                 };
-#endif
-
-
 #if defined(__x86_64__) || defined(__i386__)
 #define simd_q15_t __m128i
 #define simdshort_q15_t __m64
@@ -3164,8 +3088,8 @@ void dft128(int16_t *x,int16_t *y,int scale)
   dft64((int16_t*)(xtmp),(int16_t*)ytmp,1);
   dft64((int16_t*)(xtmp+32),(int16_t*)(ytmp+16),1);
 
-  /*  write_output("dft128a.m","dfta",ytmp,64,1,1);
-      write_output("dft128b.m","dftb",ytmp+16,64,1,1);*/
+  /*  LOG_M("dft128a.m","dfta",ytmp,64,1,1);
+      LOG_M("dft128b.m","dftb",ytmp+16,64,1,1);*/
 
   for (i=0; i<16; i++) {
     bfly2_16(ytmpp,ytmpp+16,
@@ -3216,7 +3140,7 @@ void dft128(int16_t *x,int16_t *y,int scale)
 
   }
 
-  /*  write_output("dft128out.m","dft128",y,128,1,1);
+  /*  LOG_M("dft128out.m","dft128",y,128,1,1);
       exit(-1);*/
   _mm_empty();
   _m_empty();
@@ -3243,15 +3167,15 @@ void dft128(int16_t *x,int16_t *y,int scale)
   transpose4_ooff_simd256(x256+12,xtmp+6,8);
   transpose4_ooff_simd256(x256+14,xtmp+7,8);
   
-  /*  write_output("dft128ina_256.m","dftina",xtmp,64,1,1);
-  write_output("dft128inb_256.m","dftinb",xtmp+8,64,1,1);
+  /*  LOG_M("dft128ina_256.m","dftina",xtmp,64,1,1);
+  LOG_M("dft128inb_256.m","dftinb",xtmp+8,64,1,1);
   */
 
   dft64((int16_t*)(xtmp),(int16_t*)ytmp,1);
   dft64((int16_t*)(xtmp+8),(int16_t*)(ytmp+8),1);
   
-  /*write_output("dft128outa_256.m","dftouta",ytmp,64,1,1);
-  write_output("dft128outb_256.m","dftoutb",ytmp+8,64,1,1);
+  /*LOG_M("dft128outa_256.m","dftouta",ytmp,64,1,1);
+  LOG_M("dft128outb_256.m","dftoutb",ytmp+8,64,1,1);
   */
 
   for (i=0; i<8; i++) {
@@ -3286,7 +3210,7 @@ void dft128(int16_t *x,int16_t *y,int scale)
 
   }
   
-  /*  write_output("dft128.m","dft",y256,128,1,1);
+  /*  LOG_M("dft128.m","dft",y256,128,1,1);
       exit(-1);*/
 }
 
@@ -5487,9 +5411,9 @@ void dft1536(int16_t *input, int16_t *output, int scale)
     tmpo[2][i] = tmpo[2][i<<1];
     }*/
 
-  //  write_output("out0.m","o0",tmpo[0],2048,1,1);
-  //  write_output("out1.m","o1",tmpo[1],2048,1,1);
-  //  write_output("out2.m","o2",tmpo[2],2048,1,1);
+  //  LOG_M("out0.m","o0",tmpo[0],2048,1,1);
+  //  LOG_M("out1.m","o1",tmpo[1],2048,1,1);
+  //  LOG_M("out2.m","o2",tmpo[2],2048,1,1);
   for (i=0,i2=0; i<1024; i+=8,i2+=4)  {
     bfly3((simd_q15_t*)(&tmpo[0][i2]),(simd_q15_t*)(&tmpo[1][i2]),(simd_q15_t*)(&tmpo[2][i2]),
           (simd_q15_t*)(output+i),(simd_q15_t*)(output+1024+i),(simd_q15_t*)(output+2048+i),
@@ -5559,10 +5483,10 @@ void idft6144(int16_t *input, int16_t *output)
     tmpo[2][i] = tmpo[2][i<<1];
     }*/
 
-  //  write_output("in.m","in",input,6144,1,1);
-  //  write_output("out0.m","o0",tmpo[0],2048,1,1);
-  //  write_output("out1.m","o1",tmpo[1],2048,1,1);
-  //  write_output("out2.m","o2",tmpo[2],2048,1,1);
+  //  LOG_M("in.m","in",input,6144,1,1);
+  //  LOG_M("out0.m","o0",tmpo[0],2048,1,1);
+  //  LOG_M("out1.m","o1",tmpo[1],2048,1,1);
+  //  LOG_M("out2.m","o2",tmpo[2],2048,1,1);
 
   for (i=0,i2=0; i<4096; i+=8,i2+=4)  {
     ibfly3((simd_q15_t*)(&tmpo[0][i2]),(simd_q15_t*)(&tmpo[1][i2]),((simd_q15_t*)&tmpo[2][i2]),
@@ -5570,7 +5494,7 @@ void idft6144(int16_t *input, int16_t *output)
 	   (simd_q15_t*)(twa6144+i),(simd_q15_t*)(twb6144+i));
   }
 
-  //  write_output("out.m","out",output,6144,1,1);
+  //  LOG_M("out.m","out",output,6144,1,1);
   _mm_empty();
   _m_empty();
 
@@ -5600,9 +5524,9 @@ void dft6144(int16_t *input, int16_t *output)
     tmpo[2][i] = tmpo[2][i<<1];
     }*/
 
-  //  write_output("out0.m","o0",tmpo[0],2048,1,1);
-  //  write_output("out1.m","o1",tmpo[1],2048,1,1);
-  //  write_output("out2.m","o2",tmpo[2],2048,1,1);
+  //  LOG_M("out0.m","o0",tmpo[0],2048,1,1);
+  //  LOG_M("out1.m","o1",tmpo[1],2048,1,1);
+  //  LOG_M("out2.m","o2",tmpo[2],2048,1,1);
   for (i=0,i2=0; i<4096; i+=8,i2+=4)  {
     bfly3((simd_q15_t*)(&tmpo[0][i2]),(simd_q15_t*)(&tmpo[1][i2]),(simd_q15_t*)(&tmpo[2][i2]),
           (simd_q15_t*)(output+i),(simd_q15_t*)(output+4096+i),(simd_q15_t*)(output+8192+i),
@@ -5639,9 +5563,9 @@ void dft12288(int16_t *input, int16_t *output)
     tmpo[2][i] = tmpo[2][i<<1];
     }*/
 
-  //  write_output("out0.m","o0",tmpo[0],4096,1,1);
-  //  write_output("out1.m","o1",tmpo[1],4096,1,1);
-  //  write_output("out2.m","o2",tmpo[2],4096,1,1);
+  //  LOG_M("out0.m","o0",tmpo[0],4096,1,1);
+  //  LOG_M("out1.m","o1",tmpo[1],4096,1,1);
+  //  LOG_M("out2.m","o2",tmpo[2],4096,1,1);
   for (i=0,i2=0; i<8192; i+=8,i2+=4)  {
     bfly3((simd_q15_t*)(&tmpo[0][i2]),(simd_q15_t*)(&tmpo[1][i2]),(simd_q15_t*)(&tmpo[2][i2]),
           (simd_q15_t*)(output+i),(simd_q15_t*)(output+8192+i),(simd_q15_t*)(output+16384+i),
@@ -5670,10 +5594,10 @@ void idft12288(int16_t *input, int16_t *output)
   idft4096((int16_t*)(tmp[1]),(int16_t*)(tmpo[1]),1);
   idft4096((int16_t*)(tmp[2]),(int16_t*)(tmpo[2]),1);
   /*
-    write_output("in.m","in",input,12288,1,1);
-    write_output("out0.m","o0",tmpo[0],4096,1,1);
-    write_output("out1.m","o1",tmpo[1],4096,1,1);
-    write_output("out2.m","o2",tmpo[2],4096,1,1);
+    LOG_M("in.m","in",input,12288,1,1);
+    LOG_M("out0.m","o0",tmpo[0],4096,1,1);
+    LOG_M("out1.m","o1",tmpo[1],4096,1,1);
+    LOG_M("out2.m","o2",tmpo[2],4096,1,1);
   */
   for (i=0,i2=0; i<8192; i+=8,i2+=4)  {
     ibfly3((simd_q15_t*)(&tmpo[0][i2]),(simd_q15_t*)(&tmpo[1][i2]),((simd_q15_t*)&tmpo[2][i2]),
@@ -5684,7 +5608,7 @@ void idft12288(int16_t *input, int16_t *output)
   _mm_empty();
   _m_empty();
 
-  //  write_output("out.m","out",output,6144,1,1);
+  //  LOG_M("out.m","out",output,6144,1,1);
 }
 
 #include "twiddle18432.h"
@@ -5765,9 +5689,9 @@ void dft24576(int16_t *input, int16_t *output)
     tmpo[2][i] = tmpo[2][i<<1];
     }*/
 
-  //   write_output("out0.m","o0",tmpo[0],8192,1,1);
-  //    write_output("out1.m","o1",tmpo[1],8192,1,1);
-  //    write_output("out2.m","o2",tmpo[2],8192,1,1);
+  //   LOG_M("out0.m","o0",tmpo[0],8192,1,1);
+  //    LOG_M("out1.m","o1",tmpo[1],8192,1,1);
+  //    LOG_M("out2.m","o2",tmpo[2],8192,1,1);
   for (i=0,i2=0; i<16384; i+=8,i2+=4)  {
     bfly3((simd_q15_t*)(&tmpo[0][i2]),(simd_q15_t*)(&tmpo[1][i2]),(simd_q15_t*)(&tmpo[2][i2]),
           (simd_q15_t*)(output+i),(simd_q15_t*)(output+16384+i),(simd_q15_t*)(output+32768+i),
@@ -5777,7 +5701,7 @@ void dft24576(int16_t *input, int16_t *output)
   _mm_empty();
   _m_empty();
 
-  //  write_output("out.m","out",output,24576,1,1);
+  //  LOG_M("out.m","out",output,24576,1,1);
 }
 
 void idft24576(int16_t *input, int16_t *output)
@@ -5797,10 +5721,10 @@ void idft24576(int16_t *input, int16_t *output)
   idft8192((int16_t*)(tmp[2]),(int16_t*)(tmpo[2]),1);
   
   /*
-    write_output("in.m","in",input,24576,1,1);
-    write_output("out0.m","o0",tmpo[0],8192,1,1);
-    write_output("out1.m","o1",tmpo[1],8192,1,1);
-    write_output("out2.m","o2",tmpo[2],8192,1,1);
+    LOG_M("in.m","in",input,24576,1,1);
+    LOG_M("out0.m","o0",tmpo[0],8192,1,1);
+    LOG_M("out1.m","o1",tmpo[1],8192,1,1);
+    LOG_M("out2.m","o2",tmpo[2],8192,1,1);
   */
 
   for (i=0,i2=0; i<16384; i+=8,i2+=4)  {
@@ -5812,7 +5736,7 @@ void idft24576(int16_t *input, int16_t *output)
   _mm_empty();
   _m_empty();
 
-  //  write_output("out.m","out",output,24576,1,1);
+  //  LOG_M("out.m","out",output,24576,1,1);
 }
 
 ///  THIS SECTION IS FOR ALL PUSCH DFTS (i.e. radix 2^a * 3^b * 4^c * 5^d)
@@ -18996,9 +18920,9 @@ int main(int argc, char**argv)
   }
 
   printf("\n\n64-point (%f cycles, #trials %d)\n",(double)ts.diff/(double)ts.trials,ts.trials);
-  //  write_output("x64.m","x64",x,64,1,1);
-  write_output("y64.m","y64",y,64,1,1);
-  write_output("x64.m","x64",x,64,1,1);
+  //  LOG_M("x64.m","x64",x,64,1,1);
+  LOG_M("y64.m","y64",y,64,1,1);
+  LOG_M("x64.m","x64",x,64,1,1);
 
 /*
   printf("X: ");
@@ -19042,8 +18966,8 @@ int main(int argc, char**argv)
   }
 
   printf("\n\n128-point(%f cycles)\n",(double)ts.diff/(double)ts.trials);
-  write_output("y128.m","y128",y,128,1,1);
-  write_output("x128.m","x128",x,128,1,1);
+  LOG_M("y128.m","y128",y,128,1,1);
+  LOG_M("x128.m","x128",x,128,1,1);
 /*
   printf("X: ");
    for (i=0;i<32;i++)
@@ -19084,8 +19008,8 @@ int main(int argc, char**argv)
   }
 
   printf("\n\n256-point(%f cycles)\n",(double)ts.diff/(double)ts.trials);
-  write_output("y256.m","y256",y,256,1,1);
-  write_output("x256.m","x256",x,256,1,1);
+  LOG_M("y256.m","y256",y,256,1,1);
+  LOG_M("x256.m","x256",x,256,1,1);
 
   memset((void*)&x[0],0,512*sizeof(int32_t));
   for (i=2;i<302;i++) {
@@ -19109,8 +19033,8 @@ int main(int argc, char**argv)
   }
 
   printf("\n\n512-point(%f cycles)\n",(double)ts.diff/(double)ts.trials);
-  write_output("y512.m","y512",y,512,1,1);
-  write_output("x512.m","x512",x,512,1,1);
+  LOG_M("y512.m","y512",y,512,1,1);
+  LOG_M("x512.m","x512",x,512,1,1);
   /*
   printf("X: ");
   for (i=0;i<64;i++)
@@ -19144,8 +19068,8 @@ int main(int argc, char**argv)
   }
 
   printf("\n\n1024-point(%f cycles)\n",(double)ts.diff/(double)ts.trials);
-  write_output("y1024.m","y1024",y,1024,1,1);
-  write_output("x1024.m","x1024",x,1024,1,1);
+  LOG_M("y1024.m","y1024",y,1024,1,1);
+  LOG_M("x1024.m","x1024",x,1024,1,1);
 
   memset((void*)x,0,2048*sizeof(int32_t));
   for (i=2;i<1202;i++) {
@@ -19169,8 +19093,8 @@ int main(int argc, char**argv)
   }
 
   printf("\n\n2048-point(%f cycles)\n",(double)ts.diff/(double)ts.trials);
-  write_output("y2048.m","y2048",y,2048,1,1);
-  write_output("x2048.m","x2048",x,2048,1,1);
+  LOG_M("y2048.m","y2048",y,2048,1,1);
+  LOG_M("x2048.m","x2048",x,2048,1,1);
 
   memset((void*)x,0,2048*sizeof(int32_t));
   for (i=2;i<2402;i++) {
@@ -19194,8 +19118,8 @@ int main(int argc, char**argv)
   }
 
   printf("\n\n4096-point(%f cycles)\n",(double)ts.diff/(double)ts.trials);
-  write_output("y4096.m","y4096",y,4096,1,1);
-  write_output("x4096.m","x4096",x,4096,1,1);
+  LOG_M("y4096.m","y4096",y,4096,1,1);
+  LOG_M("x4096.m","x4096",x,4096,1,1);
 
   memset((void*)x,0,8192*sizeof(int32_t));
   for (i=2;i<4802;i++) {
@@ -19218,8 +19142,8 @@ int main(int argc, char**argv)
   }
 
   printf("\n\n8192-point(%f cycles)\n",(double)ts.diff/(double)ts.trials);
-  write_output("y8192.m","y8192",y,8192,1,1);
-  write_output("x8192.m","x8192",x,8192,1,1);
+  LOG_M("y8192.m","y8192",y,8192,1,1);
+  LOG_M("x8192.m","x8192",x,8192,1,1);
 
   return(0);
 }
diff --git a/openair1/PHY/TOOLS/tools_defs.h b/openair1/PHY/TOOLS/tools_defs.h
index e3b04babdc8f2320f3a319914fbaefbaa20f4a2a..e09cfb5ed84ee65a272f9ceb0f1b3bef2cb72215 100644
--- a/openair1/PHY/TOOLS/tools_defs.h
+++ b/openair1/PHY/TOOLS/tools_defs.h
@@ -282,17 +282,6 @@ void bit8_txmux(int32_t length,int32_t offset);
 
 void bit8_rxdemux(int32_t length,int32_t offset);
 
-/*!\fn int32_t write_output(const char *fname, const char *vname, void *data, int length, int dec, char format);
-\brief Write output file from signal data
-@param fname output file name
-@param vname  output vector name (for MATLAB/OCTAVE)
-@param data   point to data
-@param length length of data vector to output
-@param dec    decimation level
-@param format data format (0 = real 16-bit, 1 = complex 16-bit,2 real 32-bit, 3 complex 32-bit,4 = real 8-bit, 5 = complex 8-bit)
-*/
-int32_t write_output(const char *fname, const char *vname, void *data, int length, int dec, char format);
-
 void Zero_Buffer(void *,uint32_t);
 void Zero_Buffer_nommx(void *buf,uint32_t length);
 
diff --git a/openair1/SCHED/ru_procedures.c b/openair1/SCHED/ru_procedures.c
index 5f65f81fbea2aef7e58495ddcd74fcec1c9ccacf..073610ffd2a9e83ac4b89c81e23872c480c038fe 100644
--- a/openair1/SCHED/ru_procedures.c
+++ b/openair1/SCHED/ru_procedures.c
@@ -410,11 +410,6 @@ void feptx_prec(RU_t *ru) {
 			 aa);
 	}
       }
-#if 0
-      LOG_D(PHY,"feptx_prec: frame %d, subframe %d: txp (freq) %d dB\n",
-	    ru->proc.frame_tx,subframe,
-	    dB_fixed(signal_energy_nodc(ru->common.txdataF_BF[0],2*fp->symbols_per_tti*fp->ofdm_symbol_size)));
-#endif
     }
   }
 }
diff --git a/openair1/SCHED_UE/phy_procedures_lte_ue.c b/openair1/SCHED_UE/phy_procedures_lte_ue.c
index fdea58bbeed468bbbfd43d5f7e218b7b36a6cab2..b73379a2b98286af690b1d1455accf625e1ad7e1 100644
--- a/openair1/SCHED_UE/phy_procedures_lte_ue.c
+++ b/openair1/SCHED_UE/phy_procedures_lte_ue.c
@@ -99,20 +99,20 @@ void dump_dlsch(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uint8_t subf
           subframe,
           ue->transmission_mode[eNB_id]<7?0:ue->transmission_mode[eNB_id]);
 
-  write_output("rxsigF0.m","rxsF0", ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].rxdataF[0],2*nsymb*ue->frame_parms.ofdm_symbol_size,2,1);
-  write_output("rxsigF0_ext.m","rxsF0_ext", ue->pdsch_vars[ue->current_thread_id[subframe]][0]->rxdataF_ext[0],2*nsymb*ue->frame_parms.ofdm_symbol_size,1,1);
-  write_output("dlsch00_ch0_ext.m","dl00_ch0_ext", ue->pdsch_vars[ue->current_thread_id[subframe]][0]->dl_ch_estimates_ext[0],300*nsymb,1,1);
+  LOG_M("rxsigF0.m","rxsF0", ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].rxdataF[0],2*nsymb*ue->frame_parms.ofdm_symbol_size,2,1);
+  LOG_M("rxsigF0_ext.m","rxsF0_ext", ue->pdsch_vars[ue->current_thread_id[subframe]][0]->rxdataF_ext[0],2*nsymb*ue->frame_parms.ofdm_symbol_size,1,1);
+  LOG_M("dlsch00_ch0_ext.m","dl00_ch0_ext", ue->pdsch_vars[ue->current_thread_id[subframe]][0]->dl_ch_estimates_ext[0],300*nsymb,1,1);
   /*
-    write_output("dlsch01_ch0_ext.m","dl01_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[1],300*12,1,1);
-    write_output("dlsch10_ch0_ext.m","dl10_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[2],300*12,1,1);
-    write_output("dlsch11_ch0_ext.m","dl11_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[3],300*12,1,1);
-    write_output("dlsch_rho.m","dl_rho",pdsch_vars[0]->rho[0],300*12,1,1);
+    LOG_M("dlsch01_ch0_ext.m","dl01_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[1],300*12,1,1);
+    LOG_M("dlsch10_ch0_ext.m","dl10_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[2],300*12,1,1);
+    LOG_M("dlsch11_ch0_ext.m","dl11_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[3],300*12,1,1);
+    LOG_M("dlsch_rho.m","dl_rho",pdsch_vars[0]->rho[0],300*12,1,1);
   */
-  write_output("dlsch_rxF_comp0.m","dlsch0_rxF_comp0", ue->pdsch_vars[ue->current_thread_id[subframe]][0]->rxdataF_comp0[0],300*12,1,1);
-  write_output("dlsch_rxF_llr.m","dlsch_llr", ue->pdsch_vars[ue->current_thread_id[subframe]][0]->llr[0],coded_bits_per_codeword,1,0);
+  LOG_M("dlsch_rxF_comp0.m","dlsch0_rxF_comp0", ue->pdsch_vars[ue->current_thread_id[subframe]][0]->rxdataF_comp0[0],300*12,1,1);
+  LOG_M("dlsch_rxF_llr.m","dlsch_llr", ue->pdsch_vars[ue->current_thread_id[subframe]][0]->llr[0],coded_bits_per_codeword,1,0);
 
-  write_output("dlsch_mag1.m","dlschmag1",ue->pdsch_vars[ue->current_thread_id[subframe]][0]->dl_ch_mag0,300*12,1,1);
-  write_output("dlsch_mag2.m","dlschmag2",ue->pdsch_vars[ue->current_thread_id[subframe]][0]->dl_ch_magb0,300*12,1,1);
+  LOG_M("dlsch_mag1.m","dlschmag1",ue->pdsch_vars[ue->current_thread_id[subframe]][0]->dl_ch_mag0,300*12,1,1);
+  LOG_M("dlsch_mag2.m","dlschmag2",ue->pdsch_vars[ue->current_thread_id[subframe]][0]->dl_ch_magb0,300*12,1,1);
 }
 
 void dump_dlsch_SI(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uint8_t subframe)
@@ -139,22 +139,22 @@ void dump_dlsch_SI(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uint8_t s
         ue->pdcch_vars[0%RX_NB_TH][eNB_id]->num_pdcch_symbols,
         coded_bits_per_codeword);
 
-  write_output("rxsig0.m","rxs0", &ue->common_vars.rxdata[0][subframe*ue->frame_parms.samples_per_tti],ue->frame_parms.samples_per_tti,1,1);
+  LOG_M("rxsig0.m","rxs0", &ue->common_vars.rxdata[0][subframe*ue->frame_parms.samples_per_tti],ue->frame_parms.samples_per_tti,1,1);
 
-  write_output("rxsigF0.m","rxsF0", ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].rxdataF[0],nsymb*ue->frame_parms.ofdm_symbol_size,1,1);
-  write_output("rxsigF0_ext.m","rxsF0_ext", ue->pdsch_vars_SI[0]->rxdataF_ext[0],2*nsymb*ue->frame_parms.ofdm_symbol_size,1,1);
-  write_output("dlsch00_ch0_ext.m","dl00_ch0_ext", ue->pdsch_vars_SI[0]->dl_ch_estimates_ext[0],ue->frame_parms.N_RB_DL*12*nsymb,1,1);
+  LOG_M("rxsigF0.m","rxsF0", ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].rxdataF[0],nsymb*ue->frame_parms.ofdm_symbol_size,1,1);
+  LOG_M("rxsigF0_ext.m","rxsF0_ext", ue->pdsch_vars_SI[0]->rxdataF_ext[0],2*nsymb*ue->frame_parms.ofdm_symbol_size,1,1);
+  LOG_M("dlsch00_ch0_ext.m","dl00_ch0_ext", ue->pdsch_vars_SI[0]->dl_ch_estimates_ext[0],ue->frame_parms.N_RB_DL*12*nsymb,1,1);
   /*
-    write_output("dlsch01_ch0_ext.m","dl01_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[1],300*12,1,1);
-    write_output("dlsch10_ch0_ext.m","dl10_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[2],300*12,1,1);
-    write_output("dlsch11_ch0_ext.m","dl11_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[3],300*12,1,1);
-    write_output("dlsch_rho.m","dl_rho",pdsch_vars[0]->rho[0],300*12,1,1);
+    LOG_M("dlsch01_ch0_ext.m","dl01_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[1],300*12,1,1);
+    LOG_M("dlsch10_ch0_ext.m","dl10_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[2],300*12,1,1);
+    LOG_M("dlsch11_ch0_ext.m","dl11_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[3],300*12,1,1);
+    LOG_M("dlsch_rho.m","dl_rho",pdsch_vars[0]->rho[0],300*12,1,1);
   */
-  write_output("dlsch_rxF_comp0.m","dlsch0_rxF_comp0", ue->pdsch_vars_SI[0]->rxdataF_comp0[0],ue->frame_parms.N_RB_DL*12*nsymb,1,1);
-  write_output("dlsch_rxF_llr.m","dlsch_llr", ue->pdsch_vars_SI[0]->llr[0],coded_bits_per_codeword,1,0);
+  LOG_M("dlsch_rxF_comp0.m","dlsch0_rxF_comp0", ue->pdsch_vars_SI[0]->rxdataF_comp0[0],ue->frame_parms.N_RB_DL*12*nsymb,1,1);
+  LOG_M("dlsch_rxF_llr.m","dlsch_llr", ue->pdsch_vars_SI[0]->llr[0],coded_bits_per_codeword,1,0);
 
-  write_output("dlsch_mag1.m","dlschmag1",ue->pdsch_vars_SI[0]->dl_ch_mag0,300*nsymb,1,1);
-  write_output("dlsch_mag2.m","dlschmag2",ue->pdsch_vars_SI[0]->dl_ch_magb0,300*nsymb,1,1);
+  LOG_M("dlsch_mag1.m","dlschmag1",ue->pdsch_vars_SI[0]->dl_ch_mag0,300*nsymb,1,1);
+  LOG_M("dlsch_mag2.m","dlschmag2",ue->pdsch_vars_SI[0]->dl_ch_magb0,300*nsymb,1,1);
   sleep(1);
   exit(-1);
 }
@@ -241,20 +241,20 @@ void dump_dlsch_ra(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uint8_t s
         ue->pdcch_vars[0%RX_NB_TH][eNB_id]->num_pdcch_symbols,
         coded_bits_per_codeword);
 
-  write_output("rxsigF0.m","rxsF0", ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].rxdataF[0],2*12*ue->frame_parms.ofdm_symbol_size,2,1);
-  write_output("rxsigF0_ext.m","rxsF0_ext", ue->pdsch_vars_ra[0]->rxdataF_ext[0],2*12*ue->frame_parms.ofdm_symbol_size,1,1);
-  write_output("dlsch00_ch0_ext.m","dl00_ch0_ext", ue->pdsch_vars_ra[0]->dl_ch_estimates_ext[0],300*nsymb,1,1);
+  LOG_M("rxsigF0.m","rxsF0", ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].rxdataF[0],2*12*ue->frame_parms.ofdm_symbol_size,2,1);
+  LOG_M("rxsigF0_ext.m","rxsF0_ext", ue->pdsch_vars_ra[0]->rxdataF_ext[0],2*12*ue->frame_parms.ofdm_symbol_size,1,1);
+  LOG_M("dlsch00_ch0_ext.m","dl00_ch0_ext", ue->pdsch_vars_ra[0]->dl_ch_estimates_ext[0],300*nsymb,1,1);
   /*
-    write_output("dlsch01_ch0_ext.m","dl01_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[1],300*12,1,1);
-    write_output("dlsch10_ch0_ext.m","dl10_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[2],300*12,1,1);
-    write_output("dlsch11_ch0_ext.m","dl11_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[3],300*12,1,1);
-    write_output("dlsch_rho.m","dl_rho",pdsch_vars[0]->rho[0],300*12,1,1);
+    LOG_M("dlsch01_ch0_ext.m","dl01_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[1],300*12,1,1);
+    LOG_M("dlsch10_ch0_ext.m","dl10_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[2],300*12,1,1);
+    LOG_M("dlsch11_ch0_ext.m","dl11_ch0_ext",pdsch_vars[0]->dl_ch_estimates_ext[3],300*12,1,1);
+    LOG_M("dlsch_rho.m","dl_rho",pdsch_vars[0]->rho[0],300*12,1,1);
   */
-  write_output("dlsch_rxF_comp0.m","dlsch0_rxF_comp0", ue->pdsch_vars_ra[0]->rxdataF_comp0[0],300*nsymb,1,1);
-  write_output("dlsch_rxF_llr.m","dlsch_llr", ue->pdsch_vars_ra[0]->llr[0],coded_bits_per_codeword,1,0);
+  LOG_M("dlsch_rxF_comp0.m","dlsch0_rxF_comp0", ue->pdsch_vars_ra[0]->rxdataF_comp0[0],300*nsymb,1,1);
+  LOG_M("dlsch_rxF_llr.m","dlsch_llr", ue->pdsch_vars_ra[0]->llr[0],coded_bits_per_codeword,1,0);
 
-  write_output("dlsch_mag1.m","dlschmag1",ue->pdsch_vars_ra[0]->dl_ch_mag0,300*nsymb,1,1);
-  write_output("dlsch_mag2.m","dlschmag2",ue->pdsch_vars_ra[0]->dl_ch_magb0,300*nsymb,1,1);
+  LOG_M("dlsch_mag1.m","dlschmag1",ue->pdsch_vars_ra[0]->dl_ch_mag0,300*nsymb,1,1);
+  LOG_M("dlsch_mag2.m","dlschmag2",ue->pdsch_vars_ra[0]->dl_ch_magb0,300*nsymb,1,1);
 }
 
 void phy_reset_ue(module_id_t Mod_id,uint8_t CC_id,uint8_t eNB_index)
@@ -1354,7 +1354,7 @@ void ulsch_common_procedures(PHY_VARS_UE *ue, UE_rxtx_proc_t *proc, uint8_t empt
     if( (crash == 1) && (subframe_tx == 0) )
     {
       LOG_E(PHY,"***** DUMP TX Signal [ulsch_start %d] *****\n",ulsch_start);
-      write_output("txBuff.m","txSignal",&ue->common_vars.txdata[aa][ulsch_start],frame_parms->samples_per_tti,1,1);
+      LOG_M("txBuff.m","txSignal",&ue->common_vars.txdata[aa][ulsch_start],frame_parms->samples_per_tti,1,1);
     }
     */
 
@@ -2737,15 +2737,15 @@ void ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc, uin
     LOG_I(PHY,"[UE %d] rx_offset %d\n",ue->Mod_id,ue->rx_offset);
 
 
-    write_output("rxsig0.m","rxs0", ue->common_vars.rxdata[0],ue->frame_parms.samples_per_tti,1,1);
+    LOG_M("rxsig0.m","rxs0", ue->common_vars.rxdata[0],ue->frame_parms.samples_per_tti,1,1);
 
-    write_output("H00.m","h00",&(ue->common_vars.dl_ch_estimates[0][0][0]),((ue->frame_parms.Ncp==0)?7:6)*(ue->frame_parms.ofdm_symbol_size),1,1);
-    write_output("H10.m","h10",&(ue->common_vars.dl_ch_estimates[0][2][0]),((ue->frame_parms.Ncp==0)?7:6)*(ue->frame_parms.ofdm_symbol_size),1,1);
+    LOG_M("H00.m","h00",&(ue->common_vars.dl_ch_estimates[0][0][0]),((ue->frame_parms.Ncp==0)?7:6)*(ue->frame_parms.ofdm_symbol_size),1,1);
+    LOG_M("H10.m","h10",&(ue->common_vars.dl_ch_estimates[0][2][0]),((ue->frame_parms.Ncp==0)?7:6)*(ue->frame_parms.ofdm_symbol_size),1,1);
 
-    write_output("rxsigF0.m","rxsF0", ue->common_vars.rxdataF[0],8*ue->frame_parms.ofdm_symbol_size,1,1);
-    write_output("PBCH_rxF0_ext.m","pbch0_ext",ue->pbch_vars[0]->rxdataF_ext[0],12*4*6,1,1);
-    write_output("PBCH_rxF0_comp.m","pbch0_comp",ue->pbch_vars[0]->rxdataF_comp[0],12*4*6,1,1);
-    write_output("PBCH_rxF_llr.m","pbch_llr",ue->pbch_vars[0]->llr,(ue->frame_parms.Ncp==0) ? 1920 : 1728,1,4);
+    LOG_M("rxsigF0.m","rxsF0", ue->common_vars.rxdataF[0],8*ue->frame_parms.ofdm_symbol_size,1,1);
+    LOG_M("PBCH_rxF0_ext.m","pbch0_ext",ue->pbch_vars[0]->rxdataF_ext[0],12*4*6,1,1);
+    LOG_M("PBCH_rxF0_comp.m","pbch0_comp",ue->pbch_vars[0]->rxdataF_comp[0],12*4*6,1,1);
+    LOG_M("PBCH_rxF_llr.m","pbch_llr",ue->pbch_vars[0]->llr,(ue->frame_parms.Ncp==0) ? 1920 : 1728,1,4);
     exit(-1);
     */
 
@@ -3598,16 +3598,14 @@ void ue_dlsch_procedures(PHY_VARS_UE *ue,
       stop_meas(&ue->dlsch_unscrambling_stats);
 #endif
       
-#if 0
-      LOG_I(PHY," ------ start turbo decoder for AbsSubframe %d.%d / %d  ------  \n", frame_rx, subframe_rx, harq_pid);
-      LOG_I(PHY,"start turbo decode for CW 0 for AbsSubframe %d.%d / %d --> nb_rb %d \n", frame_rx, subframe_rx, harq_pid, dlsch0->harq_processes[harq_pid]->nb_rb);
-      LOG_I(PHY,"start turbo decode for CW 0 for AbsSubframe %d.%d / %d  --> rb_alloc_even %x \n", frame_rx, subframe_rx, harq_pid, dlsch0->harq_processes[harq_pid]->rb_alloc_even);
-      LOG_I(PHY,"start turbo decode for CW 0 for AbsSubframe %d.%d / %d  --> Qm %d \n", frame_rx, subframe_rx, harq_pid, dlsch0->harq_processes[harq_pid]->Qm);
-      LOG_I(PHY,"start turbo decode for CW 0 for AbsSubframe %d.%d / %d  --> Nl %d \n", frame_rx, subframe_rx, harq_pid, dlsch0->harq_processes[harq_pid]->Nl);
-      LOG_I(PHY,"start turbo decode for CW 0 for AbsSubframe %d.%d / %d  --> G  %d \n", frame_rx, subframe_rx, harq_pid, dlsch0->harq_processes[harq_pid]->G);
-      LOG_I(PHY,"start turbo decode for CW 0 for AbsSubframe %d.%d / %d  --> Kmimo  %d \n", frame_rx, subframe_rx, harq_pid, dlsch0->Kmimo);
-      LOG_I(PHY,"start turbo decode for CW 0 for AbsSubframe %d.%d / %d  --> Pdcch Sym  %d \n", frame_rx, subframe_rx, harq_pid, ue->pdcch_vars[ue->current_thread_id[subframe_rx]][eNB_id]->num_pdcch_symbols);
-#endif
+      LOG_D(PHY," ------ start turbo decoder for AbsSubframe %d.%d / %d  ------  \n", frame_rx, subframe_rx, harq_pid);
+      LOG_D(PHY,"start turbo decode for CW 0 for AbsSubframe %d.%d / %d --> nb_rb %d \n", frame_rx, subframe_rx, harq_pid, dlsch0->harq_processes[harq_pid]->nb_rb);
+      LOG_D(PHY,"start turbo decode for CW 0 for AbsSubframe %d.%d / %d  --> rb_alloc_even %x \n", frame_rx, subframe_rx, harq_pid, dlsch0->harq_processes[harq_pid]->rb_alloc_even);
+      LOG_D(PHY,"start turbo decode for CW 0 for AbsSubframe %d.%d / %d  --> Qm %d \n", frame_rx, subframe_rx, harq_pid, dlsch0->harq_processes[harq_pid]->Qm);
+      LOG_D(PHY,"start turbo decode for CW 0 for AbsSubframe %d.%d / %d  --> Nl %d \n", frame_rx, subframe_rx, harq_pid, dlsch0->harq_processes[harq_pid]->Nl);
+      LOG_D(PHY,"start turbo decode for CW 0 for AbsSubframe %d.%d / %d  --> G  %d \n", frame_rx, subframe_rx, harq_pid, dlsch0->harq_processes[harq_pid]->G);
+      LOG_D(PHY,"start turbo decode for CW 0 for AbsSubframe %d.%d / %d  --> Kmimo  %d \n", frame_rx, subframe_rx, harq_pid, dlsch0->Kmimo);
+      LOG_D(PHY,"start turbo decode for CW 0 for AbsSubframe %d.%d / %d  --> Pdcch Sym  %d \n", frame_rx, subframe_rx, harq_pid, ue->pdcch_vars[ue->current_thread_id[subframe_rx]][eNB_id]->num_pdcch_symbols);
       
 #if UE_TIMING_TRACE
       start_meas(&ue->dlsch_decoding_stats[ue->current_thread_id[subframe_rx]]);
@@ -3664,15 +3662,13 @@ void ue_dlsch_procedures(PHY_VARS_UE *ue,
           stop_meas(&ue->dlsch_unscrambling_stats);
 #endif
 	  
-#if 0
-          LOG_I(PHY,"start turbo decode for CW 1 for AbsSubframe %d.%d / %d --> nb_rb %d \n", frame_rx, subframe_rx, harq_pid, dlsch1->harq_processes[harq_pid]->nb_rb);
-          LOG_I(PHY,"start turbo decode for CW 1 for AbsSubframe %d.%d / %d  --> rb_alloc_even %x \n", frame_rx, subframe_rx, harq_pid, dlsch1->harq_processes[harq_pid]->rb_alloc_even);
-          LOG_I(PHY,"start turbo decode for CW 1 for AbsSubframe %d.%d / %d  --> Qm %d \n", frame_rx, subframe_rx, harq_pid, dlsch1->harq_processes[harq_pid]->Qm);
-          LOG_I(PHY,"start turbo decode for CW 1 for AbsSubframe %d.%d / %d  --> Nl %d \n", frame_rx, subframe_rx, harq_pid, dlsch1->harq_processes[harq_pid]->Nl);
-          LOG_I(PHY,"start turbo decode for CW 1 for AbsSubframe %d.%d / %d  --> G  %d \n", frame_rx, subframe_rx, harq_pid, dlsch1->harq_processes[harq_pid]->G);
-          LOG_I(PHY,"start turbo decode for CW 1 for AbsSubframe %d.%d / %d  --> Kmimo  %d \n", frame_rx, subframe_rx, harq_pid, dlsch1->Kmimo);
-          LOG_I(PHY,"start turbo decode for CW 1 for AbsSubframe %d.%d / %d  --> Pdcch Sym  %d \n", frame_rx, subframe_rx, harq_pid, ue->pdcch_vars[ue->current_thread_id[subframe_rx]][eNB_id]->num_pdcch_symbols);
-#endif
+          LOG_D(PHY,"start turbo decode for CW 1 for AbsSubframe %d.%d / %d --> nb_rb %d \n", frame_rx, subframe_rx, harq_pid, dlsch1->harq_processes[harq_pid]->nb_rb);
+          LOG_D(PHY,"start turbo decode for CW 1 for AbsSubframe %d.%d / %d  --> rb_alloc_even %x \n", frame_rx, subframe_rx, harq_pid, dlsch1->harq_processes[harq_pid]->rb_alloc_even);
+          LOG_D(PHY,"start turbo decode for CW 1 for AbsSubframe %d.%d / %d  --> Qm %d \n", frame_rx, subframe_rx, harq_pid, dlsch1->harq_processes[harq_pid]->Qm);
+          LOG_D(PHY,"start turbo decode for CW 1 for AbsSubframe %d.%d / %d  --> Nl %d \n", frame_rx, subframe_rx, harq_pid, dlsch1->harq_processes[harq_pid]->Nl);
+          LOG_D(PHY,"start turbo decode for CW 1 for AbsSubframe %d.%d / %d  --> G  %d \n", frame_rx, subframe_rx, harq_pid, dlsch1->harq_processes[harq_pid]->G);
+          LOG_D(PHY,"start turbo decode for CW 1 for AbsSubframe %d.%d / %d  --> Kmimo  %d \n", frame_rx, subframe_rx, harq_pid, dlsch1->Kmimo);
+          LOG_D(PHY,"start turbo decode for CW 1 for AbsSubframe %d.%d / %d  --> Pdcch Sym  %d \n", frame_rx, subframe_rx, harq_pid, ue->pdcch_vars[ue->current_thread_id[subframe_rx]][eNB_id]->num_pdcch_symbols);
 	  
 #if UE_TIMING_TRACE
           start_meas(&ue->dlsch_decoding_stats[ue->current_thread_id[subframe_rx]]);
@@ -4417,11 +4413,9 @@ int phy_procedures_slot_parallelization_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *pr
     /**** End Subframe FE Processing ****/
 
 
-#if 0
     //Trigger LLR parallelized for Slot 1
-    proc->dci_slot0_available=1;
-    printf("Set available dci slot0 to 1 AbsSubframe %d.%d \n",frame_rx%1024,subframe_rx);
-#endif
+    //proc->dci_slot0_available=1;
+    //printf("Set available dci slot0 to 1 AbsSubframe %d.%d \n",frame_rx%1024,subframe_rx);
 
     /**** Pdsch Procedure Slot0 ****/
     // start main thread for Pdsch Procedure (slot0)
@@ -5012,19 +5006,19 @@ int phy_procedures_UE_RX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,
 
 #if 0
   if(subframe_rx==5 &&  ue->dlsch[ue->current_thread_id[subframe_rx]][eNB_id][0]->harq_processes[ue->dlsch[ue->current_thread_id[subframe_rx]][eNB_id][0]->current_harq_pid]->nb_rb > 20){
-       //write_output("decoder_llr.m","decllr",dlsch_llr,G,1,0);
-       //write_output("llr.m","llr",  &ue->pdsch_vars[eNB_id]->llr[0][0],(14*nb_rb*12*dlsch1_harq->Qm) - 4*(nb_rb*4*dlsch1_harq->Qm),1,0);
+       //LOG_M("decoder_llr.m","decllr",dlsch_llr,G,1,0);
+       //LOG_M("llr.m","llr",  &ue->pdsch_vars[eNB_id]->llr[0][0],(14*nb_rb*12*dlsch1_harq->Qm) - 4*(nb_rb*4*dlsch1_harq->Qm),1,0);
 
-       write_output("rxdataF0_current.m"    , "rxdataF0", &ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe_rx]].rxdataF[0][0],14*ue->frame_parms.ofdm_symbol_size,1,1);
-       //write_output("rxdataF0_previous.m"    , "rxdataF0_prev_sss", &ue->common_vars.common_vars_rx_data_per_thread[next_thread_id].rxdataF[0][0],14*ue->frame_parms.ofdm_symbol_size,1,1);
+       LOG_M("rxdataF0_current.m"    , "rxdataF0", &ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe_rx]].rxdataF[0][0],14*ue->frame_parms.ofdm_symbol_size,1,1);
+       //LOG_M("rxdataF0_previous.m"    , "rxdataF0_prev_sss", &ue->common_vars.common_vars_rx_data_per_thread[next_thread_id].rxdataF[0][0],14*ue->frame_parms.ofdm_symbol_size,1,1);
 
-       //write_output("rxdataF0_previous.m"    , "rxdataF0_prev", &ue->common_vars.common_vars_rx_data_per_thread[next_thread_id].rxdataF[0][0],14*ue->frame_parms.ofdm_symbol_size,1,1);
+       //LOG_M("rxdataF0_previous.m"    , "rxdataF0_prev", &ue->common_vars.common_vars_rx_data_per_thread[next_thread_id].rxdataF[0][0],14*ue->frame_parms.ofdm_symbol_size,1,1);
 
-       write_output("dl_ch_estimates.m", "dl_ch_estimates_sfn5", &ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe_rx]].dl_ch_estimates[0][0][0],14*ue->frame_parms.ofdm_symbol_size,1,1);
-       write_output("dl_ch_estimates_ext.m", "dl_ch_estimatesExt_sfn5", &ue->pdsch_vars[ue->current_thread_id[subframe_rx]][0]->dl_ch_estimates_ext[0][0],14*ue->frame_parms.N_RB_DL*12,1,1);
-       write_output("rxdataF_comp00.m","rxdataF_comp00",         &ue->pdsch_vars[ue->current_thread_id[subframe_rx]][0]->rxdataF_comp0[0][0],14*ue->frame_parms.N_RB_DL*12,1,1);
-       //write_output("magDLFirst.m", "magDLFirst", &phy_vars_ue->pdsch_vars[ue->current_thread_id[subframe_rx]][0]->dl_ch_mag0[0][0],14*frame_parms->N_RB_DL*12,1,1);
-       //write_output("magDLSecond.m", "magDLSecond", &phy_vars_ue->pdsch_vars[ue->current_thread_id[subframe_rx]][0]->dl_ch_magb0[0][0],14*frame_parms->N_RB_DL*12,1,1);
+       LOG_M("dl_ch_estimates.m", "dl_ch_estimates_sfn5", &ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe_rx]].dl_ch_estimates[0][0][0],14*ue->frame_parms.ofdm_symbol_size,1,1);
+       LOG_M("dl_ch_estimates_ext.m", "dl_ch_estimatesExt_sfn5", &ue->pdsch_vars[ue->current_thread_id[subframe_rx]][0]->dl_ch_estimates_ext[0][0],14*ue->frame_parms.N_RB_DL*12,1,1);
+       LOG_M("rxdataF_comp00.m","rxdataF_comp00",         &ue->pdsch_vars[ue->current_thread_id[subframe_rx]][0]->rxdataF_comp0[0][0],14*ue->frame_parms.N_RB_DL*12,1,1);
+       //LOG_M("magDLFirst.m", "magDLFirst", &phy_vars_ue->pdsch_vars[ue->current_thread_id[subframe_rx]][0]->dl_ch_mag0[0][0],14*frame_parms->N_RB_DL*12,1,1);
+       //LOG_M("magDLSecond.m", "magDLSecond", &phy_vars_ue->pdsch_vars[ue->current_thread_id[subframe_rx]][0]->dl_ch_magb0[0][0],14*frame_parms->N_RB_DL*12,1,1);
 
        AssertFatal (0,"");
   }
diff --git a/openair1/SIMULATION/LTE_PHY/dlsim.c b/openair1/SIMULATION/LTE_PHY/dlsim.c
index 77b8c0e674d3b09cad69be0fcb6048abc7f54f46..f269a6fe5895ca78ff37627fdf368c9757affc55 100644
--- a/openair1/SIMULATION/LTE_PHY/dlsim.c
+++ b/openair1/SIMULATION/LTE_PHY/dlsim.c
@@ -185,8 +185,8 @@ void DL_channel(RU_t *ru,PHY_VARS_UE *UE,uint subframe,int awgn_flag,double SNR,
       // fill in perfect channel estimates
       freq_channel(eNB2UE[round],UE->frame_parms.N_RB_DL,12*UE->frame_parms.N_RB_DL + 1);
       /*
-	write_output("channel.m","ch",eNB2UE[round]->ch[0],eNB2UE[round]->channel_length,1,8);
-	write_output("channelF.m","chF",eNB2UE[round]->chF[0],12*UE->frame_parms.N_RB_DL + 1,1,8);
+	LOG_M("channel.m","ch",eNB2UE[round]->ch[0],eNB2UE[round]->channel_length,1,8);
+	LOG_M("channelF.m","chF",eNB2UE[round]->chF[0],12*UE->frame_parms.N_RB_DL + 1,1,8);
       */
     }
   }
@@ -1662,13 +1662,13 @@ int main(int argc, char **argv)
             if (n_frames==1) {
               printf("tx_lev = %d (%d dB)\n",tx_lev,tx_lev_dB);
 
-              write_output("txsig0.m","txs0", &ru->common.txdata[0][subframe* eNB->frame_parms.samples_per_tti], eNB->frame_parms.samples_per_tti,1,1);
+              LOG_M("txsig0.m","txs0", &ru->common.txdata[0][subframe* eNB->frame_parms.samples_per_tti], eNB->frame_parms.samples_per_tti,1,1);
 
               if (transmission_mode<7) {
-	        write_output("txsigF0.m","txsF0x", &ru->common.txdataF_BF[0][subframe*nsymb*eNB->frame_parms.ofdm_symbol_size],nsymb*eNB->frame_parms.ofdm_symbol_size,1,1);
+	        LOG_M("txsigF0.m","txsF0x", &ru->common.txdataF_BF[0][subframe*nsymb*eNB->frame_parms.ofdm_symbol_size],nsymb*eNB->frame_parms.ofdm_symbol_size,1,1);
               } else if (transmission_mode == 7) {
-                write_output("txsigF0.m","txsF0", &ru->common.txdataF_BF[5][subframe*nsymb*eNB->frame_parms.ofdm_symbol_size],nsymb*eNB->frame_parms.ofdm_symbol_size,1,1);
-                write_output("txsigF0_BF.m","txsF0_BF", &ru->common.txdataF_BF[0][0],eNB->frame_parms.ofdm_symbol_size,1,1);
+                LOG_M("txsigF0.m","txsF0", &ru->common.txdataF_BF[5][subframe*nsymb*eNB->frame_parms.ofdm_symbol_size],nsymb*eNB->frame_parms.ofdm_symbol_size,1,1);
+                LOG_M("txsigF0_BF.m","txsF0_BF", &ru->common.txdataF_BF[0][0],eNB->frame_parms.ofdm_symbol_size,1,1);
               }
             }
 	  }
@@ -1734,14 +1734,14 @@ int main(int argc, char **argv)
 	    printf("DCI not received\n");
 	    dci_errors[round]++;
 
-	    write_output("pdcchF0_ext.m","pdcchF_ext", UE->pdcch_vars[0][eNB_id]->rxdataF_ext[0],2*3*UE->frame_parms.ofdm_symbol_size,1,1);
-	    write_output("pdcch00_ch0_ext.m","pdcch00_ch0_ext",UE->pdcch_vars[0][eNB_id]->dl_ch_estimates_ext[0],300*3,1,1);
+	    LOG_M("pdcchF0_ext.m","pdcchF_ext", UE->pdcch_vars[0][eNB_id]->rxdataF_ext[0],2*3*UE->frame_parms.ofdm_symbol_size,1,1);
+	    LOG_M("pdcch00_ch0_ext.m","pdcch00_ch0_ext",UE->pdcch_vars[0][eNB_id]->dl_ch_estimates_ext[0],300*3,1,1);
 
-	    write_output("pdcch_rxF_comp0.m","pdcch0_rxF_comp0",UE->pdcch_vars[0][eNB_id]->rxdataF_comp[0],4*300,1,1);
-	    write_output("pdcch_rxF_llr.m","pdcch_llr",UE->pdcch_vars[0][eNB_id]->llr,2400,1,4);
+	    LOG_M("pdcch_rxF_comp0.m","pdcch0_rxF_comp0",UE->pdcch_vars[0][eNB_id]->rxdataF_comp[0],4*300,1,1);
+	    LOG_M("pdcch_rxF_llr.m","pdcch_llr",UE->pdcch_vars[0][eNB_id]->llr,2400,1,4);
 
-	    write_output("rxsig0.m","rxs0", &UE->common_vars.rxdata[0][0],10*UE->frame_parms.samples_per_tti,1,1);
-	    write_output("rxsigF0.m","rxsF0", &UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].rxdataF[0][0],UE->frame_parms.ofdm_symbol_size*nsymb,1,1);
+	    LOG_M("rxsig0.m","rxs0", &UE->common_vars.rxdata[0][0],10*UE->frame_parms.samples_per_tti,1,1);
+	    LOG_M("rxsigF0.m","rxsF0", &UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].rxdataF[0][0],UE->frame_parms.ofdm_symbol_size*nsymb,1,1);
 
 
 	    exit(-1);
@@ -1774,38 +1774,38 @@ int main(int argc, char **argv)
 		*/
 	      }
 
-	    write_output("dlsch_ber_bit.m","ber_bit",uncoded_ber_bit,coded_bits_per_codeword,1,0);
-	    write_output("ch0.m","ch0",eNB2UE[0]->ch[0],eNB2UE[0]->channel_length,1,8);
+	    LOG_M("dlsch_ber_bit.m","ber_bit",uncoded_ber_bit,coded_bits_per_codeword,1,0);
+	    LOG_M("ch0.m","ch0",eNB2UE[0]->ch[0],eNB2UE[0]->channel_length,1,8);
 
 	    if (eNB->frame_parms.nb_antennas_tx>1)
-	      write_output("ch1.m","ch1",eNB2UE[0]->ch[eNB->frame_parms.nb_antennas_rx],eNB2UE[0]->channel_length,1,8);
+	      LOG_M("ch1.m","ch1",eNB2UE[0]->ch[eNB->frame_parms.nb_antennas_rx],eNB2UE[0]->channel_length,1,8);
 
 	    //common vars
-	    write_output("rxsig0.m","rxs0", &UE->common_vars.rxdata[0][0],10*UE->frame_parms.samples_per_tti,1,1);
+	    LOG_M("rxsig0.m","rxs0", &UE->common_vars.rxdata[0][0],10*UE->frame_parms.samples_per_tti,1,1);
 
-	    write_output("rxsigF0.m","rxsF0", &UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].rxdataF[0][0],UE->frame_parms.ofdm_symbol_size*nsymb,1,1);
+	    LOG_M("rxsigF0.m","rxsF0", &UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].rxdataF[0][0],UE->frame_parms.ofdm_symbol_size*nsymb,1,1);
 
 	    if (UE->frame_parms.nb_antennas_rx>1) {
-	      write_output("rxsig1.m","rxs1", UE->common_vars.rxdata[1],UE->frame_parms.samples_per_tti,1,1);
-	      write_output("rxsigF1.m","rxsF1", UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].rxdataF[1],UE->frame_parms.ofdm_symbol_size*nsymb,1,1);
+	      LOG_M("rxsig1.m","rxs1", UE->common_vars.rxdata[1],UE->frame_parms.samples_per_tti,1,1);
+	      LOG_M("rxsigF1.m","rxsF1", UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].rxdataF[1],UE->frame_parms.ofdm_symbol_size*nsymb,1,1);
 	    }
 
-	    write_output("dlsch00_r0.m","dl00_r0",
+	    LOG_M("dlsch00_r0.m","dl00_r0",
 			 &(UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].dl_ch_estimates[eNB_id][0][0]),
 			 UE->frame_parms.ofdm_symbol_size*nsymb,1,1);
 
 	    if (UE->frame_parms.nb_antennas_rx>1)
-	      write_output("dlsch01_r0.m","dl01_r0",
+	      LOG_M("dlsch01_r0.m","dl01_r0",
 			   &(UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].dl_ch_estimates[eNB_id][1][0]),
 			   UE->frame_parms.ofdm_symbol_size*nsymb,1,1);
 
 	    if (eNB->frame_parms.nb_antennas_tx>1)
-	      write_output("dlsch10_r0.m","dl10_r0",
+	      LOG_M("dlsch10_r0.m","dl10_r0",
 			   &(UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].dl_ch_estimates[eNB_id][2][0]),
 			   UE->frame_parms.ofdm_symbol_size*nsymb,1,1);
 
 	    if ((UE->frame_parms.nb_antennas_rx>1) && (eNB->frame_parms.nb_antennas_tx>1))
-	      write_output("dlsch11_r0.m","dl11_r0",
+	      LOG_M("dlsch11_r0.m","dl11_r0",
 			   &(UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].dl_ch_estimates[eNB_id][3][0]),
 			   UE->frame_parms.ofdm_symbol_size*nsymb/2,1,1);
 
@@ -1814,14 +1814,14 @@ int main(int argc, char **argv)
 
 	    dump_dlsch2(UE,eNB_id,subframe,&coded_bits_per_codeword,round, UE->dlsch[UE->current_thread_id[subframe]][0][0]->current_harq_pid);
 
-	    write_output("dlsch_e.m","e",eNB->dlsch[0][0]->harq_processes[0]->e,coded_bits_per_codeword,1,4);
+	    LOG_M("dlsch_e.m","e",eNB->dlsch[0][0]->harq_processes[0]->e,coded_bits_per_codeword,1,4);
 
 	    //pdcch_vars
-	    write_output("pdcchF0_ext.m","pdcchF_ext", UE->pdcch_vars[0][eNB_id]->rxdataF_ext[0],2*3*UE->frame_parms.ofdm_symbol_size,1,1);
-	    write_output("pdcch00_ch0_ext.m","pdcch00_ch0_ext",UE->pdcch_vars[0][eNB_id]->dl_ch_estimates_ext[0],300*3,1,1);
+	    LOG_M("pdcchF0_ext.m","pdcchF_ext", UE->pdcch_vars[0][eNB_id]->rxdataF_ext[0],2*3*UE->frame_parms.ofdm_symbol_size,1,1);
+	    LOG_M("pdcch00_ch0_ext.m","pdcch00_ch0_ext",UE->pdcch_vars[0][eNB_id]->dl_ch_estimates_ext[0],300*3,1,1);
 
-	    write_output("pdcch_rxF_comp0.m","pdcch0_rxF_comp0",UE->pdcch_vars[0][eNB_id]->rxdataF_comp[0],4*300,1,1);
-	    write_output("pdcch_rxF_llr.m","pdcch_llr",UE->pdcch_vars[0][eNB_id]->llr,2400,1,4);
+	    LOG_M("pdcch_rxF_comp0.m","pdcch0_rxF_comp0",UE->pdcch_vars[0][eNB_id]->rxdataF_comp[0],4*300,1,1);
+	    LOG_M("pdcch_rxF_llr.m","pdcch_llr",UE->pdcch_vars[0][eNB_id]->llr,2400,1,4);
 
 	  }
 
@@ -1869,31 +1869,31 @@ int main(int argc, char **argv)
 
               sprintf(fname,"rxsig0_r%d.m",round);
               sprintf(vname,"rxs0_r%d",round);
-              write_output(fname,vname, &UE->common_vars.rxdata[0][0],10*UE->frame_parms.samples_per_tti,1,1);
+              LOG_M(fname,vname, &UE->common_vars.rxdata[0][0],10*UE->frame_parms.samples_per_tti,1,1);
               sprintf(fname,"rxsigF0_r%d.m",round);
               sprintf(vname,"rxs0F_r%d",round);
 
-              write_output(fname,vname, &UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].rxdataF[0][0],UE->frame_parms.ofdm_symbol_size*nsymb,1,1);
+              LOG_M(fname,vname, &UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].rxdataF[0][0],UE->frame_parms.ofdm_symbol_size*nsymb,1,1);
 
               if (UE->frame_parms.nb_antennas_rx>1) {
                 sprintf(fname,"rxsig1_r%d.m",round);
                 sprintf(vname,"rxs1_r%d.m",round);
-                write_output(fname,vname, UE->common_vars.rxdata[1],UE->frame_parms.samples_per_tti,1,1);
+                LOG_M(fname,vname, UE->common_vars.rxdata[1],UE->frame_parms.samples_per_tti,1,1);
                 sprintf(fname,"rxsigF1_r%d.m",round);
                 sprintf(vname,"rxs1F_r%d.m",round);
-                write_output(fname,vname, UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].rxdataF[1],UE->frame_parms.ofdm_symbol_size*nsymb,1,1);
+                LOG_M(fname,vname, UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].rxdataF[1],UE->frame_parms.ofdm_symbol_size*nsymb,1,1);
               }
 
               sprintf(fname,"dlsch00_r%d.m",round);
               sprintf(vname,"dl00_r%d",round);
-              write_output(fname,vname,
+              LOG_M(fname,vname,
                            &(UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].dl_ch_estimates[eNB_id][0][0]),
                            UE->frame_parms.ofdm_symbol_size*nsymb,1,1);
 
               if (UE->frame_parms.nb_antennas_rx>1) {
                 sprintf(fname,"dlsch01_r%d.m",round);
                 sprintf(vname,"dl01_r%d",round);
-                write_output(fname,vname,
+                LOG_M(fname,vname,
                              &(UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].dl_ch_estimates[eNB_id][1][0]),
                              UE->frame_parms.ofdm_symbol_size*nsymb/2,1,1);
               }
@@ -1901,7 +1901,7 @@ int main(int argc, char **argv)
               if (eNB->frame_parms.nb_antennas_tx>1) {
                 sprintf(fname,"dlsch10_r%d.m",round);
                 sprintf(vname,"dl10_r%d",round);
-                write_output(fname,vname,
+                LOG_M(fname,vname,
                              &(UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].dl_ch_estimates[eNB_id][2][0]),
                              UE->frame_parms.ofdm_symbol_size*nsymb/2,1,1);
               }
@@ -1909,7 +1909,7 @@ int main(int argc, char **argv)
               if ((UE->frame_parms.nb_antennas_rx>1) && (eNB->frame_parms.nb_antennas_tx>1)) {
                 sprintf(fname,"dlsch11_r%d.m",round);
                 sprintf(vname,"dl11_r%d",round);
-                write_output(fname,vname,
+                LOG_M(fname,vname,
                              &(UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].dl_ch_estimates[eNB_id][3][0]),
                              UE->frame_parms.ofdm_symbol_size*nsymb/2,1,1);
               }
@@ -1918,16 +1918,16 @@ int main(int argc, char **argv)
               dump_dlsch2(UE,eNB_id,subframe,&coded_bits_per_codeword,round, UE->dlsch[UE->current_thread_id[subframe]][0][0]->current_harq_pid);
 
 
-              //write_output("dlsch_e.m","e",eNB->dlsch[0][0]->harq_processes[0]->e,coded_bits_per_codeword,1,4);
-              //write_output("dlsch_ber_bit.m","ber_bit",uncoded_ber_bit,coded_bits_per_codeword,1,0);
-              //write_output("dlsch_w.m","w",eNB->dlsch[0][0]->harq_processes[0]->w[0],3*(tbs+64),1,4);
-              //write_output("dlsch_w.m","w",UE->dlsch[UE->current_thread_id[subframe]][0][0]->harq_processes[0]->w[0],3*(tbs+64),1,0);
+              //LOG_M("dlsch_e.m","e",eNB->dlsch[0][0]->harq_processes[0]->e,coded_bits_per_codeword,1,4);
+              //LOG_M("dlsch_ber_bit.m","ber_bit",uncoded_ber_bit,coded_bits_per_codeword,1,0);
+              //LOG_M("dlsch_w.m","w",eNB->dlsch[0][0]->harq_processes[0]->w[0],3*(tbs+64),1,4);
+              //LOG_M("dlsch_w.m","w",UE->dlsch[UE->current_thread_id[subframe]][0][0]->harq_processes[0]->w[0],3*(tbs+64),1,0);
 	      //pdcch_vars
-	      write_output("pdcchF0_ext.m","pdcchF_ext", UE->pdcch_vars[0][eNB_id]->rxdataF_ext[0],2*3*UE->frame_parms.ofdm_symbol_size,1,1);
-	      write_output("pdcch00_ch0_ext.m","pdcch00_ch0_ext",UE->pdcch_vars[0][eNB_id]->dl_ch_estimates_ext[0],300*3,1,1);
+	      LOG_M("pdcchF0_ext.m","pdcchF_ext", UE->pdcch_vars[0][eNB_id]->rxdataF_ext[0],2*3*UE->frame_parms.ofdm_symbol_size,1,1);
+	      LOG_M("pdcch00_ch0_ext.m","pdcch00_ch0_ext",UE->pdcch_vars[0][eNB_id]->dl_ch_estimates_ext[0],300*3,1,1);
 
-	      write_output("pdcch_rxF_comp0.m","pdcch0_rxF_comp0",UE->pdcch_vars[0][eNB_id]->rxdataF_comp[0],4*300,1,1);
-	      write_output("pdcch_rxF_llr.m","pdcch_llr",UE->pdcch_vars[0][eNB_id]->llr,2400,1,4);
+	      LOG_M("pdcch_rxF_comp0.m","pdcch0_rxF_comp0",UE->pdcch_vars[0][eNB_id]->rxdataF_comp[0],4*300,1,1);
+	      LOG_M("pdcch_rxF_llr.m","pdcch_llr",UE->pdcch_vars[0][eNB_id]->llr,2400,1,4);
 
               if (round == 3) exit(-1);
             }
diff --git a/openair1/SIMULATION/LTE_PHY/dlsim_tm4.c b/openair1/SIMULATION/LTE_PHY/dlsim_tm4.c
index 20682a57be8e87cd48019a8f5bc5ad399a3a0822..0c942df275f7ce5b8dab0d1b1f2cba0c42066a33 100644
--- a/openair1/SIMULATION/LTE_PHY/dlsim_tm4.c
+++ b/openair1/SIMULATION/LTE_PHY/dlsim_tm4.c
@@ -3472,9 +3472,9 @@ int main(int argc, char **argv)
                           &eNB->frame_parms);
 
             if (n_frames==2) {
-              write_output("txsigF0.m","txsF0", &eNB->common_vars.txdataF[eNB_id][0][subframe*nsymb*eNB->frame_parms.ofdm_symbol_size],nsymb*eNB->frame_parms.ofdm_symbol_size,1,1);
+              LOG_M("txsigF0.m","txsF0", &eNB->common_vars.txdataF[eNB_id][0][subframe*nsymb*eNB->frame_parms.ofdm_symbol_size],nsymb*eNB->frame_parms.ofdm_symbol_size,1,1);
               if (eNB->frame_parms.nb_antennas_tx>1)
-                write_output("txsigF1.m","txsF1", &eNB->common_vars.txdataF[eNB_id][1][subframe*nsymb*eNB->frame_parms.ofdm_symbol_size],nsymb*eNB->frame_parms.ofdm_symbol_size,1,1);
+                LOG_M("txsigF1.m","txsF1", &eNB->common_vars.txdataF[eNB_id][1][subframe*nsymb*eNB->frame_parms.ofdm_symbol_size],nsymb*eNB->frame_parms.ofdm_symbol_size,1,1);
             }
 
             tx_lev = 0;
@@ -3486,9 +3486,9 @@ int main(int argc, char **argv)
             tx_lev_dB = (unsigned int) dB_fixed(tx_lev);
 
             if (n_frames==2) {
-              write_output("txsigF0.m","txsF0", &eNB->common_vars.txdataF[eNB_id][0][subframe*nsymb*eNB->frame_parms.ofdm_symbol_size],nsymb*eNB->frame_parms.ofdm_symbol_size,1,1);
+              LOG_M("txsigF0.m","txsF0", &eNB->common_vars.txdataF[eNB_id][0][subframe*nsymb*eNB->frame_parms.ofdm_symbol_size],nsymb*eNB->frame_parms.ofdm_symbol_size,1,1);
               if (eNB->frame_parms.nb_antennas_tx>1)
-                write_output("txsigF1.m","txsF1", &eNB->common_vars.txdataF[eNB_id][1][subframe*nsymb*eNB->frame_parms.ofdm_symbol_size],nsymb*eNB->frame_parms.ofdm_symbol_size,1,1);
+                LOG_M("txsigF1.m","txsF1", &eNB->common_vars.txdataF[eNB_id][1][subframe*nsymb*eNB->frame_parms.ofdm_symbol_size],nsymb*eNB->frame_parms.ofdm_symbol_size,1,1);
             }
 
             tx_lev = 0;
@@ -3501,7 +3501,7 @@ int main(int argc, char **argv)
 
             if (n_frames==2) {
               printf("tx_lev = %d (%d dB)\n",tx_lev,tx_lev_dB);
-              write_output("txsig0.m","txs0", &eNB->common_vars.txdata[eNB_id][0][subframe*eNB->frame_parms.samples_per_tti], eNB->frame_parms.samples_per_tti,1,1);
+              LOG_M("txsig0.m","txs0", &eNB->common_vars.txdata[eNB_id][0][subframe*eNB->frame_parms.samples_per_tti], eNB->frame_parms.samples_per_tti,1,1);
             }
           }
           //    printf("Copying tx ..., nsymb %d (n_tx %d), awgn %d\n",nsymb,eNB->frame_parms.nb_antennas_tx,awgn_flag);
@@ -3553,8 +3553,8 @@ int main(int argc, char **argv)
               }
             if (UE->perfect_ce==1){
               freq_channel(eNB2UE[round],UE->frame_parms.N_RB_DL,12*UE->frame_parms.N_RB_DL + 1);
-                      //  write_output("channel.m","ch",eNB2UE[round]->ch[0],eNB2UE[round]->channel_length,1,8);
-                      //  write_output("channelF.m","chF",eNB2UE[round]->chF[0],12*UE->frame_parms.N_RB_DL +1,1,8);
+                      //  LOG_M("channel.m","ch",eNB2UE[round]->ch[0],eNB2UE[round]->channel_length,1,8);
+                      //  LOG_M("channelF.m","chF",eNB2UE[round]->chF[0],12*UE->frame_parms.N_RB_DL +1,1,8);
             }
           }
 
@@ -4156,10 +4156,10 @@ int main(int argc, char **argv)
 
               sprintf(fname,"dlsch%d_rxF_r%d_cw%d_llr.m",eNB_id,round, TB);
               sprintf(vname,"dl%d_r%d_cw%d_llr",eNB_id,round, TB);
-              write_output(fname,vname, UE->pdsch_vars[UE->current_thread_id[subframe]][0]->llr[UE->dlsch[UE->current_thread_id[subframe]][0][TB]->harq_processes[UE->dlsch[UE->current_thread_id[subframe]][0][TB]->current_harq_pid]->codeword],coded_bits_per_codeword[TB],1,0);
+              LOG_M(fname,vname, UE->pdsch_vars[UE->current_thread_id[subframe]][0]->llr[UE->dlsch[UE->current_thread_id[subframe]][0][TB]->harq_processes[UE->dlsch[UE->current_thread_id[subframe]][0][TB]->current_harq_pid]->codeword],coded_bits_per_codeword[TB],1,0);
               sprintf(fname,"dlsch_cw%d_e.m", TB);
               sprintf(vname,"dlschcw%d_e", TB);
-              write_output(fname, vname,eNB->dlsch[0][TB]->harq_processes[0]->e,coded_bits_per_codeword[TB],1,4);
+              LOG_M(fname, vname,eNB->dlsch[0][TB]->harq_processes[0]->e,coded_bits_per_codeword[TB],1,4);
               uncoded_ber=0;
               printf("trials=%d\n", trials);
 
@@ -4175,7 +4175,7 @@ int main(int argc, char **argv)
               avg_ber += uncoded_ber;
               sprintf(fname,"cw%d_uncoded_ber_bit.m", TB);
               sprintf(vname,"uncoded_ber_bit_cw%d", TB);
-              write_output(fname, vname,uncoded_ber_bit,coded_bits_per_codeword[TB],1,0);
+              LOG_M(fname, vname,uncoded_ber_bit,coded_bits_per_codeword[TB],1,0);
               printf("cw %d, uncoded ber %f\n",TB,uncoded_ber);
 
               free(uncoded_ber_bit);
@@ -4426,9 +4426,9 @@ int main(int argc, char **argv)
                                                     &UE->dlsch_eNB[0][0],
                                                     coded_bits_per_codeword[0]);
 
-               // write_output("sic_buffer.m","sic", *sic_buffer,re_allocated,1,1);
-               // write_output("rxdataF_comp1.m","rxF_comp1", *UE->pdsch_vars[eNB_id]->rxdataF_comp1[UE->dlsch[UE->current_thread_id[subframe]][0][0]->current_harq_pid][round],14*12*25,1,1);
-               // write_output("rxdataF_rho.m","rho", *UE->pdsch_vars[eNB_id]->dl_ch_rho_ext[UE->dlsch[UE->current_thread_id[subframe]][0][0]->current_harq_pid][round],14*12*25,1,1);
+               // LOG_M("sic_buffer.m","sic", *sic_buffer,re_allocated,1,1);
+               // LOG_M("rxdataF_comp1.m","rxF_comp1", *UE->pdsch_vars[eNB_id]->rxdataF_comp1[UE->dlsch[UE->current_thread_id[subframe]][0][0]->current_harq_pid][round],14*12*25,1,1);
+               // LOG_M("rxdataF_rho.m","rho", *UE->pdsch_vars[eNB_id]->dl_ch_rho_ext[UE->dlsch[UE->current_thread_id[subframe]][0][0]->current_harq_pid][round],14*12*25,1,1);
 
 
                 switch  (get_Qm(eNB->dlsch[0][1]->harq_processes[0]->mcs)){
@@ -4483,7 +4483,7 @@ int main(int argc, char **argv)
                   printf("[DLSIM] TB1 is mapped into CW%d\n", UE->dlsch[UE->current_thread_id[subframe]][0][1]->harq_processes[UE->dlsch[UE->current_thread_id[subframe]][0][1]->current_harq_pid]->codeword);
 #endif
 
-                    //  write_output("rxdata_llr1.m","llr1", UE->pdsch_vars[eNB_id]->llr[1],re_allocated*2,1,0);
+                    //  LOG_M("rxdata_llr1.m","llr1", UE->pdsch_vars[eNB_id]->llr[1],re_allocated*2,1,0);
 
                   // replace cw_sic with TB+1
                   UE->dlsch[UE->current_thread_id[subframe]][0][1]->rnti = (common_flag==0) ? n_rnti: SI_RNTI;
@@ -4509,10 +4509,10 @@ int main(int argc, char **argv)
                     AssertFatal(uncoded_ber_bit, "uncoded_ber_bit==NULL");
                     sprintf(fname,"dlsch%d_rxF_r%d_cw%d_llr.m",eNB_id,round,1);
                     sprintf(vname,"dl%d_r%d_cw%d_llr",eNB_id,round, 1);
-                    write_output(fname,vname, UE->pdsch_vars[UE->current_thread_id[subframe]][0]->llr[1],coded_bits_per_codeword[1],1,0);
+                    LOG_M(fname,vname, UE->pdsch_vars[UE->current_thread_id[subframe]][0]->llr[1],coded_bits_per_codeword[1],1,0);
                     sprintf(fname,"dlsch_cw%d_e.m", 1);
                     sprintf(vname,"dlschcw%d_e", 1);
-                    write_output(fname, vname,eNB->dlsch[0][1]->harq_processes[0]->e,coded_bits_per_codeword[1],1,4);
+                    LOG_M(fname, vname,eNB->dlsch[0][1]->harq_processes[0]->e,coded_bits_per_codeword[1],1,4);
                     uncoded_ber=0;
                     printf("trials=%d\n", trials);
                     for (i=0;i<coded_bits_per_codeword[1];i++)
@@ -4527,7 +4527,7 @@ int main(int argc, char **argv)
                    avg_ber += uncoded_ber;
                    sprintf(fname,"cw%d_uncoded_ber_bit.m", 1);
                    sprintf(vname,"uncoded_ber_bit_cw%d", 1);
-                   write_output(fname, vname,uncoded_ber_bit,coded_bits_per_codeword[1],1,0);
+                   LOG_M(fname, vname,uncoded_ber_bit,coded_bits_per_codeword[1],1,0);
                    printf("cw %d, uncoded ber %f\n",1,uncoded_ber);
                          free(uncoded_ber_bit);
                    uncoded_ber_bit = NULL;
@@ -4695,76 +4695,76 @@ int main(int argc, char **argv)
             //rxsig
             sprintf(fname,"rxsig0_r%d.m",round);
             sprintf(vname,"rxs0_r%d",round);
-            write_output(fname,vname, &UE->common_vars.rxdata[0][0],10*UE->frame_parms.samples_per_tti,1,1);
+            LOG_M(fname,vname, &UE->common_vars.rxdata[0][0],10*UE->frame_parms.samples_per_tti,1,1);
             sprintf(fname,"rxsigF0_r%d.m",round);
             sprintf(vname,"rxs0F_r%d",round);
-            write_output(fname,vname, &UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].rxdataF[0][0],2*UE->frame_parms.ofdm_symbol_size*nsymb,2,1);
+            LOG_M(fname,vname, &UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].rxdataF[0][0],2*UE->frame_parms.ofdm_symbol_size*nsymb,2,1);
             if (UE->frame_parms.nb_antennas_rx>1) {
               sprintf(fname,"rxsig1_r%d.m",round);
               sprintf(vname,"rxs1_r%d",round);
-              write_output(fname,vname, UE->common_vars.rxdata[1],UE->frame_parms.samples_per_tti,1,1);
+              LOG_M(fname,vname, UE->common_vars.rxdata[1],UE->frame_parms.samples_per_tti,1,1);
               sprintf(fname,"rxsig1F_r%d.m",round);
               sprintf(vname,"rxs1F_r%d",round);
-              write_output(fname,vname, UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].rxdataF[1],2*UE->frame_parms.ofdm_symbol_size*nsymb,2,1);
+              LOG_M(fname,vname, UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].rxdataF[1],2*UE->frame_parms.ofdm_symbol_size*nsymb,2,1);
             }
 
             //channel
-            write_output("chanF11.m","chF11",eNB2UE[0]->chF[0],12*NB_RB,1,8);
-            write_output("chan11.m","ch11",eNB2UE[0]->ch[0],eNB2UE[0]->channel_length,1,8);
+            LOG_M("chanF11.m","chF11",eNB2UE[0]->chF[0],12*NB_RB,1,8);
+            LOG_M("chan11.m","ch11",eNB2UE[0]->ch[0],eNB2UE[0]->channel_length,1,8);
 
             if (eNB->frame_parms.nb_antennas_rx==2 && eNB->frame_parms.nb_antennas_tx==1 ){
-              write_output("chan21.m","ch21",eNB2UE[0]->ch[1],eNB2UE[0]->channel_length,1,8);
+              LOG_M("chan21.m","ch21",eNB2UE[0]->ch[1],eNB2UE[0]->channel_length,1,8);
             }
             if (eNB->frame_parms.nb_antennas_tx>1){
-              write_output("chan12.m","ch12",eNB2UE[0]->ch[1],eNB2UE[0]->channel_length,1,8);
+              LOG_M("chan12.m","ch12",eNB2UE[0]->ch[1],eNB2UE[0]->channel_length,1,8);
               if ( eNB->frame_parms.nb_antennas_rx>1){
-                write_output("chan21.m","ch21",eNB2UE[0]->ch[2],eNB2UE[0]->channel_length,1,8);
-                write_output("chan22.m","ch22",eNB2UE[0]->ch[3],eNB2UE[0]->channel_length,1,8);
+                LOG_M("chan21.m","ch21",eNB2UE[0]->ch[2],eNB2UE[0]->channel_length,1,8);
+                LOG_M("chan22.m","ch22",eNB2UE[0]->ch[3],eNB2UE[0]->channel_length,1,8);
               }
             }
 
             //channel estimates
             sprintf(fname,"dlsch00_r%d.m",round);
             sprintf(vname,"dl00_r%d",round);
-            write_output(fname,vname,
+            LOG_M(fname,vname,
               &(UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].dl_ch_estimates[eNB_id][0][0]),
              UE->frame_parms.ofdm_symbol_size*nsymb,1,1);
             if (UE->frame_parms.nb_antennas_rx>1) {
               sprintf(fname,"dlsch01_r%d.m",round);
               sprintf(vname,"dl01_r%d",round);
-              write_output(fname,vname,
+              LOG_M(fname,vname,
                &(UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].dl_ch_estimates[eNB_id][1][0]),
                UE->frame_parms.ofdm_symbol_size*nsymb,1,1);
             }
             if (eNB->frame_parms.nb_antennas_tx>1) {
               sprintf(fname,"dlsch10_r%d.m",round);
               sprintf(vname,"dl10_r%d",round);
-              write_output(fname,vname,
+              LOG_M(fname,vname,
                &(UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].dl_ch_estimates[eNB_id][2][0]),
                UE->frame_parms.ofdm_symbol_size*nsymb,1,1);
             }
             if ((UE->frame_parms.nb_antennas_rx>1) && (eNB->frame_parms.nb_antennas_tx>1)) {
               sprintf(fname,"dlsch11_r%d.m",round);
               sprintf(vname,"dl11_r%d",round);
-              write_output(fname,vname,
+              LOG_M(fname,vname,
                &(UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].dl_ch_estimates[eNB_id][3][0]),
                UE->frame_parms.ofdm_symbol_size*nsymb,1,1);
             }
             //pdsch_vars
             dump_dlsch2(UE,eNB_id,subframe,coded_bits_per_codeword,round, UE->dlsch[UE->current_thread_id[subframe]][0][0]->current_harq_pid);
             /*
-              write_output("dlsch_e.m","e",eNB->dlsch[0][0]->harq_processes[0]->e,coded_bits_per_codeword,1,4);
-              write_output("dlsch_ber_bit.m","ber_bit",uncoded_ber_bit,coded_bits_per_codeword,1,0);
-              write_output("dlsch_eNB_w.m","w",eNB->dlsch[0][0]->harq_processes[0]->w[0],3*(tbs+64),1,4);
-              write_output("dlsch_UE_w.m","w",UE->dlsch[UE->current_thread_id[subframe]][0][0]->harq_processes[0]->w[0],3*(tbs+64),1,0);
+              LOG_M("dlsch_e.m","e",eNB->dlsch[0][0]->harq_processes[0]->e,coded_bits_per_codeword,1,4);
+              LOG_M("dlsch_ber_bit.m","ber_bit",uncoded_ber_bit,coded_bits_per_codeword,1,0);
+              LOG_M("dlsch_eNB_w.m","w",eNB->dlsch[0][0]->harq_processes[0]->w[0],3*(tbs+64),1,4);
+              LOG_M("dlsch_UE_w.m","w",UE->dlsch[UE->current_thread_id[subframe]][0][0]->harq_processes[0]->w[0],3*(tbs+64),1,0);
             */
 
             //pdcch_vars
-            write_output("pdcchF0_ext.m","pdcchF_ext", UE->pdcch_vars[UE->current_thread_id[subframe]][eNB_id]->rxdataF_ext[0],2*3*UE->frame_parms.ofdm_symbol_size,1,1);
-            write_output("pdcch00_ch0_ext.m","pdcch00_ch0_ext",UE->pdcch_vars[UE->current_thread_id[subframe]][eNB_id]->dl_ch_estimates_ext[0],300*3,1,1);
+            LOG_M("pdcchF0_ext.m","pdcchF_ext", UE->pdcch_vars[UE->current_thread_id[subframe]][eNB_id]->rxdataF_ext[0],2*3*UE->frame_parms.ofdm_symbol_size,1,1);
+            LOG_M("pdcch00_ch0_ext.m","pdcch00_ch0_ext",UE->pdcch_vars[UE->current_thread_id[subframe]][eNB_id]->dl_ch_estimates_ext[0],300*3,1,1);
 
-            write_output("pdcch_rxF_comp0.m","pdcch0_rxF_comp0",UE->pdcch_vars[UE->current_thread_id[subframe]][eNB_id]->rxdataF_comp[0],4*300,1,1);
-            write_output("pdcch_rxF_llr.m","pdcch_llr",UE->pdcch_vars[UE->current_thread_id[subframe]][eNB_id]->llr,2400,1,4);
+            LOG_M("pdcch_rxF_comp0.m","pdcch0_rxF_comp0",UE->pdcch_vars[UE->current_thread_id[subframe]][eNB_id]->rxdataF_comp[0],4*300,1,1);
+            LOG_M("pdcch_rxF_llr.m","pdcch_llr",UE->pdcch_vars[UE->current_thread_id[subframe]][eNB_id]->llr,2400,1,4);
 
             if (round == 3) exit(-1);
           }
@@ -5182,11 +5182,6 @@ int main(int argc, char **argv)
 #endif
       }
 
-#if 0
-        thr_cw0_tm4_nonconst = rate[0]*get_Qm(PHY_vars_eNB->dlsch[0][0]->harq_processes[0]->mcs)* \
-        ((double)(round_trials[0][0]-dci_errors)/((double)round_trials[0][0] + round_trials[0][1] + round_trials[0][2] + round_trials[0][3]));
-        printf("Throughput cw0 noncnstr =  %f \n", thr_cw0_tm4_nonconst);
-#endif
         //FOR CW1
        /*thr_cw1[0] = rate[1]*get_Qm(PHY_vars_eNB->dlsch[0][1]->harq_processes[0]->mcs)*(1-((double)errs[0][0]/(double)round_trials[0][0])) \
        *(1-((double)errs[1][0]/(double)round_trials[1][0]));
diff --git a/openair1/SIMULATION/LTE_PHY/dlsim_tm7.c b/openair1/SIMULATION/LTE_PHY/dlsim_tm7.c
index e1385e68f1fd064de1fc9b90e972730354868db0..b41dd5536c360c073c7ec8c0cc576333b8adbeb7 100644
--- a/openair1/SIMULATION/LTE_PHY/dlsim_tm7.c
+++ b/openair1/SIMULATION/LTE_PHY/dlsim_tm7.c
@@ -2850,16 +2850,16 @@ PMI_FEEDBACK:
 
             if (n_frames==1) {
               if (transmission_mode<7)
-                write_output("txsigF0.m","txsF0", &eNB->common_vars.txdataF[eNB_id][0][subframe*nsymb*eNB->frame_parms.ofdm_symbol_size],
+                LOG_M("txsigF0.m","txsF0", &eNB->common_vars.txdataF[eNB_id][0][subframe*nsymb*eNB->frame_parms.ofdm_symbol_size],
                              nsymb*eNB->frame_parms.ofdm_symbol_size,1,1);
               else if (transmission_mode==7)
-                write_output("txsigF0.m","txsF0", &eNB->common_vars.txdataF[eNB_id][5][subframe*nsymb*eNB->frame_parms.ofdm_symbol_size],
+                LOG_M("txsigF0.m","txsF0", &eNB->common_vars.txdataF[eNB_id][5][subframe*nsymb*eNB->frame_parms.ofdm_symbol_size],
                              nsymb*eNB->frame_parms.ofdm_symbol_size,1,1);
-              write_output("txsigF0_BF.m","txsF0_BF", &eNB->common_vars.txdataF_BF[eNB_id][0][0],
+              LOG_M("txsigF0_BF.m","txsF0_BF", &eNB->common_vars.txdataF_BF[eNB_id][0][0],
                            eNB->frame_parms.ofdm_symbol_size,1,1);
 
               if (eNB->frame_parms.nb_antennas_tx>1)// to be updated
-                write_output("txsigF1.m","txsF1", &eNB->common_vars.txdataF[eNB_id][1][subframe*nsymb*eNB->frame_parms.ofdm_symbol_size],
+                LOG_M("txsigF1.m","txsF1", &eNB->common_vars.txdataF[eNB_id][1][subframe*nsymb*eNB->frame_parms.ofdm_symbol_size],
                              nsymb*eNB->frame_parms.ofdm_symbol_size,1,1);
             }
             tx_lev = 0;
@@ -2874,8 +2874,8 @@ PMI_FEEDBACK:
 
             if (n_frames==1) {
               printf("tx_lev = %d (%d dB)\n",tx_lev,tx_lev_dB);
-              write_output("txsig0.m","txs0", &eNB->common_vars.txdata[eNB_id][0][subframe*eNB->frame_parms.samples_per_tti],eNB->frame_parms.samples_per_tti,1,1);
-              // write_output("txsig0.m","txs0",&eNB->common_vars.txdata[eNB_id][0][0*eNB->frame_parms.samples_per_tti],eNB->frame_parms.samples_per_tti*10,1,1);
+              LOG_M("txsig0.m","txs0", &eNB->common_vars.txdata[eNB_id][0][subframe*eNB->frame_parms.samples_per_tti],eNB->frame_parms.samples_per_tti,1,1);
+              // LOG_M("txsig0.m","txs0",&eNB->common_vars.txdata[eNB_id][0][0*eNB->frame_parms.samples_per_tti],eNB->frame_parms.samples_per_tti*10,1,1);
             }
           }
 
@@ -2896,8 +2896,8 @@ PMI_FEEDBACK:
             break;
             }
             printf("Read in %d samples\n",i/4);
-            write_output("txsig0.m","txs0", txdata[0],2*frame_parms->samples_per_tti,1,1);
-            //    write_output("txsig1.m","txs1", txdata[1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+            LOG_M("txsig0.m","txs0", txdata[0],2*frame_parms->samples_per_tti,1,1);
+            //    LOG_M("txsig1.m","txs1", txdata[1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
             tx_lev = signal_energy(&txdata[0][0],
             OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES);
             tx_lev_dB = (unsigned int) dB_fixed(tx_lev);
@@ -2943,8 +2943,8 @@ PMI_FEEDBACK:
                   // fill in perfect channel estimates
                   freq_channel(eNB2UE[round],UE->frame_parms.N_RB_DL,12*UE->frame_parms.N_RB_DL + 1);
 		  /*
-		  write_output("channel.m","ch",eNB2UE[round]->ch[0],eNB2UE[round]->channel_length,1,8);
-                  write_output("channelF.m","chF",eNB2UE[round]->chF[0],12*UE->frame_parms.N_RB_DL + 1,1,8);
+		  LOG_M("channel.m","ch",eNB2UE[round]->ch[0],eNB2UE[round]->channel_length,1,8);
+                  LOG_M("channelF.m","chF",eNB2UE[round]->chF[0],12*UE->frame_parms.N_RB_DL + 1,1,8);
 		  */
 	    }
 	  }
@@ -3483,52 +3483,52 @@ PMI_FEEDBACK:
 
                 if (test_perf ==0 ) {
                   if ((n_frames==1) && (Ns==(2+(2*subframe))) && (l==0))  {
-                    write_output("ch0.m","ch0",eNB2UE[0]->ch[0],eNB2UE[0]->channel_length,1,8);
+                    LOG_M("ch0.m","ch0",eNB2UE[0]->ch[0],eNB2UE[0]->channel_length,1,8);
 
                     if (eNB->frame_parms.nb_antennas_tx>1)
-                      write_output("ch1.m","ch1",eNB2UE[0]->ch[eNB->frame_parms.nb_antennas_rx],eNB2UE[0]->channel_length,1,8);
+                      LOG_M("ch1.m","ch1",eNB2UE[0]->ch[eNB->frame_parms.nb_antennas_rx],eNB2UE[0]->channel_length,1,8);
 
                     //common vars
-                    //write_output("rxsig0.m","rxs0", &UE->common_vars.rxdata[0][0],10*UE->frame_parms.samples_per_tti,1,1);
-                    write_output("rxsig0.m","rxs0", &UE->common_vars.rxdata[0][subframe*UE->frame_parms.samples_per_tti],UE->frame_parms.samples_per_tti,1,1);
-                    //write_output("rxsigF0.m","rxsF0", &UE->common_vars.rxdataF[0][subframe*nsymb*eNB->frame_parms.ofdm_symbol_size],UE->frame_parms.ofdm_symbol_size*nsymb,1,1);
-                    write_output("rxsigF0.m","rxsF0", &UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].rxdataF[0][0],UE->frame_parms.ofdm_symbol_size*nsymb,1,1);
+                    //LOG_M("rxsig0.m","rxs0", &UE->common_vars.rxdata[0][0],10*UE->frame_parms.samples_per_tti,1,1);
+                    LOG_M("rxsig0.m","rxs0", &UE->common_vars.rxdata[0][subframe*UE->frame_parms.samples_per_tti],UE->frame_parms.samples_per_tti,1,1);
+                    //LOG_M("rxsigF0.m","rxsF0", &UE->common_vars.rxdataF[0][subframe*nsymb*eNB->frame_parms.ofdm_symbol_size],UE->frame_parms.ofdm_symbol_size*nsymb,1,1);
+                    LOG_M("rxsigF0.m","rxsF0", &UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].rxdataF[0][0],UE->frame_parms.ofdm_symbol_size*nsymb,1,1);
 
                     if (UE->frame_parms.nb_antennas_rx>1) {
-                      write_output("rxsig1.m","rxs1", UE->common_vars.rxdata[1],UE->frame_parms.samples_per_tti,1,1);
-                      write_output("rxsigF1.m","rxsF1", UE->common_vars..common_vars_rx_data_per_thread[UE->current_thread_id[subframe]]rxdataF[1],UE->frame_parms.ofdm_symbol_size*nsymb,1,1);
+                      LOG_M("rxsig1.m","rxs1", UE->common_vars.rxdata[1],UE->frame_parms.samples_per_tti,1,1);
+                      LOG_M("rxsigF1.m","rxsF1", UE->common_vars..common_vars_rx_data_per_thread[UE->current_thread_id[subframe]]rxdataF[1],UE->frame_parms.ofdm_symbol_size*nsymb,1,1);
                     }
 
-                    write_output("dlsch00_r0.m","dl00_r0",
+                    LOG_M("dlsch00_r0.m","dl00_r0",
                                  &(UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].dl_ch_estimates[eNB_id][0][0]),
                                  UE->frame_parms.ofdm_symbol_size*nsymb,1,1);
 
                     if (UE->frame_parms.nb_antennas_rx>1)
-                      write_output("dlsch01_r0.m","dl01_r0",
+                      LOG_M("dlsch01_r0.m","dl01_r0",
                                    &(UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].dl_ch_estimates[eNB_id][1][0]),
                                    UE->frame_parms.ofdm_symbol_size*nsymb,1,1);
 
                     if (eNB->frame_parms.nb_antennas_tx>1)
-                      write_output("dlsch10_r0.m","dl10_r0",
+                      LOG_M("dlsch10_r0.m","dl10_r0",
                                    &(UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].dl_ch_estimates[eNB_id][2][0]),
                                    UE->frame_parms.ofdm_symbol_size*nsymb,1,1);
 
                     if ((UE->frame_parms.nb_antennas_rx>1) && (eNB->frame_parms.nb_antennas_tx>1))
-                      write_output("dlsch11_r0.m","dl11_r0",
+                      LOG_M("dlsch11_r0.m","dl11_r0",
                                    &(UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].dl_ch_estimates[eNB_id][3][0]),
                                    UE->frame_parms.ofdm_symbol_size*nsymb/2,1,1);
 
                     //pdsch_vars
                     dump_dlsch2(UE,eNB_id,subframe,&coded_bits_per_codeword,round);
                     //dump_dlsch2(UE,eNB_id_i,coded_bits_per_codeword);
-                    write_output("dlsch_e.m","e",eNB->dlsch[0][0]->harq_processes[0]->e,coded_bits_per_codeword,1,4);
+                    LOG_M("dlsch_e.m","e",eNB->dlsch[0][0]->harq_processes[0]->e,coded_bits_per_codeword,1,4);
 
                     //pdcch_vars
-                    write_output("pdcchF0_ext.m","pdcchF_ext", UE->pdcch_vars[eNB_id]->rxdataF_ext[0],2*3*UE->frame_parms.ofdm_symbol_size,1,1);
-                    write_output("pdcch00_ch0_ext.m","pdcch00_ch0_ext",UE->pdcch_vars[eNB_id]->dl_ch_estimates_ext[0],300*3,1,1);
+                    LOG_M("pdcchF0_ext.m","pdcchF_ext", UE->pdcch_vars[eNB_id]->rxdataF_ext[0],2*3*UE->frame_parms.ofdm_symbol_size,1,1);
+                    LOG_M("pdcch00_ch0_ext.m","pdcch00_ch0_ext",UE->pdcch_vars[eNB_id]->dl_ch_estimates_ext[0],300*3,1,1);
 
-                    write_output("pdcch_rxF_comp0.m","pdcch0_rxF_comp0",UE->pdcch_vars[eNB_id]->rxdataF_comp[0],4*300,1,1);
-                    write_output("pdcch_rxF_llr.m","pdcch_llr",UE->pdcch_vars[eNB_id]->llr,2400,1,4);
+                    LOG_M("pdcch_rxF_comp0.m","pdcch0_rxF_comp0",UE->pdcch_vars[eNB_id]->rxdataF_comp[0],4*300,1,1);
+                    LOG_M("pdcch_rxF_llr.m","pdcch_llr",UE->pdcch_vars[eNB_id]->llr,2400,1,4);
 
                   }
                 }
@@ -3578,7 +3578,7 @@ PMI_FEEDBACK:
             avg_ber += uncoded_ber;
 
             if (n_frames==1)
-              write_output("uncoded_ber_bit.m","uncoded_ber_bit",uncoded_ber_bit,coded_bits_per_codeword,1,0);
+              LOG_M("uncoded_ber_bit.m","uncoded_ber_bit",uncoded_ber_bit,coded_bits_per_codeword,1,0);
             
 
             start_meas(&UE->dlsch_unscrambling_stats);
@@ -3691,30 +3691,30 @@ PMI_FEEDBACK:
 
               sprintf(fname,"rxsig0_r%d.m",round);
               sprintf(vname,"rxs0_r%d",round);
-              write_output(fname,vname, &UE->common_vars.rxdata[0][0],10*UE->frame_parms.samples_per_tti,1,1);
+              LOG_M(fname,vname, &UE->common_vars.rxdata[0][0],10*UE->frame_parms.samples_per_tti,1,1);
               sprintf(fname,"rxsigF0_r%d.m",round);
               sprintf(vname,"rxs0F_r%d",round);
-              write_output(fname,vname, &UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].rxdataF[0][0],2*UE->frame_parms.ofdm_symbol_size*nsymb,2,1);
+              LOG_M(fname,vname, &UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].rxdataF[0][0],2*UE->frame_parms.ofdm_symbol_size*nsymb,2,1);
 	     
               if (UE->frame_parms.nb_antennas_rx>1) {
                 sprintf(fname,"rxsig1_r%d.m",round);
                 sprintf(vname,"rxs1_r%d.m",round);
-                write_output(fname,vname, UE->common_vars.rxdata[1],UE->frame_parms.samples_per_tti,1,1);
+                LOG_M(fname,vname, UE->common_vars.rxdata[1],UE->frame_parms.samples_per_tti,1,1);
                 sprintf(fname,"rxsig1F_r%d.m",round);
                 sprintf(vname,"rxs1F_r%d.m",round);
-                write_output(fname,vname, UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].rxdataF[1],2*UE->frame_parms.ofdm_symbol_size*nsymb,2,1);
+                LOG_M(fname,vname, UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].rxdataF[1],2*UE->frame_parms.ofdm_symbol_size*nsymb,2,1);
               }
 
               sprintf(fname,"dlsch00_r%d.m",round);
               sprintf(vname,"dl00_r%d",round);
-              write_output(fname,vname,
+              LOG_M(fname,vname,
                            &(UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].dl_ch_estimates[eNB_id][0][0]),
                            UE->frame_parms.ofdm_symbol_size*nsymb,1,1);
 
               if (UE->frame_parms.nb_antennas_rx>1) {
                 sprintf(fname,"dlsch01_r%d.m",round);
                 sprintf(vname,"dl01_r%d",round);
-                write_output(fname,vname,
+                LOG_M(fname,vname,
                              &(UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].dl_ch_estimates[eNB_id][1][0]),
                              UE->frame_parms.ofdm_symbol_size*nsymb/2,1,1);
               }
@@ -3722,7 +3722,7 @@ PMI_FEEDBACK:
               if (eNB->frame_parms.nb_antennas_tx>1) {
                 sprintf(fname,"dlsch10_r%d.m",round);
                 sprintf(vname,"dl10_r%d",round);
-                write_output(fname,vname,
+                LOG_M(fname,vname,
                              &(UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].dl_ch_estimates[eNB_id][2][0]),
                              UE->frame_parms.ofdm_symbol_size*nsymb/2,1,1);
               }
@@ -3730,7 +3730,7 @@ PMI_FEEDBACK:
               if ((UE->frame_parms.nb_antennas_rx>1) && (eNB->frame_parms.nb_antennas_tx>1)) {
                 sprintf(fname,"dlsch11_r%d.m",round);
                 sprintf(vname,"dl11_r%d",round);
-                write_output(fname,vname,
+                LOG_M(fname,vname,
                              &(UE->common_vars.common_vars_rx_data_per_thread[UE->current_thread_id[subframe]].dl_ch_estimates[eNB_id][3][0]),
                              UE->frame_parms.ofdm_symbol_size*nsymb/2,1,1);
               }
@@ -3738,10 +3738,10 @@ PMI_FEEDBACK:
               //pdsch_vars
               dump_dlsch2(UE,eNB_id,subframe,&coded_bits_per_codeword,round);
               /*
-              write_output("dlsch_e.m","e",eNB->dlsch[0][0]->harq_processes[0]->e,coded_bits_per_codeword,1,4);
-              write_output("dlsch_ber_bit.m","ber_bit",uncoded_ber_bit,coded_bits_per_codeword,1,0);
-              write_output("dlsch_w.m","w",eNB->dlsch[0][0]->harq_processes[0]->w[0],3*(tbs+64),1,4);
-              write_output("dlsch_w.m","w",UE->dlsch[UE->current_thread_id[subframe]][0][0]->harq_processes[0]->w[0],3*(tbs+64),1,0);
+              LOG_M("dlsch_e.m","e",eNB->dlsch[0][0]->harq_processes[0]->e,coded_bits_per_codeword,1,4);
+              LOG_M("dlsch_ber_bit.m","ber_bit",uncoded_ber_bit,coded_bits_per_codeword,1,0);
+              LOG_M("dlsch_w.m","w",eNB->dlsch[0][0]->harq_processes[0]->w[0],3*(tbs+64),1,4);
+              LOG_M("dlsch_w.m","w",UE->dlsch[UE->current_thread_id[subframe]][0][0]->harq_processes[0]->w[0],3*(tbs+64),1,0);
               */
 
               if (round == 3) exit(-1);
diff --git a/openair1/SIMULATION/LTE_PHY/framegen.c b/openair1/SIMULATION/LTE_PHY/framegen.c
index 0adc07ff97f8fccb4928c4fa4725069f447ec56b..f5b1e6d45ec88002fabd07750cf6ad913fddda59 100644
--- a/openair1/SIMULATION/LTE_PHY/framegen.c
+++ b/openair1/SIMULATION/LTE_PHY/framegen.c
@@ -625,9 +625,9 @@ int main(int argc, char **argv)
     char fname[64], vname[64];
     sprintf(fname, "txsig%d.m", frame);
     sprintf(vname, "txs%d", frame);
-    write_output(fname, vname, PHY_vars_eNB_g[0]->lte_eNB_common_vars.txdata[0][0], FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+    LOG_M(fname, vname, PHY_vars_eNB_g[0]->lte_eNB_common_vars.txdata[0][0], FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
 
     if (frame == 0)
-      write_output("txsigF0.m", "txsF0", PHY_vars_eNB_g[0]->lte_eNB_common_vars.txdataF[0][0], frame_parms->ofdm_symbol_size*14*10, 1, 1);
+      LOG_M("txsigF0.m", "txsF0", PHY_vars_eNB_g[0]->lte_eNB_common_vars.txdataF[0][0], frame_parms->ofdm_symbol_size*14*10, 1, 1);
   }//frame
 }
diff --git a/openair1/SIMULATION/LTE_PHY/mbmssim.c b/openair1/SIMULATION/LTE_PHY/mbmssim.c
index fbe75fed16980180a53120747da823c7d296a849..9910c97af838db34ec814a0019c3b9e036f622c6 100644
--- a/openair1/SIMULATION/LTE_PHY/mbmssim.c
+++ b/openair1/SIMULATION/LTE_PHY/mbmssim.c
@@ -381,10 +381,10 @@ int main(int argc, char **argv)
                    CYCLIC_PREFIX);
 
       if (n_frames==1) {
-        write_output("txsigF0.m","txsF0", &eNB->common_vars.txdataF[0][0][subframe*nsymb*eNB->frame_parms.ofdm_symbol_size],
+        LOG_M("txsigF0.m","txsF0", &eNB->common_vars.txdataF[0][0][subframe*nsymb*eNB->frame_parms.ofdm_symbol_size],
                      nsymb*eNB->frame_parms.ofdm_symbol_size,1,1);
         //if (eNB->frame_parms.nb_antennas_tx>1)
-        //write_output("txsigF1.m","txsF1", &eNB->lte_eNB_common_vars.txdataF[eNB_id][1][subframe*nsymb*eNB->frame_parms.ofdm_symbol_size],nsymb*eNB->frame_parms.ofdm_symbol_size,1,1);
+        //LOG_M("txsigF1.m","txsF1", &eNB->lte_eNB_common_vars.txdataF[eNB_id][1][subframe*nsymb*eNB->frame_parms.ofdm_symbol_size],nsymb*eNB->frame_parms.ofdm_symbol_size,1,1);
       }
 
       tx_lev = 0;
@@ -399,7 +399,7 @@ int main(int argc, char **argv)
 
       if (n_frames==1) {
         printf("tx_lev = %d (%d dB)\n",tx_lev,tx_lev_dB);
-        //    write_output("txsig0.m","txs0", &eNB->common_vars.txdata[0][0][subframe* eNB->frame_parms.samples_per_tti],
+        //    LOG_M("txsig0.m","txs0", &eNB->common_vars.txdata[0][0][subframe* eNB->frame_parms.samples_per_tti],
 
         //     eNB->frame_parms.samples_per_tti,1,1);
       }
diff --git a/openair1/SIMULATION/LTE_PHY/pbchsim.c b/openair1/SIMULATION/LTE_PHY/pbchsim.c
index d1e25da5c3c6b9a6bbac62ecc5df498680c1dc6f..f44ed7b3a21665ec1bd40ba2b3e7fa11d30fbfef 100644
--- a/openair1/SIMULATION/LTE_PHY/pbchsim.c
+++ b/openair1/SIMULATION/LTE_PHY/pbchsim.c
@@ -657,12 +657,12 @@ int main(int argc, char **argv)
     }
 
 
-    //  write_output("pilotsF.m","rsF",txdataF[0],frame_parms->ofdm_symbol_size,1,1);
+    //  LOG_M("pilotsF.m","rsF",txdataF[0],frame_parms->ofdm_symbol_size,1,1);
 
-    write_output("txsigF0.m","txsF0", eNB->common_vars.txdataF[0][0],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
+    LOG_M("txsigF0.m","txsF0", eNB->common_vars.txdataF[0][0],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
 
     if (eNB->frame_parms.nb_antennas_tx>1)
-      write_output("txsigF1.m","txsF1", eNB->common_vars.txdataF[0][1],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
+      LOG_M("txsigF1.m","txsF1", eNB->common_vars.txdataF[0][1],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
 
     tx_lev = 0;
     tx_lev1 = 0;
@@ -710,10 +710,10 @@ int main(int argc, char **argv)
                                  OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES);
       }
 
-      write_output("txsigF0_1.m","txsF0_1", eNB1->common_vars.txdataF[0][0],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
+      LOG_M("txsigF0_1.m","txsF0_1", eNB1->common_vars.txdataF[0][0],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
 
       if (eNB1->frame_parms.nb_antennas_tx>1)
-        write_output("txsigF1_1.m","txsF1_1", eNB1->common_vars.txdataF[0][1],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
+        LOG_M("txsigF1_1.m","txsF1_1", eNB1->common_vars.txdataF[0][1],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
     }
 
     if (interf2>-20) {
@@ -736,28 +736,28 @@ int main(int argc, char **argv)
                                  OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES);
       }
 
-      write_output("txsigF0_2.m","txsF0_2", eNB2->common_vars.txdataF[0][0],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
+      LOG_M("txsigF0_2.m","txsF0_2", eNB2->common_vars.txdataF[0][0],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
 
       if (eNB2->frame_parms.nb_antennas_tx>1)
-        write_output("txsigF1_2.m","txsF1_2", eNB2->common_vars.txdataF[0][1],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
+        LOG_M("txsigF1_2.m","txsF1_2", eNB2->common_vars.txdataF[0][1],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
     }
 
     //    tx_lev_dB = (unsigned int) dB_fixed(tx_lev);
 
-    write_output("txsig0.m","txs0", txdata[0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+    LOG_M("txsig0.m","txs0", txdata[0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
 
     if (frame_parms->nb_antennas_tx>1)
-      write_output("txsig1.m","txs1", txdata[1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+      LOG_M("txsig1.m","txs1", txdata[1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
 
-    write_output("txsig0_1.m","txs0_1", eNB1->common_vars.txdata[0][0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+    LOG_M("txsig0_1.m","txs0_1", eNB1->common_vars.txdata[0][0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
 
     if (frame_parms->nb_antennas_tx>1)
-      write_output("txsig1_1.m","txs1_1", eNB1->common_vars.txdata[0][1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+      LOG_M("txsig1_1.m","txs1_1", eNB1->common_vars.txdata[0][1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
 
-    write_output("txsig0_2.m","txs0_2", eNB2->common_vars.txdata[0][0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+    LOG_M("txsig0_2.m","txs0_2", eNB2->common_vars.txdata[0][0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
 
     if (frame_parms->nb_antennas_tx>1)
-      write_output("txsig1_2.m","txs1_2", eNB2->common_vars.txdata[0][1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+      LOG_M("txsig1_2.m","txs1_2", eNB2->common_vars.txdata[0][1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
   } else { //read in from file
     i=0;
 
@@ -782,8 +782,8 @@ int main(int argc, char **argv)
     }
 
     printf("Read in %d samples\n",i/4);
-    write_output("txsig0.m","txs0", txdata[0],2*frame_parms->samples_per_tti,1,1);
-    //    write_output("txsig1.m","txs1", txdata[1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+    LOG_M("txsig0.m","txs0", txdata[0],2*frame_parms->samples_per_tti,1,1);
+    //    LOG_M("txsig1.m","txs1", txdata[1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
     tx_lev = signal_energy(&txdata[0][0],
                            OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES);
     //    tx_lev_dB = (unsigned int) dB_fixed(tx_lev);
@@ -960,7 +960,7 @@ int main(int argc, char **argv)
           if (l==((eNB->frame_parms.Ncp==0)?4:3)) {
             //sprintf(fname,"dl_ch00_%d.m",l);
             //sprintf(vname,"dl_ch00_%d",l);
-            //write_output(fname,vname,&(common_vars->dl_ch_estimates[0][frame_parms->ofdm_symbol_size*(l%6)]),frame_parms->ofdm_symbol_size,1,1);
+            //LOG_M(fname,vname,&(common_vars->dl_ch_estimates[0][frame_parms->ofdm_symbol_size*(l%6)]),frame_parms->ofdm_symbol_size,1,1);
 
             lte_est_freq_offset(UE->common_vars.common_vars_rx_data_per_thread[/*subframe*/0&0x1].dl_ch_estimates[0],
                                 &UE->frame_parms,
@@ -1050,16 +1050,16 @@ int main(int argc, char **argv)
 
   if (n_frames==1) {
 
-    write_output("H00.m","h00",&(UE->common_vars.common_vars_rx_data_per_thread[/*subframe*/0&0x1].dl_ch_estimates[0][0][0]),((frame_parms->Ncp==0)?7:6)*(eNB->frame_parms.ofdm_symbol_size),1,1);
+    LOG_M("H00.m","h00",&(UE->common_vars.common_vars_rx_data_per_thread[/*subframe*/0&0x1].dl_ch_estimates[0][0][0]),((frame_parms->Ncp==0)?7:6)*(eNB->frame_parms.ofdm_symbol_size),1,1);
 
     if (n_tx==2)
-      write_output("H10.m","h10",&(UE->common_vars.common_vars_rx_data_per_thread[/*subframe*/0&0x1].dl_ch_estimates[0][2][0]),((frame_parms->Ncp==0)?7:6)*(eNB->frame_parms.ofdm_symbol_size),1,1);
+      LOG_M("H10.m","h10",&(UE->common_vars.common_vars_rx_data_per_thread[/*subframe*/0&0x1].dl_ch_estimates[0][2][0]),((frame_parms->Ncp==0)?7:6)*(eNB->frame_parms.ofdm_symbol_size),1,1);
 
-    write_output("rxsig0.m","rxs0", UE->common_vars.rxdata[0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
-    write_output("rxsigF0.m","rxsF0", UE->common_vars.common_vars_rx_data_per_thread[/*subframe*/0&0x1].rxdataF[0],NUMBER_OF_OFDM_CARRIERS*2*((frame_parms->Ncp==0)?14:12),2,1);
-    write_output("PBCH_rxF0_ext.m","pbch0_ext",UE->pbch_vars[0]->rxdataF_ext[0],12*4*6,1,1);
-    write_output("PBCH_rxF0_comp.m","pbch0_comp",UE->pbch_vars[0]->rxdataF_comp[0],12*4*6,1,1);
-    write_output("PBCH_rxF_llr.m","pbch_llr",UE->pbch_vars[0]->llr,(frame_parms->Ncp==0) ? 1920 : 1728,1,4);
+    LOG_M("rxsig0.m","rxs0", UE->common_vars.rxdata[0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+    LOG_M("rxsigF0.m","rxsF0", UE->common_vars.common_vars_rx_data_per_thread[/*subframe*/0&0x1].rxdataF[0],NUMBER_OF_OFDM_CARRIERS*2*((frame_parms->Ncp==0)?14:12),2,1);
+    LOG_M("PBCH_rxF0_ext.m","pbch0_ext",UE->pbch_vars[0]->rxdataF_ext[0],12*4*6,1,1);
+    LOG_M("PBCH_rxF0_comp.m","pbch0_comp",UE->pbch_vars[0]->rxdataF_comp[0],12*4*6,1,1);
+    LOG_M("PBCH_rxF_llr.m","pbch_llr",UE->pbch_vars[0]->llr,(frame_parms->Ncp==0) ? 1920 : 1728,1,4);
   }
 
 
diff --git a/openair1/SIMULATION/LTE_PHY/pdcchsim.c b/openair1/SIMULATION/LTE_PHY/pdcchsim.c
index ef0e22149141a2f3de879d8ae01e5e74acd05d61..ac442ae5e97f6c21a56308ca37a0a0e4503cb03e 100644
--- a/openair1/SIMULATION/LTE_PHY/pdcchsim.c
+++ b/openair1/SIMULATION/LTE_PHY/pdcchsim.c
@@ -787,8 +787,8 @@ int main(int argc, char **argv)
     }
 
     printf("Read in %d samples\n",i/4);
-    write_output("txsig0.m","txs0", txdata[0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
-    //    write_output("txsig1.m","txs1", txdata[1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+    LOG_M("txsig0.m","txs0", txdata[0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+    //    LOG_M("txsig1.m","txs1", txdata[1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
     tx_lev = signal_energy(&txdata[0][0],
                            OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES);
     tx_lev_dB = (unsigned int) dB_fixed(tx_lev);
@@ -949,13 +949,13 @@ int main(int argc, char **argv)
           
         }
 
-        //  write_output("pilotsF.m","rsF",txdataF[0],lte_eNB->frame_parms.ofdm_symbol_size,1,1);
+        //  LOG_M("pilotsF.m","rsF",txdataF[0],lte_eNB->frame_parms.ofdm_symbol_size,1,1);
 
         if (n_frames==1) {
-          write_output("txsigF0.m","txsF0", eNB->common_vars.txdataF[eNb_id][0],4*nsymb*OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES_NO_PREFIX,1,1);
+          LOG_M("txsigF0.m","txsF0", eNB->common_vars.txdataF[eNb_id][0],4*nsymb*OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES_NO_PREFIX,1,1);
 
           if (eNB->frame_parms.nb_antenna_ports_eNB > 1)
-            write_output("txsigF1.m","txsF1", eNB->common_vars.txdataF[eNb_id][1],4*nsymb*OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES_NO_PREFIX,1,1);
+            LOG_M("txsigF1.m","txsF1", eNB->common_vars.txdataF[eNb_id][1],4*nsymb*OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES_NO_PREFIX,1,1);
         }
 
         tx_lev = 0;
@@ -1009,7 +1009,7 @@ int main(int argc, char **argv)
                           2*nsymb*OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES,0);
       }
 
-      //write_output("channel0.m","chan0",ch[0],channel_length,1,8);
+      //LOG_M("channel0.m","chan0",ch[0],channel_length,1,8);
 
       // scale by path_loss = NOW - P_noise
       //sigma2       = pow(10,sigma2_dB/10);
@@ -1056,8 +1056,8 @@ int main(int argc, char **argv)
             // fill in perfect channel estimates
             freq_channel(eNB2UE,UE->frame_parms.N_RB_DL,12*UE->frame_parms.N_RB_DL + 1);
 
-            //write_output("channel.m","ch",desc1->ch[0],desc1->channel_length,1,8);
-            //write_output("channelF.m","chF",desc1->chF[0],nb_samples,1,8);
+            //LOG_M("channel.m","ch",desc1->ch[0],desc1->channel_length,1,8);
+            //LOG_M("channelF.m","chF",desc1->chF[0],nb_samples,1,8);
             for(k=0; k<NUMBER_OF_eNB_MAX; k++) {
               for(aa=0; aa<frame_parms->nb_antennas_tx; aa++) {
                 for (aarx=0; aarx<frame_parms->nb_antennas_rx; aarx++) {
@@ -1084,7 +1084,7 @@ int main(int argc, char **argv)
 
         if (l==((eNB->frame_parms.Ncp==0)?4:3)) {
 
-          //      write_output("H00.m","h00",&(UE->common_vars.dl_ch_estimates[0][0][0]),((frame_parms->Ncp==0)?7:6)*(eNB->frame_parms.ofdm_symbol_size),1,1);
+          //      LOG_M("H00.m","h00",&(UE->common_vars.dl_ch_estimates[0][0][0]),((frame_parms->Ncp==0)?7:6)*(eNB->frame_parms.ofdm_symbol_size),1,1);
 
           // do PDCCH procedures here
           UE->pdcch_vars[0][0]->crnti = n_rnti;
@@ -1206,27 +1206,27 @@ int main(int argc, char **argv)
  
 
   if (n_frames==1) {
-    write_output("txsig0.m","txs0", txdata[0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+    LOG_M("txsig0.m","txs0", txdata[0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
 
     if (n_tx>1)
-      write_output("txsig1.m","txs1", txdata[1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+      LOG_M("txsig1.m","txs1", txdata[1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
 
-    write_output("rxsig0.m","rxs0", UE->common_vars.rxdata[0],10*frame_parms->samples_per_tti,1,1);
-    write_output("rxsigF0.m","rxsF0", UE->common_vars.common_vars_rx_data_per_thread[subframe&0x1].rxdataF[0],NUMBER_OF_OFDM_CARRIERS*2*((frame_parms->Ncp==0)?14:12),2,1);
+    LOG_M("rxsig0.m","rxs0", UE->common_vars.rxdata[0],10*frame_parms->samples_per_tti,1,1);
+    LOG_M("rxsigF0.m","rxsF0", UE->common_vars.common_vars_rx_data_per_thread[subframe&0x1].rxdataF[0],NUMBER_OF_OFDM_CARRIERS*2*((frame_parms->Ncp==0)?14:12),2,1);
 
     if (n_rx>1) {
-      write_output("rxsig1.m","rxs1", UE->common_vars.rxdata[1],10*frame_parms->samples_per_tti,1,1);
-      write_output("rxsigF1.m","rxsF1", UE->common_vars.common_vars_rx_data_per_thread[subframe&0x1].rxdataF[1],NUMBER_OF_OFDM_CARRIERS*2*((frame_parms->Ncp==0)?14:12),2,1);
+      LOG_M("rxsig1.m","rxs1", UE->common_vars.rxdata[1],10*frame_parms->samples_per_tti,1,1);
+      LOG_M("rxsigF1.m","rxsF1", UE->common_vars.common_vars_rx_data_per_thread[subframe&0x1].rxdataF[1],NUMBER_OF_OFDM_CARRIERS*2*((frame_parms->Ncp==0)?14:12),2,1);
     }
 
-    write_output("H00.m","h00",&(UE->common_vars.common_vars_rx_data_per_thread[subframe&0x1].dl_ch_estimates[0][0][0]),((frame_parms->Ncp==0)?7:6)*(eNB->frame_parms.ofdm_symbol_size),1,1);
+    LOG_M("H00.m","h00",&(UE->common_vars.common_vars_rx_data_per_thread[subframe&0x1].dl_ch_estimates[0][0][0]),((frame_parms->Ncp==0)?7:6)*(eNB->frame_parms.ofdm_symbol_size),1,1);
 
     if (n_tx==2)
-      write_output("H10.m","h10",&(UE->common_vars.common_vars_rx_data_per_thread[subframe&0x1].dl_ch_estimates[0][2][0]),((frame_parms->Ncp==0)?7:6)*(eNB->frame_parms.ofdm_symbol_size),1,1);
+      LOG_M("H10.m","h10",&(UE->common_vars.common_vars_rx_data_per_thread[subframe&0x1].dl_ch_estimates[0][2][0]),((frame_parms->Ncp==0)?7:6)*(eNB->frame_parms.ofdm_symbol_size),1,1);
 
-    write_output("pdcch_rxF_ext0.m","pdcch_rxF_ext0",UE->pdcch_vars[0][eNb_id]->rxdataF_ext[0],3*12*UE->frame_parms.N_RB_DL,1,1);
-    write_output("pdcch_rxF_comp0.m","pdcch0_rxF_comp0",UE->pdcch_vars[0][eNb_id]->rxdataF_comp[0],4*12*UE->frame_parms.N_RB_DL,1,1);
-    write_output("pdcch_rxF_llr.m","pdcch_llr",UE->pdcch_vars[0][eNb_id]->llr,2400,1,4);
+    LOG_M("pdcch_rxF_ext0.m","pdcch_rxF_ext0",UE->pdcch_vars[0][eNb_id]->rxdataF_ext[0],3*12*UE->frame_parms.N_RB_DL,1,1);
+    LOG_M("pdcch_rxF_comp0.m","pdcch0_rxF_comp0",UE->pdcch_vars[0][eNb_id]->rxdataF_comp[0],4*12*UE->frame_parms.N_RB_DL,1,1);
+    LOG_M("pdcch_rxF_llr.m","pdcch_llr",UE->pdcch_vars[0][eNb_id]->llr,2400,1,4);
   }
 
   lte_sync_time_free();
diff --git a/openair1/SIMULATION/LTE_PHY/prachsim.c b/openair1/SIMULATION/LTE_PHY/prachsim.c
index 58f89bd65bd5dba83d41b897045e9888e8f6bc88..7475017d85becb53cb083ee93165c49795302d17 100644
--- a/openair1/SIMULATION/LTE_PHY/prachsim.c
+++ b/openair1/SIMULATION/LTE_PHY/prachsim.c
@@ -425,8 +425,8 @@ int main(int argc, char **argv)
   /* tx_lev_dB not used later, no need to set */
   //tx_lev_dB = (unsigned int) dB_fixed(tx_lev);
 
-  write_output("txsig0_new.m","txs0", &txdata[0][subframe*frame_parms->samples_per_tti],frame_parms->samples_per_tti,1,1);
-  //write_output("txsig1.m","txs1", txdata[1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+  LOG_M("txsig0_new.m","txs0", &txdata[0][subframe*frame_parms->samples_per_tti],frame_parms->samples_per_tti,1,1);
+  //LOG_M("txsig1.m","txs1", txdata[1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
 
   // multipath channel
   dump_prach_config(&eNB->frame_parms,subframe);
@@ -521,13 +521,13 @@ int main(int argc, char **argv)
             else
               printf("preamble %d : energy %d, delay %d\n",i,preamble_energy_list[i],preamble_delay_list[i]);
 
-          write_output("prach0.m","prach0", &txdata[0][subframe*frame_parms->samples_per_tti],frame_parms->samples_per_tti,1,1);
-          write_output("prachF0.m","prachF0", &eNB->prach_vars.prachF[0],24576,1,1);
-          write_output("rxsig0.m","rxs0",
+          LOG_M("prach0.m","prach0", &txdata[0][subframe*frame_parms->samples_per_tti],frame_parms->samples_per_tti,1,1);
+          LOG_M("prachF0.m","prachF0", &eNB->prach_vars.prachF[0],24576,1,1);
+          LOG_M("rxsig0.m","rxs0",
                        &eNB->common_vars.rxdata[0][0][subframe*frame_parms->samples_per_tti],
                        frame_parms->samples_per_tti,1,1);
-          write_output("rxsigF0.m","rxsF0", eNB->prach_vars.rxsigF[0],6144,1,1);
-          write_output("prach_preamble.m","prachp",&eNB->X_u[0],839,1,1);
+          LOG_M("rxsigF0.m","rxsF0", eNB->prach_vars.rxsigF[0],6144,1,1);
+          LOG_M("prach_preamble.m","prachp",&eNB->X_u[0],839,1,1);
         }
       }
 
diff --git a/openair1/SIMULATION/LTE_PHY/pucchsim.c b/openair1/SIMULATION/LTE_PHY/pucchsim.c
index d49367c4db4be34db1d797eee23f1850de2bc686..b9e059529b6b3d98b5065b1a1b7d07008d72f75f 100644
--- a/openair1/SIMULATION/LTE_PHY/pucchsim.c
+++ b/openair1/SIMULATION/LTE_PHY/pucchsim.c
@@ -391,7 +391,7 @@ int main(int argc, char **argv)
   		   subframe, //subframe
          n_rnti);  //rnti
   }
-  write_output("txsigF0.m","txsF0", &UE->common_vars.txdataF[0][2*subframe*nsymb*OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES_NO_PREFIX],OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES_NO_PREFIX*nsymb,1,1);
+  LOG_M("txsigF0.m","txsF0", &UE->common_vars.txdataF[0][2*subframe*nsymb*OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES_NO_PREFIX],OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES_NO_PREFIX*nsymb,1,1);
 
   tx_lev = 0;
 
@@ -424,8 +424,8 @@ int main(int argc, char **argv)
 
 
 
-  write_output("txsig0.m","txs0", txdata[0], FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
-  //write_output("txsig1.m","txs1", txdata[1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+  LOG_M("txsig0.m","txs0", txdata[0], FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+  //LOG_M("txsig1.m","txs1", txdata[1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
 
   // multipath channel
 
@@ -606,10 +606,10 @@ int main(int argc, char **argv)
   }
 
   if (n_frames==1) {
-    //write_output("txsig0.m","txs0", &txdata[0][subframe*frame_parms->samples_per_tti],frame_parms->samples_per_tti,1,1);
-    write_output("txsig0pucch.m", "txs0", &txdata[0][0], FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
-    write_output("rxsig0.m","rxs0", &eNB->common_vars.rxdata[0][0][subframe*frame_parms->samples_per_tti],frame_parms->samples_per_tti,1,1);
-    write_output("rxsigF0.m","rxsF0", &eNB->common_vars.rxdataF[0][0][0],512*nsymb*2,2,1);
+    //LOG_M("txsig0.m","txs0", &txdata[0][subframe*frame_parms->samples_per_tti],frame_parms->samples_per_tti,1,1);
+    LOG_M("txsig0pucch.m", "txs0", &txdata[0][0], FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+    LOG_M("rxsig0.m","rxs0", &eNB->common_vars.rxdata[0][0][subframe*frame_parms->samples_per_tti],frame_parms->samples_per_tti,1,1);
+    LOG_M("rxsigF0.m","rxsF0", &eNB->common_vars.rxdataF[0][0][0],512*nsymb*2,2,1);
   }
 
 
diff --git a/openair1/SIMULATION/LTE_PHY/scansim.c b/openair1/SIMULATION/LTE_PHY/scansim.c
index 69aee01b32b472db4be2d149b6453cb27aaa0064..cb419f57c248a5f7011a126639d831b118104a0b 100644
--- a/openair1/SIMULATION/LTE_PHY/scansim.c
+++ b/openair1/SIMULATION/LTE_PHY/scansim.c
@@ -521,10 +521,10 @@ int main(int argc, char **argv)
     pbch_pdu,
     pbch_phase);
   */
-  write_output("txsigF0.m","txsF0", PHY_vars_eNB->lte_eNB_common_vars.txdataF[0][0],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
+  LOG_M("txsigF0.m","txsF0", PHY_vars_eNB->lte_eNB_common_vars.txdataF[0][0],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
 
   if (PHY_vars_eNB->lte_frame_parms.nb_antennas_tx>1)
-    write_output("txsigF1.m","txsF1", PHY_vars_eNB->lte_eNB_common_vars.txdataF[0][1],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
+    LOG_M("txsigF1.m","txsF1", PHY_vars_eNB->lte_eNB_common_vars.txdataF[0][1],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
 
   tx_lev = 0;
   tx_lev1 = 0;
@@ -553,10 +553,10 @@ int main(int argc, char **argv)
   }
 
 
-  write_output("txsig0.m","txs0", txdata[0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+  LOG_M("txsig0.m","txs0", txdata[0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
 
   if (frame_parms->nb_antennas_tx>1)
-    write_output("txsig1.m","txs1", txdata[1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+    LOG_M("txsig1.m","txs1", txdata[1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
 
   // multipath channel
 
diff --git a/openair1/SIMULATION/LTE_PHY/syncsim.c b/openair1/SIMULATION/LTE_PHY/syncsim.c
index e491944ccf555e55797d42b6a114d77e8e3fd8b6..59116bc5e176ebf4565fd1bde7f2ff27148ba56b 100644
--- a/openair1/SIMULATION/LTE_PHY/syncsim.c
+++ b/openair1/SIMULATION/LTE_PHY/syncsim.c
@@ -1108,12 +1108,12 @@ int main(int argc, char **argv)
            5);
     */
 
-    //  write_output("pilotsF.m","rsF",txdataF[0],lte_frame_parms->ofdm_symbol_size,1,1);
+    //  LOG_M("pilotsF.m","rsF",txdataF[0],lte_frame_parms->ofdm_symbol_size,1,1);
 #ifdef IFFT_FPGA
-    write_output("txsigF0.m","txsF0", PHY_vars_eNB->lte_eNB_common_vars.txdataF[eNb_id][0],300*120,1,4);
+    LOG_M("txsigF0.m","txsF0", PHY_vars_eNB->lte_eNB_common_vars.txdataF[eNb_id][0],300*120,1,4);
 
     if (PHY_vars_eNB->lte_frame_parms.nb_antennas_tx>1)
-      write_output("txsigF1.m","txsF1", PHY_vars_eNB->lte_eNB_common_vars.txdataF[eNb_id][1],300*120,1,4);
+      LOG_M("txsigF1.m","txsF1", PHY_vars_eNB->lte_eNB_common_vars.txdataF[eNb_id][1],300*120,1,4);
 
     for (i=0; i<10; i++)
       debug_msg("%08x\n",((unsigned int*)&PHY_vars_eNB->lte_eNB_common_vars.txdataF[0][0][1*(PHY_vars_eNB->lte_frame_parms.N_RB_DL*12)*(PHY_vars_eNB->lte_frame_parms.symbols_per_tti>>1)])[i]);
@@ -1134,10 +1134,10 @@ int main(int argc, char **argv)
       //printf("l=%d\n",l);
     }
 
-    write_output("txsigF20.m","txsF20", txdataF2[0],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
+    LOG_M("txsigF20.m","txsF20", txdataF2[0],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
 
     if (PHY_vars_eNB->lte_frame_parms.nb_antennas_tx>1)
-      write_output("txsigF21.m","txsF21", txdataF2[1],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
+      LOG_M("txsigF21.m","txsF21", txdataF2[1],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
 
 
     tx_lev=0;
@@ -1162,10 +1162,10 @@ int main(int argc, char **argv)
     }
 
 #else
-    write_output("txsigF0.m","txsF0", PHY_vars_eNB->lte_eNB_common_vars.txdataF[eNb_id][0],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
+    LOG_M("txsigF0.m","txsF0", PHY_vars_eNB->lte_eNB_common_vars.txdataF[eNb_id][0],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
 
     if (PHY_vars_eNB->lte_frame_parms.nb_antennas_tx>1)
-      write_output("txsigF1.m","txsF1", PHY_vars_eNB->lte_eNB_common_vars.txdataF[eNb_id][1],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
+      LOG_M("txsigF1.m","txsF1", PHY_vars_eNB->lte_eNB_common_vars.txdataF[eNb_id][1],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
 
     tx_lev = 0;
 
@@ -1237,10 +1237,10 @@ int main(int argc, char **argv)
 
 
 
-    write_output("txsig0.m","txs0", txdata[0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+    LOG_M("txsig0.m","txs0", txdata[0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
 
     if (frame_parms->nb_antennas_tx>1)
-      write_output("txsig1.m","txs1", txdata[1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+      LOG_M("txsig1.m","txs1", txdata[1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
   } else if ((oai_hw_input==0)&&(oai_hw_output==0)) { //read in from file
     i=0;
 
@@ -1264,8 +1264,8 @@ int main(int argc, char **argv)
     }
 
     printf("Read in %d samples (%d)\n",i,FRAME_LENGTH_COMPLEX_SAMPLES);
-    write_output("txsig0.m","txs0", txdata[0],10*frame_parms->samples_per_tti,1,1);
-    //    write_output("txsig1.m","txs1", txdata[1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+    LOG_M("txsig0.m","txs0", txdata[0],10*frame_parms->samples_per_tti,1,1);
+    //    LOG_M("txsig1.m","txs1", txdata[1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
     tx_lev = signal_energy(&txdata[0][0],
                            OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES);
   } else { // get from OAI HW
@@ -1678,19 +1678,19 @@ int main(int argc, char **argv)
 
     if (n_frames==1) {
 
-      write_output("H00.m","h00",&(PHY_vars_UE[0]->lte_ue_common_vars.common_vars_rx_data_per_thread[subframe&0x1].dl_ch_estimates[0][0][0]),((frame_parms->Ncp==0)?7:6)*(PHY_vars_eNB->lte_frame_parms.ofdm_symbol_size),1,1);
+      LOG_M("H00.m","h00",&(PHY_vars_UE[0]->lte_ue_common_vars.common_vars_rx_data_per_thread[subframe&0x1].dl_ch_estimates[0][0][0]),((frame_parms->Ncp==0)?7:6)*(PHY_vars_eNB->lte_frame_parms.ofdm_symbol_size),1,1);
 
       if (n_tx==2)
-        write_output("H10.m","h10",&(PHY_vars_UE[0]->lte_ue_common_vars.common_vars_rx_data_per_thread[subframe&0x1].dl_ch_estimates[0][2][0]),((frame_parms->Ncp==0)?7:6)*(PHY_vars_eNB->lte_frame_parms.ofdm_symbol_size),1,1);
-
-      write_output("rxsig0.m","rxs0", PHY_vars_UE[0]->lte_ue_common_vars.rxdata[0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
-      write_output("rxsigF0.m","rxsF0", PHY_vars_UE[0]->lte_ue_common_vars.rxdataF[0],NUMBER_OF_OFDM_CARRIERS*LTE_NUMBER_OF_SUBFRAMES_PER_FRAME*nsymb,2,1);
-      write_output("PBCH_rxF0_ext.m","pbch0_ext",PHY_vars_UE[0]->lte_ue_pbch_vars[0]->rxdataF_ext[0],12*4*6,1,1);
-      write_output("PBCH_rxF0_comp.m","pbch0_comp",PHY_vars_UE[0]->lte_ue_pbch_vars[0]->rxdataF_comp[0],12*4*6,1,1);
-      write_output("PBCH_rxF_llr.m","pbch_llr",PHY_vars_UE[0]->lte_ue_pbch_vars[0]->llr,(frame_parms->Ncp==0) ? 1920 : 1728,1,4);
-      write_output("pdcch_rxF_ext0.m","pdcch_rxF_ext0",PHY_vars_UE[0]->lte_ue_pdcch_vars[eNb_id]->rxdataF_ext[0],3*300,1,1);
-      write_output("pdcch_rxF_comp0.m","pdcch0_rxF_comp0",PHY_vars_UE[0]->lte_ue_pdcch_vars[eNb_id]->rxdataF_comp[0],4*300,1,1);
-      write_output("pdcch_rxF_llr.m","pdcch_llr",PHY_vars_UE[0]->lte_ue_pdcch_vars[eNb_id]->llr,2400,1,4);
+        LOG_M("H10.m","h10",&(PHY_vars_UE[0]->lte_ue_common_vars.common_vars_rx_data_per_thread[subframe&0x1].dl_ch_estimates[0][2][0]),((frame_parms->Ncp==0)?7:6)*(PHY_vars_eNB->lte_frame_parms.ofdm_symbol_size),1,1);
+
+      LOG_M("rxsig0.m","rxs0", PHY_vars_UE[0]->lte_ue_common_vars.rxdata[0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+      LOG_M("rxsigF0.m","rxsF0", PHY_vars_UE[0]->lte_ue_common_vars.rxdataF[0],NUMBER_OF_OFDM_CARRIERS*LTE_NUMBER_OF_SUBFRAMES_PER_FRAME*nsymb,2,1);
+      LOG_M("PBCH_rxF0_ext.m","pbch0_ext",PHY_vars_UE[0]->lte_ue_pbch_vars[0]->rxdataF_ext[0],12*4*6,1,1);
+      LOG_M("PBCH_rxF0_comp.m","pbch0_comp",PHY_vars_UE[0]->lte_ue_pbch_vars[0]->rxdataF_comp[0],12*4*6,1,1);
+      LOG_M("PBCH_rxF_llr.m","pbch_llr",PHY_vars_UE[0]->lte_ue_pbch_vars[0]->llr,(frame_parms->Ncp==0) ? 1920 : 1728,1,4);
+      LOG_M("pdcch_rxF_ext0.m","pdcch_rxF_ext0",PHY_vars_UE[0]->lte_ue_pdcch_vars[eNb_id]->rxdataF_ext[0],3*300,1,1);
+      LOG_M("pdcch_rxF_comp0.m","pdcch0_rxF_comp0",PHY_vars_UE[0]->lte_ue_pdcch_vars[eNb_id]->rxdataF_comp[0],4*300,1,1);
+      LOG_M("pdcch_rxF_llr.m","pdcch_llr",PHY_vars_UE[0]->lte_ue_pdcch_vars[eNb_id]->llr,2400,1,4);
 
       coded_bits_per_codeword = get_G(&PHY_vars_UE[0]->lte_frame_parms,
                                       PHY_vars_UE[0]->dlsch_ue[0][0]->nb_rb,
diff --git a/openair1/SIMULATION/LTE_PHY/test.c b/openair1/SIMULATION/LTE_PHY/test.c
index b7781ce6908d2eb430c78e56d32eecfb16c936ef..06785f7cdc2a533375b826bbbcb7cd510decae9b 100644
--- a/openair1/SIMULATION/LTE_PHY/test.c
+++ b/openair1/SIMULATION/LTE_PHY/test.c
@@ -281,8 +281,8 @@ int main(int argc, char **argv)
 
 #endif
 
-  write_output("rxsig0.m","rxs0",rxdata[0],lte_frame_parms->samples_per_tti>>1,1,1);
-  write_output("rxsig1.m","rxs1",rxdata[1],lte_frame_parms->samples_per_tti>>1,1,1);
+  LOG_M("rxsig0.m","rxs0",rxdata[0],lte_frame_parms->samples_per_tti>>1,1,1);
+  LOG_M("rxsig1.m","rxs1",rxdata[1],lte_frame_parms->samples_per_tti>>1,1,1);
 
 
 #ifdef IFFT_FPGA
diff --git a/openair1/SIMULATION/LTE_PHY/ulsim.c b/openair1/SIMULATION/LTE_PHY/ulsim.c
index 22cac3719374c4dcd86a2e71eefc17151dc97d2f..5d984177f578da7d29f0068529d540368f911900 100644
--- a/openair1/SIMULATION/LTE_PHY/ulsim.c
+++ b/openair1/SIMULATION/LTE_PHY/ulsim.c
@@ -1048,8 +1048,8 @@ int main(int argc, char **argv)
         }
 
         printf("Read in %d samples\n",i/4);
-        //      write_output("txsig0UL.m","txs0", txdata[0],2*frame_parms->samples_per_tti,1,1);
-        //    write_output("txsig1.m","txs1", txdata[1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+        //      LOG_M("txsig0UL.m","txs0", txdata[0],2*frame_parms->samples_per_tti,1,1);
+        //    LOG_M("txsig1.m","txs1", txdata[1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
         tx_lev = signal_energy(&txdata[0][0],
                                OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES);
         tx_lev_dB = (unsigned int) dB_fixed(tx_lev);
@@ -1202,9 +1202,9 @@ int main(int argc, char **argv)
 
 
             if (n_frames==1) {
-              write_output("txsigF0UL.m","txsF0", &UE->common_vars.txdataF[0][eNB->frame_parms.ofdm_symbol_size*nsymb*subframe],eNB->frame_parms.ofdm_symbol_size*nsymb,1,
+              LOG_M("txsigF0UL.m","txsF0", &UE->common_vars.txdataF[0][eNB->frame_parms.ofdm_symbol_size*nsymb*subframe],eNB->frame_parms.ofdm_symbol_size*nsymb,1,
                            1);
-              //write_output("txsigF1.m","txsF1", UE->common_vars.txdataF[0],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
+              //LOG_M("txsigF1.m","txsF1", UE->common_vars.txdataF[0],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
             }
 
 	  }  // input_fd == NULL
@@ -1212,8 +1212,8 @@ int main(int argc, char **argv)
           tx_lev_dB = (unsigned int) dB_fixed_times10(tx_lev);
 
           if (n_frames==1) {
-            write_output("txsig0UL.m","txs0", &txdata[0][eNB->frame_parms.samples_per_tti*subframe],2*frame_parms->samples_per_tti,1,1);
-            //        write_output("txsig1UL.m","txs1", &txdata[1][eNB->frame_parms.samples_per_tti*subframe],2*frame_parms->samples_per_tti,1,1);
+            LOG_M("txsig0UL.m","txs0", &txdata[0][eNB->frame_parms.samples_per_tti*subframe],2*frame_parms->samples_per_tti,1,1);
+            //        LOG_M("txsig1UL.m","txs1", &txdata[1][eNB->frame_parms.samples_per_tti*subframe],2*frame_parms->samples_per_tti,1,1);
           }
 
           //AWGN
@@ -1312,8 +1312,8 @@ int main(int argc, char **argv)
           if (n_frames<=10) {
             printf("SNRmeas %f\n",SNRmeas);
 
-	    write_output("rxsig0UL.m","rxs0", &ru->common.rxdata[0][eNB->frame_parms.samples_per_tti*subframe],eNB->frame_parms.samples_per_tti,1,1);
-	    if (eNB->frame_parms.nb_antennas_rx>1) write_output("rxsig1UL.m","rxs1", &ru->common.rxdata[1][eNB->frame_parms.samples_per_tti*subframe],eNB->frame_parms.samples_per_tti,1,1);
+	    LOG_M("rxsig0UL.m","rxs0", &ru->common.rxdata[0][eNB->frame_parms.samples_per_tti*subframe],eNB->frame_parms.samples_per_tti,1,1);
+	    if (eNB->frame_parms.nb_antennas_rx>1) LOG_M("rxsig1UL.m","rxs1", &ru->common.rxdata[1][eNB->frame_parms.samples_per_tti*subframe],eNB->frame_parms.samples_per_tti,1,1);
           }
 
 
@@ -1830,8 +1830,8 @@ int main(int argc, char **argv)
     //
 
 
-    //write_output("chestim_f.m","chestf",eNB->pusch_vars[0]->drs_ch_estimates[0][0],300*12,2,1);
-    // write_output("chestim_t.m","chestt",eNB->pusch_vars[0]->drs_ch_estimates_time[0][0], (frame_parms->ofdm_symbol_size)*2,2,1);
+    //LOG_M("chestim_f.m","chestf",eNB->pusch_vars[0]->drs_ch_estimates[0][0],300*12,2,1);
+    // LOG_M("chestim_t.m","chestt",eNB->pusch_vars[0]->drs_ch_estimates_time[0][0], (frame_parms->ofdm_symbol_size)*2,2,1);
 
   }//ch realization
 
diff --git a/openair1/SIMULATION/LTE_PHY/ulsim2.c b/openair1/SIMULATION/LTE_PHY/ulsim2.c
index 6a474332e8b4d760a33f01be987c6dd39a756952..69d4dc2e3f1b5c8fdaeb6e39d58cc4e12a35250c 100644
--- a/openair1/SIMULATION/LTE_PHY/ulsim2.c
+++ b/openair1/SIMULATION/LTE_PHY/ulsim2.c
@@ -179,8 +179,8 @@ int main(int argc, char **argv)
   generate_drs_puch(lte_frame_parms,lte_ue_common_vars->txdataF[0],AMP,0,first_rb,nb_rb);
 
 #ifdef IFFT_FPGA
-  write_output("txsigF0.m","txsF0", lte_ue_common_vars->txdataF[0],300*120,1,4);
-  //write_output("txsigF1.m","txsF1", lte_ue_common_vars->txdataF[1],300*120,1,4);
+  LOG_M("txsigF0.m","txsF0", lte_ue_common_vars->txdataF[0],300*120,1,4);
+  //LOG_M("txsigF1.m","txsF1", lte_ue_common_vars->txdataF[1],300*120,1,4);
 
   // do talbe lookup and write results to txdataF2
   for (aa=0; aa<lte_frame_parms->nb_antennas_tx; aa++) {
@@ -197,8 +197,8 @@ int main(int argc, char **argv)
     printf("l=%d\n",l);
   }
 
-  write_output("txsigF20.m","txsF20", txdataF2[0],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
-  //write_output("txsigF21.m","txsF21", txdataF2[1],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
+  LOG_M("txsigF20.m","txsF20", txdataF2[0],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
+  //LOG_M("txsigF21.m","txsF21", txdataF2[1],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
 
   for (aa=0; aa<lte_frame_parms->nb_antennas_tx; aa++)
     PHY_ofdm_mod(txdataF2[aa],        // input
@@ -211,8 +211,8 @@ int main(int argc, char **argv)
                  CYCLIC_PREFIX);
 
 #else
-  write_output("txsigF0.m","txsF0", lte_ue_common_vars->txdataF[0],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
-  //write_output("txsigF1.m","txsF1", lte_ue_common_vars->txdataF[1],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
+  LOG_M("txsigF0.m","txsF0", lte_ue_common_vars->txdataF[0],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
+  //LOG_M("txsigF1.m","txsF1", lte_ue_common_vars->txdataF[1],FRAME_LENGTH_COMPLEX_SAMPLES_NO_PREFIX,1,1);
 
   for (aa=0; aa<lte_frame_parms->nb_antennas_tx; aa++) {
     PHY_ofdm_mod(lte_ue_common_vars->txdataF[aa],        // input
@@ -228,8 +228,8 @@ int main(int argc, char **argv)
 #endif
 
 
-  write_output("txsig0.m","txs0", txdata[0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
-  //write_output("txsig1.m","txs1", txdata[1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+  LOG_M("txsig0.m","txs0", txdata[0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+  //LOG_M("txsig1.m","txs1", txdata[1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
 
   // multipath channel
   randominit(0);
@@ -253,7 +253,7 @@ int main(int argc, char **argv)
                       channel_length,
                       0);
 
-    //write_output("channel0.m","chan0",ch[0],channel_length,1,8);
+    //LOG_M("channel0.m","chan0",ch[0],channel_length,1,8);
 
     // scale by path_loss = NOW - P_noise
     //sigma2       = pow(10,sigma2_dB/10);
@@ -304,8 +304,8 @@ int main(int argc, char **argv)
       }
     }
 
-    write_output("rxsig0.m","rxs0", lte_eNB_common_vars->rxdata[eNb_id][0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
-    write_output("rxsig1.m","rxs1", lte_eNB_common_vars->rxdata[eNb_id][1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+    LOG_M("rxsig0.m","rxs0", lte_eNB_common_vars->rxdata[eNb_id][0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+    LOG_M("rxsig1.m","rxs1", lte_eNB_common_vars->rxdata[eNb_id][1],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
 
     /*
     // optional: read rx_frame from file
@@ -351,15 +351,15 @@ int main(int argc, char **argv)
 
   }
 
-  write_output("rxsigF0.m","rxsF0", lte_eNB_common_vars->rxdataF[0][0],512*12*2,2,1);
-  write_output("rxsigF1.m","rxsF1", lte_eNB_common_vars->rxdataF[0][1],512*12*2,2,1);
-  write_output("srs_seq.m","srs",lte_eNB_common_vars->srs,2*lte_frame_parms->ofdm_symbol_size,2,1);
-  write_output("srs_est0.m","srsest0",lte_eNB_common_vars->srs_ch_estimates[0][0],512,1,1);
-  write_output("srs_est1.m","srsest1",lte_eNB_common_vars->srs_ch_estimates[0][1],512,1,1);
-  write_output("rxsigF0_ext.m","rxsF0_ext", lte_eNB_ulsch_vars[0]->rxdataF_ext[0][0],300*12*2,2,1);
-  write_output("rxsigF1_ext.m","rxsF1_ext", lte_eNB_ulsch_vars[0]->rxdataF_ext[0][1],300*12*2,2,1);
-  write_output("drs_est0.m","drsest0",lte_eNB_ulsch_vars[0]->drs_ch_estimates[0][0],300*12,1,1);
-  write_output("drs_est1.m","drsest1",lte_eNB_ulsch_vars[0]->drs_ch_estimates[0][1],300*12,1,1);
+  LOG_M("rxsigF0.m","rxsF0", lte_eNB_common_vars->rxdataF[0][0],512*12*2,2,1);
+  LOG_M("rxsigF1.m","rxsF1", lte_eNB_common_vars->rxdataF[0][1],512*12*2,2,1);
+  LOG_M("srs_seq.m","srs",lte_eNB_common_vars->srs,2*lte_frame_parms->ofdm_symbol_size,2,1);
+  LOG_M("srs_est0.m","srsest0",lte_eNB_common_vars->srs_ch_estimates[0][0],512,1,1);
+  LOG_M("srs_est1.m","srsest1",lte_eNB_common_vars->srs_ch_estimates[0][1],512,1,1);
+  LOG_M("rxsigF0_ext.m","rxsF0_ext", lte_eNB_ulsch_vars[0]->rxdataF_ext[0][0],300*12*2,2,1);
+  LOG_M("rxsigF1_ext.m","rxsF1_ext", lte_eNB_ulsch_vars[0]->rxdataF_ext[0][1],300*12*2,2,1);
+  LOG_M("drs_est0.m","drsest0",lte_eNB_ulsch_vars[0]->drs_ch_estimates[0][0],300*12,1,1);
+  LOG_M("drs_est1.m","drsest1",lte_eNB_ulsch_vars[0]->drs_ch_estimates[0][1],300*12,1,1);
 
 
 #ifdef IFFT_FPGA
diff --git a/openair1/SIMULATION/RF/rf.c b/openair1/SIMULATION/RF/rf.c
index 51b7e7524d4bb2bc953fc908a4b2fd1a5a0aa5ee..e317fbd154034017a40521e23ae1281318aa0f74 100644
--- a/openair1/SIMULATION/RF/rf.c
+++ b/openair1/SIMULATION/RF/rf.c
@@ -31,9 +31,9 @@ extern void randominit(void);
 extern double gaussdouble(double,double);
   //free(input_data);
 
-//extern int write_output(const char *,const char *,void *,int,int,char);
+//extern int LOG_M(const char *,const char *,void *,int,int,char);
 //flag change
-extern int write_output(const char *,const char *,void *,int,int,char);
+extern int LOG_M(const char *,const char *,void *,int,int,char);
 */
 
 //double pn[1024];
@@ -337,11 +337,11 @@ int main(int argc, char* argv[])
       length,
       12);
 
-  write_output("s_im.m","s_im",s_im[0],length,1,7);
-  write_output("s_re.m","s_re",s_re[0],length,1,7);
-  write_output("r_im.m","r_im",r_im[0],length,1,7);
-  write_output("r_re.m","r_re",r_re[0],length,1,7);
-  write_output("input.m","rfin",input[0],length,1,1);
-  write_output("output.m","rfout",output[0],length,1,1);
+  LOG_M("s_im.m","s_im",s_im[0],length,1,7);
+  LOG_M("s_re.m","s_re",s_re[0],length,1,7);
+  LOG_M("r_im.m","r_im",r_im[0],length,1,7);
+  LOG_M("r_re.m","r_re",r_re[0],length,1,7);
+  LOG_M("input.m","rfin",input[0],length,1,1);
+  LOG_M("output.m","rfout",output[0],length,1,1);
 }
 #endif
diff --git a/openair1/SIMULATION/TOOLS/rangen_double.c b/openair1/SIMULATION/TOOLS/rangen_double.c
index 6dcdd9418e2bf703a1d21d2780c184dc5cd2deeb..82b1557a5bf73a86fdf3f2b9ceb8f1ac5ee42623 100644
--- a/openair1/SIMULATION/TOOLS/rangen_double.c
+++ b/openair1/SIMULATION/TOOLS/rangen_double.c
@@ -63,33 +63,6 @@ void randominit(unsigned seed_init)
 }
 #endif
 
-#if 0
-void randominit(unsigned seed_init)
-{
-  int i;
-  // this need to be integrated with the existing rng, like taus: navid
-  LOG_D(PHY,"Initializing random number generator, seed %x\n",seed_init);
-
-  seed_init = 62110;
-
-  if (seed_init == 0) {
-    srand((unsigned)time(NULL));
-
-    seed = (unsigned int) rand();
-  } else {
-    seed = seed_init;
-  }
-
-  if (seed % 2 == 0) seed += 1; /* seed and mod are relative prime */
-
-  for (i=1; i<=97; i++) {
-    seed = a*seed;                 /* mod 2**32  */
-    ir[i]= seed;                   /* initialize the shuffle table    */
-  }
-
-  iy=1;
-}
-#endif
 /*!\brief Uniform linear congruential random number generator on \f$[0,1)\f$.  Returns a double-precision floating-point number.*/
 
 double uniformrandom(void)
diff --git a/openair1/SIMULATION/TOOLS/taus.c b/openair1/SIMULATION/TOOLS/taus.c
index 0be7952da71c4fa017e13c7a76a4f8a25342497d..e2409df5339f648c8deb9f1953c7367cc205b428 100644
--- a/openair1/SIMULATION/TOOLS/taus.c
+++ b/openair1/SIMULATION/TOOLS/taus.c
@@ -65,35 +65,6 @@ void set_taus_seed(unsigned int seed_init)
 }
 #endif
 
-#if 0
- void set_taus_seed(unsigned int seed_init)
-{
-
-  struct drand48_data buffer;
-  unsigned long result = 0;
-    s0 = (unsigned int)0x1e23d852;
-    s1 = (unsigned int)0x81f38a1c;
-    s2 = (unsigned int)0xfe1a133e;
-
-    return;
-
-  if (seed_init == 0) {
-    s0 = (unsigned int)time(NULL);
-    s1 = (unsigned int)time(NULL);
-    s2 = (unsigned int)time(NULL);
-  } else {
-   // Use reentrant version of rand48 to ensure that no conflicts with other generators occur */
-    srand48_r((long int)seed_init, &buffer);
-    mrand48_r(&buffer, (long int *)&result);
-    s0 = result;
-    mrand48_r(&buffer, (long int *)&result);
-    s1 = result;
-    mrand48_r(&buffer, (long int *)&result);
-    s2 = result;
-  }
-}
-#endif
-
 #ifdef MAIN
 
 main()
diff --git a/openair2/COMMON/platform_constants.h b/openair2/COMMON/platform_constants.h
index 917c149833f9d21df65dc988c70fa0ec14007078..f2c906bf661e2aa0e93c75fa8e55f831124f0e41 100644
--- a/openair2/COMMON/platform_constants.h
+++ b/openair2/COMMON/platform_constants.h
@@ -67,16 +67,23 @@
 
 #    define MAX_MODULES                NB_MODULES_MAX
 
-#ifdef LARGE_SCALE
+#ifndef UE_EXPANSION
+# ifdef LARGE_SCALE
 #    define MAX_MOBILES_PER_ENB         128
 #    define MAX_MOBILES_PER_ENB_NB_IoT  128
 #    define MAX_eNB                      2
-#else
+# else
 #    define MAX_MOBILES_PER_ENB         16
 #    define MAX_MOBILES_PER_ENB_NB_IoT  16
 #    define MAX_eNB                      2
+# endif
+#else
+#    define MAX_MOBILES_PER_ENB 256
+#    define MAX_MOBILES_PER_ENB_NB_IoT 256
+#    define MAX_eNB                      2
 #endif
 
+
 #define MAX_MANAGED_ENB_PER_MOBILE  2
 
 ///NB-IOT
diff --git a/openair2/LAYER2/MAC/eNB_scheduler.c b/openair2/LAYER2/MAC/eNB_scheduler.c
index c222aff64bf6ed2194075983e57d00d08826c978..9867f530cf1807237fddd7f99c14ecd25c923039 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler.c
@@ -423,16 +423,6 @@ check_ul_failure(module_id_t module_idP, int CC_id, int UE_id,
       }
     }
   }				// ul_failure_timer>0
-
-#if 0
-  /* U-plane inactivity timer is disabled. Uncomment to re-enable. */
-  UE_list->UE_sched_ctrl[UE_id].uplane_inactivity_timer++;
-  if(UE_list->UE_sched_ctrl[UE_id].uplane_inactivity_timer > (U_PLANE_INACTIVITY_VALUE*subframe_num(&RC.eNB[module_idP][CC_id]->frame_parms))){
-    LOG_D(MAC,"UE %d rnti %x: U-Plane Failure after repeated PDCCH orders: Triggering RRC \n",UE_id,rnti); 
-    mac_eNB_rrc_uplane_failure(module_idP,CC_id,frameP,subframeP,rnti);
-    UE_list->UE_sched_ctrl[UE_id].uplane_inactivity_timer  = 0;
-  }// time > 60s
-#endif
 }
 
 void
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c b/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
index 93ecdc3d4f711e79b6e9c0108a00a9a84f468d3a..e498b62a27cdc65871a9ea7b09e4662c6e674977 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
@@ -597,12 +597,6 @@ schedule_ue_spec(module_id_t module_idP,slice_id_t slice_idP,
   int header_length_last;
   int header_length_total;
 
-#if 0
-  if (UE_list->head == -1) {
-    return;
-  }
-#endif
-
   start_meas(&eNB->schedule_dlsch);
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
     (VCD_SIGNAL_DUMPER_FUNCTIONS_SCHEDULE_DLSCH, VCD_FUNCTION_IN);
@@ -761,14 +755,6 @@ schedule_ue_spec(module_id_t module_idP,slice_id_t slice_idP,
 			  CC_id, UE_id, subframeP, S_DL_NONE);
 	continue;
       }
-#warning RK->CR This old API call has to be revisited for FAPI, or logic must be changed
-#if 0
-      /* add "fake" DCI to have CCE_allocation_infeasible work properly for next allocations */
-      /* if we don't add it, next allocations may succeed but overall allocations may fail */
-      /* will be removed at the end of this function */
-      add_ue_spec_dci(&eNB->common_channels[CC_id].DCI_pdu, &(char[]) {
-	  0}, rnti, 1, aggregation, 1, format1, 0);
-#endif
 
       nb_available_rb = ue_sched_ctl->pre_nb_available_rbs[CC_id];
 
@@ -1366,12 +1352,6 @@ schedule_ue_spec(module_id_t module_idP,slice_id_t slice_idP,
 		 dlsch_buffer, sdu_length_total);
 	  // memcpy(RC.mac[0].DLSCH_pdu[0][0].payload[0][offset],dcch_buffer,sdu_lengths[0]);
 
-#if 0
-	  // fill remainder of DLSCH with random data
-	  for (j = 0; j < (TBS - sdu_length_total - offset); j++) {
-	    UE_list->DLSCH_pdu[CC_id][0][UE_id].payload[0][offset + sdu_length_total + j] = (char) (taus() & 0xff);
-	  }
-#endif
 	  // fill remainder of DLSCH with 0
 	  for (j = 0; j < (TBS - sdu_length_total - offset); j++) {
 	    UE_list->DLSCH_pdu[CC_id][0][UE_id].payload[0][offset + sdu_length_total + j] = 0;
@@ -1868,18 +1848,6 @@ void schedule_PCH(module_id_t module_idP,frame_t frameP,sub_frame_t subframeP)
 	if ((subframeP == 0 || subframeP == 1 || subframeP == 2 || subframeP == 4 || subframeP == 6 || subframeP == 9) ||
 	    (subframeP == 5 && ((frameP % 2) != 0 && (frameP % 8) != 1))) {
 	  switch (n_rb_dl) {
-#if 0
-	  case 6:
-	    n_gap = n_rb_dl/2;  /* expect: 3 */
-	    n_vrb_dl = 2*((n_gap < (n_rb_dl - n_gap)) ? n_gap : (n_rb_dl - n_gap));;  /* expect: 6 */
-	    first_rb = 0;
-	    break;
-	  case 15:
-	    n_gap = GAP_MAP[2][0];  /* expect: 8 */
-	    n_vrb_dl = 2*((n_gap < (n_rb_dl - n_gap)) ? n_gap : (n_rb_dl - n_gap));  /* expect: 14 */
-	    first_rb = 6;
-	    break;
-#endif
 	  case 25:
 	    n_gap = GAP_MAP[3][0];  /* expect: 12 */
 	    n_vrb_dl = 2*((n_gap < (n_rb_dl - n_gap)) ? n_gap : (n_rb_dl - n_gap));  /* expect: 24 */
@@ -1906,18 +1874,6 @@ void schedule_PCH(module_id_t module_idP,frame_t frameP,sub_frame_t subframeP)
 	  }
 	} else if (subframeP == 5 && ((frameP % 2) == 0 || (frameP % 8) == 1)) {  // SIB + paging
 	  switch (n_rb_dl) {
-#if 0
-	  case 6:
-	    n_gap = n_rb_dl/2;  /* expect: 3 */
-	    n_vrb_dl = 2*((n_gap < (n_rb_dl - n_gap)) ? n_gap : (n_rb_dl - n_gap));;  /* expect: 6 */
-	    first_rb = 0;
-	    break;
-	  case 15:
-	    n_gap = GAP_MAP[2][0];  /* expect: 8 */
-	    n_vrb_dl = 2*((n_gap < (n_rb_dl - n_gap)) ? n_gap : (n_rb_dl - n_gap));  /* expect: 14 */
-	    first_rb = 10;
-	    break;
-#endif
 	  case 25:
 	    n_gap = GAP_MAP[3][0];  /* expect: 12 */
 	    n_vrb_dl = 2*((n_gap < (n_rb_dl - n_gap)) ? n_gap : (n_rb_dl - n_gap));  /* expect: 24 */
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_fairRR.c b/openair2/LAYER2/MAC/eNB_scheduler_fairRR.c
index a7f5afd51d294a819914527d6bbc958b1afe03fc..cc0c0906ee51a1d294d5f9ce54eef02a3d9d179a 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_fairRR.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_fairRR.c
@@ -34,7 +34,8 @@
 #include "assertions.h"
 
 #include "PHY/phy_extern.h"
-
+#include "PHY/LTE_TRANSPORT/transport_common_proto.h"
+#include "SIMULATION/TOOLS/sim.h"
 #include "LAYER2/MAC/mac_proto.h"
 #include "LAYER2/MAC/mac_extern.h"
 #include "LAYER2/MAC/eNB_scheduler_fairRR.h"
@@ -53,6 +54,9 @@ extern uint8_t nfapi_mode;
 extern volatile int16_t phy_tx_txdataF_end;
 extern int oai_exit;
 #endif
+extern uint16_t sfnsf_add_subframe(uint16_t frameP, uint16_t subframeP, int offset);
+extern void add_subframe(uint16_t *frameP, uint16_t *subframeP, int offset);
+
 /* internal vars */
 DLSCH_UE_SELECT dlsch_ue_select[MAX_NUM_CCs];
 int last_dlsch_ue_id[MAX_NUM_CCs] = {-1};
@@ -220,11 +224,6 @@ void dlsch_scheduler_pre_ue_select_fairRR(
       }
 
       ue_sched_ctl = &UE_list->UE_sched_ctrl[UE_id];
-#if 0
-      if (ue_sched_ctl->ul_out_of_sync == 1) {
-        continue;
-      }
-#endif
       harq_pid = frame_subframe2_dl_harq_pid(cc[CC_id].tdd_Config,frameP ,subframeP);
 
       round = ue_sched_ctl->round[CC_id][harq_pid];
@@ -330,14 +329,9 @@ void dlsch_scheduler_pre_ue_select_fairRR(
         }
 
         ue_sched_ctl = &UE_list->UE_sched_ctrl[UE_id];
-#if 0
-        if (ue_sched_ctl->ul_out_of_sync == 1) {
-          continue;
-        }
-#endif
-       for(i = 0;i<dlsch_ue_select[CC_id].ue_num;i++){
+	for(i = 0;i<dlsch_ue_select[CC_id].ue_num;i++){
           if(dlsch_ue_select[CC_id].list[i].UE_id == UE_id){
-           break;
+	    break;
           }
         }
         if(i < dlsch_ue_select[CC_id].ue_num)
@@ -447,11 +441,6 @@ void dlsch_scheduler_pre_ue_select_fairRR(
         }
 
         ue_sched_ctl = &UE_list->UE_sched_ctrl[UE_id];
-#if 0
-        if (ue_sched_ctl->ul_out_of_sync == 1) {
-          continue;
-        }
-#endif
         for(i = 0;i<dlsch_ue_select[CC_id].ue_num;i++){
           if(dlsch_ue_select[CC_id].list[i].UE_id == UE_id){
            break;
@@ -581,7 +570,7 @@ void dlsch_scheduler_pre_processor_fairRR (module_id_t   Mod_id,
     LTE_eNB_UE_stats *eNB_UE_stats2 = NULL;
     UE_sched_ctrl *ue_sched_ctl1, *ue_sched_ctl2;
 #endif
-
+  memset(min_rb_unit,0,sizeof(min_rb_unit));
   for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
 
 	if (mbsfn_flag[CC_id] > 0)	// If this CC is allocated for MBSFN skip it here
@@ -606,7 +595,7 @@ void dlsch_scheduler_pre_processor_fairRR (module_id_t   Mod_id,
 						frameP,
 						subframeP,
 						N_RBG[CC_id],
-						nb_rbs_required,
+						(uint16_t (*)[NUMBER_OF_UE_MAX])nb_rbs_required,
 						rballoc_sub,
 						MIMO_mode_indicator);
 
@@ -615,12 +604,12 @@ void dlsch_scheduler_pre_processor_fairRR (module_id_t   Mod_id,
 
 #if (!defined(PRE_SCD_THREAD))
     // Store the DLSCH buffer for each logical channel
-    store_dlsch_buffer(Mod_id, frameP, subframeP);
+    store_dlsch_buffer(Mod_id,0, frameP, subframeP);
 
 
 
     // Calculate the number of RBs required by each UE on the basis of logical channel's buffer
-    assign_rbs_required(Mod_id, frameP, subframeP, nb_rbs_required,
+    assign_rbs_required(Mod_id, 0, frameP, subframeP, nb_rbs_required,
 			min_rb_unit);
 #else
     memcpy(nb_rbs_required, pre_nb_rbs_required[dlsch_ue_select_tbl_in_use] , sizeof(uint16_t)*MAX_NUM_CCs*NUMBER_OF_UE_MAX);
@@ -679,8 +668,8 @@ void dlsch_scheduler_pre_processor_fairRR (module_id_t   Mod_id,
                                               transmission_mode,
                                               min_rb_unit[CC_id],
                                               N_RB_DL,
-                                              nb_rbs_required,
-                                              nb_rbs_required_remaining,
+                                              (uint16_t (*)[NUMBER_OF_UE_MAX])nb_rbs_required,
+                                              (uint16_t (*)[NUMBER_OF_UE_MAX])nb_rbs_required_remaining,
                                               rballoc_sub,
                                               MIMO_mode_indicator);
       temp_total_rbs_count -= ue_sched_ctl->pre_nb_available_rbs[CC_id];
@@ -795,7 +784,7 @@ schedule_ue_spec_fairRR(module_id_t module_idP,
 
     uint8_t CC_id;
     int UE_id;
-    unsigned char aggregation;
+//    unsigned char aggregation;
     mac_rlc_status_resp_t rlc_status;
     unsigned char header_len_dcch = 0, header_len_dcch_tmp = 0;
     unsigned char header_len_dtch = 0, header_len_dtch_tmp =
@@ -814,7 +803,7 @@ schedule_ue_spec_fairRR(module_id_t module_idP,
     eNB_MAC_INST *eNB = RC.mac[module_idP];
     COMMON_channels_t *cc = eNB->common_channels;
     UE_list_t *UE_list = &eNB->UE_list;
-    int continue_flag = 0;
+   // int continue_flag = 0;
     int32_t normalized_rx_power, target_rx_power;
     int32_t tpc = 1;
     static int32_t tpc_accumulated = 0;
@@ -830,12 +819,6 @@ schedule_ue_spec_fairRR(module_id_t module_idP,
     int tdd_sfa;
     int ta_update;
 
-#if 0
-    if (UE_list->head == -1) {
-	return;
-    }
-#endif
-
     start_meas(&eNB->schedule_dlsch);
     VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
 	(VCD_SIGNAL_DUMPER_FUNCTIONS_SCHEDULE_DLSCH, VCD_FUNCTION_IN);
@@ -884,7 +867,7 @@ schedule_ue_spec_fairRR(module_id_t module_idP,
     }
 
     //weight = get_ue_weight(module_idP,UE_id);
-    aggregation = 2;
+//    aggregation = 2;
     for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
 	N_RB_DL[CC_id] = to_prb(cc[CC_id].mib->message.dl_Bandwidth);
 	min_rb_unit[CC_id] = get_min_rb_unit(module_idP, CC_id);
@@ -943,7 +926,7 @@ schedule_ue_spec_fairRR(module_id_t module_idP,
 
       eNB_UE_stats = &UE_list->eNB_UE_stats[CC_id][UE_id];
       ue_sched_ctl = &UE_list->UE_sched_ctrl[UE_id];
-
+/*
       switch(get_tmode(module_idP,CC_id,UE_id)){
       case 1:
       case 2:
@@ -962,7 +945,7 @@ schedule_ue_spec_fairRR(module_id_t module_idP,
         aggregation = 2;
         break;
       }
-
+*/
       if (cc[CC_id].tdd_Config != NULL) { //TDD
         set_ue_dai (subframeP,
                     UE_id,
@@ -972,14 +955,6 @@ schedule_ue_spec_fairRR(module_id_t module_idP,
         // update UL DAI after DLSCH scheduling
         set_ul_DAI(module_idP,UE_id,CC_id,frameP,subframeP);
       }
-#warning RK->CR This old API call has to be revisited for FAPI, or logic must be changed
-#if 0
-	    /* add "fake" DCI to have CCE_allocation_infeasible work properly for next allocations */
-	    /* if we don't add it, next allocations may succeed but overall allocations may fail */
-	    /* will be removed at the end of this function */
-	    add_ue_spec_dci(&eNB->common_channels[CC_id].DCI_pdu, &(char[]) {
-			    0}, rnti, 1, aggregation, 1, format1, 0);
-#endif
 
 	    nb_available_rb = ue_sched_ctl->pre_nb_available_rbs[CC_id];
 
@@ -1661,7 +1636,7 @@ schedule_ue_spec_fairRR(module_id_t module_idP,
 		    }
 		    //#endif
 #ifdef DEBUG_eNB_SCHEDULER
-		    LOG_T(MAC, "[eNB %d] First 16 bytes of DLSCH : \n");
+		    LOG_T(MAC, "[eNB %d] First 16 bytes of DLSCH : \n",module_idP );
 
 		    for (i = 0; i < 16; i++) {
 			LOG_T(MAC, "%x.", dlsch_buffer[i]);
@@ -2672,19 +2647,19 @@ void schedule_ulsch_rnti_fairRR(module_id_t   module_idP,
           if(N_RB_UL == 25){
             if (first_rb[CC_id] >= N_RB_UL-1) {
               LOG_W(MAC,"[eNB %d] frame %d subframe %d, UE %d/%x CC %d N_RB_UL %d first_rb %d: dropping, not enough RBs\n",
-                       module_idP,frameP,subframeP,UE_id,rnti,CC_id, N_RB_UL, first_rb);
+                       module_idP,frameP,subframeP,UE_id,rnti,CC_id, N_RB_UL, first_rb[CC_id]);
               break;
             }
           }else if(N_RB_UL == 50){
               if (first_rb[CC_id] >= N_RB_UL-2) {
                 LOG_W(MAC,"[eNB %d] frame %d subframe %d, UE %d/%x CC %d N_RB_UL %d first_rb %d: dropping, not enough RBs\n",
-                         module_idP,frameP,subframeP,UE_id,rnti,CC_id, N_RB_UL, first_rb);
+                         module_idP,frameP,subframeP,UE_id,rnti,CC_id, N_RB_UL, first_rb[CC_id]);
                 break;
               }
           }else if(N_RB_UL == 100){
               if (first_rb[CC_id] >= N_RB_UL-3) {
                 LOG_W(MAC,"[eNB %d] frame %d subframe %d, UE %d/%x CC %d N_RB_UL %d first_rb %d: dropping, not enough RBs\n",
-                       module_idP,frameP,subframeP,UE_id,rnti,CC_id, N_RB_UL, first_rb);
+                       module_idP,frameP,subframeP,UE_id,rnti,CC_id, N_RB_UL, first_rb[CC_id]);
                 break;
               }
           }
@@ -2925,19 +2900,6 @@ void schedule_ulsch_rnti_fairRR(module_id_t   module_idP,
             if(ulsch_ue_select[CC_id].list[ulsch_ue_num].ue_priority == SCH_UL_FIRST) {
               UE_template->scheduled_ul_bytes += get_TBS_UL(UE_template->mcs_UL[harq_pid],rb_table[rb_table_index]);
               UE_template->ul_SR = 0;
-#if 0
-              LOG_D(MAC,"[eNB %d] CC_id %d UE %d/%x : adjusting ul_total_buffer, old %d, TBS %d\n", module_idP,CC_id,UE_id,rnti,UE_template->ul_total_buffer,get_TBS_UL(UE_template->mcs_UL[harq_pid],rb_table[rb_table_index]));
-                if(ulsch_ue_select[CC_id].list[ulsch_ue_num].ul_total_buffer > 0){
-                    if (UE_template->ul_total_buffer > get_TBS_UL(UE_template->mcs_UL[harq_pid],rb_table[rb_table_index]))
-                      UE_template->ul_total_buffer -= get_TBS_UL(UE_template->mcs_UL[harq_pid],rb_table[rb_table_index]);
-                    else
-                      UE_template->ul_total_buffer = 0;
-                    LOG_D(MAC,"ul_total_buffer, new %d\n", UE_template->ul_total_buffer);
-                } else {
-                    UE_template->ul_SR = 0;
-                }
-              LOG_D(MAC,"ul_total_buffer, new %d\n", UE_template->ul_total_buffer);
-#endif
             }
             if((ulsch_ue_select[CC_id].list[ulsch_ue_num].ue_priority == SCH_UL_INACTIVE) && (ULSCH_first_end == 0)) {
                 ULSCH_first_end = 1;
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_primitives.c b/openair2/LAYER2/MAC/eNB_scheduler_primitives.c
index 1ac70037235e8a8df48ca7dd3c088d1c295d2285..e9c54c7c7bc00c1572138a379df147873aca1d92 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_primitives.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_primitives.c
@@ -1339,13 +1339,6 @@ fill_nfapi_harq_information(module_id_t                      module_idP,
 
   AssertFatal(UE_id >= 0, "UE_id cannot be found, impossible\n");
   AssertFatal(UE_list != NULL, "UE_list is null\n");
-#if 0
-  /* TODO: revisit, don't use Assert, it's perfectly possible to
-   * have physicalConfigDedicated NULL here
-   */
-  AssertFatal(UE_list->UE_template[CC_idP][UE_id].physicalConfigDedicated != NULL,
-	      "physicalConfigDedicated for rnti %x is null\n", rntiP);
-#endif
 
   harq_information->harq_information_rel11.tl.tag        = NFAPI_UL_CONFIG_REQUEST_HARQ_INFORMATION_REL11_TAG;
   harq_information->harq_information_rel11.num_ant_ports = 1;
@@ -4298,14 +4291,6 @@ SR_indication(module_id_t mod_idP, int cc_idP, frame_t frameP,
 	    "[eNB %d][SR %x] Frame %d subframeP %d Signaling SR for UE %d on CC_id %d\n",
 	    mod_idP, rntiP, frameP, subframeP, UE_id, cc_idP);
 
-#if 0
-    UE_sched_ctrl *sched_ctl = &UE_list->UE_sched_ctrl[UE_id];
-
-    /* for the moment don't use ul_cqi from SR, value is too different from harq */
-    sched_ctl->pucch1_snr[cc_idP] = ul_cqi;
-    sched_ctl->pucch1_cqi_update[cc_idP] = 1;
-#endif
-
     UE_list->UE_template[cc_idP][UE_id].ul_SR = 1;
     UE_list->UE_template[cc_idP][UE_id].ul_active = TRUE;
     VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
index e58972c5e77214b644ea691ec0017cc119b7765d..53d9647c5bcfa2765577cea53e22133695584cd5 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
@@ -1575,34 +1575,6 @@ schedule_ulsch_rnti(module_id_t module_idP,
 	      T_INT(first_rb[CC_id]),
 	      T_INT(rb_table[rb_table_index]), T_INT(round));
 
-#if 0
-            /* This is done in rx_sdu, as it has to.
-             * Since the code is a bit different, let's keep this version here for review, in case of problem.
-             */
-	    // fill in NAK information
-
-	    hi_dci0_pdu = &hi_dci0_req_body->hi_dci0_pdu_list[hi_dci0_req_body->number_of_dci + hi_dci0_req_body->number_of_hi];
-	    memset((void *) hi_dci0_pdu, 0,
-		   sizeof(nfapi_hi_dci0_request_pdu_t));
-	    hi_dci0_pdu->pdu_type = NFAPI_HI_DCI0_HI_PDU_TYPE;
-	    hi_dci0_pdu->pdu_size = 2 + sizeof(nfapi_hi_dci0_hi_pdu);
-	    hi_dci0_pdu->hi_pdu.hi_pdu_rel8.tl.tag = NFAPI_HI_DCI0_REQUEST_HI_PDU_REL8_TAG;
-	    hi_dci0_pdu->hi_pdu.hi_pdu_rel8.resource_block_start = UE_template->first_rb_ul[harq_pid];
-	    hi_dci0_pdu->hi_pdu.hi_pdu_rel8.cyclic_shift_2_for_drms = UE_template->cshift[harq_pid];
-	    hi_dci0_pdu->hi_pdu.hi_pdu_rel8.hi_value = 0;
-	    hi_dci0_req_body->number_of_hi++;
-	    hi_dci0_req_body->sfnsf = sfnsf_add_subframe(sched_frame, sched_subframeP, 0);
-	    hi_dci0_req->sfn_sf = frameP<<4|subframeP;
-	    hi_dci0_req->header.message_id = NFAPI_HI_DCI0_REQUEST;
-
-	    LOG_D(MAC,
-		  "[eNB %d][PUSCH %d/%x] CC_id %d Frame %d subframeP %d Scheduled (PHICH) UE %d (mcs %d, first rb %d, nb_rb %d, TBS %d, round %d)\n",
-		  module_idP, harq_pid, rnti, CC_id, frameP,
-		  subframeP, UE_id, UE_template->mcs_UL[harq_pid],
-		  UE_template->first_rb_ul[harq_pid],
-		  UE_template->nb_rb_ul[harq_pid],
-		  UE_template->TBS_UL[harq_pid], round);
-#endif
 	    // Add UL_config PDUs
 	    LOG_D(MAC,
 		  "[PUSCH %d] Frame %d, Subframe %d: Adding UL CONFIG.Request for UE %d/%x, ulsch_frame %d, ulsch_subframe %d\n",
diff --git a/openair2/LAYER2/MAC/mac.h b/openair2/LAYER2/MAC/mac.h
index a5a179444eff9b49486b3abfffc316749c3467d4..15d3679eccedd6adfa1a805c34b7bc97018ad993 100644
--- a/openair2/LAYER2/MAC/mac.h
+++ b/openair2/LAYER2/MAC/mac.h
@@ -130,11 +130,7 @@
 /*!\brief Maximum number od control elemenets */
 #define MAX_NUM_CE 5
 /*!\brief Maximum number of random access process */
-#if 0 // #if defined(USRP_REC_PLAY)
-#define NB_RA_PROC_MAX 1
-#else
 #define NB_RA_PROC_MAX 4
-#endif
 /*!\brief size of buffer status report table */
 #define BSR_TABLE_SIZE 64
 /*!\brief The power headroom reporting range is from -23 ...+40 dB and beyond, with step 1 */
diff --git a/openair2/LAYER2/MAC/mac_proto.h b/openair2/LAYER2/MAC/mac_proto.h
index 069cd63829379286a3fcf20560ef77d6b856d670..a20df2909d639bed2318ceb2e5126de863c226cb 100644
--- a/openair2/LAYER2/MAC/mac_proto.h
+++ b/openair2/LAYER2/MAC/mac_proto.h
@@ -441,6 +441,7 @@ void set_ue_dai(sub_frame_t subframeP,
 		int UE_id,
 		uint8_t CC_id, uint8_t tdd_config, UE_list_t * UE_list);
 
+uint8_t frame_subframe2_dl_harq_pid(TDD_Config_t *tdd_Config, int abs_frameP, sub_frame_t subframeP);
 /** \brief First stage of PCH Scheduling. Gets a PCH SDU from RRC if available and computes the MCS required to transport it as a function of the SDU length.  It assumes a length less than or equal to 64 bytes (MCS 6, 3 PRBs).
 @param Mod_id Instance ID of eNB
 @param frame Frame index
@@ -675,6 +676,8 @@ int add_new_ue(module_id_t Mod_id, int CC_id, rnti_t rnti, int harq_pid
     );
 int rrc_mac_remove_ue(module_id_t Mod_id, rnti_t rntiP);
 
+void store_dlsch_buffer(module_id_t Mod_id, slice_id_t slice_id, frame_t frameP, sub_frame_t subframeP);
+void assign_rbs_required(module_id_t Mod_id, slice_id_t slice_id, frame_t frameP, sub_frame_t subframe, uint16_t nb_rbs_required[NFAPI_CC_MAX][MAX_MOBILES_PER_ENB], int min_rb_unit[NFAPI_CC_MAX]);
 
 int maxround(module_id_t Mod_id, uint16_t rnti, int frame,
 	     sub_frame_t subframe, uint8_t ul_flag);
diff --git a/openair2/LAYER2/MAC/main.c b/openair2/LAYER2/MAC/main.c
index d32da8ac7259fad0c17cfb06c266669059a71e76..30ee279c947ba77cb12012cca1ee71180cb047ef 100644
--- a/openair2/LAYER2/MAC/main.c
+++ b/openair2/LAYER2/MAC/main.c
@@ -62,6 +62,7 @@ void mac_top_init_eNB(void)
 		RC.mac =
 			(eNB_MAC_INST **) malloc16(RC.nb_macrlc_inst *
 						   sizeof(eNB_MAC_INST *));
+                bzero(RC.mac, RC.nb_macrlc_inst * sizeof(eNB_MAC_INST *));
         }
 	AssertFatal(RC.mac != NULL,
 		    "can't ALLOCATE %zu Bytes for %d eNB_MAC_INST with size %zu \n",
diff --git a/openair2/LAYER2/MAC/pre_processor.c b/openair2/LAYER2/MAC/pre_processor.c
index 76c87e798bcb62c908801bb4955ad520cb27e5ee..c9fef11fc2a07e9db2ea38f4695b41ea731c975e 100644
--- a/openair2/LAYER2/MAC/pre_processor.c
+++ b/openair2/LAYER2/MAC/pre_processor.c
@@ -430,36 +430,6 @@ static int ue_dl_compare(const void *_a, const void *_b, void *_params)
   }
 
     return 0;
-#if 0
-    /* The above order derives from the following.  */
-    if (round2 > round1) {	// Check first if one of the UEs has an active HARQ process which needs service and swap order
-	swap_UEs(UE_list, UE_id1, UE_id2, 0);
-    } else if (round2 == round1) {
-	// RK->NN : I guess this is for fairness in the scheduling. This doesn't make sense unless all UEs have the same configuration of logical channels.  This should be done on the sum of all information that has to be sent.  And still it wouldn't ensure fairness.  It should be based on throughput seen by each UE or maybe using the head_sdu_creation_time, i.e. swap UEs if one is waiting longer for service.
-	//  for(j=0;j<MAX_NUM_LCID;j++){
-	//    if (eNB_mac_inst[Mod_id][pCC_id1].UE_template[UE_id1].dl_buffer_info[j] <
-	//      eNB_mac_inst[Mod_id][pCC_id2].UE_template[UE_id2].dl_buffer_info[j]){
-
-	// first check the buffer status for SRB1 and SRB2
-
-	if ((UE_list->UE_template[pCC_id1][UE_id1].dl_buffer_info[1] +
-	     UE_list->UE_template[pCC_id1][UE_id1].dl_buffer_info[2]) <
-	    (UE_list->UE_template[pCC_id2][UE_id2].dl_buffer_info[1] +
-	     UE_list->UE_template[pCC_id2][UE_id2].dl_buffer_info[2])) {
-	    swap_UEs(UE_list, UE_id1, UE_id2, 0);
-	} else if (UE_list->UE_template[pCC_id1]
-		   [UE_id1].dl_buffer_head_sdu_creation_time_max <
-		   UE_list->UE_template[pCC_id2]
-		   [UE_id2].dl_buffer_head_sdu_creation_time_max) {
-	    swap_UEs(UE_list, UE_id1, UE_id2, 0);
-	} else if (UE_list->UE_template[pCC_id1][UE_id1].dl_buffer_total <
-		   UE_list->UE_template[pCC_id2][UE_id2].dl_buffer_total) {
-	    swap_UEs(UE_list, UE_id1, UE_id2, 0);
-	} else if (cqi1 < cqi2) {
-	    swap_UEs(UE_list, UE_id1, UE_id2, 0);
-	}
-    }
-#endif
 }
 
 void decode_sorting_policy(module_id_t Mod_idP, slice_id_t slice_id) {
@@ -499,10 +469,6 @@ void sort_UEs(module_id_t Mod_idP, slice_id_t slice_id, int frameP, sub_frame_t
 			continue;
 		if ((rnti = UE_RNTI(Mod_idP, i)) == NOT_A_RNTI)
 			continue;
-#if 0
-		if (UE_list->UE_sched_ctrl[i].ul_out_of_sync == 1)
-			continue;
-#endif
 		if (!ue_slice_membership(i, slice_id))
 			continue;
 
@@ -522,78 +488,6 @@ void sort_UEs(module_id_t Mod_idP, slice_id_t slice_id, int frameP, sub_frame_t
 	} else {
 		UE_list->head = -1;
 	}
-
-#if 0
-
-
-    int UE_id1, UE_id2;
-    int pCC_id1, pCC_id2;
-    int cqi1, cqi2, round1, round2;
-    int i = 0, ii = 0;		//,j=0;
-    rnti_t rnti1, rnti2;
-
-    UE_list_t *UE_list = &RC.mac[Mod_idP]->UE_list;
-
-    for (i = UE_list->head; i >= 0; i = UE_list->next[i]) {
-
-	for (ii = UE_list->next[i]; ii >= 0; ii = UE_list->next[ii]) {
-
-	    UE_id1 = i;
-	    rnti1 = UE_RNTI(Mod_idP, UE_id1);
-	    if (rnti1 == NOT_A_RNTI)
-		continue;
-	    if (UE_list->UE_sched_ctrl[UE_id1].ul_out_of_sync == 1)
-		continue;
-	    pCC_id1 = UE_PCCID(Mod_idP, UE_id1);
-	    cqi1 = maxcqi(Mod_idP, UE_id1);	//
-	    round1 = maxround(Mod_idP, rnti1, frameP, subframeP, 0);
-
-	    UE_id2 = ii;
-	    rnti2 = UE_RNTI(Mod_idP, UE_id2);
-	    if (rnti2 == NOT_A_RNTI)
-		continue;
-	    if (UE_list->UE_sched_ctrl[UE_id2].ul_out_of_sync == 1)
-		continue;
-	    cqi2 = maxcqi(Mod_idP, UE_id2);
-	    round2 = maxround(Mod_idP, rnti2, frameP, subframeP, 0);	//mac_xface->get_ue_active_harq_pid(Mod_id,rnti2,subframe,&harq_pid2,&round2,0);
-	    pCC_id2 = UE_PCCID(Mod_idP, UE_id2);
-
-	    if (round2 > round1) {	// Check first if one of the UEs has an active HARQ process which needs service and swap order
-		swap_UEs(UE_list, UE_id1, UE_id2, 0);
-	    } else if (round2 == round1) {
-		// RK->NN : I guess this is for fairness in the scheduling. This doesn't make sense unless all UEs have the same configuration of logical channels.  This should be done on the sum of all information that has to be sent.  And still it wouldn't ensure fairness.  It should be based on throughput seen by each UE or maybe using the head_sdu_creation_time, i.e. swap UEs if one is waiting longer for service.
-		//  for(j=0;j<MAX_NUM_LCID;j++){
-		//    if (eNB_mac_inst[Mod_id][pCC_id1].UE_template[UE_id1].dl_buffer_info[j] <
-		//      eNB_mac_inst[Mod_id][pCC_id2].UE_template[UE_id2].dl_buffer_info[j]){
-
-		// first check the buffer status for SRB1 and SRB2
-
-		if ((UE_list->UE_template[pCC_id1][UE_id1].
-		     dl_buffer_info[1] +
-		     UE_list->UE_template[pCC_id1][UE_id1].
-		     dl_buffer_info[2]) <
-		    (UE_list->UE_template[pCC_id2][UE_id2].
-		     dl_buffer_info[1] +
-		     UE_list->UE_template[pCC_id2][UE_id2].
-		     dl_buffer_info[2])) {
-		    swap_UEs(UE_list, UE_id1, UE_id2, 0);
-		} else if (UE_list->UE_template[pCC_id1]
-			   [UE_id1].dl_buffer_head_sdu_creation_time_max <
-			   UE_list->UE_template[pCC_id2]
-			   [UE_id2].dl_buffer_head_sdu_creation_time_max) {
-		    swap_UEs(UE_list, UE_id1, UE_id2, 0);
-		} else if (UE_list->UE_template[pCC_id1][UE_id1].
-			   dl_buffer_total <
-			   UE_list->UE_template[pCC_id2][UE_id2].
-			   dl_buffer_total) {
-		    swap_UEs(UE_list, UE_id1, UE_id2, 0);
-		} else if (cqi1 < cqi2) {
-		    swap_UEs(UE_list, UE_id1, UE_id2, 0);
-		}
-	    }
-	}
-    }
-#endif
 }
 
 void dlsch_scheduler_pre_processor_accounting(module_id_t Mod_id,
@@ -638,10 +532,6 @@ void dlsch_scheduler_pre_processor_accounting(module_id_t Mod_id,
 
     if (rnti == NOT_A_RNTI)
       continue;
-#if 0
-    if (UE_list->UE_sched_ctrl[UE_id].ul_out_of_sync == 1)
-      continue;
-#endif
     if (!ue_slice_membership(UE_id, slice_id))
       continue;
 
@@ -721,10 +611,6 @@ void dlsch_scheduler_pre_processor_accounting(module_id_t Mod_id,
 
     if (rnti == NOT_A_RNTI)
       continue;
-#if 0
-    if (UE_list->UE_sched_ctrl[UE_id].ul_out_of_sync == 1)
-      continue;
-#endif
     if (!ue_slice_membership(UE_id, slice_id))
       continue;
 
@@ -797,10 +683,6 @@ void dlsch_scheduler_pre_processor_accounting(module_id_t Mod_id,
           // LOG_D(MAC,"UE %d rnti 0x\n", UE_id, rnti );
           if (rnti == NOT_A_RNTI)
             continue;
-#if 0
-          if (UE_list->UE_sched_ctrl[UE_id].ul_out_of_sync == 1)
-            continue;
-#endif
           if (!ue_slice_membership(UE_id, slice_id))
             continue;
 
@@ -1604,20 +1486,6 @@ void ulsch_scheduler_pre_processor(module_id_t module_idP,
       }
     }
   }
-
-#if 0
-    /* this logging is wrong, ue_sched_ctl may not be valid here
-     * TODO: fix
-     */
-    for (CC_id = 0; CC_id < RC.nb_mac_CC[module_idP]; CC_id++) {
-
-	if (total_allocated_rbs[CC_id] > 0) {
-	    LOG_D(MAC, "[eNB %d] total RB allocated for all UEs = %d/%d\n",
-		  module_idP, total_allocated_rbs[CC_id],
-              ue_sched_ctl->max_rbs_allowed_slice_uplink[CC_id][slice_id] - first_rb[CC_id]);
-	}
-    }
-#endif
 }
 
 void
@@ -1803,31 +1671,6 @@ static int ue_ul_compare(const void *_a, const void *_b, void *_params)
 	return 1;
 
     return 0;
-
-#if 0
-    /* The above order derives from the following.
-     * The last case is not handled: "if (UE_list->UE_template[pCCid2][UE_id2].ul_total_buffer > 0 )"
-     * I don't think it makes a big difference.
-     */
-    if (round2 > round1) {
-	swap_UEs(UE_list, UE_id1, UE_id2, 1);
-    } else if (round2 == round1) {
-	if (UE_list->UE_template[pCCid1][UE_id1].ul_buffer_info[LCGID0] <
-	    UE_list->UE_template[pCCid2][UE_id2].ul_buffer_info[LCGID0]) {
-	    swap_UEs(UE_list, UE_id1, UE_id2, 1);
-	} else if (UE_list->UE_template[pCCid1][UE_id1].ul_total_buffer <
-		   UE_list->UE_template[pCCid2][UE_id2].ul_total_buffer) {
-	    swap_UEs(UE_list, UE_id1, UE_id2, 1);
-	} else if (UE_list->UE_template[pCCid1][UE_id1].
-		   pre_assigned_mcs_ul <
-		   UE_list->UE_template[pCCid2][UE_id2].
-		   pre_assigned_mcs_ul) {
-	    if (UE_list->UE_template[pCCid2][UE_id2].ul_total_buffer > 0) {
-		swap_UEs(UE_list, UE_id1, UE_id2, 1);
-	    }
-	}
-    }
-#endif
 }
 
 void sort_ue_ul(module_id_t module_idP, int frameP, sub_frame_t subframeP)
@@ -1862,71 +1705,4 @@ void sort_ue_ul(module_id_t module_idP, int frameP, sub_frame_t subframeP)
     } else {
 	UE_list->head_ul = -1;
     }
-
-#if 0
-    int UE_id1, UE_id2;
-    int pCCid1, pCCid2;
-    int round1, round2;
-    int i = 0, ii = 0;
-    rnti_t rnti1, rnti2;
-
-    UE_list_t *UE_list = &RC.mac[module_idP]->UE_list;
-
-    for (i = UE_list->head_ul; i >= 0; i = UE_list->next_ul[i]) {
-
-	//LOG_I(MAC,"sort ue ul i %d\n",i);
-	for (ii = UE_list->next_ul[i]; ii >= 0; ii = UE_list->next_ul[ii]) {
-	    //LOG_I(MAC,"sort ul ue 2 ii %d\n",ii);
-
-	    UE_id1 = i;
-	    rnti1 = UE_RNTI(module_idP, UE_id1);
-
-	    if (rnti1 == NOT_A_RNTI)
-		continue;
-	    if (UE_list->UE_sched_ctrl[i].ul_out_of_sync == 1)
-		continue;
-
-
-	    pCCid1 = UE_PCCID(module_idP, UE_id1);
-	    round1 = maxround(module_idP, rnti1, frameP, subframeP, 1);
-
-	    UE_id2 = ii;
-	    rnti2 = UE_RNTI(module_idP, UE_id2);
-
-	    if (rnti2 == NOT_A_RNTI)
-		continue;
-	    if (UE_list->UE_sched_ctrl[UE_id2].ul_out_of_sync == 1)
-		continue;
-
-	    pCCid2 = UE_PCCID(module_idP, UE_id2);
-	    round2 = maxround(module_idP, rnti2, frameP, subframeP, 1);
-
-	    if (round2 > round1) {
-		swap_UEs(UE_list, UE_id1, UE_id2, 1);
-	    } else if (round2 == round1) {
-		if (UE_list->
-		    UE_template[pCCid1][UE_id1].ul_buffer_info[LCGID0] <
-		    UE_list->UE_template[pCCid2][UE_id2].
-		    ul_buffer_info[LCGID0]) {
-		    swap_UEs(UE_list, UE_id1, UE_id2, 1);
-		} else if (UE_list->UE_template[pCCid1][UE_id1].
-			   ul_total_buffer <
-			   UE_list->UE_template[pCCid2][UE_id2].
-			   ul_total_buffer) {
-		    swap_UEs(UE_list, UE_id1, UE_id2, 1);
-		} else if (UE_list->
-			   UE_template[pCCid1][UE_id1].pre_assigned_mcs_ul
-			   <
-			   UE_list->
-			   UE_template[pCCid2][UE_id2].pre_assigned_mcs_ul)
-		{
-		    if (UE_list->UE_template[pCCid2][UE_id2].
-			ul_total_buffer > 0) {
-			swap_UEs(UE_list, UE_id1, UE_id2, 1);
-		    }
-		}
-	    }
-	}
-    }
-#endif
 }
diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c
index ccee62df97fd7fc7e49ebcec0dc936826c111a23..33422c1fea64ab5515e9a9a03d506cc37f0d51f2 100644
--- a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c
+++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c
@@ -595,9 +595,7 @@ pdcp_data_ind(
     }
 
     if (pdcp_is_rx_seq_number_valid(sequence_number, pdcp_p, srb_flagP) == TRUE) {
-#if 0
       LOG_T(PDCP, "Incoming PDU has a sequence number (%d) in accordance with RX window\n", sequence_number);
-#endif
       /* if (dc == PDCP_DATA_PDU )
       LOG_D(PDCP, "Passing piggybacked SDU to NAS driver...\n");
       else
@@ -612,13 +610,9 @@ pdcp_data_ind(
        * XXX Till we implement in-sequence delivery and duplicate discarding
        * mechanism all out-of-order packets will be delivered to RRC/IP
        */
-#if 0
-      LOG_D(PDCP, "Ignoring PDU...\n");
-      free_mem_block(sdu_buffer, __func__);
+      LOG_W(PDCP, "Ignoring PDU...\n");
+      free_mem_block(sdu_buffer_pP, __func__);
       return FALSE;
-#else
-      //LOG_W(PDCP, "Delivering out-of-order SDU to upper layer...\n");
-#endif
     }
 
     // SRB1/2: control-plane data
@@ -1019,29 +1013,6 @@ pdcp_run (
     }
   } while(msg_p != NULL);
 
-# if 0
-  {
-    MessageDef *msg_resp_p;
-
-    msg_resp_p = itti_alloc_new_message(TASK_PDCP_ENB, MESSAGE_TEST);
-
-    itti_send_msg_to_task(TASK_RRC_ENB, 1, msg_resp_p);
-  }
-  {
-    MessageDef *msg_resp_p;
-
-    msg_resp_p = itti_alloc_new_message(TASK_PDCP_ENB, MESSAGE_TEST);
-
-    itti_send_msg_to_task(TASK_ENB_APP, 2, msg_resp_p);
-  }
-  {
-    MessageDef *msg_resp_p;
-
-    msg_resp_p = itti_alloc_new_message(TASK_PDCP_ENB, MESSAGE_TEST);
-
-    itti_send_msg_to_task(TASK_MAC_ENB, 3, msg_resp_p);
-  }
-# endif
 #endif
 
   // IP/NAS -> PDCP traffic : TX, read the pkt from the upper layer buffer
diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp.h b/openair2/LAYER2/PDCP_v10.1.0/pdcp.h
index 7e26ceda5255c38b1ab264d6ab94c2c7f899e830..cf99af604e6ff63359b24001f5646d910e39c9a2 100644
--- a/openair2/LAYER2/PDCP_v10.1.0/pdcp.h
+++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp.h
@@ -497,17 +497,6 @@ typedef struct {
 
 #endif
 
-
-#if 0
-/*
- * Missing PDU information struct, a copy of this will be enqueued
- * into pdcp.missing_pdus for every missing PDU
- */
-typedef struct pdcp_missing_pdu_info_t {
-  pdcp_sn_t sequence_number;
-} pdcp_missing_pdu_info_t;
-#endif
-
 /*
  * PDCP limit values
  */
diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp_sequence_manager.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp_sequence_manager.c
index 949858c1e52f155fe28023d129cd6db7887169b4..1d4d02c7eaa13c10ff3e697b4aadeabd1fe9f59f 100644
--- a/openair2/LAYER2/PDCP_v10.1.0/pdcp_sequence_manager.c
+++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp_sequence_manager.c
@@ -128,9 +128,7 @@ boolean_t pdcp_advance_rx_window(pdcp_t* pdcp_entity)
    * Update sequence numbering state and Hyper Frame Number if SN has already reached
    * its max value (see 5.1 PDCP Data Transfer Procedures)
    */
-#if 0
   LOG_D(PDCP, "Advancing RX window...\n");
-#endif
 
   if (pdcp_entity->next_pdcp_rx_sn == pdcp_calculate_max_seq_num_for_given_size(pdcp_entity->seq_num_size)) {
     pdcp_entity->next_pdcp_rx_sn = 0;
@@ -152,9 +150,7 @@ boolean_t pdcp_is_rx_seq_number_valid(uint16_t seq_num, pdcp_t* pdcp_entity,srb_
 
   uint16_t  reordering_window = 0;
 
-#if 0
   LOG_D(PDCP, "Incoming RX Sequence number is %04d\n", seq_num);
-#endif
 
   if (pdcp_is_seq_num_size_valid(pdcp_entity) == FALSE || pdcp_is_seq_num_valid(seq_num, pdcp_entity->seq_num_size) == FALSE) {
     return FALSE;
@@ -165,9 +161,7 @@ boolean_t pdcp_is_rx_seq_number_valid(uint16_t seq_num, pdcp_t* pdcp_entity,srb_
    * (and to build PDCP Control PDU for PDCP status report)
    */
   if (pdcp_mark_current_pdu_as_received(seq_num, pdcp_entity) == TRUE) {
-#if 0
     LOG_I(PDCP, "Received sequence number successfuly marked\n");
-#endif
   } else {
     LOG_W(PDCP, "Cannot mark received sequence number on the bitmap!\n");
   }
@@ -192,13 +186,11 @@ boolean_t pdcp_is_rx_seq_number_valid(uint16_t seq_num, pdcp_t* pdcp_entity,srb_
 
     // same the old next_pdcp_rx_sn to revert otherwise
     pdcp_entity->next_pdcp_rx_sn_before_integrity = pdcp_entity->next_pdcp_rx_sn;
-#if 0
 
     if (seq_num != pdcp_entity->next_pdcp_rx_sn) {
       LOG_D(PDCP,"Re-adjusting the sequence number to %d\n", seq_num);
     }
 
-#endif
     //set Next_PDCP_RX_SN to the received PDCP SN +1 ;
     pdcp_entity->next_pdcp_rx_sn = seq_num;
     pdcp_advance_rx_window(pdcp_entity);  // + 1, and check if it is larger than Maximum_PDCP_SN:
@@ -247,9 +239,7 @@ boolean_t pdcp_is_rx_seq_number_valid(uint16_t seq_num, pdcp_t* pdcp_entity,srb_
         //set Next_PDCP_RX_SN to the received PDCP SN +1 ;
         pdcp_entity->next_pdcp_rx_sn = seq_num;
         pdcp_advance_rx_window(pdcp_entity);  // + 1, anc check if it is larger than Maximum_PDCP_SN:
-#if 0
         LOG_D(PDCP,"Re-adjusting the sequence number to %d\n", seq_num);
-#endif
       } else if (seq_num < pdcp_entity->next_pdcp_rx_sn) {
         // use COUNT based on RX_HFN and the received PDCP SN for deciphering the PDCP PDU;
         pdcp_entity->rx_hfn_offset = 0;
@@ -311,12 +301,8 @@ boolean_t pdcp_mark_current_pdu_as_received(uint16_t seq_num, pdcp_t* pdcp_entit
   /*
    * Set relevant bit
    */
-#if 0
   LOG_D(PDCP, "Marking %d. bit of %d. octet of status bitmap\n", (seq_num % 8) + 1, octet_index);
-#endif
   util_mark_nth_bit_of_octet(&pdcp_entity->missing_pdu_bitmap[octet_index], seq_num % 8);
-#if 0
   util_print_binary_representation((uint8_t*)"Current state of relevant octet: ", pdcp_entity->missing_pdu_bitmap[octet_index]);
-#endif
   return TRUE;
 }
diff --git a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_retransmit.c b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_retransmit.c
index 827bf1b627d8c5eacbd16c22d6862a025bd7a063..cdf93a7af6a3cdaaf60302e9330bcd3468c2ee81 100644
--- a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_retransmit.c
+++ b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_retransmit.c
@@ -172,36 +172,6 @@ boolean_t rlc_am_nack_pdu (
         	rlc_pP->retrans_num_pdus ++;
         }
     }
-
-    /* TODO: Move this part in UL SCH processing */
-#if 0
-    if (rlc_pP->tx_data_pdu_buffer[snP].retx_count >= rlc_pP->max_retx_threshold) {
-      for (pdu_sdu_index = 0; pdu_sdu_index < rlc_pP->tx_data_pdu_buffer[snP].nb_sdus; pdu_sdu_index++) {
-        sdu_index = rlc_pP->tx_data_pdu_buffer[snP].sdus_index[pdu_sdu_index];
-        assert(pdu_sdu_index < RLC_AM_MAX_SDU_IN_PDU);
-        assert(sdu_index < RLC_AM_SDU_CONTROL_BUFFER_SIZE);
-        rlc_pP->input_sdus[sdu_index].nb_pdus_ack += 1;
-
-        if (rlc_pP->input_sdus[sdu_index].nb_pdus_ack == rlc_pP->input_sdus[sdu_index].nb_pdus) {
-#if TEST_RLC_AM
-          rlc_am_v9_3_0_test_data_conf (rlc_pP->module_id, rlc_pP->rb_id, rlc_pP->input_sdus[sdu_index].mui, RLC_SDU_CONFIRM_NO);
-#else
-          rlc_data_conf(ctxt_pP, rlc_pP->rb_id, rlc_pP->input_sdus[sdu_index].mui, RLC_SDU_CONFIRM_NO, rlc_pP->is_data_plane);
-#endif
-          rlc_pP->stat_tx_pdcp_sdu_discarded   += 1;
-          rlc_pP->stat_tx_pdcp_bytes_discarded += rlc_pP->input_sdus[sdu_index].sdu_size;
-          MSC_LOG_EVENT((ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_ENB:MSC_RLC_UE,\
-                        "0 "PROTOCOL_RLC_AM_MSC_FMT" Dropped SDU mui %u cause max_retx %u reached",\
-                        PROTOCOL_RLC_AM_MSC_ARGS(ctxt_pP,rlc_pP),
-                        rlc_pP->input_sdus[sdu_index].mui,
-                        rlc_pP->max_retx_threshold);
-
-          rlc_am_free_in_sdu(ctxt_pP, rlc_pP, sdu_index);
-
-        }
-      }
-    }
-#endif
   } else {
     LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[NACK-PDU] ERROR NACK MISSING PDU SN %05d\n",
           PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
@@ -768,473 +738,6 @@ mem_block_t* rlc_am_retransmit_get_am_segment(
 	return mem_pdu_segment_p;
 }
 
-#if 0
-//-----------------------------------------------------------------------------
-mem_block_t* rlc_am_retransmit_get_subsegment(
-  const protocol_ctxt_t* const  ctxt_pP,
-  rlc_am_entity_t *const rlc_pP,
-  const rlc_sn_t snP,
-  sdu_size_t * const sizeP /* in-out*/)
-{
-
-  // 5.2 ARQ procedures
-  // ARQ procedures are only performed by an AM RLC entity.
-  // 5.2.1 Retransmission
-  // The transmitting side of an AM RLC entity can receive a negative acknowledgement (notification of reception failure
-  // by its peer AM RLC entity) for an AMD PDU or a portion of an AMD PDU by the following:
-  // - STATUS PDU from its peer AM RLC entity.
-  //
-  // When receiving a negative acknowledgement for an AMD PDU or a portion of an AMD PDU by a STATUS PDU from
-  // its peer AM RLC entity, the transmitting side of the AM RLC entity shall:
-  //     - if the SN of the corresponding AMD PDU falls within the range VT(A) <= SN < VT(S):
-  //         - consider the AMD PDU or the portion of the AMD PDU for which a negative acknowledgement was
-  //           received for retransmission.
-  //
-  // When an AMD PDU or a portion of an AMD PDU is considered for retransmission, the transmitting side of the AM
-  // RLC entity shall:
-  //     - if the AMD PDU is considered for retransmission for the first time:
-  //         - set the RETX_COUNT associated with the AMD PDU to zero;
-  //     - else, if it (the AMD PDU or the portion of the AMD PDU that is considered for retransmission) is not pending
-  //       for retransmission already, or a portion of it is not pending for retransmission already:
-  //         - increment the RETX_COUNT;
-  //     - if RETX_COUNT = maxRetxThreshold:
-  //         - indicate to upper layers that max retransmission has been reached.
-  //
-  // When retransmitting an AMD PDU, the transmitting side of an AM RLC entity shall:
-  //     - if the AMD PDU can entirely fit within the total size of RLC PDU(s) indicated by lower layer at the particular
-  //       transmission opportunity:
-  //         - deliver the AMD PDU as it is except for the P field (the P field should be set according to sub clause 5.2.2) to
-  //           lower layer;
-  //     - otherwise:
-  //         - segment the AMD PDU, form a new AMD PDU segment which will fit within the total size of RLC PDU(s)
-  //           indicated by lower layer at the particular transmission opportunity and deliver the new AMD PDU segment
-  //           to lower layer.
-  //
-  // When retransmitting a portion of an AMD PDU, the transmitting side of an AM RLC entity shall:
-  //    - segment the portion of the AMD PDU as necessary, form a new AMD PDU segment which will fit within the
-  //    total size of RLC PDU(s) indicated by lower layer at the particular transmission opportunity and deliver the new
-  //    AMD PDU segment to lower layer.
-  //
-  // When forming a new AMD PDU segment, the transmitting side of an AM RLC entity shall:
-  //    - only map the Data field of the original AMD PDU to the Data field of the new AMD PDU segment;
-  //    - set the header of the new AMD PDU segment in accordance with the description in sub clause 6.;
-  //    - set the P field according to sub clause 5.2.2.
-
-  mem_block_t*           mb_original_p     = rlc_pP->tx_data_pdu_buffer[snP].mem_block;
-
-  if (mb_original_p != NULL) {
-    mem_block_t*           mb_sub_segment_p  = get_free_mem_block(*sizeP + sizeof(struct mac_tb_req), __func__);
-    if(mb_sub_segment_p == NULL) return NULL;
-    rlc_am_pdu_sn_10_t*    pdu_original_p    = (rlc_am_pdu_sn_10_t*) (&mb_original_p->data[sizeof(struct mac_tb_req)]);
-    rlc_am_pdu_sn_10_t*    pdu_sub_segment_p = (rlc_am_pdu_sn_10_t*) (&mb_sub_segment_p->data[sizeof(struct mac_tb_req)]);
-    rlc_am_pdu_info_t      pdu_info;
-    int                    max_copy_payload_size;
-    //LG avoid WARNING int                    test_max_copy_payload_size;
-    int                    test_pdu_copy_size          = 0;
-
-    ((struct mac_tb_req*)(mb_sub_segment_p->data))->data_ptr         = (uint8_t*)&(mb_sub_segment_p->data[sizeof(struct mac_tb_req)]);
-
-    if (rlc_am_get_data_pdu_infos(ctxt_pP, rlc_pP, pdu_original_p, rlc_pP->tx_data_pdu_buffer[snP].header_and_payload_size, &pdu_info) >= 0) {
-      int li_index = 0;
-      int start_offset       = rlc_pP->tx_data_pdu_buffer[snP].nack_so_start;
-      int stop_offset        = rlc_pP->tx_data_pdu_buffer[snP].nack_so_stop;
-
-      LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[RE-SEGMENT] ORIGINAL PDU SN %04d:\n",
-            PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-            snP);
-      rlc_am_display_data_pdu_infos(ctxt_pP, rlc_pP, &pdu_info);
-
-      // all 15 bits set to 1 (indicate that the missing portion of the AMD PDU includes all bytes
-      // to the last byte of the AMD PDU)
-      if (stop_offset == 0x7FFF) {
-        rlc_pP->tx_data_pdu_buffer[snP].nack_so_stop = rlc_pP->tx_data_pdu_buffer[snP].payload_size - 1;
-        stop_offset = rlc_pP->tx_data_pdu_buffer[snP].nack_so_stop;
-        LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[RE-SEGMENT] UPDATED RETRANS PDU SN %04d nack_so_stop FROM 0x7FFF to %05d\n",
-              PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-              snP,
-              stop_offset);
-      }
-
-      // FIXED PART AMD PDU SEGMENT HEADER
-      // 6.2.1.5 AMD PDU segment
-      // AMD PDU segment consists of a Data field and an AMD PDU segment header.
-      //
-      // AMD PDU segment header consists of a fixed part (fields that are present for every AMD PDU segment) and an
-      // extension part (fields that are present for an AMD PDU segment when necessary). The fixed part of the AMD PDU
-      // segment header itself is byte aligned and consists of a D/C, a RF, a P, a FI, an E, a SN, a LSF and a SO. The extension
-      // part of the AMD PDU segment header itself is byte aligned and consists of E(s) and LI(s).
-      //
-      // An AMD PDU segment header consists of an extension part only when more than one Data field elements are present
-      // in the AMD PDU segment, in which case an E and a LI are present for every Data field element except the last.
-      // Furthermore, when an AMD PDU segment header consists of an odd number of LI(s), four padding bits follow after the
-      // last LI.
-
-      pdu_sub_segment_p->b1 = (pdu_original_p->b1 & 0x83) | 0x40;
-      pdu_sub_segment_p->b2 = pdu_original_p->b2;
-      pdu_sub_segment_p->data[0] = ((uint8_t)(start_offset >> 8));
-      pdu_sub_segment_p->data[1] = ((uint8_t)(start_offset & 0xFF));
-
-      *sizeP = *sizeP - 4;
-
-
-      int            continue_fill_pdu_with_pdu  = 1;
-      int            test_pdu_remaining_size     = *sizeP;
-      int            test_num_li                 = 0;
-      int            fill_num_li                    ;
-      int            test_li_sum                 = 0;
-      int            not_test_fi                 = 0; // by default not 1st byte and not last byte af a SDU
-      int            test_start_offset;
-      unsigned int   test_li_length_in_bytes     = 1;
-      int16_t          test_li_list[RLC_AM_MAX_SDU_IN_PDU];
-      uint8_t*          fill_payload_p;
-      //int            test_fi_last_byte_pdu_is_last_byte_sdu = 0;
-      //int            test_fi_first_byte_pdu_is_first_byte_sdu = 0;
-
-      rlc_am_e_li_t* e_li_sub_segment            = (rlc_am_e_li_t*)(&pdu_sub_segment_p->data[2]);
-      //int            first_enter_in_start_offset_lt_li_sum = 1;
-      int            not_fi_original                 = ((pdu_original_p->b1 & 0x18) >> 3) ^ 3;
-
-      //-------------------------------------------------------
-      // set MAX payload size that can be copied
-      // first constraint : the size of the hole to retransmit
-      rlc_am_get_next_hole(ctxt_pP, rlc_pP, snP, &start_offset, &stop_offset);
-      max_copy_payload_size = stop_offset - start_offset + 1;
-      assert(max_copy_payload_size > 0);
-      assert(test_pdu_remaining_size > 0);
-      LOG_T(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[RE-SEGMENT] HOLE FOUND SO %d -> %d\n",
-            PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-            start_offset,
-            stop_offset);
-      LOG_T(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[RE-SEGMENT] ORIGINAL FI %d\n",
-            PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-            (pdu_original_p->b1 & 0x18) >> 3);
-
-      // second constraint the size of the pdu_p requested by MAC layer
-      if (max_copy_payload_size > test_pdu_remaining_size) {
-        LOG_T(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[RE-SEGMENT] CUT max_copy_payload_size with test_pdu_remaining_size %d -> %d\n",
-              PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-              max_copy_payload_size,
-              test_pdu_remaining_size);
-        max_copy_payload_size = test_pdu_remaining_size;
-      }
-
-
-      if (start_offset == 0) {
-        not_test_fi = (not_fi_original & 0x02);
-      }
-
-      test_start_offset = start_offset;
-
-      //.find the li corresponding to the nack_so_start (start_offset)
-      if (pdu_info.num_li > 0) {
-        LOG_T(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[RE-SEGMENT] ORIGINAL NUM LI %d\n",
-              PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-              pdu_info.num_li);
-
-        while ((li_index < pdu_info.num_li) && (continue_fill_pdu_with_pdu)) {
-          LOG_T(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[RE-SEGMENT] FIND LI %d\n",
-                PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                pdu_info.li_list[li_index]);
-
-          if (max_copy_payload_size > test_pdu_remaining_size) {
-            LOG_T(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[RE-SEGMENT] CUT max_copy_payload_size with test_pdu_remaining_size %d -> %d\n",
-                  PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                  max_copy_payload_size,
-                  test_pdu_remaining_size);
-            max_copy_payload_size = test_pdu_remaining_size;
-          }
-
-          assert(max_copy_payload_size >= 0);
-          assert(test_pdu_remaining_size >= 0);
-
-          test_li_sum               += pdu_info.li_list[li_index];
-
-          //---------------------------------------------------------------
-          if (test_start_offset < test_li_sum) {
-
-            LOG_T(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[RE-SEGMENT] test_start_offset < test_li_sum  %d < %d\n",
-                  PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                  test_start_offset,
-                  test_li_sum);
-            /*if (test_max_copy_payload_size > (test_li_sum - test_start_offset)) {
-                #if TRACE_RLC_AM_RESEGMENT
-                LOG_D(RLC, "[FRAME %5u][%s][RLC_AM][MOD %u/%u][RB %u][RE-SEGMENT] CUT test_max_copy_payload_size with test_li_sum - test_start_offset %d -> %d\n",ctxt_pP->frame, rlc_pP->module_id, rlc_pP->rb_id,  test_max_copy_payload_size, test_li_sum - test_start_offset);
-                #endif
-                test_max_copy_payload_size = test_li_sum - test_start_offset;
-            }*/
-
-            if ((max_copy_payload_size + test_start_offset) < test_li_sum) {
-              LOG_T(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[RE-SEGMENT] (max_copy_payload_size %d + test_start_offset %d) < test_li_sum %d\n",
-                    PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                    max_copy_payload_size,
-                    test_start_offset,
-                    test_li_sum);
-              LOG_T(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[RE-SEGMENT] COPY SO %d -> %d  %d BYTES\n",
-                    PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                    test_start_offset ,
-                    test_start_offset + max_copy_payload_size - 1,
-                    max_copy_payload_size );
-              assert(max_copy_payload_size > 0);
-              continue_fill_pdu_with_pdu = 0;
-              test_pdu_copy_size         = test_pdu_copy_size + max_copy_payload_size;
-              test_start_offset          = test_start_offset + max_copy_payload_size;
-              not_test_fi                = not_test_fi & 0x02;  // clear b0, last byte does not correspond to last byte of a SDU
-              max_copy_payload_size      = 0;
-
-            } else if ((max_copy_payload_size + test_start_offset) == test_li_sum) {
-              LOG_T(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[RE-SEGMENT] (max_copy_payload_size + test_start_offset) == test_li_sum %d == %d\n",
-                    PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                    (max_copy_payload_size + test_start_offset) ,
-                    test_li_sum);
-              LOG_T(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[RE-SEGMENT] COPY SO %d -> %d  %d BYTES\n",
-                    PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                    test_start_offset ,
-                    test_start_offset + max_copy_payload_size - 1,
-                    max_copy_payload_size );
-              assert(max_copy_payload_size > 0);
-              continue_fill_pdu_with_pdu = 0;
-              test_pdu_copy_size         = test_pdu_copy_size + max_copy_payload_size;
-              test_start_offset          = test_start_offset + max_copy_payload_size;
-              not_test_fi                = not_test_fi | 0x01;// set b0, last byte does correspond to last byte of a SDU
-              max_copy_payload_size      = 0;
-
-            } else if ((max_copy_payload_size + test_start_offset - (test_li_length_in_bytes ^ 3)) > test_li_sum) {
-              LOG_T(RLC,
-                    PROTOCOL_RLC_AM_CTXT_FMT"[RE-SEGMENT] (max_copy_payload_size + test_start_offset - (test_li_length_in_bytes ^ 3)) > test_li_sum %d > %d\n SET LI %d\n",
-                    PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                    (max_copy_payload_size + test_start_offset)  + (test_li_length_in_bytes ^ 3),
-                    test_li_sum,
-                    test_li_sum - test_start_offset);
-              LOG_T(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[RE-SEGMENT] COPY SO %d -> %d  %d BYTES\n",
-                    PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                    test_start_offset ,
-                    test_li_sum - 1,
-                    test_li_sum - test_start_offset );
-              assert((test_li_sum - test_start_offset) > 0);
-              test_li_list[test_num_li++] = test_li_sum - test_start_offset;
-              test_pdu_copy_size          = test_pdu_copy_size + test_li_sum - test_start_offset;
-              test_li_length_in_bytes      = test_li_length_in_bytes ^ 3;
-
-              test_pdu_remaining_size     = test_pdu_remaining_size - test_li_sum + test_start_offset -
-                                            test_li_length_in_bytes;
-
-              max_copy_payload_size       = max_copy_payload_size - test_li_sum + test_start_offset - test_li_length_in_bytes;
-              LOG_T(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[RE-SEGMENT] NOW max_copy_payload_size %d BYTES test_start_offset %d\n",
-                    PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                    max_copy_payload_size,
-                    test_li_sum);
-              // normally the next while itereation will add bytes to PDU
-              //not_test_fi = not_test_fi | 0x01;  // set b0, last byte does correspond to last byte of a SDU
-              test_start_offset           = test_li_sum;
-
-            } else {
-              LOG_T(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[RE-SEGMENT] (test_max_copy_payload_size + test_start_offset ) > test_li_sum %d > %d\n NO REMAINING SIZE FOR LI",
-                    PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                    (max_copy_payload_size + test_start_offset),
-                    test_li_sum);
-              LOG_T(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[RE-SEGMENT] COPY SO %d -> %d  %d BYTES\n",
-                    PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                    test_start_offset ,
-                    test_li_sum - 1,
-                    test_li_sum - test_start_offset );
-              assert((test_li_sum - test_start_offset) > 0);
-              continue_fill_pdu_with_pdu = 0;
-              test_pdu_copy_size         = test_pdu_copy_size + test_li_sum - test_start_offset;
-
-              test_pdu_remaining_size    = test_pdu_remaining_size - test_li_sum + test_start_offset;
-
-              max_copy_payload_size      = max_copy_payload_size - test_li_sum + test_start_offset;
-              test_start_offset          = test_li_sum;
-              not_test_fi                = not_test_fi | 0x01;  // set b0, last byte does correspond to last byte of a SDU
-            }
-
-            //---------------------------------------------------------------
-            // start offset start at the begining of a SDU
-            // and it cant be the first data field of the original PDU
-          } else if (test_start_offset == test_li_sum) {
-            LOG_T(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[RE-SEGMENT] (test_start_offset == test_li_sum) %d == %d\n",
-                  PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                  test_start_offset ,
-                  test_li_sum);
-
-            if ((test_num_li == 0) && (test_pdu_copy_size == 0)) {
-              not_test_fi = not_test_fi | 0x02;  // set b1, first byte does correspond to first byte of a SDU
-            }
-          }
-
-          li_index = li_index + 1;
-        }
-
-        if ((continue_fill_pdu_with_pdu > 0) &&
-            (li_index    == pdu_info.num_li) &&
-            (pdu_info.hidden_size       > 0) &&
-            (test_pdu_remaining_size    > 0) &&
-            (max_copy_payload_size      > 0) ) {
-
-          if (max_copy_payload_size > test_pdu_remaining_size) {
-            LOG_T(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[RE-SEGMENT] TRYING HIDDEN SIZE...CUT max_copy_payload_size with test_pdu_remaining_size %d -> %d\n",
-                  PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                  max_copy_payload_size,
-                  test_pdu_remaining_size);
-            max_copy_payload_size = test_pdu_remaining_size;
-          }
-
-          // remaining bytes to fill, redundant check, but ...
-          if  ((max_copy_payload_size + test_start_offset) >= (pdu_info.hidden_size + test_li_sum)) {
-            test_pdu_copy_size += (pdu_info.hidden_size  + test_li_sum - test_start_offset);
-            LOG_T(RLC,
-                  PROTOCOL_RLC_AM_CTXT_FMT"[RE-SEGMENT] COPYING WHOLE REMAINING SIZE %d (max_copy_payload_size %d, test_start_offset %d, pdu_info.hidden_size %d test_li_sum %d test_pdu_copy_size %d)\n",
-                  PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                  pdu_info.hidden_size  + test_li_sum - test_start_offset,
-                  max_copy_payload_size,
-                  test_start_offset,
-                  pdu_info.hidden_size,
-                  test_li_sum,
-                  test_pdu_copy_size);
-            test_start_offset   = pdu_info.hidden_size   + test_li_sum;
-            not_test_fi = (not_test_fi & 0x2) | (not_fi_original & 0x1);  // set b0 idendical to the b0 of the non segmented PDU
-          } else {
-            LOG_T(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[RE-SEGMENT] COPYING REMAINING SIZE %d (/%d)\n",
-                  PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                  max_copy_payload_size,
-                  pdu_info.hidden_size);
-            test_pdu_copy_size += max_copy_payload_size;
-            test_start_offset = test_start_offset + max_copy_payload_size;
-            not_test_fi = not_test_fi & 0x2;  // clear b0 because no SDU ending in this PDU
-          }
-        }
-      } else { // num_li == 0
-        LOG_T(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[RE-SEGMENT] (num_li == 0)\n",
-              PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP));
-        test_pdu_copy_size = max_copy_payload_size;
-
-        if ((stop_offset ==  (start_offset + max_copy_payload_size - 1)) && (stop_offset == rlc_pP->tx_data_pdu_buffer[snP].payload_size - 1)) {
-          not_test_fi = (not_test_fi & 0x2) | (not_fi_original & 0x1);  // set b0 idendical to the b0 of the non segmented PDU
-        } else {
-          not_test_fi = not_test_fi & 0x2;  // clear b0 because no SDU ending in this PDU
-        }
-      }
-
-      //---------------------------------------------------------------
-      /*if (stop_offset == (rlc_pP->tx_data_pdu_buffer[snP].payload_size - 1)) {
-              test_fi = (test_fi & 0x02) | (fi_original & 0x01);
-      }*/
-      //---------------------------------------------------------------
-      // write FI field in header
-      //---------------------------------------------------------------
-      pdu_sub_segment_p->b1 = pdu_sub_segment_p->b1 | (((not_test_fi << 3) ^ 0x18) & 0x18);
-      //---------------------------------------------------------------
-      // fill the segment pdu_p with Lis and data
-      //---------------------------------------------------------------
-      LOG_T(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[RE-SEGMENT] fill the segment pdu_p with Lis and data, test_num_li %d\n",
-            PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP), test_num_li);
-
-      if (test_num_li > 0) {
-        pdu_sub_segment_p->b1 = pdu_sub_segment_p->b1 | 0x04; // set E bit
-        test_li_length_in_bytes = 1;
-
-        for (fill_num_li=0; fill_num_li < test_num_li; fill_num_li++) {
-          test_li_length_in_bytes = test_li_length_in_bytes ^ 3;
-
-          if (test_li_length_in_bytes  == 2) {
-            if (fill_num_li == (test_num_li - 1)) {
-              e_li_sub_segment->b1 = 0;
-            } else {
-              e_li_sub_segment->b1 =  0x80;
-            }
-
-            e_li_sub_segment->b1 = e_li_sub_segment->b1 | (test_li_list[fill_num_li] >> 4);
-            e_li_sub_segment->b2 = test_li_list[fill_num_li] << 4;
-            fill_payload_p         = (uint8_t*)(&e_li_sub_segment->b3);
-            *sizeP               = *sizeP - 2;
-          } else {
-            if (fill_num_li != (test_num_li - 1)) {
-              e_li_sub_segment->b2  = e_li_sub_segment->b2 | 0x08;
-            }
-
-            e_li_sub_segment->b2 = e_li_sub_segment->b2 | (test_li_list[fill_num_li] >> 8);
-            e_li_sub_segment->b3 = test_li_list[fill_num_li] & 0xFF;
-            e_li_sub_segment++;
-            fill_payload_p         = (uint8_t*)e_li_sub_segment;
-            *sizeP               = *sizeP - 1;
-          }
-
-          LOG_T(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[RE-SEGMENT] ADD LI %d\n",
-                PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                test_li_list[fill_num_li]);
-        }
-      } else {
-        LOG_T(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[RE-SEGMENT] ADD NO LI\n",
-              PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP));
-        fill_payload_p = (uint8_t*)e_li_sub_segment;
-      }
-
-      //---------------------------------------------------------------
-      // copy payload to retransmit
-      //---------------------------------------------------------------
-      memcpy(fill_payload_p,
-             &rlc_pP->tx_data_pdu_buffer[snP].payload[start_offset],
-             test_pdu_copy_size);
-
-      ((struct mac_tb_req*)(mb_sub_segment_p->data))->tb_size  = (tb_size_t)(((uint64_t)fill_payload_p)+ test_pdu_copy_size) - ((uint64_t)(&pdu_sub_segment_p->b1));
-
-      // set LSF
-      if ((test_pdu_copy_size + start_offset) == rlc_pP->tx_data_pdu_buffer[snP].payload_size) {
-        pdu_sub_segment_p->data[0] = pdu_sub_segment_p->data[0] | 0x80;
-
-        rlc_pP->tx_data_pdu_buffer[snP].flags.retransmit = 0;
-
-        LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[RE-SEGMENT] RE-SEND DATA PDU SN %04d SO %d %d BYTES PAYLOAD %d BYTES LSF!\n",
-              PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-              snP,
-              start_offset,
-              ((struct mac_tb_req*)(mb_sub_segment_p->data))->tb_size,
-              test_pdu_copy_size);
-      } else {
-        LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[RE-SEGMENT] RE-SEND DATA PDU SN %04d SO %d %d BYTES PAYLOAD %d BYTES\n",
-              PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-              snP,
-              start_offset,
-              ((struct mac_tb_req*)(mb_sub_segment_p->data))->tb_size,
-              test_pdu_copy_size);
-      }
-
-      LOG_T(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[RE-SEGMENT] *sizeP %d = *sizeP %d - test_pdu_copy_size %d\n",
-            PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-            *sizeP - test_pdu_copy_size, *sizeP,
-            test_pdu_copy_size);
-
-      *sizeP = *sizeP - test_pdu_copy_size;
-      //---------------------------------------------------------------
-      // update nack_so_start
-      //---------------------------------------------------------------
-      rlc_am_remove_hole(ctxt_pP, rlc_pP, snP, start_offset, test_pdu_copy_size+start_offset - 1);
-      //rlc_pP->tx_data_pdu_buffer[snP].nack_so_start = rlc_pP->tx_data_pdu_buffer[snP].nack_so_start + test_pdu_copy_size;
-      LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[RE-SEGMENT] RE-SEND DATA PDU SN %04d NOW nack_so_start %d nack_so_stop %d\n",
-            PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-            snP,
-            rlc_pP->tx_data_pdu_buffer[snP].nack_so_start,
-            rlc_pP->tx_data_pdu_buffer[snP].nack_so_stop);
-      /*if (rlc_pP->tx_data_pdu_buffer[snP].nack_so_start == rlc_pP->tx_data_pdu_buffer[snP].nack_so_stop) {
-          rlc_pP->tx_data_pdu_buffer[snP].nack_so_start = 0;
-          rlc_pP->tx_data_pdu_buffer[snP].nack_so_stop  = 0x7FFF;
-      }*/
-    } else {
-      LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[RE-SEGMENT] COULD NOT GET INFO FOR DATA PDU SN %04d -> RETURN NULL\n",
-            PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-            snP);
-      return NULL;
-    }
-    return mb_sub_segment_p;
-  } else {
-    LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[RE-SEGMENT] RE-SEND DATA PDU SN %04d BUT NO PDU AVAILABLE -> RETURN NULL\n",
-          PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-          snP);
-    assert(3==4);
-    return NULL;
-  }
-}
-#endif
 //-----------------------------------------------------------------------------
 void rlc_am_tx_buffer_display (
   const protocol_ctxt_t* const  ctxt_pP,
@@ -1456,94 +959,3 @@ mem_block_t * rlc_am_get_pdu_to_retransmit(
 
 	  return pdu_p;
 }
-
-#if 0
-//-----------------------------------------------------------------------------
-void rlc_am_retransmit_any_pdu(
-  const protocol_ctxt_t* const  ctxt_pP,
-  rlc_am_entity_t* const rlc_pP)
-{
-  rlc_sn_t             sn           = (rlc_pP->vt_s - 1) & RLC_AM_SN_MASK;
-  rlc_sn_t             sn_end       = (rlc_pP->vt_a - 1) & RLC_AM_SN_MASK;
-  int                  found_pdu    = 0;
-  rlc_sn_t             found_pdu_sn = 0; // avoid warning
-  mem_block_t*         pdu_p        = NULL;
-  rlc_am_pdu_sn_10_t*  pdu_sn_10_p  = NULL;
-
-  LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[FORCE-TRAFFIC] rlc_am_retransmit_any_pdu()\n",
-        PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP));
-
-  while (sn != sn_end) {
-    if (rlc_pP->tx_data_pdu_buffer[sn].mem_block != NULL) {
-      if (!found_pdu) {
-        found_pdu = 1;
-        found_pdu_sn = sn;
-      }
-
-      if (rlc_pP->tx_data_pdu_buffer[sn].header_and_payload_size <= rlc_pP->nb_bytes_requested_by_mac) {
-        LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[FORCE-TRAFFIC] RE-SEND DATA PDU SN %04d\n",
-              PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-              sn);
-#if MESSAGE_CHART_GENERATOR_RLC_MAC
-        MSC_LOG_EVENT((ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_ENB:MSC_RLC_UE,\
-                               "0 "PROTOCOL_RLC_AM_MSC_FMT" RTX any pdu found SN %u",\
-                               PROTOCOL_RLC_AM_MSC_ARGS(ctxt_pP,rlc_pP), sn);
-#endif
-        rlc_am_nack_pdu (ctxt_pP, rlc_pP, sn, 0, 0x7FFF);
-        // no need for update rlc_pP->nb_bytes_requested_by_mac
-        pdu_p = rlc_am_retransmit_get_copy(ctxt_pP, rlc_pP, sn);
-        pdu_sn_10_p = (rlc_am_pdu_sn_10_t*) (&pdu_p->data[sizeof(struct mac_tb_req)]);
-        rlc_am_pdu_polling(ctxt_pP, rlc_pP, pdu_sn_10_p, rlc_pP->tx_data_pdu_buffer[sn].header_and_payload_size,false);
-        //BugFix: polling is checked and done in function above !
-        //pdu_sn_10_p->b1 = pdu_sn_10_p->b1 | 0x20;
-        //BugFix : pdu_without_poll and byte_without_poll are reset only if a Poll is transmitted
-        //rlc_pP->c_pdu_without_poll     = 0;
-        //rlc_pP->c_byte_without_poll    = 0;
-        //rlc_pP->poll_sn = (rlc_pP->vt_s -1) & RLC_AM_SN_MASK;
-        rlc_pP->stat_tx_data_pdu                   += 1;
-        rlc_pP->stat_tx_retransmit_pdu             += 1;
-        rlc_pP->stat_tx_data_bytes                 += ((struct mac_tb_req*)(pdu_p->data))->tb_size;
-        rlc_pP->stat_tx_retransmit_bytes           += ((struct mac_tb_req*)(pdu_p->data))->tb_size;
-        list_add_tail_eurecom (pdu_p, &rlc_pP->pdus_to_mac_layer);
-        return;
-      }
-    }
-
-    sn = (sn - 1) & RLC_AM_SN_MASK;
-  }
-
-  // no pdu_p with correct size has been found
-  // so re-segment a pdu_p if possible
-  if (found_pdu) {
-    LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[FORCE-TRAFFIC] SEND SEGMENT OF DATA PDU SN %04d\n",
-          PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-          found_pdu_sn);
-
-    if (rlc_pP->nb_bytes_requested_by_mac > 4) {
-#if MESSAGE_CHART_GENERATOR_RLC_MAC
-        MSC_LOG_EVENT((ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_ENB:MSC_RLC_UE,\
-                               "0 "PROTOCOL_RLC_AM_MSC_FMT" RTX any pdu found SN %u (subseg)",\
-                               PROTOCOL_RLC_AM_MSC_ARGS(ctxt_pP,rlc_pP), found_pdu_sn);
-#endif
-      rlc_am_nack_pdu (ctxt_pP, rlc_pP, found_pdu_sn, 0, 0x7FFF);
-      pdu_p = rlc_am_retransmit_get_subsegment(ctxt_pP, rlc_pP, found_pdu_sn, &rlc_pP->nb_bytes_requested_by_mac);
-      pdu_sn_10_p = (rlc_am_pdu_sn_10_t*) (&pdu_p->data[sizeof(struct mac_tb_req)]);
-      rlc_am_pdu_polling(ctxt_pP, rlc_pP, pdu_sn_10_p, rlc_pP->tx_data_pdu_buffer[found_pdu_sn].header_and_payload_size,false);
-      pdu_sn_10_p->b1 = pdu_sn_10_p->b1 | 0x20;
-      rlc_pP->c_pdu_without_poll     = 0;
-      rlc_pP->c_byte_without_poll    = 0;
-      //rlc_pP->poll_sn = (rlc_pP->vt_s -1) & RLC_AM_SN_MASK;
-      rlc_pP->stat_tx_data_pdu                   += 1;
-      rlc_pP->stat_tx_retransmit_pdu             += 1;
-      rlc_pP->stat_tx_data_bytes                 += ((struct mac_tb_req*)(pdu_p->data))->tb_size;
-      rlc_pP->stat_tx_retransmit_bytes           += ((struct mac_tb_req*)(pdu_p->data))->tb_size;
-      list_add_tail_eurecom (pdu_p, &rlc_pP->pdus_to_mac_layer);
-      return;
-    } else {
-      LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[FORCE-TRAFFIC] ... BUT NOT ENOUGH BYTES ALLOWED BY MAC %0d\n",
-            PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-            rlc_pP->nb_bytes_requested_by_mac);
-    }
-  }
-}
-#endif
diff --git a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_retransmit.h b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_retransmit.h
index 60fefab84b22c17ce36bd87401d5ee170ca8e088..bbd69910baac2c08530f720ae1696c2973a338b5 100644
--- a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_retransmit.h
+++ b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_retransmit.h
@@ -95,22 +95,6 @@ protected_rlc_am_retransmit(mem_block_t* rlc_am_retransmit_get_copy (
                               rlc_am_entity_t *const rlcP,
                               const rlc_sn_t snP));
 
-#if 0
-/*! \fn mem_block_t* rlc_am_retransmit_get_subsegment (const protocol_ctxt_t* const  ctxt_pP,rlc_am_entity_t *rlcP,rlc_sn_t snP, sdu_size_t *sizeP)
-* \brief      The RLC AM PDU which have the sequence number snP is marked ACKed.
-* \param[in]  ctxtP        Running context.
-* \param[in]  rlcP         RLC AM protocol instance pointer.
-* \param[in]  snP          Sequence number of the PDU to be copied.
-* \param[in,out]  sizeP    Maximum size allowed for the subsegment, it is updated with the amount of bytes not used (sizeP[out] = sizeP[in] - size of segment).
-* \return                  A copy of a segment of the PDU having sequence number equal to parameter snP.
-*/
-protected_rlc_am_retransmit(mem_block_t* rlc_am_retransmit_get_subsegment (
-                              const protocol_ctxt_t* const  ctxt_pP,
-                              rlc_am_entity_t *const rlcP,
-                              const rlc_sn_t snP,
-                              sdu_size_t *const sizeP));
-#endif
-
 /*! \fn mem_block_t* rlc_am_get_pdu_to_retransmit(const protocol_ctxt_t* const  ctxt_pP, rlc_am_entity_t* rlcP)
 * \brief      Find a PDU or PDU segment to retransmit.
 * \param[in]  ctxtP        Running context.
@@ -120,17 +104,6 @@ protected_rlc_am_retransmit(mem_block_t* rlc_am_retransmit_get_subsegment (
 protected_rlc_am_retransmit(mem_block_t* rlc_am_get_pdu_to_retransmit(
                               const protocol_ctxt_t* const  ctxt_pP,
                               rlc_am_entity_t* const rlcP);)
-#if 0
-/*! \fn void rlc_am_retransmit_any_pdu(const protocol_ctxt_t* const  ctxt_pP, rlc_am_entity_t* rlcP)
-* \brief      Retransmit any PDU in order to unblock peer entity, if no suitable PDU is found (depending on requested MAC size) to be retransmitted, then try to retransmit a subsegment of any PDU.
-* \param[in]  ctxtP        Running context.
-* \param[in]  rlcP         RLC AM protocol instance pointer.
-*/
-protected_rlc_am_retransmit(void rlc_am_retransmit_any_pdu(
-                              const protocol_ctxt_t* const  ctxt_pP,
-                              rlc_am_entity_t* const rlcP);)
-#endif
-
 /*! \fn void rlc_am_tx_buffer_display (const protocol_ctxt_t* const  ctxt_pP,rlc_am_entity_t* rlcP,  char* message_pP)
 * \brief      Display the dump of the retransmission buffer.
 * \param[in]  ctxtP        Running context.
diff --git a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_rx_list.c b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_rx_list.c
index 301761c9e5c5e3c6e1f43ef2087ce8c3ab706438..abe7d3310cf63c902a79c36d2b8a9256a4df98f6 100644
--- a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_rx_list.c
+++ b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_rx_list.c
@@ -927,459 +927,6 @@ rlc_am_rx_list_check_duplicate_insert_pdu(
 
 	  return pdu_status;
 }
-#if 0
-// returns 0 if success
-// returns neg value if failure
-//-----------------------------------------------------------------------------
-signed int
-rlc_am_rx_list_insert_pdu(
-  const protocol_ctxt_t* const  ctxt_pP,
-  rlc_am_entity_t* const rlc_pP,
-  mem_block_t* const tb_pP)
-{
-  rlc_am_pdu_info_t* pdu_info_p                  = &((rlc_am_rx_pdu_management_t*)(tb_pP->data))->pdu_info;
-  rlc_am_pdu_info_t* pdu_info_cursor_p           = NULL;
-  rlc_am_pdu_info_t* pdu_info_previous_cursor_p  = NULL;
-  mem_block_t*       cursor_p                    = NULL;
-  mem_block_t*       previous_cursor_p           = NULL;
-  cursor_p = rlc_pP->receiver_buffer.head;
-  // it is assumed this pdu is in rx window
-
-  //TODO : check for duplicate
-  // should be rewrite
-  /* look for previous SN */
-
-  if (cursor_p) {
-    if (rlc_pP->vr_mr < rlc_pP->vr_r) {
-      if (pdu_info_p->sn >= rlc_pP->vr_r) {
-        pdu_info_cursor_p = &((rlc_am_rx_pdu_management_t*)(cursor_p->data))->pdu_info;
-
-        while ((cursor_p != NULL)  && (pdu_info_cursor_p->sn >= rlc_pP->vr_r)) { // LG added =
-          if (pdu_info_p->sn < pdu_info_cursor_p->sn) {
-            if (previous_cursor_p != NULL) {
-              pdu_info_previous_cursor_p = &((rlc_am_rx_pdu_management_t*)(previous_cursor_p->data))->pdu_info;
-
-              if (pdu_info_previous_cursor_p->sn == pdu_info_p->sn) {
-                if (pdu_info_p->rf != pdu_info_previous_cursor_p->rf) {
-                  LOG_N(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d WRONG RF -> DROPPED (vr(mr) < vr(r) and sn >= vr(r))\n",
-                        PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                        __LINE__,
-                        pdu_info_p->sn);
-                  return -2;
-                } else if (pdu_info_p->rf == 1) {
-                  if ((pdu_info_previous_cursor_p->so + pdu_info_previous_cursor_p->payload_size - 1) >= pdu_info_p->so) {
-                    LOG_N(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d SO OVERLAP -> DROPPED (vr(mr) < vr(r) and sn >= vr(r))\n",
-                          PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                          __LINE__,
-                          pdu_info_p->sn);
-                    return -2;
-                  }
-                }
-              }
-            }
-
-            LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d (vr(mr) > vr(r))\n",
-                  PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                  __LINE__,
-                  pdu_info_p->sn);
-            list2_insert_before_element(tb_pP, cursor_p, &rlc_pP->receiver_buffer);
-            return 0;
-
-          } else if (pdu_info_p->sn == pdu_info_cursor_p->sn) {
-            if (pdu_info_cursor_p->rf == 0) {
-              LOG_N(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d DUPLICATE -> DROPPED\n",
-                    PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                    __LINE__,
-                    pdu_info_p->sn);
-              return -2;
-            } else if (pdu_info_p->rf == 1) {
-              if ((pdu_info_p->so + pdu_info_p->payload_size - 1) < pdu_info_cursor_p->so) {
-
-                if (previous_cursor_p != NULL) {
-                  pdu_info_previous_cursor_p = &((rlc_am_rx_pdu_management_t*)(previous_cursor_p->data))->pdu_info;
-
-                  if (pdu_info_previous_cursor_p->sn == pdu_info_cursor_p->sn) {
-                    if ((pdu_info_previous_cursor_p->so + pdu_info_previous_cursor_p->payload_size - 1) < pdu_info_p->so) {
-
-                      LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d SEGMENT OFFSET %05d (vr(mr) < vr(r) and sn >= vr(r))\n",
-                            PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                            __LINE__,
-                            pdu_info_p->sn,
-                            pdu_info_p->so);
-                      list2_insert_before_element(tb_pP, cursor_p, &rlc_pP->receiver_buffer);
-                      return 0;
-                    } else {
-                      LOG_N(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d OVERLAP PREVIOUS SO DUPLICATE -> DROPPED\n",
-                            PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                            __LINE__,
-                            pdu_info_p->sn);
-                      return -2;
-                    }
-                  }
-                }
-
-                LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d SEGMENT OFFSET %05d (vr(mr) < vr(r) and sn >= vr(r))\n",
-                      PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                      __LINE__,
-                      pdu_info_p->sn,
-                      pdu_info_p->so);
-                list2_insert_before_element(tb_pP, cursor_p, &rlc_pP->receiver_buffer);
-                return 0;
-
-              } else if (pdu_info_p->so <= pdu_info_cursor_p->so) {
-                LOG_N(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d OVERLAP SO DUPLICATE -> DROPPED\n",
-                      PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                      __LINE__,
-                      pdu_info_p->sn);
-                return -2;
-              }
-            } else {
-              LOG_N(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d DROPPED\n",
-                    PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                    __LINE__,
-                    pdu_info_p->sn);
-              return -2;
-            }
-          }
-
-          previous_cursor_p = cursor_p;
-          cursor_p = cursor_p->next;
-
-          if (cursor_p != NULL) {
-            pdu_info_cursor_p = &((rlc_am_rx_pdu_management_t*)(cursor_p->data))->pdu_info;
-          }
-        }
-
-        if (cursor_p != NULL) {
-          LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d (vr(mr) < vr(r) and sn >= vr(r))\n",
-                PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                __LINE__,
-                pdu_info_p->sn);
-          list2_insert_before_element(tb_pP, cursor_p, &rlc_pP->receiver_buffer);
-          return 0;
-        } else {
-          if (pdu_info_cursor_p->rf == 0) {
-            LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d (vr(mr) < vr(r) and vr(h) > vr(r) and sn >= vr(r))\n",
-                  PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                  __LINE__,
-                  pdu_info_p->sn);
-            list2_add_tail(tb_pP, &rlc_pP->receiver_buffer);
-            return 0;
-          } else if ((pdu_info_p->rf == 1) && (pdu_info_cursor_p->rf == 1) && (pdu_info_p->sn == pdu_info_cursor_p->sn)) {
-            if ((pdu_info_cursor_p->so + pdu_info_cursor_p->payload_size - 1) < pdu_info_p->so) {
-              LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d (vr(mr) < vr(r) and vr(h) > vr(r) and sn >= vr(r))\n",
-                    PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                    __LINE__,
-                    pdu_info_p->sn);
-              list2_add_tail(tb_pP, &rlc_pP->receiver_buffer);
-              return 0;
-            } else {
-              LOG_N(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d DROPPED\n",
-                    PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                    __LINE__,
-                    pdu_info_p->sn);
-              return -2;
-            }
-          } else if (pdu_info_p->sn != pdu_info_cursor_p->sn) {
-            LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d (vr(mr) < vr(r) and vr(h) > vr(r) and sn >= vr(r))\n",
-                  PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                  __LINE__,
-                  pdu_info_p->sn);
-            list2_add_tail(tb_pP, &rlc_pP->receiver_buffer);
-            return 0;
-          }
-        }
-
-        LOG_N(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d DROPPED\n",
-              PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-              __LINE__,
-              pdu_info_p->sn);
-        return -2;
-      } else { // (pdu_info_p->sn < rlc_pP->vr_r)
-        cursor_p = rlc_pP->receiver_buffer.tail;
-        pdu_info_cursor_p = &((rlc_am_rx_pdu_management_t*)(cursor_p->data))->pdu_info;
-
-        while ((cursor_p != NULL) && (pdu_info_cursor_p->sn < rlc_pP->vr_r)) {
-          //pdu_info_cursor_p = &((rlc_am_rx_pdu_management_t*)(cursor_p->data))->pdu_info;
-          if (pdu_info_p->sn > pdu_info_cursor_p->sn) {
-            if (previous_cursor_p != NULL) {
-              pdu_info_previous_cursor_p = &((rlc_am_rx_pdu_management_t*)(previous_cursor_p->data))->pdu_info;
-
-              if (pdu_info_previous_cursor_p->sn == pdu_info_cursor_p->sn) {
-                if (pdu_info_p->rf != pdu_info_previous_cursor_p->rf) {
-                  LOG_N(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d WRONG RF -> DROPPED (vr(mr) < vr(r) and sn >= vr(r))\n",
-                        PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                        __LINE__, pdu_info_p->sn);
-                  return -2;
-                } else if (pdu_info_p->rf == 1) {
-                  if ((pdu_info_p->so + pdu_info_p->payload_size - 1) >= pdu_info_previous_cursor_p->so) {
-                    LOG_N(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d SO OVERLAP -> DROPPED (vr(mr) < vr(r) and sn >= vr(r))\n",
-                          PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                          __LINE__,
-                          pdu_info_p->sn);
-                    return -2;
-                  }
-                }
-              }
-            }
-
-            LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d (vr(mr) < vr(r))\n",
-                  PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                  __LINE__,
-                  pdu_info_p->sn);
-            list2_insert_after_element(tb_pP, cursor_p, &rlc_pP->receiver_buffer);
-            return 0;
-          } else if (pdu_info_p->sn == pdu_info_cursor_p->sn) {
-            if (pdu_info_cursor_p->rf == 0) {
-              LOG_N(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d DUPLICATE -> DROPPED\n",
-                    PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                    __LINE__,
-                    pdu_info_p->sn);
-              return -2;
-            } else if (pdu_info_p->rf == 1) {
-              if ((pdu_info_cursor_p->so + pdu_info_cursor_p->payload_size - 1) < pdu_info_p->so) {
-
-                if (previous_cursor_p != NULL) {
-                  pdu_info_previous_cursor_p = &((rlc_am_rx_pdu_management_t*)(previous_cursor_p->data))->pdu_info;
-
-                  if (pdu_info_previous_cursor_p->sn == pdu_info_cursor_p->sn) {
-                    if ((pdu_info_p->so + pdu_info_p->payload_size - 1) < pdu_info_previous_cursor_p->so) {
-
-                      LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d SEGMENT OFFSET %05d (vr(mr) < vr(r) and sn < vr(r))\n",
-                            PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                            __LINE__,
-                            pdu_info_p->sn,
-                            pdu_info_p->so);
-                      list2_insert_after_element(tb_pP, cursor_p, &rlc_pP->receiver_buffer);
-                      return 0;
-                    } else {
-                      LOG_N(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d OVERLAP PREVIOUS SO DUPLICATE -> DROPPED\n",
-                            PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                            __LINE__,
-                            pdu_info_p->sn);
-                      return -2;
-                    }
-                  }
-                }
-
-                LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d SEGMENT OFFSET %05d (vr(mr) < vr(r) and sn < vr(r))\n",
-                      PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                      __LINE__,
-                      pdu_info_p->sn,
-                      pdu_info_p->so);
-                list2_insert_after_element(tb_pP, cursor_p, &rlc_pP->receiver_buffer);
-                return 0;
-
-              } else if (pdu_info_cursor_p->so <= pdu_info_p->so) {
-                LOG_N(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d OVERLAP SO DUPLICATE -> DROPPED\n",
-                      PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                      __LINE__,
-                      pdu_info_p->sn);
-                return -2;
-              }
-            } else {
-              LOG_N(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d DROPPED\n",
-                    PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                    __LINE__,
-                    pdu_info_p->sn);
-              return -2;
-            }
-          }
-
-          previous_cursor_p = cursor_p;
-          cursor_p = cursor_p->previous;
-
-          if (cursor_p != NULL) {
-            pdu_info_cursor_p = &((rlc_am_rx_pdu_management_t*)(cursor_p->data))->pdu_info;
-          }
-        }
-
-        if (cursor_p != NULL) {
-          LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d (vr(mr) < vr(r) and sn < vr(r))\n",
-                PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                __LINE__,
-                pdu_info_p->sn);
-          list2_insert_after_element(tb_pP, cursor_p, &rlc_pP->receiver_buffer);
-          return 0;
-        } else {
-          if (pdu_info_cursor_p->rf == 0) {
-            LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d (vr(mr) < vr(r) and vr(h) > vr(r) and sn >= vr(r))\n",
-                  PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                  __LINE__,
-                  pdu_info_p->sn);
-            list2_add_tail(tb_pP, &rlc_pP->receiver_buffer);
-            return 0;
-          } else if ((pdu_info_p->rf == 1) && (pdu_info_cursor_p->rf == 1) && (pdu_info_p->sn == pdu_info_cursor_p->sn)) {
-            if ((pdu_info_cursor_p->so + pdu_info_cursor_p->payload_size - 1) < pdu_info_p->so) {
-              LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d (vr(mr) < vr(r) and vr(h) > vr(r) and sn >= vr(r))\n",
-                    PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                    __LINE__,
-                    pdu_info_p->sn);
-              list2_add_tail(tb_pP, &rlc_pP->receiver_buffer);
-              return 0;
-            } else {
-              LOG_N(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d DROPPED\n",
-                    PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                    __LINE__,
-                    pdu_info_p->sn);
-              return -2;
-            }
-          } else if (pdu_info_p->sn != pdu_info_cursor_p->sn) {
-            LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d (vr(mr) < vr(r) and vr(h) > vr(r) and sn >= vr(r))\n",
-                  PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                  __LINE__,
-                  pdu_info_p->sn);
-            list2_add_tail(tb_pP, &rlc_pP->receiver_buffer);
-            return 0;
-          }
-        }
-
-        LOG_N(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d DROPPED\n",
-              PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-              __LINE__,
-              pdu_info_p->sn);
-        return -2;
-      }
-    } else { // (pdu_info_p->vr_mr > rlc_pP->vr_r), > and not >=
-      // FAR MORE SIMPLE CASE
-      while (cursor_p != NULL) {
-        //msg ("[FRAME %05u][%s][RLC_AM][MOD %u/%u][RB %u][INSERT PDU] LINE %d cursor_p %p\n", ctxt_pP->frame, rlc_pP->module_id, rlc_pP->rb_id, __LINE__, cursor_p);
-        pdu_info_cursor_p = &((rlc_am_rx_pdu_management_t*)(cursor_p->data))->pdu_info;
-
-        if (pdu_info_p->sn < pdu_info_cursor_p->sn) {
-
-          if (previous_cursor_p != NULL) {
-            pdu_info_previous_cursor_p = &((rlc_am_rx_pdu_management_t*)(previous_cursor_p->data))->pdu_info;
-
-            if (pdu_info_previous_cursor_p->sn == pdu_info_p->sn) {
-              if (pdu_info_p->rf != pdu_info_previous_cursor_p->rf) {
-                LOG_N(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d WRONG RF -> DROPPED (vr(mr) > vr(r))\n",
-                      PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                      __LINE__,
-                      pdu_info_p->sn);
-                return -2;
-              } else if (pdu_info_p->rf == 1) {
-                if ((pdu_info_previous_cursor_p->so + pdu_info_previous_cursor_p->payload_size - 1) >= pdu_info_p->so) {
-                  LOG_N(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d SO OVERLAP -> DROPPED (vr(mr) > vr(r))\n",
-                        PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                        __LINE__,
-                        pdu_info_p->sn);
-                  return -2;
-                }
-              }
-            }
-          }
-
-          LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d (vr(mr) > vr(r))\n",
-                PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                __LINE__,
-                pdu_info_p->sn);
-          list2_insert_before_element(tb_pP, cursor_p, &rlc_pP->receiver_buffer);
-          return 0;
-
-        } else if (pdu_info_p->sn == pdu_info_cursor_p->sn) {
-          if (pdu_info_cursor_p->rf == 0) {
-            LOG_N(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d WRONG RF -> DROPPED (vr(mr) > vr(r))\n",
-                  PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                  __LINE__,
-                  pdu_info_p->sn);
-            return -2;
-          } else if (pdu_info_p->rf == 1) {
-
-            if ((pdu_info_p->so + pdu_info_p->payload_size - 1) < pdu_info_cursor_p->so) {
-
-              if (previous_cursor_p != NULL) {
-                pdu_info_previous_cursor_p = &((rlc_am_rx_pdu_management_t*)(previous_cursor_p->data))->pdu_info;
-
-                if (pdu_info_previous_cursor_p->sn == pdu_info_cursor_p->sn) {
-                  if ((pdu_info_previous_cursor_p->so + pdu_info_previous_cursor_p->payload_size - 1) < pdu_info_p->so) {
-
-                    LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d SEGMENT OFFSET %05d (vr(mr) > vr(r) and sn >= vr(r))\n",
-                          PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                          __LINE__,
-                          pdu_info_p->sn,
-                          pdu_info_p->so);
-                    LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] PREVIOUS SO %d PAYLOAD SIZE %d\n",
-                          PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                          pdu_info_previous_cursor_p->so,
-                          pdu_info_previous_cursor_p->payload_size);
-                    list2_insert_before_element(tb_pP, cursor_p, &rlc_pP->receiver_buffer);
-                    return 0;
-                  } else {
-                    LOG_N(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d OVERLAP PREVIOUS SO DUPLICATE -> DROPPED\n",
-                          PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                          __LINE__,
-                          pdu_info_p->sn);
-                    return -2;
-                  }
-                }
-              }
-
-              LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d SEGMENT OFFSET %05d (vr(mr) > vr(r) and sn >= vr(r))\n",
-                    PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                    __LINE__,
-                    pdu_info_p->sn,
-                    pdu_info_p->so);
-              list2_insert_before_element(tb_pP, cursor_p, &rlc_pP->receiver_buffer);
-              return 0;
-            } else if (pdu_info_p->so <= pdu_info_cursor_p->so) {
-              LOG_N(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d OVERLAP SO DUPLICATE -> DROPPED\n",
-                    PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                    __LINE__,
-                    pdu_info_p->sn);
-              return -2;
-            }
-          } else {
-            LOG_N(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d DROPPED\n",
-                  PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                  __LINE__,
-                  pdu_info_p->sn);
-            return -2;
-          }
-        }
-
-        previous_cursor_p = cursor_p;
-        cursor_p = cursor_p->next;
-      }
-
-      LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d (vr(mr) > vr(r))(last inserted)\n",
-            PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-            __LINE__,
-            pdu_info_p->sn);
-
-      // pdu_info_cursor_p can not be NULL here
-      if  (pdu_info_p->sn == pdu_info_cursor_p->sn) {
-        if ((pdu_info_cursor_p->so + pdu_info_cursor_p->payload_size - 1) < pdu_info_p->so) {
-          list2_add_tail(tb_pP, &rlc_pP->receiver_buffer);
-          return 0;
-        } else {
-          LOG_N(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d OVERLAP SO DUPLICATE -> DROPPED\n",
-                PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                __LINE__,
-                pdu_info_p->sn);
-          return -2;
-        }
-      } else {
-        list2_add_tail(tb_pP, &rlc_pP->receiver_buffer);
-        return 0;
-      }
-    }
-  } else {
-    LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d (only inserted)\n",
-          PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-          __LINE__,
-          pdu_info_p->sn);
-    list2_add_head(tb_pP, &rlc_pP->receiver_buffer);
-    return 0;
-  }
-
-  LOG_N(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[INSERT PDU] LINE %d RX PDU SN %04d DROPPED @4\n",
-        PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-        __LINE__,
-        pdu_info_p->sn);
-  return -1;
-}
-#endif
 
 //-----------------------------------------------------------------------------
 void
diff --git a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_rx_list.h b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_rx_list.h
index 9dcc75223dc6d543f1be05dfdfc43af51473760b..b02befdab845a6b0e123110f31f118ba0763009a 100644
--- a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_rx_list.h
+++ b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_rx_list.h
@@ -68,17 +68,6 @@
 */
 protected_rlc_am_rx_list( rlc_am_rx_pdu_status_t rlc_am_rx_list_check_duplicate_insert_pdu(const protocol_ctxt_t* const  ctxt_pP,rlc_am_entity_t* const rlc_pP,mem_block_t* const tb_pP);)
 
-#if 0
-/*! \fn signed int rlc_am_rx_list_insert_pdu(const protocol_ctxt_t* const ctxt_pP, rlc_am_entity_t* const rlcP , mem_block_t* const tbP)
-* \brief      Insert a PDU in the RX buffer (implemented with a list).
-* \param[in]  ctxt_pP        Running context.
-* \param[in]  rlcP         RLC AM protocol instance pointer.
-* \param[in]  tbP          A PDU embedded in a mem_block_t.
-* \return     Zero if the PDU could be inserted in the RX buffer, a negative value if the PDU could not be inserted.
-*/
-protected_rlc_am_rx_list( signed int rlc_am_rx_list_insert_pdu(const protocol_ctxt_t* const ctxt_pP, rlc_am_entity_t* const rlcP,  mem_block_t* const tbP);)
-#endif
-
 /*! \fn boolean_t rlc_am_rx_check_vr_reassemble(const protocol_ctxt_t* const ctxt_pP,const rlc_am_entity_t* const rlc_pP)
 * \brief      Check if reassembly taking into account potential new vrR value
 * \param[in]  ctxt_pP        Running context.
diff --git a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_segments_holes.c b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_segments_holes.c
index 1da5bbc441cb1aa865afc6e58ee951c7761dd498..a696f9a9f1bb0a0dbb31d83acff806c4684b18d6 100644
--- a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_segments_holes.c
+++ b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_segments_holes.c
@@ -19,301 +19,4 @@
  *      contact@openairinterface.org
  */
 
-#if 0
-#define RLC_AM_MODULE 1
-#define RLC_AM_SEGMENT_HOLES_C 1
-//-----------------------------------------------------------------------------
-#include "rlc_am.h"
-#include "LAYER2/MAC/extern.h"
-#include "UTIL/LOG/log.h"
-
-//-----------------------------------------------------------------------------
-void rlc_am_clear_holes (
-  const protocol_ctxt_t* const  ctxt_pP,
-  rlc_am_entity_t *const rlc_pP,
-  const rlc_sn_t snP)
-{
-  rlc_pP->tx_data_pdu_buffer[snP].num_holes         = 0;
-}
-//-----------------------------------------------------------------------------
-void rlc_am_shift_down_holes (
-  const protocol_ctxt_t* const  ctxt_pP,
-  rlc_am_entity_t *const rlc_pP,
-  const rlc_sn_t snP,
-  const int indexP)
-{
-  int i;
-
-  for (i=indexP; i < rlc_pP->tx_data_pdu_buffer[snP].num_holes - 1; i++) {
-    rlc_pP->tx_data_pdu_buffer[snP].hole_so_start[i]   = rlc_pP->tx_data_pdu_buffer[snP].hole_so_start[i+1];
-    rlc_pP->tx_data_pdu_buffer[snP].hole_so_stop[i]    = rlc_pP->tx_data_pdu_buffer[snP].hole_so_stop[i+1];
-  }
-
-  rlc_pP->tx_data_pdu_buffer[snP].num_holes =  rlc_pP->tx_data_pdu_buffer[snP].num_holes - 1;
-}
-//-----------------------------------------------------------------------------
-void rlc_am_shift_up_holes (
-  const protocol_ctxt_t* const  ctxt_pP,
-  rlc_am_entity_t *const        rlc_pP,
-  const rlc_sn_t                snP,
-  const int                     indexP)
-{
-  // shift include indexP
-  int i;
-
-  for (i=rlc_pP->tx_data_pdu_buffer[snP].num_holes; i > indexP; i--) {
-    rlc_pP->tx_data_pdu_buffer[snP].hole_so_start[i]   = rlc_pP->tx_data_pdu_buffer[snP].hole_so_start[i-1];
-    rlc_pP->tx_data_pdu_buffer[snP].hole_so_stop[i]    = rlc_pP->tx_data_pdu_buffer[snP].hole_so_stop[i-1];
-  }
-
-  rlc_pP->tx_data_pdu_buffer[snP].num_holes =  rlc_pP->tx_data_pdu_buffer[snP].num_holes + 1;
-  assert(rlc_pP->tx_data_pdu_buffer[snP].num_holes < RLC_AM_MAX_HOLES_REPORT_PER_PDU);
-}
-//-----------------------------------------------------------------------------
-void rlc_am_remove_hole (
-  const protocol_ctxt_t* const  ctxt_pP,
-  rlc_am_entity_t *const        rlc_pP,
-  const rlc_sn_t                snP,
-  const sdu_size_t              so_startP,
-  const sdu_size_t              so_stopP)
-{
-  int i;
-#if TRACE_RLC_AM_HOLE
-  LOG_D(RLC,
-        PROTOCOL_RLC_AM_CTXT_FMT"[HOLE] REMOVE HOLE SN %04d  so_startP %05d so_stopP %05d rlc_pP->tx_data_pdu_buffer[snP].nack_so_start %05d rlc_pP->tx_data_pdu_buffer[snP].nack_so_stop %05d\n",
-        PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-        snP,
-        so_startP,
-        so_stopP,
-        rlc_pP->tx_data_pdu_buffer[snP].nack_so_start,
-        rlc_pP->tx_data_pdu_buffer[snP].nack_so_stop);
-#endif
-  assert(so_startP <= so_stopP);
-
-  if (rlc_pP->tx_data_pdu_buffer[snP].num_holes == 0) {
-    assert(so_startP == rlc_pP->tx_data_pdu_buffer[snP].nack_so_start);
-    assert(so_stopP  <= rlc_pP->tx_data_pdu_buffer[snP].nack_so_stop);
-#if TRACE_RLC_AM_HOLE
-    LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[HOLE] REMOVE HOLE SN %04d  MODIFIED nack_so_start %05d->%05d\n",
-          PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-          snP,
-          rlc_pP->tx_data_pdu_buffer[snP].nack_so_start,
-          so_stopP+1);
-#endif
-    rlc_pP->tx_data_pdu_buffer[snP].nack_so_start = so_stopP+1;
-
-    if (rlc_pP->tx_data_pdu_buffer[snP].nack_so_start >= rlc_pP->tx_data_pdu_buffer[snP].nack_so_stop) {
-      rlc_pP->tx_data_pdu_buffer[snP].nack_so_start = 0;
-      rlc_pP->tx_data_pdu_buffer[snP].nack_so_stop  = 0x7FFF;
-    }
-  } else {
-    // normally should be removed in increasing order...
-    for (i = 0; i < rlc_pP->tx_data_pdu_buffer[snP].num_holes; i++) {
-      if (so_startP <= rlc_pP->tx_data_pdu_buffer[snP].hole_so_start[i]) {
-        if (so_stopP >= rlc_pP->tx_data_pdu_buffer[snP].hole_so_stop[i]) {
-          rlc_am_shift_down_holes(ctxt_pP, rlc_pP, snP, i);
-          i = i - 1;
-        } else {
-          rlc_pP->tx_data_pdu_buffer[snP].hole_so_start[i] = so_stopP;
-
-          if (rlc_pP->tx_data_pdu_buffer[snP].num_holes == 0) {
-            rlc_pP->tx_data_pdu_buffer[snP].nack_so_start = 0;
-            rlc_pP->tx_data_pdu_buffer[snP].nack_so_stop  = 0x7FFF;
-          } else {
-            rlc_pP->tx_data_pdu_buffer[snP].nack_so_start = rlc_pP->tx_data_pdu_buffer[snP].hole_so_start[0];
-            rlc_pP->tx_data_pdu_buffer[snP].nack_so_stop  = rlc_pP->tx_data_pdu_buffer[snP].hole_so_stop[rlc_pP->tx_data_pdu_buffer[snP].num_holes - 1];
-          }
-
-#if TRACE_RLC_AM_HOLE
-          LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[HOLE] REMOVE HOLE SN %04d  NOW nack_so_start %05d nack_so_stop %05d num holes %d\n",
-                PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                snP,
-                rlc_pP->tx_data_pdu_buffer[snP].nack_so_start,
-                rlc_pP->tx_data_pdu_buffer[snP].nack_so_stop,
-                rlc_pP->tx_data_pdu_buffer[snP].num_holes);
-#endif
-          return;
-        }
-      } else if (so_startP > rlc_pP->tx_data_pdu_buffer[snP].hole_so_start[i]) {
-        if (so_startP <= rlc_pP->tx_data_pdu_buffer[snP].hole_so_stop[i]) {
-          if (so_stopP < rlc_pP->tx_data_pdu_buffer[snP].hole_so_stop[i]) {
-            // BAD CASE: 1 HOLE IS SPLITTED IN 2 HOLES
-            rlc_am_shift_up_holes(ctxt_pP, rlc_pP, snP, i+1);
-            rlc_pP->tx_data_pdu_buffer[snP].hole_so_start[i+1] = so_startP+1;
-            rlc_pP->tx_data_pdu_buffer[snP].hole_so_stop[i+1] = rlc_pP->tx_data_pdu_buffer[snP].hole_so_stop[i];
-            rlc_pP->tx_data_pdu_buffer[snP].hole_so_stop[i] = so_startP - 1;
-          } else {
-            rlc_pP->tx_data_pdu_buffer[snP].hole_so_stop[i] = so_startP;
-          }
-        }
-      }
-    }
-
-    if (rlc_pP->tx_data_pdu_buffer[snP].num_holes == 0) {
-      rlc_pP->tx_data_pdu_buffer[snP].nack_so_start = 0;
-      rlc_pP->tx_data_pdu_buffer[snP].nack_so_stop  = 0x7FFF;
-    } else {
-      rlc_pP->tx_data_pdu_buffer[snP].nack_so_start = rlc_pP->tx_data_pdu_buffer[snP].hole_so_start[0];
-      rlc_pP->tx_data_pdu_buffer[snP].nack_so_stop  = rlc_pP->tx_data_pdu_buffer[snP].hole_so_stop[rlc_pP->tx_data_pdu_buffer[snP].num_holes - 1];
-    }
-  }
-
-#if TRACE_RLC_AM_HOLE
-  LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[HOLE] REMOVE HOLE SN %04d  NOW nack_so_start %05d nack_so_stop %05d num holes %d\n",
-        PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-        snP,
-        rlc_pP->tx_data_pdu_buffer[snP].nack_so_start,
-        rlc_pP->tx_data_pdu_buffer[snP].nack_so_stop,
-        rlc_pP->tx_data_pdu_buffer[snP].num_holes);
-#endif
-  assert(rlc_pP->tx_data_pdu_buffer[snP].nack_so_start < rlc_pP->tx_data_pdu_buffer[snP].payload_size);
-}
-//-----------------------------------------------------------------------------
-void rlc_am_get_next_hole (
-  const protocol_ctxt_t* const  ctxt_pP,
-  rlc_am_entity_t *const        rlc_pP,
-  const rlc_sn_t                snP,
-  sdu_size_t* const             so_startP,
-  sdu_size_t* const             so_stopP)
-{
-  if (rlc_pP->tx_data_pdu_buffer[snP].num_holes == 0) {
-    *so_startP = rlc_pP->tx_data_pdu_buffer[snP].nack_so_start;
-    *so_stopP  = rlc_pP->tx_data_pdu_buffer[snP].nack_so_stop;
-#if TRACE_RLC_AM_HOLE
-    LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[HOLE] rlc_am_get_next_hole(SN %04d) %05d->%05d (NUM HOLES == 0)\n",
-          PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-          snP,
-          *so_startP,
-          *so_stopP);
-#endif
-  } else {
-    *so_startP = rlc_pP->tx_data_pdu_buffer[snP].hole_so_start[0];
-    *so_stopP  = rlc_pP->tx_data_pdu_buffer[snP].hole_so_stop[0];
-#if TRACE_RLC_AM_HOLE
-    LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[HOLE] rlc_am_get_next_hole(SN %04d) %05d->%05d (NUM HOLES == %d)\n",
-          PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-          snP,
-          *so_startP,
-          *so_stopP,
-          rlc_pP->tx_data_pdu_buffer[snP].num_holes);
-#endif
-  }
-}
-//-----------------------------------------------------------------------------
-void rlc_am_add_hole (
-  const protocol_ctxt_t* const  ctxt_pP,
-  rlc_am_entity_t *const        rlc_pP,
-  const rlc_sn_t                snP,
-  const sdu_size_t              so_startP,
-  sdu_size_t              so_stopP)
-{
-  int i, hole_index;
-
-  assert(so_startP <= so_stopP);
-  assert(so_startP < 0x7FFF);
-  assert(so_stopP  <= 0x7FFF);
-
-
-  // if global NACK
-  if ((so_startP == 0) && ((so_stopP == 0x7FFF) || (so_stopP == rlc_pP->tx_data_pdu_buffer[snP].payload_size - 1))) {
-    rlc_pP->tx_data_pdu_buffer[snP].num_holes         = 0;
-    rlc_pP->tx_data_pdu_buffer[snP].nack_so_start = so_startP;
-    rlc_pP->tx_data_pdu_buffer[snP].nack_so_stop  = so_stopP;
-#if TRACE_RLC_AM_HOLE
-    LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[HOLE] SN %04d GLOBAL NACK 0->%05d\n",
-          PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-          snP,
-          so_stopP);
-#endif
-    assert(rlc_pP->tx_data_pdu_buffer[snP].nack_so_start < rlc_pP->tx_data_pdu_buffer[snP].payload_size);
-    return;
-  }
-
-  if (so_stopP == 0x7FFF) {
-    so_stopP = rlc_pP->tx_data_pdu_buffer[snP].payload_size - 1;
-  }
-
-  // first hole
-  if (rlc_pP->tx_data_pdu_buffer[snP].num_holes == 0) {
-    rlc_pP->tx_data_pdu_buffer[snP].hole_so_start[0] = so_startP;
-    rlc_pP->tx_data_pdu_buffer[snP].hole_so_stop [0] = so_stopP;
-
-    rlc_pP->tx_data_pdu_buffer[snP].num_holes         = 1;
-
-    rlc_pP->tx_data_pdu_buffer[snP].nack_so_start = so_startP;
-    rlc_pP->tx_data_pdu_buffer[snP].nack_so_stop  = so_stopP;
-#if TRACE_RLC_AM_HOLE
-    LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[HOLE] FIRST HOLE SN %04d GLOBAL NACK %05d->%05d\n",
-          PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-          snP,
-          so_startP,
-          so_stopP);
-#endif
-    assert(rlc_pP->tx_data_pdu_buffer[snP].nack_so_start < rlc_pP->tx_data_pdu_buffer[snP].payload_size);
-    return;
-  }
-
-  hole_index = 0;
-
-  while (hole_index < rlc_pP->tx_data_pdu_buffer[snP].num_holes) {
-    if (so_stopP < rlc_pP->tx_data_pdu_buffer[snP].hole_so_start[hole_index]) {
-      assert(rlc_pP->tx_data_pdu_buffer[snP].num_holes < RLC_AM_MAX_HOLES_REPORT_PER_PDU);
-
-      if (hole_index > 0) {
-        assert(so_startP > rlc_pP->tx_data_pdu_buffer[snP].hole_so_stop[hole_index-1]);
-      }
-
-      for (i=rlc_pP->tx_data_pdu_buffer[snP].num_holes; i >= hole_index; i--) {
-        rlc_pP->tx_data_pdu_buffer[snP].hole_so_start[i]   = rlc_pP->tx_data_pdu_buffer[snP].hole_so_start[i-1];
-        rlc_pP->tx_data_pdu_buffer[snP].hole_so_stop[i]    = rlc_pP->tx_data_pdu_buffer[snP].hole_so_stop[i-1];
-      }
-
-      rlc_pP->tx_data_pdu_buffer[snP].hole_so_start[hole_index]   = so_startP;
-      rlc_pP->tx_data_pdu_buffer[snP].hole_so_stop[hole_index]    = so_stopP;
-
-      // update nack "window" vars nack_so_start, nack_so_stop
-      if (hole_index == 0) {
-        rlc_pP->tx_data_pdu_buffer[snP].nack_so_start = so_startP;
-      }
-
-      rlc_pP->tx_data_pdu_buffer[snP].num_holes += 1;
-#if TRACE_RLC_AM_HOLE
-      LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[HOLE] INSERT %d th HOLE SN %04d GLOBAL NACK %05d->%05d\n",
-            PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-            rlc_pP->tx_data_pdu_buffer[snP].num_holes,
-            snP,
-            so_startP,
-            so_stopP);
-#endif
-      assert(rlc_pP->tx_data_pdu_buffer[snP].nack_so_start < rlc_pP->tx_data_pdu_buffer[snP].payload_size);
-      assert(rlc_pP->tx_data_pdu_buffer[snP].num_holes < RLC_AM_MAX_HOLES_REPORT_PER_PDU);
-      return;
-    }
-
-    hole_index = hole_index + 1;
-  }
-
-  // if here insert to the "tail"
-  if (so_startP > rlc_pP->tx_data_pdu_buffer[snP].hole_so_stop[hole_index - 1]) {
-    assert(rlc_pP->tx_data_pdu_buffer[snP].num_holes < RLC_AM_MAX_HOLES_REPORT_PER_PDU);
-    rlc_pP->tx_data_pdu_buffer[snP].hole_so_start[hole_index]   = so_startP;
-    rlc_pP->tx_data_pdu_buffer[snP].hole_so_stop[hole_index]    = so_stopP;
-    rlc_pP->tx_data_pdu_buffer[snP].num_holes += 1;
-    // update nack "window" vars nack_so_start, nack_so_stop
-    rlc_pP->tx_data_pdu_buffer[snP].nack_so_stop = so_stopP;
-#if TRACE_RLC_AM_HOLE
-    LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[HOLE] INSERT THE %d th LAST HOLE SN %04d GLOBAL NACK %05d->%05d\n",
-          PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-          rlc_pP->tx_data_pdu_buffer[snP].num_holes,
-          snP,
-          so_startP,
-          so_stopP);
-#endif
-  } else {
-    assert(1==2);
-  }
-
-  assert(rlc_pP->tx_data_pdu_buffer[snP].num_holes < RLC_AM_MAX_HOLES_REPORT_PER_PDU);
-  assert(rlc_pP->tx_data_pdu_buffer[snP].nack_so_start < rlc_pP->tx_data_pdu_buffer[snP].payload_size);
-}
-#endif
+/* This file is empty. Might be deleted ? */
diff --git a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_segments_holes.h b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_segments_holes.h
index 7c22697ac42b08186856287ab4d222c310f9d2cf..39971888c28bfe390e06a9280c2bac5a77e307ac 100644
--- a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_segments_holes.h
+++ b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_segments_holes.h
@@ -32,80 +32,5 @@
 * @ingroup _rlc_am_internal_segment_impl_
 * @{
 */
-#if 0
-#ifndef __RLC_AM_SEGMENT_HOLES_H__
-#    define __RLC_AM_SEGMENT_HOLES_H__
-//-----------------------------------------------------------------------------
-#    ifdef RLC_AM_SEGMENT_HOLES_C
-#        define private_rlc_am_segments_holes(x)    x
-#        define protected_rlc_am_segments_holes(x)  x
-#        define public_rlc_am_segments_holes(x)     x
-#    else
-#        ifdef RLC_AM_MODULE
-#            define private_rlc_am_segments_holes(x)
-#            define protected_rlc_am_segments_holes(x)  extern x
-#            define public_rlc_am_segments_holes(x)     extern x
-#        else
-#            define private_rlc_am_segments_holes(x)
-#            define protected_rlc_am_segments_holes(x)
-#            define public_rlc_am_segments_holes(x)     extern x
-#        endif
-#    endif
-/*! \fn void rlc_am_clear_holes (const protocol_ctxt_t* const  ctxt_pP, rlc_am_entity_t * const rlcP, rlc_sn_t snP)
-* \brief      Remove all marked holes for PDU with sequence number "snP".
-* \param[in]  ctxt_pP        Running context.
-* \param[in]  rlcP           RLC AM protocol instance pointer.
-* \param[in]  snP            Sequence number.
-*/
-protected_rlc_am_segments_holes(void rlc_am_clear_holes (
-                                  const protocol_ctxt_t* const  ctxt_pP,
-                                  rlc_am_entity_t *const rlcP,
-                                  const rlc_sn_t snP);)
-
-/*! \fn void rlc_am_remove_hole (const protocol_ctxt_t* const  ctxt_pP, rlc_am_entity_t * const rlcP,  rlc_sn_t snP, sdu_size_t so_startP, sdu_size_t so_stopP)
-* \brief      Remove for PDU with sequence number "snP" a NACK for byte segment offset [so_startP, so_stopP].
-* \param[in]  ctxt_pP        Running context.
-* \param[in]  rlcP           RLC AM protocol instance pointer.
-* \param[in]  snP            Sequence number.
-* \param[in]  so_startP      Start of segment offset.
-* \param[in]  so_stopP       End of segment offset.
-*/
-protected_rlc_am_segments_holes(void rlc_am_remove_hole (
-                                  const protocol_ctxt_t* const  ctxt_pP,
-                                  rlc_am_entity_t *const rlcP,
-                                  const rlc_sn_t   snP,
-                                  const sdu_size_t so_startP,
-                                  const sdu_size_t so_stopP);)
+/* This file is empty. Should be removed */
 
-/*! \fn void rlc_am_get_next_hole (const protocol_ctxt_t* const  ctxt_pP, rlc_am_entity_t * const rlcP, rlc_sn_t snP, sdu_size_t* so_startP, sdu_size_t* so_stopP)
-* \brief      Get for PDU with sequence number "snP" the first hole start and stop parameters.
-* \param[in]  ctxt_pP        Running context.
-* \param[in]  rlcP           RLC AM protocol instance pointer.
-* \param[in]  snP            Sequence number.
-* \param[in,out]  so_startP  Start of segment offset.
-* \param[in,out]  so_stopP   End of segment offset.
-*/
-protected_rlc_am_segments_holes(void rlc_am_get_next_hole (
-                                  const protocol_ctxt_t* const  ctxt_pP,
-                                  rlc_am_entity_t *const rlcP,
-                                  const rlc_sn_t snP,
-                                  sdu_size_t* const so_startP,
-                                  sdu_size_t* const so_stopP);)
-
-/*! \fn void rlc_am_add_hole (const protocol_ctxt_t* const  ctxt_pP, rlc_am_entity_t * const rlcP, rlc_sn_t snP, sdu_size_t so_startP, sdu_size_t so_stopP)
-* \brief      Mark for PDU with sequence number "snP" a NACK for byte segment offset [so_startP, so_stopP].
-* \param[in]  ctxt_pP        Running context.
-* \param[in]  rlcP           RLC AM protocol instance pointer.
-* \param[in]  snP            Sequence number.
-* \param[in,out]  so_startP  Start of segment offset.
-* \param[in,out]  so_stopP   End of segment offset.
-*/
-protected_rlc_am_segments_holes(void rlc_am_add_hole (
-                                  const protocol_ctxt_t* const  ctxt_pP,
-                                  rlc_am_entity_t *const rlcP,
-                                  const rlc_sn_t snP,
-                                  const sdu_size_t so_startP,
-                                  sdu_size_t so_stopP);)
-/** @} */
-#endif
-#endif
diff --git a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_status_report.c b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_status_report.c
index a9059df11c7b57eb485770497684a020ab58a661..7def8e01fc1b4dcf4c2a09d30af221952220ad6a 100644
--- a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_status_report.c
+++ b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_status_report.c
@@ -873,345 +873,3 @@ rlc_am_send_status_pdu(
 }
 
 
-#if 0
-//-----------------------------------------------------------------------------
-void
-rlc_am_send_status_pdu_backup(
-  const protocol_ctxt_t* const  ctxt_pP,
-  rlc_am_entity_t *const rlc_pP
-)
-{
-  // When STATUS reporting has been triggered, the receiving side of an AM RLC entity shall:
-  // - if t-StatusProhibit is not running:
-  //     - at the first transmission opportunity indicated by lower layer, construct a STATUS PDU and deliver it to lower layer;
-  // - else:
-  //     - at the first transmission opportunity indicated by lower layer after t-StatusProhibit expires, construct a single
-  //       STATUS PDU even if status reporting was triggered several times while t-StatusProhibit was running and
-  //       deliver it to lower layer;
-  //
-  // When a STATUS PDU has been delivered to lower layer, the receiving side of an AM RLC entity shall:
-  //     - start t-StatusProhibit.
-  //
-  // When constructing a STATUS PDU, the AM RLC entity shall:
-  //     - for the AMD PDUs with SN such that VR(R) <= SN < VR(MR) that has not been completely received yet, in
-  //       increasing SN of PDUs and increasing byte segment order within PDUs, starting with SN = VR(R) up to
-  //       the point where the resulting STATUS PDU still fits to the total size of RLC PDU(s) indicated by lower layer:
-  //         - for an AMD PDU for which no byte segments have been received yet::
-  //             - include in the STATUS PDU a NACK_SN which is set to the SN of the AMD PDU;
-  //         - for a continuous sequence of byte segments of a partly received AMD PDU that have not been received yet:
-  //             - include in the STATUS PDU a set of NACK_SN, SOstart and SOend
-  //     - set the ACK_SN to the SN of the next not received RLC Data PDU which is not indicated as missing in the
-  //       resulting STATUS PDU.
-
-  signed int                    nb_bits_to_transmit   = rlc_pP->nb_bytes_requested_by_mac << 3;
-  rlc_am_control_pdu_info_t     control_pdu_info;
-  rlc_am_pdu_info_t            *pdu_info_cursor_p     = NULL;
-  rlc_sn_t                      previous_sn_cursor    = (rlc_pP->vr_r - 1) & RLC_AM_SN_MASK;
-  rlc_sn_t                      sn_cursor             = 0;
-  mem_block_t                  *cursor_p              = rlc_pP->receiver_buffer.head;
-  int                           all_segments_received = 0;
-  int                           waited_so             = 0;
-  mem_block_t                  *tb_p                  = NULL;
-  sdu_size_t                    pdu_size              = 0;
-
-  memset(&control_pdu_info, 0, sizeof(rlc_am_control_pdu_info_t));
-  // header size
-  nb_bits_to_transmit = nb_bits_to_transmit - 15;
-#if TRACE_RLC_AM_STATUS_CREATION
-  LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[SEND-STATUS] nb_bits_to_transmit %d (15 already allocated for header)\n",
-        PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-        nb_bits_to_transmit);
-  rlc_am_rx_list_display(rlc_pP, " DISPLAY BEFORE CONSTRUCTION OF STATUS REPORT");
-#endif
-
-
-  if (cursor_p != NULL) {
-    pdu_info_cursor_p       = &((rlc_am_rx_pdu_management_t*)(cursor_p->data))->pdu_info;
-    sn_cursor             = pdu_info_cursor_p->sn;
-
-    while (!(RLC_AM_SN_IN_WINDOW(sn_cursor, rlc_pP->vr_r))) {
-      cursor_p                = cursor_p->next;
-      previous_sn_cursor    = sn_cursor;
-
-      pdu_info_cursor_p       = &((rlc_am_rx_pdu_management_t*)(cursor_p->data))->pdu_info;
-      sn_cursor             = pdu_info_cursor_p->sn;
-#if TRACE_RLC_AM_STATUS_CREATION
-      LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[SEND-STATUS] LINE %d FIND VR(R) <= SN sn_cursor %04d -> %04d\n",
-            PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-            __LINE__,
-            previous_sn_cursor,
-            sn_cursor);
-#endif
-    }
-
-    // 12 bits = size of NACK_SN field + E1, E2 bits
-    // 42 bits = size of NACK_SN field + SO_START, SO_END fields, E1, E2 bits
-    while ((cursor_p != NULL) && (nb_bits_to_transmit >= 12)) {
-      pdu_info_cursor_p       = &((rlc_am_rx_pdu_management_t*)(cursor_p->data))->pdu_info;
-      all_segments_received = ((rlc_am_rx_pdu_management_t*)(cursor_p->data))->all_segments_received;
-      sn_cursor             = pdu_info_cursor_p->sn;
-#if TRACE_RLC_AM_STATUS_CREATION
-      LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[SEND-STATUS] LINE %d LOOPING sn_cursor %04d previous sn_cursor %04d \n",
-            PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-            __LINE__,
-            sn_cursor,
-            previous_sn_cursor);
-#endif
-
-      // -------------------------------------------------------------------------------
-      // case resegmentation : several PDUs related to the same SN queued in list
-      // -------------------------------------------------------------------------------
-      if (sn_cursor == previous_sn_cursor) {
-        do {
-          cursor_p = cursor_p->next;
-
-          if (cursor_p != NULL) {
-            pdu_info_cursor_p       = &((rlc_am_rx_pdu_management_t*)(cursor_p->data))->pdu_info;
-            all_segments_received = ((rlc_am_rx_pdu_management_t*)(cursor_p->data))->all_segments_received;
-            sn_cursor             = pdu_info_cursor_p->sn;
-#if TRACE_RLC_AM_STATUS_CREATION
-            LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[SEND-STATUS] LINE %d NOW sn_cursor %04d \n",
-                  PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                  __LINE__,
-                  sn_cursor);
-#endif
-          } else {
-            if (all_segments_received) {
-              control_pdu_info.ack_sn = (sn_cursor + 1) & RLC_AM_SN_MASK;
-#if TRACE_RLC_AM_STATUS_CREATION
-              LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[SEND-STATUS] LINE %d PREPARE SENDING ACK SN %04d \n",
-                    PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                    __LINE__,
-                    control_pdu_info.ack_sn);
-#endif
-            } else {
-              control_pdu_info.ack_sn = (previous_sn_cursor + 1) & RLC_AM_SN_MASK;
-#if TRACE_RLC_AM_STATUS_CREATION
-              LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[SEND-STATUS] LINE %d PREPARE SENDING ACK SN %04d (CASE PREVIOUS SN)\n",
-                    PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                    __LINE__,
-                    control_pdu_info.ack_sn);
-#endif
-            }
-
-            goto end_push_nack;
-          }
-        } while ((cursor_p != NULL) && (sn_cursor == previous_sn_cursor));
-      }
-
-      // -------------------------------------------------------------------------------
-      // simple case, PDU(s) is/are missing
-      // -------------------------------------------------------------------------------
-      while (((previous_sn_cursor + 1) & RLC_AM_SN_MASK) != sn_cursor) {
-        if (nb_bits_to_transmit > 12) {
-          previous_sn_cursor = (previous_sn_cursor + 1) & RLC_AM_SN_MASK;
-          control_pdu_info.nack_list[control_pdu_info.num_nack].nack_sn   = previous_sn_cursor;
-          control_pdu_info.nack_list[control_pdu_info.num_nack].so_start  = 0;
-          control_pdu_info.nack_list[control_pdu_info.num_nack].so_end    = 0x7ff;
-          control_pdu_info.nack_list[control_pdu_info.num_nack].e1        = 1;
-          control_pdu_info.nack_list[control_pdu_info.num_nack].e2        = 0;
-          control_pdu_info.num_nack += 1;
-          nb_bits_to_transmit = nb_bits_to_transmit - 12;
-#if TRACE_RLC_AM_STATUS_CREATION
-          LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[SEND-STATUS] LINE %d PREPARE SENDING NACK %04d\n",
-                PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                __LINE__,
-                previous_sn_cursor);
-#endif
-        } else {
-          control_pdu_info.ack_sn = (previous_sn_cursor + 1) & RLC_AM_SN_MASK;
-#if TRACE_RLC_AM_STATUS_CREATION
-          LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[SEND-STATUS] LINE %d NO MORE BITS FOR SENDING NACK %04d -> ABORT AND SET FINAL ACK %04d\n",
-                PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                __LINE__,
-                previous_sn_cursor,
-                control_pdu_info.ack_sn);
-#endif
-          goto end_push_nack;
-        }
-      }
-
-      // -------------------------------------------------------------------------------
-      // not so simple case, a resegmented PDU(s) is missing
-      // -------------------------------------------------------------------------------
-      if (all_segments_received == 0) {
-        waited_so = 0;
-#if TRACE_RLC_AM_STATUS_CREATION
-        LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[SEND-STATUS] if (all_segments_received == 0) \n",
-              PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP));
-#endif
-
-        do {
-          if (pdu_info_cursor_p->so > waited_so) {
-            if (nb_bits_to_transmit >= 42) {
-              control_pdu_info.nack_list[control_pdu_info.num_nack].nack_sn   = sn_cursor;
-              control_pdu_info.nack_list[control_pdu_info.num_nack].so_start  = waited_so;
-              control_pdu_info.nack_list[control_pdu_info.num_nack].so_end    = pdu_info_cursor_p->so - 1;
-              control_pdu_info.nack_list[control_pdu_info.num_nack].e1        = 1;
-              control_pdu_info.nack_list[control_pdu_info.num_nack].e2        = 1;
-              control_pdu_info.num_nack += 1;
-              nb_bits_to_transmit = nb_bits_to_transmit - 42;
-#if TRACE_RLC_AM_STATUS_CREATION
-              LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[SEND-STATUS] LINE %d PREPARE SENDING NACK %04d SO START %05d SO END %05d (CASE SO %d > WAITED SO %d)\n",
-                    PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                    __LINE__,
-                    sn_cursor,
-                    waited_so,
-                    pdu_info_cursor_p->so - 1,
-                    pdu_info_cursor_p->so,
-                    waited_so);
-#endif
-
-              if (pdu_info_cursor_p->lsf == 1) { // last segment flag
-                //waited_so = 0x7FF;
-                waited_so = 0x7FFF;
-#if TRACE_RLC_AM_STATUS_CREATION
-                LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[SEND-STATUS] LINE %d SN %04d SET WAITED SO 0x7FFF)\n",
-                      PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                      __LINE__, sn_cursor);
-#endif
-                //break;
-              } else {
-                waited_so = pdu_info_cursor_p->so + pdu_info_cursor_p->payload_size;
-#if TRACE_RLC_AM_STATUS_CREATION
-                LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[SEND-STATUS] LINE %d SN %04d SET WAITED SO %d @1\n",
-                      PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                      __LINE__,
-                      sn_cursor,
-                      waited_so);
-#endif
-              }
-            } else {
-              control_pdu_info.ack_sn = sn_cursor;
-              goto end_push_nack;
-            }
-          } else { //else { // pdu_info_cursor_p->so <= waited_so
-            waited_so = pdu_info_cursor_p->so + pdu_info_cursor_p->payload_size;
-
-            if (pdu_info_cursor_p->lsf == 1) { // last segment flag
-              //waited_so = 0x7FF;
-              waited_so = 0x7FFF;
-            }
-
-#if TRACE_RLC_AM_STATUS_CREATION
-            LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[SEND-STATUS] LINE %d SN %04d SET WAITED SO %d @2\n",
-                  PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                  __LINE__,
-                  sn_cursor, waited_so);
-#endif
-          }
-
-          cursor_p = cursor_p->next;
-
-          if (cursor_p != NULL) {
-            pdu_info_cursor_p       = &((rlc_am_rx_pdu_management_t*)(cursor_p->data))->pdu_info;
-            all_segments_received = ((rlc_am_rx_pdu_management_t*)(cursor_p->data))->all_segments_received;
-            previous_sn_cursor    = sn_cursor;
-            sn_cursor             = pdu_info_cursor_p->sn;
-          } else {
-            // LG control_pdu_info.ack_sn = (previous_sn_cursor + 1) & RLC_AM_SN_MASK;
-            control_pdu_info.ack_sn = previous_sn_cursor;
-            goto end_push_nack;
-          }
-        } while ((cursor_p != NULL) && (sn_cursor == previous_sn_cursor));
-
-        // may be last segment of PDU not received
-        //if ((sn_cursor != previous_sn_cursor) && (waited_so != 0x7FF)) {
-        if ((sn_cursor != previous_sn_cursor) && (waited_so != 0x7FFF)) {
-          if (nb_bits_to_transmit >= 42) {
-            control_pdu_info.nack_list[control_pdu_info.num_nack].nack_sn   = previous_sn_cursor;
-            control_pdu_info.nack_list[control_pdu_info.num_nack].so_start  = waited_so;
-            //control_pdu_info.nack_list[control_pdu_info.num_nack].so_end    = 0x7FF;
-            control_pdu_info.nack_list[control_pdu_info.num_nack].so_end    = 0x7FFF;
-            control_pdu_info.nack_list[control_pdu_info.num_nack].e1        = 1;
-            control_pdu_info.nack_list[control_pdu_info.num_nack].e2        = 1;
-            control_pdu_info.num_nack += 1;
-            nb_bits_to_transmit = nb_bits_to_transmit - 42;
-#if TRACE_RLC_AM_STATUS_CREATION
-            LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[SEND-STATUS] LINE %d PREPARE SENDING NACK %04d SO START %05d SO END %05d\n",
-                  PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                  __LINE__,
-                  previous_sn_cursor,
-                  waited_so,
-                  0x7FFF);
-#endif
-          } else {
-            control_pdu_info.ack_sn = previous_sn_cursor;
-            goto end_push_nack;
-          }
-        }
-
-        waited_so = 0;
-      } else {
-        waited_so = 0;
-        cursor_p = cursor_p->next;
-        previous_sn_cursor = sn_cursor;
-      }
-    }
-
-    control_pdu_info.ack_sn = (previous_sn_cursor + 1) & RLC_AM_SN_MASK;
-  } else {
-    control_pdu_info.ack_sn = rlc_pP->vr_r;
-#if TRACE_RLC_AM_STATUS_CREATION
-    LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[SEND-STATUS] LINE %d PREPARE SENDING ACK %04d  = VR(R)\n",
-          PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-          __LINE__,
-          control_pdu_info.ack_sn);
-#endif
-  }
-
-end_push_nack:
-
-  if (control_pdu_info.num_nack > 0) {
-    control_pdu_info.nack_list[control_pdu_info.num_nack - 1].e1  = 0;
-  }
-
-  //msg ("[FRAME %5u][%s][RLC_AM][MOD %u/%u][RB %u] nb_bits_to_transmit %d\n",
-  //     rlc_pP->module_id, rlc_pP->rb_id, ctxt_pP->frame,nb_bits_to_transmit);
-
-#if TRACE_RLC_AM_STATUS_CREATION
-  LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[SEND-STATUS] LINE %d PREPARE SENDING ACK %04d NUM NACK %d\n",
-        PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-        __LINE__,
-        control_pdu_info.ack_sn,
-        control_pdu_info.num_nack);
-#endif
-  // encode the control pdu
-  pdu_size = rlc_pP->nb_bytes_requested_by_mac - ((nb_bits_to_transmit - 7 )>> 3);
-
-#if TRACE_RLC_AM_STATUS_CREATION
-  LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[SEND-STATUS] LINE %d forecast pdu_size %d\n",
-        PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-        __LINE__,
-        pdu_size);
-#endif
-  tb_p = get_free_mem_block(sizeof(struct mac_tb_req) + pdu_size, __func__);
-  if(tb_p == NULL) return;
-  memset(tb_p->data, 0, sizeof(struct mac_tb_req) + pdu_size);
-  //estimation only ((struct mac_tb_req*)(tb_p->data))->tb_size  = pdu_size;
-  ((struct mac_tb_req*)(tb_p->data))->data_ptr         = (uint8_t*)&(tb_p->data[sizeof(struct mac_tb_req)]);
-
-  // warning reuse of pdu_size
-  pdu_size = rlc_am_write_status_pdu(ctxt_pP, rlc_pP,(rlc_am_pdu_sn_10_t*)(((struct mac_tb_req*)(tb_p->data))->data_ptr), &control_pdu_info);
-  ((struct mac_tb_req*)(tb_p->data))->tb_size  = pdu_size;
-  //assert((((struct mac_tb_req*)(tb_p->data))->tb_size) < 3000);
-
-#if TRACE_RLC_AM_STATUS_CREATION
-  LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[SEND-STATUS] SEND STATUS PDU SIZE %d, rlc_pP->nb_bytes_requested_by_mac %d, nb_bits_to_transmit>>3 %d\n",
-        PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-        pdu_size,
-        rlc_pP->nb_bytes_requested_by_mac,
-        nb_bits_to_transmit >> 3);
-#endif
-  assert(pdu_size == (rlc_pP->nb_bytes_requested_by_mac - (nb_bits_to_transmit >> 3)));
-
-  // remaining bytes to transmit for RLC (retrans pdus and new data pdus)
-  rlc_pP->nb_bytes_requested_by_mac = rlc_pP->nb_bytes_requested_by_mac - pdu_size;
-  // put pdu in trans
-  list_add_head(tb_p, &rlc_pP->control_pdu_list);
-  rlc_pP->stat_tx_control_pdu   += 1;
-  rlc_pP->stat_tx_control_bytes += pdu_size;
-
-}
-#endif
-
diff --git a/openair2/PHY_INTERFACE/IF_Module.c b/openair2/PHY_INTERFACE/IF_Module.c
index b8529d50369340127e2856de4b17a2db3711556d..bd9f4bb8b22a11ab908a11fa62442db3017eb7af 100644
--- a/openair2/PHY_INTERFACE/IF_Module.c
+++ b/openair2/PHY_INTERFACE/IF_Module.c
@@ -237,24 +237,6 @@ void handle_ulsch(UL_IND_t *UL_info) {
 #define C do { size = 0; put(0); } while (0)
 #define A(...) do { char t[4096]; sprintf(t, __VA_ARGS__); append_string(t); } while (0)
 
-#if 0
-
-/* eats lots of ms at startup, disrupts realtime */
-static char *s;
-static int size;
-static int maxsize;
-
-static void put(char x)
-{
-  if (size == maxsize) {
-    maxsize += 32768;
-    s = realloc(s, maxsize); if (s == NULL) abort();
-  }
-  s[size++] = x;
-}
-
-#else
-
 /* eats nothing at startup, but fixed size */
 #define SMAX 65536
 static char s[SMAX];
@@ -267,8 +249,6 @@ static void put(char x)
   s[size++] = x;
 }
 
-#endif
-
 static void append_string(char *t)
 {
   size--;
diff --git a/openair2/RRC/LTE/L2_interface.c b/openair2/RRC/LTE/L2_interface.c
index d0e185ca9dc70faad3b94b87caf0119472b66986..650f51905cf3f1c8abf67f81d33f41c039f34e0a 100644
--- a/openair2/RRC/LTE/L2_interface.c
+++ b/openair2/RRC/LTE/L2_interface.c
@@ -96,30 +96,6 @@ mac_rrc_data_req(
                RC.rrc[Mod_idP]->carrier[CC_id].SIB1,
                RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB1);
 
-#if 0 //defined(ENABLE_ITTI)
-        {
-          MessageDef *message_p;
-          int sib1_size = RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB1;
-          int sdu_size = sizeof(RRC_MAC_BCCH_DATA_REQ (message_p).sdu);
-
-          if (sib1_size > sdu_size) {
-            LOG_E(RRC, "SIB1 SDU larger than BCCH SDU buffer size (%d, %d)", sib1_size, sdu_size);
-            sib1_size = sdu_size;
-          }
-
-          message_p = itti_alloc_new_message (TASK_RRC_ENB, RRC_MAC_BCCH_DATA_REQ);
-          RRC_MAC_BCCH_DATA_REQ (message_p).frame    = frameP;
-          RRC_MAC_BCCH_DATA_REQ (message_p).sdu_size = sib1_size;
-          memset (RRC_MAC_BCCH_DATA_REQ (message_p).sdu, 0, BCCH_SDU_SIZE);
-          memcpy (RRC_MAC_BCCH_DATA_REQ (message_p).sdu,
-                  RC.rrc[Mod_idP]->carrier[CC_id].SIB1,
-                  sib1_size);
-          RRC_MAC_BCCH_DATA_REQ (message_p).enb_index = eNB_index;
-
-          itti_send_msg_to_task (TASK_MAC_ENB, ENB_MODULE_ID_TO_INSTANCE(Mod_idP), message_p);
-        }
-#endif
-
 #ifdef DEBUG_RRC
         LOG_T(RRC,"[eNB %d] Frame %d : BCCH request => SIB 1\n",Mod_idP,frameP);
 
@@ -137,30 +113,6 @@ mac_rrc_data_req(
                RC.rrc[Mod_idP]->carrier[CC_id].SIB23,
                RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB23);
 
-#if 0 //defined(ENABLE_ITTI)
-        {
-          MessageDef *message_p;
-          int sib23_size = RC.rrc[Mod_idP]->carrier[CC_id].sizeof_SIB23;
-          int sdu_size = sizeof(RRC_MAC_BCCH_DATA_REQ (message_p).sdu);
-
-          if (sib23_size > sdu_size) {
-            LOG_E(RRC, "SIB23 SDU larger than BCCH SDU buffer size (%d, %d)", sib23_size, sdu_size);
-            sib23_size = sdu_size;
-          }
-
-          message_p = itti_alloc_new_message (TASK_RRC_ENB, RRC_MAC_BCCH_DATA_REQ);
-          RRC_MAC_BCCH_DATA_REQ (message_p).frame = frameP;
-          RRC_MAC_BCCH_DATA_REQ (message_p).sdu_size = sib23_size;
-          memset (RRC_MAC_BCCH_DATA_REQ (message_p).sdu, 0, BCCH_SDU_SIZE);
-          memcpy (RRC_MAC_BCCH_DATA_REQ (message_p).sdu,
-                  RC.rrc[Mod_idP]->carrier[CC_id].SIB23,
-                  sib23_size);
-          RRC_MAC_BCCH_DATA_REQ (message_p).enb_index = eNB_index;
-
-          itti_send_msg_to_task (TASK_MAC_ENB, ENB_MODULE_ID_TO_INSTANCE(Mod_idP), message_p);
-        }
-#endif
-
 #ifdef DEBUG_RRC
         LOG_T(RRC,"[eNB %d] Frame %d BCCH request => SIB 2-3\n",Mod_idP,frameP);
 
@@ -205,28 +157,6 @@ mac_rrc_data_req(
       if(Srb_info->Tx_buffer.payload_size>0) { //Fill buffer
         LOG_D(RRC,"[eNB %d] CCCH (%p) has %d bytes (dest: %p, src %p)\n",Mod_idP,Srb_info,Srb_info->Tx_buffer.payload_size,buffer_pP,Srb_info->Tx_buffer.Payload);
 
-#if 0 // defined(ENABLE_ITTI)
-        {
-          MessageDef *message_p;
-          int ccch_size = Srb_info->Tx_buffer.payload_size;
-          int sdu_size = sizeof(RRC_MAC_CCCH_DATA_REQ (message_p).sdu);
-
-          if (ccch_size > sdu_size) {
-            LOG_E(RRC, "SDU larger than CCCH SDU buffer size (%d, %d)", ccch_size, sdu_size);
-            ccch_size = sdu_size;
-          }
-
-          message_p = itti_alloc_new_message (TASK_RRC_ENB, RRC_MAC_CCCH_DATA_REQ);
-          RRC_MAC_CCCH_DATA_REQ (message_p).frame = frameP;
-          RRC_MAC_CCCH_DATA_REQ (message_p).sdu_size = ccch_size;
-          memset (RRC_MAC_CCCH_DATA_REQ (message_p).sdu, 0, CCCH_SDU_SIZE);
-          memcpy (RRC_MAC_CCCH_DATA_REQ (message_p).sdu, Srb_info->Tx_buffer.Payload, ccch_size);
-          RRC_MAC_CCCH_DATA_REQ (message_p).enb_index = eNB_index;
-
-          itti_send_msg_to_task (TASK_MAC_ENB, ENB_MODULE_ID_TO_INSTANCE(Mod_idP), message_p);
-        }
-#endif
-
         memcpy(buffer_pP,Srb_info->Tx_buffer.Payload,Srb_info->Tx_buffer.payload_size);
         Sdu_size = Srb_info->Tx_buffer.payload_size;
         Srb_info->Tx_buffer.payload_size=0;
@@ -243,28 +173,6 @@ mac_rrc_data_req(
         LOG_D(RRC,"[eNB %d] PCCH (%p) has %d bytes\n",Mod_idP,&RC.rrc[Mod_idP]->carrier[CC_id].paging[mbsfn_sync_area],
                RC.rrc[Mod_idP]->carrier[CC_id].sizeof_paging[mbsfn_sync_area]);
 
-#if 0 //defined(ENABLE_ITTI)
-        {
-          MessageDef *message_p;
-          int pcch_size = RC.rrc[Mod_idP]->arrier[CC_id].sizeof_paging[mbsfn_sync_area];
-          int sdu_size = sizeof(RRC_MAC_PCCH_DATA_REQ (message_p).sdu);
-
-          if (pcch_size > sdu_size) {
-            LOG_E(RRC, "SDU larger than PCCH SDU buffer size (%d, %d)", pcch_size, sdu_size);
-            pcch_size = sdu_size;
-          }
-
-          message_p = itti_alloc_new_message (TASK_RRC_ENB, RRC_MAC_PCCH_DATA_REQ);
-          RRC_MAC_PCCH_DATA_REQ (message_p).frame = frameP;
-          RRC_MAC_PCCH_DATA_REQ (message_p).sdu_size = pcch_size;
-          memset (RRC_MAC_PCCH_DATA_REQ (message_p).sdu, 0, PCCH_SDU_SIZE);
-          memcpy (RRC_MAC_PCCH_DATA_REQ (message_p).sdu, RC.rrc[Mod_idP]->carrier[CC_id].paging[mbsfn_sync_area], pcch_size);
-          RRC_MAC_PCCH_DATA_REQ (message_p).enb_index = eNB_index;
-
-          itti_send_msg_to_task (TASK_MAC_ENB, ENB_MODULE_ID_TO_INSTANCE(Mod_idP), message_p);
-        }
-#endif
-
         memcpy(buffer_pP, RC.rrc[Mod_idP]->carrier[CC_id].paging[mbsfn_sync_area], RC.rrc[Mod_idP]->carrier[CC_id].sizeof_paging[mbsfn_sync_area]);
         Sdu_size = RC.rrc[Mod_idP]->carrier[CC_id].sizeof_paging[mbsfn_sync_area];
         RC.rrc[Mod_idP]->carrier[CC_id].sizeof_paging[mbsfn_sync_area] = 0;
@@ -280,32 +188,6 @@ mac_rrc_data_req(
         return 0;  // this parameter is set in function init_mcch in rrc_eNB.c
       }
 
-
-#if 0 // defined(ENABLE_ITTI)
-      {
-        MessageDef *message_p;
-        int mcch_size = RC.rrc[Mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE[mbsfn_sync_area];
-        int sdu_size = sizeof(RRC_MAC_MCCH_DATA_REQ (message_p).sdu);
-
-        if (mcch_size > sdu_size) {
-          LOG_E(RRC, "SDU larger than MCCH SDU buffer size (%d, %d)", mcch_size, sdu_size);
-          mcch_size = sdu_size;
-        }
-
-        message_p = itti_alloc_new_message (TASK_RRC_ENB, RRC_MAC_MCCH_DATA_REQ);
-        RRC_MAC_MCCH_DATA_REQ (message_p).frame = frameP;
-        RRC_MAC_MCCH_DATA_REQ (message_p).sdu_size = mcch_size;
-        memset (RRC_MAC_MCCH_DATA_REQ (message_p).sdu, 0, MCCH_SDU_SIZE);
-        memcpy (RRC_MAC_MCCH_DATA_REQ (message_p).sdu,
-                RC.rrc[Mod_idP]->carrier[CC_id].MCCH_MESSAGE[mbsfn_sync_area],
-                mcch_size);
-        RRC_MAC_MCCH_DATA_REQ (message_p).enb_index = eNB_index;
-        RRC_MAC_MCCH_DATA_REQ (message_p).mbsfn_sync_area = mbsfn_sync_area;
-
-        itti_send_msg_to_task (TASK_MAC_ENB, ENB_MODULE_ID_TO_INSTANCE(Mod_idP), message_p);
-      }
-#endif
-
       memcpy(&buffer_pP[0],
              RC.rrc[Mod_idP]->carrier[CC_id].MCCH_MESSAGE[mbsfn_sync_area],
              RC.rrc[Mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE[mbsfn_sync_area]);
@@ -380,31 +262,6 @@ mac_rrc_data_ind(
     Srb_info = &RC.rrc[module_idP]->carrier[CC_id].Srb0;
     LOG_D(RRC,"[eNB %d] Received SDU for CCCH on SRB %d\n",module_idP,Srb_info->Srb_id);
     
-#if 0 //defined(ENABLE_ITTI)
-    {
-      MessageDef *message_p;
-      int msg_sdu_size = sizeof(RRC_MAC_CCCH_DATA_IND (message_p).sdu);
-
-      if (sdu_lenP > msg_sdu_size) {
-        LOG_E(RRC, "SDU larger than CCCH SDU buffer size (%d, %d)", sdu_lenP, msg_sdu_size);
-        sdu_size = msg_sdu_size;
-      } else {
-        sdu_size = sdu_lenP;
-      }
-
-      message_p = itti_alloc_new_message (TASK_MAC_ENB, RRC_MAC_CCCH_DATA_IND);
-      RRC_MAC_CCCH_DATA_IND (message_p).frame     = frameP;
-      RRC_MAC_CCCH_DATA_IND (message_p).sub_frame = sub_frameP;
-      RRC_MAC_CCCH_DATA_IND (message_p).rnti      = rntiP;
-      RRC_MAC_CCCH_DATA_IND (message_p).sdu_size  = sdu_size;
-      RRC_MAC_CCCH_DATA_IND (message_p).CC_id = CC_id;
-      memset (RRC_MAC_CCCH_DATA_IND (message_p).sdu, 0, CCCH_SDU_SIZE);
-      memcpy (RRC_MAC_CCCH_DATA_IND (message_p).sdu, sduP, sdu_size);
-      LOG_D(RRC,"[eNB %d] Sending message to RRC task\n",module_idP);
-      itti_send_msg_to_task (TASK_RRC_ENB, ctxt.instance, message_p);
-    }
-#else
-
     //    msg("\n******INST %d Srb_info %p, Srb_id=%d****\n\n",Mod_id,Srb_info,Srb_info->Srb_id);
     if (sdu_lenP > 0) {
       memcpy(Srb_info->Rx_buffer.Payload,sduP,sdu_lenP);
@@ -422,7 +279,6 @@ mac_rrc_data_ind(
         ue_context_p->ue_context.Status = RRC_RECONFIGURED;
       }
     }
-#endif
 
   return(0);
 
diff --git a/openair2/RRC/LTE/MESSAGES/asn1_msg.c b/openair2/RRC/LTE/MESSAGES/asn1_msg.c
index d46f6b2701b8c76c3930d9ceeee42403b71b1ed6..c586f0aeb0af132986d5f07a2bdf35c858e67396 100644
--- a/openair2/RRC/LTE/MESSAGES/asn1_msg.c
+++ b/openair2/RRC/LTE/MESSAGES/asn1_msg.c
@@ -477,22 +477,6 @@ uint8_t do_SIB1(rrc_eNB_carrier_data_t *carrier,
   ASN_SEQUENCE_ADD(&schedulingInfo.sib_MappingInfo.list,&sib_type);
   ASN_SEQUENCE_ADD(&(*sib1)->schedulingInfoList.list,&schedulingInfo);
 
-#if 0
-  /* TODO: this is disabled for the moment because OAI UE does
-   * not connect to OAI eNB with the current software.
-   * See also TODO comment in do_SIB23.
-   */
-  //TTN - This is for SIB18
-  sib_type=SIB_Type_sibType18_v1250;
-  ASN_SEQUENCE_ADD(&schedulingInfo.sib_MappingInfo.list,&sib_type);
-  ASN_SEQUENCE_ADD(&(*sib1)->schedulingInfoList.list,&schedulingInfo);
-
-  //TTN - This is for SIB19
-  sib_type=SIB_Type_sibType19_v1250;
-  ASN_SEQUENCE_ADD(&schedulingInfo.sib_MappingInfo.list,&sib_type);
-  ASN_SEQUENCE_ADD(&(*sib1)->schedulingInfoList.list,&schedulingInfo);
-#endif
-
   //  ASN_SEQUENCE_ADD(&schedulingInfo.sib_MappingInfo.list,NULL);
 
 #if defined(ENABLE_ITTI)
@@ -673,11 +657,6 @@ uint8_t do_SIB23(uint8_t Mod_id,
 
   (*sib2)->ac_BarringInfo = NULL;
 #if (RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-#if 0
-  (*sib2)->ssac_BarringForMMTEL_Voice_r9 = NULL;
-  (*sib2)->ssac_BarringForMMTEL_Video_r9 = NULL;
-  (*sib2)->ac_BarringForCSFB_r10 = NULL;
-#endif
   (*sib2)->ext1 = NULL;
   (*sib2)->ext2 = NULL;
 #endif
@@ -970,12 +949,6 @@ uint8_t do_SIB23(uint8_t Mod_id,
   /// (*SIB3)
 #if (RRC_VERSION >= MAKE_VERSION(10, 0, 0))
   (*sib3)->ext1 = NULL;
-#if 0
-  (*sib3)->s_IntraSearch_v920=NULL;
-  (*sib3)->s_NonIntraSearch_v920=NULL;
-  (*sib3)->q_QualMin_r9=NULL;
-  (*sib3)->threshServingLowQ_r9=NULL;
-#endif
 #endif
   (*sib3)->cellReselectionInfoCommon.q_Hyst=SystemInformationBlockType3__cellReselectionInfoCommon__q_Hyst_dB4;
 
@@ -1375,20 +1348,6 @@ uint8_t do_SIB23(uint8_t Mod_id,
   if (MBMS_flag > 0) {
     ASN_SEQUENCE_ADD(&bcch_message->message.choice.c1.choice.systemInformation.criticalExtensions.choice.systemInformation_r8.sib_TypeAndInfo.list,sib13_part);
   }
-
-#if 0
-  /* TODO: this is disabled for the moment.
-   * Maybe we shouldn't put this together with SIBs 2/3.
-   * The problem is that the MAC message is now 92 bytes, which
-   * is too much in the SIB scheduler (the scheduler allocates
-   * 4 RBs with max MCS 8).
-   */
-  //for D2D
-  ASN_SEQUENCE_ADD(&bcch_message->message.choice.c1.choice.systemInformation.criticalExtensions.choice.systemInformation_r8.sib_TypeAndInfo.list, sib18_part);
-  ASN_SEQUENCE_ADD(&bcch_message->message.choice.c1.choice.systemInformation.criticalExtensions.choice.systemInformation_r8.sib_TypeAndInfo.list, sib19_part);
-  ASN_SEQUENCE_ADD(&bcch_message->message.choice.c1.choice.systemInformation.criticalExtensions.choice.systemInformation_r8.sib_TypeAndInfo.list, sib21_part);
-#endif
-
 #endif
 
 #ifdef XER_PRINT
diff --git a/openair2/RRC/LTE/rrc_UE.c b/openair2/RRC/LTE/rrc_UE.c
index 1722f29431d477182e6182f147288c568b139759..88945cc410e300670f747d8e8ee92ee8ba3a716d 100644
--- a/openair2/RRC/LTE/rrc_UE.c
+++ b/openair2/RRC/LTE/rrc_UE.c
@@ -472,24 +472,6 @@ void init_SL_preconfig(UE_RRC_INST *UE, const uint8_t eNB_index )
 
 #endif
 
-#if (RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-//-----------------------------------------------------------------------------
-#if 0
-void init_MCCH_UE(module_id_t ue_mod_idP, uint8_t eNB_index)
-{
-  int i;
-  UE_rrc_inst[ue_mod_idP].sizeof_MCCH_MESSAGE[eNB_index] = 0;
-  UE_rrc_inst[ue_mod_idP].MCCH_MESSAGE[eNB_index] = (uint8_t *)malloc16(32);
-  UE_rrc_inst[ue_mod_idP].mcch_message[eNB_index] = (MBSFNAreaConfiguration_r9_t *)malloc16(sizeof(MBSFNAreaConfiguration_r9_t));
-
-  for (i=0; i<8; i++) { // MAX MBSFN Area
-    UE_rrc_inst[ue_mod_idP].Info[eNB_index].MCCHStatus[i] = 0;
-
-  }
-}
-#endif
-#endif
-
 //-----------------------------------------------------------------------------
 void openair_rrc_ue_init_security( const protocol_ctxt_t* const ctxt_pP )
 {
@@ -630,22 +612,6 @@ static const char const nas_attach_req_imsi[] = {
 };
 #endif /* !(defined(ENABLE_ITTI) && defined(ENABLE_USE_MME)) */
 
-#if 0
-/* NAS Attach request with GUTI */
-static const char const nas_attach_req_guti[] = {
-  0x07, 0x41,
-  /* EPS Mobile identity = GUTI */
-  0x71, 0x0B, 0xF6, 0x12, 0xF2, 0x01, 0x80, 0x00, 0x01, 0xE0, 0x00,
-  0xDA, 0x1F,
-  /* End of EPS Mobile Identity */
-  0x02, 0xE0, 0xE0, 0x00, 0x20, 0x02, 0x03,
-  0xD0, 0x11, 0x27, 0x1A, 0x80, 0x80, 0x21, 0x10, 0x01, 0x00, 0x00,
-  0x10, 0x81, 0x06, 0x00, 0x00, 0x00, 0x00, 0x83, 0x06, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x0A, 0x00, 0x52, 0x12, 0xF2,
-  0x01, 0x27, 0x11,
-};
-#endif
-
 //-----------------------------------------------------------------------------
 void
 rrc_t310_expiration(
diff --git a/openair2/RRC/LTE/rrc_eNB.c b/openair2/RRC/LTE/rrc_eNB.c
index d8f78ea964884a4abb723c766943cb022103b78a..539e316537823738ca5b57e1791abe2391e3a8e8 100644
--- a/openair2/RRC/LTE/rrc_eNB.c
+++ b/openair2/RRC/LTE/rrc_eNB.c
@@ -698,54 +698,6 @@ rrc_eNB_get_next_free_ue_context(
   }
 }
 
-#if 0 //!defined(ENABLE_USE_MME)
-void rrc_eNB_emulation_notify_ue_module_id(
-  const module_id_t ue_module_idP,
-  const rnti_t      rntiP,
-  const uint8_t     cell_identity_byte0P,
-  const uint8_t     cell_identity_byte1P,
-  const uint8_t     cell_identity_byte2P,
-  const uint8_t     cell_identity_byte3P)
-{
-  module_id_t                         enb_module_id;
-  struct rrc_eNB_ue_context_s*        ue_context_p = NULL;
-  int                                 CC_id;
-
-  // find enb_module_id
-  for (enb_module_id = 0; enb_module_id < NUMBER_OF_eNB_MAX; enb_module_id++) {
-    if(enb_module_id>0){ /*FIX LATER*/
-      return;
-    }
-    for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
-      if (&RC.rrc[enb_module_id]->carrier[CC_id].sib1 != NULL) {
-        if (
-          (&RC.rrc[enb_module_id]->carrier[CC_id].sib1->cellAccessRelatedInfo.cellIdentity.buf[0] == cell_identity_byte0P) &&
-          (&RC.rrc[enb_module_id]->carrier[CC_id].sib1->cellAccessRelatedInfo.cellIdentity.buf[1] == cell_identity_byte1P) &&
-          (&RC.rrc[enb_module_id]->carrier[CC_id].sib1->cellAccessRelatedInfo.cellIdentity.buf[2] == cell_identity_byte2P) &&
-          (&RC.rrc[enb_module_id]->carrier[CC_id].sib1->cellAccessRelatedInfo.cellIdentity.buf[3] == cell_identity_byte3P)
-        ) {
-          ue_context_p = rrc_eNB_get_ue_context(
-                           RC.rrc[enb_module_id],
-                           rntiP
-                         );
-
-          if (NULL != ue_context_p) {
-            oai_emulation.info.eNB_ue_local_uid_to_ue_module_id[enb_module_id][ue_context_p->local_uid] = ue_module_idP;
-          }
-
-          //return;
-        }
-      }
-    }
-    oai_emulation.info.eNB_ue_module_id_to_rnti[enb_module_id][ue_module_idP] = rntiP;
-  }
-
-  AssertFatal(enb_module_id == NUMBER_OF_eNB_MAX,
-              "Cell identity not found for ue module id %u rnti %x",
-              ue_module_idP, rntiP);
-}
-#endif
-
 //-----------------------------------------------------------------------------
 void
 rrc_eNB_free_mem_UE_context(
@@ -7990,44 +7942,6 @@ rrc_rx_tx(
 #if defined(ENABLE_USE_MME)
 #if defined(ENABLE_ITTI)
           rrc_eNB_generate_RRCConnectionRelease(ctxt_pP, ue_context_p);
-#if 0
-          {
-            int      e_rab;
-            MessageDef *msg_delete_tunnels_p = NULL;
-            uint32_t eNB_ue_s1ap_id = ue_context_p->ue_context.eNB_ue_s1ap_id;
-            MSC_LOG_TX_MESSAGE(MSC_RRC_ENB, MSC_GTPU_ENB, NULL,0, "0 GTPV1U_ENB_DELETE_TUNNEL_REQ rnti %x ", eNB_ue_s1ap_id);
-            msg_delete_tunnels_p = itti_alloc_new_message(TASK_RRC_ENB, GTPV1U_ENB_DELETE_TUNNEL_REQ);
-            memset(&GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p), 0, sizeof(GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p)));
-            // do not wait response
-            GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).rnti = ue_context_p->ue_context.rnti;
-            for (e_rab = 0; e_rab < ue_context_p->ue_context.nb_of_e_rabs; e_rab++) {
-              GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).eps_bearer_id[GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).num_erab++] =
-                ue_context_p->ue_context.enb_gtp_ebi[e_rab];
-              // erase data
-              ue_context_p->ue_context.enb_gtp_teid[e_rab] = 0;
-              memset(&ue_context_p->ue_context.enb_gtp_addrs[e_rab], 0, sizeof(ue_context_p->ue_context.enb_gtp_addrs[e_rab]));
-              ue_context_p->ue_context.enb_gtp_ebi[e_rab]  = 0;
-            }
-            itti_send_msg_to_task(TASK_GTPV1_U, ctxt_pP->module_id, msg_delete_tunnels_p);
-            MSC_LOG_TX_MESSAGE(
-                    MSC_RRC_ENB,
-                    MSC_S1AP_ENB,
-                    NULL,0,
-                    "0 S1AP_UE_CONTEXT_RELEASE_COMPLETE eNB_ue_s1ap_id 0x%06"PRIX32" ",
-                    eNB_ue_s1ap_id);
-
-            struct rrc_ue_s1ap_ids_s    *rrc_ue_s1ap_ids = NULL;
-            rrc_ue_s1ap_ids = rrc_eNB_S1AP_get_ue_ids(
-                    RC.rrc[ctxt_pP->module_id],
-                    0,
-                    eNB_ue_s1ap_id);
-            if (NULL != rrc_ue_s1ap_ids) {
-              rrc_eNB_S1AP_remove_ue_ids(
-                         RC.rrc[ctxt_pP->module_id],
-                         rrc_ue_s1ap_ids);
-            }
-          }
-#endif
 #endif
 #else
           ue_to_be_removed = ue_context_p;
diff --git a/openair2/RRC/LTE/rrc_eNB_S1AP.c b/openair2/RRC/LTE/rrc_eNB_S1AP.c
index 59a2c352946f08fe93e3885149fc4bdfc9d7231d..ab5081d434d8b6cc6084e16690803515b40b6dc9 100644
--- a/openair2/RRC/LTE/rrc_eNB_S1AP.c
+++ b/openair2/RRC/LTE/rrc_eNB_S1AP.c
@@ -1289,63 +1289,6 @@ int rrc_eNB_process_S1AP_UE_CONTEXT_RELEASE_COMMAND (MessageDef *msg_p, const ch
                   instance,
                   eNB_ue_s1ap_id);
     */
-#if 0
-    {
-      int      e_rab;
-      //int      mod_id = 0;
-      MessageDef *msg_delete_tunnels_p = NULL;
-
-      MSC_LOG_TX_MESSAGE(
-            MSC_RRC_ENB,
-            MSC_GTPU_ENB,
-            NULL,0,
-            "0 GTPV1U_ENB_DELETE_TUNNEL_REQ rnti %x ",
-            eNB_ue_s1ap_id);
-
-      msg_delete_tunnels_p = itti_alloc_new_message(TASK_RRC_ENB, GTPV1U_ENB_DELETE_TUNNEL_REQ);
-      memset(&GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p),
-             0,
-             sizeof(GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p)));
-
-      // do not wait response
-      GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).rnti = ue_context_p->ue_context.rnti;
-
-      for (e_rab = 0; e_rab < ue_context_p->ue_context.nb_of_e_rabs; e_rab++) {
-        GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).eps_bearer_id[GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).num_erab++] =
-          ue_context_p->ue_context.enb_gtp_ebi[e_rab];
-        // erase data
-        ue_context_p->ue_context.enb_gtp_teid[e_rab] = 0;
-        memset(&ue_context_p->ue_context.enb_gtp_addrs[e_rab], 0, sizeof(ue_context_p->ue_context.enb_gtp_addrs[e_rab]));
-        ue_context_p->ue_context.enb_gtp_ebi[e_rab]  = 0;
-      }
-
-      itti_send_msg_to_task(TASK_GTPV1_U, instance, msg_delete_tunnels_p);
-
-
-      MSC_LOG_TX_MESSAGE(
-            MSC_RRC_ENB,
-            MSC_S1AP_ENB,
-            NULL,0,
-            "0 S1AP_UE_CONTEXT_RELEASE_COMPLETE eNB_ue_s1ap_id 0x%06"PRIX32" ",
-            eNB_ue_s1ap_id);
-
-      MessageDef *msg_complete_p = NULL;
-      msg_complete_p = itti_alloc_new_message(TASK_RRC_ENB, S1AP_UE_CONTEXT_RELEASE_COMPLETE);
-      S1AP_UE_CONTEXT_RELEASE_COMPLETE(msg_complete_p).eNB_ue_s1ap_id = eNB_ue_s1ap_id;
-      itti_send_msg_to_task(TASK_S1AP, instance, msg_complete_p);
-
-      rrc_ue_s1ap_ids = rrc_eNB_S1AP_get_ue_ids(
-      		RC.rrc[instance],
-      		UE_INITIAL_ID_INVALID,
-      		eNB_ue_s1ap_id);
-
-      if (NULL != rrc_ue_s1ap_ids) {
-        rrc_eNB_S1AP_remove_ue_ids(
-      		  RC.rrc[instance],
-      		  rrc_ue_s1ap_ids);
-      }
-    }
-#endif
     return (0);
   }
 }
diff --git a/openair2/RRC/LTE/rrc_eNB_UE_context.c b/openair2/RRC/LTE/rrc_eNB_UE_context.c
index 0ae3d7ca151fbed5b997f51ac09b5bde03f1e0c6..1e344f2747e61f58787bd92afc451a21db6d0065 100644
--- a/openair2/RRC/LTE/rrc_eNB_UE_context.c
+++ b/openair2/RRC/LTE/rrc_eNB_UE_context.c
@@ -155,9 +155,6 @@ rrc_eNB_get_ue_context(
   memset(&temp, 0, sizeof(struct rrc_eNB_ue_context_s));
   /* eNB ue rrc id = 24 bits wide */
   temp.ue_id_rnti = rntiP;
-#if 0
-  return RB_FIND(rrc_ue_tree_s, &rrc_instance_pP->rrc_ue_head, &temp);
-#endif
   struct rrc_eNB_ue_context_s   *ue_context_p = NULL;
   ue_context_p = RB_FIND(rrc_ue_tree_s, &rrc_instance_pP->rrc_ue_head, &temp);
   if ( ue_context_p != NULL) {
diff --git a/openair2/UTIL/LOG/log.c b/openair2/UTIL/LOG/log.c
index 48e606522c61665a73c084f85e41bb6c929280d4..9660923157c35c28f43ddc767b319d7d8b1c753a 100644
--- a/openair2/UTIL/LOG/log.c
+++ b/openair2/UTIL/LOG/log.c
@@ -80,6 +80,7 @@ mapping log_level_names[] = {
   {"debug", LOG_DEBUG},
   {"file", LOG_FILE},
   {"trace", LOG_TRACE},
+  {"matlab", LOG_MATLAB},
   {NULL, -1}
 };
 mapping log_verbosity_names[] = {
@@ -113,6 +114,161 @@ static char *log_level_highlight_end[]   = {LOG_RESET, LOG_RESET, LOG_RESET, LOG
 static log_instance_type_t log_instance_type;
 #endif
 
+int write_file_matlab(const char *fname,const char *vname,void *data,int length,int dec,char format)
+{
+
+  FILE *fp=NULL;
+  int i;
+
+
+  //printf("Writing %d elements of type %d to %s\n",length,format,fname);
+
+
+  if (format == 10 || format ==11 || format == 12 || format == 13 || format == 14) {
+    fp = fopen(fname,"a+");
+  } else if (format != 10 && format !=11  && format != 12 && format != 13 && format != 14) {
+    fp = fopen(fname,"w+");
+  }
+
+
+
+  if (fp== NULL) {
+    printf("[OPENAIR][FILE OUTPUT] Cannot open file %s\n",fname);
+    return(-1);
+  }
+
+  if (format != 10 && format !=11  && format != 12 && format != 13 && format != 14)
+    fprintf(fp,"%s = [",vname);
+
+
+  switch (format) {
+  case 0:   // real 16-bit
+
+    for (i=0; i<length; i+=dec) {
+      fprintf(fp,"%d\n",((short *)data)[i]);
+    }
+
+    break;
+
+  case 1:  // complex 16-bit
+  case 13:
+  case 14:
+  case 15:
+
+    for (i=0; i<length<<1; i+=(2*dec)) {
+      fprintf(fp,"%d + j*(%d)\n",((short *)data)[i],((short *)data)[i+1]);
+
+    }
+
+
+    break;
+
+  case 2:  // real 32-bit
+    for (i=0; i<length; i+=dec) {
+      fprintf(fp,"%d\n",((int *)data)[i]);
+    }
+
+    break;
+
+  case 3: // complex 32-bit
+    for (i=0; i<length<<1; i+=(2*dec)) {
+      fprintf(fp,"%d + j*(%d)\n",((int *)data)[i],((int *)data)[i+1]);
+    }
+
+    break;
+
+  case 4: // real 8-bit
+    for (i=0; i<length; i+=dec) {
+      fprintf(fp,"%d\n",((char *)data)[i]);
+    }
+
+    break;
+
+  case 5: // complex 8-bit
+    for (i=0; i<length<<1; i+=(2*dec)) {
+      fprintf(fp,"%d + j*(%d)\n",((char *)data)[i],((char *)data)[i+1]);
+    }
+
+    break;
+
+  case 6:  // real 64-bit
+    for (i=0; i<length; i+=dec) {
+      fprintf(fp,"%lld\n",((long long*)data)[i]);
+    }
+
+    break;
+
+  case 7: // real double
+    for (i=0; i<length; i+=dec) {
+      fprintf(fp,"%g\n",((double *)data)[i]);
+    }
+
+    break;
+
+  case 8: // complex double
+    for (i=0; i<length<<1; i+=2*dec) {
+      fprintf(fp,"%g + j*(%g)\n",((double *)data)[i], ((double *)data)[i+1]);
+    }
+
+    break;
+
+  case 9: // real unsigned 8-bit
+    for (i=0; i<length; i+=dec) {
+      fprintf(fp,"%d\n",((unsigned char *)data)[i]);
+    }
+
+    break;
+
+
+  case 10 : // case eren 16 bit complex :
+
+    for (i=0; i<length<<1; i+=(2*dec)) {
+
+      if((i < 2*(length-1)) && (i > 0))
+        fprintf(fp,"%d + j*(%d),",((short *)data)[i],((short *)data)[i+1]);
+      else if (i == 2*(length-1))
+        fprintf(fp,"%d + j*(%d);",((short *)data)[i],((short *)data)[i+1]);
+      else if (i == 0)
+        fprintf(fp,"\n%d + j*(%d),",((short *)data)[i],((short *)data)[i+1]);
+
+
+
+    }
+
+    break;
+
+  case 11 : //case eren 16 bit real for channel magnitudes:
+    for (i=0; i<length; i+=dec) {
+
+      if((i <(length-1))&& (i > 0))
+        fprintf(fp,"%d,",((short *)data)[i]);
+      else if (i == (length-1))
+        fprintf(fp,"%d;",((short *)data)[i]);
+      else if (i == 0)
+        fprintf(fp,"\n%d,",((short *)data)[i]);
+    }
+
+    printf("\n erennnnnnnnnnnnnnn: length :%d",length);
+    break;
+
+  case 12 : // case eren for log2_maxh real unsigned 8 bit
+    fprintf(fp,"%d \n",((unsigned char *)&data)[0]);
+    break;
+
+  }
+
+  if (format != 10 && format !=11 && format !=12 && format != 13 && format != 15) {
+    fprintf(fp,"];\n");
+    fclose(fp);
+    return(0);
+  } else if (format == 10 || format ==11 || format == 12 || format == 13 || format == 15) {
+    fclose(fp);
+    return(0);
+  }
+
+  return 0;
+}
+
 /* get log parameters from configuration file */
 void  log_getconfig(log_t *g_log) {
   char *gloglevel = NULL;
@@ -476,6 +632,7 @@ int logInit (void)
   g_log->level2string[LOG_DEBUG]         = "D"; // DEBUG
   g_log->level2string[LOG_FILE]          = "F"; // file
   g_log->level2string[LOG_TRACE]         = "T"; // TRACE
+  g_log->level2string[LOG_MATLAB]        = "M"; // MATLAB
 
   g_log->onlinelog = 1; //online log file
   g_log->syslog = 0;
@@ -879,46 +1036,6 @@ void nfapi_log(char *file, char *func, int line, int comp, int level, const char
     itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
   }
 
-#endif
-#if 0
-  LOG_params log_params;
-  int        len;
-
-  len = vsnprintf(log_params.l_buff_info, MAX_LOG_INFO-1, format, args);
-
-  //2 first parameters must be passed as 'const' to the thread function
-  log_params.file = strdup(file);
-  log_params.func = strdup(func);
-  log_params.line = line;
-  log_params.comp = PHY;//comp;
-  log_params.level = 6; // INFO - level;
-  log_params.format = format;
-  log_params.len = len;
-
-  if (pthread_mutex_lock(&log_lock) != 0) {
-    return;
-  }
-
-  log_list_tail++;
-  log_list[log_list_tail - 1] = log_params;
-
-  if (log_list_tail >= 1000) {
-    log_list_tail = 0;
-  }
-
-  if (log_list_nb_elements < 1000) {
-    log_list_nb_elements++;
-  }
-
-  if(pthread_cond_signal(&log_notify) != 0) {
-    pthread_mutex_unlock(&log_lock);
-    return;
-  }
-
-  if(pthread_mutex_unlock(&log_lock) != 0) {
-    return;
-  }
-
 #endif
 }
 
@@ -1121,261 +1238,6 @@ void *log_thread_function(void *list)
 }
 #endif
 
-#if 0
-/* This function does not work. When multiple threads call it at the same time
- * for the same component, both threads end up using the same buffer.
- * The output is the completely messed up/wrong.
- * Kept in case the fix below is not correct or acceptable.
- */
-//log record, format, and print:  executed in the main thread (mt)
-void logRecord_mt(const char *file, const char *func, int line, int comp,
-                  int level, const char *format, ...)
-{
-  int len = 0;
-  va_list args;
-  log_component_t *c;
-  char *log_start;
-  char *log_end;
-
-  /* for no gcc warnings */
-  (void)log_start;
-  (void)log_end;
-
-  c = &g_log->log_component[comp];
-
-  // do not apply filtering for LOG_F
-  // only log messages which are enabled and are below the global log level and component's level threshold
-  if ((level != LOG_FILE) && ((level > c->level) || (level > g_log->level))) {
-    /* if ((level != LOG_FILE) &&
-          ((level > c->level) ||
-           (level > g_log->level) ||
-           ( c->level > g_log->level))) {
-    */
-    return;
-  }
-
-  VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_LOG_RECORD,
-                                          VCD_FUNCTION_IN);
-
-  va_start(args, format);
-
-  // adjust syslog level for TRACE messages
-  if (g_log->syslog) {
-    if (g_log->level > LOG_DEBUG) {
-      g_log->level = LOG_DEBUG;
-    }
-  }
-
-  // make sure that for log trace the extra info is only printed once, reset when the level changes
-  if ((level == LOG_FILE) || (c->flag == LOG_NONE) || (level == LOG_TRACE)) {
-    log_start = c->log_buffer;
-    len = vsnprintf(c->log_buffer, MAX_LOG_TOTAL-1, format, args);
-    log_end = c->log_buffer + len;
-  } else {
-    if ( (g_log->flag & FLAG_COLOR) || (c->flag & FLAG_COLOR) ) {
-      len += snprintf(&c->log_buffer[len], MAX_LOG_TOTAL - len, "%s",
-                      log_level_highlight_start[level]);
-    }
-
-    log_start = c->log_buffer + len;
-
-    if ( (g_log->flag & FLAG_COMP) || (c->flag & FLAG_COMP) ) {
-      len += snprintf(&c->log_buffer[len], MAX_LOG_TOTAL - len, "[%s]",
-                      g_log->log_component[comp].name);
-    }
-
-    if ( (g_log->flag & FLAG_LEVEL) || (c->flag & FLAG_LEVEL) ) {
-      len += snprintf(&c->log_buffer[len], MAX_LOG_TOTAL - len, "[%s]",
-                      g_log->level2string[level]);
-    }
-
-    if ( (g_log->flag & FLAG_FUNCT) || (c->flag & FLAG_FUNCT) ) {
-      len += snprintf(&c->log_buffer[len], MAX_LOG_TOTAL - len, "[%s] ",
-                      func);
-    }
-
-    if ( (g_log->flag & FLAG_FILE_LINE) || (c->flag & FLAG_FILE_LINE) ) {
-      len += snprintf(&c->log_buffer[len], MAX_LOG_TOTAL - len, "[%s:%d]",
-                      file, line);
-    }
-
-    len += vsnprintf(&c->log_buffer[len], MAX_LOG_TOTAL - len, format, args);
-    log_end = c->log_buffer + len;
-
-    if ( (g_log->flag & FLAG_COLOR) || (c->flag & FLAG_COLOR) ) {
-      len += snprintf(&c->log_buffer[len], MAX_LOG_TOTAL - len, "%s",
-                      log_level_highlight_end[level]);
-    }
-  }
-
-  va_end(args);
-
-  // OAI printf compatibility
-  if ((g_log->onlinelog == 1) && (level != LOG_FILE))
-    fwrite(c->log_buffer, len, 1, stdout);
-
-  if (g_log->syslog) {
-    syslog(g_log->level, "%s", c->log_buffer);
-  }
-
-  if (g_log->filelog) {
-    if (write(gfd, c->log_buffer, len) < len) {
-      // TODO assert ?
-    }
-  }
-
-  if ((g_log->log_component[comp].filelog) && (level == LOG_FILE)) {
-    if (write(g_log->log_component[comp].fd, c->log_buffer, len) < len) {
-      // TODO assert ?
-    }
-  }
-
-#if defined(ENABLE_ITTI)
-
-  if (level <= LOG_DEBUG) {
-    task_id_t origin_task_id = TASK_UNKNOWN;
-    MessagesIds messages_id;
-    MessageDef *message_p;
-    size_t      message_string_size;
-    char       *message_msg_p;
-
-    message_string_size = log_end - log_start;
-
-#if !defined(DISABLE_ITTI_DETECT_SUB_TASK_ID)
-
-    /* Try to identify sub task ID from log information (comp, log_instance_type) */
-    switch (comp) {
-    case PHY:
-      switch (log_instance_type) {
-      case LOG_INSTANCE_ENB:
-        origin_task_id = TASK_PHY_ENB;
-        break;
-
-      case LOG_INSTANCE_UE:
-        origin_task_id = TASK_PHY_UE;
-        break;
-
-      default:
-        break;
-      }
-
-      break;
-
-    case MAC:
-      switch (log_instance_type) {
-      case LOG_INSTANCE_ENB:
-        origin_task_id = TASK_MAC_ENB;
-        break;
-
-      case LOG_INSTANCE_UE:
-        origin_task_id = TASK_MAC_UE;
-
-      default:
-        break;
-      }
-
-      break;
-
-    case RLC:
-      switch (log_instance_type) {
-      case LOG_INSTANCE_ENB:
-        origin_task_id = TASK_RLC_ENB;
-        break;
-
-      case LOG_INSTANCE_UE:
-        origin_task_id = TASK_RLC_UE;
-
-      default:
-        break;
-      }
-
-      break;
-
-    case PDCP:
-      switch (log_instance_type) {
-      case LOG_INSTANCE_ENB:
-        origin_task_id = TASK_PDCP_ENB;
-        break;
-
-      case LOG_INSTANCE_UE:
-        origin_task_id = TASK_PDCP_UE;
-
-      default:
-        break;
-      }
-
-      break;
-
-    default:
-      break;
-    }
-
-#endif
-
-    switch (level) {
-    case LOG_EMERG:
-    case LOG_ALERT:
-    case LOG_CRIT:
-    case LOG_ERR:
-      messages_id = ERROR_LOG;
-      break;
-
-    case LOG_WARNING:
-      messages_id = WARNING_LOG;
-      break;
-
-    case LOG_NOTICE:
-      messages_id = NOTICE_LOG;
-      break;
-
-    case LOG_INFO:
-      messages_id = INFO_LOG;
-      break;
-
-    default:
-      messages_id = DEBUG_LOG;
-      break;
-    }
-
-    message_p = itti_alloc_new_message_sized(origin_task_id, messages_id, message_string_size);
-
-    switch (level) {
-    case LOG_EMERG:
-    case LOG_ALERT:
-    case LOG_CRIT:
-    case LOG_ERR:
-      message_msg_p = (char *) &message_p->ittiMsg.error_log;
-      break;
-
-    case LOG_WARNING:
-      message_msg_p = (char *) &message_p->ittiMsg.warning_log;
-      break;
-
-    case LOG_NOTICE:
-      message_msg_p = (char *) &message_p->ittiMsg.notice_log;
-      break;
-
-    case LOG_INFO:
-      message_msg_p = (char *) &message_p->ittiMsg.info_log;
-      break;
-
-    default:
-      message_msg_p = (char *) &message_p->ittiMsg.debug_log;
-      break;
-    }
-
-    memcpy(message_msg_p, log_start, message_string_size);
-
-    itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
-  }
-
-#endif
-
-  VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_LOG_RECORD,
-                                          VCD_FUNCTION_OUT);
-}
-#endif /* #if 0 */
-
 //log record, format, and print:  executed in the main thread (mt)
 void logRecord_mt(const char *file, const char *func, int line, int comp,
                   int level, const char *format, ...)
@@ -1691,7 +1553,7 @@ int set_log(int component, int level, int interval)
   /* Checking parameters */
   DevCheck((component >= MIN_LOG_COMPONENTS) && (component < MAX_LOG_COMPONENTS),
            component, MIN_LOG_COMPONENTS, MAX_LOG_COMPONENTS);
-  DevCheck((level <= LOG_TRACE) && (level >= LOG_EMERG), level, LOG_TRACE,
+  DevCheck((level < NUM_LOG_LEVEL) && (level >= LOG_EMERG), level, NUM_LOG_LEVEL,
            LOG_EMERG);
   DevCheck((interval >= 0) && (interval <= 0xFF), interval, 0, 0xFF);
 
@@ -1725,19 +1587,11 @@ int set_comp_log(int component, int level, int verbosity, int interval)
   /* Checking parameters */
   DevCheck((component >= MIN_LOG_COMPONENTS) && (component < MAX_LOG_COMPONENTS),
            component, MIN_LOG_COMPONENTS, MAX_LOG_COMPONENTS);
-  DevCheck((level <= LOG_TRACE) && (level >= LOG_EMERG), level, LOG_TRACE,
+  DevCheck((level < NUM_LOG_LEVEL) && (level >= LOG_EMERG), level, NUM_LOG_LEVEL,
            LOG_EMERG);
   DevCheck((interval >= 0) && (interval <= 0xFF), interval, 0, 0xFF);
 
-#if 0
-  if ((verbosity == LOG_NONE) || (verbosity == LOG_LOW) ||
-      (verbosity == LOG_MED) || (verbosity == LOG_FULL) ||
-      (verbosity == LOG_HIGH)) {
-    g_log->log_component[component].flag = verbosity;
-  }
-#else
   g_log->log_component[component].flag = verbosity;
-#endif
 
   g_log->log_component[component].level = level;
   g_log->log_component[component].interval = interval;
diff --git a/openair2/UTIL/LOG/log.h b/openair2/UTIL/LOG/log.h
index e47270c8cd0777a5828f2681e771d77f0189529f..d40d24591a1f74a30f7caedb4dba2123148ef898 100644
--- a/openair2/UTIL/LOG/log.h
+++ b/openair2/UTIL/LOG/log.h
@@ -92,7 +92,8 @@ extern "C" {
 # define  LOG_DEBUG 7 /*!< \brief debug-level messages */
 # define  LOG_FILE        8 /*!< \brief message sequence chart -level  */
 # define  LOG_TRACE 9 /*!< \brief trace-level messages */
-#define NUM_LOG_LEVEL  10 /*!< \brief the number of message levels users have with LOG */
+# define  LOG_MATLAB 10 /*!< \brief output to matlab file */
+#define NUM_LOG_LEVEL  11 /*!< \brief the number of message levels users have with LOG */
 /* @}*/
 
 
@@ -300,6 +301,17 @@ void *log_thread_function(void * list);
 #endif
 /* @}*/
 
+/*!\fn int32_t write_file_matlab(const char *fname, const char *vname, void *data, int length, int dec, char format);
+\brief Write output file from signal data
+@param fname output file name
+@param vname  output vector name (for MATLAB/OCTAVE)
+@param data   point to data
+@param length length of data vector to output
+@param dec    decimation level
+@param format data format (0 = real 16-bit, 1 = complex 16-bit,2 real 32-bit, 3 complex 32-bit,4 = real 8-bit, 5 = complex 8-bit)
+*/
+int32_t write_file_matlab(const char *fname, const char *vname, void *data, int length, int dec, char format);
+
 /*----------------macro definitions for reading log configuration from the config module */
 #define CONFIG_STRING_LOG_PREFIX                           "log_config"
 
@@ -340,6 +352,7 @@ void *log_thread_function(void * list);
 #    define LOG_C(c, x...) /* */
 #    define LOG_N(c, x...) /* */
 #    define LOG_F(c, x...) /* */
+#    define LOG_M(file, vector, data, len, dec, format) /* */
 #  else /* T_TRACER */
 #    if DISABLE_LOG_X
 #        define LOG_I(c, x...) /* */
@@ -352,6 +365,7 @@ void *log_thread_function(void * list);
 #        define LOG_C(c, x...) /* */
 #        define LOG_N(c, x...) /* */
 #        define LOG_F(c, x...) /* */
+#        define LOG_M(file, vector, data, len, dec, format) /* */
 #    else  /*DISABLE_LOG_X*/
 #        define LOG_G(c, x...) logIt(c, LOG_EMERG, x)
 #        define LOG_A(c, x...) logIt(c, LOG_ALERT, x)
@@ -363,6 +377,7 @@ void *log_thread_function(void * list);
 #        define LOG_D(c, x...) logIt(c, LOG_DEBUG, x)
 #        define LOG_F(c, x...) logIt(c, LOG_FILE, x)  // log to a file, useful for the MSC chart generation
 #        define LOG_T(c, x...) logIt(c, LOG_TRACE, x)
+#        define LOG_M(file, vector, data, len, dec, format) write_file_matlab(file, vector, data, len, dec, format)
 #    endif /*DISABLE_LOG_X*/
 #  endif /* T_TRACER */
 /* @}*/
diff --git a/openair2/UTIL/OPT/packet-mac-lte.h b/openair2/UTIL/OPT/packet-mac-lte.h
index 84c6254d9f6d41c5cfa257f8422f789daddd46bd..d0bb60f6b5cdb942ef7581ba868066434cf9b1fb 100644
--- a/openair2/UTIL/OPT/packet-mac-lte.h
+++ b/openair2/UTIL/OPT/packet-mac-lte.h
@@ -46,17 +46,6 @@
 #define DIRECTION_DOWNLINK 1
 
 /* SR: no need to declare following part: */
-#if 0
-/* rntiType */
-#define NO_RNTI  0
-#define P_RNTI   1
-#define RA_RNTI  2
-#define C_RNTI   3
-#define SI_RNTI  4
-#define SPS_RNTI 5
-#define M_RNTI   6
-#endif
-
 typedef enum mac_lte_oob_event {
   ltemac_send_preamble,
   ltemac_send_sr,
@@ -153,35 +142,6 @@ typedef struct mac_lte_info {
   guint16            oob_rnti[MAX_SRs];
 } mac_lte_info;
 
-/* SR: no need to declare following part: */
-#if 0
-typedef struct mac_lte_tap_info {
-  /* Info from context */
-  guint16  rnti;
-  guint16  ueid;
-  guint8   rntiType;
-  guint8   isPredefinedData;
-  guint8   crcStatusValid;
-  mac_lte_crc_status   crcStatus;
-  guint8   direction;
-
-  guint8   isPHYRetx;
-  guint16  ueInTTI;
-
-  nstime_t time;
-
-  /* Number of bytes (which part is used depends upon context settings) */
-  guint32  single_number_of_bytes;
-  guint32  bytes_for_lcid[11];
-  guint32  sdus_for_lcid[11];
-  guint8   number_of_rars;
-
-  /* Number of padding bytes includes padding subheaders and trailing padding */
-  guint16  padding_bytes;
-  guint16  raw_length;
-} mac_lte_tap_info;
-#endif
-
 /* Accessor function to check if a frame was considered to be ReTx */
 //int is_mac_lte_frame_retx(packet_info *pinfo, guint8 direction);
 
diff --git a/openair3/COMMON/security_types.h b/openair3/COMMON/security_types.h
index 0eedc6201fa0cd01709a3b84abcb9e84796e4006..eb55e44d77b8105c7208af1f0c7a2c77338a5b91 100644
--- a/openair3/COMMON/security_types.h
+++ b/openair3/COMMON/security_types.h
@@ -31,10 +31,6 @@
 #include <stdint.h>
 #include <inttypes.h>
 
-#if 0
-#include "queue.h"
-#endif
-
 #ifndef SECURITY_TYPES_H_
 #define SECURITY_TYPES_H_
 
@@ -113,11 +109,6 @@ typedef struct eutran_vector_s {
   res_t   xres;
   uint8_t autn[AUTN_LENGTH_OCTETS];
   uint8_t kasme[KASME_LENGTH_OCTETS];
-
-  /* one UE can have multiple vectors so use STAILQ lists for easy management */
-#if 0
-  STAILQ_ENTRY(eutran_vector_s) entries;
-#endif
 } eutran_vector_t;
 
 #define FC_KASME        (0x10)
diff --git a/openair3/NAS/COMMON/ESM/MSG/ActivateDefaultEpsBearerContextRequest.c b/openair3/NAS/COMMON/ESM/MSG/ActivateDefaultEpsBearerContextRequest.c
index 068ee5db6ac4ca47186df04c8b685e46703d0697..44c12659b8eba20498c4dacf1e46833e6de2018b 100644
--- a/openair3/NAS/COMMON/ESM/MSG/ActivateDefaultEpsBearerContextRequest.c
+++ b/openair3/NAS/COMMON/ESM/MSG/ActivateDefaultEpsBearerContextRequest.c
@@ -290,31 +290,6 @@ int encode_activate_default_eps_bearer_context_request(activate_default_eps_bear
       encoded += encode_result;
   }
 
-#if 0 /* LW: force Protocol Configuration Options to be included in the ESM message */
-  {
-#define CONFIGURATION_PROTOCOL_PPP          0
-
-#define PROTOCOL_ID_IPCP                    0x8021
-#define PROTOCOL_ID_DNS_SERVER_IPV4_ADDRESS 0x000D
-
-    /* Force this item to be present */
-    activate_default_eps_bearer_context_request->presencemask |= ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REQUEST_PROTOCOL_CONFIGURATION_OPTIONS_PRESENT;
-    /* Fill this item with data from PFT trace */
-    activate_default_eps_bearer_context_request->protocolconfigurationoptions.configurationprotol = CONFIGURATION_PROTOCOL_PPP;
-    activate_default_eps_bearer_context_request->protocolconfigurationoptions.protocolid = PROTOCOL_ID_IPCP;
-    activate_default_eps_bearer_context_request->protocolconfigurationoptions.lengthofprotocolid = 16; /* Size of PROTOCOL_ID_IPCP */
-    activate_default_eps_bearer_context_request->protocolconfigurationoptions.protocolidcontents.value = (uint8_t *)
-        /* PROTOCOL_ID_IPCP data */
-        "\x03\x00\x00\x10\x81\x06\xC0\xA8\x0C\x64\x83\x06\xC0\xA8\x6A\x0C";
-    /* Additional parameters PROTOCOL_ID_DNS_SERVER_IPV4_ADDRESS data */
-    //"\x00\x0d\x04\x52\x61\x00\x78"
-    /* Additional parameters PROTOCOL_ID_DNS_SERVER_IPV4_ADDRESS data */
-    //"\x00\x0d\x04\x52\x61\x01\x78";
-    //activate_default_eps_bearer_context_request->protocolconfigurationoptions.protocolidcontents.length = 16 + 7 + 7;
-    activate_default_eps_bearer_context_request->protocolconfigurationoptions.protocolidcontents.length = 16;
-  }
-#endif
-
   if ((activate_default_eps_bearer_context_request->presencemask & ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REQUEST_PROTOCOL_CONFIGURATION_OPTIONS_PRESENT)
       == ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REQUEST_PROTOCOL_CONFIGURATION_OPTIONS_PRESENT) {
     if ((encode_result =
diff --git a/openair3/NAS/COMMON/IES/EsmMessageContainer.c b/openair3/NAS/COMMON/IES/EsmMessageContainer.c
index 2268b657f065f5d725920a7b3ae19f403ae67513..e33c06c71dee16010903446af66dd237d5988b6f 100644
--- a/openair3/NAS/COMMON/IES/EsmMessageContainer.c
+++ b/openair3/NAS/COMMON/IES/EsmMessageContainer.c
@@ -86,10 +86,6 @@ int encode_esm_message_container(EsmMessageContainer *esmmessagecontainer, uint8
     encoded += encode_result;
 
   ENCODE_U16(lenPtr, encode_result, encoded);
-#if 0
-  lenPtr[1] = (((encoded - 2 - ((iei > 0) ? 1: 0))) & 0x0000ff00) >> 8;
-  lenPtr[0] =  ((encoded - 2 - ((iei > 0) ? 1: 0))) & 0x000000ff;
-#endif
   return encoded;
 }
 
diff --git a/openair3/NAS/COMMON/IES/MobileIdentity.h b/openair3/NAS/COMMON/IES/MobileIdentity.h
index 37f4d4ac3018504964419786edf6f197ad11f6f0..fd747307de3da59f4ba3a218a4ad552bbd32eeec 100644
--- a/openair3/NAS/COMMON/IES/MobileIdentity.h
+++ b/openair3/NAS/COMMON/IES/MobileIdentity.h
@@ -97,37 +97,6 @@ typedef struct imeisv_s{
        uint8_t parity:4;
 } imeisv_t;
 
-#if 0
-typedef struct imeisv_s {
-   uint8_t length;
-   union {
-     struct {
-       uint8_t tac2:4;
-       uint8_t tac1:4;
-       uint8_t tac4:4;
-       uint8_t tac3:4;
-       uint8_t tac6:4;
-       uint8_t tac5:4;
-       uint8_t tac8:4;
-       uint8_t tac7:4;
-       uint8_t snr2:4;
-       uint8_t snr1:4;
-       uint8_t snr4:4;
-       uint8_t snr3:4;
-       uint8_t snr6:4;
-       uint8_t snr5:4;
-       uint8_t svn2:4;
-       uint8_t svn1:4;
-#define EVEN_PARITY 0
-#define IMEI_ODD_PARITY  0xf
-       uint8_t parity:4;
-     } num;
-#define IMEISV_BCD8_SIZE   9
-     uint8_t value[IMEISV_BCD8_SIZE];
-   } u;
-} imeisv_t;
-#endif
-
 typedef ImsiMobileIdentity_t ImeiMobileIdentity_t;
 typedef imeisv_t             ImeisvMobileIdentity_t;
 typedef ImsiMobileIdentity_t TmsiMobileIdentity_t;
diff --git a/openair3/NAS/COMMON/UTIL/device.c b/openair3/NAS/COMMON/UTIL/device.c
index 7ad2879b9015d465b427c3e370d6f2cf06eddcbf..f8f1b9727b0049000cfff7efed5cc94ff36c3067 100644
--- a/openair3/NAS/COMMON/UTIL/device.c
+++ b/openair3/NAS/COMMON/UTIL/device.c
@@ -175,16 +175,6 @@ void device_close(void* id)
 ssize_t device_read(void* id, char* buffer, size_t len)
 {
   const device_id_t* devid = (device_id_t*)(id);
-#if 0
-  ssize_t rbytes = read(devid->fd, buffer, len);
-
-  if (rbytes < 0) {
-    return RETURNerror;
-  }
-
-#endif
-
-  //#if 0
   ssize_t rbytes = 0;
 
   do {
@@ -198,8 +188,6 @@ ssize_t device_read(void* id, char* buffer, size_t len)
   } while ( (buffer[rbytes-1] != '\r') && (buffer[rbytes-1] != '\n')
             && (buffer[rbytes-1] != '\0') );
 
-  //#endif
-
   return rbytes;
 }
 
diff --git a/openair3/NAS/COMMON/commonDef.h b/openair3/NAS/COMMON/commonDef.h
index 84d97fc4a8cb954386d0bd7976d5b11630f1d084..e9f769db5555246ecf24aa1ffa6c2ded2e8e799c 100644
--- a/openair3/NAS/COMMON/commonDef.h
+++ b/openair3/NAS/COMMON/commonDef.h
@@ -314,17 +314,6 @@ typedef struct {
  */
 #define TAI_LIST_T(SIZE) struct {Byte_t n_tais; tai_t tai[SIZE];}
 
-#if 0
-/*
- * User notification callback, executed whenever a change of data with
- * respect of network information (e.g. network registration and/or
- * location change, new PLMN becomes available) is notified by the
- * EPS Mobility Management sublayer
- */
-typedef int (*emm_indication_callback_t) (Stat_t, tac_t, ci_t, AcT_t,
-    const char*, size_t);
-#endif
-
 typedef enum eps_protocol_discriminator_e {
   /* Protocol discriminator identifier for EPS Mobility Management */
   EPS_MOBILITY_MANAGEMENT_MESSAGE =   0x7,
diff --git a/openair3/NAS/COMMON/networkDef.h b/openair3/NAS/COMMON/networkDef.h
index e3e8e1f08b3487d6613dcbbf450b810204f01aaf..5390eac2f0ba1d7be6cd59d311d4ab2358967a4b 100644
--- a/openair3/NAS/COMMON/networkDef.h
+++ b/openair3/NAS/COMMON/networkDef.h
@@ -260,15 +260,6 @@ typedef struct {
   network_pkf_t* pkf[NET_PACKET_FILTER_MAX];
 } network_tft_t;
 
-#if 0
-/*
- * User notification callback, executed whenever a change of status with
- * respect of PDN connection or EPS bearer context is notified by the EPS
- * Session Management sublayer
- */
-typedef int (*esm_indication_callback_t) (int, network_pdn_state_t);
-#endif
-
 /****************************************************************************/
 /********************  G L O B A L    V A R I A B L E S  ********************/
 /****************************************************************************/
diff --git a/openair3/NAS/TEST/AS_SIMULATOR/nas_process.c b/openair3/NAS/TEST/AS_SIMULATOR/nas_process.c
index 17ad99715b9c17bd567fe497dbb4b15e8704adaf..9b2245acd03c66b4437c00326e309f817511c47b 100644
--- a/openair3/NAS/TEST/AS_SIMULATOR/nas_process.c
+++ b/openair3/NAS/TEST/AS_SIMULATOR/nas_process.c
@@ -338,14 +338,8 @@ _attach_accept(
 {
   int index = 0;
 
-#if 0
-  /* T3412 timer value */
-  index += snprintf(buffer + index, length - index, "T3412 = ");
-  index += gprsTimer(buffer + index, length - index, &msg->t3412value);
-  /* TAI list */
-  index += snprintf(buffer + index, length - index, ", ");
-  index += taiList(buffer + index, length - index, &msg->tailist);
-#endif
+  /* T3412 timer value (TBD) */
+  /* TAI list (TBD) */
 
   /* GUTI */
   if (msg->presencemask & ATTACH_ACCEPT_GUTI_PRESENT) {
diff --git a/openair3/NAS/TEST/USER/user_simulator.c b/openair3/NAS/TEST/USER/user_simulator.c
index ec16b3453f25dd10cd8ff15a0f72902aa31e9674..fa015df30af33599815c5341059ba2a831716964 100644
--- a/openair3/NAS/TEST/USER/user_simulator.c
+++ b/openair3/NAS/TEST/USER/user_simulator.c
@@ -225,23 +225,6 @@ int main (int argc, const char* argv[])
       break;
     }
 
-#if 0
-    /* Send the AT command one byte at a time (serial port simulation) */
-    const char* pbuffer = _user_simulator_send_buffer;
-
-    while (*pbuffer) {
-      int sbytes = USER_SEND(pbuffer++, 1);
-
-      if (sbytes == RETURNerror) {
-        perror("ERROR\t: Failed to send data to the NAS sublayer");
-        break;
-      }
-
-      (void)poll(0, 0, 10);
-    }
-
-#endif
-
     (void)poll(0, 0, 100);
   }
 
diff --git a/openair3/S1AP/s1ap_eNB_handlers.c b/openair3/S1AP/s1ap_eNB_handlers.c
index ab5f93a16d8883b7b49f66043f82212837b3607b..28fff9577eaa7d5c525f6c22032fa8a02f8fc254 100644
--- a/openair3/S1AP/s1ap_eNB_handlers.c
+++ b/openair3/S1AP/s1ap_eNB_handlers.c
@@ -384,60 +384,6 @@ int s1ap_eNB_handle_s1_setup_response(uint32_t               assoc_id,
   mme_desc_p->s1ap_eNB_instance->s1ap_mme_associated_nb ++;
   s1ap_handle_s1_setup_message(mme_desc_p, 0);
 
-#if 0
-  /* We call back our self
-   * -> generate a dummy initial UE message
-   */
-  {
-    s1ap_nas_first_req_t s1ap_nas_first_req;
-
-    memset(&s1ap_nas_first_req, 0, sizeof(s1ap_nas_first_req_t));
-
-    s1ap_nas_first_req.rnti = 0xC03A;
-    s1ap_nas_first_req.establishment_cause = RRC_CAUSE_MO_DATA;
-    s1ap_nas_first_req.ue_identity.presenceMask = UE_IDENTITIES_gummei;
-
-    s1ap_nas_first_req.ue_identity.gummei.mcc = 208;
-    s1ap_nas_first_req.ue_identity.gummei.mnc = 34;
-    s1ap_nas_first_req.ue_identity.gummei.mme_code = 0;
-    s1ap_nas_first_req.ue_identity.gummei.mme_group_id = 0;
-
-    /* NAS Attach request with IMSI */
-    static uint8_t nas_attach_req_imsi[] = {
-      0x07, 0x41,
-      /* EPS Mobile identity = IMSI */
-      0x71, 0x08, 0x29, 0x80, 0x43, 0x21, 0x43, 0x65, 0x87,
-      0xF9,
-      /* End of EPS Mobile Identity */
-      0x02, 0xE0, 0xE0, 0x00, 0x20, 0x02, 0x03,
-      0xD0, 0x11, 0x27, 0x1A, 0x80, 0x80, 0x21, 0x10, 0x01, 0x00, 0x00,
-      0x10, 0x81, 0x06, 0x00, 0x00, 0x00, 0x00, 0x83, 0x06, 0x00, 0x00,
-      0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x0A, 0x00, 0x52, 0x12, 0xF2,
-      0x01, 0x27, 0x11,
-    };
-
-    /* NAS Attach request with GUTI */
-    static uint8_t nas_attach_req_guti[] = {
-      0x07, 0x41,
-      /* EPS Mobile identity = IMSI */
-      0x71, 0x0B, 0xF6, 0x12, 0xF2, 0x01, 0x80, 0x00, 0x01, 0xE0, 0x00,
-      0xDA, 0x1F,
-      /* End of EPS Mobile Identity */
-      0x02, 0xE0, 0xE0, 0x00, 0x20, 0x02, 0x03,
-      0xD0, 0x11, 0x27, 0x1A, 0x80, 0x80, 0x21, 0x10, 0x01, 0x00, 0x00,
-      0x10, 0x81, 0x06, 0x00, 0x00, 0x00, 0x00, 0x83, 0x06, 0x00, 0x00,
-      0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x0A, 0x00, 0x52, 0x12, 0xF2,
-      0x01, 0x27, 0x11,
-    };
-
-    s1ap_nas_first_req.nas_pdu.buffer = nas_attach_req_guti;
-    s1ap_nas_first_req.nas_pdu.length = sizeof(nas_attach_req_guti);
-
-    s1ap_eNB_handle_nas_first_req(mme_desc_p->s1ap_eNB_instance->instance,
-                                  &s1ap_nas_first_req);
-  }
-#endif
-
   return 0;
 }
 
@@ -1078,29 +1024,6 @@ int s1ap_eNB_handle_paging(uint32_t               assoc_id,
       return -1;
   }
 
-#if 0
-  /* convert Paging DRX(optional) */
-  if (paging_p->presenceMask & S1AP_PAGINGIES_PAGINGDRX_PRESENT) {
-      switch(paging_p->pagingDRX) {
-        case S1ap_PagingDRX_v32:
-          S1AP_PAGING_IND(message_p).paging_drx = PAGING_DRX_32;
-         break;
-        case S1ap_PagingDRX_v64:
-          S1AP_PAGING_IND(message_p).paging_drx = PAGING_DRX_64;
-        break;
-        case S1ap_PagingDRX_v128:
-          S1AP_PAGING_IND(message_p).paging_drx = PAGING_DRX_128;
-        break;
-        case S1ap_PagingDRX_v256:
-          S1AP_PAGING_IND(message_p).paging_drx = PAGING_DRX_256;
-        break;
-        default:
-          // when UE Paging DRX is no value
-          S1AP_PAGING_IND(message_p).paging_drx = PAGING_DRX_256;
-        break;
-      }
-  }
-#endif
   S1AP_PAGING_IND(message_p).paging_drx = PAGING_DRX_256;
 
   /* convert cnDomain */
@@ -1133,46 +1056,6 @@ int s1ap_eNB_handle_paging(uint32_t               assoc_id,
      S1AP_DEBUG("[SCTP %d] Received Paging: MCC %d, MNC %d, TAC %d\n", assoc_id, S1AP_PAGING_IND(message_p).plmn_identity[i].mcc, S1AP_PAGING_IND(message_p).plmn_identity[i].mnc, S1AP_PAGING_IND(message_p).tac[i]);
   }
 
-#if 0
- // CSG Id(optional) List is not used
-  if (paging_p->presenceMask & S1AP_PAGINGIES_CSG_IDLIST_PRESENT) {
-      // TODO
-  }
-
-  /* convert pagingPriority (optional) if has value */
-  if (paging_p->presenceMask & S1AP_PAGINGIES_PAGINGPRIORITY_PRESENT) {
-      switch(paging_p->pagingPriority) {
-      case S1ap_PagingPriority_priolevel1:
-          S1AP_PAGING_IND(message_p).paging_priority = PAGING_PRIO_LEVEL1;
-        break;
-      case S1ap_PagingPriority_priolevel2:
-          S1AP_PAGING_IND(message_p).paging_priority = PAGING_PRIO_LEVEL2;
-        break;
-      case S1ap_PagingPriority_priolevel3:
-          S1AP_PAGING_IND(message_p).paging_priority = PAGING_PRIO_LEVEL3;
-        break;
-      case S1ap_PagingPriority_priolevel4:
-          S1AP_PAGING_IND(message_p).paging_priority = PAGING_PRIO_LEVEL4;
-        break;
-      case S1ap_PagingPriority_priolevel5:
-          S1AP_PAGING_IND(message_p).paging_priority = PAGING_PRIO_LEVEL5;
-        break;
-      case S1ap_PagingPriority_priolevel6:
-          S1AP_PAGING_IND(message_p).paging_priority = PAGING_PRIO_LEVEL6;
-        break;
-      case S1ap_PagingPriority_priolevel7:
-          S1AP_PAGING_IND(message_p).paging_priority = PAGING_PRIO_LEVEL7;
-        break;
-      case S1ap_PagingPriority_priolevel8:
-          S1AP_PAGING_IND(message_p).paging_priority = PAGING_PRIO_LEVEL8;
-        break;
-      default:
-        /* invalid paging_p->pagingPriority */
-        S1AP_ERROR("[SCTP %d] Received paging : pagingPriority(%ld) is invalid\n", assoc_id, paging_p->pagingPriority);
-        return -1;
-      }
-  }
-#endif
   //paging parameter values
   S1AP_DEBUG("[SCTP %d] Received Paging parameters: ue_index_value %d  cn_domain %d paging_drx %d paging_priority %d\n",assoc_id,
           S1AP_PAGING_IND(message_p).ue_index_value, S1AP_PAGING_IND(message_p).cn_domain,
diff --git a/openair3/SCTP/sctp_eNB_task.c b/openair3/SCTP/sctp_eNB_task.c
index 256bee0cd12ecca1d8c8cd28a42f105e745da12d..168eb58b3728f4b95cb0bb41ef099f30740522fb 100644
--- a/openair3/SCTP/sctp_eNB_task.c
+++ b/openair3/SCTP/sctp_eNB_task.c
@@ -203,19 +203,6 @@ sctp_handle_new_association_req(
 
       if (s > 0 ) {
         if (((struct sockaddr_in*)ifa->ifa_addr)->sin_addr.s_addr == in.s_addr) {
-#if 0
-          memset(&ifr, 0, sizeof(ifr));
-          snprintf(ifr.ifr_name, sizeof(ifr.ifr_name), "%s",ifa->ifa_name);
-
-          if (setsockopt(sd, SOL_SOCKET, SO_BINDTODEVICE, (void *)&ifr, sizeof(ifr)) < 0) {
-            SCTP_ERROR("Setsockopt SOL_SOCKET failed: %s\n",
-                       strerror(errno));
-          } else {
-            SCTP_DEBUG("Setsockopt SOL_SOCKET socket bound to : %s\n",
-                       ifa->ifa_name);
-          }
-
-#else
           struct sockaddr_in locaddr;
           locaddr.sin_family = AF_INET;
           locaddr.sin_port = htons(sctp_new_association_req_p->port);
@@ -228,8 +215,6 @@ sctp_handle_new_association_req(
             SCTP_DEBUG("sctp_bindx SCTP_BINDX_ADD_ADDR socket bound to : %s\n",
                        inet_ntoa(locaddr.sin_addr));
           }
-
-#endif
           break;
 
         }
diff --git a/openair3/UDP/udp_eNB_task.c b/openair3/UDP/udp_eNB_task.c
index 4d6bd6e033a45417a2044e2cfb39ffff3ac8d1c8..2943ca408835f3a5cc3988efe128728944a8a48c 100644
--- a/openair3/UDP/udp_eNB_task.c
+++ b/openair3/UDP/udp_eNB_task.c
@@ -276,13 +276,10 @@ void udp_eNB_receiver(struct udp_socket_desc_s *udp_sock_pP)
        * if the queue is full.
        */
       /* look for HACK_RLC_UM_LIMIT for others places related to the hack. Please do not remove this comment. */
-      //if (itti_send_msg_to_task(udp_sock_pP->task_id, INSTANCE_DEFAULT, message_p) < 0) {
       if (itti_try_send_msg_to_task(udp_sock_pP->task_id, INSTANCE_DEFAULT, message_p) < 0) {
-#if 0
-        LOG_I(UDP_, "Failed to send message %d to task %d\n",
+        LOG_E(UDP_, "Failed to send message %d to task %d\n",
               UDP_DATA_IND,
               udp_sock_pP->task_id);
-#endif
         itti_free(TASK_UDP, message_p);
         itti_free(TASK_UDP, forwarded_buffer);
         return;
diff --git a/targets/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.c b/targets/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.c
index 5ded228f6bd91428a472344c79bfde84894201d8..75a7825669d2320c062ded059aa1ced9c05987bf 100644
--- a/targets/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.c
+++ b/targets/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.c
@@ -929,7 +929,7 @@ void calibrate_rf(openair0_device *device) {
   bladerf_set_loopback(brf->dev,BLADERF_LB_NONE);
   bladerf_set_gain(brf->dev, BLADERF_MODULE_RX, (unsigned int) device->openair0_cfg->rx_gain[0]-device->openair0_cfg[0].rx_gain_offset[0]);
   bladerf_set_gain(brf->dev, BLADERF_MODULE_TX, (unsigned int) device->openair0_cfg->tx_gain[0]);
-  //  write_output("blade_rf_test.m","rxs",calib_buff,RXDCLENGTH,1,1);
+  //  LOG_M("blade_rf_test.m","rxs",calib_buff,RXDCLENGTH,1,1);
 }
 
 /*! \brief Initialize Openair BLADERF target. It returns 0 if OK 
diff --git a/targets/ARCH/EXMIMO/DRIVER/telecomparistech/em1_drv.h b/targets/ARCH/EXMIMO/DRIVER/telecomparistech/em1_drv.h
index 82cb69babaf0b200a914764e4e9c1f5d58ab13b4..22c01c47e646a46eed77950220664a42734075ac 100644
--- a/targets/ARCH/EXMIMO/DRIVER/telecomparistech/em1_drv.h
+++ b/targets/ARCH/EXMIMO/DRIVER/telecomparistech/em1_drv.h
@@ -135,12 +135,6 @@ struct  em1_private_s {
 extern struct em1_private_s *em1_devices[MAX_EM1_DEVICES];
 
 /* em1_drv.c */
-#if 0
-static int em1_open(struct inode *inode, struct file *file);
-static int em1_release(struct inode *inode, struct file *file);
-static int __init em1_init(void);
-static void __exit em1_cleanup(void);
-#endif
 int em1_user_op_enter(struct em1_private_s *pv, wait_queue_t *wait,
                       wait_queue_head_t *wh, int busy_flag, int new_state);
 void em1_user_op_leave(struct em1_private_s *pv, wait_queue_t *wait,
@@ -153,9 +147,6 @@ ssize_t em1_write(struct file *file, const char __user *buf, size_t size, loff_t
 ssize_t em1_read(struct file *file, char __user *buf, size_t size, loff_t *ppos);
 
 /* em1_dev.c */
-#if 0
-static irqreturn_t irq_handler(int irq, void *dev_id);
-#endif
 int __devinit em1_probe(struct pci_dev *dev, const struct pci_device_id *id);
 void __devexit em1_remove(struct pci_dev *dev);
 
@@ -184,14 +175,6 @@ struct em1_ioctl_fifo_params {
   size_t count;
 };
 
-#if 0
-static int em1_ioctl_fifo_write(struct em1_private_s *pv,
-                                struct em1_ioctl_fifo_params *p);
-static int em1_ioctl_fifo_read(struct em1_private_s *pv,
-                               struct em1_ioctl_fifo_params *p);
-static int em1_ioctl_alloc(struct em1_private_s *pv, void **buf);
-#endif
-
 /*
  * Local Variables:
  * c-file-style: "linux"
diff --git a/targets/ARCH/mobipass/queues.c b/targets/ARCH/mobipass/queues.c
index 27c9917084c8b5e6623d9e1cf2904a58e8d87749..68ed6ecbc9112f0badddb1c67364e36ba58ad1dd 100644
--- a/targets/ARCH/mobipass/queues.c
+++ b/targets/ARCH/mobipass/queues.c
@@ -182,16 +182,6 @@ static void get_sample_from_mobipass(queue_state_t *qstate, char *I, char *Q, ui
   struct mobipass_header *mh = NULL;
   uint32_t packet_timestamp = 0;
 
-#if 0
-uint32_t old_start = qstate->from_mobipass.start;
-uint32_t old_len = qstate->from_mobipass.len;
-b = qstate->from_mobipass.buf[qstate->from_mobipass.start];
-mh = (struct mobipass_header *)(b+14);
-uint32_t old_pts = qstate->from_mobipass.len ? ntohl(mh->timestamp) : -1;
-b=NULL;
-mh=NULL;
-#endif
-
   while (qstate->from_mobipass.len) {
     b = qstate->from_mobipass.buf[qstate->from_mobipass.start];
     mh = (struct mobipass_header *)(b+14);
@@ -222,10 +212,6 @@ nodata:
   *Q = 0;
 
   log_missed_sample(qstate, timestamp);
-
-#if 0
-printf("no sample timestamp %u pt %u start %d old_start %d old_pt %u len %d old len %d\n", timestamp, packet_timestamp, qstate->from_mobipass.start, old_start, old_pts, qstate->from_mobipass.len, old_len);
-#endif
 }
 
 /* doesn't work with delay more than 1s */
diff --git a/targets/ARCH/tcp_bridge/tcp_bridge.c b/targets/ARCH/tcp_bridge/tcp_bridge.c
index 127ba39bbcff8dfac62e0b9b1fb53a596d5c91a9..a59b969da41a16e66ec712917c2c1e88288156b7 100644
--- a/targets/ARCH/tcp_bridge/tcp_bridge.c
+++ b/targets/ARCH/tcp_bridge/tcp_bridge.c
@@ -225,14 +225,6 @@ int tcp_bridge_read(openair0_device *device, openair0_timestamp *timestamp, void
 
   b = &t->b[t->bstart];
 
-#if 0
-typedef struct {
-  int32_t data[30720]; /* max 20MHz */
-  unsigned long timestamp;
-  int size;
-} input_buffer;
-#endif
-
   if (b->timestamp != t->read_timestamp) abort();
   if (b->size != nsamps * 4) abort();
 
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210.conf
index 15e52c7cdd9131f49b59c71c55d84cdbce46387a..69166672d79298d91ff605d5fa2fbf21b5cc6515 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.50PRB.usrpb210.conf
@@ -198,7 +198,7 @@ MACRLCs = (
 	num_cc = 1;
 	tr_s_preference = "local_L1";
 	tr_n_preference = "local_RRC";
-	phy_test_mode = 1;
+	phy_test_mode = 0;
         puSch10xSnr     =  200;
         puCch10xSnr     =  200;
         }  
diff --git a/targets/RT/USER/lte-enb.c b/targets/RT/USER/lte-enb.c
index f75a284840742644107ec25d466aaa4dfe38e345..cbe0f7d0d810dbf795b2c6e5e556dc0cd4acc059 100644
--- a/targets/RT/USER/lte-enb.c
+++ b/targets/RT/USER/lte-enb.c
@@ -243,31 +243,6 @@ static inline int rxtx(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc, char *thread_nam
   eNB->if_inst->UL_indication(&eNB->UL_INFO);
 
   pthread_mutex_unlock(&eNB->UL_INFO_mutex);
-#if 0
-/* TODO: find a correct solution for this conflict */
-<<<<<<< HEAD
-
-  // *****************************************
-  // TX processing for subframe n+sf_ahead
-  // run PHY TX procedures the one after the other for all CCs to avoid race conditions
-  // (may be relaxed in the future for performance reasons)
-  // *****************************************
-  //if (wait_CCs(proc)<0) return(-1);
-  
-  if (oai_exit) return(-1);
-#ifndef PHY_TX_THREAD
-  phy_procedures_eNB_TX(eNB, proc, no_relay, NULL, 1);
-#endif
-  if (release_thread(&proc->mutex_rxtx,&proc->instance_cnt_rxtx,thread_name)<0) return(-1);
-=======
-  
-  VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ULSCH_SCHEDULER , 0 );
-  if(oai_exit) return(-1);
-  if(get_nprocs() <= 4){
-    phy_procedures_eNB_TX(eNB, proc, 1);
-  }
->>>>>>> origin/develop
-#endif /* #if 0 */
   /* this conflict resolution may be totally wrong, to be tested */
   /* CONFLICT RESOLUTION: BEGIN */
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ULSCH_SCHEDULER , 0 );
@@ -285,7 +260,6 @@ static inline int rxtx(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc, char *thread_nam
 
   LOG_D(PHY,"%s() Exit proc[rx:%d%d tx:%d%d]\n", __FUNCTION__, proc->frame_rx, proc->subframe_rx, proc->frame_tx, proc->subframe_tx);
 
-#if 0
   LOG_D(PHY, "rxtx:%lld nfapi:%lld phy:%lld tx:%lld rx:%lld prach:%lld ofdm:%lld ",
       softmodem_stats_rxtx_sf.diff_now, nfapi_meas.diff_now,
       TICK_TO_US(eNB->phy_proc),
@@ -325,7 +299,6 @@ static inline int rxtx(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc, char *thread_nam
       TICK_TO_US(eNB->ulsch_tc_intl1_stats),
       TICK_TO_US(eNB->ulsch_tc_intl2_stats)
       );
-#endif
   
   return(0);
 }
@@ -468,30 +441,6 @@ static void* eNB_thread_rxtx( void* param ) {
   return &eNB_thread_rxtx_status;
 }
 
-
-#if 0 //defined(ENABLE_ITTI) && defined(ENABLE_USE_MME)
-// Wait for eNB application initialization to be complete (eNB registration to MME)
-static void wait_system_ready (char *message, volatile int *start_flag) {
-  
-  static char *indicator[] = {".    ", "..   ", "...  ", ".... ", ".....",
-			      " ....", "  ...", "   ..", "    .", "     "};
-  int i = 0;
-  
-  while ((!oai_exit) && (*start_flag == 0)) {
-    LOG_N(EMU, message, indicator[i]);
-    fflush(stdout);
-    i = (i + 1) % (sizeof(indicator) / sizeof(indicator[0]));
-    usleep(200000);
-  }
-  
-  LOG_D(EMU,"\n");
-}
-#endif
-
-
-
-
-
 void eNB_top(PHY_VARS_eNB *eNB, int frame_rx, int subframe_rx, char *string,RU_t *ru)
 {
   eNB_proc_t *proc           = &eNB->proc;
diff --git a/targets/RT/USER/lte-ru.c b/targets/RT/USER/lte-ru.c
index d86f2f6c6b76b2f4991439f4381974709d82fce1..b03b995463391950fdcb29c0b1d92fa4b3ec7179 100644
--- a/targets/RT/USER/lte-ru.c
+++ b/targets/RT/USER/lte-ru.c
@@ -1781,10 +1781,6 @@ static void* ru_thread( void* param ) {
     // wakeup all eNB processes waiting for this RU
     if (ru->num_eNB>0) wakeup_eNBs(ru);
     
-    // wait until eNBs are finished subframe RX n and TX n+sf_ahead
-    if(get_nprocs() > 4)
-      wait_on_condition(&proc->mutex_eNBs,&proc->cond_eNBs,&proc->instance_cnt_eNBs,"ru_thread");
-    
 #ifndef PHY_TX_THREAD
     if(get_nprocs() <= 4){
       // do TX front-end processing if needed (precoding and/or IDFTs)
@@ -1882,8 +1878,8 @@ void *ru_thread_synch(void *arg) {
 	/*
 	if ((peak_val > 300000) && (sync_pos > 0)) {
 	//      if (sync_pos++ > 3) {
-	write_output("ru_sync.m","sync",(void*)&sync_corr[0],fp->samples_per_tti*5,1,2);
-	write_output("ru_rx.m","rxs",(void*)ru->ru_time.rxdata[0][0],fp->samples_per_tti*10,1,1);
+	LOG_M("ru_sync.m","sync",(void*)&sync_corr[0],fp->samples_per_tti*5,1,2);
+	LOG_M("ru_rx.m","rxs",(void*)ru->ru_time.rxdata[0][0],fp->samples_per_tti*10,1,1);
 	exit(-1);
 	}
 	*/
diff --git a/targets/RT/USER/lte-ue.c b/targets/RT/USER/lte-ue.c
index 9ce49ec9396413488348288e8944ae6616897469..638d476d4e87778b9bbb70183a74ba8451e9fd80 100644
--- a/targets/RT/USER/lte-ue.c
+++ b/targets/RT/USER/lte-ue.c
@@ -275,14 +275,6 @@ void init_UE(int nb_inst,int eMBMS_active, int uecap_xer_in, int timing_correcti
   }
 
   printf("UE threads created by %ld\n", gettid());
-#if 0
-#if defined(ENABLE_USE_MME)
-  extern volatile int start_UE;
-  while (start_UE == 0) {
-    sleep(1);
-  }
-#endif
-#endif
 }
 
 // Initiating all UEs within a single set of threads for PHY_STUB. Future extensions -> multiple
diff --git a/targets/SIMU/USER/channel_sim.c b/targets/SIMU/USER/channel_sim.c
index 3018dbe1fb10e7565303323d9e599daf072b38c5..cd227716014b92bb61cb2a05c3704980de996b85 100644
--- a/targets/SIMU/USER/channel_sim.c
+++ b/targets/SIMU/USER/channel_sim.c
@@ -192,8 +192,8 @@ void do_DL_sig(channel_desc_t *RU2UE[NUMBER_OF_RU_MAX][NUMBER_OF_UE_MAX][MAX_NUM
       double scale = pow(10.0,(frame_parms->pdsch_config_common.referenceSignalPower+RU2UE[att_eNB_id][UE_id][CC_id]->path_loss_dB + (double) PHY_vars_UE_g[UE_id][CC_id]->rx_total_gain_dB)/20.0);
       LOG_D(OCM,"scale =%lf (%d dB)\n",scale,(int) (20*log10(scale)));
       // freq_channel(desc1,frame_parms->N_RB_DL,nb_samples);
-      //write_output("channel.m","ch",desc1->ch[0],desc1->channel_length,1,8);
-      //write_output("channelF.m","chF",desc1->chF[0],nb_samples,1,8);
+      //LOG_M("channel.m","ch",desc1->ch[0],desc1->channel_length,1,8);
+      //LOG_M("channelF.m","chF",desc1->chF[0],nb_samples,1,8);
       int count,count1,a_rx,a_tx;
 
       for(a_tx=0; a_tx<nb_antennas_tx; a_tx++) {
@@ -532,10 +532,10 @@ void do_UL_sig(channel_desc_t *UE2RU[NUMBER_OF_UE_MAX][NUMBER_OF_RU_MAX][MAX_NUM
 	      ru_id,nb_antennas_rx,UE2RU[UE_id][ru_id][CC_id]->nb_rx,10*log10(rx_pwr),10*log10(tx_pwr*PHY_vars_UE_g[UE_id][CC_id]->tx_total_RE[subframe])+UE2RU[UE_id][ru_id][CC_id]->path_loss_dB,subframe,frame_parms->samples_per_tti);
 	/*	
 	if (abs(10*log10(rx_pwr)-10*log10(tx_pwr*PHY_vars_UE_g[UE_id][CC_id]->tx_total_RE[subframe])-UE2RU[UE_id][ru_id][CC_id]->path_loss_dB)>3) {
-	  write_output("txsig_re.m","s_re",s_re[0],frame_parms->samples_per_tti,1,7);
-	  write_output("txsig_im.m","s_im",s_im[0],frame_parms->samples_per_tti,1,7);
-	  write_output("rxsig_re.m","r_re",r_re0[0],frame_parms->samples_per_tti,1,7);
-	  write_output("rxsig_im.m","r_im",r_im0[0],frame_parms->samples_per_tti,1,7);
+	  LOG_M("txsig_re.m","s_re",s_re[0],frame_parms->samples_per_tti,1,7);
+	  LOG_M("txsig_im.m","s_im",s_im[0],frame_parms->samples_per_tti,1,7);
+	  LOG_M("rxsig_re.m","r_re",r_re0[0],frame_parms->samples_per_tti,1,7);
+	  LOG_M("rxsig_im.m","r_im",r_im0[0],frame_parms->samples_per_tti,1,7);
 	  exit(-1);
 	  }*/
 
diff --git a/targets/SIMU/USER/oaisim.c b/targets/SIMU/USER/oaisim.c
index 1847db1d7185627b15ca36e9d80385fb5e5961c4..659463e8bcbc965a5fd19cd1d9dfc9bedac9c88b 100644
--- a/targets/SIMU/USER/oaisim.c
+++ b/targets/SIMU/USER/oaisim.c
@@ -828,29 +828,29 @@ l2l1_task (void *args_p)
 	if ((sf == 0) && ((frame % MAX_FRAME_NUMBER) == 0) && (abstraction_flag == 0)
 	    && (oai_emulation.info.n_frames == 1)) {
 	  
-	  write_output ("dlchan0.m",
+	  LOG_M ("dlchan0.m",
 			"dlch0",
 			&(PHY_vars_UE_g[0][0]->common_vars.common_vars_rx_data_per_thread[0].dl_ch_estimates[0][0][0]),
 			(6
 			 * (PHY_vars_UE_g[0][0]->frame_parms.ofdm_symbol_size)),
 			1, 1);
-	  write_output ("dlchan1.m",
+	  LOG_M ("dlchan1.m",
 			"dlch1",
 			&(PHY_vars_UE_g[0][0]->common_vars.common_vars_rx_data_per_thread[0].dl_ch_estimates[1][0][0]),
 			(6
 			 * (PHY_vars_UE_g[0][0]->frame_parms.ofdm_symbol_size)),
 			1, 1);
-	  write_output ("dlchan2.m",
+	  LOG_M ("dlchan2.m",
 			"dlch2",
 			&(PHY_vars_UE_g[0][0]->common_vars.common_vars_rx_data_per_thread[0].dl_ch_estimates[2][0][0]),
 			(6
 			 * (PHY_vars_UE_g[0][0]->frame_parms.ofdm_symbol_size)),
 			1, 1);
-	  write_output ("pbch_rxF_comp0.m",
+	  LOG_M ("pbch_rxF_comp0.m",
 			"pbch_comp0",
 			PHY_vars_UE_g[0][0]->pbch_vars[0]->rxdataF_comp[0],
 			6 * 12 * 4, 1, 1);
-	  write_output ("pbch_rxF_llr.m", "pbch_llr",
+	  LOG_M ("pbch_rxF_llr.m", "pbch_llr",
 			PHY_vars_UE_g[0][0]->pbch_vars[0]->llr,
 			(PHY_vars_UE_g[0][0]->frame_parms.Ncp == 0) ? 1920 : 1728, 1,
 			4);
@@ -870,7 +870,7 @@ l2l1_task (void *args_p)
 	) {
       sprintf (fname, "UEtxsig%d.m", frame % MAX_FRAME_NUMBER);
       sprintf (vname, "txs%d", frame % MAX_FRAME_NUMBER);
-      write_output (fname,
+      LOG_M (fname,
 		    vname,
 		    PHY_vars_UE_g[0][0]->common_vars.txdata[0],
 		    PHY_vars_UE_g[0][0]->frame_parms.samples_per_tti
@@ -878,7 +878,7 @@ l2l1_task (void *args_p)
 		    1, 1);
       sprintf (fname, "eNBtxsig%d.m", frame % MAX_FRAME_NUMBER);
       sprintf (vname, "txs%d", frame % MAX_FRAME_NUMBER);
-      write_output (fname,
+      LOG_M (fname,
 		    vname,
 		    PHY_vars_eNB_g[0][0]->common_vars.txdata[0][0],
 		    PHY_vars_UE_g[0][0]->frame_parms.samples_per_tti
@@ -886,7 +886,7 @@ l2l1_task (void *args_p)
 		    1, 1);
       sprintf (fname, "eNBtxsigF%d.m", frame % MAX_FRAME_NUMBER);
       sprintf (vname, "txsF%d", frame % MAX_FRAME_NUMBER);
-      write_output (fname,
+      LOG_M (fname,
 		    vname,
 		    PHY_vars_eNB_g[0][0]->common_vars.txdataF[0][0],
 		    PHY_vars_eNB_g[0][0]->frame_parms.symbols_per_tti
@@ -894,7 +894,7 @@ l2l1_task (void *args_p)
 		    1, 1);
       sprintf (fname, "UErxsig%d.m", frame % MAX_FRAME_NUMBER);
       sprintf (vname, "rxs%d", frame % MAX_FRAME_NUMBER);
-      write_output (fname,
+      LOG_M (fname,
 		    vname,
 		    PHY_vars_UE_g[0][0]->common_vars.rxdata[0],
 		    PHY_vars_UE_g[0][0]->frame_parms.samples_per_tti
@@ -902,7 +902,7 @@ l2l1_task (void *args_p)
 		    1, 1);
       sprintf (fname, "eNBrxsig%d.m", frame % MAX_FRAME_NUMBER);
       sprintf (vname, "rxs%d", frame % MAX_FRAME_NUMBER);
-      write_output (fname,
+      LOG_M (fname,
 		    vname,
 		    PHY_vars_eNB_g[0][0]->common_vars.rxdata[0][0],
 		    PHY_vars_UE_g[0][0]->frame_parms.samples_per_tti
diff --git a/targets/SIMU/USER/oaisim_functions.c b/targets/SIMU/USER/oaisim_functions.c
index a302c12ff327e3bef62371db9da1f88b1632e6db..3bc180a014c2495630173dc6fd8e8ad80e42298f 100644
--- a/targets/SIMU/USER/oaisim_functions.c
+++ b/targets/SIMU/USER/oaisim_functions.c
@@ -1562,33 +1562,6 @@ void update_otg_eNB(module_id_t enb_module_idP, unsigned int ctime)
   }
 
 #else
-#if 0 //  defined(EXMIMO) || defined(OAI_USRP)
-  if (otg_enabled==1) {
-    ctime = frame * 100;
-
-    for (dst_id = 0; dst_id < MAX_MOBILES_PER_ENB; dst_id++) {
-      if (mac_get_rrc_status(eNB_index, eNB_flag, dst_id ) > 2) {
-        otg_pkt = malloc (sizeof(Packet_otg_elt_t));
-        (otg_pkt->otg_pkt).sdu_buffer = packet_gen(module_instP, dst_id, ctime, &pkt_size);
-
-        if (otg_pkt != NULL) {
-          rb_id = DTCH-2;
-          (otg_pkt->otg_pkt).rb_id     = rb_id;
-          (otg_pkt->otg_pkt).module_id = module_idP;
-          (otg_pkt->otg_pkt).is_ue     = FALSE;
-          (otg_pkt->otg_pkt).mode      = PDCP_TRANSMISSION_MODE_DATA;
-          //Adding the packet to the OTG-PDCP buffer
-          pkt_list_add_tail_eurecom(otg_pkt, &(otg_pdcp_buffer[module_idP]));
-          LOG_D(EMU, "[eNB %d] ADD pkt to OTG buffer for dst %d on rb_id %d\n", (otg_pkt->otg_pkt).module_id, (otg_pkt->otg_pkt).dst_id,(otg_pkt->otg_pkt).rb_id);
-        } else {
-          //LOG_I(EMU, "OTG returns null \n");
-          free(otg_pkt);
-          otg_pkt=NULL;
-        }
-      }
-    }
-  }
-#endif
 }
 
 void update_otg_UE(module_id_t ue_mod_idP, unsigned int ctime)
diff --git a/targets/SIMU/USER/oaisim_pad.c b/targets/SIMU/USER/oaisim_pad.c
index 1f251de581cd666e5a00877a47bbc8e93696793d..acb4adb691a938ca3c3ea73162040b1531fa3a5f 100644
--- a/targets/SIMU/USER/oaisim_pad.c
+++ b/targets/SIMU/USER/oaisim_pad.c
@@ -858,18 +858,18 @@ void run(int argc, char *argv[])
     if ((last_slot == 1) && (frame == 0)
         && (abstraction_flag == 0) && (oai_emulation.info.n_frames == 1)) {
 
-      write_output ("dlchan0.m", "dlch0",
+      LOG_M ("dlchan0.m", "dlch0",
                     &(PHY_vars_UE_g[0]->lte_ue_common_vars.common_vars_rx_data_per_thread[subframe&0x1].dl_ch_estimates[0][0][0]),
                     (6 * (PHY_vars_UE_g[0]->lte_frame_parms.ofdm_symbol_size)), 1, 1);
-      write_output ("dlchan1.m", "dlch1",
+      LOG_M ("dlchan1.m", "dlch1",
                     &(PHY_vars_UE_g[0]->lte_ue_common_vars.common_vars_rx_data_per_thread[subframe&0x1].dl_ch_estimates[1][0][0]),
                     (6 * (PHY_vars_UE_g[0]->lte_frame_parms.ofdm_symbol_size)), 1, 1);
-      write_output ("dlchan2.m", "dlch2",
+      LOG_M ("dlchan2.m", "dlch2",
                     &(PHY_vars_UE_g[0]->lte_ue_common_vars.common_vars_rx_data_per_thread[subframe&0x1].dl_ch_estimates[2][0][0]),
                     (6 * (PHY_vars_UE_g[0]->lte_frame_parms.ofdm_symbol_size)), 1, 1);
-      write_output ("pbch_rxF_comp0.m", "pbch_comp0",
+      LOG_M ("pbch_rxF_comp0.m", "pbch_comp0",
                     PHY_vars_UE_g[0]->lte_ue_pbch_vars[0]->rxdataF_comp[0], 6 * 12 * 4, 1, 1);
-      write_output ("pbch_rxF_llr.m", "pbch_llr",
+      LOG_M ("pbch_rxF_llr.m", "pbch_llr",
                     PHY_vars_UE_g[0]->lte_ue_pbch_vars[0]->llr, (frame_parms->Ncp == 0) ? 1920 : 1728, 1, 4);
     }
 
@@ -912,14 +912,14 @@ void run(int argc, char *argv[])
       oai_emulation.info.time_s += 0.01;
 
       if ((frame>=1)&&(frame<=9)&&(abstraction_flag==0)) {
-        write_output("UEtxsig0.m","txs0", PHY_vars_UE_g[0]->lte_ue_common_vars.txdata[0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+        LOG_M("UEtxsig0.m","txs0", PHY_vars_UE_g[0]->lte_ue_common_vars.txdata[0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
         sprintf(fname,"eNBtxsig%d.m",frame);
         sprintf(vname,"txs%d",frame);
-        write_output(fname,vname, PHY_vars_eNB_g[0]->lte_eNB_common_vars.txdata[0][0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
-        write_output("eNBtxsigF0.m","txsF0",PHY_vars_eNB_g[0]->lte_eNB_common_vars.txdataF[0][0],PHY_vars_eNB_g[0]->lte_frame_parms.symbols_per_tti*PHY_vars_eNB_g[0]->lte_frame_parms.ofdm_symbol_size,1,1);
+        LOG_M(fname,vname, PHY_vars_eNB_g[0]->lte_eNB_common_vars.txdata[0][0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+        LOG_M("eNBtxsigF0.m","txsF0",PHY_vars_eNB_g[0]->lte_eNB_common_vars.txdataF[0][0],PHY_vars_eNB_g[0]->lte_frame_parms.symbols_per_tti*PHY_vars_eNB_g[0]->lte_frame_parms.ofdm_symbol_size,1,1);
 
-        write_output("UErxsig0.m","rxs0", PHY_vars_UE_g[0]->lte_ue_common_vars.rxdata[0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
-        write_output("eNBrxsig0.m","rxs0", PHY_vars_eNB_g[0]->lte_eNB_common_vars.rxdata[0][0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+        LOG_M("UErxsig0.m","rxs0", PHY_vars_UE_g[0]->lte_ue_common_vars.rxdata[0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
+        LOG_M("eNBrxsig0.m","rxs0", PHY_vars_eNB_g[0]->lte_eNB_common_vars.rxdata[0][0],FRAME_LENGTH_COMPLEX_SAMPLES,1,1);
       }
 
 #ifdef XFORMS
diff --git a/targets/TEST/PDCP/test_pdcp.c b/targets/TEST/PDCP/test_pdcp.c
index b07add73a6573048f13704601d039932f087fc19..a999bb254dfcbd80184740ebb694ad907b0fcd85 100644
--- a/targets/TEST/PDCP/test_pdcp.c
+++ b/targets/TEST/PDCP/test_pdcp.c
@@ -248,15 +248,12 @@ BOOL test_pdcp_data_req(void)
        * XXX mem_block_t doesn't hold buffer size, how do we keep the size
        * information if we pass mem_block_ts via a linked list?
        */
-#if 0
 
       if (pdcp_test_pdu_buffer_size == 0 || pdcp_test_pdu_buffer == NULL) {
         msg("[TEST] PDU created by pdcp_data_req() is invalid!\n");
         return FALSE;
       }
 
-#endif
-
       /*
        * Serialize incoming mem_block_t into an unsigned character array
        * and add removed PDU to RX list in order to use it in the next test