diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
deleted file mode 100644
index 0dc8d3051bada4d83961684d22ea99a56b2fb4c6..0000000000000000000000000000000000000000
--- a/.gitlab-ci.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-job1:
-  script:
-    - date
-    - pwd
-    - echo $OAI_TEST_CASE_GROUP
-    - echo $MACHINELIST
-    - echo $MACHINELISTGENERIC
-    - echo $RESULT_DIR
-    - echo $NRUNS_LTE_SOFTMODEM
-    - source oaienv
-    - rm -rf cmake_targets/autotests/log
-    - mkdir cmake_targets/autotests/log
-    - cd cmake_targets/autotests/v2
-    - python main.py
-    - date
-  only:
-    - triggers
diff --git a/README.txt b/README.txt
index edd233830fb125cb581eeaf5092311fee5cfed16..aec938c0d341e147599279c7c3a315d1aee63fd3 100644
--- a/README.txt
+++ b/README.txt
@@ -9,26 +9,36 @@ Please see NOTICE.txt for third party software that is included in the sources.
 The OpenAirInterface (OAI) software is composed of the following parts: 
 
 openairinterface5g
-├── cmake_targets: build utilities to compile (simulation, emulation and real-time platforms), and generated build files
-├── common : some common OAI utilities, other tools can be found at openair2/UTILS
+├── ci-scripts: Meta-scripts used by the OSA CI process. Contains also configuration files used day-to-day by CI.
+├── cmake_targets: Build utilities to compile (simulation, emulation and real-time platforms), and generated build files
+├── common : Some common OAI utilities, other tools can be found at openair2/UTILS
+├── doc : Contains an up-to-date feature set list
 ├── LICENSE
-├── maketags : script to generate emacs tags
-├── openair1 : 3GPP LTE Rel-10 PHY layer + PHY RF simulation and a subset of Rel 12 Features.
-├── openair2 :3GPP LTE Rel-10 RLC/MAC/PDCP/RRC/X2AP implementation. 
+├── maketags : Script to generate emacs tags
+├── nfapi : Contains the NFAPI code. A local Readme file provides more details.
+├── openair1 : 3GPP LTE Rel-10/12 PHY layer + PHY RF simulation. A local Readme file provides more details.
+├── openair2 : 3GPP LTE Rel-10 RLC/MAC/PDCP/RRC/X2AP implementation. 
+    ├── COMMON
+    ├── DOCS
+    ├── ENB_APP
     ├── LAYER2/RLC/ with the following subdirectories: UM_v9.3.0, TM_v9.3.0, and AM_v9.3.0. 
-    ├── LAYER2/PDCP/PDCP_v10.1.0. 
-    ├── RRC/LITE
+    ├── LAYER2/PDCP/PDCP_v10.1.0.
+    ├── NETWORK_DRIVER
     ├── PHY_INTERFACE
+    ├── RRC/LITE
+    ├── UTIL
     ├── X2AP
-    ├── ENB_APP 
 ├── openair3: 3GPP LTE Rel10 for S1AP, NAS GTPV1-U for both ENB and UE.
+    ├── COMMON
+    ├── DOCS
     ├── GTPV1-U
-    ├── NAS 
+    ├── NAS
     ├── S1AP
     ├── SCTP
     ├── SECU
     ├── UDP
-└── targets: top level wrapper for unitary simulation for PHY channels, system-level emulation (eNB-UE with and without S1), and realtime eNB and UE and RRH GW.
+    ├── UTILS
+└── targets: Top-level wrappers for unitary simulation for PHY channels, system-level emulation (eNB-UE with and without S1), and realtime eNB and UE and RRH GW.
 
 
 RELEASE NOTES:
@@ -44,3 +54,10 @@ v0.6 -> RRH functionality, UE greatly improved, better TDD support,
         a lot of bugs fixed. WARNING: oaisim in PHY abstraction mode does not
         work, you need to use v0.5.2 for that.
 v0.6.1 -> Mostly bugfixes. This is the last version without NFAPI.
+v1.0.0 -> January 2019. This version first implements the architectural split described in doc/oai_lte_enb_func_split_arch.png picture.
+            Only FAPI, nFAPI and IF4.5 interfaces are implemented.
+            Repository tree structure prepares future integrations of features such as LTE-M, nbIOT or 5G-NR.
+            Preliminary X2 support has been implemented.
+            S1-flex has been introduced.
+            New tools: config library, telnet server, ...
+            A lot of bugfixes and a proper automated Continuous Integration process validates contributions.
diff --git a/ci-scripts/Jenkinsfile-gitlab b/ci-scripts/Jenkinsfile-gitlab
index 0d9f37ed24b6c037c569c1ab243c4a95e7be4714..fc0290fc44c2a03ed428511fb067b86c16ace0aa 100644
--- a/ci-scripts/Jenkinsfile-gitlab
+++ b/ci-scripts/Jenkinsfile-gitlab
@@ -41,7 +41,7 @@ pipeline {
         disableConcurrentBuilds()
         timestamps()
         gitLabConnection('OAI GitLab')
-        gitlabBuilds(builds: ["Build eNb-USRP", "Build basic-sim", "Build phy-sim", "Build eNb-ethernet", "Build UE-ethernet", "Analysis with cppcheck", "Test phy-sim", "Test basic-sim", "Test-FDD-Band7", "Test-TDD-Band40", "Test-IF4p5-FDD-Band7", "Test-IF4p5-TDD-Band40"])
+        gitlabBuilds(builds: ["Build eNb-USRP", "Build basic-sim", "Build phy-sim", "Build eNb-ethernet", "Build UE-ethernet", "Analysis with cppcheck", "Test phy-sim", "Test basic-sim", "Test L2-sim", "Test-FDD-Band7", "Test-TDD-Band40", "Test-IF4p5-FDD-Band7", "Test-IF4p5-TDD-Band40"])
         ansiColor('xterm')
     }
 
@@ -166,6 +166,14 @@ pipeline {
             }
         }
 
+        stage ("Start VM -- L2-Sim") {
+            steps {
+                timeout (time: 5, unit: 'MINUTES') {
+                    sh "./ci-scripts/oai-ci-vm-tool build --workspace $WORKSPACE --variant l2-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID} --daemon"
+                }
+            }
+        }
+
         stage ("Start VM -- phy-sim") {
             steps {
                 timeout (time: 5, unit: 'MINUTES') {
@@ -215,7 +223,7 @@ pipeline {
                     steps {
                         gitlabCommitStatus(name: "Build eNb-ethernet") {
                             timeout (time: 20, unit: 'MINUTES') {
-                                sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant enb-ethernet --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive"
+                                sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant enb-ethernet --job-name ${JOB_NAME} --build-id ${BUILD_ID}"
                             }
                         }
                     }
@@ -224,11 +232,20 @@ pipeline {
                     steps {
                         gitlabCommitStatus(name: "Build UE-ethernet") {
                             timeout (time: 20, unit: 'MINUTES') {
-                                sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant ue-ethernet --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive"
+                                sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant ue-ethernet --job-name ${JOB_NAME} --build-id ${BUILD_ID}"
                             }
                         }
                     }
                 }
+                stage ("Build L2-Simulator-eNB") {
+                    steps {
+                        //gitlabCommitStatus(name: "Build UE-ethernet") {
+                            timeout (time: 20, unit: 'MINUTES') {
+                                sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant l2-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive"
+                            }
+                        //}
+                    }
+                }
                 stage ("Build physical simulators") {
                     steps {
                         gitlabCommitStatus(name: "Build phy-sim") {
@@ -313,6 +330,15 @@ pipeline {
                         }
                     }
                 }
+                stage ("Test L2 simulator") {
+                    steps {
+                        gitlabCommitStatus(name: "Test L2-sim") {
+                            timeout (time: 30, unit: 'MINUTES') {
+                                sh "./ci-scripts/oai-ci-vm-tool test --workspace $WORKSPACE --variant l2-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID}"
+                            }
+                        }
+                    }
+                }
                 stage ("Build Flexran Controller") {
                     when {
                         expression {doFlexranCtrlTest}
@@ -508,7 +534,7 @@ pipeline {
                 always {
                     script {
                         dir ('archives') {
-                            sh "if [ -d basic_sim/test ] || [ -d phy_sim/test ]; then zip -r -qq vm_tests_logs.zip */test ; fi"
+                            sh "if [ -d basic_sim/test ] || [ -d phy_sim/test ] || [ -d l2_sim/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'
diff --git a/ci-scripts/conf_files/rcc.band7.tm1.nfapi.conf b/ci-scripts/conf_files/rcc.band7.tm1.nfapi.conf
new file mode 100644
index 0000000000000000000000000000000000000000..c2a86f079e983672a2fcf8949e211d6862d00b94
--- /dev/null
+++ b/ci-scripts/conf_files/rcc.band7.tm1.nfapi.conf
@@ -0,0 +1,236 @@
+Active_eNBs = ( "eNB-Eurecom-LTEBox");
+# Asn1_verbosity, choice in: none, info, annoying
+Asn1_verbosity = "none";
+
+eNBs =
+(
+ {
+    ////////// Identification parameters:
+    eNB_ID    =  0xe00;
+
+    cell_type =  "CELL_MACRO_ENB";
+
+    eNB_name  =  "eNB-Eurecom-LTEBox";
+
+    // Tracking area code, 0x0000 and 0xfffe are reserved values
+    tracking_area_code = 1;
+
+    plmn_list = ( { mcc = 208; mnc = 93; mnc_length = 2; } );
+
+    tr_s_preference     = "local_mac"
+
+    ////////// Physical parameters:
+
+    component_carriers = (
+      {
+      node_function             = "3GPP_eNODEB";
+      node_timing               = "synch_to_ext_device";
+      node_synch_ref            = 0;
+      frame_type					      = "FDD";
+      tdd_config 					      = 3;
+      tdd_config_s            			      = 0;
+      prefix_type             			      = "NORMAL";
+      eutra_band              			      = 7;
+      downlink_frequency      			      = 2685000000L;
+      uplink_frequency_offset 			      = -120000000;
+      Nid_cell					      = 0;
+      N_RB_DL                 			      = 50;
+      Nid_cell_mbsfn          			      = 0;
+      nb_antenna_ports                                = 1;
+      nb_antennas_tx          			      = 1;
+      nb_antennas_rx          			      = 1;
+      tx_gain                                            = 90;
+      rx_gain                                            = 125;
+      pbch_repetition                                 = "FALSE";
+      prach_root              			      = 0;
+      prach_config_index      			      = 0;
+      prach_high_speed        			      = "DISABLE";
+      prach_zero_correlation  			      = 1;
+      prach_freq_offset       			      = 2;
+      pucch_delta_shift       			      = 1;
+      pucch_nRB_CQI           			      = 0;
+      pucch_nCS_AN            			      = 0;
+      pucch_n1_AN             			      = 0;
+      pdsch_referenceSignalPower 			      = -27;
+      pdsch_p_b                  			      = 0;
+      pusch_n_SB                 			      = 1;
+      pusch_enable64QAM          			      = "DISABLE";
+      pusch_hoppingMode                                  = "interSubFrame";
+      pusch_hoppingOffset                                = 0;
+      pusch_groupHoppingEnabled  			      = "ENABLE";
+      pusch_groupAssignment      			      = 0;
+      pusch_sequenceHoppingEnabled		   	      = "DISABLE";
+      pusch_nDMRS1                                       = 1;
+      phich_duration                                     = "NORMAL";
+      phich_resource                                     = "ONESIXTH";
+      srs_enable                                         = "DISABLE";
+      /*  srs_BandwidthConfig                                =;
+      srs_SubframeConfig                                 =;
+      srs_ackNackST                                      =;
+      srs_MaxUpPts                                       =;*/
+
+      pusch_p0_Nominal                                   = -96;
+      pusch_alpha                                        = "AL1";
+      pucch_p0_Nominal                                   = -104;
+      msg3_delta_Preamble                                = 6;
+      pucch_deltaF_Format1                               = "deltaF2";
+      pucch_deltaF_Format1b                              = "deltaF3";
+      pucch_deltaF_Format2                               = "deltaF0";
+      pucch_deltaF_Format2a                              = "deltaF0";
+      pucch_deltaF_Format2b		    	      = "deltaF0";
+
+      rach_numberOfRA_Preambles                          = 64;
+      rach_preamblesGroupAConfig                         = "DISABLE";
+      /*
+      rach_sizeOfRA_PreamblesGroupA                      = ;
+      rach_messageSizeGroupA                             = ;
+      rach_messagePowerOffsetGroupB                      = ;
+      */
+      rach_powerRampingStep                              = 4;
+      rach_preambleInitialReceivedTargetPower            = -108;
+      rach_preambleTransMax                              = 10;
+      rach_raResponseWindowSize                          = 10;
+      rach_macContentionResolutionTimer                  = 48;
+      rach_maxHARQ_Msg3Tx                                = 4;
+
+      pcch_default_PagingCycle                           = 128;
+      pcch_nB                                            = "oneT";
+      bcch_modificationPeriodCoeff			      = 2;
+      ue_TimersAndConstants_t300			      = 1000;
+      ue_TimersAndConstants_t301			      = 1000;
+      ue_TimersAndConstants_t310			      = 1000;
+      ue_TimersAndConstants_t311			      = 10000;
+      ue_TimersAndConstants_n310			      = 20;
+      ue_TimersAndConstants_n311			      = 1;
+      ue_TransmissionMode                                    = 1;
+
+      //Parameters for SIB18
+      rxPool_sc_CP_Len                                       = "normal";
+      rxPool_sc_Period                                       = "sf40";
+      rxPool_data_CP_Len                                     = "normal";
+      rxPool_ResourceConfig_prb_Num                          = 20;
+      rxPool_ResourceConfig_prb_Start                        = 5;
+      rxPool_ResourceConfig_prb_End                          = 44;
+      rxPool_ResourceConfig_offsetIndicator_present          = "prSmall";
+      rxPool_ResourceConfig_offsetIndicator_choice           = 0;
+      rxPool_ResourceConfig_subframeBitmap_present           = "prBs40";
+      rxPool_ResourceConfig_subframeBitmap_choice_bs_buf              = "00000000000000000000";
+      rxPool_ResourceConfig_subframeBitmap_choice_bs_size             = 5;
+      rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused      = 0;
+/*    rxPool_dataHoppingConfig_hoppingParameter                       = 0;
+      rxPool_dataHoppingConfig_numSubbands                            = "ns1";
+      rxPool_dataHoppingConfig_rbOffset                               = 0;
+      rxPool_commTxResourceUC-ReqAllowed                              = "TRUE";
+*/
+      // Parameters for SIB19
+      discRxPool_cp_Len                                               = "normal"
+      discRxPool_discPeriod                                           = "rf32"
+      discRxPool_numRetx                                              = 1;
+      discRxPool_numRepetition                                        = 2;
+      discRxPool_ResourceConfig_prb_Num                               = 5;
+      discRxPool_ResourceConfig_prb_Start                             = 3;
+      discRxPool_ResourceConfig_prb_End                               = 21;
+      discRxPool_ResourceConfig_offsetIndicator_present               = "prSmall";
+      discRxPool_ResourceConfig_offsetIndicator_choice                = 0;
+      discRxPool_ResourceConfig_subframeBitmap_present                = "prBs40";
+      discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf          = "f0ffffffff";
+      discRxPool_ResourceConfig_subframeBitmap_choice_bs_size         = 5;
+      discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused  = 0;
+
+      }
+    );
+
+
+    srb1_parameters :
+    {
+        # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
+        timer_poll_retransmit    = 80;
+
+        # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
+        timer_reordering         = 35;
+
+        # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
+        timer_status_prohibit    = 0;
+
+        # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
+        poll_pdu                 =  4;
+
+        # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
+        poll_byte                =  99999;
+
+        # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
+        max_retx_threshold       =  4;
+    }
+
+    # ------- SCTP definitions
+    SCTP :
+    {
+        # Number of streams to use in input/output
+        SCTP_INSTREAMS  = 2;
+        SCTP_OUTSTREAMS = 2;
+    };
+
+
+    ////////// MME parameters:
+    mme_ip_address      = ( { ipv4       = "CI_MME_IP_ADDR";
+                              ipv6       = "192:168:30::17";
+                              active     = "yes";
+                              preference = "ipv4";
+                            }
+                          );
+
+    NETWORK_INTERFACES :
+    {
+        ENB_INTERFACE_NAME_FOR_S1_MME            = "ens3";
+        ENB_IPV4_ADDRESS_FOR_S1_MME              = "CI_ENB_IP_ADDR";
+        ENB_INTERFACE_NAME_FOR_S1U               = "ens3";
+        ENB_IPV4_ADDRESS_FOR_S1U                 = "CI_ENB_IP_ADDR";
+        ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "CI_ENB_IP_ADDR";
+        ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
+        
+    };
+  }
+);
+
+MACRLCs = (
+	{
+	num_cc = 1;
+      	local_s_if_name  = "lo:";			  
+      	remote_s_address = "127.0.0.1";
+    	local_s_address  = "127.0.0.2"; 
+    	local_s_portc    = 50001;	
+    	remote_s_portc   = 50000;
+    	local_s_portd    = 50011;	
+    	remote_s_portd   = 50010;
+	tr_s_preference = "nfapi";
+	tr_n_preference = "local_RRC";
+        }  
+);
+
+THREAD_STRUCT = (
+  {
+    #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
+    parallel_config    = "PARALLEL_RU_L1_TRX_SPLIT";
+    #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
+    worker_config      = "WORKER_ENABLE";
+  }
+);
+
+log_config =
+    {
+      global_log_level                      ="info";
+      global_log_verbosity                  ="medium";
+      hw_log_level                          ="info";
+      hw_log_verbosity                      ="medium";
+      phy_log_level                         ="info";
+      phy_log_verbosity                     ="medium";
+      mac_log_level                         ="info";
+      mac_log_verbosity                     ="high";
+      rlc_log_level                         ="info";
+      rlc_log_verbosity                     ="medium";
+      pdcp_log_level                        ="info";
+      pdcp_log_verbosity                    ="medium";
+      rrc_log_level                         ="info";
+      rrc_log_verbosity                     ="medium";
+   };
diff --git a/ci-scripts/conf_files/ue.nfapi.conf b/ci-scripts/conf_files/ue.nfapi.conf
new file mode 100644
index 0000000000000000000000000000000000000000..ea0236cab4e97b640b0c8ac17601ccb184c22c25
--- /dev/null
+++ b/ci-scripts/conf_files/ue.nfapi.conf
@@ -0,0 +1,44 @@
+log_config = {
+  global_log_level                      ="info";
+  global_log_verbosity                  ="medium";
+  hw_log_level                          ="info";
+  hw_log_verbosity                      ="medium";
+  phy_log_level                         ="info";
+  phy_log_verbosity                     ="medium";
+  mac_log_level                         ="info";
+  mac_log_verbosity                     ="medium";
+  rlc_log_level                         ="info";
+  rlc_log_verbosity                     ="medium";
+  pdcp_log_level                        ="info";
+  pdcp_log_verbosity                    ="medium";
+  rrc_log_level                         ="info";
+  rrc_log_verbosity                     ="full";
+};
+
+
+L1s = (
+    	{
+	num_cc = 1;
+	tr_n_preference = "nfapi";
+    	local_n_if_name  = "lo";
+      	remote_n_address = "127.0.0.2";
+    	local_n_address  = "127.0.0.1";
+    	local_n_portc    = 50000;
+    	remote_n_portc   = 50001;
+    	local_n_portd    = 50010;
+    	remote_n_portd   = 50011;
+        }  
+);
+
+RUs = (
+    {		  
+       local_rf       = "yes"
+       nb_tx          = 1
+       nb_rx          = 1
+       att_tx         = 90
+       att_rx         = 0;
+       bands          = [7,38,42,43];
+       max_pdschReferenceSignalPower = -27;
+       max_rxgain                    = 125;
+    }		      
+);
diff --git a/ci-scripts/main.py b/ci-scripts/main.py
index 23e51960ca23a662742a0ce5e5bda357211ae848..62add8429b754f3e08cb04ce4e7c4da200258075 100644
--- a/ci-scripts/main.py
+++ b/ci-scripts/main.py
@@ -214,7 +214,7 @@ class SSHConnection():
 		copy_status = False
 		logging.debug('scp '+ username + '@' + ipaddress + ':' + source + ' ' + destination)
 		while count < 10:
-			scp_spawn = pexpect.spawn('scp '+ username + '@' + ipaddress + ':' + source + ' ' + destination, timeout = 5)
+			scp_spawn = pexpect.spawn('scp '+ username + '@' + ipaddress + ':' + source + ' ' + destination, timeout = 100)
 			scp_response = scp_spawn.expect(['Are you sure you want to continue connecting (yes/no)?', 'password:', pexpect.EOF, pexpect.TIMEOUT])
 			if scp_response == 0:
 				scp_spawn.sendline('yes')
@@ -253,7 +253,7 @@ class SSHConnection():
 		copy_status = False
 		logging.debug('scp ' + source + ' ' + username + '@' + ipaddress + ':' + destination)
 		while count < 4:
-			scp_spawn = pexpect.spawn('scp ' + source + ' ' + username + '@' + ipaddress + ':' + destination, timeout = 5)
+			scp_spawn = pexpect.spawn('scp ' + source + ' ' + username + '@' + ipaddress + ':' + destination, timeout = 100)
 			scp_response = scp_spawn.expect(['Are you sure you want to continue connecting (yes/no)?', 'password:', pexpect.EOF, pexpect.TIMEOUT])
 			if scp_response == 0:
 				scp_spawn.sendline('yes')
@@ -1977,8 +1977,8 @@ class SSHConnection():
 		if result is not None:
 			self.eNBKernelVersion = result.group('kernel_version')
 			logging.debug('Kernel Version is: ' + self.eNBKernelVersion)
-		self.command('dpkg --list | egrep --color=never uhd-host', '\$', 5)
-		result = re.search('uhd-host *(?P<uhd_version>[0-9\.]+)', str(self.ssh.before))
+		self.command('dpkg --list | egrep --color=never libuhd003', '\$', 5)
+		result = re.search('libuhd003:amd64 *(?P<uhd_version>[0-9\.]+)', str(self.ssh.before))
 		if result is not None:
 			self.eNBUhdVersion = result.group('uhd_version')
 			logging.debug('UHD Version is: ' + self.eNBUhdVersion)
diff --git a/ci-scripts/oai-ci-vm-tool b/ci-scripts/oai-ci-vm-tool
index 8bf7853d0ce1ab7516cb4a4e3efd4b66d1b60309..6e0a83e07dcde0b825e5a04f191b99ff362750b0 100755
--- a/ci-scripts/oai-ci-vm-tool
+++ b/ci-scripts/oai-ci-vm-tool
@@ -40,6 +40,7 @@ function variant_usage {
     echo "    --variant cppcheck     OR -v4"
     echo "    --variant enb-ethernet OR -v7"
     echo "    --variant ue-ethernet  OR -v8"
+    echo "    --variant l2-sim       OR -v9"
     echo "    --variant flexran-rtc  OR -v10"
 }
 
@@ -285,6 +286,18 @@ case $key in
     NBARGS=$[$NBARGS+256]
     shift
     ;;
+    -v9)
+    VM_NAME=ci-l2-sim
+    VM_MEMORY=8192
+    VM_CPU=8
+    ARCHIVES_LOC=l2_sim
+    LOG_PATTERN=.Rel14.txt
+    NB_PATTERN_FILES=4
+    BUILD_OPTIONS="--eNB -t ETHERNET"
+    RUN_OPTIONS="complex"
+    NBARGS=$[$NBARGS+256]
+    shift
+    ;;
     -v10)
     VM_NAME=ci-flexran-rtc
     ARCHIVES_LOC=flexran
@@ -350,6 +363,17 @@ case $key in
         BUILD_OPTIONS="--UE -t ETHERNET --noS1"
         NBARGS=$[$NBARGS+256]
         ;;
+        l2-sim)
+        VM_NAME=ci-l2-sim
+        VM_MEMORY=8192
+        VM_CPU=8
+        ARCHIVES_LOC=l2_sim
+        LOG_PATTERN=.Rel14.txt
+        NB_PATTERN_FILES=4
+        BUILD_OPTIONS="--eNB -t ETHERNET"
+        RUN_OPTIONS="complex"
+        NBARGS=$[$NBARGS+256]
+        ;;
         flexran-rtc)
         VM_NAME=ci-flexran-rtc
         ARCHIVES_LOC=flexran
diff --git a/ci-scripts/reportTestLocally.sh b/ci-scripts/reportTestLocally.sh
index 60dcb1e421efe9442d3d75c615a73718ca248330..004e021de10b293912a5c37774a531d40bf5ca59 100755
--- a/ci-scripts/reportTestLocally.sh
+++ b/ci-scripts/reportTestLocally.sh
@@ -417,6 +417,130 @@ function report_test {
         echo "   </div>" >> ./test_simulator_results.html
     fi
 
+    ARCHIVES_LOC=archives/l2_sim/test
+    if [ -d $ARCHIVES_LOC ]
+    then
+        echo "   <h3>L2-NFAPI Simulator Check</h3>" >> ./test_simulator_results.html
+
+        if [ -f $ARCHIVES_LOC/test_final_status.log ]
+        then
+            if [ `grep -c TEST_OK $ARCHIVES_LOC/test_final_status.log` -eq 1 ]
+            then
+                echo "   <div class=\"alert alert-success\">" >> ./test_simulator_results.html
+                echo "      <strong>TEST was SUCCESSFUL <span class=\"glyphicon glyphicon-ok-circle\"></span></strong>" >> ./test_simulator_results.html
+                echo "   </div>" >> ./test_simulator_results.html
+            else
+                echo "   <div class=\"alert alert-danger\">" >> ./test_simulator_results.html
+                echo "      <strong>TEST was a FAILURE! <span class=\"glyphicon glyphicon-ban-circle\"></span></strong>" >> ./test_simulator_results.html
+                echo "   </div>" >> ./test_simulator_results.html
+            fi
+        else
+            echo "   <div class=\"alert alert-danger\">" >> ./test_simulator_results.html
+            echo "      <strong>COULD NOT DETERMINE TEST FINAL STATUS! <span class=\"glyphicon glyphicon-ban-circle\"></span></strong>" >> ./test_simulator_results.html
+            echo "   </div>" >> ./test_simulator_results.html
+        fi
+
+        echo "   <button data-toggle=\"collapse\" data-target=\"#oai-l2-sim-test-details\">More details on L2-NFAPI Simulator test results</button>" >> ./test_simulator_results.html
+        echo "   <div id=\"oai-l2-sim-test-details\" class=\"collapse\">" >> ./test_simulator_results.html
+        echo "   <table border = \"1\">" >> ./test_simulator_results.html
+        echo "      <tr bgcolor = \"#33CCFF\" >" >> ./test_simulator_results.html
+        echo "        <th>Log File Name</th>" >> ./test_simulator_results.html
+        echo "        <th>Command</th>" >> ./test_simulator_results.html
+        echo "        <th>Status</th>" >> ./test_simulator_results.html
+        echo "        <th>Statistics</th>" >> ./test_simulator_results.html
+        echo "      </tr>" >> ./test_simulator_results.html
+
+        TRANS_MODES=("fdd")
+        BW_CASES=(05)
+        for TMODE in ${TRANS_MODES[@]}
+        do
+            for BW in ${BW_CASES[@]}
+            do
+                ENB_LOG=$ARCHIVES_LOC/${TMODE}_${BW}MHz_enb.log
+                UE_LOG=`echo $ENB_LOG | sed -e "s#enb#ue#"`
+                if [ -f $ENB_LOG ] && [ -f $UE_LOG ]
+                then
+                    NAME_ENB=`echo $ENB_LOG | sed -e "s#$ARCHIVES_LOC/##"`
+                    NAME_UE=`echo $UE_LOG | sed -e "s#$ARCHIVES_LOC/##"`
+                    echo "      <tr>" >> ./test_simulator_results.html
+                    echo "        <td>$NAME_ENB --- $NAME_UE</td>" >> ./test_simulator_results.html
+                    echo "        <td>N/A</td>" >> ./test_simulator_results.html
+                    NB_ENB_GOT_SYNC=`egrep -c "got sync" $ENB_LOG`
+                    NB_UE_GOT_SYNC=`egrep -c "got sync" $UE_LOG`
+                    NB_ENB_SYNCED_WITH_UE=`egrep -c "Sending NFAPI_START_RESPONSE" $UE_LOG`
+                    if [ $NB_ENB_GOT_SYNC -eq 1 ] && [ $NB_UE_GOT_SYNC -eq 3 ] && [ $NB_ENB_SYNCED_WITH_UE -eq 1 ]
+                    then
+                        echo "        <td bgcolor = \"green\" >OK</td>" >> ./test_simulator_results.html
+                    else
+                        echo "        <td bgcolor = \"red\" >KO</td>" >> ./test_simulator_results.html
+                    fi
+                    echo "        <td><pre>" >> ./test_simulator_results.html
+                    if [ $NB_ENB_GOT_SYNC -eq 1 ]
+                    then
+                        echo "<font color = \"blue\">- eNB --> got sync</font>" >> ./test_simulator_results.html
+                    else
+                        echo "<font color = \"red\"><b>- eNB NEVER got sync</b></font>" >> ./test_simulator_results.html
+                    fi
+                    if [ $NB_UE_GOT_SYNC -eq 3 ]
+                    then
+                        echo "<font color = \"blue\">- UE --> got sync</font>" >> ./test_simulator_results.html
+                    else
+                        echo "<font color = \"red\"><b>- UE NEVER got sync</b></font>" >> ./test_simulator_results.html
+                    fi
+                    if [ $NB_ENB_SYNCED_WITH_UE -eq 1 ]
+                    then
+                        echo "<font color = \"blue\">- UE attached to eNB</font>" >> ./test_simulator_results.html
+                    else
+                        echo "<font color = \"red\"><b>- UE NEVER attached to eNB</b></font>" >> ./test_simulator_results.html
+                    fi
+                    echo "        </pre></td>" >> ./test_simulator_results.html
+                    echo "      </tr>" >> ./test_simulator_results.html
+                fi
+                PING_CASE=$ARCHIVES_LOC/${TMODE}_${BW}MHz_ping_epc.txt
+                if [ -f $PING_CASE ]
+                then
+                    echo "      <tr>" >> ./test_simulator_results.html
+                    NAME=`echo $PING_CASE | sed -e "s#$ARCHIVES_LOC/##"`
+                    echo "        <td>$NAME</td>" >> ./test_simulator_results.html
+                    CMD=`egrep "COMMAND IS" $PING_CASE | sed -e "s#COMMAND IS: ##"`
+                    echo "        <td>$CMD</td>" >> ./test_simulator_results.html
+                    FILE_COMPLETE=`egrep -c "ping statistics" $PING_CASE`
+                    if [ $FILE_COMPLETE -eq 0 ]
+                    then
+                        echo "        <td bgcolor = \"red\" >KO</td>" >> ./test_simulator_results.html
+                        echo "        <td>N/A</td>" >> ./test_simulator_results.html
+                    else
+                        NB_TR_PACKETS=`egrep "packets transmitted" $PING_CASE | sed -e "s# packets transmitted.*##"`
+                        NB_RC_PACKETS=`egrep "packets transmitted" $PING_CASE | sed -e "s#^.*packets transmitted, ##" -e "s# received,.*##"`
+                        if [ $NB_TR_PACKETS -eq $NB_RC_PACKETS ]
+                        then
+                            echo "        <td bgcolor = \"green\" >OK</td>" >> ./test_simulator_results.html
+                        else
+                            echo "        <td bgcolor = \"red\" >KO</td>" >> ./test_simulator_results.html
+                        fi
+                        echo "        <td>" >> ./test_simulator_results.html
+                        echo "            <pre>" >> ./test_simulator_results.html
+                        STATS=`egrep "packets transmitted" $PING_CASE | sed -e "s#^.*received, ##" -e "s#, time.*##" -e "s# packet loss##"`
+                        echo "Packet Loss : $STATS" >> ./test_simulator_results.html
+                        RTTMIN=`egrep "rtt min" $PING_CASE | awk '{split($4,a,"/"); print a[1] " " $5}'`
+                        echo "RTT Minimal : $RTTMIN" >> ./test_simulator_results.html
+                        RTTAVG=`egrep "rtt min" $PING_CASE | awk '{split($4,a,"/"); print a[2] " " $5}'`
+                        echo "RTT Average : $RTTAVG" >> ./test_simulator_results.html
+                        RTTMAX=`egrep "rtt min" $PING_CASE | awk '{split($4,a,"/"); print a[3] " " $5}'`
+                        echo "RTT Maximal : $RTTMAX" >> ./test_simulator_results.html
+                        echo "            </pre>" >> ./test_simulator_results.html
+                        echo "        </td>" >> ./test_simulator_results.html
+                    fi
+                    echo "      </tr>" >> ./test_simulator_results.html
+                fi
+
+            done
+        done
+
+        echo "   </table>" >> ./test_simulator_results.html
+        echo "   </div>" >> ./test_simulator_results.html
+    fi
+
     ARCHIVES_LOC=archives/phy_sim/test
     if [ -d $ARCHIVES_LOC ]
     then
diff --git a/ci-scripts/runTestOnVM.sh b/ci-scripts/runTestOnVM.sh
index bed46f0acefa478d2b34e49b8a79380e2e14610c..7ff04e23f89bdbab5583387a29a55cfc97c56810 100755
--- a/ci-scripts/runTestOnVM.sh
+++ b/ci-scripts/runTestOnVM.sh
@@ -148,6 +148,15 @@ function ping_ue_ip_addr {
     rm -f $1
 }
 
+function ping_epc_ip_addr {
+    echo "echo \"COMMAND IS: ping -I oip1 -c 20 $3\" > $4" > $1
+    echo "rm -f $4" >> $1
+    echo "ping -I oip1 -c 20 $3 | tee -a $4" >> $1
+    cat $1
+    ssh -o StrictHostKeyChecking=no ubuntu@$2 < $1
+    rm -f $1
+}
+
 function check_ping_result {
     local LOC_PING_FILE=$1
     local LOC_NB_PINGS=$2
@@ -157,16 +166,19 @@ function check_ping_result {
         if [ $FILE_COMPLETE -eq 0 ]
         then
             PING_STATUS=-1
+            echo "ping file incomplete"
         else
             local ALL_PACKET_RECEIVED=`egrep -c "$LOC_NB_PINGS received" $LOC_PING_FILE`
             if [ $ALL_PACKET_RECEIVED -eq 1 ]
             then
                 echo "got all ping packets"
             else
+                echo "got NOT all ping packets"
                 PING_STATUS=-1
             fi
         fi
     else
+        echo "ping file not present"
         PING_STATUS=-1
     fi
 }
@@ -280,17 +292,171 @@ function recover_core_dump {
     fi
 }
 
-function terminate_ltebox_epc {
-    echo "echo \"cd /opt/ltebox/tools\"" > $1
-    echo "cd /opt/ltebox/tools" >> $1
-    echo "echo \"sudo ./stop_ltebox\"" >> $1
-    echo "sudo ./stop_ltebox" >> $1
-    echo "echo \"sudo daemon --name=simulated_hss --stop\"" >> $1
-    echo "sudo daemon --name=simulated_hss --stop" >> $1
-    echo "echo \"sudo killall --signal SIGKILL hss_sim\"" >> $1
-    echo "sudo killall --signal SIGKILL hss_sim" >> $1
-    ssh -o StrictHostKeyChecking=no ubuntu@$2 < $1
-    rm $1
+function install_epc_on_vm {
+    local LOC_EPC_VM_NAME=$1
+    local LOC_EPC_VM_CMDS=$2
+
+    if [ -d /opt/ltebox-archives/ ]
+    then
+        # Checking if all ltebox archives are available to run ltebx epc on a brand new VM
+        if [ -f /opt/ltebox-archives/ltebox_2.2.70_16_04_amd64.deb ] && [ -f /opt/ltebox-archives/etc-conf.zip ] && [ -f /opt/ltebox-archives/hss-sim.zip ]
+        then
+            echo "############################################################"
+            echo "Test EPC on VM ($EPC_VM_NAME) will be using ltebox"
+            echo "############################################################"
+            LTEBOX=1
+        fi
+    fi
+    # Here we could have other types of EPC detection
+
+    # Do we need to start the EPC VM
+    echo "EPC_VM_CMD_FILE     = $LOC_EPC_VM_CMDS"
+    IS_EPC_VM_ALIVE=`uvt-kvm list | grep -c $LOC_EPC_VM_NAME`
+    if [ $IS_EPC_VM_ALIVE -eq 0 ]
+    then
+        echo "############################################################"
+        echo "Creating test EPC VM ($LOC_EPC_VM_NAME) on Ubuntu Cloud Image base"
+        echo "############################################################"
+        uvt-kvm create $LOC_EPC_VM_NAME release=xenial --unsafe-caching
+    fi
+
+    uvt-kvm wait $LOC_EPC_VM_NAME --insecure
+    local LOC_EPC_VM_IP_ADDR=`uvt-kvm ip $LOC_EPC_VM_NAME`
+    echo "$LOC_EPC_VM_NAME has for IP addr = $LOC_EPC_VM_IP_ADDR"
+    scp -o StrictHostKeyChecking=no /etc/apt/apt.conf.d/01proxy ubuntu@$LOC_EPC_VM_IP_ADDR:/home/ubuntu
+
+    # ltebox specific actions (install and start)
+    LTE_BOX_TO_INSTALL=1
+    if [ $LTEBOX -eq 1 ]
+    then
+        echo "ls -ls /opt/ltebox/tools/start_ltebox" > $LOC_EPC_VM_CMDS
+        RESPONSE=`ssh -o StrictHostKeyChecking=no ubuntu@$LOC_EPC_VM_IP_ADDR < $LOC_EPC_VM_CMDS`
+        NB_EXES=`echo $RESPONSE | grep -c ltebox`
+        if [ $NB_EXES -eq 1 ]; then LTE_BOX_TO_INSTALL=0; fi
+    fi
+
+    if [ $LTEBOX -eq 1 ] && [ $LTE_BOX_TO_INSTALL -eq 1 ]
+    then
+        echo "############################################################"
+        echo "Copying ltebox archives into EPC VM ($LOC_EPC_VM_NAME)" 
+        echo "############################################################"
+        scp -o StrictHostKeyChecking=no /opt/ltebox-archives/ltebox_2.2.70_16_04_amd64.deb ubuntu@$LOC_EPC_VM_IP_ADDR:/home/ubuntu
+        scp -o StrictHostKeyChecking=no /opt/ltebox-archives/etc-conf.zip ubuntu@$LOC_EPC_VM_IP_ADDR:/home/ubuntu
+        scp -o StrictHostKeyChecking=no /opt/ltebox-archives/hss-sim.zip ubuntu@$LOC_EPC_VM_IP_ADDR:/home/ubuntu
+
+        echo "############################################################"
+        echo "Install EPC on EPC VM ($LOC_EPC_VM_NAME)"
+        echo "############################################################"
+        echo "sudo cp 01proxy /etc/apt/apt.conf.d/" > $LOC_EPC_VM_CMDS
+        echo "touch /home/ubuntu/.hushlogin" >> $LOC_EPC_VM_CMDS
+        echo "echo \"sudo apt-get --yes --quiet install zip openjdk-8-jre libconfuse-dev libreadline-dev liblog4c-dev libgcrypt-dev libsctp-dev python2.7 python2.7-dev daemon iperf\"" >> $LOC_EPC_VM_CMDS
+        echo "sudo apt-get update > zip-install.txt 2>&1" >> $LOC_EPC_VM_CMDS
+        echo "sudo apt-get --yes install zip openjdk-8-jre libconfuse-dev libreadline-dev liblog4c-dev libgcrypt-dev libsctp-dev python2.7 python2.7-dev daemon iperf >> zip-install.txt 2>&1" >> $LOC_EPC_VM_CMDS
+
+        # Installing HSS
+        echo "echo \"cd /opt\"" >> $LOC_EPC_VM_CMDS
+        echo "cd /opt" >> $LOC_EPC_VM_CMDS
+        echo "echo \"sudo unzip -qq /home/ubuntu/hss-sim.zip\"" >> $LOC_EPC_VM_CMDS
+        echo "sudo unzip -qq /home/ubuntu/hss-sim.zip" >> $LOC_EPC_VM_CMDS
+        echo "echo \"cd /opt/hss_sim0609\"" >> $LOC_EPC_VM_CMDS
+        echo "cd /opt/hss_sim0609" >> $LOC_EPC_VM_CMDS
+
+        # Installing ltebox
+        echo "echo \"cd /home/ubuntu\"" >> $LOC_EPC_VM_CMDS
+        echo "cd /home/ubuntu" >> $LOC_EPC_VM_CMDS
+        echo "echo \"sudo dpkg -i ltebox_2.2.70_16_04_amd64.deb \"" >> $LOC_EPC_VM_CMDS
+        echo "sudo dpkg -i ltebox_2.2.70_16_04_amd64.deb >> zip-install.txt 2>&1" >> $LOC_EPC_VM_CMDS
+
+        echo "echo \"cd /opt/ltebox/etc/\"" >> $LOC_EPC_VM_CMDS
+        echo "cd /opt/ltebox/etc/" >> $LOC_EPC_VM_CMDS
+        echo "echo \"sudo unzip -qq -o /home/ubuntu/etc-conf.zip\"" >> $LOC_EPC_VM_CMDS
+        echo "sudo unzip -qq -o /home/ubuntu/etc-conf.zip" >> $LOC_EPC_VM_CMDS
+        echo "sudo sed -i  -e 's#EPC_VM_IP_ADDRESS#$LOC_EPC_VM_IP_ADDR#' gw.conf" >> $LOC_EPC_VM_CMDS
+        echo "sudo sed -i  -e 's#EPC_VM_IP_ADDRESS#$LOC_EPC_VM_IP_ADDR#' mme.conf" >> $LOC_EPC_VM_CMDS
+
+        ssh -o StrictHostKeyChecking=no ubuntu@$LOC_EPC_VM_IP_ADDR < $LOC_EPC_VM_CMDS
+        rm -f $LOC_EPC_VM_CMDS
+    fi
+}
+
+function start_epc {
+    local LOC_EPC_VM_NAME=$1
+    local LOC_EPC_VM_CMDS=$2
+    local LOC_EPC_VM_IP_ADDR=$3
+
+    if [ $LTEBOX -eq 1 ]
+    then
+        echo "############################################################"
+        echo "Start EPC on EPC VM ($LOC_EPC_VM_NAME)"
+        echo "############################################################"
+        echo "echo \"cd /opt/hss_sim0609\"" > $LOC_EPC_VM_CMDS
+        echo "cd /opt/hss_sim0609" >> $LOC_EPC_VM_CMDS
+        echo "echo \"sudo daemon --unsafe --name=simulated_hss --chdir=/opt/hss_sim0609 ./starthss_real\"" >> $LOC_EPC_VM_CMDS
+        echo "sudo daemon --unsafe --name=simulated_hss --chdir=/opt/hss_sim0609 ./starthss_real" >> $LOC_EPC_VM_CMDS
+
+        echo "echo \"cd /opt/ltebox/tools/\"" >> $LOC_EPC_VM_CMDS
+        echo "cd /opt/ltebox/tools/" >> $LOC_EPC_VM_CMDS
+        echo "echo \"sudo ./start_ltebox\"" >> $LOC_EPC_VM_CMDS
+        echo "nohup sudo ./start_ltebox > /home/ubuntu/ltebox.txt" >> $LOC_EPC_VM_CMDS
+
+        ssh -o StrictHostKeyChecking=no ubuntu@$LOC_EPC_VM_IP_ADDR < $LOC_EPC_VM_CMDS
+        rm -f $LOC_EPC_VM_CMDS
+
+        i="0"
+        echo "ifconfig tun5 | egrep -c \"inet addr\"" > $LOC_EPC_VM_CMDS
+        while [ $i -lt 10 ]
+        do
+            sleep 2
+            CONNECTED=`ssh -o StrictHostKeyChecking=no ubuntu@$LOC_EPC_VM_IP_ADDR < $LOC_EPC_VM_CMDS`
+            if [ $CONNECTED -eq 1 ]
+            then
+                i="100"
+            else
+                i=$[$i+1]
+            fi
+        done
+        rm $LOC_EPC_VM_CMDS
+        if [ $i -lt 50 ]
+        then
+            echo "Problem w/ starting ltebox EPC"
+            echo "TEST_KO" > $ARCHIVES_LOC/test_final_status.log
+            exit -1
+        fi
+    fi
+
+    # HERE ADD ANY INSTALL ACTIONS FOR ANOTHER EPC
+
+}
+
+function retrieve_real_epc_ip_addr {
+    local LOC_EPC_VM_NAME=$1
+    local LOC_EPC_VM_CMDS=$2
+    local LOC_EPC_VM_IP_ADDR=$3
+
+    if [ $LTEBOX -eq 1 ]
+    then
+        # in our configuration file, we are using pool 5
+        echo "ifconfig tun5 | egrep \"inet addr\" | sed -e 's#^.*inet addr:##' -e 's#  P-t-P:.*\$##'" > $LOC_EPC_VM_CMDS
+        REAL_EPC_IP_ADDR=`ssh -o StrictHostKeyChecking=no ubuntu@$LOC_EPC_VM_IP_ADDR < $LOC_EPC_VM_CMDS`
+        echo "EPC IP Address     is : $REAL_EPC_IP_ADDR"
+        rm $LOC_EPC_VM_CMDS
+    fi
+}
+
+function terminate_epc {
+    if [ $LTEBOX -eq 1 ]
+    then
+        echo "echo \"cd /opt/ltebox/tools\"" > $1
+        echo "cd /opt/ltebox/tools" >> $1
+        echo "echo \"sudo ./stop_ltebox\"" >> $1
+        echo "sudo ./stop_ltebox" >> $1
+        echo "echo \"sudo daemon --name=simulated_hss --stop\"" >> $1
+        echo "sudo daemon --name=simulated_hss --stop" >> $1
+        echo "echo \"sudo killall --signal SIGKILL hss_sim\"" >> $1
+        echo "sudo killall --signal SIGKILL hss_sim" >> $1
+        ssh -o StrictHostKeyChecking=no ubuntu@$2 < $1
+        rm $1
+    fi
 }
 
 function start_flexran_ctrl {
@@ -322,6 +488,130 @@ function query_flexran_ctrl_status {
     rm $1
 }
 
+function build_ue_on_separate_folder {
+    echo "mkdir tmp-ue" > $1
+    echo "cd tmp-ue" >> $1
+    echo "echo \"unzip -qq -DD ../localZip.zip\"" >> $1
+    echo "unzip -qq -DD ../localZip.zip" >> $1
+
+    # We may have some adaptation to do
+    if [ -f /opt/ltebox-archives/adapt_ue_l2_sim.txt ]
+    then
+        echo "############################################################"
+        echo "Doing some adaptation on UE side"
+        echo "############################################################"
+        cat /opt/ltebox-archives/adapt_ue_l2_sim.txt >> $1
+    fi
+
+    echo "echo \"source oaienv\"" >> $1
+    echo "source oaienv" >> $1
+    echo "cd cmake_targets/" >> $1
+    echo "mkdir log" >> $1
+    echo "chmod 777 log" >> $1
+    echo "echo \"./build_oai --UE -t ETHERNET \"" >> $1
+    echo "./build_oai --UE -t ETHERNET > log/ue-build.txt 2>&1" >> $1
+    echo "cd tools" >> $1
+    echo "sudo ifconfig lo: 127.0.0.2 netmask 255.0.0.0 up" >> $1
+    echo "sudo chmod 666 /etc/iproute2/rt_tables" >> $1
+    echo "source init_nas_s1 UE" >> $1
+    echo "ifconfig" >> $1
+    ssh -o StrictHostKeyChecking=no ubuntu@$2 < $1
+    rm -f $1
+}
+
+function start_l2_sim_enb {
+    local LOC_VM_IP_ADDR=$2
+    local LOC_EPC_IP_ADDR=$3
+    local LOC_LOG_FILE=$4
+    local LOC_NB_RBS=$5
+    local LOC_CONF_FILE=$6
+    echo "cd /home/ubuntu/tmp" > $1
+    echo "echo \"sudo apt-get --yes --quiet install daemon \"" >> $1
+    echo "sudo apt-get --yes install daemon >> /home/ubuntu/tmp/cmake_targets/log/daemon-install.txt 2>&1" >> $1
+    echo "echo \"source oaienv\"" >> $1
+    echo "source oaienv" >> $1
+    echo "cd ci-scripts/conf_files/" >> $1
+    echo "cp $LOC_CONF_FILE ci-$LOC_CONF_FILE" >> $1
+    echo "sed -i -e 's#N_RB_DL.*=.*;#N_RB_DL                                         = $LOC_NB_RBS;#' -e 's#CI_MME_IP_ADDR#$LOC_EPC_IP_ADDR#' -e 's#CI_ENB_IP_ADDR#$LOC_VM_IP_ADDR#' ci-$LOC_CONF_FILE" >> $1
+    echo "echo \"grep N_RB_DL ci-$LOC_CONF_FILE\"" >> $1
+    echo "grep N_RB_DL ci-$LOC_CONF_FILE | sed -e 's#N_RB_DL.*=#N_RB_DL =#'" >> $1
+    echo "echo \"cd /home/ubuntu/tmp/cmake_targets/lte_build_oai/build/\"" >> $1
+    echo "sudo chmod 777 /home/ubuntu/tmp/cmake_targets/lte_build_oai/build/" >> $1
+    echo "cd /home/ubuntu/tmp/cmake_targets/lte_build_oai/build/" >> $1
+    echo "echo \"ulimit -c unlimited && ./lte-softmodem -O /home/ubuntu/tmp/ci-scripts/conf_files/ci-$LOC_CONF_FILE\" > ./my-lte-softmodem-run.sh " >> $1
+    echo "chmod 775 ./my-lte-softmodem-run.sh" >> $1
+    echo "cat ./my-lte-softmodem-run.sh" >> $1
+    echo "if [ -e /home/ubuntu/tmp/cmake_targets/log/$LOC_LOG_FILE ]; then sudo sudo rm -f /home/ubuntu/tmp/cmake_targets/log/$LOC_LOG_FILE; fi" >> $1
+    echo "sudo -E daemon --inherit --unsafe --name=enb_daemon --chdir=/home/ubuntu/tmp/cmake_targets/lte_build_oai/build/ -o /home/ubuntu/tmp/cmake_targets/log/$LOC_LOG_FILE ./my-lte-softmodem-run.sh" >> $1
+
+    ssh -o StrictHostKeyChecking=no ubuntu@$LOC_VM_IP_ADDR < $1
+    rm $1
+
+    local i="0"
+    echo "egrep -c \"Waiting for PHY_config_req\" /home/ubuntu/tmp/cmake_targets/log/$LOC_LOG_FILE" > $1
+    while [ $i -lt 10 ]
+    do
+        sleep 5
+        CONNECTED=`ssh -o StrictHostKeyChecking=no ubuntu@$LOC_VM_IP_ADDR < $1`
+        if [ $CONNECTED -ne 0 ]
+        then
+            i="100"
+        else
+            i=$[$i+1]
+        fi
+    done
+    rm $1
+    if [ $i -lt 50 ]
+    then
+        ENB_SYNC=0
+        echo "L2-SIM eNB is NOT sync'ed: process still alive?"
+    else
+        ENB_SYNC=1
+        echo "L2-SIM eNB is sync'ed: waiting for UE(s) to connect"
+    fi
+}
+
+function start_l2_sim_ue {
+    local LOC_VM_IP_ADDR=$2
+    local LOC_LOG_FILE=$3
+    local LOC_CONF_FILE=$4
+    echo "echo \"cd /home/ubuntu/tmp-ue/cmake_targets/lte_build_oai/build/\"" >> $1
+    echo "sudo chmod 777 /home/ubuntu/tmp-ue/cmake_targets/lte_build_oai/build/" >> $1
+    echo "cd /home/ubuntu/tmp-ue/cmake_targets/lte_build_oai/build/" >> $1
+    echo "echo \"ulimit -c unlimited && ./lte-uesoftmodem -O /home/ubuntu/tmp-ue/ci-scripts/conf_files/$LOC_CONF_FILE --L2-emul 3 --num-ues 1\" > ./my-lte-softmodem-run.sh " >> $1
+    echo "chmod 775 ./my-lte-softmodem-run.sh" >> $1
+    echo "cat ./my-lte-softmodem-run.sh" >> $1
+    echo "if [ -e /home/ubuntu/tmp/cmake_targets/log/$LOC_LOG_FILE ]; then sudo sudo rm -f /home/ubuntu/tmp/cmake_targets/log/$LOC_LOG_FILE; fi" >> $1
+    echo "sudo -E daemon --inherit --unsafe --name=ue_daemon --chdir=/home/ubuntu/tmp-ue/cmake_targets/lte_build_oai/build/ -o /home/ubuntu/tmp/cmake_targets/log/$LOC_LOG_FILE ./my-lte-softmodem-run.sh" >> $1
+
+    ssh -o StrictHostKeyChecking=no ubuntu@$LOC_VM_IP_ADDR < $1
+    rm $1
+
+    local i="0"
+    echo "egrep -c \"Received NFAPI_START_REQ\" /home/ubuntu/tmp/cmake_targets/log/$LOC_LOG_FILE" > $1
+    while [ $i -lt 10 ]
+    do
+        sleep 5
+        CONNECTED=`ssh -o StrictHostKeyChecking=no ubuntu@$LOC_VM_IP_ADDR < $1`
+        if [ $CONNECTED -eq 1 ]
+        then
+            i="100"
+        else
+            i=$[$i+1]
+        fi
+    done
+    rm $1
+    if [ $i -lt 50 ]
+    then
+        UE_SYNC=0
+        echo "L2-SIM UE is NOT sync'ed w/eNB"
+    else
+        UE_SYNC=1
+        echo "L2-SIM UE is sync'ed w/eNB"
+    fi
+    sleep 10
+}
+
 function run_test_on_vm {
     echo "############################################################"
     echo "OAI CI VM script"
@@ -459,148 +749,26 @@ function run_test_on_vm {
         fi
         mkdir --parents $ARCHIVES_LOC
 
+        # Creating a VM for EPC and installing SW
         EPC_VM_NAME=`echo $VM_NAME | sed -e "s#basic-sim#epc#"`
+        EPC_VM_CMDS=${EPC_VM_NAME}_cmds.txt
         LTEBOX=0
-        if [ -d /opt/ltebox-archives/ ]
-        then
-            # Checking if all ltebox archives are available to run ltebx epc on a brand new VM
-            if [ -f /opt/ltebox-archives/ltebox_2.2.70_16_04_amd64.deb ] && [ -f /opt/ltebox-archives/etc-conf.zip ] && [ -f /opt/ltebox-archives/hss-sim.zip ]
-            then
-                echo "############################################################"
-                echo "Test EPC on VM ($EPC_VM_NAME) will be using ltebox"
-                echo "############################################################"
-                LTEBOX=1
-            fi
-        fi
-        # Here we could have other types of EPC detection
-
-        # Do we need to start the EPC VM
-        EPC_VM_CMDS=`echo $VM_CMDS | sed -e "s#cmds#epc-cmds#"`
-        echo "EPC_VM_CMD_FILE     = $EPC_VM_CMDS"
-        IS_EPC_VM_ALIVE=`uvt-kvm list | grep -c $EPC_VM_NAME`
-        if [ $IS_EPC_VM_ALIVE -eq 0 ]
-        then
-            echo "############################################################"
-            echo "Creating test EPC VM ($EPC_VM_NAME) on Ubuntu Cloud Image base"
-            echo "############################################################"
-            uvt-kvm create $EPC_VM_NAME release=xenial --unsafe-caching
-        fi
-
-        uvt-kvm wait $EPC_VM_NAME --insecure
+        install_epc_on_vm $EPC_VM_NAME $EPC_VM_CMDS
         EPC_VM_IP_ADDR=`uvt-kvm ip $EPC_VM_NAME`
-        echo "$EPC_VM_NAME has for IP addr = $EPC_VM_IP_ADDR"
-        scp -o StrictHostKeyChecking=no /etc/apt/apt.conf.d/01proxy ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu
-
-        # ltebox specific actions (install and start)
-        LTE_BOX_TO_INSTALL=1
-        if [ $LTEBOX -eq 1 ]
-        then
-            echo "ls -ls /opt/ltebox/tools/start_ltebox" > $EPC_VM_CMDS
-            RESPONSE=`ssh -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR < $EPC_VM_CMDS`
-            NB_EXES=`echo $RESPONSE | grep -c ltebox`
-            if [ $NB_EXES -eq 1 ]; then LTE_BOX_TO_INSTALL=0; fi
-        fi
 
-        if [ $LTEBOX -eq 1 ] && [ $LTE_BOX_TO_INSTALL -eq 1 ]
-        then
-            echo "############################################################"
-            echo "Copying ltebox archives into EPC VM ($EPC_VM_NAME)" 
-            echo "############################################################"
-            scp -o StrictHostKeyChecking=no /opt/ltebox-archives/ltebox_2.2.70_16_04_amd64.deb ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu
-            scp -o StrictHostKeyChecking=no /opt/ltebox-archives/etc-conf.zip ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu
-            scp -o StrictHostKeyChecking=no /opt/ltebox-archives/hss-sim.zip ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu
+        # Starting EPC
+        start_epc $EPC_VM_NAME $EPC_VM_CMDS $EPC_VM_IP_ADDR
 
-            echo "############################################################"
-            echo "Install EPC on EPC VM ($EPC_VM_NAME)"
-            echo "############################################################"
-            echo "sudo cp 01proxy /etc/apt/apt.conf.d/" > $EPC_VM_CMDS
-            echo "touch /home/ubuntu/.hushlogin" >> $EPC_VM_CMDS
-            echo "echo \"sudo apt-get --yes --quiet install zip openjdk-8-jre libconfuse-dev libreadline-dev liblog4c-dev libgcrypt-dev libsctp-dev python2.7 python2.7-dev daemon iperf\"" >> $EPC_VM_CMDS
-            echo "sudo apt-get update > zip-install.txt 2>&1" >> $EPC_VM_CMDS
-            echo "sudo apt-get --yes install zip openjdk-8-jre libconfuse-dev libreadline-dev liblog4c-dev libgcrypt-dev libsctp-dev python2.7 python2.7-dev daemon iperf >> zip-install.txt 2>&1" >> $EPC_VM_CMDS
-
-            # Installing HSS
-            echo "echo \"cd /opt\"" >> $EPC_VM_CMDS
-            echo "cd /opt" >> $EPC_VM_CMDS
-            echo "echo \"sudo unzip -qq /home/ubuntu/hss-sim.zip\"" >> $EPC_VM_CMDS
-            echo "sudo unzip -qq /home/ubuntu/hss-sim.zip" >> $EPC_VM_CMDS
-            echo "echo \"cd /opt/hss_sim0609\"" >> $EPC_VM_CMDS
-            echo "cd /opt/hss_sim0609" >> $EPC_VM_CMDS
-
-            # Installing ltebox
-            echo "echo \"cd /home/ubuntu\"" >> $EPC_VM_CMDS
-            echo "cd /home/ubuntu" >> $EPC_VM_CMDS
-            echo "echo \"sudo dpkg -i ltebox_2.2.70_16_04_amd64.deb \"" >> $EPC_VM_CMDS
-            echo "sudo dpkg -i ltebox_2.2.70_16_04_amd64.deb >> zip-install.txt 2>&1" >> $EPC_VM_CMDS
-
-            echo "echo \"cd /opt/ltebox/etc/\"" >> $EPC_VM_CMDS
-            echo "cd /opt/ltebox/etc/" >> $EPC_VM_CMDS
-            echo "echo \"sudo unzip -qq -o /home/ubuntu/etc-conf.zip\"" >> $EPC_VM_CMDS
-            echo "sudo unzip -qq -o /home/ubuntu/etc-conf.zip" >> $EPC_VM_CMDS
-            echo "sudo sed -i  -e 's#EPC_VM_IP_ADDRESS#$EPC_VM_IP_ADDR#' gw.conf" >> $EPC_VM_CMDS
-            echo "sudo sed -i  -e 's#EPC_VM_IP_ADDRESS#$EPC_VM_IP_ADDR#' mme.conf" >> $EPC_VM_CMDS
-        fi
+        # Retrieve EPC real IP address
+        retrieve_real_epc_ip_addr $EPC_VM_NAME $EPC_VM_CMDS $EPC_VM_IP_ADDR
 
-        # Starting EPC
-        if [ $LTEBOX -eq 1 ]
+        # We may have some adaptation to do
+        if [ -f /opt/ltebox-archives/adapt_ue_sim.txt ]
         then
             echo "############################################################"
-            echo "Start EPC on EPC VM ($EPC_VM_NAME)"
+            echo "Doing some adaptation on UE side"
             echo "############################################################"
-            echo "echo \"cd /opt/hss_sim0609\"" >> $EPC_VM_CMDS
-            echo "cd /opt/hss_sim0609" >> $EPC_VM_CMDS
-            echo "echo \"sudo daemon --unsafe --name=simulated_hss --chdir=/opt/hss_sim0609 ./starthss_real\"" >> $EPC_VM_CMDS
-            echo "sudo daemon --unsafe --name=simulated_hss --chdir=/opt/hss_sim0609 ./starthss_real" >> $EPC_VM_CMDS
-
-            echo "echo \"cd /opt/ltebox/tools/\"" >> $EPC_VM_CMDS
-            echo "cd /opt/ltebox/tools/" >> $EPC_VM_CMDS
-            echo "echo \"sudo ./start_ltebox\"" >> $EPC_VM_CMDS
-            echo "nohup sudo ./start_ltebox > /home/ubuntu/ltebox.txt" >> $EPC_VM_CMDS
-
-            ssh -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR < $EPC_VM_CMDS
-            rm -f $EPC_VM_CMDS
-
-            # We may have some adaptation to do
-            if [ -f /opt/ltebox-archives/adapt_ue_sim.txt ]
-            then
-                echo "############################################################"
-                echo "Doing some adaptation on UE side"
-                echo "############################################################"
-                ssh -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR < /opt/ltebox-archives/adapt_ue_sim.txt
-            fi
-
-            i="0"
-            echo "ifconfig tun5 | egrep -c \"inet addr\"" > $EPC_VM_CMDS
-            while [ $i -lt 10 ]
-            do
-                sleep 2
-                CONNECTED=`ssh -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR < $EPC_VM_CMDS`
-                if [ $CONNECTED -eq 1 ]
-                then
-                    i="100"
-                else
-                    i=$[$i+1]
-                fi
-            done
-            rm $EPC_VM_CMDS
-            if [ $i -lt 50 ]
-            then
-                echo "Problem w/ starting ltebox EPC"
-                echo "TEST_KO" > $ARCHIVES_LOC/test_final_status.log
-                exit -1
-            fi
-        fi
-
-        # HERE ADD ANY INSTALL ACTIONS FOR ANOTHER EPC
-
-        # Retrieve EPC real IP address
-        if [ $LTEBOX -eq 1 ]
-        then
-            # in our configuration file, we are using pool 5
-            echo "ifconfig tun5 | egrep \"inet addr\" | sed -e 's#^.*inet addr:##' -e 's#  P-t-P:.*\$##'" > $EPC_VM_CMDS
-            REAL_EPC_IP_ADDR=`ssh -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR < $EPC_VM_CMDS`
-            echo "EPC IP Address     is : $REAL_EPC_IP_ADDR"
-            rm $EPC_VM_CMDS
+            ssh -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR < /opt/ltebox-archives/adapt_ue_sim.txt
         fi
 
         echo "############################################################"
@@ -621,7 +789,7 @@ function run_test_on_vm {
             scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC
             scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC
             recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC
-            terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR
+            terminate_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR
             echo "TEST_KO" > $ARCHIVES_LOC/test_final_status.log
             exit -1
         fi
@@ -680,7 +848,7 @@ function run_test_on_vm {
             scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC
             scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC
             recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC
-            terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR
+            terminate_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR
             echo "TEST_KO" > $ARCHIVES_LOC/test_final_status.log
             exit -1
         fi
@@ -739,7 +907,7 @@ function run_test_on_vm {
             scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC
             scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC
             recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC
-            terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR
+            terminate_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR
             echo "TEST_KO" > $ARCHIVES_LOC/test_final_status.log
             exit -1
         fi
@@ -791,7 +959,7 @@ function run_test_on_vm {
             if [ $j -lt 50 ]
             then
                 echo "ERROR: compiling flexran controller on vm went wrong"
-                terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR
+                terminate_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR
                 echo "TEST_KO" > $ARCHIVES_LOC/test_final_status.log
                 exit -1
             fi
@@ -801,7 +969,7 @@ function run_test_on_vm {
             if [ $IS_FLEXRAN_VM_ALIVE -eq 0 ]
             then
                 echo "ERROR: Flexran Ctl VM is not alive"
-                terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR
+                terminate_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR
                 echo "TEST_KO" > $ARCHIVES_LOC/test_final_status.log
                 exit -1
             fi
@@ -835,7 +1003,7 @@ function run_test_on_vm {
                 scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC
                 scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC
                 recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC
-                terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR
+                terminate_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR
                 stop_flexran_ctrl $FLEXRAN_CTL_VM_CMDS $FLEXRAN_CTL_VM_IP_ADDR
                 echo "TEST_KO" > $ARCHIVES_LOC/test_final_status.log
                 exit -1
@@ -878,7 +1046,7 @@ function run_test_on_vm {
             scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC
             scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC
             recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC
-            terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR
+            terminate_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR
             echo "TEST_KO" > $ARCHIVES_LOC/test_final_status.log
             exit -1
         fi
@@ -929,7 +1097,7 @@ function run_test_on_vm {
             scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC
             scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC
             recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC
-            terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR
+            terminate_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR
             echo "TEST_KO" > $ARCHIVES_LOC/test_final_status.log
             exit -1
         fi
@@ -980,7 +1148,7 @@ function run_test_on_vm {
 #            scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC
 #            scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC
 #            recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC
-#            terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR
+#            terminate_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR
 #            echo "TEST_KO" > $ARCHIVES_LOC/test_final_status.log
 #            exit -1
 #        fi
@@ -1016,10 +1184,7 @@ function run_test_on_vm {
         echo "Terminate EPC"
         echo "############################################################"
 
-        if [ $LTEBOX -eq 1 ]
-        then
-            terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR
-        fi
+        terminate_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR
 
         if [ $KEEP_VM_ALIVE -eq 0 ]
         then
@@ -1051,4 +1216,97 @@ function run_test_on_vm {
             echo "TEST_KO" > $ARCHIVES_LOC/test_final_status.log
         fi
     fi
+
+    if [[ "$RUN_OPTIONS" == "complex" ]] && [[ $VM_NAME =~ .*-l2-sim.* ]]
+    then
+        PING_STATUS=0
+        IPERF_STATUS=0
+        if [ -d $ARCHIVES_LOC ]
+        then
+            rm -Rf $ARCHIVES_LOC
+        fi
+        mkdir --parents $ARCHIVES_LOC
+
+        # Building UE elsewhere in VM
+        build_ue_on_separate_folder $VM_CMDS $VM_IP_ADDR
+
+        # Creating a VM for EPC and installing SW
+        EPC_VM_NAME=`echo $VM_NAME | sed -e "s#l2-sim#l2-epc#"`
+        EPC_VM_CMDS=${EPC_VM_NAME}_cmds.txt
+        LTEBOX=0
+        install_epc_on_vm $EPC_VM_NAME $EPC_VM_CMDS
+        EPC_VM_IP_ADDR=`uvt-kvm ip $EPC_VM_NAME`
+
+        # Starting EPC
+        start_epc $EPC_VM_NAME $EPC_VM_CMDS $EPC_VM_IP_ADDR
+
+        # Retrieve EPC real IP address
+        retrieve_real_epc_ip_addr $EPC_VM_NAME $EPC_VM_CMDS $EPC_VM_IP_ADDR
+
+        echo "############################################################"
+        echo "Starting the eNB in FDD-5MHz mode"
+        echo "############################################################"
+        CURRENT_ENB_LOG_FILE=fdd_05MHz_enb.log
+        start_l2_sim_enb $VM_CMDS $VM_IP_ADDR $EPC_VM_IP_ADDR $CURRENT_ENB_LOG_FILE 25 rcc.band7.tm1.nfapi.conf
+
+        echo "############################################################"
+        echo "Starting the UEs"
+        echo "############################################################"
+        CURRENT_UE_LOG_FILE=fdd_05MHz_ue.log
+        start_l2_sim_ue $VM_CMDS $VM_IP_ADDR $CURRENT_UE_LOG_FILE ue.nfapi.conf
+        if [ $UE_SYNC -eq 0 ]
+        then
+            echo "Problem w/ eNB and UE not syncing"
+            terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR
+            scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC
+            scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC
+            terminate_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR
+            echo "TEST_KO" > $ARCHIVES_LOC/test_final_status.log
+            exit -1
+        fi
+
+        echo "############################################################"
+        echo "Pinging the EPC from UE"
+        echo "############################################################"
+        PING_LOG_FILE=fdd_05MHz_ping_epc.txt
+        ping_epc_ip_addr $VM_CMDS $VM_IP_ADDR $REAL_EPC_IP_ADDR $PING_LOG_FILE
+        scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/$PING_LOG_FILE $ARCHIVES_LOC
+        check_ping_result $ARCHIVES_LOC/$PING_LOG_FILE 20
+
+        echo "############################################################"
+        echo "Terminate enb/ue simulators"
+        echo "############################################################"
+        terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR
+        scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC
+        scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC
+
+        echo "############################################################"
+        echo "Terminate EPC"
+        echo "############################################################"
+
+        terminate_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR
+
+        if [ $KEEP_VM_ALIVE -eq 0 ]
+        then
+            echo "############################################################"
+            echo "Destroying VMs"
+            echo "############################################################"
+            uvt-kvm destroy $VM_NAME
+            ssh-keygen -R $VM_IP_ADDR
+            uvt-kvm destroy $EPC_VM_NAME
+            ssh-keygen -R $EPC_VM_IP_ADDR
+        fi
+
+        echo "############################################################"
+        echo "Checking run status"
+        echo "############################################################"
+
+        if [ $PING_STATUS -ne 0 ]; then STATUS=-1; fi
+        if [ $STATUS -eq 0 ]
+        then
+            echo "TEST_OK" > $ARCHIVES_LOC/test_final_status.log
+        else
+            echo "TEST_KO" > $ARCHIVES_LOC/test_final_status.log
+        fi
+    fi
 }
diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt
index 9e368d59450fd959f57e0823f932a5ebda5b4204..ecb9b314f25f4918490333fe0dffe690f97011be 100644
--- a/cmake_targets/CMakeLists.txt
+++ b/cmake_targets/CMakeLists.txt
@@ -615,6 +615,7 @@ add_boolean_option(MESSAGE_CHART_GENERATOR_PHY     False "trace some PHY exchang
 add_boolean_option(UE_EXPANSION             False         "enable UE_EXPANSION with max 256 UE")
 add_boolean_option(PHY_TX_THREAD            False         "enable UE_EXPANSION with max 256 UE")
 add_boolean_option(PRE_SCD_THREAD           False         "enable UE_EXPANSION with max 256 UE")
+add_boolean_option(UESIM_EXPANSION          False         "enable UESIM_EXPANSION with max 256 UE")
 
 ########################
 # Include order
diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai
index 01f4b63a8f91c6539aba13157350302cbfa9e7dd..2728cac9b1721298ccad67a1867709cfd71defde 100755
--- a/cmake_targets/build_oai
+++ b/cmake_targets/build_oai
@@ -43,6 +43,7 @@ conf_nvram_path=$OPENAIR_DIR/openair3/NAS/TOOLS/ue_eurecom_test_sfr.conf
 MSC_GEN=0
 XFORMS="True"
 UE_EXPANSION="False"
+UESIM_EXPANSION="False"
 PRINT_STATS="False"
 VCD_TIMING="False"
 DEADLINE_SCHEDULER_FLAG_USER="False"
@@ -218,6 +219,10 @@ function main() {
             UE_EXPANSION="True"
             echo_info "Will compile with UE_EXPANSION"
             shift;;
+       --musim)
+            UESIM_EXPANSION="True"
+            echo_info "Will compile with UESIM_EXPANSION"
+            shift;;
        --UE-conf-nvram)
             conf_nvram_path=$(readlink -f $2)
             shift 2;;
@@ -551,6 +556,7 @@ function main() {
     echo "set ( UE_EXPANSION $UE_EXPANSION )"      >>  $cmake_file
 #    echo "set ( PHY_TX_THREAD $UE_EXPANSION )"     >>  $cmake_file
     echo "set ( PRE_SCD_THREAD $UE_EXPANSION )"    >>  $cmake_file
+    echo "set ( UESIM_EXPANSION $UESIM_EXPANSION )"      >>  $cmake_file
     echo "set ( RRC_ASN1_VERSION \"${REL}\")"      >>  $cmake_file
     echo "set ( ENABLE_VCD_FIFO $VCD_TIMING )"     >>  $cmake_file
     echo "set ( RF_BOARD \"${HW}\")"               >>  $cmake_file
diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper
index 18f59c86533d25da4905184c091a8e60c3721211..acfb75b1a8531a0a67bcf1c5bcdebd0e9d3c2872 100755
--- a/cmake_targets/tools/build_helper
+++ b/cmake_targets/tools/build_helper
@@ -32,8 +32,8 @@ OS_DISTRO=$(grep "^ID=" /etc/os-release | sed "s/ID=//" | sed "s/\"//g")
 OS_RELEASE=$(grep "^VERSION_ID=" /etc/os-release | sed "s/VERSION_ID=//" | sed "s/\"//g")
 case "$OS_DISTRO" in
   fedora) OS_BASEDISTRO="fedora"; INSTALLER="dnf"; CMAKE="cmake" ;;
-  rhel)   OS_BASEDISTRO="fedora"; INSTALLER="yum"; CMAKE="cmake3" ;;
-  centos) OS_BASEDISTRO="fedora"; INSTALLER="yum"; CMAKE="cmake3" ;;
+  rhel)   OS_BASEDISTRO="fedora"; INSTALLER="yum --skip-broken"; CMAKE="cmake3" ;;
+  centos) OS_BASEDISTRO="fedora"; INSTALLER="yum --skip-broken"; CMAKE="cmake3" ;;
   debian) OS_BASEDISTRO="debian"; INSTALLER="apt-get"; CMAKE="cmake" ;;
   ubuntu) OS_BASEDISTRO="debian"; INSTALLER="apt-get"; CMAKE="cmake" ;;
 esac
diff --git a/cmake_targets/tools/init_nas_s1 b/cmake_targets/tools/init_nas_s1
index cab4ad047bf4d42d9a4ba1890c9cef9967ec2a00..b78ab34ff9f90d825303e3bb807e0f8e177f3df6 100755
--- a/cmake_targets/tools/init_nas_s1
+++ b/cmake_targets/tools/init_nas_s1
@@ -52,20 +52,20 @@ load_module ../../targets/bin/ue_ip.ko
 
 if [ "$1" = "UE" ]; then
   echo "bring up $LTEIF interface for UE"
-  ifconfig $LTEIF up
+  sudo ifconfig $LTEIF up
 fi
 
-ip route flush cache
+sudo ip route flush cache
 sleep 1
-sysctl -w net.ipv4.conf.all.log_martians=1
+sudo sysctl -w net.ipv4.conf.all.log_martians=1
 echo "Disabling reverse path filtering"
-sysctl -w net.ipv4.conf.all.rp_filter=0
-ip route flush cache
+sudo sysctl -w net.ipv4.conf.all.rp_filter=0
+sudo ip route flush cache
 
 # Check table 200 lte in /etc/iproute2/rt_tables
 fgrep lte /etc/iproute2/rt_tables  > /dev/null 
 if [ $? -ne 0 ]; then
     echo "200 lte " >> /etc/iproute2/rt_tables
 fi
-ip rule add fwmark 1 table lte
-ip route add default dev $LTEIF table lte
+sudo ip rule add fwmark 1 table lte
+sudo ip route add default dev $LTEIF table lte
diff --git a/common/config/DOC/config.md b/common/config/DOC/config.md
index 580ac5476fe93675e79aa4ad9c76ca3cb873c279..1c2ef2559482e0159a7d526efa5116d2c54955e5 100644
--- a/common/config/DOC/config.md
+++ b/common/config/DOC/config.md
@@ -1,6 +1,6 @@
 # OAI configuration module
 
-The configuration module provides an api that other oai components can use to get parameters at init time. It defines a parameter structure, used to describe parameters attributes (for example name and  type). The same structure includes a pointer to the variable where the configuration module writes the parameter value, at run time, when calling config_get or config_getlist functions. For each parameter a function to check the value can be specified and pre-defined functions  are provided for some common parameter validations (integer in a range or in a list, string in a list).  The module also include a mechanism to check that no unknown options have been entered on the command line
+The configuration module provides an api that other oai components can use to get parameters at init time. It defines a parameter structure, used to describe parameters attributes (for example name and  type). The same structure includes a pointer to the variable where the configuration module writes the parameter value, at run time, when calling config_get or config_getlist functions. For each parameter a function to check the value can be specified and pre-defined functions  are provided for some common parameter validations (integer in a range or in a list, string in a list).  The module also include an api to check that no unknown options have been entered on the command line and a a mechanism to display a help text for suppoted parameters.
 
 ## Documentation
 
diff --git a/common/config/DOC/config/devusage/api.md b/common/config/DOC/config/devusage/api.md
index 56b444a4471acefd0518b6024e857c70b89a8323..050abc5315cf86384a35e2006551b3a2d47d3399 100644
--- a/common/config/DOC/config/devusage/api.md
+++ b/common/config/DOC/config/devusage/api.md
@@ -1,11 +1,12 @@
 ```c
-configmodule_interface_t *load_configmodule(int argc, char **argv)
+configmodule_interface_t *load_configmodule(int argc, char **argv, uint32_t initflags)
 ```
 * Parses the command line options, looking for the –O argument
 * Loads the `libparams_<configsource>.so` (today `libparams_libconfig.so`)  shared library
 * Looks for `config_<config source>_init` symbol and calls it , passing it an array of string corresponding to the « : » separated strings used in the –O option
 * Looks for `config_<config source>_get`, `config_<config source>_getlist` and  `config_<config source>_end` symbols which are the three functions a configuration library should implement. Get and getlist are mandatory, end is optional.
-* Stores all the necessary information in a `configmodule_interface_t structure`, which is of no use for caller as long as we only use one configuration source.  
+* Stores all the necessary information in a `configmodule_interface_t structure`, which is of no use for caller as long as we only use one configuration source.
+*  if the bit CONFIG_ENABLECMDLINEONLY is set in `initflags` then the module allows parameters to be set only via the command line. This is used for the oai UE.
 
 ```c
 void End_configmodule(void)
diff --git a/common/config/DOC/config/rtusage.md b/common/config/DOC/config/rtusage.md
index 19519ef0584e1706b2552fde62e1b9307b9b41f2..109ba84bba2b1503fab255045b11415c5b20bf44 100644
--- a/common/config/DOC/config/rtusage.md
+++ b/common/config/DOC/config/rtusage.md
@@ -27,6 +27,63 @@ $ ./lte-softmodem -O libconfig:<config>:dbgl1
 ```bash
 $ ./lte-uesoftmodem -O cmdlineonly:dbgl1
 ```
+To get help on supported parameters you can use specific options:
+*  ---help: print help for command line only parameters and for parameters not defined in a specific section 
+	*  ---help_< prefix > : print help for parameters defined under the section < prefix >
+
+```
+./lte-softmodem -O libconfig:/usr/local/oai/conf/enb.nbiot.band7.tm1.50PRB.usrpb210.conf   --help
+[CONFIG] get parameters from libconfig /usr/local/oai/conf/enb.nbiot.band7.tm1.50PRB.usrpb210.conf , debug flags: 0x00000000
+.............................................
+[LIBCONFIG] (root): 19/19 parameters successfully set, (16 to default value)
+
+-----Help for section (root section)            : 019 entries------
+    --rf-config-file: Configuration file for front-end (e.g. LMS7002M)
+    --ulsch-max-errors: set the eNodeB max ULSCH erros
+    --phy-test: test UE phy layer, mac disabled
+    --usim-test: use XOR autentication algo in case of test usim mode
+    --emulate-rf: Emulated RF enabled(disable by defult)
+    --clock: tells hardware to use a clock reference (0:internal, 1:external, 2:gpsdo)
+    --wait-for-sync: Help string not specified
+    --single-thread-enable: Disables single-thread mode in lte-softmodem
+    -C: Set the downlink frequency for all component carriers
+    -a: Channel id offset
+    -d: Enable soft scope and L1 and L2 stats (Xforms)
+    -q: Enable processing timing measurement of lte softmodem on per subframe basis 
+    -S: Skip the missed slots/subframes 
+    --numerology: adding numerology for 5G
+    --parallel-config: three config for level of parallelism 'PARALLEL_SINGLE_THREAD', 'PARALLEL_RU_L1_SPLIT', or 'PARALLEL_RU_L1_TRX_SPLIT'
+    --worker-config: two option for worker 'WORKER_DISABLE' or 'WORKER_ENABLE'
+    --nbiot-disable: disable nb-iot, even if defined in config
+    --noS1: Disable s1 interface
+    --nokrnmod: (noS1 only): Use tun instead of namesh module 
+--------------------------------------------------------------------
+
+[LIBCONFIG] (root): 4/4 parameters successfully set, (4 to default value)
+
+-----Help for section (root section)            : 004 entries------
+    -R: Enable online log 
+    -g: Set the global log level, valide options: (4:trace, 3:debug, 2:info, 1:warn, (0:error))
+    --telnetsrv: Start embedded telnet server 
+    --msc: Enable the MSC tracing utility 
+--------------------------------------------------------------------
+
+[LIBCONFIG] loader: 2/2 parameters successfully set, (2 to default value)
+[LIBCONFIG] loader.telnetsrv: 2/2 parameters successfully set, (1 to default value)
+[LOADER] library libtelnetsrv.so is not loaded: libtelnetsrv.so: cannot open shared object file: No such file or directory
+Getting ENBSParams
+[LIBCONFIG] (root): 3/3 parameters successfully set, (1 to default value)
+
+-----Help for section (root section)            : 003 entries------
+    --Asn1_verbosity: Help string not specified
+    --Active_eNBs: Help string not specified
+    --noS1: Help string not specified
+--------------------------------------------------------------------
+
+/usr/local/oai/issue390_configmodule_cmdlinebug/openairinterface5g/common/config/config_cmdline.c:224 config_process_cmdline() Exiting OAI softmodem: [CONFIG] Exiting after displaying help
+
+```
+
 For the lte-softmodem (the eNodeB) The config source parameter defaults to libconfig, preserving the initial -O option format. In this case you cannot specify the debug level.  
 
 ```bash
diff --git a/common/config/config_cmdline.c b/common/config/config_cmdline.c
index 635287afb45b6dfc919543a10d0a61a83cfe6dce..4d32e9726fd86f0eaf8b820459cfa917ee8a7fd8 100644
--- a/common/config/config_cmdline.c
+++ b/common/config/config_cmdline.c
@@ -37,7 +37,7 @@
 #include <errno.h>
 #include <platform_types.h>
 #include "config_userapi.h"
-
+#include "../utils/LOG/log.h"
 
 int parse_stringlist(paramdef_t *cfgoptions, char *val) {
   char *atoken;
@@ -74,15 +74,15 @@ int processoption(paramdef_t *cfgoptions, char *value) {
 
   if ( value == NULL) {
     if( (cfgoptions->paramflags &PARAMFLAG_BOOL) == 0 ) { /* not a boolean, argument required */
-      fprintf(stderr,"[CONFIG] command line, option %s requires an argument\n",cfgoptions->optname);
-      exit_fun("[CONFIG] command line parsing fatal error");
-      return 0;
+      CONFIG_PRINTF_ERROR("[CONFIG] command line, option %s requires an argument\n",cfgoptions->optname);
     } else {        /* boolean value option without argument, set value to true*/
       tmpval = defbool;
     }
   }
 
   switch(cfgoptions->type) {
+      char *charptr;
+
     case TYPE_STRING:
       if (cfgoptions->numelt == 0 ) {
         config_check_valptr(cfgoptions, cfgoptions->strptr, strlen(tmpval)+1);
@@ -106,14 +106,24 @@ int processoption(paramdef_t *cfgoptions, char *value) {
     case TYPE_UINT8:
     case TYPE_INT8:
       config_check_valptr(cfgoptions, (char **)&(cfgoptions->iptr),sizeof(int32_t));
-      config_assign_int(cfgoptions,cfgoptions->optname,(int32_t)strtol(tmpval,NULL,0));
+      config_assign_int(cfgoptions,cfgoptions->optname,(int32_t)strtol(tmpval,&charptr,0));
+
+      if( *charptr != 0) {
+        CONFIG_PRINTF_ERROR("[CONFIG] command line, option %s requires an integer argument\n",cfgoptions->optname);
+      }
+
       optisset=1;
       break;
 
     case TYPE_UINT64:
     case TYPE_INT64:
       config_check_valptr(cfgoptions, (char **)&(cfgoptions->i64ptr),sizeof(uint64_t));
-      *(cfgoptions->i64ptr)=strtoll(tmpval,NULL,0);
+      *(cfgoptions->i64ptr)=strtoll(tmpval,&charptr,0);
+
+      if( *charptr != 0) {
+        CONFIG_PRINTF_ERROR("[CONFIG] command line, option %s requires an integer argument\n",cfgoptions->optname);
+      }
+
       printf_cmdl("[CONFIG] %s set to  %lli from command line\n", cfgoptions->optname, (long long)*(cfgoptions->i64ptr));
       optisset=1;
       break;
@@ -124,7 +134,12 @@ int processoption(paramdef_t *cfgoptions, char *value) {
 
     case TYPE_DOUBLE:
       config_check_valptr(cfgoptions, (char **)&(cfgoptions->dblptr),sizeof(double));
-      *(cfgoptions->dblptr) = strtof(tmpval,NULL);
+      *(cfgoptions->dblptr) = strtof(tmpval,&charptr);
+
+      if( *charptr != 0) {
+        CONFIG_PRINTF_ERROR("[CONFIG] command line, option %s requires a double argument\n",cfgoptions->optname);
+      }
+
       printf_cmdl("[CONFIG] %s set to  %lf from command line\n", cfgoptions->optname, *(cfgoptions->dblptr));
       optisset=1;
       break;
@@ -133,7 +148,7 @@ int processoption(paramdef_t *cfgoptions, char *value) {
       break;
 
     default:
-      fprintf(stderr,"[CONFIG] command line, %s type %i  not supported\n",cfgoptions->optname, cfgoptions->type);
+      CONFIG_PRINTF_ERROR("[CONFIG] command line, %s type %i  not supported\n",cfgoptions->optname, cfgoptions->type);
       break;
   } /* switch on param type */
 
@@ -149,14 +164,15 @@ int processoption(paramdef_t *cfgoptions, char *value) {
 */
 int config_check_unknown_cmdlineopt(char *prefix) {
   int unknowndetected=0;
-  char testprefix[CONFIG_MAXOPTLENGTH]="";
+  char testprefix[CONFIG_MAXOPTLENGTH];
   int finalcheck = 0;
 
+  memset(testprefix,0,sizeof(testprefix));
   if (prefix != NULL) {
     if (strcmp(prefix,CONFIG_CHECKALLSECTIONS) == 0)
       finalcheck = 1;
     else if (strlen(prefix) > 0) {
-      sprintf(testprefix,"--%s.",prefix);
+      sprintf(testprefix,"--%.*s.",CONFIG_MAXOPTLENGTH-1,prefix);
     }
   }
 
@@ -176,8 +192,11 @@ int config_check_unknown_cmdlineopt(char *prefix) {
     }
   }
 
-  printf_cmdl("[CONFIG] %i unknown option(s) in command line starting with %s (section %s)\n",
-              unknowndetected,testprefix,((prefix==NULL)?"":prefix));
+  if (unknowndetected > 0) {
+    CONFIG_PRINTF_ERROR("[CONFIG] %i unknown option(s) in command line starting with %s (section %s)\n",
+                        unknowndetected,testprefix,((prefix==NULL)?"":prefix));
+  }
+
   return unknowndetected;
 }  /* config_check_unknown_cmdlineopt */
 
@@ -200,7 +219,7 @@ int config_process_cmdline(paramdef_t *cfgoptions,int numoptions, char *prefix)
 
       if (pp == NULL || strcasecmp(pp,config_get_if()->argv[i] ) == 0 ) {
         if( prefix == NULL) {
-          config_printhelp(cfgoptions,numoptions);
+          config_printhelp(cfgoptions,numoptions,"(root section)");
 
           if ( ! ( CONFIG_ISFLAGSET(CONFIG_NOEXITONHELP)))
             exit_fun("[CONFIG] Exiting after displaying help\n");
@@ -209,8 +228,7 @@ int config_process_cmdline(paramdef_t *cfgoptions,int numoptions, char *prefix)
         pp=strtok_r(NULL, " ",&tokctx);
 
         if ( prefix != NULL && pp != NULL && strncasecmp(prefix,pp,strlen(pp)) == 0 ) {
-          printf ("Help for %s section:\n",prefix);
-          config_printhelp(cfgoptions,numoptions);
+          config_printhelp(cfgoptions,numoptions,prefix);
 
           if ( ! (CONFIG_ISFLAGSET(CONFIG_NOEXITONHELP))) {
             fprintf(stderr,"[CONFIG] %s %i section %s:", __FILE__, __LINE__, prefix);
@@ -273,16 +291,5 @@ int config_process_cmdline(paramdef_t *cfgoptions,int numoptions, char *prefix)
   }   /* fin du while */
 
   printf_cmdl("[CONFIG] %s %i options set from command line\n",((prefix == NULL) ? "(root)":prefix),j);
-
-  if ( !(CONFIG_ISFLAGSET( CONFIG_NOCHECKUNKOPT )) ) {
-    i=config_check_unknown_cmdlineopt(prefix);
-
-    if (i > 0) {
-      fprintf(stderr,"[CONFIG] %i unknown options for section %s detected in command line\n",
-              i,((prefix==NULL)?"\"root section\"":prefix));
-      exit_fun(" Exiting after detecting errors in command line \n");
-    }
-  }
-
   return j;
 }  /* parse_cmdline*/
diff --git a/common/config/config_load_configmodule.c b/common/config/config_load_configmodule.c
index e20672aa0205d72a2d5c7afc6c7faddb7563c669..a6316d6c3f61fa3c844e01079cd6536c073b6554 100644
--- a/common/config/config_load_configmodule.c
+++ b/common/config/config_load_configmodule.c
@@ -36,12 +36,15 @@
 #include <unistd.h>
 #include <errno.h>
 #include <dlfcn.h>
+#include <platform_types.h>
 
 #define CONFIG_LOADCONFIG_MAIN
 #include "config_load_configmodule.h"
 #include "config_userapi.h"
+#include "../utils/LOG/log.h"
 #define CONFIG_SHAREDLIBFORMAT "libparams_%s.so"
 
+
 int load_config_sharedlib(configmodule_interface_t *cfgptr) {
   void *lib_handle;
   char fname[128];
@@ -198,7 +201,7 @@ configmodule_interface_t *load_configmodule(int argc, char **argv, uint32_t init
     }
 
     if ( strstr(argv[i], "help_config") != NULL  ) {
-      config_printhelp(Config_Params,CONFIG_PARAMLENGTH(Config_Params));
+      config_printhelp(Config_Params,CONFIG_PARAMLENGTH(Config_Params),CONFIG_SECTIONNAME);
       exit(0);
     }
 
@@ -304,7 +307,7 @@ configmodule_interface_t *load_configmodule(int argc, char **argv, uint32_t init
   if (cfgmode != NULL) free(cfgmode);
 
   if (CONFIG_ISFLAGSET(CONFIG_ABORT)) {
-    config_printhelp(Config_Params,CONFIG_PARAMLENGTH(Config_Params));
+    config_printhelp(Config_Params,CONFIG_PARAMLENGTH(Config_Params),CONFIG_SECTIONNAME );
     //       exit(-1);
   }
 
@@ -342,7 +345,7 @@ void free_configmodule(void) {
 
     if( cfgptr->cfgmode != NULL) free(cfgptr->cfgmode);
 
-    printf ("[CONFIG] free %u config parameter pointers\n",cfgptr->num_cfgP);
+    printf ("[CONFIG] free %i config parameter pointers\n",cfgptr->num_cfgP);
 
     for (int i=0; i<cfgptr->num_cfgP; i++) {
       if ( cfgptr->cfgP[i] != NULL) free(cfgptr->cfgP[i]);
diff --git a/common/config/config_load_configmodule.h b/common/config/config_load_configmodule.h
index 2f5c055a0026b7bb06a61e52f1d5c9b482cd82b2..d0309c62c3b66fde19ac8ea6338ce7f05993cef2 100644
--- a/common/config/config_load_configmodule.h
+++ b/common/config/config_load_configmodule.h
@@ -51,7 +51,6 @@
 #define CONFIG_PRINTPARAMS    1                 // print parameters values while processing
 #define CONFIG_DEBUGPTR       (1<<1)            // print memory allocation/free debug messages
 #define CONFIG_DEBUGCMDLINE   (1<<2)            // print command line processing messages
-#define CONFIG_NOCHECKUNKOPT  (1<<3)            // disable check unprocessed (so invalid) command line options 
 #define CONFIG_NOABORTONCHKF  (1<<4)            // disable abort execution when parameter checking function fails
 #define CONFIG_NOEXITONHELP   (1<<19)           // do not exit after printing help
 #define CONFIG_HELP           (1<<20)           // print help message
@@ -109,5 +108,7 @@ extern configmodule_interface_t *cfgptr;
 #define CONFIG_ENABLECMDLINEONLY  (1<<1)
 extern configmodule_interface_t *load_configmodule(int argc, char **argv, uint32_t initflags);
 extern void end_configmodule(void);
+#define CONFIG_PRINTF_ERROR(f, x... ) if (isLogInitDone ()) { LOG_E(ENB_APP,f,x);} else {printf(f,x);}; if ( !CONFIG_ISFLAGSET(CONFIG_NOABORTONCHKF) ) exit_fun("exit because configuration failed\n");
+
 
 #endif  /* INCLUDE_CONFIG_LOADCONFIGMODULE_H */
diff --git a/common/config/config_userapi.c b/common/config/config_userapi.c
index b149bfd6368eaad1fa862fc63def7d3f823b9e95..66d3078d333cc3b697d5ee9ae81b406e213cf064 100644
--- a/common/config/config_userapi.c
+++ b/common/config/config_userapi.c
@@ -39,15 +39,13 @@
 #include <errno.h>
 #include <dlfcn.h>
 #include <arpa/inet.h>
-
 #include <platform_types.h>
 #include "config_userapi.h"
-
+#include "../utils/LOG/log.h"
 
 configmodule_interface_t *config_get_if(void) {
   if (cfgptr == NULL) {
-    fprintf(stderr,"[CONFIG] %s %d config module not initialized\n",__FILE__, __LINE__);
-    exit(-1);
+    CONFIG_PRINTF_ERROR("[CONFIG] %s %d config module not initialized\n",__FILE__,__LINE__);
   }
 
   return cfgptr;
@@ -66,9 +64,8 @@ char *config_check_valptr(paramdef_t *cfgoptions, char **ptr, int length) {
         config_get_if()->numptrs++;
       }
     } else {
-      fprintf(stderr, "[CONFIG] %s %d option %s, cannot allocate pointer: %s \n",
-              __FILE__, __LINE__, cfgoptions->optname, strerror(errno));
-      exit(-1);
+      CONFIG_PRINTF_ERROR("[CONFIG] %s %d option %s, cannot allocate pointer: %s \n",
+                          __FILE__, __LINE__, cfgoptions->optname, strerror(errno));
     }
   }
 
@@ -78,9 +75,8 @@ char *config_check_valptr(paramdef_t *cfgoptions, char **ptr, int length) {
     if (*ptr != NULL) {
       return *ptr;
     } else {
-      fprintf(stderr,"[CONFIG] %s %d option %s, definition error: value pointer is NULL, declared as %i bytes allocated\n",
-              __FILE__, __LINE__,cfgoptions->optname, cfgoptions->numelt);
-      exit(-1);
+      CONFIG_PRINTF_ERROR("[CONFIG] %s %d option %s, definition error: value pointer is NULL, declared as %i bytes allocated\n",
+                          __FILE__, __LINE__,cfgoptions->optname, cfgoptions->numelt);
     }
   }
 
@@ -95,8 +91,7 @@ char *config_check_valptr(paramdef_t *cfgoptions, char **ptr, int length) {
         config_get_if()->numptrs++;
       }
     } else {
-      fprintf (stderr,"[CONFIG] %s %d malloc error\n",__FILE__, __LINE__);
-      exit(-1);
+      CONFIG_PRINTF_ERROR("[CONFIG] %s %d malloc error\n",__FILE__, __LINE__);
     }
   }
 
@@ -157,8 +152,7 @@ void config_assign_processedint(paramdef_t *cfgoption, int val) {
   if (  cfgoption->processedvalue != NULL) {
     *(cfgoption->processedvalue) = val;
   } else {
-    fprintf (stderr,"[CONFIG] %s %d malloc error\n",__FILE__, __LINE__);
-    exit(-1);
+    CONFIG_PRINTF_ERROR("[CONFIG] %s %d malloc error\n",__FILE__, __LINE__);
   }
 }
 
@@ -177,15 +171,17 @@ int config_get_processedint(paramdef_t *cfgoption) {
 
   return ret;
 }
-void config_printhelp(paramdef_t *params,int numparams) {
+void config_printhelp(paramdef_t *params,int numparams, char *prefix) {
+  printf("\n-----Help for section %-26s: %03i entries------\n",(prefix==NULL)?"(root section)":prefix ,numparams);
+
   for (int i=0 ; i<numparams ; i++) {
-    if ( params[i].helpstr != NULL) {
-      printf("%s%s: %s",
-             (strlen(params[i].optname) <= 1) ? "-" : "--",
-             params[i].optname,
-             params[i].helpstr);
-    }
-  }
+    printf("    %s%s: %s",
+           (strlen(params[i].optname) <= 1) ? "-" : "--",
+           params[i].optname,
+           (params[i].helpstr != NULL)?params[i].helpstr:"Help string not specified\n");
+  }   /* for on params entries */
+
+  printf("--------------------------------------------------------------------\n\n");
 }
 
 int config_execcheck(paramdef_t *params,int numparams, char *prefix) {
@@ -202,11 +198,7 @@ int config_execcheck(paramdef_t *params,int numparams, char *prefix) {
   }
 
   if (st != 0) {
-    fprintf(stderr,"[CONFIG] config_execcheck: section %s %i parameters with wrong value\n", prefix, -st);
-
-    if ( CONFIG_ISFLAGSET(CONFIG_NOABORTONCHKF) == 0) {
-      exit_fun("exit because configuration failed\n");
-    }
+    CONFIG_PRINTF_ERROR("[CONFIG] config_execcheck: section %s %i parameters with wrong value\n", prefix, -st);
   }
 
   return st;
@@ -263,6 +255,7 @@ int config_getlist(paramlist_def_t *ParamList, paramdef_t *params, int numparams
     for (int i = 0; i < ParamList->numelt; ++i) {
       // TODO config_process_cmdline?
       sprintf(cfgpath, "%s.[%i]", newprefix, i);
+      config_process_cmdline(ParamList->paramarray[i],numparams,cfgpath);
       config_execcheck(ParamList->paramarray[i], numparams, cfgpath);
     }
 
diff --git a/common/config/config_userapi.h b/common/config/config_userapi.h
index d0508ffbeb97f1302463dd91341f7eefa8598f1a..cc07b1af5fbdabe89c814a9d79a2d2fd11ee9e90 100644
--- a/common/config/config_userapi.h
+++ b/common/config/config_userapi.h
@@ -49,7 +49,7 @@ extern "C"
 /* utility functions, to be used by configuration module and/or configuration libraries */
 extern configmodule_interface_t *config_get_if(void);
 extern char *config_check_valptr(paramdef_t *cfgoptions, char **ptr, int length) ;
-extern void config_printhelp(paramdef_t *,int numparams);
+extern void config_printhelp(paramdef_t *,int numparams, char *prefix);
 extern int config_process_cmdline(paramdef_t *params,int numparams, char *prefix);
 extern void config_assign_processedint(paramdef_t *cfgoption, int val);
 extern void config_assign_int(paramdef_t *cfgoptions, char *fullname, int val);
diff --git a/common/utils/LOG/log.c b/common/utils/LOG/log.c
index e2dbac43ef584462dfbcfc23b42bb5b4dd3cca12..7a2f2b99f44862db82e43a41e8db1ed797745533 100644
--- a/common/utils/LOG/log.c
+++ b/common/utils/LOG/log.c
@@ -219,7 +219,6 @@ void  log_getconfig(log_t *g_log) {
   paramdef_t logparams_logfile[MAX_LOG_PREDEF_COMPONENTS];
   paramdef_t logparams_debug[sizeof(log_maskmap)/sizeof(mapping)];
   paramdef_t logparams_dump[sizeof(log_maskmap)/sizeof(mapping)];
-  CONFIG_SETRTFLAG(CONFIG_NOCHECKUNKOPT);
   int ret = config_get( logparams_defaults,sizeof(logparams_defaults)/sizeof(paramdef_t),CONFIG_STRING_LOG_PREFIX);
 
   if (ret <0) {
@@ -305,8 +304,8 @@ void  log_getconfig(log_t *g_log) {
   }
 
   config_get( logparams_debug,(sizeof(log_maskmap)/sizeof(mapping)) - 1 ,CONFIG_STRING_LOG_PREFIX);
-  CONFIG_CLEARRTFLAG(CONFIG_NOCHECKUNKOPT);
   config_get( logparams_dump,(sizeof(log_maskmap)/sizeof(mapping)) - 1 ,CONFIG_STRING_LOG_PREFIX);
+  config_check_unknown_cmdlineopt(CONFIG_STRING_LOG_PREFIX);
 
   /* set the debug mask according to the debug parameters values */
   for (int i=0; log_maskmap[i].name != NULL ; i++) {
diff --git a/common/utils/LOG/log.h b/common/utils/LOG/log.h
index d0aa4a47c83377a2cee9f6f8f25dcdd57f3d7d88..5d8ad06bec03c5f92698397f01f58a8cae62b145 100644
--- a/common/utils/LOG/log.h
+++ b/common/utils/LOG/log.h
@@ -145,6 +145,7 @@ extern "C" {
 #define DEBUG_CTRLSOCKET   (1<<10)
 #define DEBUG_SECURITY     (1<<11)
 #define DEBUG_NAS          (1<<12)
+#define DEBUG_RLC          (1<<13)
 #define UE_TIMING          (1<<20)
 
 
@@ -162,6 +163,7 @@ extern "C" {
     {"CTRLSOCKET",  DEBUG_CTRLSOCKET},\
     {"SECURITY",    DEBUG_SECURITY},\
     {"NAS",         DEBUG_NAS},\
+    {"RLC",         DEBUG_RLC},\
     {"UE_TIMING",   UE_TIMING},\
     {NULL,-1}\
   }
@@ -345,6 +347,8 @@ int32_t write_file_matlab(const char *fname, const char *vname, void *data, int
   }
 
 #define LOG_OPTIONS_IDX   2
+
+
 /*----------------------------------------------------------------------------------*/
 /** @defgroup _debugging debugging macros
  *  @ingroup _macro
diff --git a/common/utils/T/T.c b/common/utils/T/T.c
index 140da3068848c8aee4e3eedeef0ee084e0f52a81..8ee359b77f491518e4aa934851f087bc040175c7 100644
--- a/common/utils/T/T.c
+++ b/common/utils/T/T.c
@@ -12,15 +12,17 @@
 #include "common/config/config_userapi.h"
 
 #define QUIT(x) do { \
-  printf("T tracer: QUIT: %s\n", x); \
-  exit(1); \
-} while (0)
+    printf("T tracer: QUIT: %s\n", x); \
+    exit(1); \
+  } while (0)
 
 /* array used to activate/disactivate a log */
 static int T_IDs[T_NUMBER_OF_IDS];
 int *T_active = T_IDs;
+
 int T_stdout = 1;
 
+
 static int T_socket;
 
 /* T_cache
@@ -32,125 +34,159 @@ volatile int *T_freelist_head = &_T_freelist_head;
 T_cache_t *T_cache;
 
 #if BASIC_SIMULATOR
-/* global variables used by T_GET_SLOT, see in T.h */
-volatile uint64_t T_next_id;
-volatile uint64_t T_active_id;
+  /* global variables used by T_GET_SLOT, see in T.h */
+  volatile uint64_t T_next_id;
+  volatile uint64_t T_active_id;
 #endif
 
-static void get_message(int s)
-{
+static void get_message(int s) {
   char t;
   int l;
   int id;
   int is_on;
 
   if (read(s, &t, 1) != 1) QUIT("get_message fails");
-printf("T tracer: got mess %d\n", t);
+
+  printf("T tracer: got mess %d\n", t);
+
   switch (t) {
-  case 0:
-    /* toggle all those IDs */
-    /* optimze? (too much syscalls) */
-    if (read(s, &l, sizeof(int)) != sizeof(int)) QUIT("get_message fails");
-    while (l) {
-      if (read(s, &id, sizeof(int)) != sizeof(int)) QUIT("get_message fails");
-      T_IDs[id] = 1 - T_IDs[id];
-      l--;
-    }
-    break;
-  case 1:
-    /* set IDs as given */
-    /* optimize? */
-    if (read(s, &l, sizeof(int)) != sizeof(int)) QUIT("get_message fails");
-    id = 0;
-    while (l) {
-      if (read(s, &is_on, sizeof(int)) != sizeof(int))
-        QUIT("get_message fails");
-      T_IDs[id] = is_on;
-      id++;
-      l--;
-    }
-    break;
-  case 2: break; /* do nothing, this message is to wait for local tracer */
+    case 0:
+
+      /* toggle all those IDs */
+      /* optimze? (too much syscalls) */
+      if (read(s, &l, sizeof(int)) != sizeof(int)) QUIT("get_message fails");
+
+      while (l) {
+        if (read(s, &id, sizeof(int)) != sizeof(int)) QUIT("get_message fails");
+
+        T_IDs[id] = 1 - T_IDs[id];
+        l--;
+      }
+
+      break;
+
+    case 1:
+
+      /* set IDs as given */
+      /* optimize? */
+      if (read(s, &l, sizeof(int)) != sizeof(int)) QUIT("get_message fails");
+
+      id = 0;
+
+      while (l) {
+        if (read(s, &is_on, sizeof(int)) != sizeof(int))
+          QUIT("get_message fails");
+
+        T_IDs[id] = is_on;
+        id++;
+        l--;
+      }
+
+      break;
+
+    case 2:
+      break; /* do nothing, this message is to wait for local tracer */
   }
 }
 
-static void *T_receive_thread(void *_)
-{
+static void *T_receive_thread(void *_) {
   while (1) get_message(T_socket);
+
   return NULL;
 }
 
-static void new_thread(void *(*f)(void *), void *data)
-{
+static void new_thread(void *(*f)(void *), void *data) {
   pthread_t t;
   pthread_attr_t att;
 
-  if (pthread_attr_init(&att))
-    { fprintf(stderr, "pthread_attr_init err\n"); exit(1); }
-  if (pthread_attr_setdetachstate(&att, PTHREAD_CREATE_DETACHED))
-    { fprintf(stderr, "pthread_attr_setdetachstate err\n"); exit(1); }
-  if (pthread_create(&t, &att, f, data))
-    { fprintf(stderr, "pthread_create err\n"); exit(1); }
-  if (pthread_attr_destroy(&att))
-    { fprintf(stderr, "pthread_attr_destroy err\n"); exit(1); }
+  if (pthread_attr_init(&att)) {
+    fprintf(stderr, "pthread_attr_init err\n");
+    exit(1);
+  }
+
+  if (pthread_attr_setdetachstate(&att, PTHREAD_CREATE_DETACHED)) {
+    fprintf(stderr, "pthread_attr_setdetachstate err\n");
+    exit(1);
+  }
+
+  if (pthread_create(&t, &att, f, data)) {
+    fprintf(stderr, "pthread_create err\n");
+    exit(1);
+  }
+
+  if (pthread_attr_destroy(&att)) {
+    fprintf(stderr, "pthread_attr_destroy err\n");
+    exit(1);
+  }
 }
 
 /* defined in local_tracer.c */
 void T_local_tracer_main(int remote_port, int wait_for_tracer,
-    int local_socket, void *shm_array);
+                         int local_socket, void *shm_array);
 
 /* We monitor the tracee and the local tracer processes.
  * When one dies we forcefully kill the other.
  */
 #include <sys/types.h>
 #include <sys/wait.h>
-static void monitor_and_kill(int child1, int child2)
-{
+static void monitor_and_kill(int child1, int child2) {
   int child;
   int status;
-
   child = wait(&status);
+
   if (child == -1) perror("wait");
+
   kill(child1, SIGKILL);
   kill(child2, SIGKILL);
   exit(0);
 }
 
-void T_init(int remote_port, int wait_for_tracer, int dont_fork)
-{
+void T_init(int remote_port, int wait_for_tracer, int dont_fork) {
   int socket_pair[2];
   int s;
   int child1, child2;
   int i;
 
-  if (socketpair(AF_UNIX, SOCK_STREAM, 0, socket_pair))
-    { perror("socketpair"); abort(); }
+  if (socketpair(AF_UNIX, SOCK_STREAM, 0, socket_pair)) {
+    perror("socketpair");
+    abort();
+  }
 
   /* setup shared memory */
   T_cache = mmap(NULL, T_CACHE_SIZE * sizeof(T_cache_t),
                  PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0);
-  if (T_cache == MAP_FAILED)
-    { perror("mmap"); abort(); }
+
+  if (T_cache == MAP_FAILED) {
+    perror("mmap");
+    abort();
+  }
 
   /* let's garbage the memory to catch some potential problems
    * (think multiprocessor sync issues, barriers, etc.)
    */
   memset(T_cache, 0x55, T_CACHE_SIZE * sizeof(T_cache_t));
+
   for (i = 0; i < T_CACHE_SIZE; i++) T_cache[i].busy = 0;
 
   /* child1 runs the local tracer and child2 (or main) runs the tracee */
+  child1 = fork();
+
+  if (child1 == -1) abort();
 
-  child1 = fork(); if (child1 == -1) abort();
   if (child1 == 0) {
     close(socket_pair[1]);
     T_local_tracer_main(remote_port, wait_for_tracer, socket_pair[0],
                         T_cache);
     exit(0);
   }
+
   close(socket_pair[0]);
 
   if (dont_fork == 0) {
-    child2 = fork(); if (child2 == -1) abort();
+    child2 = fork();
+
+    if (child2 == -1) abort();
+
     if (child2 != 0) {
       close(socket_pair[1]);
       munmap(T_cache, T_CACHE_SIZE * sizeof(T_cache_t));
@@ -161,27 +197,21 @@ void T_init(int remote_port, int wait_for_tracer, int dont_fork)
   s = socket_pair[1];
   /* wait for first message - initial list of active T events */
   get_message(s);
-
   T_socket = s;
-
   new_thread(T_receive_thread, NULL);
 }
 
-void T_Config_Init(void)
-{
-  int T_port;         /* by default we wait for the tracer */
-  int T_nowait;       /* default port to listen to to wait for the tracer */
-  int T_dont_fork;    /* default is to fork, see 'T_init' to understand */
-
+void T_Config_Init(void) {
+  int T_port=TTRACER_DEFAULT_PORTNUM; /* by default we wait for the tracer */
+  int T_nowait=0;                     /* default port to listen to to wait for the tracer */
+  int T_dont_fork=0;                  /* default is to fork, see 'T_init' to understand */
   paramdef_t ttraceparams[] = CMDLINE_TTRACEPARAMS_DESC;
-
   /* for a cleaner config file, TTracer params should be defined in a
    * specific section...
    */
   config_get(ttraceparams,
              sizeof(ttraceparams) / sizeof(paramdef_t),
              TTRACER_CONFIG_PREFIX);
-
   /* compatibility: look for TTracer command line options in root section */
   config_process_cmdline(ttraceparams,
                          sizeof(ttraceparams) / sizeof(paramdef_t),
diff --git a/common/utils/T/T.h b/common/utils/T/T.h
index 18e4a590d9444d12257d5207b4e00446d2811f6b..626dbafd2586840657e515ca66a6f5ab8776080b 100644
--- a/common/utils/T/T.h
+++ b/common/utils/T/T.h
@@ -8,7 +8,7 @@
 #include "T_defs.h"
 
 #ifdef T_SEND_TIME
-#include <time.h>
+  #include <time.h>
 #endif
 
 /* T message IDs */
@@ -76,13 +76,13 @@
                              T_BUFFER_MAX - T_LOCAL_size, T_PUT_printf_deref x); \
     if (T_PUT_len < 0) { \
       printf("%s:%d:%s: you can't read this, or can you?", \
-               __FILE__, __LINE__, __FUNCTION__); \
+             __FILE__, __LINE__, __FUNCTION__); \
       abort(); \
     } \
     if (T_PUT_len >= T_BUFFER_MAX - T_LOCAL_size) { \
       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); \
+             ", consider increasing T_BUFFER_MAX (%d)\n", \
+             __FILE__, __LINE__, __FUNCTION__, argnum, T_BUFFER_MAX); \
       abort(); \
     } \
     T_LOCAL_size += T_PUT_len + 1; \
@@ -97,9 +97,9 @@ struct T_header;
 /* T macro tricks */
 extern int T_stdout;
 #define TN(...) TN_N(__VA_ARGS__,33,32,31,30,29,28,27,26,25,24,23,22,21,\
-        20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0)(__VA_ARGS__)
+                     20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0)(__VA_ARGS__)
 #define TN_N(n0,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,\
-        n18,n19,n20,n21,n22,n23,n24,n25,n26,n27,n28,n29,n30,n31,n32,n,...) T##n
+             n18,n19,n20,n21,n22,n23,n24,n25,n26,n27,n28,n29,n30,n31,n32,n,...) T##n
 #define T(...) do { if (T_stdout == 0) TN(__VA_ARGS__); } while (0)
 
 /* type used to send arbitrary buffer data */
@@ -119,30 +119,30 @@ extern int *T_active;
  */
 #if BASIC_SIMULATOR
 #  define T_GET_SLOT \
-     do { \
-       extern volatile uint64_t T_next_id; \
-       extern volatile uint64_t T_active_id; \
-       uint64_t id; \
-       /* get a ticket */ \
-       id = __sync_fetch_and_add(&T_next_id, 1); \
-       /* wait for our turn */ \
-       while (id != __sync_fetch_and_add(&T_active_id, 0)) /* busy wait */; \
-       /* this is our turn, try to acquire the slot until it's free */ \
-       do { \
-         T_LOCAL_busy = __sync_fetch_and_or(&T_cache[T_LOCAL_slot].busy, 0x01); \
-         if (T_LOCAL_busy & 0x01) usleep(100); \
-       } while (T_LOCAL_busy & 0x01); \
-       /* check that there are still some tickets */ \
-       if (__sync_fetch_and_add(&T_active_id, 0) == 0xffffffffffffffff) { \
-         printf("T: reached the end of times, bye...\n"); \
-         abort(); \
-       } \
-       /* free our ticket, which signals the next waiter that it's its turn */ \
-       (void)__sync_fetch_and_add(&T_active_id, 1); \
-     } while (0)
+  do { \
+    extern volatile uint64_t T_next_id; \
+    extern volatile uint64_t T_active_id; \
+    uint64_t id; \
+    /* get a ticket */ \
+    id = __sync_fetch_and_add(&T_next_id, 1); \
+    /* wait for our turn */ \
+    while (id != __sync_fetch_and_add(&T_active_id, 0)) /* busy wait */; \
+    /* this is our turn, try to acquire the slot until it's free */ \
+    do { \
+      T_LOCAL_busy = __sync_fetch_and_or(&T_cache[T_LOCAL_slot].busy, 0x01); \
+      if (T_LOCAL_busy & 0x01) usleep(100); \
+    } while (T_LOCAL_busy & 0x01); \
+    /* check that there are still some tickets */ \
+    if (__sync_fetch_and_add(&T_active_id, 0) == 0xffffffffffffffff) { \
+      printf("T: reached the end of times, bye...\n"); \
+      abort(); \
+    } \
+    /* free our ticket, which signals the next waiter that it's its turn */ \
+    (void)__sync_fetch_and_add(&T_active_id, 1); \
+  } while (0)
 #else
 #  define T_GET_SLOT \
-     T_LOCAL_busy = __sync_fetch_and_or(&T_cache[T_LOCAL_slot].busy, 0x01);
+  T_LOCAL_busy = __sync_fetch_and_or(&T_cache[T_LOCAL_slot].busy, 0x01);
 #endif
 
 /* used at header of Tn, allocates buffer */
@@ -172,8 +172,8 @@ extern int *T_active;
 #define T_CHECK_SIZE(len, argnum) \
   if (T_LOCAL_size + (len) > 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); \
+           ", consider increasing T_BUFFER_MAX (%d)\n", \
+           __FILE__, __LINE__, __FUNCTION__, argnum, T_BUFFER_MAX); \
     abort(); \
   }
 
@@ -598,20 +598,21 @@ extern int *T_active;
 
 
 #define TTRACER_CONFIG_PREFIX   "TTracer"
-/*------------------------------------------------------------------------------------------------------------------------------------------*/
-/*                                            configuration parameters for TTRACE utility                                                   */
-/*   optname                     helpstr                paramflags           XXXptr           defXXXval         type       numelt           */
-/*------------------------------------------------------------------------------------------------------------------------------------------*/
+/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
+/*                                            configuration parameters for TTRACE utility                                                          */
+/*   optname                     helpstr                paramflags           XXXptr           defXXXval                         type       numelt  */
+/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
+#define TTRACER_DEFAULT_PORTNUM 2021
 #define CMDLINE_TTRACEPARAMS_DESC {  \
-{"T_port",                     CONFIG_HLP_TPORT,      0,                iptr:&T_port,        defintval:2021,     TYPE_INT,   0},           \
-{"T_nowait",                   CONFIG_HLP_NOTWAIT,    PARAMFLAG_BOOL,   iptr:&T_nowait,      defintval:0,        TYPE_INT,   0},           \
-{"T_dont_fork",                CONFIG_HLP_TNOFORK,    PARAMFLAG_BOOL,   iptr:&T_dont_fork,   defintval:0,        TYPE_INT,   0},           \
-{"T_stdout",                   CONFIG_HLP_STDOUT,     PARAMFLAG_BOOL,   iptr:&T_stdout,      defintval:1,        TYPE_INT,   0},           \
-} 
+    {"T_port",                     CONFIG_HLP_TPORT,      0,                iptr:&T_port,        defintval:TTRACER_DEFAULT_PORTNUM, TYPE_INT,   0},\
+    {"T_nowait",                   CONFIG_HLP_NOTWAIT,    PARAMFLAG_BOOL,   iptr:&T_nowait,      defintval:0,                       TYPE_INT,   0},\
+    {"T_dont_fork",                CONFIG_HLP_TNOFORK,    PARAMFLAG_BOOL,   iptr:&T_dont_fork,   defintval:0,                       TYPE_INT,   0},\
+    {"T_stdout",                   CONFIG_HLP_STDOUT,     PARAMFLAG_BOOL,   iptr:&T_stdout,      defintval:1,                       TYPE_INT,   0},\
+  }
 
 
 
-        /* log on stdout */
+/* log on stdout */
 void T_init(int remote_port, int wait_for_tracer, int dont_fork);
 void T_Config_Init(void);
 #else /* T_TRACER */
diff --git a/common/utils/msc/msc.c b/common/utils/msc/msc.c
index 4c9e3827b069ee20ced71cbb6304533551c3e937..7cb6da21b513b99f6a9f184131df47c5893812bf 100644
--- a/common/utils/msc/msc.c
+++ b/common/utils/msc/msc.c
@@ -49,7 +49,7 @@
 
 //-------------------------------
 
-FILE*    g_msc_fd;
+FILE    *g_msc_fd;
 char     g_msc_proto2str[MAX_MSC_PROTOS][MSC_MAX_PROTO_NAME_LENGTH];
 
 
@@ -70,15 +70,11 @@ void *msc_task(void *args_p)
 //------------------------------------------------------------------------------
 {
   MessageDef         *received_message_p    = NULL;
-//  const char         *msg_name = NULL;
-//  instance_t          instance  = 0;
+  //  const char         *msg_name = NULL;
+  //  instance_t          instance  = 0;
   long                timer_id;
-
   itti_mark_task_ready(TASK_MSC);
-
   msc_start_use();
-
-
   timer_setup(0, // seconds
               50000, // usec
               TASK_MSC,
@@ -91,20 +87,18 @@ void *msc_task(void *args_p)
     itti_receive_msg(TASK_MSC, &received_message_p);
 
     if (received_message_p != NULL) {
-//      msg_name = ITTI_MSG_NAME (received_message_p);
-//      instance = ITTI_MSG_INSTANCE (received_message_p);
-      
+      //      msg_name = ITTI_MSG_NAME (received_message_p);
+      //      instance = ITTI_MSG_INSTANCE (received_message_p);
       switch (ITTI_MSG_ID(received_message_p)) {
-
         case TIMER_HAS_EXPIRED: {
-    	  msc_flush_messages();
+          msc_flush_messages();
         }
         break;
 
         case TERMINATE_MESSAGE: {
           fprintf(stderr, " *** Exiting MSC thread\n");
           timer_remove(timer_id);
-    	  msc_end();
+          msc_end();
           itti_exit_task();
         }
         break;
@@ -119,6 +113,7 @@ void *msc_task(void *args_p)
       }
     }
   }
+
   fprintf(stderr, "Task MSC exiting\n");
   return NULL;
 }
@@ -132,15 +127,16 @@ int msc_init(const msc_env_t envP, const int max_threadsP)
   void *pointer_p;
   char  msc_filename[256];
   fprintf(stderr, "Initializing MSC logs\n");
+  rv = snprintf(msc_filename, 256, "/tmp/openair.msc.%i.log", envP); // TODO NAME
 
-  rv = snprintf(msc_filename, 256, "/tmp/openair.msc.%u.log", envP); // TODO NAME
-  if ((0 >= rv) || (256 < rv)){
+  if ((0 >= rv) || (256 < rv)) {
     fprintf(stderr, "Error in MSC log file name");
   }
+
   g_msc_fd = fopen(msc_filename,"w");
   AssertFatal(g_msc_fd != NULL, "Could not open MSC log file %s : %s", msc_filename, strerror(errno));
-
   rv = lfds611_stack_new(&g_msc_memory_stack_p, (lfds611_atom_t)max_threadsP + 2);
+
   if (0 >= rv) {
     AssertFatal (0, "lfds611_stack_new failed!\n");
   }
@@ -153,7 +149,7 @@ int msc_init(const msc_env_t envP, const int max_threadsP)
   for (i=0; i < max_threadsP * 30; i++) {
     pointer_p = malloc(MSC_MAX_MESSAGE_LENGTH);
     AssertFatal (pointer_p, "malloc failed!\n");
- 	rv = lfds611_stack_guaranteed_push( g_msc_memory_stack_p, pointer_p );
+    rv = lfds611_stack_guaranteed_push( g_msc_memory_stack_p, pointer_p );
     AssertFatal (rv, "lfds611_stack_guaranteed_push failed for item %u\n", i);
   }
 
@@ -161,182 +157,335 @@ int msc_init(const msc_env_t envP, const int max_threadsP)
     switch (i) {
       case MSC_IP_UE:
         rv = snprintf(&g_msc_proto2str[i][0], MSC_MAX_PROTO_NAME_LENGTH, "IP_UE");
-        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;}
+
+        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {
+          g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;
+        }
+
         if ((envP == MSC_E_UTRAN) || (envP == MSC_E_UTRAN_LIPA)) {
           msc_log_declare_proto(i);
         }
+
         break;
+
       case MSC_IP_ENB:
         rv = snprintf(&g_msc_proto2str[i][0], MSC_MAX_PROTO_NAME_LENGTH, "IP_ENB");
-        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;}
+
+        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {
+          g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;
+        }
+
         if (envP == MSC_E_UTRAN_LIPA) {
           msc_log_declare_proto(i);
         }
+
         break;
+
       case MSC_NAS_UE:
         rv = snprintf(&g_msc_proto2str[i][0], MSC_MAX_PROTO_NAME_LENGTH, "NAS_UE");
-        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;}
+
+        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {
+          g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;
+        }
+
         if ((envP == MSC_E_UTRAN) || (envP == MSC_E_UTRAN_LIPA)) {
           msc_log_declare_proto(i);
         }
+
         break;
+
       case MSC_RRC_UE:
         rv = snprintf(&g_msc_proto2str[i][0], MSC_MAX_PROTO_NAME_LENGTH, "RRC_UE");
-        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;}
+
+        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {
+          g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;
+        }
+
         if ((envP == MSC_E_UTRAN) || (envP == MSC_E_UTRAN_LIPA)) {
           msc_log_declare_proto(i);
         }
+
         break;
+
       case MSC_PDCP_UE:
         rv = snprintf(&g_msc_proto2str[i][0], MSC_MAX_PROTO_NAME_LENGTH, "PDCP_UE");
-        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;}
+
+        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {
+          g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;
+        }
+
         if ((envP == MSC_E_UTRAN) || (envP == MSC_E_UTRAN_LIPA)) {
           msc_log_declare_proto(i);
         }
+
         break;
+
       case MSC_RLC_UE:
-    	rv = snprintf(&g_msc_proto2str[i][0], MSC_MAX_PROTO_NAME_LENGTH, "RLC_UE");
-    	if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;}
-    	if ((envP == MSC_E_UTRAN) || (envP == MSC_E_UTRAN_LIPA)) {
+        rv = snprintf(&g_msc_proto2str[i][0], MSC_MAX_PROTO_NAME_LENGTH, "RLC_UE");
+
+        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {
+          g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;
+        }
+
+        if ((envP == MSC_E_UTRAN) || (envP == MSC_E_UTRAN_LIPA)) {
           msc_log_declare_proto(i);
         }
+
         break;
+
       case MSC_MAC_UE:
         rv = snprintf(&g_msc_proto2str[i][0], MSC_MAX_PROTO_NAME_LENGTH, "MAC_UE");
-        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;}
+
+        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {
+          g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;
+        }
+
         if ((envP == MSC_E_UTRAN) || (envP == MSC_E_UTRAN_LIPA)) {
-      	  msc_log_declare_proto(i);
+          msc_log_declare_proto(i);
         }
+
         break;
+
       case MSC_PHY_UE:
         rv = snprintf(&g_msc_proto2str[i][0], MSC_MAX_PROTO_NAME_LENGTH, "PHY_UE");
-        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;}
+
+        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {
+          g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;
+        }
+
         if ((envP == MSC_E_UTRAN) || (envP == MSC_E_UTRAN_LIPA)) {
           msc_log_declare_proto(i);
         }
+
         break;
+
       case MSC_PHY_ENB:
         rv = snprintf(&g_msc_proto2str[i][0], MSC_MAX_PROTO_NAME_LENGTH, "PHY_ENB");
-        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;}
+
+        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {
+          g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;
+        }
+
         if ((envP == MSC_E_UTRAN) || (envP == MSC_E_UTRAN_LIPA)) {
           msc_log_declare_proto(i);
         }
+
         break;
+
       case MSC_MAC_ENB:
         rv = snprintf(&g_msc_proto2str[i][0], MSC_MAX_PROTO_NAME_LENGTH, "MAC_ENB");
-        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;}
+
+        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {
+          g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;
+        }
+
         if ((envP == MSC_E_UTRAN) || (envP == MSC_E_UTRAN_LIPA)) {
           msc_log_declare_proto(i);
         }
+
         break;
+
       case MSC_RLC_ENB:
         rv = snprintf(&g_msc_proto2str[i][0], MSC_MAX_PROTO_NAME_LENGTH, "RLC_ENB");
-        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;}
+
+        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {
+          g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;
+        }
+
         if ((envP == MSC_E_UTRAN) || (envP == MSC_E_UTRAN_LIPA)) {
           msc_log_declare_proto(i);
         }
+
         break;
+
       case MSC_PDCP_ENB:
         rv = snprintf(&g_msc_proto2str[i][0], MSC_MAX_PROTO_NAME_LENGTH, "PDCP_ENB");
-        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;}
+
+        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {
+          g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;
+        }
+
         if ((envP == MSC_E_UTRAN) || (envP == MSC_E_UTRAN_LIPA)) {
           msc_log_declare_proto(i);
         }
+
         break;
+
       case MSC_RRC_ENB:
         rv = snprintf(&g_msc_proto2str[i][0], MSC_MAX_PROTO_NAME_LENGTH, "RRC_ENB");
-        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;}
+
+        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {
+          g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;
+        }
+
         if ((envP == MSC_E_UTRAN) || (envP == MSC_E_UTRAN_LIPA)) {
           msc_log_declare_proto(i);
         }
+
         break;
+
       case MSC_S1AP_ENB:
         rv = snprintf(&g_msc_proto2str[i][0], MSC_MAX_PROTO_NAME_LENGTH, "S1AP_ENB");
-        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;}
+
+        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {
+          g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;
+        }
+
         if ((envP == MSC_E_UTRAN) || (envP == MSC_MME_GW)  || (envP == MSC_MME)) {
           msc_log_declare_proto(i);
         }
+
         break;
+
       case MSC_GTPU_ENB:
         rv = snprintf(&g_msc_proto2str[i][0], MSC_MAX_PROTO_NAME_LENGTH, "GTPU_ENB");
-        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;}
+
+        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {
+          g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;
+        }
+
         if ((envP == MSC_E_UTRAN) || (envP == MSC_E_UTRAN_LIPA)) {
           msc_log_declare_proto(i);
         }
+
         break;
+
       case MSC_GTPU_SGW:
         rv = snprintf(&g_msc_proto2str[i][0], MSC_MAX_PROTO_NAME_LENGTH, "GTPU_SGW");
-        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;}
+
+        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {
+          g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;
+        }
+
         if ((envP == MSC_MME_GW) || (envP == MSC_E_UTRAN) || (envP == MSC_E_UTRAN_LIPA)) {
           msc_log_declare_proto(i);
         }
+
         break;
+
       case MSC_S1AP_MME:
         rv = snprintf(&g_msc_proto2str[i][0], MSC_MAX_PROTO_NAME_LENGTH, "S1AP_MME");
-        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;}
+
+        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {
+          g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;
+        }
+
         if ((envP == MSC_MME_GW) || (envP == MSC_MME) || (envP == MSC_E_UTRAN) || (envP == MSC_E_UTRAN_LIPA)) {
           msc_log_declare_proto(i);
         }
+
         break;
+
       case MSC_MMEAPP_MME:
         rv = snprintf(&g_msc_proto2str[i][0], MSC_MAX_PROTO_NAME_LENGTH, "MME_APP");
-        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;}
+
+        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {
+          g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;
+        }
+
         if ((envP == MSC_MME_GW) || (envP == MSC_MME)) {
           msc_log_declare_proto(i);
         }
+
         break;
+
       case MSC_NAS_MME:
         rv = snprintf(&g_msc_proto2str[i][0], MSC_MAX_PROTO_NAME_LENGTH, "NAS_MME");
-        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;}
+
+        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {
+          g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;
+        }
+
         msc_log_declare_proto(i);
         break;
+
       case MSC_NAS_EMM_MME:
         rv = snprintf(&g_msc_proto2str[i][0], MSC_MAX_PROTO_NAME_LENGTH, "NAS_EMM");
-        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;}
+
+        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {
+          g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;
+        }
+
         if ((envP == MSC_MME_GW) || (envP == MSC_MME)) {
           msc_log_declare_proto(i);
         }
+
         break;
+
       case MSC_NAS_ESM_MME:
         rv = snprintf(&g_msc_proto2str[i][0], MSC_MAX_PROTO_NAME_LENGTH, "NAS_ESM");
-        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;}
+
+        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {
+          g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;
+        }
+
         if ((envP == MSC_MME_GW) || (envP == MSC_MME)) {
           msc_log_declare_proto(i);
         }
+
         break;
+
       case MSC_SP_GWAPP_MME:
         rv = snprintf(&g_msc_proto2str[i][0], MSC_MAX_PROTO_NAME_LENGTH, "SP_GW_MME");
-        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;}
+
+        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {
+          g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;
+        }
+
         if (envP == MSC_MME_GW) {
           msc_log_declare_proto(i);
         }
+
         break;
+
       case MSC_S11_MME:
         rv = snprintf(&g_msc_proto2str[i][0], MSC_MAX_PROTO_NAME_LENGTH, "S11_MME");
-        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;}
+
+        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {
+          g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;
+        }
+
         if (envP == MSC_MME) {
           msc_log_declare_proto(i);
         }
+
         break;
+
       case MSC_S6A_MME:
         rv = snprintf(&g_msc_proto2str[i][0], MSC_MAX_PROTO_NAME_LENGTH, "S6A");
-        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;}
+
+        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {
+          g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;
+        }
+
         if ((envP == MSC_MME_GW) || (envP == MSC_MME)) {
           msc_log_declare_proto(i);
         }
+
         break;
+
       case MSC_HSS:
         rv = snprintf(&g_msc_proto2str[i][0], MSC_MAX_PROTO_NAME_LENGTH, "HSS");
-        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;}
+
+        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {
+          g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;
+        }
+
         if ((envP == MSC_MME_GW) || (envP == MSC_MME)) {
           msc_log_declare_proto(i);
         }
+
         break;
+
       default:
         rv = snprintf(&g_msc_proto2str[i][0], MSC_MAX_PROTO_NAME_LENGTH, "UNKNOWN");
-        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;}
+
+        if (rv >= MSC_MAX_PROTO_NAME_LENGTH) {
+          g_msc_proto2str[i][MSC_MAX_PROTO_NAME_LENGTH-1] = 0;
+        }
     }
   }
+
   rv = itti_create_task (TASK_MSC, msc_task, NULL);
   AssertFatal (rv == 0, "Create task for MSC failed!\n");
   fprintf(stderr, "Initializing MSC logs Done\n");
@@ -359,15 +508,17 @@ void msc_flush_messages(void)
   int               rv;
   msc_queue_item_t *item_p = NULL;
 
-  while ((rv = lfds611_queue_dequeue( g_msc_message_queue_p, (void**)&item_p )) == 1) {
-	if (NULL != item_p->message_str) {
-	  fputs(item_p->message_str, g_msc_fd);
-	  // TODO BIN DATA
-	  rv = lfds611_stack_guaranteed_push( g_msc_memory_stack_p, item_p->message_str );
-	}
-	// TODO FREE BIN DATA
-	free(item_p);
+  while ((rv = lfds611_queue_dequeue( g_msc_message_queue_p, (void **)&item_p )) == 1) {
+    if (NULL != item_p->message_str) {
+      fputs(item_p->message_str, g_msc_fd);
+      // TODO BIN DATA
+      rv = lfds611_stack_guaranteed_push( g_msc_memory_stack_p, item_p->message_str );
+    }
+
+    // TODO FREE BIN DATA
+    free(item_p);
   }
+
   fflush(g_msc_fd);
 }
 
@@ -377,23 +528,27 @@ void msc_end(void)
 //------------------------------------------------------------------------------
 {
   int rv;
+
   if (NULL != g_msc_fd ) {
-	msc_flush_messages();
+    msc_flush_messages();
     rv = fflush(g_msc_fd);
-	if (rv != 0) {
-	  fprintf(stderr, "Error while flushing stream of MSC log file: %s", strerror(errno));
+
+    if (rv != 0) {
+      fprintf(stderr, "Error while flushing stream of MSC log file: %s", strerror(errno));
     }
+
     rv = fclose(g_msc_fd);
+
     if (rv != 0) {
-     fprintf(stderr, "Error while closing MSC log file: %s", strerror(errno));
+      fprintf(stderr, "Error while closing MSC log file: %s", strerror(errno));
     }
   }
 }
 
 //------------------------------------------------------------------------------
 void msc_log_declare_proto(
-    const msc_proto_t  protoP
-  )
+  const msc_proto_t  protoP
+)
 //------------------------------------------------------------------------------
 {
   int               rv             = 0;
@@ -401,47 +556,55 @@ void msc_log_declare_proto(
   char             *char_message_p = NULL;
 
   if ((MIN_MSC_PROTOS <= protoP) && (MAX_MSC_PROTOS > protoP)) {
-	// may be build a memory pool for that also ?
-	new_item_p = malloc(sizeof(msc_queue_item_t));
-	if (NULL != new_item_p) {
-
-	  rv = lfds611_stack_pop(g_msc_memory_stack_p, (void**)&char_message_p);
-	  if (0 == rv) {
-		  msc_flush_messages();
-		  rv = lfds611_stack_pop(g_msc_memory_stack_p, (void**)&char_message_p);
-	  }
-	  if (1 == rv) {
+    // may be build a memory pool for that also ?
+    new_item_p = malloc(sizeof(msc_queue_item_t));
+
+    if (NULL != new_item_p) {
+      rv = lfds611_stack_pop(g_msc_memory_stack_p, (void **)&char_message_p);
+
+      if (0 == rv) {
+        msc_flush_messages();
+        rv = lfds611_stack_pop(g_msc_memory_stack_p, (void **)&char_message_p);
+      }
+
+      if (1 == rv) {
         rv = snprintf(char_message_p, MSC_MAX_MESSAGE_LENGTH, "%"PRIu64" [PROTO] %d %s\n", __sync_fetch_and_add (&g_message_number, 1), protoP, &g_msc_proto2str[protoP][0]);
+
         if (0 > rv) {
           fprintf(stderr, "Error while declaring new protocol in MSC: %s", strerror(errno));
         }
+
         new_item_p->message_str       = char_message_p;
         new_item_p->message_str_size  = rv;
         new_item_p->message_bin       = NULL;
         new_item_p->message_bin_size  = 0;
         rv = lfds611_queue_enqueue( g_msc_message_queue_p, new_item_p );
-	    if (0 == rv) {
-	      rv = lfds611_queue_guaranteed_enqueue(g_msc_message_queue_p, new_item_p );
-		  if (0 == rv) {
+
+        if (0 == rv) {
+          rv = lfds611_queue_guaranteed_enqueue(g_msc_message_queue_p, new_item_p );
+
+          if (0 == rv) {
             fprintf(stderr, "Error while lfds611_queue_guaranteed_enqueue message %s in MSC", char_message_p);
-      	    rv = lfds611_stack_guaranteed_push( g_msc_memory_stack_p, char_message_p );
-      	    free(new_item_p);
-		  }
-	    }
-	    return;
-	  } else {
-	      fprintf(stderr, "Error while lfds611_stack_pop()\n");
-	  }
+            rv = lfds611_stack_guaranteed_push( g_msc_memory_stack_p, char_message_p );
+            free(new_item_p);
+          }
+        }
+
+        return;
+      } else {
+        fprintf(stderr, "Error while lfds611_stack_pop()\n");
+      }
+
       free(new_item_p);
-	} else {
+    } else {
       fprintf(stderr, "Error while malloc in MSC");
-	}
+    }
   }
 }
 //------------------------------------------------------------------------------
 void msc_log_event(
-    const msc_proto_t  protoP,
-    char *format, ...)
+  const msc_proto_t  protoP,
+  char *format, ...)
 //------------------------------------------------------------------------------
 {
   va_list           args;
@@ -450,52 +613,62 @@ void msc_log_event(
   msc_queue_item_t *new_item_p     = NULL;
   char             *char_message_p = NULL;
 
-
   if ((MIN_MSC_PROTOS > protoP) || (MAX_MSC_PROTOS <= protoP)) {
-      return;
+    return;
   }
+
   new_item_p = malloc(sizeof(msc_queue_item_t));
+
   if (NULL != new_item_p) {
+    rv = lfds611_stack_pop(g_msc_memory_stack_p, (void **)&char_message_p);
 
-    rv = lfds611_stack_pop(g_msc_memory_stack_p, (void**)&char_message_p);
     if (0 == rv) {
       msc_flush_messages();
-      rv = lfds611_stack_pop(g_msc_memory_stack_p, (void**)&char_message_p);
+      rv = lfds611_stack_pop(g_msc_memory_stack_p, (void **)&char_message_p);
     }
+
     if (1 == rv) {
       rv = snprintf(char_message_p, MSC_MAX_MESSAGE_LENGTH, "%"PRIu64" [EVENT] %d ",  __sync_fetch_and_add (&g_message_number, 1), protoP);
+
       if ((0 > rv) || (MSC_MAX_MESSAGE_LENGTH < rv)) {
         fprintf(stderr, "Error while logging MSC event : %s", &g_msc_proto2str[protoP][0]);
         goto error_event;
       }
+
       va_start(args, format);
       rv2 = vsnprintf(&char_message_p[rv],MSC_MAX_MESSAGE_LENGTH - rv,  format, args);
       va_end(args);
+
       if ((0 > rv2) || ((MSC_MAX_MESSAGE_LENGTH - rv) < rv2)) {
         fprintf(stderr, "Error while logging MSC event : %s", &g_msc_proto2str[protoP][0]);
         goto error_event;
       }
+
       rv += rv2;
       rv2 = snprintf(&char_message_p[rv],MSC_MAX_MESSAGE_LENGTH - rv, "\n");
+
       if ((0 > rv2) || ((MSC_MAX_MESSAGE_LENGTH - rv) < rv2)) {
         fprintf(stderr, "Error while logging MSC event : %s", &g_msc_proto2str[protoP][0]);
         goto error_event;
       }
+
       rv += rv2;
       new_item_p->message_str       = char_message_p;
       new_item_p->message_str_size  = rv;
       new_item_p->message_bin       = NULL;
       new_item_p->message_bin_size  = 0;
       rv = lfds611_queue_enqueue( g_msc_message_queue_p, new_item_p );
-	  if (0 == rv) {
+
+      if (0 == rv) {
         fprintf(stderr, "Error while lfds611_queue_guaranteed_enqueue message %s in MSC", char_message_p);
-    	rv = lfds611_stack_guaranteed_push( g_msc_memory_stack_p, char_message_p );
-    	free(new_item_p);
-	  }
+        rv = lfds611_stack_guaranteed_push( g_msc_memory_stack_p, char_message_p );
+        free(new_item_p);
+      }
     } else {
       fprintf(stderr, "Error while lfds611_stack_pop()\n");
-	}
+    }
   }
+
   return;
 error_event:
   rv = lfds611_stack_guaranteed_push( g_msc_memory_stack_p, char_message_p );
@@ -503,12 +676,12 @@ error_event:
 }
 //------------------------------------------------------------------------------
 void msc_log_message(
-    const char * const message_operationP,
-    const msc_proto_t  proto1P,
-    const msc_proto_t  proto2P,
-    const uint8_t * const bytesP,
-    const unsigned int num_bytes,
-    char *format, ...)
+  const char *const message_operationP,
+  const msc_proto_t  proto1P,
+  const msc_proto_t  proto2P,
+  const uint8_t *const bytesP,
+  const unsigned int num_bytes,
+  char *format, ...)
 //------------------------------------------------------------------------------
 {
   va_list           args;
@@ -518,56 +691,65 @@ void msc_log_message(
   msc_queue_item_t *new_item_p     = NULL;
   char             *char_message_p = NULL;
 
-
   if ((MIN_MSC_PROTOS > proto1P) || (MAX_MSC_PROTOS <= proto1P) ||
-	  (MIN_MSC_PROTOS > proto2P)   || (MAX_MSC_PROTOS <= proto2P)  ) {
+      (MIN_MSC_PROTOS > proto2P)   || (MAX_MSC_PROTOS <= proto2P)  ) {
     return;
   }
 
   new_item_p = malloc(sizeof(msc_queue_item_t));
+
   if (NULL != new_item_p) {
+    rv = lfds611_stack_pop(g_msc_memory_stack_p, (void **)&char_message_p);
 
-    rv = lfds611_stack_pop(g_msc_memory_stack_p, (void**)&char_message_p);
     if (0 == rv) {
       msc_flush_messages();
-      rv = lfds611_stack_pop(g_msc_memory_stack_p, (void**)&char_message_p);
-	}
+      rv = lfds611_stack_pop(g_msc_memory_stack_p, (void **)&char_message_p);
+    }
+
     if (1 == rv) {
       rv = snprintf(char_message_p, MSC_MAX_MESSAGE_LENGTH, "%"PRIu64" [MESSAGE] %d %s %d %"PRIu64" ",
-    		  __sync_fetch_and_add (&g_message_number, 1), proto1P, message_operationP, proto2P, mac);
+                    __sync_fetch_and_add (&g_message_number, 1), proto1P, message_operationP, proto2P, mac);
+
       if ((0 > rv) || (MSC_MAX_MESSAGE_LENGTH < rv)) {
         fprintf(stderr, "Error while logging MSC message : %s/%s", &g_msc_proto2str[proto1P][0], &g_msc_proto2str[proto2P][0]);
         goto error_event;
       }
+
       va_start(args, format);
       rv2 = vsnprintf(&char_message_p[rv],MSC_MAX_MESSAGE_LENGTH - rv,  format, args);
       va_end(args);
+
       if ((0 > rv2) || ((MSC_MAX_MESSAGE_LENGTH - rv) < rv2)) {
         fprintf(stderr, "Error while logging MSC message : %s/%s", &g_msc_proto2str[proto1P][0], &g_msc_proto2str[proto2P][0]);
         goto error_event;
       }
+
       rv += rv2;
       rv2 = snprintf(&char_message_p[rv],MSC_MAX_MESSAGE_LENGTH - rv, "\n");
+
       if ((0 > rv2) || ((MSC_MAX_MESSAGE_LENGTH - rv) < rv2)) {
         fprintf(stderr, "Error while logging MSC message : %s/%s", &g_msc_proto2str[proto1P][0], &g_msc_proto2str[proto2P][0]);
         goto error_event;
       }
+
       rv += rv2;
       new_item_p->message_str       = char_message_p;
       new_item_p->message_str_size  = rv;
       new_item_p->message_bin       = NULL; // TO DO
       new_item_p->message_bin_size  = 0;    // TO DO
       rv = lfds611_queue_enqueue( g_msc_message_queue_p, new_item_p );
-	  if (0 == rv) {
+
+      if (0 == rv) {
         fprintf(stderr, "Error while lfds611_queue_guaranteed_enqueue message %s in MSC", char_message_p);
-    	rv = lfds611_stack_guaranteed_push( g_msc_memory_stack_p, char_message_p );
-    	free(new_item_p);
-	  }
+        rv = lfds611_stack_guaranteed_push( g_msc_memory_stack_p, char_message_p );
+        free(new_item_p);
+      }
     } else {
       fprintf(stderr, "Error while lfds611_stack_pop()\n");
       msc_flush_messages();
-  	}
+    }
   }
+
   return;
 error_event:
   rv = lfds611_stack_guaranteed_push( g_msc_memory_stack_p, char_message_p );
@@ -578,8 +760,7 @@ error_event:
 //  function called when oai loader loads the msc shared lib
 int msc_autoinit(msc_interface_t *msc_interface)
 //------------------------------------------------------------------------------
- {
-
+{
   msc_interface->msc_init = msc_init;
   msc_interface->msc_start_use = msc_start_use;
   msc_interface->msc_end = msc_end;
@@ -587,4 +768,4 @@ int msc_autoinit(msc_interface_t *msc_interface)
   msc_interface->msc_log_message = msc_log_message;
   msc_interface->msc_loaded = 1;
   return 0;
- }
+}
diff --git a/common/utils/msc/msc.h b/common/utils/msc/msc.h
index e8a8a4a0e82d7f65f9b9fcd80b54ddc79cff2759..4a71d52ffa8741d0834d75c7cab321090a666000 100644
--- a/common/utils/msc/msc.h
+++ b/common/utils/msc/msc.h
@@ -25,46 +25,46 @@
 #include <stdint.h>
 
 typedef enum {
-	MIN_MSC_ENV = 0,
-    MSC_E_UTRAN = MIN_MSC_ENV,
-    MSC_E_UTRAN_LIPA,
-    MSC_MME_GW,
-    MSC_MME,
-    MSC_SP_GW,
-    MAX_MSC_ENV
+  MIN_MSC_ENV = 0,
+  MSC_E_UTRAN = MIN_MSC_ENV,
+  MSC_E_UTRAN_LIPA,
+  MSC_MME_GW,
+  MSC_MME,
+  MSC_SP_GW,
+  MAX_MSC_ENV
 } msc_env_t;
 
 
 typedef enum {
-    MIN_MSC_PROTOS = 0,
-    MSC_IP_UE = MIN_MSC_PROTOS,
-    MSC_NAS_UE,
-    MSC_RRC_UE,
-    MSC_PDCP_UE,
-    MSC_RLC_UE,
-    MSC_MAC_UE,
-    MSC_PHY_UE,
-    MSC_PHY_ENB,
-    MSC_MAC_ENB,
-    MSC_RLC_ENB,
-    MSC_PDCP_ENB,
-    MSC_RRC_ENB,
-    MSC_IP_ENB,
-    MSC_S1AP_ENB,
-    MSC_GTPU_ENB,
-    MSC_GTPU_SGW,
-    MSC_S1AP_MME,
-    MSC_MMEAPP_MME,
-    MSC_NAS_MME,
-    MSC_NAS_EMM_MME,
-    MSC_NAS_ESM_MME,
-    MSC_SP_GWAPP_MME,
-    MSC_S11_MME,
-    MSC_S6A_MME,
-    MSC_HSS,
-    MAX_MSC_PROTOS,
-    MSC_X2AP_SRC_ENB,
-    MSC_X2AP_TARGET_ENB,
+  MIN_MSC_PROTOS = 0,
+  MSC_IP_UE = MIN_MSC_PROTOS,
+  MSC_NAS_UE,
+  MSC_RRC_UE,
+  MSC_PDCP_UE,
+  MSC_RLC_UE,
+  MSC_MAC_UE,
+  MSC_PHY_UE,
+  MSC_PHY_ENB,
+  MSC_MAC_ENB,
+  MSC_RLC_ENB,
+  MSC_PDCP_ENB,
+  MSC_RRC_ENB,
+  MSC_IP_ENB,
+  MSC_S1AP_ENB,
+  MSC_GTPU_ENB,
+  MSC_GTPU_SGW,
+  MSC_S1AP_MME,
+  MSC_MMEAPP_MME,
+  MSC_NAS_MME,
+  MSC_NAS_EMM_MME,
+  MSC_NAS_ESM_MME,
+  MSC_SP_GWAPP_MME,
+  MSC_S11_MME,
+  MSC_S6A_MME,
+  MSC_HSS,
+  MAX_MSC_PROTOS,
+  MSC_X2AP_SRC_ENB,
+  MSC_X2AP_TARGET_ENB,
 } msc_proto_t;
 
 
@@ -73,22 +73,22 @@ typedef enum {
 #define MSC_AS_TIME_FMT "%05u:%02u"
 
 #define MSC_AS_TIME_ARGS(CTXT_Pp) \
-    (CTXT_Pp)->frame, \
-    (CTXT_Pp)->subframe
+  (CTXT_Pp)->frame, \
+  (CTXT_Pp)->subframe
 
 typedef int(*msc_init_t)(const msc_env_t, const int );
 typedef void(*msc_start_use_t)(void );
 typedef void(*msc_end_t)(void);
 typedef void(*msc_log_event_t)(const msc_proto_t,char *, ...);
-typedef void(*msc_log_message_t)(const char *   const, const msc_proto_t, const msc_proto_t, 
-                                 const uint8_t* const, const unsigned int, char * , ...);
+typedef void(*msc_log_message_t)(const char    *const, const msc_proto_t, const msc_proto_t,
+                                 const uint8_t *const, const unsigned int, char *, ...);
 typedef struct msc_interface {
-    int               msc_loaded;
-    msc_init_t        msc_init;
-    msc_start_use_t   msc_start_use;
-    msc_end_t         msc_end;
-    msc_log_event_t   msc_log_event;
-    msc_log_message_t msc_log_message;
+  int               msc_loaded;
+  msc_init_t        msc_init;
+  msc_start_use_t   msc_start_use;
+  msc_end_t         msc_end;
+  msc_log_event_t   msc_log_event;
+  msc_log_message_t msc_log_message;
 } msc_interface_t;
 
 #ifdef MSC_LIBRARY
@@ -99,15 +99,17 @@ void msc_end(void);
 void msc_log_declare_proto(const msc_proto_t  protoP);
 void msc_log_event(const msc_proto_t  protoP,char *format, ...);
 void msc_log_message(
-	const char * const message_operationP,
-    const msc_proto_t  receiverP,
-    const msc_proto_t  senderP,
-    const uint8_t* const bytesP,
-    const unsigned int num_bytes,
-    char *format, ...);
+  const char *const message_operationP,
+  const msc_proto_t  receiverP,
+  const msc_proto_t  senderP,
+  const uint8_t *const bytesP,
+  const unsigned int num_bytes,
+  char *format, ...);
 
 #else
 
+#define MESSAGE_CHART_GENERATOR  msc_interface.msc_loaded
+
 msc_interface_t msc_interface;
 #define MSC_INIT(arg1,arg2)                                     if(msc_interface.msc_loaded) msc_interface.msc_init(arg1,arg2)
 #define MSC_START_USE                                           if(msc_interface.msc_loaded) msc_interface.msc_start_use
@@ -119,4 +121,4 @@ msc_interface_t msc_interface;
 #define MSC_LOG_TX_MESSAGE_FAILED(sENDER, rECEIVER, bYTES, nUMbYTES, fORMAT, aRGS...)    if(msc_interface.msc_loaded) msc_interface.msc_log_message("-x",sENDER, rECEIVER, (const uint8_t *)bYTES, nUMbYTES, fORMAT, ##aRGS)
 #endif
 
-#endif 
+#endif
diff --git a/common/utils/telnetsrv/telnetsrv.c b/common/utils/telnetsrv/telnetsrv.c
index a49311d0994a16420abf3edf10bf92dac36f35ba..4e8e2c7c7fdbb48197698127685de7c45c23680c 100644
--- a/common/utils/telnetsrv/telnetsrv.c
+++ b/common/utils/telnetsrv/telnetsrv.c
@@ -51,14 +51,14 @@
 #include <dlfcn.h>
 #include <sys/time.h>
 #include <sys/resource.h>
-#include "common/utils/load_module_shlib.h" 
+#include "common/utils/load_module_shlib.h"
 #include "common/config/config_userapi.h"
 #include <readline/history.h>
 
 
 #include "telnetsrv_phycmd.h"
-#include "telnetsrv_proccmd.h"	
-static char* telnet_defstatmod[] = {"softmodem","phy","loader"}; 
+#include "telnetsrv_proccmd.h"
+static char *telnet_defstatmod[] = {"softmodem","phy","loader"};
 static telnetsrv_params_t telnetparams;
 #define TELNETSRV_LISTENADDR 0
 #define TELNETSRV_LISTENPORT 1
@@ -66,179 +66,169 @@ static telnetsrv_params_t telnetparams;
 #define TELNETSRV_DEBUG      3
 #define TELNETSRV_LOOPC      4
 #define TELNETSRV_LOOPD      5
-#define TELNETSRV_HISFILE    6  
-#define TELNETSRV_HISSIZE    7 
-#define TELNETSRV_PHYBSIZE   8  
+#define TELNETSRV_HISFILE    6
+#define TELNETSRV_HISSIZE    7
+#define TELNETSRV_PHYBSIZE   8
 #define TELNETSRV_STATICMOD  9
 #define TELNETSRV_SHRMOD     10
 
 paramdef_t telnetoptions[] = {
-/*--------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
-/*                                            configuration parameters for telnet utility                                                                             */
-/*   optname                     helpstr                paramflags           XXXptr                               defXXXval               type                 numelt */
-/*--------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
-	{"listenaddr",    "<listen ip address>",         0,                 uptr:&telnetparams.listenaddr,        defstrval:"0.0.0.0",            TYPE_IPV4ADDR,  0 },
-	{"listenport",    "<local port>",                0,                 uptr:&(telnetparams.listenport),      defuintval:9090,                TYPE_UINT,      0 },
-        {"priority",      "<scheduling policy (0-99)",   0,                 iptr:&telnetparams.priority,          defuintval:0,                   TYPE_INT,       0 }, 
-	{"debug",         "<debug level>",               0,                 uptr:NULL,                            defuintval:0,                   TYPE_UINT,      0 },
-	{"loopcount",     "<loop command iterations>",   0,                 uptr:&(telnetparams.loopcount),       defuintval:10,                  TYPE_UINT,      0 },
-	{"loopdelay",     "<loop command delay (ms)>",   0,                 uptr:&(telnetparams.loopdelay),       defuintval:5000,                TYPE_UINT,      0 },
-	{"histfile",      "<history file name>",         PARAMFLAG_NOFREE,  strptr:&(telnetparams.histfile),      defstrval:"oaitelnet.history",  TYPE_STRING,    0 },
-	{"histsize",      "<history sizes>",             0,                 iptr:&(telnetparams.histsize),        defuintval:50,                  TYPE_INT,       0 },
-	{"phypbsize",     "<phy dump buff size (bytes)>",0,                 uptr:&(telnetparams.phyprntbuff_size),defuintval:65000,               TYPE_UINT,      0 },
-        {"staticmod",     "<static modules selection>",  0,                 strlistptr:NULL,                      defstrlistval:telnet_defstatmod,TYPE_STRINGLIST,(sizeof(telnet_defstatmod)/sizeof(char *))},
-        {"shrmod",        "<dynamic modules selection>", 0,                 strlistptr:NULL,                      defstrlistval:NULL,TYPE_STRINGLIST,0 }
+  /*--------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
+  /*                                            configuration parameters for telnet utility                                                                             */
+  /*   optname                     helpstr                paramflags           XXXptr                               defXXXval               type                 numelt */
+  /*--------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
+  {"listenaddr",    "<listen ip address>\n",         0,                 uptr:&telnetparams.listenaddr,        defstrval:"0.0.0.0",            TYPE_IPV4ADDR,  0 },
+  {"listenport",    "<local port>\n",                0,                 uptr:&(telnetparams.listenport),      defuintval:9090,                TYPE_UINT,      0 },
+  {"priority",      "<scheduling policy (0-99)\n",   0,                 iptr:&telnetparams.priority,          defuintval:0,                   TYPE_INT,       0 },
+  {"debug",         "<debug level>\n",               0,                 uptr:NULL,                            defuintval:0,                   TYPE_UINT,      0 },
+  {"loopcount",     "<loop command iterations>\n",   0,                 uptr:&(telnetparams.loopcount),       defuintval:10,                  TYPE_UINT,      0 },
+  {"loopdelay",     "<loop command delay (ms)>\n",   0,                 uptr:&(telnetparams.loopdelay),       defuintval:5000,                TYPE_UINT,      0 },
+  {"histfile",      "<history file name>\n",         PARAMFLAG_NOFREE,  strptr:&(telnetparams.histfile),      defstrval:"oaitelnet.history",  TYPE_STRING,    0 },
+  {"histsize",      "<history sizes>\n",             0,                 iptr:&(telnetparams.histsize),        defuintval:50,                  TYPE_INT,       0 },
+  {"phypbsize",     "<phy dump buff size (bytes)>\n",0,                 uptr:&(telnetparams.phyprntbuff_size),defuintval:65000,               TYPE_UINT,      0 },
+  {"staticmod",     "<static modules selection>\n",  0,                 strlistptr:NULL,                      defstrlistval:telnet_defstatmod,TYPE_STRINGLIST,(sizeof(telnet_defstatmod)/sizeof(char *))},
+  {"shrmod",        "<dynamic modules selection>\n", 0,                 strlistptr:NULL,                      defstrlistval:NULL,TYPE_STRINGLIST,0 }
 };
 
-int get_phybsize(void) {return telnetparams.phyprntbuff_size; };
+int get_phybsize(void) {
+  return telnetparams.phyprntbuff_size;
+};
 int add_telnetcmd(char *modulename,telnetshell_vardef_t *var, telnetshell_cmddef_t *cmd );
 int setoutput(char *buff, int debug, telnet_printfunc_t prnt);
 int setparam(char *buff, int debug, telnet_printfunc_t prnt);
 int history_cmd(char *buff, int debug, telnet_printfunc_t prnt);
 
 telnetshell_vardef_t telnet_vardef[] = {
-{"debug",TELNET_VARTYPE_INT32,&telnetparams.telnetdbg},
-{"prio",TELNET_VARTYPE_INT32,&telnetparams.priority},
-{"loopc",TELNET_VARTYPE_INT32,&telnetparams.loopcount},
-{"loopd",TELNET_VARTYPE_INT32,&telnetparams.loopdelay},
-{"phypb",TELNET_VARTYPE_INT32,&telnetparams.phyprntbuff_size},
-{"hsize",TELNET_VARTYPE_INT32,&telnetparams.histsize},
-{"hfile",TELNET_VARTYPE_STRING,&telnetparams.histfile},
-{"",0,NULL}
+  {"debug",TELNET_VARTYPE_INT32,&telnetparams.telnetdbg},
+  {"prio",TELNET_VARTYPE_INT32,&telnetparams.priority},
+  {"loopc",TELNET_VARTYPE_INT32,&telnetparams.loopcount},
+  {"loopd",TELNET_VARTYPE_INT32,&telnetparams.loopdelay},
+  {"phypb",TELNET_VARTYPE_INT32,&telnetparams.phyprntbuff_size},
+  {"hsize",TELNET_VARTYPE_INT32,&telnetparams.histsize},
+  {"hfile",TELNET_VARTYPE_STRING,&telnetparams.histfile},
+  {"",0,NULL}
 };
 
 telnetshell_cmddef_t  telnet_cmdarray[] = {
-   {"redirlog","[here,file,off]",setoutput},
-   {"param","[prio]",setparam},
-   {"history","[list,reset]",history_cmd},
-   {"","",NULL},
+  {"redirlog","[here,file,off]",setoutput},
+  {"param","[prio]",setparam},
+  {"history","[list,reset]",history_cmd},
+  {"","",NULL},
 };
 
 
-void client_printf(const char *message, ...)
-{
-    va_list va_args;
-    
-    va_start(va_args, message);
-    if (telnetparams.new_socket > 0)
-       {
-       vsnprintf(telnetparams.msgbuff,sizeof(telnetparams.msgbuff)-1,message, va_args);
-       send(telnetparams.new_socket,telnetparams.msgbuff , strlen(telnetparams.msgbuff), MSG_NOSIGNAL);
-       }
-    else
-       {
-       vprintf(message, va_args);
-       }
-    va_end(va_args);
-    return ;
+void client_printf(const char *message, ...) {
+  va_list va_args;
+  va_start(va_args, message);
+
+  if (telnetparams.new_socket > 0) {
+    vsnprintf(telnetparams.msgbuff,sizeof(telnetparams.msgbuff)-1,message, va_args);
+    send(telnetparams.new_socket,telnetparams.msgbuff , strlen(telnetparams.msgbuff), MSG_NOSIGNAL);
+  } else {
+    vprintf(message, va_args);
+  }
+
+  va_end(va_args);
+  return ;
 }
 
 #define NICE_MAX 19
 #define NICE_MIN -20
-void set_sched(pthread_t tid, int pid, int priority)
-{
-int rt; 
-struct sched_param schedp;
-int policy;
-char strpolicy[10];
-
-
-//sched_get_priority_max(SCHED_FIFO)
-if (priority < NICE_MIN) {
-   policy=SCHED_FIFO;
-   sprintf(strpolicy,"%s","fifo");
-   schedp.sched_priority= NICE_MIN - priority ;
-   if (   (schedp.sched_priority < sched_get_priority_min(SCHED_FIFO)) ||
-          (schedp.sched_priority > sched_get_priority_max(SCHED_FIFO)) ) {
-        client_printf("Error: %i invalid prio, should be %i to %i, \n",
-                       priority, NICE_MIN -sched_get_priority_min(SCHED_FIFO),
-                       NICE_MIN - sched_get_priority_max(SCHED_FIFO) );        
-   }
-} else if (priority > NICE_MAX) {
-   policy=SCHED_IDLE;
-   sprintf(strpolicy,"%s","idle");
-   schedp.sched_priority=0;   
-} else {
-   policy=SCHED_OTHER;
-   sprintf(strpolicy,"%s","other");
-   schedp.sched_priority=0;   
-}
- 
-if( tid != 0) {  
-  rt = pthread_setschedparam(tid, policy, &schedp);
-} else if(pid > 0)  {
-  rt = sched_setscheduler( pid, policy,&schedp);
-} else {
-  rt= -1;
-  client_printf("Error: no pid or tid specified\n");
-}
+void set_sched(pthread_t tid, int pid, int priority) {
+  int rt;
+  struct sched_param schedp;
+  int policy;
+  char strpolicy[10];
+
+  //sched_get_priority_max(SCHED_FIFO)
+  if (priority < NICE_MIN) {
+    policy=SCHED_FIFO;
+    sprintf(strpolicy,"%s","fifo");
+    schedp.sched_priority= NICE_MIN - priority ;
+
+    if (   (schedp.sched_priority < sched_get_priority_min(SCHED_FIFO)) ||
+           (schedp.sched_priority > sched_get_priority_max(SCHED_FIFO)) ) {
+      client_printf("Error: %i invalid prio, should be %i to %i, \n",
+                    priority, NICE_MIN -sched_get_priority_min(SCHED_FIFO),
+                    NICE_MIN - sched_get_priority_max(SCHED_FIFO) );
+    }
+  } else if (priority > NICE_MAX) {
+    policy=SCHED_IDLE;
+    sprintf(strpolicy,"%s","idle");
+    schedp.sched_priority=0;
+  } else {
+    policy=SCHED_OTHER;
+    sprintf(strpolicy,"%s","other");
+    schedp.sched_priority=0;
+  }
 
-if (rt != 0) {
+  if( tid != 0) {
+    rt = pthread_setschedparam(tid, policy, &schedp);
+  } else if(pid > 0)  {
+    rt = sched_setscheduler( pid, policy,&schedp);
+  } else {
+    rt= -1;
+    client_printf("Error: no pid or tid specified\n");
+  }
+
+  if (rt != 0) {
     client_printf("Error %i: %s modifying sched param to %s:%i, \n",
-                  errno,strerror(errno),strpolicy,schedp.sched_priority); 
-} else  {
+                  errno,strerror(errno),strpolicy,schedp.sched_priority);
+  } else  {
     client_printf("policy set to %s, priority %i\n",strpolicy,schedp.sched_priority);
+
     if ( policy==SCHED_OTHER) {
-        rt = getpriority(PRIO_PROCESS,tid);
-        if (rt != -1) {
-           rt = setpriority(PRIO_PROCESS,tid,priority);  
-           if (rt < 0) {
-               client_printf("Error %i: %s trying to set nice value of thread %u to %i\n",
-                             errno,strerror(errno),tid,priority); 
-           }
-        } else {
-               client_printf("Error %i: %s trying to get nice value of thread %u \n",
-                              errno,strerror(errno),tid); 
+      rt = getpriority(PRIO_PROCESS,tid);
+
+      if (rt != -1) {
+        rt = setpriority(PRIO_PROCESS,tid,priority);
+
+        if (rt < 0) {
+          client_printf("Error %i: %s trying to set nice value of thread %u to %i\n",
+                        errno,strerror(errno),tid,priority);
         }
+      } else {
+        client_printf("Error %i: %s trying to get nice value of thread %u \n",
+                      errno,strerror(errno),tid);
+      }
     }
-}
-
+  }
 
+  if ( policy == SCHED_OTHER) {
+    if ( tid > 0 && tid != pthread_self()) {
+      client_printf("setting nice value using a thread id not implemented....\n");
+    } else if (pid > 0) {
+      errno=0;
+      rt = setpriority(PRIO_PROCESS,pid,priority);
 
-if ( policy == SCHED_OTHER)
-   {
-   if ( tid > 0 && tid != pthread_self())
-     {
-     client_printf("setting nice value using a thread id not implemented....\n");    
-     }
-   else if (pid > 0)
-     {
-     errno=0;
-     rt = setpriority(PRIO_PROCESS,pid,priority);
-     if (rt != 0)
-        {
-        client_printf("Error %i: %s calling setpriority, \n",errno,strerror(errno)); 
-        }
-     else
-        {
+      if (rt != 0) {
+        client_printf("Error %i: %s calling setpriority, \n",errno,strerror(errno));
+      } else {
         client_printf("nice value set to %i\n",priority);
-        }
-     }
-   }
+      }
+    }
+  }
 }
 
-void set_affinity(pthread_t tid, int pid, int coreid)
-{
-cpu_set_t cpuset;
-int rt;
-
+void set_affinity(pthread_t tid, int pid, int coreid) {
+  cpu_set_t cpuset;
+  int rt;
   CPU_ZERO(&cpuset);
   CPU_SET(coreid, &cpuset);
+
   if (tid > 0) {
-     rt = pthread_setaffinity_np((pthread_t)tid, sizeof(cpu_set_t), &cpuset);
-  } else if (pid > 0){
-     rt = sched_setaffinity((pid_t)pid, sizeof(cpu_set_t), &cpuset);
+    rt = pthread_setaffinity_np((pthread_t)tid, sizeof(cpu_set_t), &cpuset);
+  } else if (pid > 0) {
+    rt = sched_setaffinity((pid_t)pid, sizeof(cpu_set_t), &cpuset);
   } else {
-     rt= -1;
+    rt= -1;
+  }
+
+  if (rt != 0) {
+    client_printf("Error %i: %s calling , xxx_setaffinity...\n",errno,strerror(errno));
+  } else {
+    client_printf("thread %i affinity set to %i\n",(pid==0)?(int)tid:pid,coreid);
   }
-  if (rt != 0)
-      {
-      client_printf("Error %i: %s calling , xxx_setaffinity...\n",errno,strerror(errno)); 
-      }
-  else
-      {
-      client_printf("thread %i affinity set to %i\n",(pid==0)?(int)tid:pid,coreid);
-      }  
 }
 /*------------------------------------------------------------------------------------*/
 /*
@@ -246,551 +236,532 @@ function implementing telnet server specific commands, parameters of the
 telnet_cmdarray table
 */
 
-void redirstd(char *newfname,telnet_printfunc_t prnt )
-{
-FILE *fd;
-   fd=freopen(newfname, "w", stdout);
-   if (fd == NULL)
-      {
-      prnt("ERROR: stdout redir to %s error %s",strerror(errno));
-      }
-   fd=freopen(newfname, "w", stderr);
-   if (fd == NULL)
-      {
-      prnt("ERROR: stderr redir to %s error %s",strerror(errno));
-      }
-}
-int setoutput(char *buff, int debug, telnet_printfunc_t prnt)
-{
+void redirstd(char *newfname,telnet_printfunc_t prnt ) {
+  FILE *fd;
+  fd=freopen(newfname, "w", stdout);
 
-char cmds[TELNET_MAX_MSGLENGTH/TELNET_CMD_MAXSIZE][TELNET_CMD_MAXSIZE];
-char *logfname;
-char stdout_str[64];
+  if (fd == NULL) {
+    prnt("ERROR: stdout redir to %s error %s",strerror(errno));
+  }
 
+  fd=freopen(newfname, "w", stderr);
 
+  if (fd == NULL) {
+    prnt("ERROR: stderr redir to %s error %s",strerror(errno));
+  }
+}
+int setoutput(char *buff, int debug, telnet_printfunc_t prnt) {
+  char cmds[TELNET_MAX_MSGLENGTH/TELNET_CMD_MAXSIZE][TELNET_CMD_MAXSIZE];
+  char *logfname;
+  char stdout_str[64];
 #define LOGFILE "logfile.log"
-memset(cmds,0,sizeof(cmds));
-sscanf(buff,"%9s %32s %9s %9s %9s", cmds[0],cmds[1],cmds[2],cmds[3],cmds[4]  );
-if (strncasecmp(cmds[0],"here",4) == 0)
-   {
-   fflush(stdout);
-   sprintf(stdout_str,"/proc/%i/fd/%i",getpid(),telnetparams.new_socket);
-   dup2(telnetparams.new_socket,fileno(stdout));
-//   freopen(stdout_str, "w", stdout);
-//   freopen(stdout_str, "w", stderr);
-   dup2(telnetparams.new_socket,fileno(stderr));
-   prnt("Log output redirected to this terminal (%s)\n",stdout_str);
-   }
-if (strncasecmp(cmds[0],"file",4) == 0)
-   {
-   if (cmds[1][0] == 0)
+  memset(cmds,0,sizeof(cmds));
+  sscanf(buff,"%9s %32s %9s %9s %9s", cmds[0],cmds[1],cmds[2],cmds[3],cmds[4]  );
+
+  if (strncasecmp(cmds[0],"here",4) == 0) {
+    fflush(stdout);
+    sprintf(stdout_str,"/proc/%i/fd/%i",getpid(),telnetparams.new_socket);
+    dup2(telnetparams.new_socket,fileno(stdout));
+    //   freopen(stdout_str, "w", stdout);
+    //   freopen(stdout_str, "w", stderr);
+    dup2(telnetparams.new_socket,fileno(stderr));
+    prnt("Log output redirected to this terminal (%s)\n",stdout_str);
+  }
+
+  if (strncasecmp(cmds[0],"file",4) == 0) {
+    if (cmds[1][0] == 0)
       logfname=LOGFILE;
-   else
-      logfname=cmds[1];   
-   fflush(stdout);
-   redirstd(logfname,prnt);
-
-   }   
-if (strncasecmp(cmds[0],"off",3) == 0)
-   {
-   fflush(stdout);
-   redirstd("/dev/tty",prnt); 
-   } 
-
-return CMDSTATUS_FOUND;   
+    else
+      logfname=cmds[1];
+
+    fflush(stdout);
+    redirstd(logfname,prnt);
+  }
+
+  if (strncasecmp(cmds[0],"off",3) == 0) {
+    fflush(stdout);
+    redirstd("/dev/tty",prnt);
+  }
+
+  return CMDSTATUS_FOUND;
 } /* setoutput */
 
-int setparam(char *buff, int debug, telnet_printfunc_t prnt)
-{
-char cmds[TELNET_MAX_MSGLENGTH/TELNET_CMD_MAXSIZE][TELNET_CMD_MAXSIZE];
-
-
-memset(cmds,0,sizeof(cmds));
-sscanf(buff,"%9s %9s %9s %9s %9s", cmds[0],cmds[1],cmds[2],cmds[3],cmds[4]  );
-if (strncasecmp(cmds[0],"prio",4) == 0)
-   {
-   int prio;
-   prio=(int)strtol(cmds[1],NULL,0);
-   if (errno == ERANGE)
-       return CMDSTATUS_VARNOTFOUND;
-   telnetparams.priority = prio;
-   set_sched(pthread_self(),0,prio);
-   return CMDSTATUS_FOUND; 
-   }
-if (strncasecmp(cmds[0],"aff",3) == 0)
-   {
-   int aff;
-   aff=(int)strtol(cmds[1],NULL,0);
-   if (errno == ERANGE)
-       return CMDSTATUS_VARNOTFOUND;
-   set_affinity(pthread_self(),0,aff);
-   return CMDSTATUS_FOUND; 
-   }
-
-return CMDSTATUS_NOTFOUND;   
-} /* setparam */
+int setparam(char *buff, int debug, telnet_printfunc_t prnt) {
+  char cmds[TELNET_MAX_MSGLENGTH/TELNET_CMD_MAXSIZE][TELNET_CMD_MAXSIZE];
+  memset(cmds,0,sizeof(cmds));
+  sscanf(buff,"%9s %9s %9s %9s %9s", cmds[0],cmds[1],cmds[2],cmds[3],cmds[4]  );
+
+  if (strncasecmp(cmds[0],"prio",4) == 0) {
+    int prio;
+    prio=(int)strtol(cmds[1],NULL,0);
 
-int history_cmd(char *buff, int debug, telnet_printfunc_t prnt)
-{
-char cmds[TELNET_MAX_MSGLENGTH/TELNET_CMD_MAXSIZE][TELNET_CMD_MAXSIZE];
+    if (errno == ERANGE)
+      return CMDSTATUS_VARNOTFOUND;
 
+    telnetparams.priority = prio;
+    set_sched(pthread_self(),0,prio);
+    return CMDSTATUS_FOUND;
+  }
+
+  if (strncasecmp(cmds[0],"aff",3) == 0) {
+    int aff;
+    aff=(int)strtol(cmds[1],NULL,0);
+
+    if (errno == ERANGE)
+      return CMDSTATUS_VARNOTFOUND;
+
+    set_affinity(pthread_self(),0,aff);
+    return CMDSTATUS_FOUND;
+  }
 
-memset(cmds,0,sizeof(cmds));
-sscanf(buff,"%9s %9s %9s %9s %9s", cmds[0],cmds[1],cmds[2],cmds[3],cmds[4]  );
-if (cmds[0] == NULL)
+  return CMDSTATUS_NOTFOUND;
+} /* setparam */
+
+int history_cmd(char *buff, int debug, telnet_printfunc_t prnt) {
+  char cmds[TELNET_MAX_MSGLENGTH/TELNET_CMD_MAXSIZE][TELNET_CMD_MAXSIZE];
+  memset(cmds,0,sizeof(cmds));
+  sscanf(buff,"%9s %9s %9s %9s %9s", cmds[0],cmds[1],cmds[2],cmds[3],cmds[4]  );
+
+  if (cmds[0] == NULL)
     return CMDSTATUS_VARNOTFOUND;
-if (strncasecmp(cmds[0],"list",4) == 0)
-   {
-   HIST_ENTRY **hist = history_list();
-   if (hist) {
+
+  if (strncasecmp(cmds[0],"list",4) == 0) {
+    HIST_ENTRY **hist = history_list();
+
+    if (hist) {
       for (int i = 0; hist[i]; i++) {
-          prnt ("%d: %s\n", i + history_base, hist[i]->line);
+        prnt ("%d: %s\n", i + history_base, hist[i]->line);
       }
-   }
-   return CMDSTATUS_FOUND; 
-   }
-if (strncasecmp(cmds[0],"reset",5) == 0)
-   {
-   clear_history();
-   write_history(telnetparams.histfile);
-   return CMDSTATUS_FOUND; 
-   }
-
-return CMDSTATUS_NOTFOUND; 
+    }
+
+    return CMDSTATUS_FOUND;
+  }
+
+  if (strncasecmp(cmds[0],"reset",5) == 0) {
+    clear_history();
+    write_history(telnetparams.histfile);
+    return CMDSTATUS_FOUND;
+  }
+
+  return CMDSTATUS_NOTFOUND;
 } /* history_cmd */
 /*-------------------------------------------------------------------------------------------------------*/
 /*
 generic commands available for all modules loaded by the server
 */
 
-int setgetvar(int moduleindex,char getorset,char *params)
-{
-int n,i;
-char varname[TELNET_CMD_MAXSIZE];
-char *varval=NULL;
-
-   memset(varname,0,sizeof(varname));
-
-   n = sscanf(params,"%s %ms",varname,&varval);
-   for ( i=0 ; telnetparams.CmdParsers[moduleindex].var[i].varvalptr != NULL ; i++)
-      {
-      if ( strncasecmp(telnetparams.CmdParsers[moduleindex].var[i].varname,varname,strlen(telnetparams.CmdParsers[moduleindex].var[i].varname)) == 0)
-         {
-	 if (n > 0 && (getorset == 'g' || getorset == 'G'))
-	    {
-	    client_printf("%s, %s = ", telnetparams.CmdParsers[moduleindex].module,
-	               telnetparams.CmdParsers[moduleindex].var[i].varname );
-	    switch(telnetparams.CmdParsers[moduleindex].var[i].vartype)
-	        {
-		case TELNET_VARTYPE_INT32:
-	             client_printf("%i\n",*(int32_t *)(telnetparams.CmdParsers[moduleindex].var[i].varvalptr));
-		break;
-		case TELNET_VARTYPE_INT64:
-	             client_printf("%lli\n",*(int64_t *)(telnetparams.CmdParsers[moduleindex].var[i].varvalptr));
-		break;
-		case TELNET_VARTYPE_INT16:
-	             client_printf("%hi\n",*(short *)(telnetparams.CmdParsers[moduleindex].var[i].varvalptr));
-		break;	
-		case TELNET_VARTYPE_DOUBLE:
-	             client_printf("%g\n",*(double *)(telnetparams.CmdParsers[moduleindex].var[i].varvalptr));
-		break;
-		case TELNET_VARTYPE_STRING:
-	             client_printf("\"%s\"\n",*(char **)(telnetparams.CmdParsers[moduleindex].var[i].varvalptr));						
-                break;
-		default:
-		     client_printf("unknown type\n");
-		break;
-		}
-	    }
-	 if (n > 1 && (getorset == 's' || getorset == 'S'))
-	    {
-	    client_printf("%s, %s set to \n", telnetparams.CmdParsers[moduleindex].module,
-	           telnetparams.CmdParsers[moduleindex].var[i].varname);
-		   
-	    switch(telnetparams.CmdParsers[moduleindex].var[i].vartype)
-	        {
-		case TELNET_VARTYPE_INT32:
-		     *(int *)(telnetparams.CmdParsers[moduleindex].var[i].varvalptr) = (int)strtol(varval,NULL,0);
-	             client_printf("%i\n",*(int *)(telnetparams.CmdParsers[moduleindex].var[i].varvalptr));
-		break;
-		case TELNET_VARTYPE_INT16:
-		     *(short *)(telnetparams.CmdParsers[moduleindex].var[i].varvalptr) = (short)strtol(varval,NULL,0);
-	             client_printf("%hi\n",*(short *)(telnetparams.CmdParsers[moduleindex].var[i].varvalptr));
-		break;	
-		case TELNET_VARTYPE_DOUBLE:
-		     *(double *)(telnetparams.CmdParsers[moduleindex].var[i].varvalptr) = strtod(varval,NULL);
-	             client_printf("%g\n",*(double *)(telnetparams.CmdParsers[moduleindex].var[i].varvalptr));
-		break;	
-		case TELNET_VARTYPE_STRING:
-		     sprintf(*(char **)(telnetparams.CmdParsers[moduleindex].var[i].varvalptr),"%s", varval);
-	             client_printf("\"%s\"\n",*(char **)(telnetparams.CmdParsers[moduleindex].var[i].varvalptr));
-		break;				
-		default:
-		     client_printf("unknown type\n");
-		break;
-		}		   
-	    }		   
-	 }
-      } 
-if (n>1 && varval != NULL) {
-   free(varval);
-}
-return CMDSTATUS_VARNOTFOUND;
+int setgetvar(int moduleindex,char getorset,char *params) {
+  int n,i;
+  char varname[TELNET_CMD_MAXSIZE];
+  char *varval=NULL;
+  memset(varname,0,sizeof(varname));
+  n = sscanf(params,"%s %ms",varname,&varval);
+
+  for ( i=0 ; telnetparams.CmdParsers[moduleindex].var[i].varvalptr != NULL ; i++) {
+    if ( strncasecmp(telnetparams.CmdParsers[moduleindex].var[i].varname,varname,strlen(telnetparams.CmdParsers[moduleindex].var[i].varname)) == 0) {
+      if (n > 0 && (getorset == 'g' || getorset == 'G')) {
+        client_printf("%s, %s = ", telnetparams.CmdParsers[moduleindex].module,
+                      telnetparams.CmdParsers[moduleindex].var[i].varname );
+
+        switch(telnetparams.CmdParsers[moduleindex].var[i].vartype) {
+          case TELNET_VARTYPE_INT32:
+            client_printf("%i\n",*(int32_t *)(telnetparams.CmdParsers[moduleindex].var[i].varvalptr));
+            break;
+
+          case TELNET_VARTYPE_INT64:
+            client_printf("%lli\n",*(int64_t *)(telnetparams.CmdParsers[moduleindex].var[i].varvalptr));
+            break;
+
+          case TELNET_VARTYPE_INT16:
+            client_printf("%hi\n",*(short *)(telnetparams.CmdParsers[moduleindex].var[i].varvalptr));
+            break;
+
+          case TELNET_VARTYPE_DOUBLE:
+            client_printf("%g\n",*(double *)(telnetparams.CmdParsers[moduleindex].var[i].varvalptr));
+            break;
+
+          case TELNET_VARTYPE_STRING:
+            client_printf("\"%s\"\n",*(char **)(telnetparams.CmdParsers[moduleindex].var[i].varvalptr));
+            break;
+
+          default:
+            client_printf("unknown type\n");
+            break;
+        }
+      }
+
+      if (n > 1 && (getorset == 's' || getorset == 'S')) {
+        client_printf("%s, %s set to \n", telnetparams.CmdParsers[moduleindex].module,
+                      telnetparams.CmdParsers[moduleindex].var[i].varname);
+
+        switch(telnetparams.CmdParsers[moduleindex].var[i].vartype) {
+          case TELNET_VARTYPE_INT32:
+            *(int *)(telnetparams.CmdParsers[moduleindex].var[i].varvalptr) = (int)strtol(varval,NULL,0);
+            client_printf("%i\n",*(int *)(telnetparams.CmdParsers[moduleindex].var[i].varvalptr));
+            break;
+
+          case TELNET_VARTYPE_INT16:
+            *(short *)(telnetparams.CmdParsers[moduleindex].var[i].varvalptr) = (short)strtol(varval,NULL,0);
+            client_printf("%hi\n",*(short *)(telnetparams.CmdParsers[moduleindex].var[i].varvalptr));
+            break;
+
+          case TELNET_VARTYPE_DOUBLE:
+            *(double *)(telnetparams.CmdParsers[moduleindex].var[i].varvalptr) = strtod(varval,NULL);
+            client_printf("%g\n",*(double *)(telnetparams.CmdParsers[moduleindex].var[i].varvalptr));
+            break;
+
+          case TELNET_VARTYPE_STRING:
+            sprintf(*(char **)(telnetparams.CmdParsers[moduleindex].var[i].varvalptr),"%s", varval);
+            client_printf("\"%s\"\n",*(char **)(telnetparams.CmdParsers[moduleindex].var[i].varvalptr));
+            break;
+
+          default:
+            client_printf("unknown type\n");
+            break;
+        }
+      }
+    }
+  }
+
+  if (n>1 && varval != NULL) {
+    free(varval);
+  }
+
+  return CMDSTATUS_VARNOTFOUND;
 }
 /*----------------------------------------------------------------------------------------------------*/
-char *get_time(char *buff,int bufflen)
-{
-
-struct tm  tmstruct;
-time_t now = time (0);
-strftime (buff, bufflen, "%Y-%m-%d %H:%M:%S.000", localtime_r(&now,&tmstruct));
-return buff;
+char *get_time(char *buff,int bufflen) {
+  struct tm  tmstruct;
+  time_t now = time (0);
+  strftime (buff, bufflen, "%Y-%m-%d %H:%M:%S.000", localtime_r(&now,&tmstruct));
+  return buff;
 }
 
-int process_command(char *buf)
-{
-int i,j,k;
-char modulename[TELNET_CMD_MAXSIZE];
-char cmd[TELNET_CMD_MAXSIZE];
-char cmdb[TELNET_MAX_MSGLENGTH];
-char *bufbck;
-int rt;
-
-memset(modulename,0,sizeof(modulename));
-memset(cmd,0,sizeof(cmd));
-memset(cmdb,0,sizeof(cmdb));
-if (strncasecmp(buf,"ex",2) == 0)
-   return CMDSTATUS_EXIT;
-
-if (strncasecmp(buf,"help",4) == 0)
-   {
-   for (i=0; telnetparams.CmdParsers[i].var != NULL && telnetparams.CmdParsers[i].cmd != NULL; i++)
-    {
-     client_printf("   module %i = %s:\n",i,telnetparams.CmdParsers[i].module);
-     for(j=0; telnetparams.CmdParsers[i].var[j].varvalptr != NULL ; j++)
-        {
-	client_printf("      %s [get set] %s <value>\n",
-	       telnetparams.CmdParsers[i].module, telnetparams.CmdParsers[i].var[j].varname);
-	} 
-     for(j=0; telnetparams.CmdParsers[i].cmd[j].cmdfunc != NULL ; j++)
-        {
-	client_printf("      %s %s %s\n",
-	       telnetparams.CmdParsers[i].module,telnetparams.CmdParsers[i].cmd[j].cmdname,
-	       telnetparams.CmdParsers[i].cmd[j].helpstr);
-	} 	
+int process_command(char *buf) {
+  int i,j,k;
+  char modulename[TELNET_CMD_MAXSIZE];
+  char cmd[TELNET_CMD_MAXSIZE];
+  char cmdb[TELNET_MAX_MSGLENGTH];
+  char *bufbck;
+  int rt;
+  memset(modulename,0,sizeof(modulename));
+  memset(cmd,0,sizeof(cmd));
+  memset(cmdb,0,sizeof(cmdb));
+
+  if (strncasecmp(buf,"ex",2) == 0)
+    return CMDSTATUS_EXIT;
+
+  if (strncasecmp(buf,"help",4) == 0) {
+    for (i=0; telnetparams.CmdParsers[i].var != NULL && telnetparams.CmdParsers[i].cmd != NULL; i++) {
+      client_printf("   module %i = %s:\n",i,telnetparams.CmdParsers[i].module);
+
+      for(j=0; telnetparams.CmdParsers[i].var[j].varvalptr != NULL ; j++) {
+        client_printf("      %s [get set] %s <value>\n",
+                      telnetparams.CmdParsers[i].module, telnetparams.CmdParsers[i].var[j].varname);
+      }
+
+      for(j=0; telnetparams.CmdParsers[i].cmd[j].cmdfunc != NULL ; j++) {
+        client_printf("      %s %s %s\n",
+                      telnetparams.CmdParsers[i].module,telnetparams.CmdParsers[i].cmd[j].cmdname,
+                      telnetparams.CmdParsers[i].cmd[j].helpstr);
+      }
     }
-   return CMDSTATUS_FOUND;
-   }
-
-memset(modulename,0,sizeof(modulename));
-memset(cmd,0,sizeof(cmd));
-memset(cmdb,0,sizeof(cmdb));  
-bufbck=strdup(buf); 
-rt=CMDSTATUS_NOTFOUND;   
-j = sscanf(buf,"%9s %9s %[^\t\n]",modulename,cmd,cmdb);
-if (telnetparams.telnetdbg > 0)
-    printf("process_command: %i words, module=%s cmd=%s, parameters= %s\n",j,modulename,cmd,cmdb);   
-for (i=0; j>=2 && telnetparams.CmdParsers[i].var != NULL && telnetparams.CmdParsers[i].cmd != NULL; i++)
-    {
-    if ( (strncasecmp(telnetparams.CmdParsers[i].module,modulename,strlen(telnetparams.CmdParsers[i].module)) == 0))
-       {
-        if (strncasecmp(cmd,"getall",7) == 0 )
-	    { 
-            for(j=0; telnetparams.CmdParsers[i].var[j].varvalptr != NULL ; j++)
-               {
-	       setgetvar(i,'g',telnetparams.CmdParsers[i].var[j].varname);
-	       }
-	    rt= CMDSTATUS_FOUND;              
-	    }       
-        else if (strncasecmp(cmd,"get",3) == 0 || strncasecmp(cmd,"set",3) == 0)
-	    {
-            rt= setgetvar(i,cmd[0],cmdb);	    
-	    }	    
-        else
-	    {
-	    for (k=0 ; telnetparams.CmdParsers[i].cmd[k].cmdfunc != NULL ; k++)
-	        {
-	        if (strncasecmp(cmd, telnetparams.CmdParsers[i].cmd[k].cmdname,sizeof(telnetparams.CmdParsers[i].cmd[k].cmdname)) == 0)
-                   {
-	           telnetparams.CmdParsers[i].cmd[k].cmdfunc(cmdb, telnetparams.telnetdbg, client_printf);
-                   rt= CMDSTATUS_FOUND;
-	           }
-		} /* for k */
-	    }/* else */
-	}/* strncmp: module name test */
-     else if (strncasecmp(modulename,"loop",4) == 0 )
-	{
-	int lc;
-        int f = fcntl(telnetparams.new_socket,F_GETFL);
-	fcntl (telnetparams.new_socket, F_SETFL, O_NONBLOCK | f);
-	for(lc=0; lc<telnetparams.loopcount; lc++)
-	   {
-	   char dummybuff[20];
-	   char tbuff[64];
-       int rs;
-	   client_printf(CSI "1J" CSI "1;10H         " STDFMT "%s %i/%i\n",
-	                 get_time(tbuff,sizeof(tbuff)),lc,telnetparams.loopcount );  
-       process_command(bufbck+strlen("loop")+1);
-       usleep(telnetparams.loopdelay * 1000);
-	   rs = read(telnetparams.new_socket,dummybuff,sizeof(dummybuff)); 
-	   if ( rs > 0 )
-	       {
-	       break;
-	       }
-	   }
-	fcntl (telnetparams.new_socket, F_SETFL, f);
-	rt= CMDSTATUS_FOUND;	    
-	} /* loop */
-    } /* for i */
-free(bufbck);
-return rt;
+
+    return CMDSTATUS_FOUND;
+  }
+
+  memset(modulename,0,sizeof(modulename));
+  memset(cmd,0,sizeof(cmd));
+  memset(cmdb,0,sizeof(cmdb));
+  bufbck=strdup(buf);
+  rt=CMDSTATUS_NOTFOUND;
+  j = sscanf(buf,"%9s %9s %[^\t\n]",modulename,cmd,cmdb);
+
+  if (telnetparams.telnetdbg > 0)
+    printf("process_command: %i words, module=%s cmd=%s, parameters= %s\n",j,modulename,cmd,cmdb);
+
+  for (i=0; j>=2 && telnetparams.CmdParsers[i].var != NULL && telnetparams.CmdParsers[i].cmd != NULL; i++) {
+    if ( (strncasecmp(telnetparams.CmdParsers[i].module,modulename,strlen(telnetparams.CmdParsers[i].module)) == 0)) {
+      if (strncasecmp(cmd,"getall",7) == 0 ) {
+        for(j=0; telnetparams.CmdParsers[i].var[j].varvalptr != NULL ; j++) {
+          setgetvar(i,'g',telnetparams.CmdParsers[i].var[j].varname);
+        }
+
+        rt= CMDSTATUS_FOUND;
+      } else if (strncasecmp(cmd,"get",3) == 0 || strncasecmp(cmd,"set",3) == 0) {
+        rt= setgetvar(i,cmd[0],cmdb);
+      } else {
+        for (k=0 ; telnetparams.CmdParsers[i].cmd[k].cmdfunc != NULL ; k++) {
+          if (strncasecmp(cmd, telnetparams.CmdParsers[i].cmd[k].cmdname,sizeof(telnetparams.CmdParsers[i].cmd[k].cmdname)) == 0) {
+            telnetparams.CmdParsers[i].cmd[k].cmdfunc(cmdb, telnetparams.telnetdbg, client_printf);
+            rt= CMDSTATUS_FOUND;
+          }
+        } /* for k */
+      }/* else */
+    }/* strncmp: module name test */
+    else if (strncasecmp(modulename,"loop",4) == 0 ) {
+      int lc;
+      int f = fcntl(telnetparams.new_socket,F_GETFL);
+      fcntl (telnetparams.new_socket, F_SETFL, O_NONBLOCK | f);
+
+      for(lc=0; lc<telnetparams.loopcount; lc++) {
+        char dummybuff[20];
+        char tbuff[64];
+        int rs;
+        client_printf(CSI "1J" CSI "1;10H         " STDFMT "%s %i/%i\n",
+                      get_time(tbuff,sizeof(tbuff)),lc,telnetparams.loopcount );
+        process_command(bufbck+strlen("loop")+1);
+        usleep(telnetparams.loopdelay * 1000);
+        rs = read(telnetparams.new_socket,dummybuff,sizeof(dummybuff));
+
+        if ( rs > 0 ) {
+          break;
+        }
+      }
+
+      fcntl (telnetparams.new_socket, F_SETFL, f);
+      rt= CMDSTATUS_FOUND;
+    } /* loop */
+  } /* for i */
+
+  free(bufbck);
+  return rt;
 }
 
-void run_telnetsrv(void) 
-{
-int sock;
-struct sockaddr_in name;
-char buf[TELNET_MAX_MSGLENGTH];
-struct sockaddr cli_addr;
-unsigned int cli_len = sizeof(cli_addr);
-int readc , filled;
-
-int status;
-int optval = 1;
-
-pthread_setname_np(pthread_self(), "telnet");
-set_sched(pthread_self(),0,telnetparams.priority);
-sock = socket(AF_INET, SOCK_STREAM, 0);
-if (sock < 0) 
+void run_telnetsrv(void) {
+  int sock;
+  struct sockaddr_in name;
+  char buf[TELNET_MAX_MSGLENGTH];
+  struct sockaddr cli_addr;
+  unsigned int cli_len = sizeof(cli_addr);
+  int readc , filled;
+  int status;
+  int optval = 1;
+  pthread_setname_np(pthread_self(), "telnet");
+  set_sched(pthread_self(),0,telnetparams.priority);
+  sock = socket(AF_INET, SOCK_STREAM, 0);
+
+  if (sock < 0)
     fprintf(stderr,"[TELNETSRV] Error %s on socket call\n",strerror(errno));
 
-setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof optval);
-name.sin_family = AF_INET;
-if (telnetparams.listenaddr == 0)
+  setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof optval);
+  name.sin_family = AF_INET;
+
+  if (telnetparams.listenaddr == 0)
     name.sin_addr.s_addr = INADDR_ANY;
-else
+  else
     name.sin_addr.s_addr = telnetparams.listenaddr;
-name.sin_port = htons((unsigned short)(telnetparams.listenport));
 
-if(bind(sock, (void*) &name, sizeof(name))) 
-     fprintf(stderr,"[TELNETSRV] Error %s on bind call\n",strerror(errno));
-if(listen(sock, 1) == -1)
-     fprintf(stderr,"[TELNETSRV] Error %s on listen call\n",strerror(errno));
+  name.sin_port = htons((unsigned short)(telnetparams.listenport));
 
+  if(bind(sock, (void *) &name, sizeof(name)))
+    fprintf(stderr,"[TELNETSRV] Error %s on bind call\n",strerror(errno));
 
-using_history();
+  if(listen(sock, 1) == -1)
+    fprintf(stderr,"[TELNETSRV] Error %s on listen call\n",strerror(errno));
 
-printf("\nInitializing telnet server...\n");
-while( (telnetparams.new_socket = accept(sock, &cli_addr, &cli_len)) )
-     {
-     printf("[TELNETSRV] Telnet client connected....\n");
+  using_history();
+  printf("\nInitializing telnet server...\n");
+
+  while( (telnetparams.new_socket = accept(sock, &cli_addr, &cli_len)) ) {
+    printf("[TELNETSRV] Telnet client connected....\n");
     read_history(telnetparams.histfile);
     stifle_history(telnetparams.histsize);
+
     if(telnetparams.new_socket < 0)
-       fprintf(stderr,"[TELNETSRV] Error %s on accept call\n",strerror(errno));
-
-    while(telnetparams.new_socket>0)
-         {
-	 filled = 0;
-	 memset(buf,0,sizeof(buf));
-         while(filled < ( TELNET_MAX_MSGLENGTH-1))
-	     {
-             readc = recv(telnetparams.new_socket, buf+filled, TELNET_MAX_MSGLENGTH-filled-1, 0);
-             if(!readc)
-	        break;
-             filled += readc;
-             if(buf[filled-1] == '\n')
-	        {
-		buf[filled-1] = 0;
-		
-	        break;
-		}
-             }
-         if(!readc)
-	   {
-           printf ("[TELNETSRV] Telnet Client disconnected.\n");
-           break;
-           }
-         if (telnetparams.telnetdbg > 0)
-	    printf("[TELNETSRV] Command received: readc %i filled %i \"%s\"\n", readc, filled ,buf);
-         if (buf[0] == '!') {
-             if (buf[1] == '!') {
-         	 sprintf(buf,"%s","telnet history list");
-             } else {
-         	 HIST_ENTRY *hisentry = history_get(strtol(buf+1,NULL,0)); 
-         	 if (hisentry) {
-                     char msg[TELNET_MAX_MSGLENGTH + sizeof(TELNET_PROMPT) +10];
-         	     sprintf(buf,"%s",hisentry->line);
-        	     sprintf(msg,"%s %s\n",TELNET_PROMPT, hisentry->line);
-                     send(telnetparams.new_socket, msg, strlen(msg), MSG_NOSIGNAL);
-         	 }
-             }  	 
-         }
-	 if (strlen(buf) > 2 )
-	    {
-            status=process_command(buf);
-	    }
-	 else
-	    status=CMDSTATUS_NOCMD;
-	    
-         if (status != CMDSTATUS_EXIT) {
-	    if (status == CMDSTATUS_NOTFOUND) {
-	       char msg[TELNET_MAX_MSGLENGTH + 50];
-	       sprintf(msg,"Error: \n      %s\n is not a softmodem command\n",buf);
-	       send(telnetparams.new_socket, msg, strlen(msg), MSG_NOSIGNAL);
-	    } else if (status == CMDSTATUS_FOUND) {
-               add_history(buf);
-            }
-            send(telnetparams.new_socket, TELNET_PROMPT, sizeof(TELNET_PROMPT), MSG_NOSIGNAL);
-	} else {
-	    printf ("[TELNETSRV] Closing telnet connection...\n");
-	    break;
-	}
+      fprintf(stderr,"[TELNETSRV] Error %s on accept call\n",strerror(errno));
+
+    while(telnetparams.new_socket>0) {
+      filled = 0;
+      memset(buf,0,sizeof(buf));
+
+      while(filled < ( TELNET_MAX_MSGLENGTH-1)) {
+        readc = recv(telnetparams.new_socket, buf+filled, TELNET_MAX_MSGLENGTH-filled-1, 0);
+
+        if(!readc)
+          break;
+
+        filled += readc;
+
+        if(buf[filled-1] == '\n') {
+          buf[filled-1] = 0;
+          break;
+        }
+      }
+
+      if(!readc) {
+        printf ("[TELNETSRV] Telnet Client disconnected.\n");
+        break;
+      }
+
+      if (telnetparams.telnetdbg > 0)
+        printf("[TELNETSRV] Command received: readc %i filled %i \"%s\"\n", readc, filled ,buf);
+
+      if (buf[0] == '!') {
+        if (buf[1] == '!') {
+          sprintf(buf,"%s","telnet history list");
+        } else {
+          HIST_ENTRY *hisentry = history_get(strtol(buf+1,NULL,0));
+
+          if (hisentry) {
+            char msg[TELNET_MAX_MSGLENGTH + sizeof(TELNET_PROMPT) +10];
+            sprintf(buf,"%s",hisentry->line);
+            sprintf(msg,"%s %s\n",TELNET_PROMPT, hisentry->line);
+            send(telnetparams.new_socket, msg, strlen(msg), MSG_NOSIGNAL);
+          }
+        }
+      }
+
+      if (strlen(buf) > 2 ) {
+        status=process_command(buf);
+      } else
+        status=CMDSTATUS_NOCMD;
+
+      if (status != CMDSTATUS_EXIT) {
+        if (status == CMDSTATUS_NOTFOUND) {
+          char msg[TELNET_MAX_MSGLENGTH + 50];
+          sprintf(msg,"Error: \n      %s\n is not a softmodem command\n",buf);
+          send(telnetparams.new_socket, msg, strlen(msg), MSG_NOSIGNAL);
+        } else if (status == CMDSTATUS_FOUND) {
+          add_history(buf);
+        }
+
+        send(telnetparams.new_socket, TELNET_PROMPT, sizeof(TELNET_PROMPT), MSG_NOSIGNAL);
+      } else {
+        printf ("[TELNETSRV] Closing telnet connection...\n");
+        break;
+      }
     }
+
     write_history(telnetparams.histfile);
     clear_history();
     close(telnetparams.new_socket);
     printf ("[TELNETSRV] Telnet server waitting for connection...\n");
-    }
-close(sock);
-return;
+  }
+
+  close(sock);
+  return;
 }
 
 /*------------------------------------------------------------------------------------------------*/
 /* set_telnetmodule loads the commands delivered with the telnet server
  *
  *
- * 
+ *
 */
-void exec_moduleinit(char *modname)
-{
-void (*fptr)(void);
-char initfunc[TELNET_CMD_MAXSIZE+9];
-
-       if (strlen(modname) > TELNET_CMD_MAXSIZE)
-	  {
-          fprintf(stderr,"[TELNETSRV] module %s not loaded, name exceeds the %i size limit\n",
-			 modname, TELNET_CMD_MAXSIZE);
-	  return; 
-          }
-       sprintf(initfunc,"add_%s_cmds",modname);
-       fptr = dlsym(RTLD_DEFAULT,initfunc);
-       if ( fptr != NULL)
-          {
-          fptr();
-          }
-       else
-          {
-          fprintf(stderr,"[TELNETSRV] couldn't find %s for module %s \n",initfunc,modname);
-          }
-}
+void exec_moduleinit(char *modname) {
+  void (*fptr)(void);
+  char initfunc[TELNET_CMD_MAXSIZE+9];
+
+  if (strlen(modname) > TELNET_CMD_MAXSIZE) {
+    fprintf(stderr,"[TELNETSRV] module %s not loaded, name exceeds the %i size limit\n",
+            modname, TELNET_CMD_MAXSIZE);
+    return;
+  }
 
-int add_embeddedmodules(void)
-{
-int ret=0;
+  sprintf(initfunc,"add_%s_cmds",modname);
+  fptr = dlsym(RTLD_DEFAULT,initfunc);
 
+  if ( fptr != NULL) {
+    fptr();
+  } else {
+    fprintf(stderr,"[TELNETSRV] couldn't find %s for module %s \n",initfunc,modname);
+  }
+}
 
+int add_embeddedmodules(void) {
+  int ret=0;
 
-    for(int i=0; i<telnetoptions[TELNETSRV_STATICMOD].numelt;i++)
-       {
-       ret++;
-       exec_moduleinit(telnetoptions[TELNETSRV_STATICMOD].strlistptr[i]);
-       }
-return ret;
+  for(int i=0; i<telnetoptions[TELNETSRV_STATICMOD].numelt; i++) {
+    ret++;
+    exec_moduleinit(telnetoptions[TELNETSRV_STATICMOD].strlistptr[i]);
+  }
 
+  return ret;
 }
 
-int add_sharedmodules(void)
-{
-char initfunc[TELNET_CMD_MAXSIZE+9];
-void (*fptr)(void);
-int ret=0;
-
-    for(int i=0; i<telnetoptions[TELNETSRV_SHRMOD].numelt;i++)
-       {
-       sprintf(initfunc,"add_%s_cmds",telnetoptions[TELNETSRV_SHRMOD].strlistptr[i]);
-       fptr = dlsym(RTLD_DEFAULT,initfunc);
-       if ( fptr != NULL)
-          {
-          fptr();
-          ret++;
-          }
-       else
-          {
-          fprintf(stderr,"[TELNETSRV] couldn't find %s for module %s \n",initfunc,telnetoptions[TELNETSRV_STATICMOD].strlistptr[i]);
-          }
-       }
-    return ret;
-}
+int add_sharedmodules(void) {
+  char initfunc[TELNET_CMD_MAXSIZE+9];
+  void (*fptr)(void);
+  int ret=0;
 
-int telnetsrv_autoinit(void)
- {
+  for(int i=0; i<telnetoptions[TELNETSRV_SHRMOD].numelt; i++) {
+    sprintf(initfunc,"add_%s_cmds",telnetoptions[TELNETSRV_SHRMOD].strlistptr[i]);
+    fptr = dlsym(RTLD_DEFAULT,initfunc);
 
+    if ( fptr != NULL) {
+      fptr();
+      ret++;
+    } else {
+      fprintf(stderr,"[TELNETSRV] couldn't find %s for module %s \n",initfunc,telnetoptions[TELNETSRV_STATICMOD].strlistptr[i]);
+    }
+  }
 
-   memset(&telnetparams,0,sizeof(telnetparams));
+  return ret;
+}
 
-   config_get( telnetoptions,sizeof(telnetoptions)/sizeof(paramdef_t),"telnetsrv"); 
+int telnetsrv_autoinit(void) {
+  memset(&telnetparams,0,sizeof(telnetparams));
+  config_get( telnetoptions,sizeof(telnetoptions)/sizeof(paramdef_t),"telnetsrv");
+
+  if(pthread_create(&telnetparams.telnet_pthread,NULL, (void *(*)(void *))run_telnetsrv, NULL) != 0) {
+    fprintf(stderr,"[TELNETSRV] Error %s on pthread_create call\n",strerror(errno));
+    return -1;
+  }
 
- 
-   if(pthread_create(&telnetparams.telnet_pthread,NULL, (void *(*)(void *))run_telnetsrv, NULL) != 0)
-     {
-     fprintf(stderr,"[TELNETSRV] Error %s on pthread_create call\n",strerror(errno));
-     return -1;
-     }
   add_telnetcmd("telnet", telnet_vardef, telnet_cmdarray);
   add_embeddedmodules();
   return 0;
- }
- 
+}
+
 /*---------------------------------------------------------------------------------------------*/
 /* add_telnetcmd is used to add a set of commands to the telnet server. A module calls this
  * function at init time. the telnet server is delivered with a set of commands which
  * will be loaded or not depending on the telnet section of the config file
 */
-int add_telnetcmd(char *modulename, telnetshell_vardef_t *var, telnetshell_cmddef_t *cmd)
- {
- int i;
- if( modulename == NULL || var == NULL || cmd == NULL)
-     {
-     fprintf(stderr,"[TELNETSRV] Telnet server, add_telnetcmd: invalid parameters\n");
-     return -1;
-     }
- for (i=0; i<TELNET_MAXCMD ; i++)
-     {
-     if (telnetparams.CmdParsers[i].var == NULL)
-        {
-        strncpy(telnetparams.CmdParsers[i].module,modulename,sizeof(telnetparams.CmdParsers[i].module)-1);
-        telnetparams.CmdParsers[i].cmd = cmd;
-        telnetparams.CmdParsers[i].var = var;
-        printf("[TELNETSRV] Telnet server: module %i = %s added to shell\n",
-               i,telnetparams.CmdParsers[i].module);
-        break;
-        }
-     }
+int add_telnetcmd(char *modulename, telnetshell_vardef_t *var, telnetshell_cmddef_t *cmd) {
+  int i;
+
+  if( modulename == NULL || var == NULL || cmd == NULL) {
+    fprintf(stderr,"[TELNETSRV] Telnet server, add_telnetcmd: invalid parameters\n");
+    return -1;
+  }
+
+  for (i=0; i<TELNET_MAXCMD ; i++) {
+    if (telnetparams.CmdParsers[i].var == NULL) {
+      strncpy(telnetparams.CmdParsers[i].module,modulename,sizeof(telnetparams.CmdParsers[i].module)-1);
+      telnetparams.CmdParsers[i].cmd = cmd;
+      telnetparams.CmdParsers[i].var = var;
+      printf("[TELNETSRV] Telnet server: module %i = %s added to shell\n",
+             i,telnetparams.CmdParsers[i].module);
+      break;
+    }
+  }
+
   return 0;
- }
+}
 
 
 /* function which will be called by the shared lib loader, to check shared lib version
    against main exec version. version mismatch no considered as fatal (interfaces not supposed to change)
-*/ 
-int  telnetsrv_checkbuildver(char * mainexec_buildversion, char ** shlib_buildversion)
-{
+*/
+int  telnetsrv_checkbuildver(char *mainexec_buildversion, char **shlib_buildversion) {
 #ifndef PACKAGE_VERSION
 #define PACKAGE_VERSION "standalone built: " __DATE__ __TIME__
 #endif
-    *shlib_buildversion = PACKAGE_VERSION;
-    if (strcmp(mainexec_buildversion, *shlib_buildversion) != 0) {
-          fprintf(stderr,"[TELNETSRV] shared lib version %s, doesn't match main version %s, compatibility should be checked\n",
-                mainexec_buildversion,*shlib_buildversion);
-    }
-    return 0;
+  *shlib_buildversion = PACKAGE_VERSION;
+
+  if (strcmp(mainexec_buildversion, *shlib_buildversion) != 0) {
+    fprintf(stderr,"[TELNETSRV] shared lib version %s, doesn't match main version %s, compatibility should be checked\n",
+            mainexec_buildversion,*shlib_buildversion);
+  }
+
+  return 0;
 }
 
-int telnetsrv_getfarray(loader_shlibfunc_t  **farray)
- {
+int telnetsrv_getfarray(loader_shlibfunc_t  **farray) {
   *farray=malloc(sizeof(loader_shlibfunc_t));
   (*farray)[0].fname=TELNET_ADDCMD_FNAME;
   (*farray)[0].fptr=(int (*)(void) )add_telnetcmd;
   return 1;
- }
+}
diff --git a/doc/FEATURE_SET.md b/doc/FEATURE_SET.md
index 103f132728c4d0025cf2035c71c66acea28f35b8..fef47d9c271aae7eaf53640715baa9a48fb2a972 100644
--- a/doc/FEATURE_SET.md
+++ b/doc/FEATURE_SET.md
@@ -8,7 +8,8 @@
    5. [eNB RRC Layer](#enb-rrc-layer)
    6. [eNB X2AP](#enb-x2ap)
    7. [eNB Advanced Features](#enb-advanced-features)
-2. [OpenAirInterface UE Feature Set](#openairinterface-ue-feature-set)
+2. [OpenAirInterface Functional Split](#openairinterface-functional-split)
+3. [OpenAirInterface UE Feature Set](#openairinterface-ue-feature-set)
    1.  [LTE UE PHY Layer](#lte-ue-phy-layer)
    2.  [LTE UE MAC Layer](#lte-ue-mac-layer)
    3.  [LTE UE RLC Layer](#lte-ue-rlc-layer)
@@ -128,6 +129,18 @@ The X2AP layer is based on **3GPP 36.423** v14.6.0 and implements the following
 
 **To be completed**
 
+# OpenAirInterface Functional Split #
+
+-  RCC: Radio-Cloud Center
+-  RAU: Radio-Access Unit
+-  RRU: Remote Radio-Unit
+
+![Functional Split Architecture](./oai_lte_enb_func_split_arch.png)
+
+-  IF4.5 / IF5 : similar to IEEE P1914.1
+-  FAPI (IF2)  : specified by Small Cell Forum (open-nFAPI implementation)
+-  IF1         : F1 in 3GPP Release 15 (not implemented yet)
+
 # OpenAirInterface UE Feature Set #
 
 ## LTE UE PHY Layer ##
@@ -169,3 +182,10 @@ The RRC layer is based on **3GPP 36.331** v14.3.0 and implements the following f
 
 - System Information decoding
 - RRC connection establishment
+
+## LTE UE NAS Layer ##
+
+The NAS layer is based on **3GPP 24.301** and implements the following functions:
+
+- EMM attach/detach, authentication, tracking area update, and more
+- ESM default/dedicated bearer, PDN connectivity, and more
diff --git a/doc/oai_lte_enb_func_split_arch.png b/doc/oai_lte_enb_func_split_arch.png
new file mode 100644
index 0000000000000000000000000000000000000000..1e8a55924ccd6101319369567479230dad1c8d24
Binary files /dev/null and b/doc/oai_lte_enb_func_split_arch.png differ
diff --git a/nfapi/oai_integration/nfapi_vnf.c b/nfapi/oai_integration/nfapi_vnf.c
index a8e5d665f6640f4daa03c2224b5b4cc121f3e000..3da2059ba7174e5b15b72860d050c4bf4ba5e03e 100644
--- a/nfapi/oai_integration/nfapi_vnf.c
+++ b/nfapi/oai_integration/nfapi_vnf.c
@@ -270,6 +270,7 @@ int pnf_param_resp_cb(nfapi_vnf_config_t* config, int p5_idx, nfapi_pnf_param_re
   for(int i = 0; i < resp->pnf_phy.number_of_phys; ++i)
   {
     phy_info phy;
+    memset(&phy,0,sizeof(phy));
     phy.index = resp->pnf_phy.phy[i].phy_config_index;
 
     printf("[VNF] (PHY:%d) phy_config_idx:%d\n", i, resp->pnf_phy.phy[i].phy_config_index);
@@ -287,6 +288,7 @@ int pnf_param_resp_cb(nfapi_vnf_config_t* config, int p5_idx, nfapi_pnf_param_re
 
   for(int i = 0; i < resp->pnf_rf.number_of_rfs; ++i) {
     rf_info rf;
+    memset(&rf,0,sizeof(rf));
     rf.index = resp->pnf_rf.rf[i].rf_config_index;
 
     printf("[VNF] (RF:%d) rf_config_idx:%d\n", i, resp->pnf_rf.rf[i].rf_config_index);
@@ -897,7 +899,7 @@ int param_resp_cb(nfapi_vnf_config_t* config, int p5_idx, nfapi_param_response_t
 
   // for now just 1
 
-  printf("[VNF] %d.%d pnf p7 %s:%d timing %d %d %d %d\n", p5_idx, phy->id, phy->remote_addr, phy->remote_port, p7_vnf->timing_window, p7_vnf->periodic_timing_period, p7_vnf->aperiodic_timing_enabled, p7_vnf->periodic_timing_period);
+  printf("[VNF] %d.%d pnf p7 %s:%d timing %u %u %u %u\n", p5_idx, phy->id, phy->remote_addr, phy->remote_port, p7_vnf->timing_window, p7_vnf->periodic_timing_period, p7_vnf->aperiodic_timing_enabled, p7_vnf->periodic_timing_period);
 
   req->header.message_id = NFAPI_CONFIG_REQUEST;
   req->header.phy_id = phy->id;
@@ -919,7 +921,7 @@ int param_resp_cb(nfapi_vnf_config_t* config, int p5_idx, nfapi_param_response_t
 
   req->nfapi_config.timing_window.tl.tag = NFAPI_NFAPI_TIMING_WINDOW_TAG;
   req->nfapi_config.timing_window.value = p7_vnf->timing_window;
-  printf("[VNF] Timing window:%d\n", p7_vnf->timing_window);
+  printf("[VNF] Timing window:%u\n", p7_vnf->timing_window);
   req->num_tlv++;
 
   if(p7_vnf->periodic_timing_enabled || p7_vnf->aperiodic_timing_enabled) {
@@ -1110,7 +1112,7 @@ int oai_nfapi_dl_config_req(nfapi_dl_config_request_t *dl_config_req)
   nfapi_vnf_p7_config_t *p7_config = vnf.p7_vnfs[0].config;
 
   dl_config_req->header.phy_id = 1; // DJP HACK TODO FIXME - need to pass this around!!!!
-
+  dl_config_req->header.message_id = NFAPI_DL_CONFIG_REQUEST;
   int retval = nfapi_vnf_p7_dl_config_req(p7_config, dl_config_req);
 
   dl_config_req->dl_config_request_body.number_pdcch_ofdm_symbols           = 1;
@@ -1129,7 +1131,7 @@ int oai_nfapi_tx_req(nfapi_tx_request_t *tx_req)
   nfapi_vnf_p7_config_t *p7_config = vnf.p7_vnfs[0].config;
 
   tx_req->header.phy_id = 1; // DJP HACK TODO FIXME - need to pass this around!!!!
-
+  tx_req->header.message_id = NFAPI_TX_REQUEST;
   //LOG_D(PHY, "[VNF] %s() TX_REQ sfn_sf:%d number_of_pdus:%d\n", __FUNCTION__, NFAPI_SFNSF2DEC(tx_req->sfn_sf), tx_req->tx_request_body.number_of_pdus);
 
   int retval = nfapi_vnf_p7_tx_req(p7_config, tx_req);
@@ -1147,7 +1149,7 @@ int oai_nfapi_hi_dci0_req(nfapi_hi_dci0_request_t *hi_dci0_req) {
   nfapi_vnf_p7_config_t *p7_config = vnf.p7_vnfs[0].config;
 
   hi_dci0_req->header.phy_id = 1; // DJP HACK TODO FIXME - need to pass this around!!!!
-
+  hi_dci0_req->header.message_id = NFAPI_HI_DCI0_REQUEST;
   //LOG_D(PHY, "[VNF] %s() HI_DCI0_REQ sfn_sf:%d dci:%d hi:%d\n", __FUNCTION__, NFAPI_SFNSF2DEC(hi_dci0_req->sfn_sf), hi_dci0_req->hi_dci0_request_body.number_of_dci, hi_dci0_req->hi_dci0_request_body.number_of_hi);
 
   int retval = nfapi_vnf_p7_hi_dci0_req(p7_config, hi_dci0_req);
@@ -1166,7 +1168,7 @@ int oai_nfapi_ul_config_req(nfapi_ul_config_request_t *ul_config_req) {
   nfapi_vnf_p7_config_t *p7_config = vnf.p7_vnfs[0].config;
 
   ul_config_req->header.phy_id = 1; // DJP HACK TODO FIXME - need to pass this around!!!!
-
+  ul_config_req->header.message_id = NFAPI_UL_CONFIG_REQUEST;
   //LOG_D(PHY, "[VNF] %s() header message_id:%02x\n", __FUNCTION__, ul_config_req->header.message_id);
 
   //LOG_D(PHY, "[VNF] %s() UL_CONFIG sfn_sf:%d PDUs:%d rach_prach_frequency_resources:%d srs_present:%d\n", __FUNCTION__, NFAPI_SFNSF2DEC(ul_config_req->sfn_sf), ul_config_req->ul_config_request_body.number_of_pdus, ul_config_req->ul_config_request_body.rach_prach_frequency_resources, ul_config_req->ul_config_request_body.srs_present);
diff --git a/nfapi/open-nFAPI/pnf/src/pnf.c b/nfapi/open-nFAPI/pnf/src/pnf.c
index d0a7fa6fd12140dd38ab66c1f866ec8d9abe3d09..eec9ff80c38a98f0425c4a3d8d30b433f6a974b7 100644
--- a/nfapi/open-nFAPI/pnf/src/pnf.c
+++ b/nfapi/open-nFAPI/pnf/src/pnf.c
@@ -1237,11 +1237,11 @@ int pnf_connect(pnf_t* pnf)
 	}
 
 	struct addrinfo *p = servinfo;
-	int i = 0;
 	int connected = 0;
 
 	while(p != NULL && connected == 0)
 	{
+#ifdef NFAPI_TRACE_ENABLED
 		char* family = "Unknown";
 		char* address = "Unknown";
 		char _addr[128];
@@ -1261,6 +1261,7 @@ int pnf_connect(pnf_t* pnf)
 		}
 
 		NFAPI_TRACE(NFAPI_TRACE_NOTE, "Host address info  %d Family:%s Address:%s\n", i++, family, address);
+#endif
 
 		if (pnf->sctp)
 		{
diff --git a/nfapi/open-nFAPI/pnf/src/pnf_p7.c b/nfapi/open-nFAPI/pnf/src/pnf_p7.c
index 8d94c23476b1f77f1e7c8a9610d109204a013f7b..81abed81a95b27935df7b19bb21ddb8b5c25f97d 100644
--- a/nfapi/open-nFAPI/pnf/src/pnf_p7.c
+++ b/nfapi/open-nFAPI/pnf/src/pnf_p7.c
@@ -379,7 +379,7 @@ static uint32_t get_sf_time(uint32_t now_hr, uint32_t sf_start_hr)
 {
 	if(now_hr < sf_start_hr)
 	{
-		NFAPI_TRACE(NFAPI_TRACE_INFO, "now is earlier than start of subframe now_hr:%u sf_start_hr:%u\n", now_hr, sf_start_hr);
+		//NFAPI_TRACE(NFAPI_TRACE_INFO, "now is earlier than start of subframe now_hr:%u sf_start_hr:%u\n", now_hr, sf_start_hr);
 		return 0;
 	}
 	else
diff --git a/nfapi/open-nFAPI/vnf/src/vnf_p7.c b/nfapi/open-nFAPI/vnf/src/vnf_p7.c
index cea259c35b354d3179d178da2ce6faf3f9104f70..4b7acabec3637af74e3d95f8d9d805ea3337b118 100644
--- a/nfapi/open-nFAPI/vnf/src/vnf_p7.c
+++ b/nfapi/open-nFAPI/vnf/src/vnf_p7.c
@@ -1203,12 +1203,12 @@ void vnf_handle_ul_node_sync(void *pRecvMsg, int recvMsgLen, vnf_p7_t* vnf_p7)
 
 			if(phy->in_sync == 0)
 			{
-				NFAPI_TRACE(NFAPI_TRACE_NOTE, "***** Adjusting VNF phy_id:%d SFN/SF (%s) from %d to %d (%d) mode:%s zeroCount:%u sync:%s\n", 
+				/*NFAPI_TRACE(NFAPI_TRACE_NOTE, "***** Adjusting VNF phy_id:%d SFN/SF (%s) from %d to %d (%d) mode:%s zeroCount:%u sync:%s\n",
 					ind.header.phy_id, (phy->in_sync ? "via sfn" : "now"),
 					NFAPI_SFNSF2DEC(curr_sfn_sf), NFAPI_SFNSF2DEC(new_sfn_sf), phy->adjustment, 
 					phy->filtered_adjust ? "FILTERED" : "ABSOLUTE",
 					phy->zero_count,
-					phy->in_sync ? "IN_SYNC" : "OUT_OF_SYNC");
+					phy->in_sync ? "IN_SYNC" : "OUT_OF_SYNC");*/
 
 				phy->sfn_sf = new_sfn_sf;
 			}
diff --git a/openair1/PHY/CODING/3gpplte_sse.c b/openair1/PHY/CODING/3gpplte_sse.c
index 96dbcc371711c709a0035ce8ddcea3321d6bce23..2a7b789650428ff12c2418ccb3c3ce0fa3ba4d74 100644
--- a/openair1/PHY/CODING/3gpplte_sse.c
+++ b/openair1/PHY/CODING/3gpplte_sse.c
@@ -26,9 +26,9 @@
    date: 09.2012
 */
 #ifndef TC_MAIN
-#include "coding_defs.h"
+  #include "coding_defs.h"
 #else
-#include <stdint.h>
+  #include <stdint.h>
 #endif
 #include <stdio.h>
 #include <string.h>
@@ -66,11 +66,11 @@ struct treillis {
   union {
     uint8x8_t systematic_andp1_64[3];
     char systematic_andp1_8[24];
-  }__attribute__((aligned(64)));
+  } __attribute__((aligned(64)));
   union {
     uint8x8_t parity2_64[3];
     char parity2_8[24];
-  }__attribute__((aligned(64)));
+  } __attribute__((aligned(64)));
   int exit_state;
 };
 #endif
@@ -79,23 +79,20 @@ struct treillis all_treillis[8][256];
 
 int all_treillis_initialized=0;
 
-static inline unsigned char threegpplte_rsc(unsigned char input,unsigned char *state)
-{
+static inline unsigned char threegpplte_rsc(unsigned char input,unsigned char *state) {
   unsigned char output;
   output = (input ^ (*state>>2) ^ (*state>>1))&1;
   *state = (((input<<2)^(*state>>1))^((*state>>1)<<2)^((*state)<<2))&7;
   return(output);
 }
 
-static inline void threegpplte_rsc_termination(unsigned char *x,unsigned char *z,unsigned char *state)
-{
+static inline void threegpplte_rsc_termination(unsigned char *x,unsigned char *z,unsigned char *state) {
   *z     = ((*state>>2) ^ (*state))   &1;
   *x     = ((*state)    ^ (*state>>1))   &1;
   *state = (*state)>>1;
 }
 
-static void treillis_table_init(void)
-{
+static void treillis_table_init(void) {
   //struct treillis t[][]=all_treillis;
   //t=memalign(16,sizeof(struct treillis)*8*256);
   int i, j,b;
@@ -114,8 +111,8 @@ static void treillis_table_init(void)
         all_treillis[i][j].systematic_andp1_8[b*3]= (j&(1<<(7-b)))>>(7-b);
         v=threegpplte_rsc( all_treillis[i][j].systematic_andp1_8[b*3] ,
                            &current_state);
-	all_treillis[i][j].systematic_andp1_8[b*3+1]=v; // for the yparity1
-	//        all_treillis[i][j].parity1_8[b*3+1]=v; // for the yparity1
+        all_treillis[i][j].systematic_andp1_8[b*3+1]=v; // for the yparity1
+        //        all_treillis[i][j].parity1_8[b*3+1]=v; // for the yparity1
         all_treillis[i][j].parity2_8[b*3+2]=v; // for the yparity2
       }
 
@@ -128,14 +125,12 @@ static void treillis_table_init(void)
 }
 
 
-char interleave_compact_byte(short * base_interleaver,unsigned char * input, unsigned char * output, int n)
-{
-
+char interleave_compact_byte(short *base_interleaver,unsigned char *input, unsigned char *output, int n) {
   char expandInput[768*8] __attribute__((aligned(32)));
   int i,loop=n>>4;
 #if defined(__x86_64__) || defined(__i386__)
 #ifndef __AVX2__
-  __m128i *i_128=(__m128i *)input, *o_128=(__m128i*)expandInput;
+  __m128i *i_128=(__m128i *)input, *o_128=(__m128i *)expandInput;
   __m128i tmp1, tmp2, tmp3, tmp4;
   __m128i BIT_MASK = _mm_set_epi8(  0b00000001,
                                     0b00000010,
@@ -153,42 +148,41 @@ char interleave_compact_byte(short * base_interleaver,unsigned char * input, uns
                                     0b00100000,
                                     0b01000000,
                                     0b10000000);
-
 #else
-  __m256i *i_256=(__m256i *)input, *o_256=(__m256i*)expandInput;
+  __m256i *i_256=(__m256i *)input, *o_256=(__m256i *)expandInput;
   __m256i tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
   __m256i BIT_MASK = _mm256_set_epi8(  0b00000001,
-				       0b00000010,
-				       0b00000100,
-				       0b00001000,
-				       0b00010000,
-				       0b00100000,
-				       0b01000000,
-				       0b10000000,
-				       0b00000001,
-				       0b00000010,
-				       0b00000100,
-				       0b00001000,
-				       0b00010000,
-				       0b00100000,
-				       0b01000000,
-				       0b10000000,
-				       0b00000001,
-				       0b00000010,
-				       0b00000100,
-				       0b00001000,
-				       0b00010000,
-				       0b00100000,
-				       0b01000000,
-				       0b10000000,
-				       0b00000001,
-				       0b00000010,
-				       0b00000100,
-				       0b00001000,
-				       0b00010000,
-				       0b00100000,
-				       0b01000000,
-				       0b10000000);
+                                       0b00000010,
+                                       0b00000100,
+                                       0b00001000,
+                                       0b00010000,
+                                       0b00100000,
+                                       0b01000000,
+                                       0b10000000,
+                                       0b00000001,
+                                       0b00000010,
+                                       0b00000100,
+                                       0b00001000,
+                                       0b00010000,
+                                       0b00100000,
+                                       0b01000000,
+                                       0b10000000,
+                                       0b00000001,
+                                       0b00000010,
+                                       0b00000100,
+                                       0b00001000,
+                                       0b00010000,
+                                       0b00100000,
+                                       0b01000000,
+                                       0b10000000,
+                                       0b00000001,
+                                       0b00000010,
+                                       0b00000100,
+                                       0b00001000,
+                                       0b00010000,
+                                       0b00100000,
+                                       0b01000000,
+                                       0b10000000);
 #endif
 #elif defined(__arm__)
   uint8x16_t *i_128=(uint8x16_t *)input, *o_128=(uint8x16_t *)expandInput;
@@ -196,40 +190,41 @@ char interleave_compact_byte(short * base_interleaver,unsigned char * input, uns
   uint16x8_t tmp3;
   uint32x4_t tmp4;
   uint8x16_t and_tmp;
-  uint8x16_t BIT_MASK = {  	    0b10000000,
-                                    0b01000000,
-                                    0b00100000,
-                                    0b00010000,
-                                    0b00001000,
-                                    0b00000100,
-                                    0b00000010,
-                                    0b00000001,
-                                    0b10000000,
-                                    0b01000000,
-                                    0b00100000,
-                                    0b00010000,
-                                    0b00001000,
-                                    0b00000100,
-                                    0b00000010,
-                                    0b00000001};
+  uint8x16_t BIT_MASK = {       0b10000000,
+                                0b01000000,
+                                0b00100000,
+                                0b00010000,
+                                0b00001000,
+                                0b00000100,
+                                0b00000010,
+                                0b00000001,
+                                0b10000000,
+                                0b01000000,
+                                0b00100000,
+                                0b00010000,
+                                0b00001000,
+                                0b00000100,
+                                0b00000010,
+                                0b00000001
+                        };
 #endif
- 
-
 #ifndef __AVX2__
+
   if ((n&15) > 0)
     loop++;
+
 #else
   loop=n>>5;
+
   if ((n&31) > 0)
     loop++;
-#endif
 
+#endif
 
   for (i=0; i<loop ; i++ ) {
-    // int cur_byte=i<<3; 
-    // for (b=0;b<8;b++) 
-    //   expandInput[cur_byte+b] = (input[i]&(1<<(7-b)))>>(7-b); 
-
+    // int cur_byte=i<<3;
+    // for (b=0;b<8;b++)
+    //   expandInput[cur_byte+b] = (input[i]&(1<<(7-b)))>>(7-b);
 #if defined(__x86_64__) || defined(__i386__)
 #ifndef __AVX2__
     tmp1=_mm_load_si128(i_128++);       // tmp1 = B0,B1,...,B15
@@ -237,29 +232,22 @@ char interleave_compact_byte(short * base_interleaver,unsigned char * input, uns
     tmp3=_mm_unpacklo_epi16(tmp2,tmp2); // tmp3 = B0,B0,B0,B0,B1,B1,B1,B1,B2,B2,B2,B2,B3,B3,B3,B3
     tmp4=_mm_unpacklo_epi32(tmp3,tmp3); // tmp4 - B0,B0,B0,B0,B0,B0,B0,B0,B1,B1,B1,B1,B1,B1,B1,B1
     *o_128++=_mm_cmpeq_epi8(_mm_and_si128(tmp4,BIT_MASK),BIT_MASK);
-
     tmp4=_mm_unpackhi_epi32(tmp3,tmp3); // tmp4 - B2,B2,B2,B2,B2,B2,B2,B2,B3,B3,B3,B3,B3,B3,B3,B3
     *o_128++=_mm_cmpeq_epi8(_mm_and_si128(tmp4,BIT_MASK),BIT_MASK);;
-
     tmp3=_mm_unpackhi_epi16(tmp2,tmp2); // tmp3 = B4,B4,B4,B4,B5,B5,B5,B5,B6,B6,B6,B6,B7,B7,B7,B7
     tmp4=_mm_unpacklo_epi32(tmp3,tmp3); // tmp4 - B4,B4,B4,B4,B4,B4,B4,B4,B5,B5,B5,B5,B5,B5,B5,B5
     *o_128++=_mm_cmpeq_epi8(_mm_and_si128(tmp4,BIT_MASK),BIT_MASK);;
-
     tmp4=_mm_unpackhi_epi32(tmp3,tmp3); // tmp4 - B6,B6,B6,B6,B6,B6,B6,B6,B7,B7,B7,B7,B7,B7,B7,B7
     *o_128++=_mm_cmpeq_epi8(_mm_and_si128(tmp4,BIT_MASK),BIT_MASK);;
-
     tmp2=_mm_unpackhi_epi8(tmp1,tmp1);  // tmp2 = B8,B8,B9,B9,...,B15,B15
     tmp3=_mm_unpacklo_epi16(tmp2,tmp2); // tmp3 = B8,B8,B8,B8,B9,B9,B9,B9,B10,B10,B10,B10,B11,B11,B11,B11
     tmp4=_mm_unpacklo_epi32(tmp3,tmp3); // tmp4 = B8,B8,B8,B8,B8,B8,B8,B8,B9,B9,B9,B9,B9,B9,B9,B9
     *o_128++=_mm_cmpeq_epi8(_mm_and_si128(tmp4,BIT_MASK),BIT_MASK);;
-
     tmp4=_mm_unpackhi_epi32(tmp3,tmp3); // tmp4 = B10,B10,B10,B10,B10,B10,B10,B10,B11,B11,B11,B11,B11,B11,B11,B11
     *o_128++=_mm_cmpeq_epi8(_mm_and_si128(tmp4,BIT_MASK),BIT_MASK);;
-
     tmp3=_mm_unpackhi_epi16(tmp2,tmp2); // tmp3 = B12,B12,B12,B12,B13,B13,B13,B13,B14,B14,B14,B14,B15,B15,B15,B15
     tmp4=_mm_unpacklo_epi32(tmp3,tmp3); // tmp4 = B12,B12,B12,B12,B12,B12,B12,B12,B13,B13,B13,B13,B13,B13,B13,B13
     *o_128++=_mm_cmpeq_epi8(_mm_and_si128(tmp4,BIT_MASK),BIT_MASK);;
-
     tmp4=_mm_unpackhi_epi32(tmp3,tmp3); // tmp4 = B14,B14,B14,B14,B14,B14,B14,B14,B15,B15,B15,B15,B15,B15,B15,B15
     *o_128++=_mm_cmpeq_epi8(_mm_and_si128(tmp4,BIT_MASK),BIT_MASK);;
 #else
@@ -281,7 +269,6 @@ char interleave_compact_byte(short * base_interleaver,unsigned char * input, uns
     //print_bytes2("out",(uint8_t*)o_256);
     o_256[4]=_mm256_cmpeq_epi8(_mm256_and_si256(tmp7,BIT_MASK),BIT_MASK);;
     //print_bytes2("out",(uint8_t*)(o_256+4));
-
     tmp3=_mm256_unpackhi_epi16(tmp2,tmp2); // tmp3 = B4,B4,B4,B4,B5,B5,B5,B5,B6,B6,B6,B6,B7,B7,B7,B7,B20,B20,B20,B20,...,B23,B23,B23,B23
     tmp4=_mm256_unpacklo_epi32(tmp3,tmp3); // tmp4 - B4,B4,B4,B4,B4,B4,B4,B4,B5,B5,B5,B5,B5,B5,B5,B5,B20,B20...,B21..,B21
     tmp5=_mm256_unpackhi_epi32(tmp3,tmp3); // tmp5 - B6,B6,B6,B6,B6,B6,B6,B6,B7,B7,B7,B7,B7,B7,B7,B7,B22...,B22,B23,...,B23
@@ -297,7 +284,6 @@ char interleave_compact_byte(short * base_interleaver,unsigned char * input, uns
     //print_bytes2("out",(uint8_t*)(o_256+1));
     o_256[5]=_mm256_cmpeq_epi8(_mm256_and_si256(tmp7,BIT_MASK),BIT_MASK);;
     //print_bytes2("out",(uint8_t*)(o_256+4));
-
     tmp2=_mm256_unpackhi_epi8(tmp1,tmp1);  // tmp2 = B8 B9 B10 B11 B12 B13 B14 B15 B25 B26 B27 B28 B29 B30 B31
     tmp3=_mm256_unpacklo_epi16(tmp2,tmp2); // tmp3 = B8,B9,B10,B11,B26,B27,B28,B29
     tmp4=_mm256_unpacklo_epi32(tmp3,tmp3); // tmp4 - B8,B9,B26,B27
@@ -314,11 +300,10 @@ char interleave_compact_byte(short * base_interleaver,unsigned char * input, uns
     //print_bytes2("out",(uint8_t*)(o_256+2));
     o_256[6]=_mm256_cmpeq_epi8(_mm256_and_si256(tmp7,BIT_MASK),BIT_MASK);;
     //print_bytes2("out",(uint8_t*)(o_256+4));
-
     tmp3=_mm256_unpackhi_epi16(tmp2,tmp2); // tmp3 = B12 B13 B14 B15 B28 B29 B30 B31
     tmp4=_mm256_unpacklo_epi32(tmp3,tmp3); // tmp4 = B12 B13 B28 B29
-    tmp5=_mm256_unpackhi_epi32(tmp3,tmp3); // tmp5 = B14 B15 B30 B31 
-    tmp6=_mm256_insertf128_si256(tmp4,_mm256_extracti128_si256(tmp5,0),1);  // tmp6 = B12 B13 B14 B15 
+    tmp5=_mm256_unpackhi_epi32(tmp3,tmp3); // tmp5 = B14 B15 B30 B31
+    tmp6=_mm256_insertf128_si256(tmp4,_mm256_extracti128_si256(tmp5,0),1);  // tmp6 = B12 B13 B14 B15
     tmp7=_mm256_insertf128_si256(tmp5,_mm256_extracti128_si256(tmp4,1),0);  // tmp7 = B28 B29 B30 B31
     //print_bytes2("tmp2",(uint8_t*)&tmp2);
     //print_bytes2("tmp3",(uint8_t*)&tmp3);
@@ -330,48 +315,35 @@ char interleave_compact_byte(short * base_interleaver,unsigned char * input, uns
     //print_bytes2("out",(uint8_t*)(o_256+3));
     o_256[7]=_mm256_cmpeq_epi8(_mm256_and_si256(tmp7,BIT_MASK),BIT_MASK);;
     //print_bytes2("out",(uint8_t*)(o_256+7));
-
     o_256+=8;
 #endif
 #elif defined(__arm__)
-    tmp1=vld1q_u8((uint8_t*)i_128);
+    tmp1=vld1q_u8((uint8_t *)i_128);
     //print_bytes("tmp1:",(uint8_t*)&tmp1);
-
     uint8x16x2_t temp1 =  vzipq_u8(tmp1,tmp1);
     tmp2 = temp1.val[0];
-
     uint16x8x2_t temp2 =  vzipq_u16((uint16x8_t)tmp2,(uint16x8_t)tmp2);
     tmp3 = temp2.val[0];
-
     uint32x4x2_t temp3 =  vzipq_u32((uint32x4_t)tmp3,(uint32x4_t)tmp3);
     tmp4 = temp3.val[0];
     //print_bytes("tmp4:",(uint8_t*)&tmp4);
-
     *o_128++=vceqq_u8(vandq_u8((uint8x16_t)tmp4,BIT_MASK),BIT_MASK);    //1
     //print_bytes("o:",(uint8_t*)(o_128-1));
-
     tmp4 = temp3.val[1];
     //print_bytes("tmp4:",(uint8_t*)&tmp4);
-
     *o_128++=vceqq_u8(vandq_u8((uint8x16_t)tmp4,BIT_MASK),BIT_MASK);    //2
     //print_bytes("o:",(uint8_t*)(o_128-1));
-
     tmp3 = temp2.val[1];
     temp3 =  vzipq_u32((uint32x4_t)tmp3,(uint32x4_t)tmp3);
     tmp4 = temp3.val[0];
     //print_bytes("tmp4:",(uint8_t*)&tmp4);
-
     *o_128++=vceqq_u8(vandq_u8((uint8x16_t)tmp4,BIT_MASK),BIT_MASK);    //3
     //print_bytes("o:",(uint8_t*)(o_128-1));
-
     tmp4 = temp3.val[1];
     //print_bytes("tmp4:",(uint8_t*)&tmp4);
-
     *o_128++=vceqq_u8(vandq_u8((uint8x16_t)tmp4,BIT_MASK),BIT_MASK);    //4
-    //and_tmp = vandq_u8((uint8x16_t)tmp4,BIT_MASK); print_bytes("and:",and_tmp); 
+    //and_tmp = vandq_u8((uint8x16_t)tmp4,BIT_MASK); print_bytes("and:",and_tmp);
     //print_bytes("o:",(uint8_t*)(o_128-1));
-
-
     temp1 =  vzipq_u8(tmp1,tmp1);
     tmp2 = temp1.val[1];
     temp2 =  vzipq_u16((uint16x8_t)tmp2,(uint16x8_t)tmp2);
@@ -379,52 +351,41 @@ char interleave_compact_byte(short * base_interleaver,unsigned char * input, uns
     temp3 =  vzipq_u32((uint32x4_t)tmp3,(uint32x4_t)tmp3);
     tmp4 = temp3.val[0];
     //print_bytes("tmp4:",(uint8_t*)&tmp4);
-
     *o_128++=vceqq_u8(vandq_u8((uint8x16_t)tmp4,BIT_MASK),BIT_MASK);    //5
     //print_bytes("o:",(uint8_t*)(o_128-1));
-
     tmp4 = temp3.val[1];
     //print_bytes("tmp4:",(uint8_t*)&tmp4);
-
     *o_128++=vceqq_u8(vandq_u8((uint8x16_t)tmp4,BIT_MASK),BIT_MASK);    //6
     //print_bytes("o:",(uint8_t*)(o_128-1));
-
-
     temp2 =  vzipq_u16((uint16x8_t)tmp2,(uint16x8_t)tmp2);
     tmp3 = temp2.val[1];
     temp3 =  vzipq_u32((uint32x4_t)tmp3,(uint32x4_t)tmp3);
     tmp4 = temp3.val[0];
     //print_bytes("tmp4:",(uint8_t*)&tmp4);
-
     *o_128++=vceqq_u8(vandq_u8((uint8x16_t)tmp4,BIT_MASK),BIT_MASK);    //7
     //print_bytes("o:",(uint8_t*)(o_128-1));
-
     tmp4 = temp3.val[1];
     //print_bytes("tmp4:",(uint8_t*)&tmp4);
-
     *o_128++=vceqq_u8(vandq_u8((uint8x16_t)tmp4,BIT_MASK),BIT_MASK);    //7
     //print_bytes("o:",(uint8_t*)(o_128-1));
-
     i_128++;
 #endif
   }
-  
 
-  short * ptr_intl=base_interleaver;
+  short *ptr_intl=base_interleaver;
 #if defined(__x86_64) || defined(__i386__)
 #ifndef __AVX2__
   __m128i tmp;
- uint16_t *systematic2_ptr=(uint16_t *) output;
+  uint16_t *systematic2_ptr=(uint16_t *) output;
 #else
   __m256i tmp;
- uint32_t *systematic2_ptr=(uint32_t *) output;
+  uint32_t *systematic2_ptr=(uint32_t *) output;
 #endif
 #elif defined(__arm__)
   uint8x16_t tmp;
-  const uint8_t __attribute__ ((aligned (16))) _Powers[16]= 
-    { 1, 2, 4, 8, 16, 32, 64, 128, 1, 2, 4, 8, 16, 32, 64, 128 };
-
-// Set the powers of 2 (do it once for all, if applicable)
+  const uint8_t __attribute__ ((aligned (16))) _Powers[16]=
+  { 1, 2, 4, 8, 16, 32, 64, 128, 1, 2, 4, 8, 16, 32, 64, 128 };
+  // Set the powers of 2 (do it once for all, if applicable)
   uint8x16_t Powers= vld1q_u8(_Powers);
   uint8_t *systematic2_ptr=(uint8_t *) output;
 #endif
@@ -435,8 +396,6 @@ char interleave_compact_byte(short * base_interleaver,unsigned char * input, uns
 #endif
 
   for ( i=0; i<  input_length_words ; i ++ ) {
-
-
 #if defined(__x86_64__) || defined(__i386__)
 #ifndef __AVX2__
     tmp=_mm_insert_epi8(tmp,expandInput[*ptr_intl++],7);
@@ -465,7 +424,6 @@ char interleave_compact_byte(short * base_interleaver,unsigned char * input, uns
     tmp=_mm256_insert_epi8(tmp,expandInput[*ptr_intl++],2);
     tmp=_mm256_insert_epi8(tmp,expandInput[*ptr_intl++],1);
     tmp=_mm256_insert_epi8(tmp,expandInput[*ptr_intl++],0);
-
     tmp=_mm256_insert_epi8(tmp,expandInput[*ptr_intl++],8+7);
     tmp=_mm256_insert_epi8(tmp,expandInput[*ptr_intl++],8+6);
     tmp=_mm256_insert_epi8(tmp,expandInput[*ptr_intl++],8+5);
@@ -474,7 +432,6 @@ char interleave_compact_byte(short * base_interleaver,unsigned char * input, uns
     tmp=_mm256_insert_epi8(tmp,expandInput[*ptr_intl++],8+2);
     tmp=_mm256_insert_epi8(tmp,expandInput[*ptr_intl++],8+1);
     tmp=_mm256_insert_epi8(tmp,expandInput[*ptr_intl++],8+0);
-
     tmp=_mm256_insert_epi8(tmp,expandInput[*ptr_intl++],16+7);
     tmp=_mm256_insert_epi8(tmp,expandInput[*ptr_intl++],16+6);
     tmp=_mm256_insert_epi8(tmp,expandInput[*ptr_intl++],16+5);
@@ -483,7 +440,6 @@ char interleave_compact_byte(short * base_interleaver,unsigned char * input, uns
     tmp=_mm256_insert_epi8(tmp,expandInput[*ptr_intl++],16+2);
     tmp=_mm256_insert_epi8(tmp,expandInput[*ptr_intl++],16+1);
     tmp=_mm256_insert_epi8(tmp,expandInput[*ptr_intl++],16+0);
-
     tmp=_mm256_insert_epi8(tmp,expandInput[*ptr_intl++],24+7);
     tmp=_mm256_insert_epi8(tmp,expandInput[*ptr_intl++],24+6);
     tmp=_mm256_insert_epi8(tmp,expandInput[*ptr_intl++],24+5);
@@ -492,7 +448,6 @@ char interleave_compact_byte(short * base_interleaver,unsigned char * input, uns
     tmp=_mm256_insert_epi8(tmp,expandInput[*ptr_intl++],24+2);
     tmp=_mm256_insert_epi8(tmp,expandInput[*ptr_intl++],24+1);
     tmp=_mm256_insert_epi8(tmp,expandInput[*ptr_intl++],24+0);
-
     *systematic2_ptr++=(unsigned int)_mm256_movemask_epi8(tmp);
 #endif
 #elif defined(__arm__)
@@ -512,11 +467,10 @@ char interleave_compact_byte(short * base_interleaver,unsigned char * input, uns
     tmp=vsetq_lane_u8(expandInput[*ptr_intl++],tmp,8+2);
     tmp=vsetq_lane_u8(expandInput[*ptr_intl++],tmp,8+1);
     tmp=vsetq_lane_u8(expandInput[*ptr_intl++],tmp,8+0);
-// Compute the mask from the input
+    // Compute the mask from the input
     uint64x2_t Mask= vpaddlq_u32(vpaddlq_u16(vpaddlq_u8(vandq_u8(tmp, Powers))));
     vst1q_lane_u8(systematic2_ptr++, (uint8x16_t)Mask, 0);
     vst1q_lane_u8(systematic2_ptr++, (uint8x16_t)Mask, 8);
-
 #endif
   }
 
@@ -537,14 +491,12 @@ char interleave_compact_byte(short * base_interleaver,unsigned char * input, uns
 void threegpplte_turbo_encoder_sse(unsigned char *input,
                                    unsigned short input_length_bytes,
                                    unsigned char *output,
-                                   unsigned char F)
-{
-
+                                   unsigned char F) {
   int i;
   unsigned char *x;
   unsigned char state0=0,state1=0;
   unsigned short input_length_bits = input_length_bytes<<3;
-  short * base_interleaver;
+  short *base_interleaver;
 
   if (  all_treillis_initialized == 0 ) {
     treillis_table_init();
@@ -560,15 +512,12 @@ void threegpplte_turbo_encoder_sse(unsigned char *input,
     base_interleaver=il_tb+f1f2mat[i].beg_index;
   }
 
-
   unsigned char systematic2[768] __attribute__((aligned(32)));
-
   interleave_compact_byte(base_interleaver,input,systematic2,input_length_bytes);
-
 #if defined(__x86_64__) || defined(__i386__)
-  __m64 *ptr_output=(__m64*) output;
+  __m64 *ptr_output=(__m64 *) output;
 #elif defined(__arm__)
-  uint8x8_t *ptr_output=(uint8x8_t*)output; 
+  uint8x8_t *ptr_output=(uint8x8_t *)output;
 #endif
   unsigned char cur_s1, cur_s2;
   int code_rate;
@@ -582,54 +531,45 @@ void threegpplte_turbo_encoder_sse(unsigned char *input,
       /*
        *ptr_output++ = _mm_add_pi8(all_treillis[state0][cur_s1].systematic_64[code_rate],
        _mm_add_pi8(all_treillis[state0][cur_s1].parity1_64[code_rate],
-	 all_treillis[state1][cur_s2].parity2_64[code_rate]));
-	*/
-
+      all_treillis[state1][cur_s2].parity2_64[code_rate]));
+      */
       *ptr_output++ = _mm_add_pi8(all_treillis[state0][cur_s1].systematic_andp1_64[code_rate],
-				  all_treillis[state1][cur_s2].parity2_64[code_rate]);
-	
-	
+                                  all_treillis[state1][cur_s2].parity2_64[code_rate]);
 #elif defined(__arm__)
-	*ptr_output++ = vadd_u8(all_treillis[state0][cur_s1].systematic_andp1_64[code_rate],
-				all_treillis[state0][cur_s1].parity2_64[code_rate]);
+      *ptr_output++ = vadd_u8(all_treillis[state0][cur_s1].systematic_andp1_64[code_rate],
+                              all_treillis[state0][cur_s1].parity2_64[code_rate]);
 #endif
-      }
-      
-      state0=all_treillis[state0][cur_s1].exit_state;
-      state1=all_treillis[state1][cur_s2].exit_state;
+    }
+
+    state0=all_treillis[state0][cur_s1].exit_state;
+    state1=all_treillis[state1][cur_s2].exit_state;
   }
 
   x=output+(input_length_bits*3);
-
   // Trellis termination
   threegpplte_rsc_termination(&x[0],&x[1],&state0);
 #ifdef DEBUG_TURBO_ENCODER
-  printf("term: x0 %d, x1 %d, state0 %d\n",x[0],x[1],state0);
+  printf("term: x0 %u, x1 %u, state0 %d\n",x[0],x[1],state0);
 #endif //DEBUG_TURBO_ENCODER
-
   threegpplte_rsc_termination(&x[2],&x[3],&state0);
 #ifdef DEBUG_TURBO_ENCODER
-  printf("term: x0 %d, x1 %d, state0 %d\n",x[2],x[3],state0);
+  printf("term: x0 %u, x1 %u, state0 %d\n",x[2],x[3],state0);
 #endif //DEBUG_TURBO_ENCODER
-
   threegpplte_rsc_termination(&x[4],&x[5],&state0);
 #ifdef DEBUG_TURBO_ENCODER
-  printf("term: x0 %d, x1 %d, state0 %d\n",x[4],x[5],state0);
+  printf("term: x0 %u, x1 %u, state0 %d\n",x[4],x[5],state0);
 #endif //DEBUG_TURBO_ENCODER
-
   threegpplte_rsc_termination(&x[6],&x[7],&state1);
-
 #ifdef DEBUG_TURBO_ENCODER
-  printf("term: x0 %d, x1 %d, state1 %d\n",x[6],x[7],state1);
+  printf("term: x0 %u, x1 %u, state1 %d\n",x[6],x[7],state1);
 #endif //DEBUG_TURBO_ENCODER
   threegpplte_rsc_termination(&x[8],&x[9],&state1);
 #ifdef DEBUG_TURBO_ENCODER
-  printf("term: x0 %d, x1 %d, state1 %d\n",x[8],x[9],state1);
+  printf("term: x0 %u, x1 %u, state1 %d\n",x[8],x[9],state1);
 #endif //DEBUG_TURBO_ENCODER
   threegpplte_rsc_termination(&x[10],&x[11],&state1);
-
 #ifdef DEBUG_TURBO_ENCODER
-  printf("term: x0 %d, x1 %d, state1 %d\n",x[10],x[11],state1);
+  printf("term: x0 %u, x1 %u, state1 %d\n",x[10],x[11],state1);
 #endif //DEBUG_TURBO_ENCODER
 #if defined(__x86_64__) || defined(__i386__)
   _mm_empty();
@@ -638,32 +578,31 @@ void threegpplte_turbo_encoder_sse(unsigned char *input,
 }
 
 void init_encoder_sse (void) {
-    treillis_table_init(); 	   
+  treillis_table_init();
 }
 /* function which will be called by the shared lib loader, to check shared lib version
    against main exec version. version mismatch no considered as fatal (interfaces not supposed to change)
-*/ 
-int  coding_checkbuildver(char * mainexec_buildversion, char ** shlib_buildversion)
-{
+*/
+int  coding_checkbuildver(char *mainexec_buildversion, char **shlib_buildversion) {
 #ifndef PACKAGE_VERSION
 #define PACKAGE_VERSION "standalone built: " __DATE__ __TIME__
 #endif
-    *shlib_buildversion = PACKAGE_VERSION;
-    if (strcmp(mainexec_buildversion, *shlib_buildversion) != 0) {
-          fprintf(stderr,"[CODING] shared lib version %s, doesn't match main version %s, compatibility should be checked\n",
-                mainexec_buildversion,*shlib_buildversion);
-    }
-    return 0;
+  *shlib_buildversion = PACKAGE_VERSION;
+
+  if (strcmp(mainexec_buildversion, *shlib_buildversion) != 0) {
+    fprintf(stderr,"[CODING] shared lib version %s, doesn't match main version %s, compatibility should be checked\n",
+            mainexec_buildversion,*shlib_buildversion);
+  }
+
+  return 0;
 }
 
 #ifdef TC_MAIN
-#define INPUT_LENGTH 20 
+#define INPUT_LENGTH 20
 #define F1 21
 #define F2 120
 
-int main(int argc,char **argv)
-{
-
+int main(int argc,char **argv) {
   unsigned char input[INPUT_LENGTH+32],state,state2;
   unsigned char output[12+(3*(INPUT_LENGTH<<3))],x,z;
   int i;
@@ -680,28 +619,27 @@ int main(int argc,char **argv)
   printf("\n");
 
   for (state=0; state<8; state++) {
-
     state2=state;
     threegpplte_rsc_termination(&x,&z,&state2);
     printf("Termination: (%d->%d) : (%d,%d)\n",state,state2,x,z);
   }
 
-  memset((void*)input,0,INPUT_LENGTH+16);
+  memset((void *)input,0,INPUT_LENGTH+16);
+
   for (i=0; i<INPUT_LENGTH; i++) {
     input[i] = i*219;
-    printf("Input %d : %d\n",i,input[i]);
+    printf("Input %d : %u\n",i,input[i]);
   }
 
   threegpplte_turbo_encoder_sse(&input[0],
-                            INPUT_LENGTH,
-                            &output[0],
-                            0);
+                                INPUT_LENGTH,
+                                &output[0],
+                                0);
 
+  for (i=0; i<12+(INPUT_LENGTH*24); i++)
+    printf("%u",output[i]);
 
-  for (i=0;i<12+(INPUT_LENGTH*24);i++)
-    printf("%d",output[i]);
   printf("\n");
-
   return(0);
 }
 
diff --git a/openair1/PHY/CODING/3gpplte_turbo_decoder_sse.c b/openair1/PHY/CODING/3gpplte_turbo_decoder_sse.c
index a02af690770faefc2eeac9de07ffaea721a9ff9a..9d4e6a312a492dfd04cce9a46e724adcccaae159 100644
--- a/openair1/PHY/CODING/3gpplte_turbo_decoder_sse.c
+++ b/openair1/PHY/CODING/3gpplte_turbo_decoder_sse.c
@@ -38,33 +38,33 @@
 #include "PHY/sse_intrin.h"
 
 #ifndef TEST_DEBUG
-#include "PHY/defs.h"
-#include "PHY/CODING/defs.h"
-#include "PHY/CODING/lte_interleaver_inline.h"
+  #include "PHY/defs.h"
+  #include "PHY/CODING/defs.h"
+  #include "PHY/CODING/lte_interleaver_inline.h"
 #else
 
-#include "defs.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+  #include "defs.h"
+  #include <stdio.h>
+  #include <stdlib.h>
+  #include <string.h>
 #endif
 
 #define SHUFFLE16(a,b,c,d,e,f,g,h) _mm_set_epi8(h==-1?-1:h*2+1, \
-            h==-1?-1:h*2, \
-            g==-1?-1:g*2+1, \
-            g==-1?-1:g*2, \
-            f==-1?-1:f*2+1, \
-            f==-1?-1:f*2, \
-            e==-1?-1:e*2+1, \
-            e==-1?-1:e*2, \
-            d==-1?-1:d*2+1, \
-            d==-1?-1:d*2, \
-            c==-1?-1:c*2+1, \
-            c==-1?-1:c*2, \
-            b==-1?-1:b*2+1, \
-            b==-1?-1:b*2, \
-            a==-1?-1:a*2+1, \
-            a==-1?-1:a*2);
+    h==-1?-1:h*2, \
+    g==-1?-1:g*2+1, \
+    g==-1?-1:g*2, \
+    f==-1?-1:f*2+1, \
+    f==-1?-1:f*2, \
+    e==-1?-1:e*2+1, \
+    e==-1?-1:e*2, \
+    d==-1?-1:d*2+1, \
+    d==-1?-1:d*2, \
+    c==-1?-1:c*2+1, \
+    c==-1?-1:c*2, \
+    b==-1?-1:b*2+1, \
+    b==-1?-1:b*2, \
+    a==-1?-1:a*2+1, \
+    a==-1?-1:a*2);
 
 
 
@@ -75,44 +75,40 @@
 
 #ifdef LLR8
 
-typedef int8_t llr_t; // internal decoder LLR data is 8-bit fixed
-typedef int8_t channel_t;
-#define MAX 64
+  typedef int8_t llr_t; // internal decoder LLR data is 8-bit fixed
+  typedef int8_t channel_t;
+  #define MAX 64
 #else
 
-typedef int16_t llr_t; // internal decoder LLR data is 16-bit fixed
-typedef int16_t channel_t;
-#define MAX 256
+  typedef int16_t llr_t; // internal decoder LLR data is 16-bit fixed
+  typedef int16_t channel_t;
+  #define MAX 256
 
 #endif
 
-void log_map (llr_t* systematic,channel_t* y_parity, llr_t* m11, llr_t* m10, llr_t *alpha, llr_t *beta, llr_t* ext,unsigned short frame_length,unsigned char term_flag,unsigned char F,int offset8_flag,
+void log_map (llr_t *systematic,channel_t *y_parity, llr_t *m11, llr_t *m10, llr_t *alpha, llr_t *beta, llr_t *ext,unsigned short frame_length,unsigned char term_flag,unsigned char F,int offset8_flag,
               time_stats_t *alpha_stats,time_stats_t *beta_stats,time_stats_t *gamma_stats,time_stats_t *ext_stats);
-void compute_gamma(llr_t* m11,llr_t* m10,llr_t* systematic, channel_t* y_parity, unsigned short frame_length,unsigned char term_flag);
-void compute_alpha(llr_t*alpha,llr_t *beta, llr_t* m11,llr_t* m10, unsigned short frame_length,unsigned char F);
-void compute_beta(llr_t*alpha, llr_t* beta,llr_t* m11,llr_t* m10, unsigned short frame_length,unsigned char F,int offset8_flag);
-void compute_ext(llr_t* alpha,llr_t* beta,llr_t* m11,llr_t* m10,llr_t* extrinsic, llr_t* ap, unsigned short frame_length);
+void compute_gamma(llr_t *m11,llr_t *m10,llr_t *systematic, channel_t *y_parity, unsigned short frame_length,unsigned char term_flag);
+void compute_alpha(llr_t *alpha,llr_t *beta, llr_t *m11,llr_t *m10, unsigned short frame_length,unsigned char F);
+void compute_beta(llr_t *alpha, llr_t *beta,llr_t *m11,llr_t *m10, unsigned short frame_length,unsigned char F,int offset8_flag);
+void compute_ext(llr_t *alpha,llr_t *beta,llr_t *m11,llr_t *m10,llr_t *extrinsic, llr_t *ap, unsigned short frame_length);
 
 
-void print_bytes(char *s, __m128i *x)
-{
-
+void print_bytes(char *s, __m128i *x) {
   int8_t *tempb = (int8_t *)x;
-
   printf("%s  : %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",s,
          tempb[0],tempb[1],tempb[2],tempb[3],tempb[4],tempb[5],tempb[6],tempb[7],
          tempb[8],tempb[9],tempb[10],tempb[11],tempb[12],tempb[13],tempb[14],tempb[15]);
-
 }
 
 
-void log_map(llr_t* systematic,
-             channel_t* y_parity,
-             llr_t* m11,
-             llr_t* m10,
+void log_map(llr_t *systematic,
+             channel_t *y_parity,
+             llr_t *m11,
+             llr_t *m10,
              llr_t *alpha,
              llr_t *beta,
-             llr_t* ext,
+             llr_t *ext,
              unsigned short frame_length,
              unsigned char term_flag,
              unsigned char F,
@@ -120,13 +116,10 @@ void log_map(llr_t* systematic,
              time_stats_t *alpha_stats,
              time_stats_t *beta_stats,
              time_stats_t *gamma_stats,
-             time_stats_t *ext_stats)
-{
-
+             time_stats_t *ext_stats) {
 #ifdef DEBUG_LOGMAP
   msg("log_map, frame_length %d\n",frame_length);
 #endif
-
   start_meas(gamma_stats) ;
   compute_gamma(m11,m10,systematic,y_parity,frame_length,term_flag) ;
   stop_meas(gamma_stats);
@@ -139,19 +132,15 @@ void log_map(llr_t* systematic,
   start_meas(ext_stats)   ;
   compute_ext(alpha,beta,m11,m10,ext,systematic,frame_length)       ;
   stop_meas(ext_stats);
-
-
 }
 
-void compute_gamma(llr_t* m11,llr_t* m10,llr_t* systematic,channel_t* y_parity,
-                   unsigned short frame_length,unsigned char term_flag)
-{
+void compute_gamma(llr_t *m11,llr_t *m10,llr_t *systematic,channel_t *y_parity,
+                   unsigned short frame_length,unsigned char term_flag) {
   int k,K1;
   __m128i *systematic128 = (__m128i *)systematic;
   __m128i *y_parity128   = (__m128i *)y_parity;
   __m128i *m10_128        = (__m128i *)m10;
   __m128i *m11_128        = (__m128i *)m11;
-
 #ifdef DEBUG_LOGMAP
   msg("compute_gamma, %p,%p,%p,%p,framelength %d\n",m11,m10,systematic,y_parity,frame_length);
 #endif
@@ -159,7 +148,6 @@ void compute_gamma(llr_t* m11,llr_t* m10,llr_t* systematic,channel_t* y_parity,
   K1=frame_length>>3;
 
   for (k=0; k<K1; k++) {
-
     m11_128[k] = _mm_srai_epi16(_mm_adds_epi16(systematic128[k],y_parity128[k]),1);
     m10_128[k] = _mm_srai_epi16(_mm_subs_epi16(systematic128[k],y_parity128[k]),1);
     /*
@@ -206,13 +194,11 @@ void compute_gamma(llr_t* m11,llr_t* m10,llr_t* systematic,channel_t* y_parity,
      (int16_t)_mm_extract_epi16(m10_128[k],6),
      (int16_t)_mm_extract_epi16(m10_128[k],7));
     */
-
   }
 
   // Termination
   m11_128[k] = _mm_srai_epi16(_mm_adds_epi16(systematic128[k+term_flag],y_parity128[k]),1);
   m10_128[k] = _mm_srai_epi16(_mm_subs_epi16(systematic128[k+term_flag],y_parity128[k]),1);
-
   //  printf("gamma (term): %d,%d, %d,%d, %d,%d\n",m11[k<<3],m10[k<<3],m11[1+(k<<3)],m10[1+(k<<3)],m11[2+(k<<3)],m10[2+(k<<3)]);
 #else
   register __m128i sl,sh,ypl,yph; //K128=_mm_set1_epi8(-128);
@@ -231,7 +217,6 @@ void compute_gamma(llr_t* m11,llr_t* m10,llr_t* systematic,channel_t* y_parity,
     //    m10_128[k] = _mm_subs_epi8(systematic128[k],y_parity128[k]);
     //    m11_128[k] = _mm_sub_epi8(_mm_avg_epu8(_mm_add_epi8(systematic128[k],K128),_mm_add_epi8(y_parity128[k],K128)),K128);
     //    m10_128[k] = _mm_sub_epi8(_mm_avg_epu8(_mm_add_epi8(systematic128[k],K128),_mm_add_epi8(_mm_sign_epi8(y_parity128[k],K128),K128)),K128);
-
     /*
     printf("gamma %d: s %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",
      k,
@@ -309,7 +294,6 @@ void compute_gamma(llr_t* m11,llr_t* m10,llr_t* systematic,channel_t* y_parity,
   }
 
   // Termination
-
   sl  = _mm_cvtepi8_epi16(systematic128[k+term_flag]);
   sh = _mm_cvtepi8_epi16(_mm_srli_si128(systematic128[k],8));
   ypl = _mm_cvtepi8_epi16(y_parity128[k+term_flag]);
@@ -318,7 +302,6 @@ void compute_gamma(llr_t* m11,llr_t* m10,llr_t* systematic,channel_t* y_parity,
                                _mm_srai_epi16(_mm_adds_epi16(sh,yph),1));
   m10_128[k] = _mm_packs_epi16(_mm_srai_epi16(_mm_subs_epi16(sl,ypl),1),
                                _mm_srai_epi16(_mm_subs_epi16(sh,yph),1));
-
   //    m11_128[k] = _mm_adds_epi8(systematic128[k+term_flag],y_parity128[k]);
   //    m10_128[k] = _mm_subs_epi8(systematic128[k+term_flag],y_parity128[k]);
   //  m11_128[k] = _mm_sub_epi8(_mm_avg_epu8(_mm_add_epi8(systematic128[k+term_flag],K128),_mm_add_epi8(y_parity128[k],K128)),K128);
@@ -383,20 +366,17 @@ void compute_gamma(llr_t* m11,llr_t* m10,llr_t* systematic,channel_t* y_parity,
 #endif
   _mm_empty();
   _m_empty();
-
 }
 
 #define L 40
 
-void compute_alpha(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned short frame_length,unsigned char F)
-{
+void compute_alpha(llr_t *alpha,llr_t *beta,llr_t *m_11,llr_t *m_10,unsigned short frame_length,unsigned char F) {
   int k,l,l2,K1,rerun_flag=0;
   __m128i *alpha128=(__m128i *)alpha,*alpha_ptr;
   __m128i a0,a1,a2,a3,a4,a5,a6,a7,*m11p,*m10p;
   __m128i m_b0,m_b1,m_b2,m_b3,m_b4,m_b5,m_b6,m_b7;
   __m128i new0,new1,new2,new3,new4,new5,new6,new7;
   __m128i alpha_max;
-
 #ifndef LLR8
   l2 = L>>3;
   K1 = (frame_length>>3);
@@ -439,19 +419,16 @@ void compute_alpha(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned sho
     }
 
     alpha_ptr = &alpha128[0];
-
-    m11p = (__m128i*)m_11;
-    m10p = (__m128i*)m_10;
+    m11p = (__m128i *)m_11;
+    m10p = (__m128i *)m_10;
 
     for (k=0;
          k<l;
          k++) {
-
       a1=_mm_load_si128(&alpha_ptr[1]);
       a3=_mm_load_si128(&alpha_ptr[3]);
       a5=_mm_load_si128(&alpha_ptr[5]);
       a7=_mm_load_si128(&alpha_ptr[7]);
-
       m_b0 = _mm_adds_epi16(a1,*m11p);  // m11
       m_b4 = _mm_subs_epi16(a1,*m11p);  // m00=-m11
       m_b1 = _mm_subs_epi16(a3,*m10p);  // m01=-m10
@@ -460,12 +437,10 @@ void compute_alpha(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned sho
       m_b6 = _mm_subs_epi16(a5,*m10p);  // m01=-m10
       m_b3 = _mm_subs_epi16(a7,*m11p);  // m00=-m11
       m_b7 = _mm_adds_epi16(a7,*m11p);  // m11
-
       a0=_mm_load_si128(&alpha_ptr[0]);
       a2=_mm_load_si128(&alpha_ptr[2]);
       a4=_mm_load_si128(&alpha_ptr[4]);
       a6=_mm_load_si128(&alpha_ptr[6]);
-
       new0 = _mm_subs_epi16(a0,*m11p);  // m00=-m11
       new4 = _mm_adds_epi16(a0,*m11p);  // m11
       new1 = _mm_adds_epi16(a2,*m10p);  // m10
@@ -474,7 +449,6 @@ void compute_alpha(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned sho
       new6 = _mm_adds_epi16(a4,*m10p);  // m10
       new3 = _mm_adds_epi16(a6,*m11p);  // m11
       new7 = _mm_subs_epi16(a6,*m11p);  // m00=-m11
-
       a0 = _mm_max_epi16(m_b0,new0);
       a1 = _mm_max_epi16(m_b1,new1);
       a2 = _mm_max_epi16(m_b2,new2);
@@ -483,7 +457,6 @@ void compute_alpha(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned sho
       a5 = _mm_max_epi16(m_b5,new5);
       a6 = _mm_max_epi16(m_b6,new6);
       a7 = _mm_max_epi16(m_b7,new7);
-
       alpha_max = _mm_max_epi16(a0,a1);
       alpha_max = _mm_max_epi16(alpha_max,a2);
       alpha_max = _mm_max_epi16(alpha_max,a3);
@@ -491,7 +464,6 @@ void compute_alpha(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned sho
       alpha_max = _mm_max_epi16(alpha_max,a5);
       alpha_max = _mm_max_epi16(alpha_max,a6);
       alpha_max = _mm_max_epi16(alpha_max,a7);
-
       alpha_ptr+=8;
       m11p++;
       m10p++;
@@ -503,7 +475,6 @@ void compute_alpha(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned sho
       alpha_ptr[5] = _mm_subs_epi16(a5,alpha_max);
       alpha_ptr[6] = _mm_subs_epi16(a6,alpha_max);
       alpha_ptr[7] = _mm_subs_epi16(a7,alpha_max);
-
     }
 
     /*
@@ -981,9 +952,7 @@ void compute_alpha(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned sho
     */
 #else
 
-
     if (rerun_flag == 0) {
-
       alpha128[0] = _mm_set_epi8(-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,0);
       alpha128[1] = _mm_set_epi8(-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2);
       alpha128[2] = _mm_set_epi8(-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2);
@@ -992,8 +961,6 @@ void compute_alpha(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned sho
       alpha128[5] = _mm_set_epi8(-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2);
       alpha128[6] = _mm_set_epi8(-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2);
       alpha128[7] = _mm_set_epi8(-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2,-MAX/2);
-
-
     } else {
       alpha128[0] = _mm_slli_si128(alpha128[(K1<<3)],1);
       alpha128[1] = _mm_slli_si128(alpha128[1+(K1<<3)],1);
@@ -1025,15 +992,12 @@ void compute_alpha(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned sho
     print_bytes("a6:",&alpha_ptr[6]);
     print_bytes("a7:",&alpha_ptr[7]);
     */
-
-    m11p = (__m128i*)m_11;
-    m10p = (__m128i*)m_10;
+    m11p = (__m128i *)m_11;
+    m10p = (__m128i *)m_10;
 
     for (k=0;
          k<l;
          k++) {
-
-
       m_b0 = _mm_adds_epi8(alpha_ptr[1],*m11p);  // m11
       m_b4 = _mm_subs_epi8(alpha_ptr[1],*m11p);  // m00=-m11
       m_b1 = _mm_subs_epi8(alpha_ptr[3],*m10p);  // m01=-m10
@@ -1042,7 +1006,6 @@ void compute_alpha(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned sho
       m_b6 = _mm_subs_epi8(alpha_ptr[5],*m10p);  // m01=-m10
       m_b3 = _mm_subs_epi8(alpha_ptr[7],*m11p);  // m00=-m11
       m_b7 = _mm_adds_epi8(alpha_ptr[7],*m11p);  // m11
-
       new0 = _mm_subs_epi8(alpha_ptr[0],*m11p);  // m00=-m11
       new4 = _mm_adds_epi8(alpha_ptr[0],*m11p);  // m11
       new1 = _mm_adds_epi8(alpha_ptr[2],*m10p);  // m10
@@ -1051,7 +1014,6 @@ void compute_alpha(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned sho
       new6 = _mm_adds_epi8(alpha_ptr[4],*m10p);  // m10
       new3 = _mm_adds_epi8(alpha_ptr[6],*m11p);  // m11
       new7 = _mm_subs_epi8(alpha_ptr[6],*m11p);  // m00=-m11
-
       alpha_ptr += 8;
       m11p++;
       m10p++;
@@ -1063,8 +1025,6 @@ void compute_alpha(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned sho
       alpha_ptr[5] = _mm_max_epi8(m_b5,new5);
       alpha_ptr[6] = _mm_max_epi8(m_b6,new6);
       alpha_ptr[7] = _mm_max_epi8(m_b7,new7);
-
-
       // compute and subtract maxima
       alpha_max = _mm_max_epi8(alpha_ptr[0],alpha_ptr[1]);
       alpha_max = _mm_max_epi8(alpha_max,alpha_ptr[2]);
@@ -1073,7 +1033,6 @@ void compute_alpha(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned sho
       alpha_max = _mm_max_epi8(alpha_max,alpha_ptr[5]);
       alpha_max = _mm_max_epi8(alpha_max,alpha_ptr[6]);
       alpha_max = _mm_max_epi8(alpha_max,alpha_ptr[7]);
-
       alpha_ptr[0] = _mm_subs_epi8(alpha_ptr[0],alpha_max);
       alpha_ptr[1] = _mm_subs_epi8(alpha_ptr[1],alpha_max);
       alpha_ptr[2] = _mm_subs_epi8(alpha_ptr[2],alpha_max);
@@ -1109,14 +1068,11 @@ void compute_alpha(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned sho
 }
 
 
-void compute_beta(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned short frame_length,unsigned char F,int offset8_flag)
-{
-
+void compute_beta(llr_t *alpha,llr_t *beta,llr_t *m_11,llr_t *m_10,unsigned short frame_length,unsigned char F,int offset8_flag) {
   int k,rerun_flag=0;
   __m128i m11_128,m10_128;
   __m128i m_b0,m_b1,m_b2,m_b3,m_b4,m_b5,m_b6,m_b7;
   __m128i new0,new1,new2,new3,new4,new5,new6,new7;
-
   __m128i *beta128,*alpha128,*beta_ptr;
   __m128i beta_max;
   int16_t m11,m10,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;
@@ -1124,30 +1080,21 @@ void compute_beta(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned shor
 #ifdef LLR8
   llr_t beta2,beta3,beta4,beta5,beta6,beta7;
   __m128i beta_16;
-
 #endif
-
 #ifdef DEBUG_LOGMAP
   msg("compute_beta, %p,%p,%p,%p,framelength %d,F %d\n",
       beta,m_11,m_10,alpha,frame_length,F);
 #endif
-
-
   // termination for beta initialization
-
   //  printf("beta init: offset8 %d\n",offset8_flag);
   m11=(int16_t)m_11[2+frame_length];
   m10=(int16_t)m_10[2+frame_length];
-
   //  printf("m11,m10 %d,%d\n",m11,m10);
-
   beta0 = -m11;//M0T_TERM;
   beta1 = m11;//M1T_TERM;
   m11=(int16_t)m_11[1+frame_length];
   m10=(int16_t)m_10[1+frame_length];
-
   //  printf("m11,m10 %d,%d\n",m11,m10);
-
   beta0_2 = beta0-m11;//+M0T_TERM;
   beta1_2 = beta0+m11;//+M1T_TERM;
   beta2_2 = beta1+m10;//M2T_TERM;
@@ -1155,7 +1102,6 @@ void compute_beta(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned shor
   m11=(int16_t)m_11[frame_length];
   m10=(int16_t)m_10[frame_length];
   //  printf("m11,m10 %d,%d (%p)\n",m11,m10,m_11+frame_length);
-
   beta0_16 = beta0_2-m11;//+M0T_TERM;
   beta1_16 = beta0_2+m11;//+M1T_TERM;
   beta2_16 = beta1_2+m10;//+M2T_TERM;
@@ -1164,8 +1110,6 @@ void compute_beta(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned shor
   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;
@@ -1173,8 +1117,6 @@ void compute_beta(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned shor
   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;
@@ -1183,7 +1125,6 @@ void compute_beta(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned shor
   beta5_16=beta5_16-beta_m;
   beta6_16=beta6_16-beta_m;
   beta7_16=beta7_16-beta_m;
-
 #ifdef LLR8
   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);
@@ -1199,8 +1140,8 @@ void compute_beta(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned shor
 #endif
 
   for (rerun_flag=0;; rerun_flag=1) {
-    beta_ptr   = (__m128i*)&beta[frame_length<<3];
-    alpha128   = (__m128i*)&alpha[0];
+    beta_ptr   = (__m128i *)&beta[frame_length<<3];
+    alpha128   = (__m128i *)&alpha[0];
 
     if (rerun_flag == 0) {
 #ifndef LLR8
@@ -1223,9 +1164,8 @@ void compute_beta(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned shor
       beta_ptr[7] = alpha128[7+(frame_length>>1)];
 #endif
     } else {
-      beta128 = (__m128i*)&beta[0];
+      beta128 = (__m128i *)&beta[0];
 #ifndef LLR8
-
       beta_ptr[0] = _mm_srli_si128(beta128[0],2);
       beta_ptr[1] = _mm_srli_si128(beta128[1],2);
       beta_ptr[2] = _mm_srli_si128(beta128[2],2);
@@ -1255,7 +1195,6 @@ void compute_beta(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned shor
     beta_ptr[5] = _mm_insert_epi16(beta_ptr[5],beta5_16,7);
     beta_ptr[6] = _mm_insert_epi16(beta_ptr[6],beta6_16,7);
     beta_ptr[7] = _mm_insert_epi16(beta_ptr[7],beta7_16,7);
-
     /*
       beta[7+(frame_length<<3)] = beta0_16;
       beta[15+(frame_length<<3)] = beta1_16;
@@ -1277,18 +1216,15 @@ void compute_beta(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned shor
       beta_ptr[6] = _mm_insert_epi8(beta_ptr[6],beta6,15);
       beta_ptr[7] = _mm_insert_epi8(beta_ptr[7],beta7,15);
     } else {
-
     }
 
 #endif
-
 #ifndef LLR8
     int loopval=((rerun_flag==0)?0:((frame_length-L)>>3));
 
     for (k=(frame_length>>3)-1; k>=loopval; k--) {
-      m11_128=((__m128i*)m_11)[k];
-      m10_128=((__m128i*)m_10)[k];
-
+      m11_128=((__m128i *)m_11)[k];
+      m10_128=((__m128i *)m_10)[k];
       m_b0 = _mm_adds_epi16(beta_ptr[4],m11_128);  //m11
       m_b1 = _mm_subs_epi16(beta_ptr[4],m11_128);  //m00
       m_b2 = _mm_subs_epi16(beta_ptr[5],m10_128);  //m01
@@ -1297,7 +1233,6 @@ void compute_beta(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned shor
       m_b5 = _mm_subs_epi16(beta_ptr[6],m10_128);  //m01
       m_b6 = _mm_subs_epi16(beta_ptr[7],m11_128);  //m00
       m_b7 = _mm_adds_epi16(beta_ptr[7],m11_128);  //m11
-
       new0 = _mm_subs_epi16(beta_ptr[0],m11_128);  //m00
       new1 = _mm_adds_epi16(beta_ptr[0],m11_128);  //m11
       new2 = _mm_adds_epi16(beta_ptr[1],m10_128);  //m10
@@ -1306,9 +1241,7 @@ void compute_beta(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned shor
       new5 = _mm_adds_epi16(beta_ptr[2],m10_128);  //m10
       new6 = _mm_adds_epi16(beta_ptr[3],m11_128);  //m11
       new7 = _mm_subs_epi16(beta_ptr[3],m11_128);  //m00
-
       beta_ptr-=8;
-
       beta_ptr[0] = _mm_max_epi16(m_b0,new0);
       beta_ptr[1] = _mm_max_epi16(m_b1,new1);
       beta_ptr[2] = _mm_max_epi16(m_b2,new2);
@@ -1317,7 +1250,6 @@ void compute_beta(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned shor
       beta_ptr[5] = _mm_max_epi16(m_b5,new5);
       beta_ptr[6] = _mm_max_epi16(m_b6,new6);
       beta_ptr[7] = _mm_max_epi16(m_b7,new7);
-
       beta_max = _mm_max_epi16(beta_ptr[0],beta_ptr[1]);
       beta_max = _mm_max_epi16(beta_max   ,beta_ptr[2]);
       beta_max = _mm_max_epi16(beta_max   ,beta_ptr[3]);
@@ -1325,7 +1257,6 @@ void compute_beta(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned shor
       beta_max = _mm_max_epi16(beta_max   ,beta_ptr[5]);
       beta_max = _mm_max_epi16(beta_max   ,beta_ptr[6]);
       beta_max = _mm_max_epi16(beta_max   ,beta_ptr[7]);
-
       beta_ptr[0] = _mm_subs_epi16(beta_ptr[0],beta_max);
       beta_ptr[1] = _mm_subs_epi16(beta_ptr[1],beta_max);
       beta_ptr[2] = _mm_subs_epi16(beta_ptr[2],beta_max);
@@ -1334,14 +1265,11 @@ void compute_beta(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned shor
       beta_ptr[5] = _mm_subs_epi16(beta_ptr[5],beta_max);
       beta_ptr[6] = _mm_subs_epi16(beta_ptr[6],beta_max);
       beta_ptr[7] = _mm_subs_epi16(beta_ptr[7],beta_max);
-
-
-
     }
 
 #else
 #ifdef DEBUG_LOGMAP
-    printf("beta0 %d:  %03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d\n",
+    printf("beta0 %u:  %03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d\n",
            (frame_length>>4),
            _mm_extract_epi8(beta_ptr[0],0),
            _mm_extract_epi8(beta_ptr[0],1),
@@ -1359,7 +1287,7 @@ void compute_beta(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned shor
            _mm_extract_epi8(beta_ptr[0],13),
            _mm_extract_epi8(beta_ptr[0],14),
            _mm_extract_epi8(beta_ptr[0],15));
-    printf("beta1 %d:  %03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d\n",
+    printf("beta1 %u:  %03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d\n",
            (frame_length>>4),
            _mm_extract_epi8(beta_ptr[1],0),
            _mm_extract_epi8(beta_ptr[1],1),
@@ -1377,7 +1305,7 @@ void compute_beta(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned shor
            _mm_extract_epi8(beta_ptr[1],13),
            _mm_extract_epi8(beta_ptr[1],14),
            _mm_extract_epi8(beta_ptr[1],15));
-    printf("beta2 %d:  %03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d\n",
+    printf("beta2 %u:  %03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d\n",
            (frame_length>>4),
            _mm_extract_epi8(beta_ptr[2],0),
            _mm_extract_epi8(beta_ptr[2],1),
@@ -1395,7 +1323,7 @@ void compute_beta(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned shor
            _mm_extract_epi8(beta_ptr[2],13),
            _mm_extract_epi8(beta_ptr[2],14),
            _mm_extract_epi8(beta_ptr[2],15));
-    printf("beta3 %d:  %03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d\n",
+    printf("beta3 %u:  %03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d\n",
            (frame_length>>4),
            _mm_extract_epi8(beta_ptr[3],0),
            _mm_extract_epi8(beta_ptr[3],1),
@@ -1413,7 +1341,7 @@ void compute_beta(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned shor
            _mm_extract_epi8(beta_ptr[3],13),
            _mm_extract_epi8(beta_ptr[3],14),
            _mm_extract_epi8(beta_ptr[3],15));
-    printf("beta4 %d:  %03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d\n",
+    printf("beta4 %u:  %03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d\n",
            (frame_length>>4),
            _mm_extract_epi8(beta_ptr[4],0),
            _mm_extract_epi8(beta_ptr[4],1),
@@ -1431,7 +1359,7 @@ void compute_beta(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned shor
            _mm_extract_epi8(beta_ptr[4],13),
            _mm_extract_epi8(beta_ptr[4],14),
            _mm_extract_epi8(beta_ptr[4],15));
-    printf("beta5 %d:  %03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d\n",
+    printf("beta5 %u:  %03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d\n",
            (frame_length>>4),
            _mm_extract_epi8(beta_ptr[5],0),
            _mm_extract_epi8(beta_ptr[5],1),
@@ -1449,7 +1377,7 @@ void compute_beta(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned shor
            _mm_extract_epi8(beta_ptr[5],13),
            _mm_extract_epi8(beta_ptr[5],14),
            _mm_extract_epi8(beta_ptr[5],15));
-    printf("beta6 %d:  %03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d\n",
+    printf("beta6 %u:  %03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d\n",
            (frame_length>>4),
            _mm_extract_epi8(beta_ptr[6],0),
            _mm_extract_epi8(beta_ptr[6],1),
@@ -1467,7 +1395,7 @@ void compute_beta(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned shor
            _mm_extract_epi8(beta_ptr[6],13),
            _mm_extract_epi8(beta_ptr[6],14),
            _mm_extract_epi8(beta_ptr[6],15));
-    printf("beta7 %d:  %03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d\n",
+    printf("beta7 %u:  %03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d\n",
            (frame_length>>4),
            _mm_extract_epi8(beta_ptr[7],0),
            _mm_extract_epi8(beta_ptr[7],1),
@@ -1491,9 +1419,8 @@ void compute_beta(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned shor
     __m128i zeros=_mm_set1_epi8(0);
 
     for (k=(frame_length>>4)-1; k>=loopval; k--) {
-
-      m11_128=((__m128i*)m_11)[k];
-      m10_128=((__m128i*)m_10)[k];
+      m11_128=((__m128i *)m_11)[k];
+      m10_128=((__m128i *)m_10)[k];
       /*
       if ((offset8_flag==1) && (k==((frame_length>>4)-9))) {
       beta_ptr[0] = _mm_insert_epi8(beta_ptr[0],beta0,15);
@@ -1506,9 +1433,6 @@ void compute_beta(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned shor
       beta_ptr[7] = _mm_insert_epi8(beta_ptr[7],beta7,15);
       }*/
       //      print_bytes("m11:",&m11_128);
-
-
-
       m_b0 = _mm_adds_epi8(beta_ptr[4],m11_128);  //m11
       m_b1 = _mm_subs_epi8(beta_ptr[4],m11_128);  //m00
       m_b2 = _mm_subs_epi8(beta_ptr[5],m10_128);  //m01
@@ -1517,7 +1441,6 @@ void compute_beta(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned shor
       m_b5 = _mm_subs_epi8(beta_ptr[6],m10_128);  //m01
       m_b6 = _mm_subs_epi8(beta_ptr[7],m11_128);  //m00
       m_b7 = _mm_adds_epi8(beta_ptr[7],m11_128);  //m11
-
       new0 = _mm_subs_epi8(beta_ptr[0],m11_128);  //m00
       new1 = _mm_adds_epi8(beta_ptr[0],m11_128);  //m11
       new2 = _mm_adds_epi8(beta_ptr[1],m10_128);  //m10
@@ -1526,9 +1449,7 @@ void compute_beta(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned shor
       new5 = _mm_adds_epi8(beta_ptr[2],m10_128);  //m10
       new6 = _mm_adds_epi8(beta_ptr[3],m11_128);  //m11
       new7 = _mm_subs_epi8(beta_ptr[3],m11_128);  //m00
-
       beta_ptr-=8;
-
       beta_ptr[0] = _mm_max_epi8(m_b0,new0);
       beta_ptr[1] = _mm_max_epi8(m_b1,new1);
       beta_ptr[2] = _mm_max_epi8(m_b2,new2);
@@ -1537,7 +1458,6 @@ void compute_beta(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned shor
       beta_ptr[5] = _mm_max_epi8(m_b5,new5);
       beta_ptr[6] = _mm_max_epi8(m_b6,new6);
       beta_ptr[7] = _mm_max_epi8(m_b7,new7);
-
       beta_max = _mm_max_epi8(beta_ptr[0],beta_ptr[1]);
       beta_max = _mm_max_epi8(beta_max   ,beta_ptr[2]);
       beta_max = _mm_max_epi8(beta_max   ,beta_ptr[3]);
@@ -1553,7 +1473,6 @@ void compute_beta(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned shor
       beta_ptr[5] = _mm_subs_epi8(beta_ptr[5],beta_max);
       beta_ptr[6] = _mm_subs_epi8(beta_ptr[6],beta_max);
       beta_ptr[7] = _mm_subs_epi8(beta_ptr[7],beta_max);
-
       /*
       printf("beta0 %d:  %03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d,%03d\n",
       k,
@@ -1700,7 +1619,6 @@ void compute_beta(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned shor
       _mm_extract_epi8(beta_ptr[7],14),
       _mm_extract_epi8(beta_ptr[7],15));
       */
-
     }
 
 #endif
@@ -1713,8 +1631,7 @@ void compute_beta(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned shor
   _m_empty();
 }
 
-void compute_ext(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,llr_t* ext, llr_t* systematic,unsigned short frame_length)
-{
+void compute_ext(llr_t *alpha,llr_t *beta,llr_t *m_11,llr_t *m_10,llr_t *ext, llr_t *systematic,unsigned short frame_length) {
   __m128i *alpha128=(__m128i *)alpha;
   __m128i *beta128=(__m128i *)beta;
   __m128i *m11_128,*m10_128,*ext_128;
@@ -1724,26 +1641,20 @@ void compute_ext(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,llr_t* ext, ll
   __m128i m10_1,m10_2,m10_3,m10_4;
   __m128i m11_1,m11_2,m11_3,m11_4;
   int k;
-
   //
   // LLR computation, 8 consequtive bits per loop
   //
-
 #ifdef DEBUG_LOGMAP
   msg("compute_ext, %p, %p, %p, %p, %p, %p ,framelength %d\n",alpha,beta,m_11,m_10,ext,systematic,frame_length);
 #endif
-
   alpha_ptr = alpha128;
   beta_ptr = &beta128[8];
-
-
 #ifndef LLR8
 
   for (k=0; k<(frame_length>>3); k++) {
-
-    m11_128        = (__m128i*)&m_11[k<<3];
-    m10_128        = (__m128i*)&m_10[k<<3];
-    ext_128        = (__m128i*)&ext[k<<3];
+    m11_128        = (__m128i *)&m_11[k<<3];
+    m10_128        = (__m128i *)&m_10[k<<3];
+    ext_128        = (__m128i *)&ext[k<<3];
     /*
       printf("EXT %03d\n",k);
       print_shorts("a0:",&alpha_ptr[0]);
@@ -1809,23 +1720,18 @@ void compute_ext(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,llr_t* ext, ll
     m11_1 = _mm_max_epi16(m11_1,m11_2);
     m11_1 = _mm_max_epi16(m11_1,m11_3);
     m11_1 = _mm_max_epi16(m11_1,m11_4);
-
     //      print_shorts("m11_1:",&m11_1);
-
     m01_1 = _mm_subs_epi16(m01_1,*m10_128);
     m00_1 = _mm_subs_epi16(m00_1,*m11_128);
     m10_1 = _mm_adds_epi16(m10_1,*m10_128);
     m11_1 = _mm_adds_epi16(m11_1,*m11_128);
-
     //      print_shorts("m10_1:",&m10_1);
     //      print_shorts("m11_1:",&m11_1);
     m01_1 = _mm_max_epi16(m01_1,m00_1);
     m10_1 = _mm_max_epi16(m10_1,m11_1);
     //      print_shorts("m01_1:",&m01_1);
     //      print_shorts("m10_1:",&m10_1);
-
     *ext_128 = _mm_subs_epi16(m10_1,m01_1);
-
     /*
       print_shorts("ext:",ext_128);
       print_shorts("m11:",m11_128);
@@ -1834,7 +1740,6 @@ void compute_ext(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,llr_t* ext, ll
       print_shorts("m01_1:",&m01_1);
       print_shorts("syst:",systematic_128);
     */
-
     alpha_ptr+=8;
     beta_ptr+=8;
   }
@@ -1842,11 +1747,9 @@ void compute_ext(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,llr_t* ext, ll
 #else
 
   for (k=0; k<(frame_length>>4); k++) {
-
-    m11_128        = (__m128i*)&m_11[k<<4];
-    m10_128        = (__m128i*)&m_10[k<<4];
-    ext_128        = (__m128i*)&ext[k<<4];
-
+    m11_128        = (__m128i *)&m_11[k<<4];
+    m10_128        = (__m128i *)&m_10[k<<4];
+    ext_128        = (__m128i *)&ext[k<<4];
     m00_4 = _mm_adds_epi8(alpha_ptr[7],beta_ptr[3]); //ALPHA_BETA_4m00;
     m11_4 = _mm_adds_epi8(alpha_ptr[7],beta_ptr[7]); //ALPHA_BETA_4m11;
     m00_3 = _mm_adds_epi8(alpha_ptr[6],beta_ptr[7]); //ALPHA_BETA_3m00;
@@ -1863,7 +1766,6 @@ void compute_ext(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,llr_t* ext, ll
     m10_2 = _mm_adds_epi8(alpha_ptr[3],beta_ptr[5]); //ALPHA_BETA_2m10;
     m10_1 = _mm_adds_epi8(alpha_ptr[2],beta_ptr[1]); //ALPHA_BETA_1m10;
     m01_1 = _mm_adds_epi8(alpha_ptr[2],beta_ptr[5]); //ALPHA_BETA_1m01;
-
     m01_1 = _mm_max_epi8(m01_1,m01_2);
     m01_1 = _mm_max_epi8(m01_1,m01_3);
     m01_1 = _mm_max_epi8(m01_1,m01_4);
@@ -1876,29 +1778,20 @@ void compute_ext(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,llr_t* ext, ll
     m11_1 = _mm_max_epi8(m11_1,m11_2);
     m11_1 = _mm_max_epi8(m11_1,m11_3);
     m11_1 = _mm_max_epi8(m11_1,m11_4);
-
-
     m01_1 = _mm_subs_epi8(m01_1,*m10_128);
     m00_1 = _mm_subs_epi8(m00_1,*m11_128);
     m10_1 = _mm_adds_epi8(m10_1,*m10_128);
     m11_1 = _mm_adds_epi8(m11_1,*m11_128);
-
-
     m01_1 = _mm_max_epi8(m01_1,m00_1);
     m10_1 = _mm_max_epi8(m10_1,m11_1);
-
-
     *ext_128 = _mm_subs_epi8(m10_1,m01_1);
-
     alpha_ptr+=8;
     beta_ptr+=8;
   }
 
 #endif
-
   _mm_empty();
   _m_empty();
-
 }
 
 
@@ -1906,8 +1799,7 @@ void compute_ext(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,llr_t* ext, ll
 //int pi2[n],pi3[n+8],pi5[n+8],pi4[n+8],pi6[n+8],
 int *pi2tab[188],*pi5tab[188],*pi4tab[188],*pi6tab[188];
 
-void free_td()
-{
+void free_td() {
   int ind;
 
   for (ind = 0; ind < 188; ind++) {
@@ -1918,21 +1810,17 @@ void free_td()
   }
 }
 
-void init_td()
-{
-
+void init_td() {
   int ind,i,i2,i3,j,n,n2,pi,pi3;
-  short * base_interleaver;
+  short *base_interleaver;
 
   for (ind=0; ind<188; ind++) {
-
     n = f1f2mat[ind].nb_bits;
     base_interleaver=il_tb+f1f2mat[ind].beg_index;
     pi2tab[ind] = malloc((n+8)*sizeof(int));
     pi5tab[ind] = malloc((n+8)*sizeof(int));
     pi4tab[ind] = malloc((n+8)*sizeof(int));
     pi6tab[ind] = malloc((n+8)*sizeof(int));
-
 #ifdef LLR8
 
     if ((n&15)>0) {
@@ -1941,7 +1829,6 @@ void init_td()
       n2 = n;
 
     for (j=0,i=0; i<n2; i++,j+=16) {
-
       if (j>=n2)
         j-=(n2-1);
 
@@ -1956,10 +1843,8 @@ void init_td()
       j=i2;
 
       for (i3=0; i3<(n>>3); i3++,i++,j+=8) {
-
         //    if (j>=n)
         //      j-=(n-1);
-
         pi2tab[ind][i]  = j;
         //    printf("pi2[%d] = %d\n",i,j);
       }
@@ -1967,7 +1852,6 @@ void init_td()
 
 #endif
 
-
     for (i=0; i<n2; i++) {
       pi = base_interleaver[i];//(unsigned int)threegpplte_interleaver(f1,f2,n);
       pi3 = pi2tab[ind][pi];
@@ -1975,7 +1859,6 @@ void init_td()
       pi5tab[ind][pi3] = pi2tab[ind][i];
       pi6tab[ind][pi] = pi2tab[ind][i];
     }
-
   }
 }
 
@@ -1991,33 +1874,25 @@ unsigned char phy_threegpplte_turbo_decoder(short *y,
     time_stats_t *gamma_stats,
     time_stats_t *ext_stats,
     time_stats_t *intl1_stats,
-    time_stats_t *intl2_stats)
-{
-
+    time_stats_t *intl2_stats) {
   /*  y is a pointer to the input
       decoded_bytes is a pointer to the decoded output
       n is the size in bits of the coded block, with the tail */
-
   int n2;
 #ifdef LLR8
   llr_t y8[3*(n+16)] __attribute__((aligned(16)));
 #endif
-
   llr_t systematic0[n+16] __attribute__ ((aligned(16)));
   llr_t systematic1[n+16] __attribute__ ((aligned(16)));
   llr_t systematic2[n+16] __attribute__ ((aligned(16)));
   llr_t yparity1[n+16] __attribute__ ((aligned(16)));
   llr_t yparity2[n+16] __attribute__ ((aligned(16)));
-
   llr_t ext[n+128] __attribute__((aligned(16)));
   llr_t ext2[n+128] __attribute__((aligned(16)));
-
   llr_t alpha[(n+16)*8] __attribute__ ((aligned(16)));
   llr_t beta[(n+16)*8] __attribute__ ((aligned(16)));
   llr_t m11[n+16] __attribute__ ((aligned(16)));
   llr_t m10[n+16] __attribute__ ((aligned(16)));
-
-
   int *pi2_p,*pi4_p,*pi5_p,*pi6_p;
   llr_t *s,*s1,*s2,*yp1,*yp2,*yp;
   __m128i *yp128;
@@ -2026,12 +1901,10 @@ unsigned char phy_threegpplte_turbo_decoder(short *y,
   unsigned int crc,oldcrc,crc_len;
   uint8_t temp;
   __m128i tmp128[(n+8)>>3];
-
   __m128i tmp, zeros=_mm_setzero_si128();
 #ifdef LLR8
   __m128i MAX128=_mm_set1_epi16(MAX/2);
 #endif
-
   register __m128i tmpe;
   int offset8_flag=0;
 
@@ -2040,9 +1913,7 @@ unsigned char phy_threegpplte_turbo_decoder(short *y,
     return 255;
   }
 
-
   start_meas(init_stats);
-
 #ifdef LLR8
 
   if ((n&15)>0) {
@@ -2063,21 +1934,21 @@ unsigned char phy_threegpplte_turbo_decoder(short *y,
   }
 
   switch (crc_type) {
-  case CRC24_A:
-  case CRC24_B:
-    crc_len=3;
-    break;
+    case CRC24_A:
+    case CRC24_B:
+      crc_len=3;
+      break;
 
-  case CRC16:
-    crc_len=2;
-    break;
+    case CRC16:
+      crc_len=2;
+      break;
 
-  case CRC8:
-    crc_len=1;
-    break;
+    case CRC8:
+      crc_len=1;
+      break;
 
-  default:
-    crc_len=3;
+    default:
+      crc_len=3;
   }
 
 #ifdef LLR8
@@ -2087,199 +1958,154 @@ unsigned char phy_threegpplte_turbo_decoder(short *y,
     //((__m128i *)y8)[i] = _mm_packs_epi16(((__m128i *)y)[j],((__m128i *)y)[j+1]);
   }
 
-  yp128 = (__m128i*)y8;
+  yp128 = (__m128i *)y8;
 #else
-  yp128 = (__m128i*)y;
+  yp128 = (__m128i *)y;
 #endif
-
-
-
   s = systematic0;
   s1 = systematic1;
   s2 = systematic2;
   yp1 = yparity1;
   yp2 = yparity2;
-
-
 #ifndef LLR8
 
   for (i=0; i<n2; i+=8) {
     pi2_p = &pi2tab[iind][i];
-
     j=pi2_p[0];
-
-
     tmpe = _mm_load_si128(yp128);
-
     s[j]   = _mm_extract_epi16(tmpe,0);
     yp1[j] = _mm_extract_epi16(tmpe,1);
     yp2[j] = _mm_extract_epi16(tmpe,2);
     //    printf("init: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",j,s[j],yp1[j],yp2[j]);
-
     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);
     //    printf("init: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",j,s[j],yp1[j],yp2[j]);
-
     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);
     //    printf("init: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",j,s[j],yp1[j],yp2[j]);
-
     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);
     //    printf("init: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",j,s[j],yp1[j],yp2[j]);
-
     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);
     //    printf("init: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",j,s[j],yp1[j],yp2[j]);
-
     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);
     //    printf("init: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",j,s[j],yp1[j],yp2[j]);
-
     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);
     //    printf("init: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",j,s[j],yp1[j],yp2[j]);
-
     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);
     //    printf("init: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",j,s[j],yp1[j],yp2[j]);
-
     yp128+=3;
-
   }
 
 #else
 
   for (i=0; i<n2; i+=16) {
     pi2_p = &pi2tab[iind][i];
-
     j=pi2_p[0];
     s[j]   = _mm_extract_epi8(yp128[0],0);
     yp1[j] = _mm_extract_epi8(yp128[0],1);
     yp2[j] = _mm_extract_epi8(yp128[0],2);
     //    printf("init: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",j,s[j],yp1[j],yp2[j]);
-
     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);
     //    printf("init: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",j,s[j],yp1[j],yp2[j]);
-
     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);
     //    printf("init: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",j,s[j],yp1[j],yp2[j]);
-
     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);
     //    printf("init: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",j,s[j],yp1[j],yp2[j]);
-
     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);
     //    printf("init: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",j,s[j],yp1[j],yp2[j]);
-
     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);
     //    printf("init: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",j,s[j],yp1[j],yp2[j]);
-
     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);
     //    printf("init: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",j,s[j],yp1[j],yp2[j]);
-
     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);
     //    printf("init: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",j,s[j],yp1[j],yp2[j]);
-
     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);
     //    printf("init: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",j,s[j],yp1[j],yp2[j]);
-
     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);
     //    printf("init: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",j,s[j],yp1[j],yp2[j]);
-
     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);
     //    printf("init: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",j,s[j],yp1[j],yp2[j]);
-
     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);
     //    printf("init: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",j,s[j],yp1[j],yp2[j]);
-
     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);
     //    printf("init: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",j,s[j],yp1[j],yp2[j]);
-
     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);
     //    printf("init: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",j,s[j],yp1[j],yp2[j]);
-
     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);
     //    printf("init: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",j,s[j],yp1[j],yp2[j]);
-
     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);
     //    printf("init: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",j,s[j],yp1[j],yp2[j]);
-
     yp128+=3;
-
   }
 
 #endif
-
-
-  yp=(llr_t*)yp128;
+  yp=(llr_t *)yp128;
 #ifdef LLR8
 
   if (n2>n) {
@@ -2290,7 +2116,7 @@ unsigned char phy_threegpplte_turbo_decoder(short *y,
     s1[n+4]=0;s1[n+5]=0;s1[n+6]=0;s1[n+7]=0;
     s2[n]=0;s2[n+1]=0;s2[n+2]=0;s2[n+3]=0;
     s2[n+4]=0;s2[n+5]=0;s2[n+6]=0;s2[n+7]=0;*/
-    yp=(llr_t*)(y8+n);
+    yp=(llr_t *)(y8+n);
   }
 
 #endif
@@ -2341,68 +2167,55 @@ unsigned char phy_threegpplte_turbo_decoder(short *y,
 #ifdef DEBUG_LOGMAP
   msg("\n");
 #endif //DEBUG_LOGMAP
-
   stop_meas(init_stats);
-
   // do log_map from first parity bit
-
   log_map(systematic0,yparity1,m11,m10,alpha,beta,ext,n2,0,F,offset8_flag,alpha_stats,beta_stats,gamma_stats,ext_stats);
 
   while (iteration_cnt++ < max_iterations) {
-
 #ifdef DEBUG_LOGMAP
     printf("\n*******************ITERATION %d (n %d), ext %p\n\n",iteration_cnt,n,ext);
 #endif //DEBUG_LOGMAP
-
     start_meas(intl1_stats);
 #ifndef LLR8
-
     pi4_p=pi4tab[iind];
 
     for (i=0; i<(n2>>3); i++) { // steady-state portion
-
-      ((__m128i *)systematic2)[i]=_mm_insert_epi16(((__m128i *)systematic2)[i],((llr_t*)ext)[*pi4_p++],0);
-      ((__m128i *)systematic2)[i]=_mm_insert_epi16(((__m128i *)systematic2)[i],((llr_t*)ext)[*pi4_p++],1);
-      ((__m128i *)systematic2)[i]=_mm_insert_epi16(((__m128i *)systematic2)[i],((llr_t*)ext)[*pi4_p++],2);
-      ((__m128i *)systematic2)[i]=_mm_insert_epi16(((__m128i *)systematic2)[i],((llr_t*)ext)[*pi4_p++],3);
-      ((__m128i *)systematic2)[i]=_mm_insert_epi16(((__m128i *)systematic2)[i],((llr_t*)ext)[*pi4_p++],4);
-      ((__m128i *)systematic2)[i]=_mm_insert_epi16(((__m128i *)systematic2)[i],((llr_t*)ext)[*pi4_p++],5);
-      ((__m128i *)systematic2)[i]=_mm_insert_epi16(((__m128i *)systematic2)[i],((llr_t*)ext)[*pi4_p++],6);
-      ((__m128i *)systematic2)[i]=_mm_insert_epi16(((__m128i *)systematic2)[i],((llr_t*)ext)[*pi4_p++],7);
+      ((__m128i *)systematic2)[i]=_mm_insert_epi16(((__m128i *)systematic2)[i],((llr_t *)ext)[*pi4_p++],0);
+      ((__m128i *)systematic2)[i]=_mm_insert_epi16(((__m128i *)systematic2)[i],((llr_t *)ext)[*pi4_p++],1);
+      ((__m128i *)systematic2)[i]=_mm_insert_epi16(((__m128i *)systematic2)[i],((llr_t *)ext)[*pi4_p++],2);
+      ((__m128i *)systematic2)[i]=_mm_insert_epi16(((__m128i *)systematic2)[i],((llr_t *)ext)[*pi4_p++],3);
+      ((__m128i *)systematic2)[i]=_mm_insert_epi16(((__m128i *)systematic2)[i],((llr_t *)ext)[*pi4_p++],4);
+      ((__m128i *)systematic2)[i]=_mm_insert_epi16(((__m128i *)systematic2)[i],((llr_t *)ext)[*pi4_p++],5);
+      ((__m128i *)systematic2)[i]=_mm_insert_epi16(((__m128i *)systematic2)[i],((llr_t *)ext)[*pi4_p++],6);
+      ((__m128i *)systematic2)[i]=_mm_insert_epi16(((__m128i *)systematic2)[i],((llr_t *)ext)[*pi4_p++],7);
     }
 
 #else
-
     pi4_p=pi4tab[iind];
 
     for (i=0; i<(n2>>4); i++) { // steady-state portion
-      tmp=_mm_insert_epi8(tmp,((llr_t*)ext)[*pi4_p++],0);
-      tmp=_mm_insert_epi8(tmp,((llr_t*)ext)[*pi4_p++],1);
-      tmp=_mm_insert_epi8(tmp,((llr_t*)ext)[*pi4_p++],2);
-      tmp=_mm_insert_epi8(tmp,((llr_t*)ext)[*pi4_p++],3);
-      tmp=_mm_insert_epi8(tmp,((llr_t*)ext)[*pi4_p++],4);
-      tmp=_mm_insert_epi8(tmp,((llr_t*)ext)[*pi4_p++],5);
-      tmp=_mm_insert_epi8(tmp,((llr_t*)ext)[*pi4_p++],6);
-      tmp=_mm_insert_epi8(tmp,((llr_t*)ext)[*pi4_p++],7);
-      tmp=_mm_insert_epi8(tmp,((llr_t*)ext)[*pi4_p++],8);
-      tmp=_mm_insert_epi8(tmp,((llr_t*)ext)[*pi4_p++],9);
-      tmp=_mm_insert_epi8(tmp,((llr_t*)ext)[*pi4_p++],10);
-      tmp=_mm_insert_epi8(tmp,((llr_t*)ext)[*pi4_p++],11);
-      tmp=_mm_insert_epi8(tmp,((llr_t*)ext)[*pi4_p++],12);
-      tmp=_mm_insert_epi8(tmp,((llr_t*)ext)[*pi4_p++],13);
-      tmp=_mm_insert_epi8(tmp,((llr_t*)ext)[*pi4_p++],14);
-      ((__m128i *)systematic2)[i]=_mm_insert_epi8(tmp,((llr_t*)ext)[*pi4_p++],15);
+      tmp=_mm_insert_epi8(tmp,((llr_t *)ext)[*pi4_p++],0);
+      tmp=_mm_insert_epi8(tmp,((llr_t *)ext)[*pi4_p++],1);
+      tmp=_mm_insert_epi8(tmp,((llr_t *)ext)[*pi4_p++],2);
+      tmp=_mm_insert_epi8(tmp,((llr_t *)ext)[*pi4_p++],3);
+      tmp=_mm_insert_epi8(tmp,((llr_t *)ext)[*pi4_p++],4);
+      tmp=_mm_insert_epi8(tmp,((llr_t *)ext)[*pi4_p++],5);
+      tmp=_mm_insert_epi8(tmp,((llr_t *)ext)[*pi4_p++],6);
+      tmp=_mm_insert_epi8(tmp,((llr_t *)ext)[*pi4_p++],7);
+      tmp=_mm_insert_epi8(tmp,((llr_t *)ext)[*pi4_p++],8);
+      tmp=_mm_insert_epi8(tmp,((llr_t *)ext)[*pi4_p++],9);
+      tmp=_mm_insert_epi8(tmp,((llr_t *)ext)[*pi4_p++],10);
+      tmp=_mm_insert_epi8(tmp,((llr_t *)ext)[*pi4_p++],11);
+      tmp=_mm_insert_epi8(tmp,((llr_t *)ext)[*pi4_p++],12);
+      tmp=_mm_insert_epi8(tmp,((llr_t *)ext)[*pi4_p++],13);
+      tmp=_mm_insert_epi8(tmp,((llr_t *)ext)[*pi4_p++],14);
+      ((__m128i *)systematic2)[i]=_mm_insert_epi8(tmp,((llr_t *)ext)[*pi4_p++],15);
     }
 
 #endif
-
     stop_meas(intl1_stats);
-
     // do log_map from second parity bit
-
     log_map(systematic2,yparity2,m11,m10,alpha,beta,ext2,n2,1,F,offset8_flag,alpha_stats,beta_stats,gamma_stats,ext_stats);
-
-
 #ifndef LLR8
     pi5_p=pi5tab[iind];
 
@@ -2415,7 +2228,7 @@ unsigned char phy_threegpplte_turbo_decoder(short *y,
       tmp=_mm_insert_epi16(tmp,ext2[*pi5_p++],5);
       tmp=_mm_insert_epi16(tmp,ext2[*pi5_p++],6);
       tmp=_mm_insert_epi16(tmp,ext2[*pi5_p++],7);
-      ((__m128i *)systematic1)[i] = _mm_adds_epi16(_mm_subs_epi16(tmp,((__m128i*)ext)[i]),((__m128i *)systematic0)[i]);
+      ((__m128i *)systematic1)[i] = _mm_adds_epi16(_mm_subs_epi16(tmp,((__m128i *)ext)[i]),((__m128i *)systematic0)[i]);
     }
 
     if (iteration_cnt>1) {
@@ -2423,17 +2236,16 @@ unsigned char phy_threegpplte_turbo_decoder(short *y,
       pi6_p=pi6tab[iind];
 
       for (i=0; i<(n2>>3); i++) {
-        tmp=_mm_insert_epi16(tmp, ((llr_t*)ext2)[*pi6_p++],7);
-        tmp=_mm_insert_epi16(tmp, ((llr_t*)ext2)[*pi6_p++],6);
-        tmp=_mm_insert_epi16(tmp, ((llr_t*)ext2)[*pi6_p++],5);
-        tmp=_mm_insert_epi16(tmp, ((llr_t*)ext2)[*pi6_p++],4);
-        tmp=_mm_insert_epi16(tmp, ((llr_t*)ext2)[*pi6_p++],3);
-        tmp=_mm_insert_epi16(tmp, ((llr_t*)ext2)[*pi6_p++],2);
-        tmp=_mm_insert_epi16(tmp, ((llr_t*)ext2)[*pi6_p++],1);
-        tmp=_mm_insert_epi16(tmp, ((llr_t*)ext2)[*pi6_p++],0);
+        tmp=_mm_insert_epi16(tmp, ((llr_t *)ext2)[*pi6_p++],7);
+        tmp=_mm_insert_epi16(tmp, ((llr_t *)ext2)[*pi6_p++],6);
+        tmp=_mm_insert_epi16(tmp, ((llr_t *)ext2)[*pi6_p++],5);
+        tmp=_mm_insert_epi16(tmp, ((llr_t *)ext2)[*pi6_p++],4);
+        tmp=_mm_insert_epi16(tmp, ((llr_t *)ext2)[*pi6_p++],3);
+        tmp=_mm_insert_epi16(tmp, ((llr_t *)ext2)[*pi6_p++],2);
+        tmp=_mm_insert_epi16(tmp, ((llr_t *)ext2)[*pi6_p++],1);
+        tmp=_mm_insert_epi16(tmp, ((llr_t *)ext2)[*pi6_p++],0);
         tmp=_mm_cmpgt_epi8(_mm_packs_epi16(tmp,zeros),zeros);
         decoded_bytes[i]=(unsigned char)_mm_movemask_epi8(tmp);
-
       }
     }
 
@@ -2460,8 +2272,7 @@ unsigned char phy_threegpplte_turbo_decoder(short *y,
       tmp=_mm_insert_epi8(tmp,ext2[*pi5_p++],15);
       //decoded_bytes_interl[i]=(uint16_t) _mm_movemask_epi8(_mm_cmpgt_epi8(tmp,zeros));
       tmp128[i] = _mm_adds_epi8(((__m128i *)ext2)[i],((__m128i *)systematic2)[i]);
-
-      ((__m128i *)systematic1)[i] = _mm_adds_epi8(_mm_subs_epi8(tmp,((__m128i*)ext)[i]),((__m128i *)systematic0)[i]);
+      ((__m128i *)systematic1)[i] = _mm_adds_epi8(_mm_subs_epi8(tmp,((__m128i *)ext)[i]),((__m128i *)systematic0)[i]);
     }
 
     /* LT modification, something wrong here
@@ -2526,41 +2337,40 @@ unsigned char phy_threegpplte_turbo_decoder(short *y,
       oldcrc= *((unsigned int *)(&decoded_bytes[(n>>3)-crc_len]));
 
       switch (crc_type) {
-
-      case CRC24_A:
-        oldcrc&=0x00ffffff;
-        crc = crc24a(&decoded_bytes[F>>3],
-                     n-24-F)>>8;
-        temp=((uint8_t *)&crc)[2];
-        ((uint8_t *)&crc)[2] = ((uint8_t *)&crc)[0];
-        ((uint8_t *)&crc)[0] = temp;
-        break;
-
-      case CRC24_B:
-        oldcrc&=0x00ffffff;
-        crc = crc24b(decoded_bytes,
-                     n-24)>>8;
-        temp=((uint8_t *)&crc)[2];
-        ((uint8_t *)&crc)[2] = ((uint8_t *)&crc)[0];
-        ((uint8_t *)&crc)[0] = temp;
-        break;
-
-      case CRC16:
-        oldcrc&=0x0000ffff;
-        crc = crc16(decoded_bytes,
-                    n-16)>>16;
-        break;
-
-      case CRC8:
-        oldcrc&=0x000000ff;
-        crc = crc8(decoded_bytes,
-                   n-8)>>24;
-        break;
-
-      default:
-        printf("FATAL: 3gpplte_turbo_decoder_sse.c: Unknown CRC\n");
-        return(255);
-        break;
+        case CRC24_A:
+          oldcrc&=0x00ffffff;
+          crc = crc24a(&decoded_bytes[F>>3],
+                       n-24-F)>>8;
+          temp=((uint8_t *)&crc)[2];
+          ((uint8_t *)&crc)[2] = ((uint8_t *)&crc)[0];
+          ((uint8_t *)&crc)[0] = temp;
+          break;
+
+        case CRC24_B:
+          oldcrc&=0x00ffffff;
+          crc = crc24b(decoded_bytes,
+                       n-24)>>8;
+          temp=((uint8_t *)&crc)[2];
+          ((uint8_t *)&crc)[2] = ((uint8_t *)&crc)[0];
+          ((uint8_t *)&crc)[0] = temp;
+          break;
+
+        case CRC16:
+          oldcrc&=0x0000ffff;
+          crc = crc16(decoded_bytes,
+                      n-16)>>16;
+          break;
+
+        case CRC8:
+          oldcrc&=0x000000ff;
+          crc = crc8(decoded_bytes,
+                     n-8)>>24;
+          break;
+
+        default:
+          printf("FATAL: 3gpplte_turbo_decoder_sse.c: Unknown CRC\n");
+          return(255);
+          break;
       }
 
       stop_meas(intl2_stats);
@@ -2573,9 +2383,9 @@ unsigned char phy_threegpplte_turbo_decoder(short *y,
     // do log_map from first parity bit
     if (iteration_cnt < max_iterations) {
       log_map(systematic1,yparity1,m11,m10,alpha,beta,ext,n2,0,F,offset8_flag,alpha_stats,beta_stats,gamma_stats,ext_stats);
-      __m128i* ext_128=(__m128i*) ext;
-      __m128i* s1_128=(__m128i*) systematic1;
-      __m128i* s0_128=(__m128i*) systematic0;
+      __m128i *ext_128=(__m128i *) ext;
+      __m128i *s1_128=(__m128i *) systematic1;
+      __m128i *s0_128=(__m128i *) systematic0;
 #ifndef LLR8
       int myloop=n2>>3;
 
@@ -2601,27 +2411,21 @@ unsigned char phy_threegpplte_turbo_decoder(short *y,
 
 #ifdef TEST_DEBUG
 
-int test_logmap8()
-{
+int test_logmap8() {
   unsigned char test[8];
   //_declspec(align(16))  char channel_output[512];
   //_declspec(align(16))  unsigned char output[512],decoded_output[16], *inPtr, *outPtr;
-
   short channel_output[512];
   unsigned char output[512],decoded_output[16];
   unsigned int i,crc,ret;
-
   test[0] = 7;
   test[1] = 0xa5;
   test[2] = 0x11;
   test[3] = 0x92;
   test[4] = 0xfe;
-
   crc = crc24a(test,
                40)>>8;
-
-  *(unsigned int*)(&test[5]) = crc;
-
+  *(unsigned int *)(&test[5]) = crc;
   printf("crc24 = %x\n",crc);
   threegpplte_turbo_encoder(test,   //input
                             8,      //input length bytes
@@ -2646,20 +2450,15 @@ int test_logmap8()
                                       0,        // filler bits
                                       0);       // decoder instance
 
-
   for (i=0; i<8; i++)
-    printf("output %d => %x (input %x)\n",i,decoded_output[i],test[i]);
+    printf("output %u => %x (input %x)\n",i,decoded_output[i],test[i]);
 }
 
 
 
 
-int main()
-{
-
-
+int main() {
   test_logmap8();
-
   return(0);
 }
 
diff --git a/openair1/PHY/CODING/3gpplte_turbo_decoder_sse_16bit.c b/openair1/PHY/CODING/3gpplte_turbo_decoder_sse_16bit.c
index a25ba46ff8e40cd777cdaaed6e40e9eb25d4456c..50fae438b7629e24bd1e74d11f2b1f7d721fff59 100644
--- a/openair1/PHY/CODING/3gpplte_turbo_decoder_sse_16bit.c
+++ b/openair1/PHY/CODING/3gpplte_turbo_decoder_sse_16bit.c
@@ -41,53 +41,53 @@
 #include "PHY/sse_intrin.h"
 
 #ifndef TEST_DEBUG
-#include "PHY/impl_defs_top.h"
-#include "PHY/defs_common.h"
-#include "PHY/CODING/coding_defs.h"
-#include "PHY/CODING/lte_interleaver_inline.h"
+  #include "PHY/impl_defs_top.h"
+  #include "PHY/defs_common.h"
+  #include "PHY/CODING/coding_defs.h"
+  #include "PHY/CODING/lte_interleaver_inline.h"
 #else
 
-#include "defs.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+  #include "defs.h"
+  #include <stdio.h>
+  #include <stdlib.h>
+  #include <string.h>
 #endif
 
 #ifdef MEX
-#include "mex.h"
+  #include "mex.h"
 #endif
 
 //#define DEBUG_LOGMAP
 
 #ifdef DEBUG_LOGMAP
-#define print_shorts(s,x) fprintf(fdsse4,"%s %d,%d,%d,%d,%d,%d,%d,%d\n",s,(x)[0],(x)[1],(x)[2],(x)[3],(x)[4],(x)[5],(x)[6],(x)[7])
+  #define print_shorts(s,x) fprintf(fdsse4,"%s %d,%d,%d,%d,%d,%d,%d,%d\n",s,(x)[0],(x)[1],(x)[2],(x)[3],(x)[4],(x)[5],(x)[6],(x)[7])
 #endif
 
 #undef __AVX2__
 
 #ifdef DEBUG_LOGMAP
-FILE *fdsse4;
+  FILE *fdsse4;
 #endif
 
 typedef int16_t llr_t; // internal decoder LLR data is 16-bit fixed
 typedef int16_t channel_t;
 #define MAX 256
 
-void log_map16(llr_t* systematic,channel_t* y_parity, llr_t* m11, llr_t* m10, llr_t *alpha, llr_t *beta, llr_t* ext,unsigned short frame_length,unsigned char term_flag,unsigned char F,
+void log_map16(llr_t *systematic,channel_t *y_parity, llr_t *m11, llr_t *m10, llr_t *alpha, llr_t *beta, llr_t *ext,unsigned short frame_length,unsigned char term_flag,unsigned char F,
                int offset8_flag,time_stats_t *alpha_stats,time_stats_t *beta_stats,time_stats_t *gamma_stats,time_stats_t *ext_stats);
-void compute_gamma16(llr_t* m11,llr_t* m10,llr_t* systematic, channel_t* y_parity, unsigned short frame_length,unsigned char term_flag);
-void compute_alpha16(llr_t*alpha,llr_t *beta, llr_t* m11,llr_t* m10, unsigned short frame_length,unsigned char F);
-void compute_beta16(llr_t*alpha, llr_t* beta,llr_t* m11,llr_t* m10, unsigned short frame_length,unsigned char F,int offset8_flag);
-void compute_ext16(llr_t* alpha,llr_t* beta,llr_t* m11,llr_t* m10,llr_t* extrinsic, llr_t* ap, unsigned short frame_length);
+void compute_gamma16(llr_t *m11,llr_t *m10,llr_t *systematic, channel_t *y_parity, unsigned short frame_length,unsigned char term_flag);
+void compute_alpha16(llr_t *alpha,llr_t *beta, llr_t *m11,llr_t *m10, unsigned short frame_length,unsigned char F);
+void compute_beta16(llr_t *alpha, llr_t *beta,llr_t *m11,llr_t *m10, unsigned short frame_length,unsigned char F,int offset8_flag);
+void compute_ext16(llr_t *alpha,llr_t *beta,llr_t *m11,llr_t *m10,llr_t *extrinsic, llr_t *ap, unsigned short frame_length);
 
 
-void log_map16(llr_t* systematic,
-               channel_t* y_parity,
-               llr_t* m11,
-               llr_t* m10,
+void log_map16(llr_t *systematic,
+               channel_t *y_parity,
+               llr_t *m11,
+               llr_t *m10,
                llr_t *alpha,
                llr_t *beta,
-               llr_t* ext,
+               llr_t *ext,
                unsigned short frame_length,
                unsigned char term_flag,
                unsigned char F,
@@ -95,13 +95,10 @@ void log_map16(llr_t* systematic,
                time_stats_t *alpha_stats,
                time_stats_t *beta_stats,
                time_stats_t *gamma_stats,
-               time_stats_t *ext_stats)
-{
-
+               time_stats_t *ext_stats) {
 #ifdef DEBUG_LOGMAP
   fprintf(fdsse4,"log_map, frame_length %d\n",frame_length);
 #endif
-
   start_meas(gamma_stats) ;
   compute_gamma16(m11,m10,systematic,y_parity,frame_length,term_flag) ;
   stop_meas(gamma_stats);
@@ -114,13 +111,10 @@ void log_map16(llr_t* systematic,
   start_meas(ext_stats)   ;
   compute_ext16(alpha,beta,m11,m10,ext,systematic,frame_length)       ;
   stop_meas(ext_stats);
-
-
 }
 
-void compute_gamma16(llr_t* m11,llr_t* m10,llr_t* systematic,channel_t* y_parity,
-                     unsigned short frame_length,unsigned char term_flag)
-{
+void compute_gamma16(llr_t *m11,llr_t *m10,llr_t *systematic,channel_t *y_parity,
+                     unsigned short frame_length,unsigned char term_flag) {
   int k,K1;
 #if defined(__x86_64__)||defined(__i386__)
   __m128i *systematic128 = (__m128i *)systematic;
@@ -133,18 +127,18 @@ void compute_gamma16(llr_t* m11,llr_t* m10,llr_t* systematic,channel_t* y_parity
   int16x8_t *m10_128        = (int16x8_t *)m10;
   int16x8_t *m11_128        = (int16x8_t *)m11;
 #endif
-
 #ifdef DEBUG_LOGMAP
   fprintf(fdsse4,"compute_gamma (sse_16bit), %p,%p,%p,%p,framelength %d\n",m11,m10,systematic,y_parity,frame_length);
 #endif
-
 #ifndef __AVX2__
   K1=frame_length>>3;
 #else
+
   if ((frame_length&15) > 0)
     K1=(frame_length+1)>>4;
   else
     K1=frame_length>>4;
+
 #endif
 
   for (k=0; k<K1; k++) {
@@ -153,21 +147,20 @@ void compute_gamma16(llr_t* m11,llr_t* m10,llr_t* systematic,channel_t* y_parity
     m11_128[k] = _mm_srai_epi16(_mm_adds_epi16(systematic128[k],y_parity128[k]),1);
     m10_128[k] = _mm_srai_epi16(_mm_subs_epi16(systematic128[k],y_parity128[k]),1);
 #else
-    ((__m256i*)m11_128)[k] = _mm256_srai_epi16(_mm256_adds_epi16(((__m256i*)systematic128)[k],((__m256i*)y_parity128)[k]),1);
+    ((__m256i *)m11_128)[k] = _mm256_srai_epi16(_mm256_adds_epi16(((__m256i *)systematic128)[k],((__m256i *)y_parity128)[k]),1);
     //    ((__m256i*)m10_128)[k] = _mm256_srai_epi16(_mm256_subs_epi16(((__m256i*)y_parity128)[k],((__m256i*)systematic128)[k]),1);
-    ((__m256i*)m10_128)[k] = _mm256_srai_epi16(_mm256_subs_epi16(((__m256i*)systematic128)[k],((__m256i*)y_parity128)[k]),1);
+    ((__m256i *)m10_128)[k] = _mm256_srai_epi16(_mm256_subs_epi16(((__m256i *)systematic128)[k],((__m256i *)y_parity128)[k]),1);
 #endif
 #elif defined(__arm__)
     m11_128[k] = vhaddq_s16(systematic128[k],y_parity128[k]);
     m10_128[k] = vhsubq_s16(systematic128[k],y_parity128[k]);
 #endif
-
 #ifdef DEBUG_LOGMAP
     fprintf(fdsse4,"Loop index k %d\n", k);
-    print_shorts("sys",(int16_t*)&systematic128[k]);
-    print_shorts("yp",(int16_t*)&y_parity128[k]);
-    print_shorts("m11",(int16_t*)&m11_128[k]);
-    print_shorts("m10",(int16_t*)&m10_128[k]);
+    print_shorts("sys",(int16_t *)&systematic128[k]);
+    print_shorts("yp",(int16_t *)&y_parity128[k]);
+    print_shorts("m11",(int16_t *)&m11_128[k]);
+    print_shorts("m10",(int16_t *)&m10_128[k]);
 #endif
   }
 
@@ -185,20 +178,18 @@ void compute_gamma16(llr_t* m11,llr_t* m10,llr_t* systematic,channel_t* y_parity
   m11_128[k] = vhaddq_s16(systematic128[k+term_flag],y_parity128[k]);
   m10_128[k] = vhsubq_s16(systematic128[k+term_flag],y_parity128[k]);
 #endif
-
 #ifdef DEBUG_LOGMAP
-fprintf(fdsse4,"Loop index k %d (term flag %d)\n", k,term_flag);
-print_shorts("sys",(int16_t*)&systematic128[k]);
-    print_shorts("yp",(int16_t*)&y_parity128[k]);
-    print_shorts("m11",(int16_t*)&m11_128[k]);
-    print_shorts("m10",(int16_t*)&m10_128[k]);
+  fprintf(fdsse4,"Loop index k %d (term flag %d)\n", k,term_flag);
+  print_shorts("sys",(int16_t *)&systematic128[k]);
+  print_shorts("yp",(int16_t *)&y_parity128[k]);
+  print_shorts("m11",(int16_t *)&m11_128[k]);
+  print_shorts("m10",(int16_t *)&m10_128[k]);
 #endif
 }
 
 #define L 40
 
-void compute_alpha16(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned short frame_length,unsigned char F)
-{
+void compute_alpha16(llr_t *alpha,llr_t *beta,llr_t *m_11,llr_t *m_10,unsigned short frame_length,unsigned char F) {
   int k,l,l2,K1,rerun_flag=0;
 #if defined(__x86_64__) || defined(__i386__)
   __m128i *alpha128=(__m128i *)alpha,*alpha_ptr,*m11p,*m10p;
@@ -215,7 +206,6 @@ void compute_alpha16(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned s
   __m256i m11m10_256;
   __m256i alpha_max;
 #endif
-
 #elif defined(__arm__)
   int16x8_t *alpha128=(int16x8_t *)alpha,*alpha_ptr;
   int16x8_t a0,a1,a2,a3,a4,a5,a6,a7,*m11p,*m10p;
@@ -228,6 +218,7 @@ void compute_alpha16(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned s
 #ifdef DEBUG_LOGMAP
   fprintf(fdsse4,"compute_alpha (sse_16bit)\n");
 #endif
+
   for (l=K1;; l=l2,rerun_flag=1) {
 #if defined(__x86_64__) || defined(__i386__)
     alpha128 = (__m128i *)alpha;
@@ -259,14 +250,14 @@ void compute_alpha16(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned s
 #endif
 #ifdef DEBUG_LOGMAP
       fprintf(fdsse4,"Initial alpha\n");
-      print_shorts("a0",(int16_t*)&alpha128[0]);
-      print_shorts("a1",(int16_t*)&alpha128[1]);
-      print_shorts("a2",(int16_t*)&alpha128[2]);
-      print_shorts("a3",(int16_t*)&alpha128[3]);
-      print_shorts("a4",(int16_t*)&alpha128[4]);
-      print_shorts("a5",(int16_t*)&alpha128[5]);
-      print_shorts("a6",(int16_t*)&alpha128[6]);
-      print_shorts("a7",(int16_t*)&alpha128[7]);
+      print_shorts("a0",(int16_t *)&alpha128[0]);
+      print_shorts("a1",(int16_t *)&alpha128[1]);
+      print_shorts("a2",(int16_t *)&alpha128[2]);
+      print_shorts("a3",(int16_t *)&alpha128[3]);
+      print_shorts("a4",(int16_t *)&alpha128[4]);
+      print_shorts("a5",(int16_t *)&alpha128[5]);
+      print_shorts("a6",(int16_t *)&alpha128[6]);
+      print_shorts("a7",(int16_t *)&alpha128[7]);
 #endif
     } else {
       //set initial alpha in columns 1-7 from final alpha from last run in columns 0-6
@@ -280,14 +271,22 @@ void compute_alpha16(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned s
       alpha128[6] = _mm_slli_si128(alpha128[6+frame_length],2);
       alpha128[7] = _mm_slli_si128(alpha128[7+frame_length],2);
 #elif defined(__arm__)
-      alpha128[0] = (int16x8_t)vshlq_n_s64((int64x2_t)alpha128[frame_length],16);   alpha128[0] = vsetq_lane_s16(alpha[8],alpha128[0],3);
-      alpha128[1] = (int16x8_t)vshlq_n_s64((int64x2_t)alpha128[1+frame_length],16); alpha128[1] = vsetq_lane_s16(alpha[24],alpha128[0],3);
-      alpha128[2] = (int16x8_t)vshlq_n_s64((int64x2_t)alpha128[2+frame_length],16); alpha128[2] = vsetq_lane_s16(alpha[40],alpha128[0],3);
-      alpha128[3] = (int16x8_t)vshlq_n_s64((int64x2_t)alpha128[3+frame_length],16); alpha128[3] = vsetq_lane_s16(alpha[56],alpha128[0],3);
-      alpha128[4] = (int16x8_t)vshlq_n_s64((int64x2_t)alpha128[4+frame_length],16); alpha128[4] = vsetq_lane_s16(alpha[72],alpha128[0],3);
-      alpha128[5] = (int16x8_t)vshlq_n_s64((int64x2_t)alpha128[5+frame_length],16); alpha128[5] = vsetq_lane_s16(alpha[88],alpha128[0],3);
-      alpha128[6] = (int16x8_t)vshlq_n_s64((int64x2_t)alpha128[6+frame_length],16); alpha128[6] = vsetq_lane_s16(alpha[104],alpha128[0],3);
-      alpha128[7] = (int16x8_t)vshlq_n_s64((int64x2_t)alpha128[7+frame_length],16); alpha128[7] = vsetq_lane_s16(alpha[120],alpha128[0],3);
+      alpha128[0] = (int16x8_t)vshlq_n_s64((int64x2_t)alpha128[frame_length],16);
+      alpha128[0] = vsetq_lane_s16(alpha[8],alpha128[0],3);
+      alpha128[1] = (int16x8_t)vshlq_n_s64((int64x2_t)alpha128[1+frame_length],16);
+      alpha128[1] = vsetq_lane_s16(alpha[24],alpha128[0],3);
+      alpha128[2] = (int16x8_t)vshlq_n_s64((int64x2_t)alpha128[2+frame_length],16);
+      alpha128[2] = vsetq_lane_s16(alpha[40],alpha128[0],3);
+      alpha128[3] = (int16x8_t)vshlq_n_s64((int64x2_t)alpha128[3+frame_length],16);
+      alpha128[3] = vsetq_lane_s16(alpha[56],alpha128[0],3);
+      alpha128[4] = (int16x8_t)vshlq_n_s64((int64x2_t)alpha128[4+frame_length],16);
+      alpha128[4] = vsetq_lane_s16(alpha[72],alpha128[0],3);
+      alpha128[5] = (int16x8_t)vshlq_n_s64((int64x2_t)alpha128[5+frame_length],16);
+      alpha128[5] = vsetq_lane_s16(alpha[88],alpha128[0],3);
+      alpha128[6] = (int16x8_t)vshlq_n_s64((int64x2_t)alpha128[6+frame_length],16);
+      alpha128[6] = vsetq_lane_s16(alpha[104],alpha128[0],3);
+      alpha128[7] = (int16x8_t)vshlq_n_s64((int64x2_t)alpha128[7+frame_length],16);
+      alpha128[7] = vsetq_lane_s16(alpha[120],alpha128[0],3);
 #endif
       // set initial alpha in column 0 to (0,-MAX/2,...,-MAX/2)
       alpha[8] = -MAX/2;
@@ -299,31 +298,30 @@ void compute_alpha16(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned s
       alpha[56] = -MAX/2;
 #ifdef DEBUG_LOGMAP
       fprintf(fdsse4,"Second run\n");
-      print_shorts("a0",(int16_t*)&alpha128[0]);
-      print_shorts("a1",(int16_t*)&alpha128[1]);
-      print_shorts("a2",(int16_t*)&alpha128[2]);
-      print_shorts("a3",(int16_t*)&alpha128[3]);
-      print_shorts("a4",(int16_t*)&alpha128[4]);
-      print_shorts("a5",(int16_t*)&alpha128[5]);
-      print_shorts("a6",(int16_t*)&alpha128[6]);
-      print_shorts("a7",(int16_t*)&alpha128[7]);
+      print_shorts("a0",(int16_t *)&alpha128[0]);
+      print_shorts("a1",(int16_t *)&alpha128[1]);
+      print_shorts("a2",(int16_t *)&alpha128[2]);
+      print_shorts("a3",(int16_t *)&alpha128[3]);
+      print_shorts("a4",(int16_t *)&alpha128[4]);
+      print_shorts("a5",(int16_t *)&alpha128[5]);
+      print_shorts("a6",(int16_t *)&alpha128[6]);
+      print_shorts("a7",(int16_t *)&alpha128[7]);
 #endif
-
     }
 
     alpha_ptr = &alpha128[0];
     //#ifdef __AVX2__
 #if defined(__x86_64__) || defined(__i386__)
-    m11p = (__m128i*)m_11;
-    m10p = (__m128i*)m_10;
+    m11p = (__m128i *)m_11;
+    m10p = (__m128i *)m_10;
 #elif defined(__arm__)
-    m11p = (int16x8_t*)m_11;
-    m10p = (int16x8_t*)m_10;
+    m11p = (int16x8_t *)m_11;
+    m10p = (int16x8_t *)m_10;
 #endif
+
     for (k=0;
          k<l;
          k++) {
-
 #if defined(__x86_64__) || defined(__i386__)
       //#ifndef __AVX2__
 #if 1
@@ -331,7 +329,6 @@ void compute_alpha16(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned s
       a3=_mm_load_si128(&alpha_ptr[3]);
       a5=_mm_load_si128(&alpha_ptr[5]);
       a7=_mm_load_si128(&alpha_ptr[7]);
-
       m_b0 = _mm_adds_epi16(a1,*m11p);  // m11
       m_b4 = _mm_subs_epi16(a1,*m11p);  // m00=-m11
       m_b1 = _mm_subs_epi16(a3,*m10p);  // m01=-m10
@@ -340,12 +337,10 @@ void compute_alpha16(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned s
       m_b6 = _mm_subs_epi16(a5,*m10p);  // m01=-m10
       m_b3 = _mm_subs_epi16(a7,*m11p);  // m00=-m11
       m_b7 = _mm_adds_epi16(a7,*m11p);  // m11
-
       a0=_mm_load_si128(&alpha_ptr[0]);
       a2=_mm_load_si128(&alpha_ptr[2]);
       a4=_mm_load_si128(&alpha_ptr[4]);
       a6=_mm_load_si128(&alpha_ptr[6]);
-
       new0 = _mm_subs_epi16(a0,*m11p);  // m00=-m11
       new4 = _mm_adds_epi16(a0,*m11p);  // m11
       new1 = _mm_adds_epi16(a2,*m10p);  // m10
@@ -354,7 +349,6 @@ void compute_alpha16(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned s
       new6 = _mm_adds_epi16(a4,*m10p);  // m10
       new3 = _mm_adds_epi16(a6,*m11p);  // m11
       new7 = _mm_subs_epi16(a6,*m11p);  // m00=-m11
-
       a0 = _mm_max_epi16(m_b0,new0);
       a1 = _mm_max_epi16(m_b1,new1);
       a2 = _mm_max_epi16(m_b2,new2);
@@ -363,7 +357,6 @@ void compute_alpha16(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned s
       a5 = _mm_max_epi16(m_b5,new5);
       a6 = _mm_max_epi16(m_b6,new6);
       a7 = _mm_max_epi16(m_b7,new7);
-
       alpha_max = _mm_max_epi16(a0,a1);
       alpha_max = _mm_max_epi16(alpha_max,a2);
       alpha_max = _mm_max_epi16(alpha_max,a3);
@@ -378,29 +371,22 @@ void compute_alpha16(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned s
       a75=_mm256_load_si256(&alpha_ptr256[3]);
       m11m10_256 = _mm256_insertf128_si256(m11m10_256,*m11p,0);
       m11m10_256 = _mm256_insertf128_si256(m11m10_256,*m10p,1);
-
-
       m_b01 = _mm256_adds_epi16(a13,m11m10_256); //negative m10
       m_b23 = _mm256_subs_epi16(a75,m11m10_256); //negative m10
       m_b45 = _mm256_subs_epi16(a13,m11m10_256); //negative m10
       m_b67 = _mm256_adds_epi16(a75,m11m10_256); //negative m10
-
       new01 = _mm256_subs_epi16(a02,m11m10_256);  //negative m10
       new23 = _mm256_adds_epi16(a64,m11m10_256);  //negative m10
       new45 = _mm256_adds_epi16(a02,m11m10_256);  //negative m10
       new67 = _mm256_subs_epi16(a64,m11m10_256);  //negative m10
-
       a01   = _mm256_max_epi16(m_b01,new01);
       a23   = _mm256_max_epi16(m_b23,new23);
       a45   = _mm256_max_epi16(m_b45,new45);
       a67   = _mm256_max_epi16(m_b67,new67);
-
       alpha_max = _mm256_max_epi16(a01,a23);
       alpha_max = _mm256_max_epi16(alpha_max,a45);
       alpha_max = _mm256_max_epi16(alpha_max,a67);
       alpha_max = _mm256_max_epi16(alpha_max,_mm256_permutevar8x32_epi32(alpha_max,_mm256_set_epi32(3,2,1,0,7,6,5,4)));
-      
-      
 #endif
 #elif defined(__arm__)
       m_b0 = vqaddq_s16(alpha_ptr[1],*m11p);  // m11
@@ -411,7 +397,6 @@ void compute_alpha16(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned s
       m_b6 = vqsubq_s16(alpha_ptr[5],*m10p);  // m01=-m10
       m_b3 = vqsubq_s16(alpha_ptr[7],*m11p);  // m00=-m11
       m_b7 = vqaddq_s16(alpha_ptr[7],*m11p);  // m11
-
       new0 = vqsubq_s16(alpha_ptr[0],*m11p);  // m00=-m11
       new4 = vqaddq_s16(alpha_ptr[0],*m11p);  // m11
       new1 = vqaddq_s16(alpha_ptr[2],*m10p);  // m10
@@ -428,7 +413,6 @@ void compute_alpha16(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned s
       a5 = vmaxq_s16(m_b5,new5);
       a6 = vmaxq_s16(m_b6,new6);
       a7 = vmaxq_s16(m_b7,new7);
-
       // compute and subtract maxima
       alpha_max = vmaxq_s16(a0,a1);
       alpha_max = vmaxq_s16(alpha_max,a2);
@@ -437,9 +421,7 @@ void compute_alpha16(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned s
       alpha_max = vmaxq_s16(alpha_max,a5);
       alpha_max = vmaxq_s16(alpha_max,a6);
       alpha_max = vmaxq_s16(alpha_max,a7);
-
 #endif
-
       alpha_ptr+=8;
       //#ifdef __AVX2__
       m11p++;
@@ -456,12 +438,10 @@ void compute_alpha16(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned s
       alpha_ptr[6] = _mm_subs_epi16(a6,alpha_max);
       alpha_ptr[7] = _mm_subs_epi16(a7,alpha_max);
 #else
-
       a01   = _mm256_subs_epi16(a01,alpha_max);
       a23   = _mm256_subs_epi16(a23,alpha_max);
       a45   = _mm256_subs_epi16(a45,alpha_max);
       a67   = _mm256_subs_epi16(a67,alpha_max);
-
       alpha_ptr256[0] = _mm256_permute2x128_si256(a01,a23,0x20);  //a02
       alpha_ptr256[1] = _mm256_permute2x128_si256(a01,a23,0x13);  //a13
       alpha_ptr256[2] = _mm256_permute2x128_si256(a45,a67,0x02);  //a64
@@ -477,49 +457,44 @@ void compute_alpha16(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned s
       alpha_ptr[6] = vqsubq_s16(a6,alpha_max);
       alpha_ptr[7] = vqsubq_s16(a7,alpha_max);
 #endif
-
 #ifdef DEBUG_LOGMAP
       fprintf(fdsse4,"Loop index %d\n",k);
-      print_shorts("mb0",(int16_t*)&m_b0);
-      print_shorts("mb1",(int16_t*)&m_b1);
-      print_shorts("mb2",(int16_t*)&m_b2);
-      print_shorts("mb3",(int16_t*)&m_b3);
-      print_shorts("mb4",(int16_t*)&m_b4);
-      print_shorts("mb5",(int16_t*)&m_b5);
-      print_shorts("mb6",(int16_t*)&m_b6);
-      print_shorts("mb7",(int16_t*)&m_b7);
-
+      print_shorts("mb0",(int16_t *)&m_b0);
+      print_shorts("mb1",(int16_t *)&m_b1);
+      print_shorts("mb2",(int16_t *)&m_b2);
+      print_shorts("mb3",(int16_t *)&m_b3);
+      print_shorts("mb4",(int16_t *)&m_b4);
+      print_shorts("mb5",(int16_t *)&m_b5);
+      print_shorts("mb6",(int16_t *)&m_b6);
+      print_shorts("mb7",(int16_t *)&m_b7);
       fprintf(fdsse4,"Loop index %d, new\n",k);
-      print_shorts("new0",(int16_t*)&new0);
-      print_shorts("new1",(int16_t*)&new1);
-      print_shorts("new2",(int16_t*)&new2);
-      print_shorts("new3",(int16_t*)&new3);
-      print_shorts("new4",(int16_t*)&new4);
-      print_shorts("new5",(int16_t*)&new5);
-      print_shorts("new6",(int16_t*)&new6);
-      print_shorts("new7",(int16_t*)&new7);
-
+      print_shorts("new0",(int16_t *)&new0);
+      print_shorts("new1",(int16_t *)&new1);
+      print_shorts("new2",(int16_t *)&new2);
+      print_shorts("new3",(int16_t *)&new3);
+      print_shorts("new4",(int16_t *)&new4);
+      print_shorts("new5",(int16_t *)&new5);
+      print_shorts("new6",(int16_t *)&new6);
+      print_shorts("new7",(int16_t *)&new7);
       fprintf(fdsse4,"Loop index %d, after max\n",k);
-      print_shorts("a0",(int16_t*)&a0);
-      print_shorts("a1",(int16_t*)&a1);
-      print_shorts("a2",(int16_t*)&a2);
-      print_shorts("a3",(int16_t*)&a3);
-      print_shorts("a4",(int16_t*)&a4);
-      print_shorts("a5",(int16_t*)&a5);
-      print_shorts("a6",(int16_t*)&a6);
-      print_shorts("a7",(int16_t*)&a7);
-
+      print_shorts("a0",(int16_t *)&a0);
+      print_shorts("a1",(int16_t *)&a1);
+      print_shorts("a2",(int16_t *)&a2);
+      print_shorts("a3",(int16_t *)&a3);
+      print_shorts("a4",(int16_t *)&a4);
+      print_shorts("a5",(int16_t *)&a5);
+      print_shorts("a6",(int16_t *)&a6);
+      print_shorts("a7",(int16_t *)&a7);
       fprintf(fdsse4,"Loop index %d\n",k);
-      print_shorts("a0",(int16_t*)&alpha_ptr[0]);
-      print_shorts("a1",(int16_t*)&alpha_ptr[1]);
-      print_shorts("a2",(int16_t*)&alpha_ptr[2]);
-      print_shorts("a3",(int16_t*)&alpha_ptr[3]);
-      print_shorts("a4",(int16_t*)&alpha_ptr[4]);
-      print_shorts("a5",(int16_t*)&alpha_ptr[5]);
-      print_shorts("a6",(int16_t*)&alpha_ptr[6]);
-      print_shorts("a7",(int16_t*)&alpha_ptr[7]);
+      print_shorts("a0",(int16_t *)&alpha_ptr[0]);
+      print_shorts("a1",(int16_t *)&alpha_ptr[1]);
+      print_shorts("a2",(int16_t *)&alpha_ptr[2]);
+      print_shorts("a3",(int16_t *)&alpha_ptr[3]);
+      print_shorts("a4",(int16_t *)&alpha_ptr[4]);
+      print_shorts("a5",(int16_t *)&alpha_ptr[5]);
+      print_shorts("a6",(int16_t *)&alpha_ptr[6]);
+      print_shorts("a7",(int16_t *)&alpha_ptr[7]);
 #endif
-
     }
 
     if (rerun_flag==1)
@@ -528,37 +503,28 @@ void compute_alpha16(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned s
 }
 
 
-void compute_beta16(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned short frame_length,unsigned char F,int offset8_flag)
-{
-
+void compute_beta16(llr_t *alpha,llr_t *beta,llr_t *m_11,llr_t *m_10,unsigned short frame_length,unsigned char F,int offset8_flag) {
   int k,rerun_flag=0;
 #if defined(__x86_64__) || defined(__i386__)
   __m128i m11_128,m10_128;
   __m128i m_b0,m_b1,m_b2,m_b3,m_b4,m_b5,m_b6,m_b7;
   __m128i new0,new1,new2,new3,new4,new5,new6,new7;
-
   __m128i *beta128,*alpha128,*beta_ptr;
   __m128i beta_max;
 #elif defined(__arm__)
   int16x8_t m11_128,m10_128;
   int16x8_t m_b0,m_b1,m_b2,m_b3,m_b4,m_b5,m_b6,m_b7;
   int16x8_t new0,new1,new2,new3,new4,new5,new6,new7;
-
   int16x8_t *beta128,*alpha128,*beta_ptr;
   int16x8_t beta_max;
 #endif
-
   int16_t m11,m10,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;
   llr_t beta0,beta1;
-
 #ifdef DEBUG_LOGMAP
   fprintf(fdsse4,"compute_beta, %p,%p,%p,%p,framelength %d,F %d\n",
-	  beta,m_11,m_10,alpha,frame_length,F);
+          beta,m_11,m_10,alpha,frame_length,F);
 #endif
-
-
   // termination for beta initialization
-
   //  fprintf(fdsse4,"beta init: offset8 %d\n",offset8_flag);
   m11=(int16_t)m_11[2+frame_length];
   //#ifndef __AVX2__
@@ -570,16 +536,13 @@ void compute_beta16(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sh
 #ifdef DEBUG_LOGMAP
   fprintf(fdsse4,"m11,m10 %d,%d\n",m11,m10);
 #endif
-
   beta0 = -m11;//M0T_TERM;
   beta1 = m11;//M1T_TERM;
   m11=(int16_t)m_11[1+frame_length];
   m10=(int16_t)m_10[1+frame_length];
-
 #ifdef DEBUG_LOGMAP
   fprintf(fdsse4,"m11,m10 %d,%d\n",m11,m10);
 #endif
-
   beta0_2 = beta0-m11;//+M0T_TERM;
   beta1_2 = beta0+m11;//+M1T_TERM;
   beta2_2 = beta1+m10;//M2T_TERM;
@@ -597,8 +560,6 @@ void compute_beta16(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sh
   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;
@@ -606,8 +567,6 @@ void compute_beta16(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sh
   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;
@@ -619,12 +578,13 @@ void compute_beta16(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sh
 
   for (rerun_flag=0;; rerun_flag=1) {
 #if defined(__x86_64__) || defined(__i386__)
-    beta_ptr   = (__m128i*)&beta[frame_length<<3];
-    alpha128   = (__m128i*)&alpha[0];
+    beta_ptr   = (__m128i *)&beta[frame_length<<3];
+    alpha128   = (__m128i *)&alpha[0];
 #elif defined(__arm__)
-    beta_ptr   = (int16x8_t*)&beta[frame_length<<3];
-    alpha128   = (int16x8_t*)&alpha[0];
+    beta_ptr   = (int16x8_t *)&beta[frame_length<<3];
+    alpha128   = (int16x8_t *)&alpha[0];
 #endif
+
     if (rerun_flag == 0) {
       beta_ptr[0] = alpha128[(frame_length)];
       beta_ptr[1] = alpha128[1+(frame_length)];
@@ -636,18 +596,18 @@ void compute_beta16(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sh
       beta_ptr[7] = alpha128[7+(frame_length)];
 #ifdef DEBUG_LOGMAP
       fprintf(fdsse4,"beta init \n");
-      print_shorts("b0",(int16_t*)&beta_ptr[0]);
-      print_shorts("b1",(int16_t*)&beta_ptr[1]);
-      print_shorts("b2",(int16_t*)&beta_ptr[2]);
-      print_shorts("b3",(int16_t*)&beta_ptr[3]);
-      print_shorts("b4",(int16_t*)&beta_ptr[4]);
-      print_shorts("b5",(int16_t*)&beta_ptr[5]);
-      print_shorts("b6",(int16_t*)&beta_ptr[6]);
-      print_shorts("b7",(int16_t*)&beta_ptr[7]);
+      print_shorts("b0",(int16_t *)&beta_ptr[0]);
+      print_shorts("b1",(int16_t *)&beta_ptr[1]);
+      print_shorts("b2",(int16_t *)&beta_ptr[2]);
+      print_shorts("b3",(int16_t *)&beta_ptr[3]);
+      print_shorts("b4",(int16_t *)&beta_ptr[4]);
+      print_shorts("b5",(int16_t *)&beta_ptr[5]);
+      print_shorts("b6",(int16_t *)&beta_ptr[6]);
+      print_shorts("b7",(int16_t *)&beta_ptr[7]);
 #endif
     } else {
 #if defined(__x86_64__) || defined(__i386__)
-      beta128 = (__m128i*)&beta[0];
+      beta128 = (__m128i *)&beta[0];
       beta_ptr[0] = _mm_srli_si128(beta128[0],2);
       beta_ptr[1] = _mm_srli_si128(beta128[1],2);
       beta_ptr[2] = _mm_srli_si128(beta128[2],2);
@@ -657,31 +617,38 @@ void compute_beta16(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sh
       beta_ptr[6] = _mm_srli_si128(beta128[6],2);
       beta_ptr[7] = _mm_srli_si128(beta128[7],2);
 #elif defined(__arm__)
-      beta128 = (int16x8_t*)&beta[0];
-      beta_ptr   = (int16x8_t*)&beta[frame_length<<3];
-      beta_ptr[0] = (int16x8_t)vshrq_n_s64((int64x2_t)beta128[0],16);   beta_ptr[0] = vsetq_lane_s16(beta[3],beta_ptr[0],4);
-      beta_ptr[1] = (int16x8_t)vshrq_n_s64((int64x2_t)beta128[1],16);   beta_ptr[1] = vsetq_lane_s16(beta[11],beta_ptr[1],4);
-      beta_ptr[2] = (int16x8_t)vshrq_n_s64((int64x2_t)beta128[2],16);   beta_ptr[2] = vsetq_lane_s16(beta[19],beta_ptr[2],4);
-      beta_ptr[3] = (int16x8_t)vshrq_n_s64((int64x2_t)beta128[3],16);   beta_ptr[3] = vsetq_lane_s16(beta[27],beta_ptr[3],4);
-      beta_ptr[4] = (int16x8_t)vshrq_n_s64((int64x2_t)beta128[4],16);   beta_ptr[4] = vsetq_lane_s16(beta[35],beta_ptr[4],4);
-      beta_ptr[5] = (int16x8_t)vshrq_n_s64((int64x2_t)beta128[5],16);   beta_ptr[5] = vsetq_lane_s16(beta[43],beta_ptr[5],4);
-      beta_ptr[6] = (int16x8_t)vshrq_n_s64((int64x2_t)beta128[6],16);   beta_ptr[6] = vsetq_lane_s16(beta[51],beta_ptr[6],4);
-      beta_ptr[7] = (int16x8_t)vshrq_n_s64((int64x2_t)beta128[7],16);   beta_ptr[7] = vsetq_lane_s16(beta[59],beta_ptr[7],4);
+      beta128 = (int16x8_t *)&beta[0];
+      beta_ptr   = (int16x8_t *)&beta[frame_length<<3];
+      beta_ptr[0] = (int16x8_t)vshrq_n_s64((int64x2_t)beta128[0],16);
+      beta_ptr[0] = vsetq_lane_s16(beta[3],beta_ptr[0],4);
+      beta_ptr[1] = (int16x8_t)vshrq_n_s64((int64x2_t)beta128[1],16);
+      beta_ptr[1] = vsetq_lane_s16(beta[11],beta_ptr[1],4);
+      beta_ptr[2] = (int16x8_t)vshrq_n_s64((int64x2_t)beta128[2],16);
+      beta_ptr[2] = vsetq_lane_s16(beta[19],beta_ptr[2],4);
+      beta_ptr[3] = (int16x8_t)vshrq_n_s64((int64x2_t)beta128[3],16);
+      beta_ptr[3] = vsetq_lane_s16(beta[27],beta_ptr[3],4);
+      beta_ptr[4] = (int16x8_t)vshrq_n_s64((int64x2_t)beta128[4],16);
+      beta_ptr[4] = vsetq_lane_s16(beta[35],beta_ptr[4],4);
+      beta_ptr[5] = (int16x8_t)vshrq_n_s64((int64x2_t)beta128[5],16);
+      beta_ptr[5] = vsetq_lane_s16(beta[43],beta_ptr[5],4);
+      beta_ptr[6] = (int16x8_t)vshrq_n_s64((int64x2_t)beta128[6],16);
+      beta_ptr[6] = vsetq_lane_s16(beta[51],beta_ptr[6],4);
+      beta_ptr[7] = (int16x8_t)vshrq_n_s64((int64x2_t)beta128[7],16);
+      beta_ptr[7] = vsetq_lane_s16(beta[59],beta_ptr[7],4);
 #endif
 #ifdef DEBUG_LOGMAP
       fprintf(fdsse4,"beta init (second run) \n");
-      print_shorts("b0",(int16_t*)&beta_ptr[0]);
-      print_shorts("b1",(int16_t*)&beta_ptr[1]);
-      print_shorts("b2",(int16_t*)&beta_ptr[2]);
-      print_shorts("b3",(int16_t*)&beta_ptr[3]);
-      print_shorts("b4",(int16_t*)&beta_ptr[4]);
-      print_shorts("b5",(int16_t*)&beta_ptr[5]);
-      print_shorts("b6",(int16_t*)&beta_ptr[6]);
-      print_shorts("b7",(int16_t*)&beta_ptr[7]);
+      print_shorts("b0",(int16_t *)&beta_ptr[0]);
+      print_shorts("b1",(int16_t *)&beta_ptr[1]);
+      print_shorts("b2",(int16_t *)&beta_ptr[2]);
+      print_shorts("b3",(int16_t *)&beta_ptr[3]);
+      print_shorts("b4",(int16_t *)&beta_ptr[4]);
+      print_shorts("b5",(int16_t *)&beta_ptr[5]);
+      print_shorts("b6",(int16_t *)&beta_ptr[6]);
+      print_shorts("b7",(int16_t *)&beta_ptr[7]);
 #endif
     }
 
-
 #if defined(__x86_64__) || defined(__i386__)
     beta_ptr[0] = _mm_insert_epi16(beta_ptr[0],beta0_16,7);
     beta_ptr[1] = _mm_insert_epi16(beta_ptr[1],beta1_16,7);
@@ -701,26 +668,23 @@ void compute_beta16(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sh
     beta_ptr[6] = vsetq_lane_s16(beta6_16,beta_ptr[6],7);
     beta_ptr[7] = vsetq_lane_s16(beta7_16,beta_ptr[7],7);
 #endif
-
 #ifdef DEBUG_LOGMAP
-      fprintf(fdsse4,"beta init (after insert) \n");
-      print_shorts("b0",(int16_t*)&beta_ptr[0]);
-      print_shorts("b1",(int16_t*)&beta_ptr[1]);
-      print_shorts("b2",(int16_t*)&beta_ptr[2]);
-      print_shorts("b3",(int16_t*)&beta_ptr[3]);
-      print_shorts("b4",(int16_t*)&beta_ptr[4]);
-      print_shorts("b5",(int16_t*)&beta_ptr[5]);
-      print_shorts("b6",(int16_t*)&beta_ptr[6]);
-      print_shorts("b7",(int16_t*)&beta_ptr[7]);
+    fprintf(fdsse4,"beta init (after insert) \n");
+    print_shorts("b0",(int16_t *)&beta_ptr[0]);
+    print_shorts("b1",(int16_t *)&beta_ptr[1]);
+    print_shorts("b2",(int16_t *)&beta_ptr[2]);
+    print_shorts("b3",(int16_t *)&beta_ptr[3]);
+    print_shorts("b4",(int16_t *)&beta_ptr[4]);
+    print_shorts("b5",(int16_t *)&beta_ptr[5]);
+    print_shorts("b6",(int16_t *)&beta_ptr[6]);
+    print_shorts("b7",(int16_t *)&beta_ptr[7]);
 #endif
     int loopval=((rerun_flag==0)?0:((frame_length-L)>>3));
 
     for (k=(frame_length>>3)-1; k>=loopval; k--) {
 #if defined(__x86_64__) || defined(__i386__)
-      m11_128=((__m128i*)m_11)[k];
-      m10_128=((__m128i*)m_10)[k];
-
-
+      m11_128=((__m128i *)m_11)[k];
+      m10_128=((__m128i *)m_10)[k];
       //#ifndef __AVX2__
 #if 1
       m_b0 = _mm_adds_epi16(beta_ptr[4],m11_128);  //m11
@@ -731,8 +695,6 @@ void compute_beta16(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sh
       m_b5 = _mm_subs_epi16(beta_ptr[6],m10_128);  //m01
       m_b6 = _mm_subs_epi16(beta_ptr[7],m11_128);  //m00
       m_b7 = _mm_adds_epi16(beta_ptr[7],m11_128);  //m11
-
-
       new0 = _mm_subs_epi16(beta_ptr[0],m11_128);  //m00
       new1 = _mm_adds_epi16(beta_ptr[0],m11_128);  //m11
       new2 = _mm_adds_epi16(beta_ptr[1],m10_128);  //m10
@@ -741,16 +703,13 @@ void compute_beta16(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sh
       new5 = _mm_adds_epi16(beta_ptr[2],m10_128);  //m10
       new6 = _mm_adds_epi16(beta_ptr[3],m11_128);  //m11
       new7 = _mm_subs_epi16(beta_ptr[3],m11_128);  //m00
-
 #else
-      b01=_mm256_load_si256(&((_m256i*)beta_ptr)[0]);
-      b23=_mm256_load_si256(&((_m256i*)beta_ptr)[1]);
-      b45=_mm256_load_si256(&((_m256i*)beta_ptr)[2]);
-      b67=_mm256_load_si256(&((_m256i*)beta_ptr)[3]);
+      b01=_mm256_load_si256(&((_m256i *)beta_ptr)[0]);
+      b23=_mm256_load_si256(&((_m256i *)beta_ptr)[1]);
+      b45=_mm256_load_si256(&((_m256i *)beta_ptr)[2]);
+      b67=_mm256_load_si256(&((_m256i *)beta_ptr)[3]);
       m11m10_256 = _mm256_insertf128_si256(m11m10_256,m11_128,0);
       m11m10_256 = _mm256_insertf128_si256(m11m10_256,m10_128,1);
-
-
       m_b02 = _mm256_adds_epi16(b45,m11m10_256); //negative m10
       m_b13 = _mm256_subs_epi16(b45,m11m10_256); //negative m10
       m_b64 = _mm256_subs_epi16(b67,m11m10_256); //negative m10
@@ -760,9 +719,7 @@ void compute_beta16(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sh
       new64 = _mm256_adds_epi16(b23,m11m10_256);  //negative m10
       new75 = _mm256_subs_epi16(b24,m11m10_256);  //negative m10
 #endif
-
       beta_ptr-=8;
-
       //#ifndef __AVX2__
 #if 1
       beta_ptr[0] = _mm_max_epi16(m_b0,new0);
@@ -773,7 +730,6 @@ void compute_beta16(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sh
       beta_ptr[5] = _mm_max_epi16(m_b5,new5);
       beta_ptr[6] = _mm_max_epi16(m_b6,new6);
       beta_ptr[7] = _mm_max_epi16(m_b7,new7);
-
       beta_max = _mm_max_epi16(beta_ptr[0],beta_ptr[1]);
       beta_max = _mm_max_epi16(beta_max   ,beta_ptr[2]);
       beta_max = _mm_max_epi16(beta_max   ,beta_ptr[3]);
@@ -781,7 +737,6 @@ void compute_beta16(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sh
       beta_max = _mm_max_epi16(beta_max   ,beta_ptr[5]);
       beta_max = _mm_max_epi16(beta_max   ,beta_ptr[6]);
       beta_max = _mm_max_epi16(beta_max   ,beta_ptr[7]);
-
       beta_ptr[0] = _mm_subs_epi16(beta_ptr[0],beta_max);
       beta_ptr[1] = _mm_subs_epi16(beta_ptr[1],beta_max);
       beta_ptr[2] = _mm_subs_epi16(beta_ptr[2],beta_max);
@@ -795,26 +750,22 @@ void compute_beta16(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sh
       b13   = _mm256_max_epi16(m_b13,new13);
       b64   = _mm256_max_epi16(m_b64,new64);
       b75   = _mm256_max_epi16(m_b75,new75);
-      
       beta_max = _mm256_max_epi16(b02,b13);
       beta_max = _mm256_max_epi16(beta_max,b64);
       beta_max = _mm256_max_epi16(beta_max,b75);
       beta_max = _mm256_max_epi16(beta_max,_mm256_permutevar8x32_epi32(betaa_max,_mm256_set_epi32(3,2,1,0,7,6,5,4)));
-
       b02   = _mm256_subs_epi16(b02,beta_max);
       b13   = _mm256_subs_epi16(b13,beta_max);
       b64   = _mm256_subs_epi16(b64,beta_max);
       b75   = _mm256_subs_epi16(b75,beta_max);
-
-      ((_m256i*)beta_ptr)[0]) = _mm256_permute2x128_si256(b02,b13,0x02);  //b01
-      ((_m256i*)beta_ptr)[1]) = _mm256_permute2x128_si256(b02,b13,0x31);  //b23
-      ((_m256i*)beta_ptr)[2]) = _mm256_permute2x128_si256(b64,b75,0x13);  //b45
-      ((_m256i*)beta_ptr)[3]) = _mm256_permute2x128_si256(b64,b75,0x20);  //b67
+      ((_m256i *)beta_ptr)[0]) = _mm256_permute2x128_si256(b02,b13,0x02); //b01
+      ((_m256i *)beta_ptr)[1]) = _mm256_permute2x128_si256(b02,b13,0x31); //b23
+      ((_m256i *)beta_ptr)[2]) = _mm256_permute2x128_si256(b64,b75,0x13); //b45
+      ((_m256i *)beta_ptr)[3]) = _mm256_permute2x128_si256(b64,b75,0x20); //b67
 #endif
-
 #elif defined(__arm__)
-      m11_128=((int16x8_t*)m_11)[k];
-      m10_128=((int16x8_t*)m_10)[k];
+      m11_128=((int16x8_t *)m_11)[k];
+      m10_128=((int16x8_t *)m_10)[k];
       m_b0 = vqaddq_s16(beta_ptr[4],m11_128);  //m11
       m_b1 = vqsubq_s16(beta_ptr[4],m11_128);  //m00
       m_b2 = vqsubq_s16(beta_ptr[5],m10_128);  //m01
@@ -823,7 +774,6 @@ void compute_beta16(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sh
       m_b5 = vqsubq_s16(beta_ptr[6],m10_128);  //m01
       m_b6 = vqsubq_s16(beta_ptr[7],m11_128);  //m00
       m_b7 = vqaddq_s16(beta_ptr[7],m11_128);  //m11
-
       new0 = vqsubq_s16(beta_ptr[0],m11_128);  //m00
       new1 = vqaddq_s16(beta_ptr[0],m11_128);  //m11
       new2 = vqaddq_s16(beta_ptr[1],m10_128);  //m10
@@ -832,9 +782,7 @@ void compute_beta16(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sh
       new5 = vqaddq_s16(beta_ptr[2],m10_128);  //m10
       new6 = vqaddq_s16(beta_ptr[3],m11_128);  //m11
       new7 = vqsubq_s16(beta_ptr[3],m11_128);  //m00
-
       beta_ptr-=8;
-
       beta_ptr[0] = vmaxq_s16(m_b0,new0);
       beta_ptr[1] = vmaxq_s16(m_b1,new1);
       beta_ptr[2] = vmaxq_s16(m_b2,new2);
@@ -843,7 +791,6 @@ void compute_beta16(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sh
       beta_ptr[5] = vmaxq_s16(m_b5,new5);
       beta_ptr[6] = vmaxq_s16(m_b6,new6);
       beta_ptr[7] = vmaxq_s16(m_b7,new7);
-
       beta_max = vmaxq_s16(beta_ptr[0],beta_ptr[1]);
       beta_max = vmaxq_s16(beta_max   ,beta_ptr[2]);
       beta_max = vmaxq_s16(beta_max   ,beta_ptr[3]);
@@ -851,7 +798,6 @@ void compute_beta16(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sh
       beta_max = vmaxq_s16(beta_max   ,beta_ptr[5]);
       beta_max = vmaxq_s16(beta_max   ,beta_ptr[6]);
       beta_max = vmaxq_s16(beta_max   ,beta_ptr[7]);
-
       beta_ptr[0] = vqsubq_s16(beta_ptr[0],beta_max);
       beta_ptr[1] = vqsubq_s16(beta_ptr[1],beta_max);
       beta_ptr[2] = vqsubq_s16(beta_ptr[2],beta_max);
@@ -861,20 +807,18 @@ void compute_beta16(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sh
       beta_ptr[6] = vqsubq_s16(beta_ptr[6],beta_max);
       beta_ptr[7] = vqsubq_s16(beta_ptr[7],beta_max);
 #endif
-
 #ifdef DEBUG_LOGMAP
       fprintf(fdsse4,"Loop index %d, mb\n",k);
       fprintf(fdsse4,"beta init (after max)\n");
-      print_shorts("b0",(int16_t*)&beta_ptr[0]);
-      print_shorts("b1",(int16_t*)&beta_ptr[1]);
-      print_shorts("b2",(int16_t*)&beta_ptr[2]);
-      print_shorts("b3",(int16_t*)&beta_ptr[3]);
-      print_shorts("b4",(int16_t*)&beta_ptr[4]);
-      print_shorts("b5",(int16_t*)&beta_ptr[5]);
-      print_shorts("b6",(int16_t*)&beta_ptr[6]);
-      print_shorts("b7",(int16_t*)&beta_ptr[7]);
+      print_shorts("b0",(int16_t *)&beta_ptr[0]);
+      print_shorts("b1",(int16_t *)&beta_ptr[1]);
+      print_shorts("b2",(int16_t *)&beta_ptr[2]);
+      print_shorts("b3",(int16_t *)&beta_ptr[3]);
+      print_shorts("b4",(int16_t *)&beta_ptr[4]);
+      print_shorts("b5",(int16_t *)&beta_ptr[5]);
+      print_shorts("b6",(int16_t *)&beta_ptr[6]);
+      print_shorts("b7",(int16_t *)&beta_ptr[7]);
 #endif
-
     }
 
     if (rerun_flag==1)
@@ -882,8 +826,7 @@ void compute_beta16(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sh
   }
 }
 
-void compute_ext16(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,llr_t* ext, llr_t* systematic,unsigned short frame_length)
-{
+void compute_ext16(llr_t *alpha,llr_t *beta,llr_t *m_11,llr_t *m_10,llr_t *ext, llr_t *systematic,unsigned short frame_length) {
 #if defined(__x86_64__) || defined(__i386__)
   __m128i *alpha128=(__m128i *)alpha;
   __m128i *beta128=(__m128i *)beta;
@@ -903,28 +846,21 @@ void compute_ext16(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,llr_t* ext,
   int16x8_t m10_1,m10_2,m10_3,m10_4;
   int16x8_t m11_1,m11_2,m11_3,m11_4;
 #endif
-
   int k;
-
   //
   // LLR computation, 8 consequtive bits per loop
   //
-
 #ifdef DEBUG_LOGMAP
   fprintf(fdsse4,"compute_ext (sse_16bit), %p, %p, %p, %p, %p, %p ,framelength %d\n",alpha,beta,m_11,m_10,ext,systematic,frame_length);
 #endif
-
   alpha_ptr = alpha128;
   beta_ptr = &beta128[8];
 
-
   for (k=0; k<(frame_length>>3); k++) {
-
 #if defined(__x86_64__) || defined(__i386__)
-    m11_128        = (__m128i*)&m_11[k<<3];
-    m10_128        = (__m128i*)&m_10[k<<3];
-    ext_128        = (__m128i*)&ext[k<<3];
-
+    m11_128        = (__m128i *)&m_11[k<<3];
+    m10_128        = (__m128i *)&m_10[k<<3];
+    ext_128        = (__m128i *)&ext[k<<3];
     /*
       fprintf(fdsse4,"EXT %03d\n",k);
       print_shorts("a0:",&alpha_ptr[0]);
@@ -944,7 +880,6 @@ void compute_ext16(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,llr_t* ext,
       print_shorts("b6:",&beta_ptr[6]);
       print_shorts("b7:",&beta_ptr[7]);
     */
-
     //#ifndef __AVX2__
 #if 1
     m00_4 = _mm_adds_epi16(alpha_ptr[7],beta_ptr[3]); //ALPHA_BETA_4m00;
@@ -964,31 +899,23 @@ void compute_ext16(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,llr_t* ext,
     m10_1 = _mm_adds_epi16(alpha_ptr[2],beta_ptr[1]); //ALPHA_BETA_1m10;
     m01_1 = _mm_adds_epi16(alpha_ptr[2],beta_ptr[5]); //ALPHA_BETA_1m01;
 #else
-
-
     m00_1 = _mm_adds_epi16(alpha_ptr[0],beta_ptr[0]); //ALPHA_BETA_1m00;
     m10_1 = _mm_adds_epi16(alpha_ptr[2],beta_ptr[1]); //ALPHA_BETA_1m10;
     m11_1 = _mm_adds_epi16(alpha_ptr[0],beta_ptr[4]); //ALPHA_BETA_1m11;
     m01_1 = _mm_adds_epi16(alpha_ptr[2],beta_ptr[5]); //ALPHA_BETA_1m01;
-
     m11_2 = _mm_adds_epi16(alpha_ptr[1],beta_ptr[0]); //ALPHA_BETA_2m11;
     m01_2 = _mm_adds_epi16(alpha_ptr[3],beta_ptr[1]); //ALPHA_BETA_2m01;
     m00_2 = _mm_adds_epi16(alpha_ptr[1],beta_ptr[4]); //ALPHA_BETA_2m00;
     m10_2 = _mm_adds_epi16(alpha_ptr[3],beta_ptr[5]); //ALPHA_BETA_2m10;
-
     m11_3 = _mm_adds_epi16(alpha_ptr[6],beta_ptr[3]); //ALPHA_BETA_3m11;
     m01_3 = _mm_adds_epi16(alpha_ptr[4],beta_ptr[2]); //ALPHA_BETA_3m01;
     m00_3 = _mm_adds_epi16(alpha_ptr[6],beta_ptr[7]); //ALPHA_BETA_3m00;
     m10_3 = _mm_adds_epi16(alpha_ptr[4],beta_ptr[6]); //ALPHA_BETA_3m10;
-
     m00_4 = _mm_adds_epi16(alpha_ptr[7],beta_ptr[3]); //ALPHA_BETA_4m00;
     m10_4 = _mm_adds_epi16(alpha_ptr[5],beta_ptr[2]); //ALPHA_BETA_4m10;
     m11_4 = _mm_adds_epi16(alpha_ptr[7],beta_ptr[7]); //ALPHA_BETA_4m11;
     m01_4 = _mm_adds_epi16(alpha_ptr[5],beta_ptr[6]); //ALPHA_BETA_4m01;
-
-
 #endif
-
     /*
       print_shorts("m11_1:",&m11_1);
       print_shorts("m11_2:",&m11_2);
@@ -1019,36 +946,30 @@ void compute_ext16(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,llr_t* ext,
     m11_1 = _mm_max_epi16(m11_1,m11_2);
     m11_1 = _mm_max_epi16(m11_1,m11_3);
     m11_1 = _mm_max_epi16(m11_1,m11_4);
-
     //      print_shorts("m11_1:",&m11_1);
-
     m01_1 = _mm_subs_epi16(m01_1,*m10_128);
     m00_1 = _mm_subs_epi16(m00_1,*m11_128);
     m10_1 = _mm_adds_epi16(m10_1,*m10_128);
     m11_1 = _mm_adds_epi16(m11_1,*m11_128);
-
     //      print_shorts("m10_1:",&m10_1);
     //      print_shorts("m11_1:",&m11_1);
     m01_1 = _mm_max_epi16(m01_1,m00_1);
     m10_1 = _mm_max_epi16(m10_1,m11_1);
     //      print_shorts("m01_1:",&m01_1);
     //      print_shorts("m10_1:",&m10_1);
-
     *ext_128 = _mm_subs_epi16(m10_1,m01_1);
 #ifdef DEBUG_LOGMAP
     fprintf(fdsse4,"ext %p\n",ext_128);
-    print_shorts("ext:",(int16_t*)ext_128);
-    print_shorts("m11:",(int16_t*)m11_128);
-    print_shorts("m10:",(int16_t*)m10_128);
-    print_shorts("m10_1:",(int16_t*)&m10_1);
-    print_shorts("m01_1:",(int16_t*)&m01_1);
+    print_shorts("ext:",(int16_t *)ext_128);
+    print_shorts("m11:",(int16_t *)m11_128);
+    print_shorts("m10:",(int16_t *)m10_128);
+    print_shorts("m10_1:",(int16_t *)&m10_1);
+    print_shorts("m01_1:",(int16_t *)&m01_1);
 #endif
-
 #elif defined(__arm__)
-    m11_128        = (int16x8_t*)&m_11[k<<3];
-    m10_128        = (int16x8_t*)&m_10[k<<3];
-    ext_128        = (int16x8_t*)&ext[k<<3];
-
+    m11_128        = (int16x8_t *)&m_11[k<<3];
+    m10_128        = (int16x8_t *)&m_10[k<<3];
+    ext_128        = (int16x8_t *)&ext[k<<3];
     m00_4 = vqaddq_s16(alpha_ptr[7],beta_ptr[3]); //ALPHA_BETA_4m00;
     m11_4 = vqaddq_s16(alpha_ptr[7],beta_ptr[7]); //ALPHA_BETA_4m11;
     m00_3 = vqaddq_s16(alpha_ptr[6],beta_ptr[7]); //ALPHA_BETA_3m00;
@@ -1065,7 +986,6 @@ void compute_ext16(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,llr_t* ext,
     m10_2 = vqaddq_s16(alpha_ptr[3],beta_ptr[5]); //ALPHA_BETA_2m10;
     m10_1 = vqaddq_s16(alpha_ptr[2],beta_ptr[1]); //ALPHA_BETA_1m10;
     m01_1 = vqaddq_s16(alpha_ptr[2],beta_ptr[5]); //ALPHA_BETA_1m01;
-
     m01_1 = vmaxq_s16(m01_1,m01_2);
     m01_1 = vmaxq_s16(m01_1,m01_3);
     m01_1 = vmaxq_s16(m01_1,m01_4);
@@ -1078,18 +998,12 @@ void compute_ext16(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,llr_t* ext,
     m11_1 = vmaxq_s16(m11_1,m11_2);
     m11_1 = vmaxq_s16(m11_1,m11_3);
     m11_1 = vmaxq_s16(m11_1,m11_4);
-
-
     m01_1 = vqsubq_s16(m01_1,*m10_128);
     m00_1 = vqsubq_s16(m00_1,*m11_128);
     m10_1 = vqaddq_s16(m10_1,*m10_128);
     m11_1 = vqaddq_s16(m11_1,*m11_128);
-
-
     m01_1 = vmaxq_s16(m01_1,m00_1);
     m10_1 = vmaxq_s16(m10_1,m11_1);
-
-
     *ext_128 = vqsubq_s16(m10_1,m01_1);
 #endif
     alpha_ptr+=8;
@@ -1102,8 +1016,7 @@ void compute_ext16(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,llr_t* ext,
 //int pi2[n],pi3[n+8],pi5[n+8],pi4[n+8],pi6[n+8],
 int *pi2tab16[188],*pi5tab16[188],*pi4tab16[188],*pi6tab16[188];
 
-void free_td16(void)
-{
+void free_td16(void) {
   int ind;
 
   for (ind=0; ind<188; ind++) {
@@ -1114,14 +1027,11 @@ void free_td16(void)
   }
 }
 
-void init_td16(void)
-{
-
+void init_td16(void) {
   int ind,i,i2,i3,j,n,pi,pi3;
-  short * base_interleaver;
+  short *base_interleaver;
 
   for (ind=0; ind<188; ind++) {
-
     n = f1f2mat[ind].nb_bits;
     base_interleaver=il_tb+f1f2mat[ind].beg_index;
 #ifdef MEX
@@ -1141,10 +1051,8 @@ void init_td16(void)
       j=i2;
 
       for (i3=0; i3<(n>>3); i3++,i++,j+=8) {
-
         //    if (j>=n)
         //      j-=(n-1);
-
         pi2tab16[ind][i]  = j;
         //    fprintf(fdsse4,"pi2[%d] = %d\n",i,j);
       }
@@ -1157,71 +1065,59 @@ void init_td16(void)
       pi5tab16[ind][pi3] = pi2tab16[ind][i];
       pi6tab16[ind][pi] = pi2tab16[ind][i];
     }
-
   }
 }
 
 uint8_t phy_threegpplte_turbo_decoder16(int16_t *y,
-                               int16_t *y2,
-                               uint8_t *decoded_bytes,
-                               uint8_t *decoded_bytes2,
-                               uint16_t n,
-                               uint8_t max_iterations,
-                               uint8_t crc_type,
-                               uint8_t F,
-                               time_stats_t *init_stats,
-                               time_stats_t *alpha_stats,
-                               time_stats_t *beta_stats,
-                               time_stats_t *gamma_stats,
-                               time_stats_t *ext_stats,
-                               time_stats_t *intl1_stats,
-                               time_stats_t *intl2_stats) {
-
+                                        int16_t *y2,
+                                        uint8_t *decoded_bytes,
+                                        uint8_t *decoded_bytes2,
+                                        uint16_t n,
+                                        uint8_t max_iterations,
+                                        uint8_t crc_type,
+                                        uint8_t F,
+                                        time_stats_t *init_stats,
+                                        time_stats_t *alpha_stats,
+                                        time_stats_t *beta_stats,
+                                        time_stats_t *gamma_stats,
+                                        time_stats_t *ext_stats,
+                                        time_stats_t *intl1_stats,
+                                        time_stats_t *intl2_stats) {
   /*  y is a pointer to the input
       decoded_bytes is a pointer to the decoded output
       n is the size in bits of the coded block, with the tail */
-
-
   llr_t systematic0[n+16] __attribute__ ((aligned(32)));
   llr_t systematic1[n+16] __attribute__ ((aligned(32)));
   llr_t systematic2[n+16] __attribute__ ((aligned(32)));
   llr_t yparity1[n+16] __attribute__ ((aligned(32)));
   llr_t yparity2[n+16] __attribute__ ((aligned(32)));
-
   llr_t ext[n+128] __attribute__((aligned(32)));
   llr_t ext2[n+128] __attribute__((aligned(32)));
-
   llr_t alpha[(n+16)*8] __attribute__ ((aligned(32)));
   llr_t beta[(n+16)*8] __attribute__ ((aligned(32)));
   llr_t m11[n+32] __attribute__ ((aligned(32)));
   llr_t m10[n+32] __attribute__ ((aligned(32)));
-
-
   int *pi2_p,*pi4_p,*pi5_p,*pi6_p;
   llr_t *s,*s1,*s2,*yp1,*yp2,*yp;
   unsigned int i,j,iind;//,pi;
   unsigned char iteration_cnt=0;
   unsigned int crc,oldcrc,crc_len;
   uint8_t temp;
-
 #if defined(__x86_64__) || defined(__i386__)
   __m128i *yp128;
   __m128i tmp, zeros=_mm_setzero_si128();
   __m128i tmpe;
 #elif defined(__arm__)
   int16x8_t *yp128;
-//  int16x8_t tmp128[(n+8)>>3];
+  //  int16x8_t tmp128[(n+8)>>3];
   int16x8_t tmp, zeros=vdupq_n_s16(0);
-  const uint16_t __attribute__ ((aligned (16))) _Powers[8]= 
-    { 1, 2, 4, 8, 16, 32, 64, 128};
+  const uint16_t __attribute__ ((aligned (16))) _Powers[8]=
+  { 1, 2, 4, 8, 16, 32, 64, 128};
   uint16x8_t Powers= vld1q_u16(_Powers);
 #endif
   int offset8_flag=0;
-
 #ifdef DEBUG_LOGMAP
   fdsse4 = fopen("dump_sse4.txt","w");
-
-
   printf("tc sse4_16 (y) %p\n",y);
 #endif
 
@@ -1230,12 +1126,8 @@ uint8_t phy_threegpplte_turbo_decoder16(int16_t *y,
     return 255;
   }
 
-
-
   start_meas(init_stats);
 
-
-
   for (iind=0; iind < 188 && f1f2mat[iind].nb_bits != n; iind++);
 
   if ( iind == 188 ) {
@@ -1244,50 +1136,41 @@ uint8_t phy_threegpplte_turbo_decoder16(int16_t *y,
   }
 
   switch (crc_type) {
-  case CRC24_A:
-  case CRC24_B:
-    crc_len=3;
-    break;
+    case CRC24_A:
+    case CRC24_B:
+      crc_len=3;
+      break;
 
-  case CRC16:
-    crc_len=2;
-    break;
+    case CRC16:
+      crc_len=2;
+      break;
 
-  case CRC8:
-    crc_len=1;
-    break;
+    case CRC8:
+      crc_len=1;
+      break;
 
-  default:
-    crc_len=3;
+    default:
+      crc_len=3;
   }
 
 #if defined(__x86_64__) || defined(__i386__)
-  yp128 = (__m128i*)y;
+  yp128 = (__m128i *)y;
 #elif defined(__arm__)
-  yp128 = (int16x8_t*)y;
+  yp128 = (int16x8_t *)y;
 #endif
-
-
-
-
   s = systematic0;
   s1 = systematic1;
   s2 = systematic2;
   yp1 = yparity1;
   yp2 = yparity2;
 
-
-
   for (i=0; i<n; i+=8) {
     pi2_p = &pi2tab16[iind][i];
-
     j=pi2_p[0];
-
 #if defined(__x86_64__) || defined(__i386__)
     tmpe = _mm_load_si128(yp128);
     //    fprintf(fdsse4,"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);
@@ -1295,7 +1178,6 @@ uint8_t phy_threegpplte_turbo_decoder16(int16_t *y,
     fprintf(fdsse4,"init0: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",j,s[j],yp1[j],yp2[j]);
 #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);
@@ -1303,7 +1185,6 @@ uint8_t phy_threegpplte_turbo_decoder16(int16_t *y,
     fprintf(fdsse4,"init1: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",j,s[j],yp1[j],yp2[j]);
 #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]);
@@ -1312,7 +1193,6 @@ uint8_t phy_threegpplte_turbo_decoder16(int16_t *y,
     fprintf(fdsse4,"init2: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",j,s[j],yp1[j],yp2[j]);
 #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);
@@ -1320,7 +1200,6 @@ uint8_t phy_threegpplte_turbo_decoder16(int16_t *y,
     fprintf(fdsse4,"init3: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",j,s[j],yp1[j],yp2[j]);
 #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);
@@ -1328,7 +1207,6 @@ uint8_t phy_threegpplte_turbo_decoder16(int16_t *y,
     fprintf(fdsse4,"init4: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",j,s[j],yp1[j],yp2[j]);
 #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);
@@ -1336,9 +1214,7 @@ uint8_t phy_threegpplte_turbo_decoder16(int16_t *y,
 #ifdef DEBUG_LOGMAP
     fprintf(fdsse4,"init5: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",j,s[j],yp1[j],yp2[j]);
 #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);
@@ -1346,60 +1222,49 @@ uint8_t phy_threegpplte_turbo_decoder16(int16_t *y,
     fprintf(fdsse4,"init6: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",j,s[j],yp1[j],yp2[j]);
 #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);
 #ifdef DEBUG_LOGMAP
     fprintf(fdsse4,"init7: j %d, s[j] %d yp1[j] %d yp2[j] %d\n",j,s[j],yp1[j],yp2[j]);
 #endif
-
 #elif defined(__arm__)
     s[j]   = vgetq_lane_s16(yp128[0],0);
     yp1[j] = vgetq_lane_s16(yp128[0],1);
     yp2[j] = vgetq_lane_s16(yp128[0],2);
-
     j=pi2_p[1];
     s[j]   = vgetq_lane_s16(yp128[0],3);
     yp1[j] = vgetq_lane_s16(yp128[0],4);
     yp2[j] = vgetq_lane_s16(yp128[0],5);
-
     j=pi2_p[2];
     s[j]   = vgetq_lane_s16(yp128[0],6);
     yp1[j] = vgetq_lane_s16(yp128[0],7);
     yp2[j] = vgetq_lane_s16(yp128[1],0);
-
     j=pi2_p[3];
     s[j]   = vgetq_lane_s16(yp128[1],1);
     yp1[j] = vgetq_lane_s16(yp128[1],2);
     yp2[j] = vgetq_lane_s16(yp128[1],3);
-
     j=pi2_p[4];
     s[j]   = vgetq_lane_s16(yp128[1],4);
     yp1[j] = vgetq_lane_s16(yp128[1],5);
     yp2[j] = vgetq_lane_s16(yp128[1],6);
-
     j=pi2_p[5];
     s[j]   = vgetq_lane_s16(yp128[1],7);
     yp1[j] = vgetq_lane_s16(yp128[2],0);
     yp2[j] = vgetq_lane_s16(yp128[2],1);
-
     j=pi2_p[6];
     s[j]   = vgetq_lane_s16(yp128[2],2);
     yp1[j] = vgetq_lane_s16(yp128[2],3);
     yp2[j] = vgetq_lane_s16(yp128[2],4);
-
     j=pi2_p[7];
     s[j]   = vgetq_lane_s16(yp128[2],5);
     yp1[j] = vgetq_lane_s16(yp128[2],6);
     yp2[j] = vgetq_lane_s16(yp128[2],7);
 #endif
     yp128+=3;
-
   }
 
-  yp=(llr_t*)yp128;
-
+  yp=(llr_t *)yp128;
 
   // Termination
   for (i=n; i<n+3; i++) {
@@ -1410,7 +1275,7 @@ uint8_t phy_threegpplte_turbo_decoder16(int16_t *y,
     yp1[i] = *yp;
     yp++;
 #ifdef DEBUG_LOGMAP
-    fprintf(fdsse4,"Term 1 (%d): %d %d\n",i,s[i],yp1[i]);
+    fprintf(fdsse4,"Term 1 (%u): %d %d\n",i,s[i],yp1[i]);
 #endif //DEBUG_LOGMAP
   }
 
@@ -1422,32 +1287,25 @@ uint8_t phy_threegpplte_turbo_decoder16(int16_t *y,
     yp2[i-8] = *yp;
     yp++;
 #ifdef DEBUG_LOGMAP
-    fprintf(fdsse4,"Term 2 (%d): %d %d\n",i-3,s[i],yp2[i-8]);
+    fprintf(fdsse4,"Term 2 (%u): %d %d\n",i-3,s[i],yp2[i-8]);
 #endif //DEBUG_LOGMAP
   }
 
 #ifdef DEBUG_LOGMAP
   fprintf(fdsse4,"\n");
 #endif //DEBUG_LOGMAP
-
   stop_meas(init_stats);
-
   // do log_map from first parity bit
-
   log_map16(systematic0,yparity1,m11,m10,alpha,beta,ext,n,0,F,offset8_flag,alpha_stats,beta_stats,gamma_stats,ext_stats);
 
   while (iteration_cnt++ < max_iterations) {
-
 #ifdef DEBUG_LOGMAP
     fprintf(fdsse4,"\n*******************ITERATION %d (n %d), ext %p\n\n",iteration_cnt,n,ext);
 #endif //DEBUG_LOGMAP
-
     start_meas(intl1_stats);
-
     pi4_p=pi4tab16[iind];
 
     for (i=0; i<(n>>3); i++) { // steady-state portion
-
 #if defined(__x86_64__) || defined(__i386__)
       ((__m128i *)systematic2)[i]=_mm_insert_epi16(((__m128i *)systematic2)[i],ext[*pi4_p++],0);
       ((__m128i *)systematic2)[i]=_mm_insert_epi16(((__m128i *)systematic2)[i],ext[*pi4_p++],1);
@@ -1457,30 +1315,24 @@ uint8_t phy_threegpplte_turbo_decoder16(int16_t *y,
       ((__m128i *)systematic2)[i]=_mm_insert_epi16(((__m128i *)systematic2)[i],ext[*pi4_p++],5);
       ((__m128i *)systematic2)[i]=_mm_insert_epi16(((__m128i *)systematic2)[i],ext[*pi4_p++],6);
       ((__m128i *)systematic2)[i]=_mm_insert_epi16(((__m128i *)systematic2)[i],ext[*pi4_p++],7);
-
 #elif defined(__arm__)
-      ((int16x8_t*)systematic2)[i]=vsetq_lane_s16(ext[*pi4_p++],((int16x8_t*)systematic2)[i],0);
-      ((int16x8_t*)systematic2)[i]=vsetq_lane_s16(ext[*pi4_p++],((int16x8_t*)systematic2)[i],1);
-      ((int16x8_t*)systematic2)[i]=vsetq_lane_s16(ext[*pi4_p++],((int16x8_t*)systematic2)[i],2);
-      ((int16x8_t*)systematic2)[i]=vsetq_lane_s16(ext[*pi4_p++],((int16x8_t*)systematic2)[i],3);
-      ((int16x8_t*)systematic2)[i]=vsetq_lane_s16(ext[*pi4_p++],((int16x8_t*)systematic2)[i],4);
-      ((int16x8_t*)systematic2)[i]=vsetq_lane_s16(ext[*pi4_p++],((int16x8_t*)systematic2)[i],5);
-      ((int16x8_t*)systematic2)[i]=vsetq_lane_s16(ext[*pi4_p++],((int16x8_t*)systematic2)[i],6);
-      ((int16x8_t*)systematic2)[i]=vsetq_lane_s16(ext[*pi4_p++],((int16x8_t*)systematic2)[i],7);
+      ((int16x8_t *)systematic2)[i]=vsetq_lane_s16(ext[*pi4_p++],((int16x8_t *)systematic2)[i],0);
+      ((int16x8_t *)systematic2)[i]=vsetq_lane_s16(ext[*pi4_p++],((int16x8_t *)systematic2)[i],1);
+      ((int16x8_t *)systematic2)[i]=vsetq_lane_s16(ext[*pi4_p++],((int16x8_t *)systematic2)[i],2);
+      ((int16x8_t *)systematic2)[i]=vsetq_lane_s16(ext[*pi4_p++],((int16x8_t *)systematic2)[i],3);
+      ((int16x8_t *)systematic2)[i]=vsetq_lane_s16(ext[*pi4_p++],((int16x8_t *)systematic2)[i],4);
+      ((int16x8_t *)systematic2)[i]=vsetq_lane_s16(ext[*pi4_p++],((int16x8_t *)systematic2)[i],5);
+      ((int16x8_t *)systematic2)[i]=vsetq_lane_s16(ext[*pi4_p++],((int16x8_t *)systematic2)[i],6);
+      ((int16x8_t *)systematic2)[i]=vsetq_lane_s16(ext[*pi4_p++],((int16x8_t *)systematic2)[i],7);
 #endif
 #ifdef DEBUG_LOGMAP
-      print_shorts("syst2",(int16_t*)&((__m128i *)systematic2)[i]);
+      print_shorts("syst2",(int16_t *)&((__m128i *)systematic2)[i]);
 #endif
     }
 
     stop_meas(intl1_stats);
-
     // do log_map from second parity bit
-
     log_map16(systematic2,yparity2,m11,m10,alpha,beta,ext2,n,1,F,offset8_flag,alpha_stats,beta_stats,gamma_stats,ext_stats);
-
-
-
     pi5_p=pi5tab16[iind];
 
     for (i=0; i<(n>>3); i++) {
@@ -1493,20 +1345,20 @@ uint8_t phy_threegpplte_turbo_decoder16(int16_t *y,
       tmp=_mm_insert_epi16(tmp,ext2[*pi5_p++],5);
       tmp=_mm_insert_epi16(tmp,ext2[*pi5_p++],6);
       tmp=_mm_insert_epi16(tmp,ext2[*pi5_p++],7);
-      ((__m128i *)systematic1)[i] = _mm_adds_epi16(_mm_subs_epi16(tmp,((__m128i*)ext)[i]),((__m128i *)systematic0)[i]);
+      ((__m128i *)systematic1)[i] = _mm_adds_epi16(_mm_subs_epi16(tmp,((__m128i *)ext)[i]),((__m128i *)systematic0)[i]);
 #elif defined(__arm__)
-        tmp=vsetq_lane_s16(ext2[*pi5_p++],tmp,0);
-        tmp=vsetq_lane_s16(ext2[*pi5_p++],tmp,1);
-        tmp=vsetq_lane_s16(ext2[*pi5_p++],tmp,2);
-        tmp=vsetq_lane_s16(ext2[*pi5_p++],tmp,3);
-        tmp=vsetq_lane_s16(ext2[*pi5_p++],tmp,4);
-        tmp=vsetq_lane_s16(ext2[*pi5_p++],tmp,5);
-        tmp=vsetq_lane_s16(ext2[*pi5_p++],tmp,6);
-        tmp=vsetq_lane_s16(ext2[*pi5_p++],tmp,7);
-	((int16x8_t *)systematic1)[i] = vqaddq_s16(vqsubq_s16(tmp,((int16x8_t*)ext)[i]),((int16x8_t *)systematic0)[i]);
+      tmp=vsetq_lane_s16(ext2[*pi5_p++],tmp,0);
+      tmp=vsetq_lane_s16(ext2[*pi5_p++],tmp,1);
+      tmp=vsetq_lane_s16(ext2[*pi5_p++],tmp,2);
+      tmp=vsetq_lane_s16(ext2[*pi5_p++],tmp,3);
+      tmp=vsetq_lane_s16(ext2[*pi5_p++],tmp,4);
+      tmp=vsetq_lane_s16(ext2[*pi5_p++],tmp,5);
+      tmp=vsetq_lane_s16(ext2[*pi5_p++],tmp,6);
+      tmp=vsetq_lane_s16(ext2[*pi5_p++],tmp,7);
+      ((int16x8_t *)systematic1)[i] = vqaddq_s16(vqsubq_s16(tmp,((int16x8_t *)ext)[i]),((int16x8_t *)systematic0)[i]);
 #endif
 #ifdef DEBUG_LOGMAP
-	print_shorts("syst1",(int16_t*)&((__m128i *)systematic1)[i]);
+      print_shorts("syst1",(int16_t *)&((__m128i *)systematic1)[i]);
 #endif
     }
 
@@ -1516,16 +1368,16 @@ uint8_t phy_threegpplte_turbo_decoder16(int16_t *y,
 
       for (i=0; i<(n>>3); i++) {
 #if defined(__x86_64__) || defined(__i386__)
-        tmp=_mm_insert_epi16(tmp, ((llr_t*)ext2)[*pi6_p++],7);
-        tmp=_mm_insert_epi16(tmp, ((llr_t*)ext2)[*pi6_p++],6);
-        tmp=_mm_insert_epi16(tmp, ((llr_t*)ext2)[*pi6_p++],5);
-        tmp=_mm_insert_epi16(tmp, ((llr_t*)ext2)[*pi6_p++],4);
-        tmp=_mm_insert_epi16(tmp, ((llr_t*)ext2)[*pi6_p++],3);
-        tmp=_mm_insert_epi16(tmp, ((llr_t*)ext2)[*pi6_p++],2);
-        tmp=_mm_insert_epi16(tmp, ((llr_t*)ext2)[*pi6_p++],1);
-        tmp=_mm_insert_epi16(tmp, ((llr_t*)ext2)[*pi6_p++],0);
+        tmp=_mm_insert_epi16(tmp, ((llr_t *)ext2)[*pi6_p++],7);
+        tmp=_mm_insert_epi16(tmp, ((llr_t *)ext2)[*pi6_p++],6);
+        tmp=_mm_insert_epi16(tmp, ((llr_t *)ext2)[*pi6_p++],5);
+        tmp=_mm_insert_epi16(tmp, ((llr_t *)ext2)[*pi6_p++],4);
+        tmp=_mm_insert_epi16(tmp, ((llr_t *)ext2)[*pi6_p++],3);
+        tmp=_mm_insert_epi16(tmp, ((llr_t *)ext2)[*pi6_p++],2);
+        tmp=_mm_insert_epi16(tmp, ((llr_t *)ext2)[*pi6_p++],1);
+        tmp=_mm_insert_epi16(tmp, ((llr_t *)ext2)[*pi6_p++],0);
 #ifdef DEBUG_LOGMAP
-	print_shorts("tmp",(int16_t*)&tmp);
+        print_shorts("tmp",(int16_t *)&tmp);
 #endif
         tmp=_mm_cmpgt_epi8(_mm_packs_epi16(tmp,zeros),zeros);
         decoded_bytes[i]=(unsigned char)_mm_movemask_epi8(tmp);
@@ -1538,18 +1390,18 @@ uint8_t phy_threegpplte_turbo_decoder16(int16_t *y,
         tmp=vsetq_lane_s16(ext2[*pi6_p++],tmp,2);
         tmp=vsetq_lane_s16(ext2[*pi6_p++],tmp,1);
         tmp=vsetq_lane_s16(ext2[*pi6_p++],tmp,0);
-// This does:
-// [1 2 4 8 16 32 64 128] .* I(ext_i > 0) = 2.^[b0 b1 b2 b3 b4 b5 b6 b7], where bi =I(ext_i > 0)
-// [2^b0 + 2^b1 2^b2 + 2^b3 2^b4 + 2^b5 2^b6 + 2^b7]
-// [2^b0 + 2^b1 + 2^b2 + 2^b3   2^b4 + 2^b5 + 2^b6 + 2^b7] 
-// Mask64 = 2^b0 + 2^b1 + 2^b2 + 2^b3 + 2^b4 + 2^b5 + 2^b6 + 2^b7
-	uint64x2_t Mask   = vpaddlq_u32(vpaddlq_u16(vandq_u16(vcgtq_s16(tmp,zeros), Powers)));
+        // This does:
+        // [1 2 4 8 16 32 64 128] .* I(ext_i > 0) = 2.^[b0 b1 b2 b3 b4 b5 b6 b7], where bi =I(ext_i > 0)
+        // [2^b0 + 2^b1 2^b2 + 2^b3 2^b4 + 2^b5 2^b6 + 2^b7]
+        // [2^b0 + 2^b1 + 2^b2 + 2^b3   2^b4 + 2^b5 + 2^b6 + 2^b7]
+        // Mask64 = 2^b0 + 2^b1 + 2^b2 + 2^b3 + 2^b4 + 2^b5 + 2^b6 + 2^b7
+        uint64x2_t Mask   = vpaddlq_u32(vpaddlq_u16(vandq_u16(vcgtq_s16(tmp,zeros), Powers)));
         uint64x1_t Mask64 = vget_high_u64(Mask)+vget_low_u64(Mask);
         decoded_bytes[i] = (uint8_t)Mask64;
 #endif
 #ifdef DEBUG_LOGMAP
-	print_shorts("tmp",(int16_t*)&tmp);
-	fprintf(fdsse4,"decoded_bytes[%d] %x\n",i,decoded_bytes[i]);
+        print_shorts("tmp",(int16_t *)&tmp);
+        fprintf(fdsse4,"decoded_bytes[%u] %x\n",i,decoded_bytes[i]);
 #endif
       }
     }
@@ -1559,41 +1411,40 @@ uint8_t phy_threegpplte_turbo_decoder16(int16_t *y,
       oldcrc= *((unsigned int *)(&decoded_bytes[(n>>3)-crc_len]));
 
       switch (crc_type) {
-
-      case CRC24_A:
-        oldcrc&=0x00ffffff;
-        crc = crc24a(&decoded_bytes[F>>3],
-                     n-24-F)>>8;
-        temp=((uint8_t *)&crc)[2];
-        ((uint8_t *)&crc)[2] = ((uint8_t *)&crc)[0];
-        ((uint8_t *)&crc)[0] = temp;
-        break;
-
-      case CRC24_B:
-        oldcrc&=0x00ffffff;
-        crc = crc24b(decoded_bytes,
-                     n-24)>>8;
-        temp=((uint8_t *)&crc)[2];
-        ((uint8_t *)&crc)[2] = ((uint8_t *)&crc)[0];
-        ((uint8_t *)&crc)[0] = temp;
-        break;
-
-      case CRC16:
-        oldcrc&=0x0000ffff;
-        crc = crc16(decoded_bytes,
-                    n-16)>>16;
-        break;
-
-      case CRC8:
-        oldcrc&=0x000000ff;
-        crc = crc8(decoded_bytes,
-                   n-8)>>24;
-        break;
-
-      default:
-        printf("FATAL: 3gpplte_turbo_decoder_sse.c: Unknown CRC\n");
-        return(255);
-        break;
+        case CRC24_A:
+          oldcrc&=0x00ffffff;
+          crc = crc24a(&decoded_bytes[F>>3],
+                       n-24-F)>>8;
+          temp=((uint8_t *)&crc)[2];
+          ((uint8_t *)&crc)[2] = ((uint8_t *)&crc)[0];
+          ((uint8_t *)&crc)[0] = temp;
+          break;
+
+        case CRC24_B:
+          oldcrc&=0x00ffffff;
+          crc = crc24b(decoded_bytes,
+                       n-24)>>8;
+          temp=((uint8_t *)&crc)[2];
+          ((uint8_t *)&crc)[2] = ((uint8_t *)&crc)[0];
+          ((uint8_t *)&crc)[0] = temp;
+          break;
+
+        case CRC16:
+          oldcrc&=0x0000ffff;
+          crc = crc16(decoded_bytes,
+                      n-16)>>16;
+          break;
+
+        case CRC8:
+          oldcrc&=0x000000ff;
+          crc = crc8(decoded_bytes,
+                     n-8)>>24;
+          break;
+
+        default:
+          printf("FATAL: 3gpplte_turbo_decoder_sse.c: Unknown CRC\n");
+          return(255);
+          break;
       }
 
       stop_meas(intl2_stats);
@@ -1610,13 +1461,13 @@ uint8_t phy_threegpplte_turbo_decoder16(int16_t *y,
     if (iteration_cnt < max_iterations) {
       log_map16(systematic1,yparity1,m11,m10,alpha,beta,ext,n,0,F,offset8_flag,alpha_stats,beta_stats,gamma_stats,ext_stats);
 #if defined(__x86_64__) || defined(__i386__)
-      __m128i* ext_128=(__m128i*) ext;
-      __m128i* s1_128=(__m128i*) systematic1;
-      __m128i* s0_128=(__m128i*) systematic0;
+      __m128i *ext_128=(__m128i *) ext;
+      __m128i *s1_128=(__m128i *) systematic1;
+      __m128i *s0_128=(__m128i *) systematic0;
 #elif defined(__arm__)
-      int16x8_t* ext_128=(int16x8_t*) ext;
-      int16x8_t* s1_128=(int16x8_t*) systematic1;
-      int16x8_t* s0_128=(int16x8_t*) systematic0;
+      int16x8_t *ext_128=(int16x8_t *) ext;
+      int16x8_t *s1_128=(int16x8_t *) systematic1;
+      int16x8_t *s0_128=(int16x8_t *) systematic0;
 #endif
       int myloop=n>>3;
 
@@ -1630,13 +1481,11 @@ uint8_t phy_threegpplte_turbo_decoder16(int16_t *y,
       }
     }
   }
-	
-  //  fprintf(fdsse4,"crc %x, oldcrc %x\n",crc,oldcrc);
 
+  //  fprintf(fdsse4,"crc %x, oldcrc %x\n",crc,oldcrc);
 #ifdef DEBUG_LOGMAP
-      fclose(fdsse4);
+  fclose(fdsse4);
 #endif
-
 #if defined(__x86_64__) || defined(__i386__)
   _mm_empty();
   _m_empty();
diff --git a/openair1/PHY/CODING/3gpplte_turbo_decoder_sse_8bit.c b/openair1/PHY/CODING/3gpplte_turbo_decoder_sse_8bit.c
index 476e79cacb72289afb2dd17041f41523e49e876d..e1ca906b55baead972e59753fdc04816879a131a 100644
--- a/openair1/PHY/CODING/3gpplte_turbo_decoder_sse_8bit.c
+++ b/openair1/PHY/CODING/3gpplte_turbo_decoder_sse_8bit.c
@@ -39,39 +39,39 @@
 #include "PHY/sse_intrin.h"
 
 #ifndef TEST_DEBUG
-#include "PHY/defs_common.h"
-#include "PHY/CODING/coding_defs.h"
-#include "PHY/CODING/lte_interleaver_inline.h"
+  #include "PHY/defs_common.h"
+  #include "PHY/CODING/coding_defs.h"
+  #include "PHY/CODING/lte_interleaver_inline.h"
 #else
 
-#include "defs.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+  #include "defs.h"
+  #include <stdio.h>
+  #include <stdlib.h>
+  #include <string.h>
 #endif
 
 #ifdef MEX
-#include "mex.h"
+  #include "mex.h"
 #endif
 
 #include "common/ran_context.h"
 
 #define SHUFFLE16(a,b,c,d,e,f,g,h) _mm_set_epi8(h==-1?-1:h*2+1, \
-            h==-1?-1:h*2, \
-            g==-1?-1:g*2+1, \
-            g==-1?-1:g*2, \
-            f==-1?-1:f*2+1, \
-            f==-1?-1:f*2, \
-            e==-1?-1:e*2+1, \
-            e==-1?-1:e*2, \
-            d==-1?-1:d*2+1, \
-            d==-1?-1:d*2, \
-            c==-1?-1:c*2+1, \
-            c==-1?-1:c*2, \
-            b==-1?-1:b*2+1, \
-            b==-1?-1:b*2, \
-            a==-1?-1:a*2+1, \
-            a==-1?-1:a*2);
+    h==-1?-1:h*2, \
+    g==-1?-1:g*2+1, \
+    g==-1?-1:g*2, \
+    f==-1?-1:f*2+1, \
+    f==-1?-1:f*2, \
+    e==-1?-1:e*2+1, \
+    e==-1?-1:e*2, \
+    d==-1?-1:d*2+1, \
+    d==-1?-1:d*2, \
+    c==-1?-1:c*2+1, \
+    c==-1?-1:c*2, \
+    b==-1?-1:b*2+1, \
+    b==-1?-1:b*2, \
+    a==-1?-1:a*2+1, \
+    a==-1?-1:a*2);
 
 
 
@@ -86,32 +86,28 @@ typedef int8_t channel_t;
 #define MAX8 127
 
 
-void log_map8(llr_t* systematic,channel_t* y_parity, llr_t* m11, llr_t* m10, llr_t *alpha, llr_t *beta, llr_t* ext,unsigned short frame_length,unsigned char term_flag,unsigned char F,int offset8_flag,
+void log_map8(llr_t *systematic,channel_t *y_parity, llr_t *m11, llr_t *m10, llr_t *alpha, llr_t *beta, llr_t *ext,unsigned short frame_length,unsigned char term_flag,unsigned char F,int offset8_flag,
               time_stats_t *alpha_stats,time_stats_t *beta_stats,time_stats_t *gamma_stats,time_stats_t *ext_stats);
-void compute_gamma8(llr_t* m11,llr_t* m10,llr_t* systematic, channel_t* y_parity, unsigned short frame_length,unsigned char term_flag);
-void compute_alpha8(llr_t*alpha,llr_t *beta, llr_t* m11,llr_t* m10, unsigned short frame_length,unsigned char F);
-void compute_beta8(llr_t*alpha, llr_t* beta,llr_t* m11,llr_t* m10, unsigned short frame_length,unsigned char F,int offset8_flag);
-void compute_ext8(llr_t* alpha,llr_t* beta,llr_t* m11,llr_t* m10,llr_t* extrinsic, llr_t* ap, unsigned short frame_length);
-
-
-void print_bytes(char *s, int8_t *x)
-{
+void compute_gamma8(llr_t *m11,llr_t *m10,llr_t *systematic, channel_t *y_parity, unsigned short frame_length,unsigned char term_flag);
+void compute_alpha8(llr_t *alpha,llr_t *beta, llr_t *m11,llr_t *m10, unsigned short frame_length,unsigned char F);
+void compute_beta8(llr_t *alpha, llr_t *beta,llr_t *m11,llr_t *m10, unsigned short frame_length,unsigned char F,int offset8_flag);
+void compute_ext8(llr_t *alpha,llr_t *beta,llr_t *m11,llr_t *m10,llr_t *extrinsic, llr_t *ap, unsigned short frame_length);
 
 
+void print_bytes(char *s, int8_t *x) {
   printf("%s  : %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",s,
          x[0],x[1],x[2],x[3],x[4],x[5],x[6],x[7],
          x[8],x[9],x[10],x[11],x[12],x[13],x[14],x[15]);
-
 }
 
 
-void log_map8(llr_t* systematic,
-              channel_t* y_parity,
-              llr_t* m11,
-              llr_t* m10,
+void log_map8(llr_t *systematic,
+              channel_t *y_parity,
+              llr_t *m11,
+              llr_t *m10,
               llr_t *alpha,
               llr_t *beta,
-              llr_t* ext,
+              llr_t *ext,
               unsigned short frame_length,
               unsigned char term_flag,
               unsigned char F,
@@ -119,32 +115,38 @@ void log_map8(llr_t* systematic,
               time_stats_t *alpha_stats,
               time_stats_t *beta_stats,
               time_stats_t *gamma_stats,
-              time_stats_t *ext_stats)
-{
-
+              time_stats_t *ext_stats) {
 #ifdef DEBUG_LOGMAP
   printf("log_map, frame_length %d\n",frame_length);
 #endif
 
   if (gamma_stats) start_meas(gamma_stats) ;
+
   compute_gamma8(m11,m10,systematic,y_parity,frame_length,term_flag) ;
+
   if (gamma_stats) stop_meas(gamma_stats);
+
   if (alpha_stats) start_meas(alpha_stats) ;
+
   compute_alpha8(alpha,beta,m11,m10,frame_length,F)                  ;
+
   if (alpha_stats) stop_meas(alpha_stats);
+
   if (beta_stats) start_meas(beta_stats)  ;
+
   compute_beta8(alpha,beta,m11,m10,frame_length,F,offset8_flag)      ;
+
   if (beta_stats) stop_meas(beta_stats);
+
   if (ext_stats) start_meas(ext_stats)   ;
-  compute_ext8(alpha,beta,m11,m10,ext,systematic,frame_length)       ;
-  if (ext_stats) stop_meas(ext_stats);
 
+  compute_ext8(alpha,beta,m11,m10,ext,systematic,frame_length)       ;
 
+  if (ext_stats) stop_meas(ext_stats);
 }
 
-void compute_gamma8(llr_t* m11,llr_t* m10,llr_t* systematic,channel_t* y_parity,
-                    unsigned short frame_length,unsigned char term_flag)
-{
+void compute_gamma8(llr_t *m11,llr_t *m10,llr_t *systematic,channel_t *y_parity,
+                    unsigned short frame_length,unsigned char term_flag) {
   int k,K1;
 #if defined(__x86_64__)||defined(__i386__)
   __m128i *systematic128 = (__m128i *)systematic;
@@ -157,11 +159,9 @@ void compute_gamma8(llr_t* m11,llr_t* m10,llr_t* systematic,channel_t* y_parity,
   int8x16_t *m10_128        = (int8x16_t *)m10;
   int8x16_t *m11_128        = (int8x16_t *)m11;
 #endif
-
 #ifdef DEBUG_LOGMAP
   printf("compute_gamma, %p,%p,%p,%p,framelength %d\n",m11,m10,systematic,y_parity,frame_length);
 #endif
-
 #if defined(__x86_64__) || defined(__i386__)
   register __m128i sl,sh,ypl,yph; //K128=_mm_set1_epi8(-128);
 #endif
@@ -181,11 +181,9 @@ void compute_gamma8(llr_t* m11,llr_t* m10,llr_t* systematic,channel_t* y_parity,
     m11_128[k] = vhaddq_s8(systematic128[k],y_parity128[k]);
     m10_128[k] = vhsubq_s8(systematic128[k],y_parity128[k]);
 #endif
-
   }
 
   // Termination
-
 #if defined(__x86_64__) || defined(__i386__)
   sl  = _mm_cvtepi8_epi16(systematic128[k+term_flag]);
   sh = _mm_cvtepi8_epi16(_mm_srli_si128(systematic128[k],8));
@@ -199,15 +197,12 @@ void compute_gamma8(llr_t* m11,llr_t* m10,llr_t* systematic,channel_t* y_parity,
   m11_128[k] = vhaddq_s8(systematic128[k+term_flag],y_parity128[k]);
   m10_128[k] = vhsubq_s8(systematic128[k+term_flag],y_parity128[k]);
 #endif
-
 }
 
 #define L 16
 
-void compute_alpha8(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned short frame_length,unsigned char F)
-{
+void compute_alpha8(llr_t *alpha,llr_t *beta,llr_t *m_11,llr_t *m_10,unsigned short frame_length,unsigned char F) {
   int k,loopval,rerun_flag;
-
 #if defined(__x86_64__) || defined(__i386__)
   __m128i *alpha128=(__m128i *)alpha,*alpha_ptr;
   __m128i *m11p,*m10p;
@@ -223,7 +218,6 @@ void compute_alpha8(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned sh
 #endif
   // Set initial state: first colum is known
   // the other columns are unknown, so all states are set to same value
-
 #if defined(__x86_64__) || defined(__i386__)
   alpha128[0] = _mm_set_epi8(-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,0);
   alpha128[1] = _mm_set_epi8(-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2);
@@ -233,12 +227,11 @@ void compute_alpha8(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned sh
   alpha128[5] = _mm_set_epi8(-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2);
   alpha128[6] = _mm_set_epi8(-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2);
   alpha128[7] = _mm_set_epi8(-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2,-MAX8/2);
-  for (loopval=frame_length>>4, rerun_flag=0; rerun_flag<2; loopval=L, rerun_flag++) {
 
+  for (loopval=frame_length>>4, rerun_flag=0; rerun_flag<2; loopval=L, rerun_flag++) {
     alpha_ptr = &alpha128[0];
-
-    m11p = (__m128i*)m_11;
-    m10p = (__m128i*)m_10;
+    m11p = (__m128i *)m_11;
+    m10p = (__m128i *)m_10;
 
     for (k=0;  k<loopval;  k++) {
       m_b0 = _mm_adds_epi8(alpha_ptr[1],*m11p);  // m11
@@ -249,7 +242,6 @@ void compute_alpha8(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned sh
       m_b6 = _mm_subs_epi8(alpha_ptr[5],*m10p);  // m01=-m10
       m_b3 = _mm_subs_epi8(alpha_ptr[7],*m11p);  // m00=-m11
       m_b7 = _mm_adds_epi8(alpha_ptr[7],*m11p);  // m11
-
       new0 = _mm_subs_epi8(alpha_ptr[0],*m11p);  // m00=-m11
       new4 = _mm_adds_epi8(alpha_ptr[0],*m11p);  // m11
       new1 = _mm_adds_epi8(alpha_ptr[2],*m10p);  // m10
@@ -258,7 +250,6 @@ void compute_alpha8(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned sh
       new6 = _mm_adds_epi8(alpha_ptr[4],*m10p);  // m10
       new3 = _mm_adds_epi8(alpha_ptr[6],*m11p);  // m11
       new7 = _mm_subs_epi8(alpha_ptr[6],*m11p);  // m00=-m11
-
       alpha_ptr += 8;
       m11p++;
       m10p++;
@@ -270,7 +261,6 @@ void compute_alpha8(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned sh
       alpha_ptr[5] = _mm_max_epi8(m_b5,new5);
       alpha_ptr[6] = _mm_max_epi8(m_b6,new6);
       alpha_ptr[7] = _mm_max_epi8(m_b7,new7);
-
       // compute and subtract maxima
       alpha_max = _mm_max_epi8(alpha_ptr[0],alpha_ptr[1]);
       alpha_max = _mm_max_epi8(alpha_max,alpha_ptr[2]);
@@ -279,7 +269,6 @@ void compute_alpha8(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned sh
       alpha_max = _mm_max_epi8(alpha_max,alpha_ptr[5]);
       alpha_max = _mm_max_epi8(alpha_max,alpha_ptr[6]);
       alpha_max = _mm_max_epi8(alpha_max,alpha_ptr[7]);
-
       alpha_ptr[0] = _mm_subs_epi8(alpha_ptr[0],alpha_max);
       alpha_ptr[1] = _mm_subs_epi8(alpha_ptr[1],alpha_max);
       alpha_ptr[2] = _mm_subs_epi8(alpha_ptr[2],alpha_max);
@@ -308,8 +297,8 @@ void compute_alpha8(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned sh
     alpha[80] = -MAX8/2;
     alpha[96] = -MAX8/2;
     alpha[112] = -MAX8/2;
-
   }
+
 #elif defined(__arm__)
   alpha128[0] = vdupq_n_s8(-MAX8/2);
   alpha128[0] = vsetq_lane_s8(0,alpha128[0],0);
@@ -320,12 +309,11 @@ void compute_alpha8(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned sh
   alpha128[5] = vdupq_n_s8(-MAX8/2);
   alpha128[6] = vdupq_n_s8(-MAX8/2);
   alpha128[7] = vdupq_n_s8(-MAX8/2);
-  for (loopval=frame_length>>4, rerun_flag=0; rerun_flag<2; loopval=L, rerun_flag++) {
 
+  for (loopval=frame_length>>4, rerun_flag=0; rerun_flag<2; loopval=L, rerun_flag++) {
     alpha_ptr = &alpha128[0];
-
-    m11p = (int8x16_t*)m_11;
-    m10p = (int8x16_t*)m_10;
+    m11p = (int8x16_t *)m_11;
+    m10p = (int8x16_t *)m_10;
 
     for (k=0;  k<loopval;  k++) {
       m_b0 = vqaddq_s8(alpha_ptr[1],*m11p);  // m11
@@ -336,7 +324,6 @@ void compute_alpha8(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned sh
       m_b6 = vqsubq_s8(alpha_ptr[5],*m10p);  // m01=-m10
       m_b3 = vqsubq_s8(alpha_ptr[7],*m11p);  // m00=-m11
       m_b7 = vqaddq_s8(alpha_ptr[7],*m11p);  // m11
-
       new0 = vqsubq_s8(alpha_ptr[0],*m11p);  // m00=-m11
       new4 = vqaddq_s8(alpha_ptr[0],*m11p);  // m11
       new1 = vqaddq_s8(alpha_ptr[2],*m10p);  // m10
@@ -345,7 +332,6 @@ void compute_alpha8(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned sh
       new6 = vqaddq_s8(alpha_ptr[4],*m10p);  // m10
       new3 = vqaddq_s8(alpha_ptr[6],*m11p);  // m11
       new7 = vqsubq_s8(alpha_ptr[6],*m11p);  // m00=-m11
-
       alpha_ptr += 8;
       m11p++;
       m10p++;
@@ -357,7 +343,6 @@ void compute_alpha8(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned sh
       alpha_ptr[5] = vmaxq_s8(m_b5,new5);
       alpha_ptr[6] = vmaxq_s8(m_b6,new6);
       alpha_ptr[7] = vmaxq_s8(m_b7,new7);
-
       // compute and subtract maxima
       alpha_max = vmaxq_s8(alpha_ptr[0],alpha_ptr[1]);
       alpha_max = vmaxq_s8(alpha_max,alpha_ptr[2]);
@@ -366,7 +351,6 @@ void compute_alpha8(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned sh
       alpha_max = vmaxq_s8(alpha_max,alpha_ptr[5]);
       alpha_max = vmaxq_s8(alpha_max,alpha_ptr[6]);
       alpha_max = vmaxq_s8(alpha_max,alpha_ptr[7]);
-
       alpha_ptr[0] = vqsubq_s8(alpha_ptr[0],alpha_max);
       alpha_ptr[1] = vqsubq_s8(alpha_ptr[1],alpha_max);
       alpha_ptr[2] = vqsubq_s8(alpha_ptr[2],alpha_max);
@@ -380,14 +364,22 @@ void compute_alpha8(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned sh
     // Set intial state for next iteration from the last state
     // as a column end states are the first states of the next column
     int K1= frame_length>>1;
-    alpha128[0] = (int8x16_t)vshlq_n_s64((int64x2_t)alpha128[K1],8);   alpha128[0] = vsetq_lane_s8(alpha[8],alpha128[0],7);
-    alpha128[1] = (int8x16_t)vshlq_n_s64((int64x2_t)alpha128[1+K1],8); alpha128[1] = vsetq_lane_s8(alpha[24],alpha128[0],7);
-    alpha128[2] = (int8x16_t)vshlq_n_s64((int64x2_t)alpha128[2+K1],8); alpha128[2] = vsetq_lane_s8(alpha[40],alpha128[0],7);
-    alpha128[3] = (int8x16_t)vshlq_n_s64((int64x2_t)alpha128[3+K1],8); alpha128[3] = vsetq_lane_s8(alpha[56],alpha128[0],7);
-    alpha128[4] = (int8x16_t)vshlq_n_s64((int64x2_t)alpha128[4+K1],8); alpha128[4] = vsetq_lane_s8(alpha[72],alpha128[0],7);
-    alpha128[5] = (int8x16_t)vshlq_n_s64((int64x2_t)alpha128[5+K1],8); alpha128[5] = vsetq_lane_s8(alpha[88],alpha128[0],7);
-    alpha128[6] = (int8x16_t)vshlq_n_s64((int64x2_t)alpha128[6+K1],8); alpha128[6] = vsetq_lane_s8(alpha[104],alpha128[0],7);
-    alpha128[7] = (int8x16_t)vshlq_n_s64((int64x2_t)alpha128[7+K1],8); alpha128[7] = vsetq_lane_s8(alpha[120],alpha128[0],7);
+    alpha128[0] = (int8x16_t)vshlq_n_s64((int64x2_t)alpha128[K1],8);
+    alpha128[0] = vsetq_lane_s8(alpha[8],alpha128[0],7);
+    alpha128[1] = (int8x16_t)vshlq_n_s64((int64x2_t)alpha128[1+K1],8);
+    alpha128[1] = vsetq_lane_s8(alpha[24],alpha128[0],7);
+    alpha128[2] = (int8x16_t)vshlq_n_s64((int64x2_t)alpha128[2+K1],8);
+    alpha128[2] = vsetq_lane_s8(alpha[40],alpha128[0],7);
+    alpha128[3] = (int8x16_t)vshlq_n_s64((int64x2_t)alpha128[3+K1],8);
+    alpha128[3] = vsetq_lane_s8(alpha[56],alpha128[0],7);
+    alpha128[4] = (int8x16_t)vshlq_n_s64((int64x2_t)alpha128[4+K1],8);
+    alpha128[4] = vsetq_lane_s8(alpha[72],alpha128[0],7);
+    alpha128[5] = (int8x16_t)vshlq_n_s64((int64x2_t)alpha128[5+K1],8);
+    alpha128[5] = vsetq_lane_s8(alpha[88],alpha128[0],7);
+    alpha128[6] = (int8x16_t)vshlq_n_s64((int64x2_t)alpha128[6+K1],8);
+    alpha128[6] = vsetq_lane_s8(alpha[104],alpha128[0],7);
+    alpha128[7] = (int8x16_t)vshlq_n_s64((int64x2_t)alpha128[7+K1],8);
+    alpha128[7] = vsetq_lane_s8(alpha[120],alpha128[0],7);
     alpha[16] =  -MAX8/2;
     alpha[32] = -MAX8/2;
     alpha[48] = -MAX8/2;
@@ -395,35 +387,28 @@ void compute_alpha8(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,unsigned sh
     alpha[80] = -MAX8/2;
     alpha[96] = -MAX8/2;
     alpha[112] = -MAX8/2;
-
   }
-#endif
-
 
+#endif
 }
 
 
-void compute_beta8(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned short frame_length,unsigned char F,int offset8_flag)
-{
-
+void compute_beta8(llr_t *alpha,llr_t *beta,llr_t *m_11,llr_t *m_10,unsigned short frame_length,unsigned char F,int offset8_flag) {
   int k,rerun_flag, loopval;
 #if defined(__x86_64__) || defined(__i386__)
   __m128i m11_128,m10_128;
   __m128i m_b0,m_b1,m_b2,m_b3,m_b4,m_b5,m_b6,m_b7;
   __m128i new0,new1,new2,new3,new4,new5,new6,new7;
-
   __m128i *beta128,*alpha128,*beta_ptr;
   __m128i beta_max;
 #elif defined(__arm__)
   int8x16_t m11_128,m10_128;
   int8x16_t m_b0,m_b1,m_b2,m_b3,m_b4,m_b5,m_b6,m_b7;
   int8x16_t new0,new1,new2,new3,new4,new5,new6,new7;
-
   int8x16_t *beta128,*alpha128,*beta_ptr;
   int8x16_t beta_max;
 #endif
   llr_t beta0,beta1;
-
   llr_t beta2,beta3,beta4,beta5,beta6,beta7;
 
   if (frame_length > 6144) {
@@ -433,13 +418,12 @@ void compute_beta8(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sho
 
   // we are supposed to run compute_alpha just before compute_beta
   // so the initial states of backward computation can be set from last value of alpha states (forward computation)
-
 #if defined(__x86_64__) || defined(__i386__)
-  beta_ptr   = (__m128i*)&beta[frame_length<<3];
-  alpha128   = (__m128i*)&alpha[0];
+  beta_ptr   = (__m128i *)&beta[frame_length<<3];
+  alpha128   = (__m128i *)&alpha[0];
 #elif defined(__arm__)
-  beta_ptr   = (int8x16_t*)&beta[frame_length<<3];
-  alpha128   = (int8x16_t*)&alpha[0];
+  beta_ptr   = (int8x16_t *)&beta[frame_length<<3];
+  alpha128   = (int8x16_t *)&alpha[0];
 #endif
   beta_ptr[0] = alpha128[(frame_length>>1)];
   beta_ptr[1] = alpha128[1+(frame_length>>1)];
@@ -449,18 +433,15 @@ void compute_beta8(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sho
   beta_ptr[5] = alpha128[5+(frame_length>>1)];
   beta_ptr[6] = alpha128[6+(frame_length>>1)];
   beta_ptr[7] = alpha128[7+(frame_length>>1)];
-
   int overlap = (frame_length>>4)> L ? (frame_length>>4)-L : 0 ;
 
   for (rerun_flag=0, loopval=0;
        rerun_flag<2 ;
        loopval=overlap,rerun_flag++) {
-
     if (offset8_flag==0) {
       // FIXME! beta0-beta7 are used uninitialized. FIXME!
       // workaround: init with 0
       beta0 = beta1 = beta2 = beta3 = beta4 = beta5 = beta6 = beta7 = 0;
-
 #if defined(__x86_64__) || defined(__i386__)
       beta_ptr[0] = _mm_insert_epi8(beta_ptr[0],beta0,15);
       beta_ptr[1] = _mm_insert_epi8(beta_ptr[1],beta1,15);
@@ -483,16 +464,17 @@ void compute_beta8(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sho
     }
 
 #if defined(__x86_64__) || defined(__i386__)
-    beta_ptr = (__m128i*)&beta[frame_length<<3];
+    beta_ptr = (__m128i *)&beta[frame_length<<3];
 #elif defined(__arm__)
-    beta_ptr = (int8x16_t*)&beta[frame_length<<3];
+    beta_ptr = (int8x16_t *)&beta[frame_length<<3];
 #endif
+
     for (k=(frame_length>>4)-1;
          k>=loopval;
          k--) {
 #if defined(__x86_64__) || defined(__i386__)
-      m11_128=((__m128i*)m_11)[k];
-      m10_128=((__m128i*)m_10)[k];
+      m11_128=((__m128i *)m_11)[k];
+      m10_128=((__m128i *)m_10)[k];
       m_b0 = _mm_adds_epi8(beta_ptr[4],m11_128);  //m11
       m_b1 = _mm_subs_epi8(beta_ptr[4],m11_128);  //m00
       m_b2 = _mm_subs_epi8(beta_ptr[5],m10_128);  //m01
@@ -501,7 +483,6 @@ void compute_beta8(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sho
       m_b5 = _mm_subs_epi8(beta_ptr[6],m10_128);  //m01
       m_b6 = _mm_subs_epi8(beta_ptr[7],m11_128);  //m00
       m_b7 = _mm_adds_epi8(beta_ptr[7],m11_128);  //m11
-
       new0 = _mm_subs_epi8(beta_ptr[0],m11_128);  //m00
       new1 = _mm_adds_epi8(beta_ptr[0],m11_128);  //m11
       new2 = _mm_adds_epi8(beta_ptr[1],m10_128);  //m10
@@ -510,9 +491,7 @@ void compute_beta8(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sho
       new5 = _mm_adds_epi8(beta_ptr[2],m10_128);  //m10
       new6 = _mm_adds_epi8(beta_ptr[3],m11_128);  //m11
       new7 = _mm_subs_epi8(beta_ptr[3],m11_128);  //m00
-
       beta_ptr-=8;
-
       beta_ptr[0] = _mm_max_epi8(m_b0,new0);
       beta_ptr[1] = _mm_max_epi8(m_b1,new1);
       beta_ptr[2] = _mm_max_epi8(m_b2,new2);
@@ -521,7 +500,6 @@ void compute_beta8(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sho
       beta_ptr[5] = _mm_max_epi8(m_b5,new5);
       beta_ptr[6] = _mm_max_epi8(m_b6,new6);
       beta_ptr[7] = _mm_max_epi8(m_b7,new7);
-
       beta_max = _mm_max_epi8(beta_ptr[0],beta_ptr[1]);
       beta_max = _mm_max_epi8(beta_max   ,beta_ptr[2]);
       beta_max = _mm_max_epi8(beta_max   ,beta_ptr[3]);
@@ -529,7 +507,6 @@ void compute_beta8(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sho
       beta_max = _mm_max_epi8(beta_max   ,beta_ptr[5]);
       beta_max = _mm_max_epi8(beta_max   ,beta_ptr[6]);
       beta_max = _mm_max_epi8(beta_max   ,beta_ptr[7]);
-
       beta_ptr[0] = _mm_subs_epi8(beta_ptr[0],beta_max);
       beta_ptr[1] = _mm_subs_epi8(beta_ptr[1],beta_max);
       beta_ptr[2] = _mm_subs_epi8(beta_ptr[2],beta_max);
@@ -539,8 +516,8 @@ void compute_beta8(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sho
       beta_ptr[6] = _mm_subs_epi8(beta_ptr[6],beta_max);
       beta_ptr[7] = _mm_subs_epi8(beta_ptr[7],beta_max);
 #elif defined(__arm__)
-      m11_128=((int8x16_t*)m_11)[k];
-      m10_128=((int8x16_t*)m_10)[k];
+      m11_128=((int8x16_t *)m_11)[k];
+      m10_128=((int8x16_t *)m_10)[k];
       m_b0 = vqaddq_s8(beta_ptr[4],m11_128);  //m11
       m_b1 = vqsubq_s8(beta_ptr[4],m11_128);  //m00
       m_b2 = vqsubq_s8(beta_ptr[5],m10_128);  //m01
@@ -549,7 +526,6 @@ void compute_beta8(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sho
       m_b5 = vqsubq_s8(beta_ptr[6],m10_128);  //m01
       m_b6 = vqsubq_s8(beta_ptr[7],m11_128);  //m00
       m_b7 = vqaddq_s8(beta_ptr[7],m11_128);  //m11
-
       new0 = vqsubq_s8(beta_ptr[0],m11_128);  //m00
       new1 = vqaddq_s8(beta_ptr[0],m11_128);  //m11
       new2 = vqaddq_s8(beta_ptr[1],m10_128);  //m10
@@ -558,9 +534,7 @@ void compute_beta8(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sho
       new5 = vqaddq_s8(beta_ptr[2],m10_128);  //m10
       new6 = vqaddq_s8(beta_ptr[3],m11_128);  //m11
       new7 = vqsubq_s8(beta_ptr[3],m11_128);  //m00
-
       beta_ptr-=8;
-
       beta_ptr[0] = vmaxq_s8(m_b0,new0);
       beta_ptr[1] = vmaxq_s8(m_b1,new1);
       beta_ptr[2] = vmaxq_s8(m_b2,new2);
@@ -569,7 +543,6 @@ void compute_beta8(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sho
       beta_ptr[5] = vmaxq_s8(m_b5,new5);
       beta_ptr[6] = vmaxq_s8(m_b6,new6);
       beta_ptr[7] = vmaxq_s8(m_b7,new7);
-
       beta_max = vmaxq_s8(beta_ptr[0],beta_ptr[1]);
       beta_max = vmaxq_s8(beta_max   ,beta_ptr[2]);
       beta_max = vmaxq_s8(beta_max   ,beta_ptr[3]);
@@ -577,7 +550,6 @@ void compute_beta8(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sho
       beta_max = vmaxq_s8(beta_max   ,beta_ptr[5]);
       beta_max = vmaxq_s8(beta_max   ,beta_ptr[6]);
       beta_max = vmaxq_s8(beta_max   ,beta_ptr[7]);
-
       beta_ptr[0] = vqsubq_s8(beta_ptr[0],beta_max);
       beta_ptr[1] = vqsubq_s8(beta_ptr[1],beta_max);
       beta_ptr[2] = vqsubq_s8(beta_ptr[2],beta_max);
@@ -592,10 +564,9 @@ void compute_beta8(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sho
     // Set intial state for next iteration from the last state
     // as column last states are the first states of the next column
     // The initial state of column 0 is coming from tail bits (to be computed)
-
 #if defined(__x86_64__) || defined(__i386__)
-    beta128 = (__m128i*)&beta[0];
-    beta_ptr   = (__m128i*)&beta[frame_length<<3];
+    beta128 = (__m128i *)&beta[0];
+    beta_ptr   = (__m128i *)&beta[frame_length<<3];
     beta_ptr[0] = _mm_srli_si128(beta128[0],1);
     beta_ptr[1] = _mm_srli_si128(beta128[1],1);
     beta_ptr[2] = _mm_srli_si128(beta128[2],1);
@@ -605,23 +576,29 @@ void compute_beta8(llr_t* alpha,llr_t* beta,llr_t *m_11,llr_t* m_10,unsigned sho
     beta_ptr[6] = _mm_srli_si128(beta128[6],1);
     beta_ptr[7] = _mm_srli_si128(beta128[7],1);
 #elif defined(__arm__)
-    beta128 = (int8x16_t*)&beta[0];
-    beta_ptr   = (int8x16_t*)&beta[frame_length<<3];
-    beta_ptr[0] = (int8x16_t)vshrq_n_s64((int64x2_t)beta128[0],8);   beta_ptr[0] = vsetq_lane_s8(beta[7],beta_ptr[0],8);
-    beta_ptr[1] = (int8x16_t)vshrq_n_s64((int64x2_t)beta128[1],8);   beta_ptr[1] = vsetq_lane_s8(beta[23],beta_ptr[1],8);
-    beta_ptr[2] = (int8x16_t)vshrq_n_s64((int64x2_t)beta128[2],8);   beta_ptr[2] = vsetq_lane_s8(beta[39],beta_ptr[2],8);
-    beta_ptr[3] = (int8x16_t)vshrq_n_s64((int64x2_t)beta128[3],8);   beta_ptr[3] = vsetq_lane_s8(beta[55],beta_ptr[3],8);
-    beta_ptr[4] = (int8x16_t)vshrq_n_s64((int64x2_t)beta128[4],8);   beta_ptr[4] = vsetq_lane_s8(beta[71],beta_ptr[4],8);
-    beta_ptr[5] = (int8x16_t)vshrq_n_s64((int64x2_t)beta128[5],8);   beta_ptr[5] = vsetq_lane_s8(beta[87],beta_ptr[5],8);
-    beta_ptr[6] = (int8x16_t)vshrq_n_s64((int64x2_t)beta128[6],8);   beta_ptr[6] = vsetq_lane_s8(beta[103],beta_ptr[6],8);
-    beta_ptr[7] = (int8x16_t)vshrq_n_s64((int64x2_t)beta128[7],8);   beta_ptr[7] = vsetq_lane_s8(beta[119],beta_ptr[7],8);
+    beta128 = (int8x16_t *)&beta[0];
+    beta_ptr   = (int8x16_t *)&beta[frame_length<<3];
+    beta_ptr[0] = (int8x16_t)vshrq_n_s64((int64x2_t)beta128[0],8);
+    beta_ptr[0] = vsetq_lane_s8(beta[7],beta_ptr[0],8);
+    beta_ptr[1] = (int8x16_t)vshrq_n_s64((int64x2_t)beta128[1],8);
+    beta_ptr[1] = vsetq_lane_s8(beta[23],beta_ptr[1],8);
+    beta_ptr[2] = (int8x16_t)vshrq_n_s64((int64x2_t)beta128[2],8);
+    beta_ptr[2] = vsetq_lane_s8(beta[39],beta_ptr[2],8);
+    beta_ptr[3] = (int8x16_t)vshrq_n_s64((int64x2_t)beta128[3],8);
+    beta_ptr[3] = vsetq_lane_s8(beta[55],beta_ptr[3],8);
+    beta_ptr[4] = (int8x16_t)vshrq_n_s64((int64x2_t)beta128[4],8);
+    beta_ptr[4] = vsetq_lane_s8(beta[71],beta_ptr[4],8);
+    beta_ptr[5] = (int8x16_t)vshrq_n_s64((int64x2_t)beta128[5],8);
+    beta_ptr[5] = vsetq_lane_s8(beta[87],beta_ptr[5],8);
+    beta_ptr[6] = (int8x16_t)vshrq_n_s64((int64x2_t)beta128[6],8);
+    beta_ptr[6] = vsetq_lane_s8(beta[103],beta_ptr[6],8);
+    beta_ptr[7] = (int8x16_t)vshrq_n_s64((int64x2_t)beta128[7],8);
+    beta_ptr[7] = vsetq_lane_s8(beta[119],beta_ptr[7],8);
 #endif
   }
 }
 
-void compute_ext8(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,llr_t* ext, llr_t* systematic,unsigned short frame_length)
-{
-
+void compute_ext8(llr_t *alpha,llr_t *beta,llr_t *m_11,llr_t *m_10,llr_t *ext, llr_t *systematic,unsigned short frame_length) {
 #if defined(__x86_64__) || defined(__i386__)
   __m128i *alpha128=(__m128i *)alpha;
   __m128i *beta128=(__m128i *)beta;
@@ -642,27 +619,20 @@ void compute_ext8(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,llr_t* ext, l
   int8x16_t m11_1,m11_2,m11_3,m11_4;
 #endif
   int k;
-
   //
   // LLR computation, 8 consequtive bits per loop
   //
-
 #ifdef DEBUG_LOGMAP
   printf("compute_ext, %p, %p, %p, %p, %p, %p ,framelength %d\n",alpha,beta,m_11,m_10,ext,systematic,frame_length);
 #endif
-
   alpha_ptr = alpha128;
   beta_ptr = &beta128[8];
 
-
   for (k=0; k<(frame_length>>4); k++) {
-
 #if defined(__x86_64__) || defined(__i386__)
-
-    m11_128        = (__m128i*)&m_11[k<<4];
-    m10_128        = (__m128i*)&m_10[k<<4];
-    ext_128        = (__m128i*)&ext[k<<4];
-
+    m11_128        = (__m128i *)&m_11[k<<4];
+    m10_128        = (__m128i *)&m_10[k<<4];
+    ext_128        = (__m128i *)&ext[k<<4];
     m00_4 = _mm_adds_epi8(alpha_ptr[7],beta_ptr[3]); //ALPHA_BETA_4m00;
     m11_4 = _mm_adds_epi8(alpha_ptr[7],beta_ptr[7]); //ALPHA_BETA_4m11;
     m00_3 = _mm_adds_epi8(alpha_ptr[6],beta_ptr[7]); //ALPHA_BETA_3m00;
@@ -679,7 +649,6 @@ void compute_ext8(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,llr_t* ext, l
     m10_2 = _mm_adds_epi8(alpha_ptr[3],beta_ptr[5]); //ALPHA_BETA_2m10;
     m10_1 = _mm_adds_epi8(alpha_ptr[2],beta_ptr[1]); //ALPHA_BETA_1m10;
     m01_1 = _mm_adds_epi8(alpha_ptr[2],beta_ptr[5]); //ALPHA_BETA_1m01;
-
     m01_1 = _mm_max_epi8(m01_1,m01_2);
     m01_1 = _mm_max_epi8(m01_1,m01_3);
     m01_1 = _mm_max_epi8(m01_1,m01_4);
@@ -692,28 +661,19 @@ void compute_ext8(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,llr_t* ext, l
     m11_1 = _mm_max_epi8(m11_1,m11_2);
     m11_1 = _mm_max_epi8(m11_1,m11_3);
     m11_1 = _mm_max_epi8(m11_1,m11_4);
-
-
     m01_1 = _mm_subs_epi8(m01_1,*m10_128);
     m00_1 = _mm_subs_epi8(m00_1,*m11_128);
     m10_1 = _mm_adds_epi8(m10_1,*m10_128);
     m11_1 = _mm_adds_epi8(m11_1,*m11_128);
-
-
     m01_1 = _mm_max_epi8(m01_1,m00_1);
     m10_1 = _mm_max_epi8(m10_1,m11_1);
-
-
     *ext_128 = _mm_subs_epi8(m10_1,m01_1);
-
     alpha_ptr+=8;
     beta_ptr+=8;
 #elif defined(__arm__)
-
-    m11_128        = (int8x16_t*)&m_11[k<<4];
-    m10_128        = (int8x16_t*)&m_10[k<<4];
-    ext_128        = (int8x16_t*)&ext[k<<4];
-
+    m11_128        = (int8x16_t *)&m_11[k<<4];
+    m10_128        = (int8x16_t *)&m_10[k<<4];
+    ext_128        = (int8x16_t *)&ext[k<<4];
     m00_4 = vqaddq_s8(alpha_ptr[7],beta_ptr[3]); //ALPHA_BETA_4m00;
     m11_4 = vqaddq_s8(alpha_ptr[7],beta_ptr[7]); //ALPHA_BETA_4m11;
     m00_3 = vqaddq_s8(alpha_ptr[6],beta_ptr[7]); //ALPHA_BETA_3m00;
@@ -730,7 +690,6 @@ void compute_ext8(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,llr_t* ext, l
     m10_2 = vqaddq_s8(alpha_ptr[3],beta_ptr[5]); //ALPHA_BETA_2m10;
     m10_1 = vqaddq_s8(alpha_ptr[2],beta_ptr[1]); //ALPHA_BETA_1m10;
     m01_1 = vqaddq_s8(alpha_ptr[2],beta_ptr[5]); //ALPHA_BETA_1m01;
-
     m01_1 = vmaxq_s8(m01_1,m01_2);
     m01_1 = vmaxq_s8(m01_1,m01_3);
     m01_1 = vmaxq_s8(m01_1,m01_4);
@@ -743,27 +702,17 @@ void compute_ext8(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,llr_t* ext, l
     m11_1 = vmaxq_s8(m11_1,m11_2);
     m11_1 = vmaxq_s8(m11_1,m11_3);
     m11_1 = vmaxq_s8(m11_1,m11_4);
-
-
     m01_1 = vqsubq_s8(m01_1,*m10_128);
     m00_1 = vqsubq_s8(m00_1,*m11_128);
     m10_1 = vqaddq_s8(m10_1,*m10_128);
     m11_1 = vqaddq_s8(m11_1,*m11_128);
-
-
     m01_1 = vmaxq_s8(m01_1,m00_1);
     m10_1 = vmaxq_s8(m10_1,m11_1);
-
-
     *ext_128 = vqsubq_s8(m10_1,m01_1);
-
     alpha_ptr+=8;
     beta_ptr+=8;
-
 #endif
   }
-
-
 }
 
 
@@ -771,8 +720,7 @@ void compute_ext8(llr_t* alpha,llr_t* beta,llr_t* m_11,llr_t* m_10,llr_t* ext, l
 //int pi2[n],pi3[n+8],pi5[n+8],pi4[n+8],pi6[n+8],
 int *pi2tab8[188],*pi5tab8[188],*pi4tab8[188],*pi6tab8[188];
 
-void free_td8(void)
-{
+void free_td8(void) {
   int ind;
 
   for (ind=0; ind<188; ind++) {
@@ -787,14 +735,11 @@ void free_td8(void)
 
 extern RAN_CONTEXT_t RC;
 
-void init_td8(void)
-{
-
+void init_td8(void) {
   int ind,i,j,n,n2,pi,pi3;
-  short * base_interleaver;
+  short *base_interleaver;
 
   for (ind=0; ind<188; ind++) {
-
     n = f1f2mat[ind].nb_bits;
     base_interleaver=il_tb+f1f2mat[ind].beg_index;
 #ifdef MEX
@@ -816,68 +761,57 @@ void init_td8(void)
       n2 = n;
 
     for (j=0,i=0; i<n2; i++,j+=16) {
-
       if (j>=n2)
         j-=(n2-1);
 
       pi2tab8[ind][i] = j;
       //    printf("pi2[%d] = %d\n",i,j);
     }
-    
+
     for (i=0; i<n2; i++) {
       pi = base_interleaver[i];//(unsigned int)threegpplte_interleaver(f1,f2,n);
       pi3 = pi2tab8[ind][pi];
       pi4tab8[ind][pi2tab8[ind][i]] = pi3;
       pi5tab8[ind][pi3] = pi2tab8[ind][i];
       pi6tab8[ind][pi] = pi2tab8[ind][i];
-      }
-
+    }
   }
 }
 
 uint8_t phy_threegpplte_turbo_decoder8(int16_t *y,
-                               int16_t *y2,
-    		               uint8_t *decoded_bytes,
-    		               uint8_t *decoded_bytes2,
-	   		       uint16_t n,
-	   		       uint8_t max_iterations,
-	   		       uint8_t crc_type,
-	   		       uint8_t F,
-	   		       time_stats_t *init_stats,
-	   		       time_stats_t *alpha_stats,
-	   		       time_stats_t *beta_stats,
-	   		       time_stats_t *gamma_stats,
-	   		       time_stats_t *ext_stats,
-	   		       time_stats_t *intl1_stats,
-                               time_stats_t *intl2_stats) {
+                                       int16_t *y2,
+                                       uint8_t *decoded_bytes,
+                                       uint8_t *decoded_bytes2,
+                                       uint16_t n,
+                                       uint8_t max_iterations,
+                                       uint8_t crc_type,
+                                       uint8_t F,
+                                       time_stats_t *init_stats,
+                                       time_stats_t *alpha_stats,
+                                       time_stats_t *beta_stats,
+                                       time_stats_t *gamma_stats,
+                                       time_stats_t *ext_stats,
+                                       time_stats_t *intl1_stats,
+                                       time_stats_t *intl2_stats) {
   /*  y is a pointer to the input
       decoded_bytes is a pointer to the decoded output
       n is the size in bits of the coded block, with the tail */
-
   int n2;
-
   llr_t y8[3*(n+16)] __attribute__((aligned(16)));
-
-
   llr_t systematic0[n+16] __attribute__ ((aligned(16)));
   llr_t systematic1[n+16] __attribute__ ((aligned(16)));
   llr_t systematic2[n+16] __attribute__ ((aligned(16)));
   llr_t yparity1[n+16] __attribute__ ((aligned(16)));
   llr_t yparity2[n+16] __attribute__ ((aligned(16)));
-
   llr_t ext[n+128] __attribute__((aligned(16)));
   llr_t ext2[n+128] __attribute__((aligned(16)));
-
   llr_t alpha[(n+16)*8] __attribute__ ((aligned(16)));
   llr_t beta[(n+16)*8] __attribute__ ((aligned(16)));
   llr_t m11[n+16] __attribute__ ((aligned(16)));
   llr_t m10[n+16] __attribute__ ((aligned(16)));
-
-
   //  int *pi2_p,*pi4_p,*pi5_p,*pi6_p;
   int *pi4_p,*pi5_p,*pi6_p;
   llr_t *s,*s1,*s2,*yp1,*yp2,*yp;
-
   unsigned int i,j,iind;//,pi;
   unsigned char iteration_cnt=0;
   unsigned int crc,oldcrc,crc_len;
@@ -890,13 +824,11 @@ uint8_t phy_threegpplte_turbo_decoder8(int16_t *y,
   int8x16_t *yp128;
   int8x16_t tmp128[(n+8)>>3];
   int8x16_t tmp, zeros=vdupq_n_s8(0);
-  const uint8_t __attribute__ ((aligned (16))) _Powers[16]= 
-    { 1, 2, 4, 8, 16, 32, 64, 128, 1, 2, 4, 8, 16, 32, 64, 128 };
-  
+  const uint8_t __attribute__ ((aligned (16))) _Powers[16]=
+  { 1, 2, 4, 8, 16, 32, 64, 128, 1, 2, 4, 8, 16, 32, 64, 128 };
   // Set the powers of 2 (do it once for all, if applicable)
   uint8x16_t Powers= vld1q_u8(_Powers);
 #endif
-
   int offset8_flag=0;
 
   if (crc_type > 3) {
@@ -904,17 +836,14 @@ uint8_t phy_threegpplte_turbo_decoder8(int16_t *y,
     return 255;
   }
 
-
   if (init_stats) start_meas(init_stats);
 
-
   if ((n&15)>0) {
     n2 = n+8;
     offset8_flag=1;
   } else
     n2 = n;
 
-
   for (iind=0; iind < 188 && f1f2mat[iind].nb_bits != n; iind++);
 
   if ( iind == 188 ) {
@@ -923,31 +852,30 @@ uint8_t phy_threegpplte_turbo_decoder8(int16_t *y,
   }
 
   switch (crc_type) {
-  case CRC24_A:
-  case CRC24_B:
-    crc_len=3;
-    break;
+    case CRC24_A:
+    case CRC24_B:
+      crc_len=3;
+      break;
 
-  case CRC16:
-    crc_len=2;
-    break;
+    case CRC16:
+      crc_len=2;
+      break;
 
-  case CRC8:
-    crc_len=1;
-    break;
+    case CRC8:
+      crc_len=1;
+      break;
 
-  default:
-    crc_len=3;
+    default:
+      crc_len=3;
   }
 
 #if defined(__x86_64__) || defined(__i386__)
-
   // note: this makes valgrind freak
   __m128i avg=_mm_set1_epi32(0);
 
   for (i=0; i<(3*(n>>4))+1; i++) {
-    __m128i tmp=_mm_abs_epi16(_mm_unpackhi_epi16(((__m128i*)y)[i],((__m128i*)y)[i]));
-    avg=_mm_add_epi32(_mm_cvtepi16_epi32(_mm_abs_epi16(((__m128i*)y)[i])),avg);
+    __m128i tmp=_mm_abs_epi16(_mm_unpackhi_epi16(((__m128i *)y)[i],((__m128i *)y)[i]));
+    avg=_mm_add_epi32(_mm_cvtepi16_epi32(_mm_abs_epi16(((__m128i *)y)[i])),avg);
     avg=_mm_add_epi32(_mm_cvtepi16_epi32(tmp),avg);
   }
 
@@ -971,15 +899,13 @@ uint8_t phy_threegpplte_turbo_decoder8(int16_t *y,
     for (i=0,j=0; i<(3*(n2>>4))+1; i++,j+=2)
       ((__m128i *)y8)[i] = _mm_packs_epi16(_mm_srai_epi16(((__m128i *)y)[j],3),_mm_srai_epi16(((__m128i *)y)[j+1],4));
 
-  yp128 = (__m128i*)y8;
-
+  yp128 = (__m128i *)y8;
 #elif defined(__arm__)
-
   int32x4_t avg=vdupq_n_s32(0);
 
   for (i=0; i<(3*(n>>4))+1; i++) {
-    int16x8_t tmp=vabsq_s16(((int16x8_t*)y)[i]);
-    avg = vqaddq_s32(avg,vaddl_s16(((int16x4_t*)&tmp)[0],((int16x4_t*)&tmp)[1]));
+    int16x8_t tmp=vabsq_s16(((int16x8_t *)y)[i]);
+    avg = vqaddq_s32(avg,vaddl_s16(((int16x4_t *)&tmp)[0],((int16x4_t *)&tmp)[1]));
   }
 
   int32_t round_avg=(vgetq_lane_s32(avg,0)+vgetq_lane_s32(avg,1)+vgetq_lane_s32(avg,2)+vgetq_lane_s32(avg,3))/(n*3);
@@ -999,10 +925,8 @@ uint8_t phy_threegpplte_turbo_decoder8(int16_t *y,
     for (i=0,j=0; i<(3*(n2>>3))+1; i++,j+=2)
       ((int8x8_t *)y8)[i] = vqmovn_s16(vshrq_n_s16(((int16x8_t *)y)[j],3));
 
-  yp128 = (int8x16_t*)y8;
-
+  yp128 = (int8x16_t *)y8;
 #endif
-
   s = systematic0;
   s1 = systematic1;
   s2 = systematic2;
@@ -1020,8 +944,7 @@ uint8_t phy_threegpplte_turbo_decoder8(int16_t *y,
     }
 
 #endif
-
-  yp=(llr_t*)yp128;
+  yp=(llr_t *)yp128;
 
   if (n2>n) {
     /*
@@ -1031,7 +954,7 @@ uint8_t phy_threegpplte_turbo_decoder8(int16_t *y,
     s1[n+4]=0;s1[n+5]=0;s1[n+6]=0;s1[n+7]=0;
     s2[n]=0;s2[n+1]=0;s2[n+2]=0;s2[n+3]=0;
     s2[n+4]=0;s2[n+5]=0;s2[n+6]=0;s2[n+7]=0;*/
-    yp=(llr_t*)(y8+n);
+    yp=(llr_t *)(y8+n);
   }
 
   //  printf("n=%d,n2=%d\n",n,n2);
@@ -1045,7 +968,7 @@ uint8_t phy_threegpplte_turbo_decoder8(int16_t *y,
     yp1[i] = *yp;
     yp++;
 #ifdef DEBUG_LOGMAP
-    printf("Term 1 (%d): %d %d\n",i,s[i],yp1[i]);
+    printf("Term 1 (%u): %d %d\n",i,s[i],yp1[i]);
 #endif //DEBUG_LOGMAP
   }
 
@@ -1057,7 +980,7 @@ uint8_t phy_threegpplte_turbo_decoder8(int16_t *y,
     yp2[i-16] = *yp;
     yp++;
 #ifdef DEBUG_LOGMAP
-    printf("Term 2 (%d): %d %d\n",i-16,s[i],yp2[i-16]);
+    printf("Term 2 (%u): %d %d\n",i-16,s[i],yp2[i-16]);
 #endif //DEBUG_LOGMAP
   }
 
@@ -1068,63 +991,59 @@ uint8_t phy_threegpplte_turbo_decoder8(int16_t *y,
   if (init_stats) stop_meas(init_stats);
 
   // do log_map from first parity bit
- 
   log_map8(systematic0,yparity1,m11,m10,alpha,beta,ext,n2,0,F,offset8_flag,alpha_stats,beta_stats,gamma_stats,ext_stats);
-  while (iteration_cnt++ < max_iterations) {
 
+  while (iteration_cnt++ < max_iterations) {
 #ifdef DEBUG_LOGMAP
     printf("\n*******************ITERATION %d (n %d, n2 %d), ext %p\n\n",iteration_cnt,n,n2,ext);
 #endif //DEBUG_LOGMAP
 
     if (intl1_stats) start_meas(intl1_stats);
+
     pi4_p=pi4tab8[iind];
 
     for (i=0; i<(n2>>4); i++) { // steady-state portion
 #if defined(__x86_64__) || defined(__i386__)
-      tmp=_mm_insert_epi8(tmp,((llr_t*)ext)[*pi4_p++],0);
-      tmp=_mm_insert_epi8(tmp,((llr_t*)ext)[*pi4_p++],1);
-      tmp=_mm_insert_epi8(tmp,((llr_t*)ext)[*pi4_p++],2);
-      tmp=_mm_insert_epi8(tmp,((llr_t*)ext)[*pi4_p++],3);
-      tmp=_mm_insert_epi8(tmp,((llr_t*)ext)[*pi4_p++],4);
-      tmp=_mm_insert_epi8(tmp,((llr_t*)ext)[*pi4_p++],5);
-      tmp=_mm_insert_epi8(tmp,((llr_t*)ext)[*pi4_p++],6);
-      tmp=_mm_insert_epi8(tmp,((llr_t*)ext)[*pi4_p++],7);
-      tmp=_mm_insert_epi8(tmp,((llr_t*)ext)[*pi4_p++],8);
-      tmp=_mm_insert_epi8(tmp,((llr_t*)ext)[*pi4_p++],9);
-      tmp=_mm_insert_epi8(tmp,((llr_t*)ext)[*pi4_p++],10);
-      tmp=_mm_insert_epi8(tmp,((llr_t*)ext)[*pi4_p++],11);
-      tmp=_mm_insert_epi8(tmp,((llr_t*)ext)[*pi4_p++],12);
-      tmp=_mm_insert_epi8(tmp,((llr_t*)ext)[*pi4_p++],13);
-      tmp=_mm_insert_epi8(tmp,((llr_t*)ext)[*pi4_p++],14);
-      ((__m128i *)systematic2)[i]=_mm_insert_epi8(tmp,((llr_t*)ext)[*pi4_p++],15);
+      tmp=_mm_insert_epi8(tmp,((llr_t *)ext)[*pi4_p++],0);
+      tmp=_mm_insert_epi8(tmp,((llr_t *)ext)[*pi4_p++],1);
+      tmp=_mm_insert_epi8(tmp,((llr_t *)ext)[*pi4_p++],2);
+      tmp=_mm_insert_epi8(tmp,((llr_t *)ext)[*pi4_p++],3);
+      tmp=_mm_insert_epi8(tmp,((llr_t *)ext)[*pi4_p++],4);
+      tmp=_mm_insert_epi8(tmp,((llr_t *)ext)[*pi4_p++],5);
+      tmp=_mm_insert_epi8(tmp,((llr_t *)ext)[*pi4_p++],6);
+      tmp=_mm_insert_epi8(tmp,((llr_t *)ext)[*pi4_p++],7);
+      tmp=_mm_insert_epi8(tmp,((llr_t *)ext)[*pi4_p++],8);
+      tmp=_mm_insert_epi8(tmp,((llr_t *)ext)[*pi4_p++],9);
+      tmp=_mm_insert_epi8(tmp,((llr_t *)ext)[*pi4_p++],10);
+      tmp=_mm_insert_epi8(tmp,((llr_t *)ext)[*pi4_p++],11);
+      tmp=_mm_insert_epi8(tmp,((llr_t *)ext)[*pi4_p++],12);
+      tmp=_mm_insert_epi8(tmp,((llr_t *)ext)[*pi4_p++],13);
+      tmp=_mm_insert_epi8(tmp,((llr_t *)ext)[*pi4_p++],14);
+      ((__m128i *)systematic2)[i]=_mm_insert_epi8(tmp,((llr_t *)ext)[*pi4_p++],15);
 #elif defined(__arm__)
-      tmp=vsetq_lane_s8(((llr_t*)ext)[*pi4_p++],tmp,0);
-      tmp=vsetq_lane_s8(((llr_t*)ext)[*pi4_p++],tmp,1);
-      tmp=vsetq_lane_s8(((llr_t*)ext)[*pi4_p++],tmp,2);
-      tmp=vsetq_lane_s8(((llr_t*)ext)[*pi4_p++],tmp,3);
-      tmp=vsetq_lane_s8(((llr_t*)ext)[*pi4_p++],tmp,4);
-      tmp=vsetq_lane_s8(((llr_t*)ext)[*pi4_p++],tmp,5);
-      tmp=vsetq_lane_s8(((llr_t*)ext)[*pi4_p++],tmp,6);
-      tmp=vsetq_lane_s8(((llr_t*)ext)[*pi4_p++],tmp,7);
-      tmp=vsetq_lane_s8(((llr_t*)ext)[*pi4_p++],tmp,8);
-      tmp=vsetq_lane_s8(((llr_t*)ext)[*pi4_p++],tmp,9);
-      tmp=vsetq_lane_s8(((llr_t*)ext)[*pi4_p++],tmp,10);
-      tmp=vsetq_lane_s8(((llr_t*)ext)[*pi4_p++],tmp,11);
-      tmp=vsetq_lane_s8(((llr_t*)ext)[*pi4_p++],tmp,12);
-      tmp=vsetq_lane_s8(((llr_t*)ext)[*pi4_p++],tmp,13);
-      tmp=vsetq_lane_s8(((llr_t*)ext)[*pi4_p++],tmp,14);
-      ((int8x16_t *)systematic2)[i]=vsetq_lane_s8(((llr_t*)ext)[*pi4_p++],tmp,15);
+      tmp=vsetq_lane_s8(((llr_t *)ext)[*pi4_p++],tmp,0);
+      tmp=vsetq_lane_s8(((llr_t *)ext)[*pi4_p++],tmp,1);
+      tmp=vsetq_lane_s8(((llr_t *)ext)[*pi4_p++],tmp,2);
+      tmp=vsetq_lane_s8(((llr_t *)ext)[*pi4_p++],tmp,3);
+      tmp=vsetq_lane_s8(((llr_t *)ext)[*pi4_p++],tmp,4);
+      tmp=vsetq_lane_s8(((llr_t *)ext)[*pi4_p++],tmp,5);
+      tmp=vsetq_lane_s8(((llr_t *)ext)[*pi4_p++],tmp,6);
+      tmp=vsetq_lane_s8(((llr_t *)ext)[*pi4_p++],tmp,7);
+      tmp=vsetq_lane_s8(((llr_t *)ext)[*pi4_p++],tmp,8);
+      tmp=vsetq_lane_s8(((llr_t *)ext)[*pi4_p++],tmp,9);
+      tmp=vsetq_lane_s8(((llr_t *)ext)[*pi4_p++],tmp,10);
+      tmp=vsetq_lane_s8(((llr_t *)ext)[*pi4_p++],tmp,11);
+      tmp=vsetq_lane_s8(((llr_t *)ext)[*pi4_p++],tmp,12);
+      tmp=vsetq_lane_s8(((llr_t *)ext)[*pi4_p++],tmp,13);
+      tmp=vsetq_lane_s8(((llr_t *)ext)[*pi4_p++],tmp,14);
+      ((int8x16_t *)systematic2)[i]=vsetq_lane_s8(((llr_t *)ext)[*pi4_p++],tmp,15);
 #endif
     }
 
     if (intl1_stats) stop_meas(intl1_stats);
 
     // do log_map from second parity bit
-
     log_map8(systematic2,yparity2,m11,m10,alpha,beta,ext2,n2,1,F,offset8_flag,alpha_stats,beta_stats,gamma_stats,ext_stats);
-
-
-
     pi5_p=pi5tab8[iind];
     uint16_t decoded_bytes_interl[6144/16] __attribute__((aligned(16)));
 
@@ -1148,7 +1067,7 @@ uint8_t phy_threegpplte_turbo_decoder8(int16_t *y,
         tmp=_mm_insert_epi8(tmp,ext2[*pi5_p++],14);
         tmp=_mm_insert_epi8(tmp,ext2[*pi5_p++],15);
         decoded_bytes_interl[i]=(uint16_t) _mm_movemask_epi8(_mm_cmpgt_epi8(tmp,zeros));
-        ((__m128i *)systematic1)[i] = _mm_adds_epi8(_mm_subs_epi8(tmp,((__m128i*)ext)[i]),((__m128i *)systematic0)[i]);
+        ((__m128i *)systematic1)[i] = _mm_adds_epi8(_mm_subs_epi8(tmp,((__m128i *)ext)[i]),((__m128i *)systematic0)[i]);
 #elif defined(__arm__)
         tmp=vsetq_lane_s8(ext2[*pi5_p++],tmp,0);
         tmp=vsetq_lane_s8(ext2[*pi5_p++],tmp,1);
@@ -1166,13 +1085,12 @@ uint8_t phy_threegpplte_turbo_decoder8(int16_t *y,
         tmp=vsetq_lane_s8(ext2[*pi5_p++],tmp,13);
         tmp=vsetq_lane_s8(ext2[*pi5_p++],tmp,14);
         tmp=vsetq_lane_s8(ext2[*pi5_p++],tmp,15);
-	uint64x2_t Mask= vpaddlq_u32(vpaddlq_u16(vpaddlq_u8(vandq_u8(vcgtq_s8(tmp,zeros), Powers))));
-	vst1q_lane_u8(&((uint8_t*)&decoded_bytes[i])[0], (uint8x16_t)Mask, 0);
-	vst1q_lane_u8(&((uint8_t*)&decoded_bytes[i])[1], (uint8x16_t)Mask, 8);
-	((int8x16_t *)systematic1)[i] = vqaddq_s8(vqsubq_s8(tmp,((int8x16_t*)ext)[i]),((int8x16_t *)systematic0)[i]);
+        uint64x2_t Mask= vpaddlq_u32(vpaddlq_u16(vpaddlq_u8(vandq_u8(vcgtq_s8(tmp,zeros), Powers))));
+        vst1q_lane_u8(&((uint8_t *)&decoded_bytes[i])[0], (uint8x16_t)Mask, 0);
+        vst1q_lane_u8(&((uint8_t *)&decoded_bytes[i])[1], (uint8x16_t)Mask, 8);
+        ((int8x16_t *)systematic1)[i] = vqaddq_s8(vqsubq_s8(tmp,((int8x16_t *)ext)[i]),((int8x16_t *)systematic0)[i]);
 #endif
       }
-
     } else {
       for (i=0; i<(n2>>4); i++) {
 #if defined(__x86_64__) || defined(__i386__)
@@ -1193,8 +1111,7 @@ uint8_t phy_threegpplte_turbo_decoder8(int16_t *y,
         tmp=_mm_insert_epi8(tmp,ext2[*pi5_p++],14);
         tmp=_mm_insert_epi8(tmp,ext2[*pi5_p++],15);
         tmp128[i] = _mm_adds_epi8(((__m128i *)ext2)[i],((__m128i *)systematic2)[i]);
-
-        ((__m128i *)systematic1)[i] = _mm_adds_epi8(_mm_subs_epi8(tmp,((__m128i*)ext)[i]),((__m128i *)systematic0)[i]);
+        ((__m128i *)systematic1)[i] = _mm_adds_epi8(_mm_subs_epi8(tmp,((__m128i *)ext)[i]),((__m128i *)systematic0)[i]);
 #elif defined(__arm__)
         tmp=vsetq_lane_s8(ext2[*pi5_p++],tmp,0);
         tmp=vsetq_lane_s8(ext2[*pi5_p++],tmp,1);
@@ -1213,11 +1130,9 @@ uint8_t phy_threegpplte_turbo_decoder8(int16_t *y,
         tmp=vsetq_lane_s8(ext2[*pi5_p++],tmp,14);
         tmp=vsetq_lane_s8(ext2[*pi5_p++],tmp,15);
         tmp128[i] = vqaddq_s8(((int8x16_t *)ext2)[i],((int8x16_t *)systematic2)[i]);
-
-        ((int8x16_t *)systematic1)[i] = vqaddq_s8(vqsubq_s8(tmp,((int8x16_t*)ext)[i]),((int8x16_t *)systematic0)[i]);
-
-#endif 
-     }
+        ((int8x16_t *)systematic1)[i] = vqaddq_s8(vqsubq_s8(tmp,((int8x16_t *)ext)[i]),((int8x16_t *)systematic0)[i]);
+#endif
+      }
     }
 
     // Check if we decoded the block
@@ -1225,11 +1140,10 @@ uint8_t phy_threegpplte_turbo_decoder8(int16_t *y,
       if (intl2_stats) start_meas(intl2_stats);
 
       if ((n2&0x7f) == 0) {  // n2 is a multiple of 128 bits
-
         // re-order the decoded bits in theregular order
         // as it is presently ordered as 16 sequential columns
 #if defined(__x86_64__) || defined(__i386__)
-        __m128i* dbytes=(__m128i*)decoded_bytes_interl;
+        __m128i *dbytes=(__m128i *)decoded_bytes_interl;
         __m128i shuffle=SHUFFLE16(7,6,5,4,3,2,1,0);
         __m128i mask  __attribute__((aligned(16)));
         int n_128=n2>>7;
@@ -1239,10 +1153,9 @@ uint8_t phy_threegpplte_turbo_decoder8(int16_t *y,
           __m128i tmp __attribute__((aligned(16)));
           tmp=_mm_shuffle_epi8(dbytes[i],shuffle);
           __m128i tmp2 __attribute__((aligned(16))) ;
-
           tmp2=_mm_and_si128(tmp,mask);
           tmp2=_mm_cmpeq_epi16(tmp2,mask);
-	  //	  printf("decoded_bytes %p\n",decoded_bytes);
+          //    printf("decoded_bytes %p\n",decoded_bytes);
           decoded_bytes[n_128*0+i]=(uint8_t) _mm_movemask_epi8(_mm_packs_epi16(tmp2,zeros));
           int j;
 
@@ -1253,22 +1166,22 @@ uint8_t phy_threegpplte_turbo_decoder8(int16_t *y,
             decoded_bytes[n_128*j +i]=(uint8_t) _mm_movemask_epi8(_mm_packs_epi16(tmp2,zeros));
           }
         }
+
 #elif defined(__arm__)
-        uint8x16_t* dbytes=(uint8x16_t*)decoded_bytes_interl;
+        uint8x16_t *dbytes=(uint8x16_t *)decoded_bytes_interl;
         uint16x8_t mask  __attribute__((aligned(16)));
         int n_128=n2>>7;
 
         for (i=0; i<n_128; i++) {
           mask=vdupq_n_u16(1);
           uint8x16_t tmp __attribute__((aligned(16)));
-          tmp=vcombine_u8(vrev64_u8(((uint8x8_t*)&dbytes[i])[1]),vrev64_u8(((uint8x8_t*)&dbytes[i])[0]));
+          tmp=vcombine_u8(vrev64_u8(((uint8x8_t *)&dbytes[i])[1]),vrev64_u8(((uint8x8_t *)&dbytes[i])[0]));
           vst1q_lane_u8(&decoded_bytes[n_128*0+i],(uint8x16_t)vpaddlq_u32(vpaddlq_u16(vpaddlq_u8(vandq_u8(tmp, Powers)))),0);
-
           int j;
 
           for (j=1; j<16; j++) {
             mask=vshlq_n_u16(mask,1);
-	    vst1q_lane_u8(&decoded_bytes[n_128*0+i],(uint8x16_t)vpaddlq_u32(vpaddlq_u16(vpaddlq_u8(vandq_u8(tmp, Powers)))),0);
+            vst1q_lane_u8(&decoded_bytes[n_128*0+i],(uint8x16_t)vpaddlq_u32(vpaddlq_u16(vpaddlq_u8(vandq_u8(tmp, Powers)))),0);
           }
         }
 
@@ -1313,9 +1226,9 @@ uint8_t phy_threegpplte_turbo_decoder8(int16_t *y,
           tmp=vsetq_lane_s8(((llr_t *)tmp128)[*pi6_p++],tmp,10);
           tmp=vsetq_lane_s8(((llr_t *)tmp128)[*pi6_p++],tmp,9);
           tmp=vsetq_lane_s8(((llr_t *)tmp128)[*pi6_p++],tmp,8);
-	  uint64x2_t Mask= vpaddlq_u32(vpaddlq_u16(vpaddlq_u8(vandq_u8(vcgtq_s8(tmp,zeros), Powers))));
-	  vst1q_lane_u8(&((uint8_t*)&decoded_bytes[i])[0], (uint8x16_t)Mask, 0);
-	  vst1q_lane_u8(&((uint8_t*)&decoded_bytes[i])[1], (uint8x16_t)Mask, 8);
+          uint64x2_t Mask= vpaddlq_u32(vpaddlq_u16(vpaddlq_u8(vandq_u8(vcgtq_s8(tmp,zeros), Powers))));
+          vst1q_lane_u8(&((uint8_t *)&decoded_bytes[i])[0], (uint8x16_t)Mask, 0);
+          vst1q_lane_u8(&((uint8_t *)&decoded_bytes[i])[1], (uint8x16_t)Mask, 8);
 #endif
         }
       }
@@ -1324,41 +1237,40 @@ uint8_t phy_threegpplte_turbo_decoder8(int16_t *y,
       oldcrc= *((unsigned int *)(&decoded_bytes[(n>>3)-crc_len]));
 
       switch (crc_type) {
-
-      case CRC24_A:
-        oldcrc&=0x00ffffff;
-        crc = crc24a(&decoded_bytes[F>>3],
-                     n-24-F)>>8;
-        temp=((uint8_t *)&crc)[2];
-        ((uint8_t *)&crc)[2] = ((uint8_t *)&crc)[0];
-        ((uint8_t *)&crc)[0] = temp;
-        break;
-
-      case CRC24_B:
-        oldcrc&=0x00ffffff;
-        crc = crc24b(decoded_bytes,
-                     n-24)>>8;
-        temp=((uint8_t *)&crc)[2];
-        ((uint8_t *)&crc)[2] = ((uint8_t *)&crc)[0];
-        ((uint8_t *)&crc)[0] = temp;
-        break;
-
-      case CRC16:
-        oldcrc&=0x0000ffff;
-        crc = crc16(decoded_bytes,
-                    n-16)>>16;
-        break;
-
-      case CRC8:
-        oldcrc&=0x000000ff;
-        crc = crc8(decoded_bytes,
-                   n-8)>>24;
-        break;
-
-      default:
-        printf("FATAL: 3gpplte_turbo_decoder_sse.c: Unknown CRC\n");
-        return(255);
-        break;
+        case CRC24_A:
+          oldcrc&=0x00ffffff;
+          crc = crc24a(&decoded_bytes[F>>3],
+                       n-24-F)>>8;
+          temp=((uint8_t *)&crc)[2];
+          ((uint8_t *)&crc)[2] = ((uint8_t *)&crc)[0];
+          ((uint8_t *)&crc)[0] = temp;
+          break;
+
+        case CRC24_B:
+          oldcrc&=0x00ffffff;
+          crc = crc24b(decoded_bytes,
+                       n-24)>>8;
+          temp=((uint8_t *)&crc)[2];
+          ((uint8_t *)&crc)[2] = ((uint8_t *)&crc)[0];
+          ((uint8_t *)&crc)[0] = temp;
+          break;
+
+        case CRC16:
+          oldcrc&=0x0000ffff;
+          crc = crc16(decoded_bytes,
+                      n-16)>>16;
+          break;
+
+        case CRC8:
+          oldcrc&=0x000000ff;
+          crc = crc8(decoded_bytes,
+                     n-8)>>24;
+          break;
+
+        default:
+          printf("FATAL: 3gpplte_turbo_decoder_sse.c: Unknown CRC\n");
+          return(255);
+          break;
       }
 
       if (intl2_stats) stop_meas(intl2_stats);
@@ -1372,13 +1284,13 @@ uint8_t phy_threegpplte_turbo_decoder8(int16_t *y,
     if (iteration_cnt < max_iterations) {
       log_map8(systematic1,yparity1,m11,m10,alpha,beta,ext,n2,0,F,offset8_flag,alpha_stats,beta_stats,gamma_stats,ext_stats);
 #if defined(__x86_64__) || defined(__i386__)
-      __m128i* ext_128=(__m128i*) ext;
-      __m128i* s1_128=(__m128i*) systematic1;
-      __m128i* s0_128=(__m128i*) systematic0;
+      __m128i *ext_128=(__m128i *) ext;
+      __m128i *s1_128=(__m128i *) systematic1;
+      __m128i *s0_128=(__m128i *) systematic0;
 #elif defined(__arm__)
-      int8x16_t* ext_128=(int8x16_t*) ext;
-      int8x16_t* s1_128=(int8x16_t*) systematic1;
-      int8x16_t* s0_128=(int8x16_t*) systematic0;
+      int8x16_t *ext_128=(int8x16_t *) ext;
+      int8x16_t *s1_128=(int8x16_t *) systematic1;
+      int8x16_t *s0_128=(int8x16_t *) systematic0;
 #endif
       int myloop=n2>>4;
 
@@ -1394,5 +1306,4 @@ uint8_t phy_threegpplte_turbo_decoder8(int16_t *y,
   }
 
   return(iteration_cnt);
-
 }
diff --git a/openair1/PHY/CODING/ccoding_byte.c b/openair1/PHY/CODING/ccoding_byte.c
index db91e68dc8f020c63b1d610cfbfb6d1f93ebaa3a..e4617d1404c6df009efab4be9d46a0e299c87d2f 100644
--- a/openair1/PHY/CODING/ccoding_byte.c
+++ b/openair1/PHY/CODING/ccoding_byte.c
@@ -47,27 +47,20 @@ void
 ccodedot11_encode (unsigned int numbytes,
                    unsigned char *inPtr,
                    unsigned char *outPtr,
-                   unsigned char puncturing)
-{
+                   unsigned char puncturing) {
   unsigned int             state;
-
   unsigned char              c, out, shiftbit =0;
-
   //  printf("In ccodedot11_encode (%d,%p,%p,%d)\n",numbytes,inPtr,outPtr,puncturing);
-
 #ifdef DEBUG_CCODE
   unsigned int  dummy;
 #endif //DEBUG_CCODE
   int bit_index;
-
   /* The input bit is shifted in position 8 of the state.
      Shiftbit will take values between 1 and 8 */
   state = 0;
-
 #ifdef DEBUG_CCODE
   dummy = 0;
 #endif //DEBUG_CCODE
-
   /* Do not increment inPtr until we read the next octet */
   bit_index=0;
 
@@ -78,85 +71,75 @@ ccodedot11_encode (unsigned int numbytes,
 #endif //DEBUG_CCODE
 
     switch (puncturing) {
-    case 0:  //rate 1/2
-      for (shiftbit = 0; shiftbit<8; shiftbit++) {
-
-        state >>= 1;
-
-        if ((c&(1<<shiftbit)) != 0) {
-          state |= 64;
-        }
+      case 0:  //rate 1/2
+        for (shiftbit = 0; shiftbit<8; shiftbit++) {
+          state >>= 1;
 
-        out = ccodedot11_table[state];
-
-        *outPtr++ = out  & 1;
-        *outPtr++ = (out>>1)&1;
+          if ((c&(1<<shiftbit)) != 0) {
+            state |= 64;
+          }
 
+          out = ccodedot11_table[state];
+          *outPtr++ = out  & 1;
+          *outPtr++ = (out>>1)&1;
 #ifdef DEBUG_CCODE
-        printf("%d: %d -> %d (%d)\n",dummy,state,out,ccodedot11_table[state]);
-        dummy+=2;
+          printf("%u: %u -> %d (%u)\n",dummy,state,out,ccodedot11_table[state]);
+          dummy+=2;
 #endif //DEBUG_CCODE      
+        }
 
-      }
-
-      break;
-
-    case 1: // rate 3/4
-      for (shiftbit = 0; shiftbit<8; shiftbit++) {
+        break;
 
-        state >>= 1;
+      case 1: // rate 3/4
+        for (shiftbit = 0; shiftbit<8; shiftbit++) {
+          state >>= 1;
 
-        if ((c&(1<<shiftbit)) != 0) {
-          state |= 64;
-        }
+          if ((c&(1<<shiftbit)) != 0) {
+            state |= 64;
+          }
 
-        out = ccodedot11_table[state];
+          out = ccodedot11_table[state];
 
-        if (bit_index<2)
-          *outPtr++ = out  & 1;
+          if (bit_index<2)
+            *outPtr++ = out  & 1;
 
-        if (bit_index!=1)
-          *outPtr++ = (out>>1)&1;
+          if (bit_index!=1)
+            *outPtr++ = (out>>1)&1;
 
 #ifdef DEBUG_CCODE
-        printf("%d: %d -> %d (%d)\n",dummy,state,out,ccodedot11_table[state]);
-        dummy+=2;
+          printf("%u: %u -> %d (%u)\n",dummy,state,out,ccodedot11_table[state]);
+          dummy+=2;
 #endif //DEBUG_CCODE      
+          bit_index=(bit_index==2)?0:(bit_index+1);
+        }
 
-        bit_index=(bit_index==2)?0:(bit_index+1);
-      }
-
-      break;
-
-    case 2: // rate 2/3
-      for (shiftbit = 0; shiftbit<8; shiftbit++) {
-
-        state >>= 1;
+        break;
 
-        if ((c&(1<<shiftbit)) != 0) {
-          state |= 64;
-        }
+      case 2: // rate 2/3
+        for (shiftbit = 0; shiftbit<8; shiftbit++) {
+          state >>= 1;
 
-        out = ccodedot11_table[state];
+          if ((c&(1<<shiftbit)) != 0) {
+            state |= 64;
+          }
 
-        *outPtr++ = out  & 1;
+          out = ccodedot11_table[state];
+          *outPtr++ = out  & 1;
 
-        if (bit_index==0)
-          *outPtr++ = (out>>1)&1;
+          if (bit_index==0)
+            *outPtr++ = (out>>1)&1;
 
 #ifdef DEBUG_CCODE
-        printf("%d: %d -> %d (%d)\n",dummy,state,out,ccodedot11_table[state]);
-        dummy+=2;
+          printf("%d: %u -> %d (%u)\n",dummy,state,out,ccodedot11_table[state]);
+          dummy+=2;
 #endif //DEBUG_CCODE      
+          bit_index=(bit_index==0)?1:0;
+        }
 
-        bit_index=(bit_index==0)?1:0;
-
-      }
-
-      break;
+        break;
 
-    default:
-      break;
+      default:
+        break;
     }
   }
 
@@ -181,8 +164,6 @@ ccodedot11_encode (unsigned int numbytes,
   }
 
   */
-
-
 }
 
 
@@ -197,8 +178,7 @@ ccodedot11_encode (unsigned int numbytes,
 /* Basic code table initialization for constraint length 7 */
 /* Input in MSB, followed by state in 6 LSBs */
 
-void ccodedot11_init(void)
-{
+void ccodedot11_init(void) {
   unsigned int  i, j, k, sum;
 
   for (i = 0; i < 128; i++) {
@@ -219,8 +199,7 @@ void ccodedot11_init(void)
 }
 
 /* Input in LSB, followed by state in 6 MSBs */
-void ccodedot11_init_inv(void)
-{
+void ccodedot11_init_inv(void) {
   unsigned int  i, j, k, sum;
 
   for (i = 0; i < 128; i++) {
@@ -251,21 +230,15 @@ void ccodedot11_init_inv(void)
 #ifdef DEBUG_CCODE
 #include <stdio.h>
 
-main()
-{
+main() {
   unsigned char test[] = "0Thebigredfox";
   unsigned char output[512], *inPtr, *outPtr;
   unsigned int i;
-
   test[0] = 128;
   test[1] = 0;
-
-
   ccodedot11_init();
-
   inPtr = test;
   outPtr = output;
-
   ccodedot11_encode(16, inPtr, outPtr,0);
 
   for (i = 0; i < 32; i++) printf("%x ", output[i]);
diff --git a/openair1/PHY/CODING/ccoding_byte_lte.c b/openair1/PHY/CODING/ccoding_byte_lte.c
index 870e9ba4700c15e16c42d4b18e3a975ef757e51e..f41b073a78d25c77c4b1b60950df24b196db2b61 100644
--- a/openair1/PHY/CODING/ccoding_byte_lte.c
+++ b/openair1/PHY/CODING/ccoding_byte_lte.c
@@ -52,20 +52,16 @@ ccodelte_encode (int32_t numbits,
                  uint8_t add_crc,
                  uint8_t *inPtr,
                  uint8_t *outPtr,
-                 uint16_t rnti)
-{
+                 uint16_t rnti) {
   uint32_t             state;
-
   uint8_t              c, out, first_bit;
   int8_t shiftbit=0;
   uint16_t c16;
   uint16_t next_last_byte=0;
   uint32_t crc=0;
-
 #ifdef DEBUG_CCODE
   uint32_t  dummy=0;
 #endif //DEBUG_CCODE
-
   /* The input bit is shifted in position 8 of the state.
      Shiftbit will take values between 1 and 8 */
   state = 0;
@@ -137,17 +133,12 @@ ccodelte_encode (int32_t numbits,
 #endif //DEBUG_CCODE
   /* Do not increment inPtr until we read the next octet */
 
-
-
-
   while (numbits > 0) {
-
     c = *inPtr++;
 #ifdef DEBUG_CCODE
     printf("** %x **\n",c);
 #endif //DEBUG_CCODE
 
-
     //    for (shiftbit = 0; (shiftbit<8) && (numbits>0);shiftbit++,numbits--) {
     for (shiftbit = 7; (shiftbit>=0) && (numbits>0); shiftbit--,numbits--) {
       state >>= 1;
@@ -157,23 +148,18 @@ ccodelte_encode (int32_t numbits,
       }
 
       out = ccodelte_table[state];
-
       *outPtr++ = out  & 1;
       *outPtr++ = (out>>1)&1;
       *outPtr++ = (out>>2)&1;
-
 #ifdef DEBUG_CCODE
       printf("numbits %d, input %d, outbit %d: %d -> %d (%d%d%d)\n",numbits,state>>6,dummy,state,out,out&1,(out>>1)&1,(out>>2)&1);
       dummy+=3;
 #endif //DEBUG_CCODE      
-
     }
-
   }
 
   // now code 8-bit CRC for UCI
   if (add_crc == 1) {
-
     c = (uint8_t)(crc>>24);
 
     //    for (shiftbit = 0; (shiftbit<8);shiftbit++) {
@@ -185,22 +171,18 @@ ccodelte_encode (int32_t numbits,
       }
 
       out = ccodelte_table[state];
-
       *outPtr++ = out  & 1;
       *outPtr++ = (out>>1)&1;
       *outPtr++ = (out>>2)&1;
-
 #ifdef DEBUG_CCODE
-      printf("crc bit %d input %d, outbit %d: %d -> %d (%d)\n",shiftbit,state>>6,dummy,state,out,ccodelte_table[state]);
+      printf("crc bit %d input %d, outbit %d: %d -> %d (%u)\n",shiftbit,state>>6,dummy,state,out,ccodelte_table[state]);
       dummy+=3;
 #endif //DEBUG_CCODE      
-
     }
   }
 
   // now code 16-bit CRC for DCI
   if (add_crc == 2) {
-
     c16 = (uint16_t)(crc>>16);
 
     //    for (shiftbit = 0; (shiftbit<16);shiftbit++) {
@@ -212,16 +194,13 @@ ccodelte_encode (int32_t numbits,
       }
 
       out = ccodelte_table[state];
-
       *outPtr++ = out  & 1;
       *outPtr++ = (out>>1)&1;
       *outPtr++ = (out>>2)&1;
-
 #ifdef DEBUG_CCODE
-      printf("crc bit %d input %d, outbit %d: %d -> %d (%d)\n",shiftbit,state>>6,dummy,state,out,ccodelte_table[state]);
+      printf("crc bit %d input %d, outbit %d: %d -> %d (%u)\n",shiftbit,state>>6,dummy,state,out,ccodelte_table[state]);
       dummy+=3;
 #endif //DEBUG_CCODE      
-
     }
   }
 }
@@ -238,8 +217,7 @@ ccodelte_encode (int32_t numbits,
 /* Basic code table initialization for constraint length 7 */
 /* Input in MSB, followed by state in 6 LSBs */
 
-void ccodelte_init(void)
-{
+void ccodelte_init(void) {
   unsigned int  i, j, k, sum;
 
   for (i = 0; i < 128; i++) {
@@ -260,8 +238,7 @@ void ccodelte_init(void)
 }
 
 /* Input in LSB, followed by state in 6 MSBs */
-void ccodelte_init_inv(void)
-{
+void ccodelte_init_inv(void) {
   unsigned int  i, j, k, sum;
 
   for (i = 0; i < 128; i++) {
@@ -281,8 +258,7 @@ void ccodelte_init_inv(void)
   }
 }
 
-void ccodedab_init(void)
-{
+void ccodedab_init(void) {
   unsigned int  i, j, k, sum;
 
   for (i = 0; i < 128; i++) {
@@ -303,8 +279,7 @@ void ccodedab_init(void)
 }
 
 /* Input in LSB, followed by state in 6 MSBs */
-void ccodedab_init_inv(void)
-{
+void ccodedab_init_inv(void) {
   unsigned int  i, j, k, sum;
 
   for (i = 0; i < 128; i++) {
@@ -334,21 +309,15 @@ void ccodedab_init_inv(void)
 #ifdef CCODE_MAIN
 #include <stdio.h>
 
-main()
-{
+main() {
   unsigned char test[] = "Thebigredfox";
   unsigned char output[512], *inPtr, *outPtr;
   unsigned int i;
-
   test[0] = 128;
   test[1] = 0;
-
-
   ccodelte_init();
-
   inPtr = test;
   outPtr = output;
-
   ccodelte_encode(21, inPtr, outPtr);
 
   for (i = 0; i < 21*3; i++) printf("%x ", output[i]);
diff --git a/openair1/PHY/CODING/lte_rate_matching.c b/openair1/PHY/CODING/lte_rate_matching.c
index 9ee5fd396427b583f8aebdc2620fb508bd88285d..f850d475494e2ed7eb47fbb05546527ebc83db97 100644
--- a/openair1/PHY/CODING/lte_rate_matching.c
+++ b/openair1/PHY/CODING/lte_rate_matching.c
@@ -25,8 +25,8 @@
    date: 21.10.2009
 */
 #ifdef MAIN
-#include <stdio.h>
-#include <stdlib.h>
+  #include <stdio.h>
+  #include <stdlib.h>
 #endif
 #include "PHY/defs_eNB.h"
 #include "PHY/LTE_TRANSPORT/transport_common.h"
@@ -42,9 +42,7 @@ static uint32_t bitrev_cc[32] = {1,17,9,25,5,21,13,29,3,19,11,27,7,23,15,31,0,16
 //#define RM_DEBUG2 1
 //#define RM_DEBUG_CC 1
 
-uint32_t sub_block_interleaving_turbo(uint32_t D, uint8_t *d,uint8_t *w)
-{
-
+uint32_t sub_block_interleaving_turbo(uint32_t D, uint8_t *d,uint8_t *w) {
   uint32_t RTC = (D>>5), ND, ND3;
   uint32_t row,col,Kpi;
   uint32_t index3,k,k2;
@@ -64,7 +62,6 @@ uint32_t sub_block_interleaving_turbo(uint32_t D, uint8_t *d,uint8_t *w)
   printf("RTC = %d, Kpi=%d, ND=%d\n",RTC,Kpi,ND);
 #endif
   ND3 = ND*3;
-
   // copy d02 to dD2 (for mod Kpi operation from clause (4), p.16 of 36.212
   d[(3*D)+2] = d[2];
   k=0;
@@ -80,12 +77,9 @@ uint32_t sub_block_interleaving_turbo(uint32_t D, uint8_t *d,uint8_t *w)
     index3 = bitrev_x3[col];//3*index;
 
     for (row=0; row<RTC; row++) {
-
       w[k]            =  d1[index3];//d[index3-ND3];
       w[Kpi+k2]       =  d2[index3];//d[index3-ND3+1];
       w[Kpi+1+k2]     =  d3[index3];//d[index3-ND3+5];
-
-
 #ifdef RM_DEBUG
       printf("row %d, index %d, index-Nd %d index-Nd+1 %d (k,Kpi+2k,Kpi+2k+1) (%d,%d,%d) w(%d,%d,%d)\n",row,index,index-ND,((index+1)%Kpi)-ND,k,Kpi+(k<<1),Kpi+(k<<1)+1,w[k],w[Kpi+(k<<1)],w[Kpi+1+(k<<1)]);
 
@@ -100,7 +94,8 @@ uint32_t sub_block_interleaving_turbo(uint32_t D, uint8_t *d,uint8_t *w)
 
 #endif
       index3+=96;
-      k++;k2+=2;
+      k++;
+      k2+=2;
     }
   }
 
@@ -120,9 +115,7 @@ uint32_t sub_block_interleaving_turbo(uint32_t D, uint8_t *d,uint8_t *w)
 }
 
 
-uint32_t sub_block_interleaving_cc(uint32_t D, uint8_t *d,uint8_t *w)
-{
-
+uint32_t sub_block_interleaving_cc(uint32_t D, uint8_t *d,uint8_t *w) {
   uint32_t RCC = (D>>5), ND, ND3;
   uint32_t row,col,Kpi,index;
   uint32_t index3,k;
@@ -141,7 +134,6 @@ uint32_t sub_block_interleaving_cc(uint32_t D, uint8_t *d,uint8_t *w)
   printf("RCC = %d, Kpi=%d, ND=%d\n",RCC,Kpi,ND);
 #endif
   ND3 = ND*3;
-
   k=0;
 
   for (col=0; col<32; col++) {
@@ -180,9 +172,7 @@ uint32_t sub_block_interleaving_cc(uint32_t D, uint8_t *d,uint8_t *w)
   return(RCC);
 }
 
-void sub_block_deinterleaving_turbo(uint32_t D,int16_t *d,int16_t *w)
-{
-
+void sub_block_deinterleaving_turbo(uint32_t D,int16_t *d,int16_t *w) {
   uint32_t RTC = (D>>5), ND, ND3;
   uint32_t row,col,Kpi,index;
   uint32_t index3,k,k2;
@@ -199,7 +189,6 @@ void sub_block_deinterleaving_turbo(uint32_t D,int16_t *d,int16_t *w)
   printf("RTC = %d, Kpi=%d, ND=%d\n",RTC,Kpi,ND);
 #endif
   ND3 = ND*3;
-
   // copy d02 to dD2 (for mod Kpi operation from clause (4), p.16 of 36.212
   k=0;
   k2=0;
@@ -215,7 +204,6 @@ void sub_block_deinterleaving_turbo(uint32_t D,int16_t *d,int16_t *w)
     index3 = bitrev_x3[col];//3*index;
 
     for (row=0; row<RTC; row++) {
-
       d1[index3]   = w[k];
       d2[index3]   = w[Kpi+k2];
       d3[index3]   = w[Kpi+1+k2];
@@ -229,12 +217,9 @@ void sub_block_deinterleaving_turbo(uint32_t D,int16_t *d,int16_t *w)
 
   //  if (ND>0)
   //    d[2] = LTE_NULL;//d[(3*D)+2];
-
 }
 
-void sub_block_deinterleaving_cc(uint32_t D,int8_t *d,int8_t *w)
-{
-
+void sub_block_deinterleaving_cc(uint32_t D,int8_t *d,int8_t *w) {
   //WANG_Hao uint32_t RCC = (D>>5), ND, ND3;
   uint32_t RCC = (D>>5);
   ptrdiff_t   ND, ND3;
@@ -251,10 +236,9 @@ void sub_block_deinterleaving_cc(uint32_t D,int8_t *d,int8_t *w)
   ND = Kpi - D;
 #ifdef RM_DEBUG2
   printf("sub_block_interleaving_cc : D = %d (%d), d %p, w %p\n",D,D*3,d,w);
-  printf("RCC = %d, Kpi=%d, ND=%d\n",RCC,Kpi,ND);
+  printf("RCC = %d, Kpi=%d, ND=%ld\n",RCC,Kpi,ND);
 #endif
   ND3 = ND*3;
-
   k=0;
 
   for (col=0; col<32; col++) {
@@ -265,24 +249,20 @@ void sub_block_deinterleaving_cc(uint32_t D,int8_t *d,int8_t *w)
     index3 = 3*index;
 
     for (row=0; row<RCC; row++) {
-
       d[index3-ND3]   = w[k];
       d[index3-ND3+1] = w[Kpi+k];
       d[index3-ND3+2] = w[(Kpi<<1)+k];
 #ifdef RM_DEBUG2
-      printf("row %d, index %d k %d index3-ND3 %d w(%d,%d,%d)\n",row,index,k,index3-ND3,w[k],w[Kpi+k],w[(Kpi<<1)+k]);
+      printf("row %d, index %d k %d index3-ND3 %ld w(%d,%d,%d)\n",row,index,k,index3-ND3,w[k],w[Kpi+k],w[(Kpi<<1)+k]);
 #endif
       index3+=96;
       index+=32;
       k++;
     }
   }
-
 }
 
-uint32_t generate_dummy_w(uint32_t D, uint8_t *w,uint8_t F)
-{
-
+uint32_t generate_dummy_w(uint32_t D, uint8_t *w,uint8_t F) {
   uint32_t RTC = (D>>5), ND;
   uint32_t col,Kpi,index;
   int32_t k,k2;
@@ -301,8 +281,6 @@ uint32_t generate_dummy_w(uint32_t D, uint8_t *w,uint8_t F)
   printf("dummy sub_block_interleaving_turbo : D = %d (%d)\n",D,D*3);
   printf("RTC = %d, Kpi=%d, ND=%d, F=%d (Nulled %d)\n",RTC,Kpi,ND,F,(2*F + 3*ND));
 #endif
-
-
   k=0;
   k2=0;
   wKpi = &w[Kpi];
@@ -371,9 +349,7 @@ uint32_t generate_dummy_w(uint32_t D, uint8_t *w,uint8_t F)
   return(RTC);
 }
 
-uint32_t generate_dummy_w_cc(uint32_t D, uint8_t *w)
-{
-
+uint32_t generate_dummy_w_cc(uint32_t D, uint8_t *w) {
   uint32_t RCC = (D>>5), ND;
   uint32_t col,Kpi,index;
   int32_t k;
@@ -392,7 +368,6 @@ uint32_t generate_dummy_w_cc(uint32_t D, uint8_t *w)
   printf("RCC = %d, Kpi=%d, ND=%d, (Nulled %d)\n",RCC,Kpi,ND,3*ND);
 #endif
   //  ND3 = ND*3;
-
   // copy d02 to dD2 (for mod Kpi operation from clause (4), p.16 of 36.212
   k=0;
 
@@ -466,8 +441,6 @@ uint32_t lte_rate_matching_turbo(uint32_t RTC,
                                  uint8_t nb_rb)
 //                                 uint8_t m)
 {
-
-
   uint32_t Nir,Ncb,Gp,GpmodC,E,Ncbmod,ind,k;
   //  int cnt=0;
   uint8_t *e2;
@@ -487,11 +460,11 @@ uint32_t lte_rate_matching_turbo(uint32_t RTC,
   if (Mdlharq>0) {  // Downlink
     Nir = Nsoft/Kmimo/cmin(8,Mdlharq);
     Ncb = cmin(Nir/C,3*(RTC<<5));
-  }
-  else {  // Uplink
+  } else { // Uplink
     Nir=0;
     Ncb = 3*(RTC<<5); // Kw
   }
+
 #ifdef RM_DEBUG_TX
 
   if (rvidx==0 && r==0) {
@@ -518,7 +491,6 @@ uint32_t lte_rate_matching_turbo(uint32_t RTC,
   AssertFatal(Qm>0,"Qm is 0\n");
   Gp = G/Nl/Qm;
   GpmodC = Gp%C;
-
 #ifdef RM_DEBUG
   LOG_D(PHY,"lte_rate_matching_turbo: Ncb %d, Kw %d, Nir/C %d, rvidx %d, G %d, Qm %d, Nl%d, r %d\n",Ncb,3*(RTC<<5),Nir/C,rvidx, G, Qm,Nl,r);
 #endif
@@ -529,16 +501,12 @@ uint32_t lte_rate_matching_turbo(uint32_t RTC,
     E = Nl*Qm * ((GpmodC==0?0:1) + (Gp/C));
 
   Ncbmod = Ncb%(RTC<<3);
-
   ind = RTC * (2+(rvidx*(((Ncbmod==0)?0:1) + (Ncb/(RTC<<3)))*2));
-
 #ifdef RM_DEBUG_TX
   printf("lte_rate_matching_turbo: E %d, k0 %d, Ncbmod %d, Ncb/(RTC<<3) %d\n",E,ind,Ncbmod,Ncb/(RTC<<3));
 #endif
-
   //e2=e+(r*E);
   e2 = e;
-
   k=0;
 
   for (; (ind<Ncb)&&(k<E); ind++) {
@@ -633,25 +601,16 @@ uint32_t lte_rate_matching_turbo(uint32_t RTC,
 uint32_t lte_rate_matching_cc(uint32_t RCC,
                               uint16_t E,
                               uint8_t *w,
-                              uint8_t *e)
-{
-
-
+                              uint8_t *e) {
   uint32_t ind=0,k;
-
   uint16_t Kw = 3*(RCC<<5);
-
 #ifdef RM_DEBUG_CC
   uint32_t nulled=0;
-
   printf("lte_rate_matching_cc: Kw %d, E %d\n",Kw, E);
 #endif
 
   for (k=0; k<E; k++) {
-
-
     while(w[ind] == LTE_NULL) {
-
 #ifdef RM_DEBUG_CC
       nulled++;
       printf("RM_TX_CC : ind %d, NULL\n",ind);
@@ -662,7 +621,6 @@ uint32_t lte_rate_matching_cc(uint32_t RCC,
         ind=0;
     }
 
-
     e[k] = w[ind];
 #ifdef RM_DEBUG_CC
     //    printf("k %d ind %d, w %c(%d)\n",k,ind,w[ind],w[ind]);
@@ -695,10 +653,7 @@ int lte_rate_matching_turbo_rx(uint32_t RTC,
                                uint8_t Qm,
                                uint8_t Nl,
                                uint8_t r,
-                               uint32_t *E_out)
-{
-
-
+                               uint32_t *E_out) {
   uint32_t Nir,Ncb,Gp,GpmodC,E,Ncbmod,ind,k;
   int16_t *soft_input2;
   //   int32_t w_tmp;
@@ -708,15 +663,14 @@ int lte_rate_matching_turbo_rx(uint32_t RTC,
 
   if (Kmimo==0 || C==0 || Qm==0 || Nl==0) {
     printf("lte_rate_matching.c: invalid parameters (Kmimo %d, Mdlharq %d, C %d, Qm %d, Nl %d\n",
-        Kmimo,Mdlharq,C,Qm,Nl);
+           Kmimo,Mdlharq,C,Qm,Nl);
     return(-1);
   }
 
   if (Mdlharq>0) { // Downlink
     Nir = Nsoft/Kmimo/cmin(8,Mdlharq);
     Ncb = cmin(Nir/C,3*(RTC<<5));
-  }
-  else {  // Uplink
+  } else { // Uplink
     Nir=0;
     Ncb = 3*(RTC<<5);
   }
@@ -726,17 +680,13 @@ int lte_rate_matching_turbo_rx(uint32_t RTC,
   Gp = G/Nl/Qm;
   GpmodC = Gp%C;
 
-
-
   if (r < (C-(GpmodC)))
     E = Nl*Qm * (Gp/C);
   else
     E = Nl*Qm * ((GpmodC==0?0:1) + (Gp/C));
 
   Ncbmod = Ncb%(RTC<<3);
-
   ind = RTC * (2+(rvidx*(((Ncbmod==0)?0:1) + (Ncb/(RTC<<3)))*2));
-
 #ifdef RM_DEBUG
   printf("lte_rate_matching_turbo_rx: Clear %d, E %d, Ncb %d, Kw %d, rvidx %d, G %d, Qm %d, Nl%d, r %d\n",clear,E,Ncb,3*(RTC<<5),rvidx, G, Qm,Nl,r);
 #endif
@@ -751,8 +701,8 @@ int lte_rate_matching_turbo_rx(uint32_t RTC,
     if (dummy_w[ind] != LTE_NULL) {
       /*
       if ((w[ind]>0 && soft_input2[k]<0) ||
-	  (w[ind]<0 && soft_input2[k]>0))
-	  printf("ind %d: w %d => soft_in %d\n",ind,w[ind],soft_input2[k]);*/
+      (w[ind]<0 && soft_input2[k]>0))
+      printf("ind %d: w %d => soft_in %d\n",ind,w[ind],soft_input2[k]);*/
       w[ind] += soft_input2[k++];
 #ifdef RM_DEBUG
       printf("RM_RX k%d Ind: %d (%d)\n",k-1,ind,w[ind]);
@@ -831,10 +781,8 @@ int lte_rate_matching_turbo_rx(uint32_t RTC,
       ind=0;
   }
   */
-
   *E_out = E;
   return(0);
-
 }
 
 
@@ -842,28 +790,19 @@ void lte_rate_matching_cc_rx(uint32_t RCC,
                              uint16_t E,
                              int8_t *w,
                              uint8_t *dummy_w,
-                             int8_t *soft_input)
-{
-
-
-
+                             int8_t *soft_input) {
   uint32_t ind=0,k;
   uint16_t Kw = 3*(RCC<<5);
   uint32_t acc=1;
   int16_t w16[Kw];
 #ifdef RM_DEBUG_CC
   uint32_t nulled=0;
-
   printf("lte_rate_matching_cc_rx: Kw %d, E %d, w %p, soft_input %p\n",3*(RCC<<5),E,w,soft_input);
 #endif
-
-
   memset(w,0,Kw);
   memset(w16,0,Kw*sizeof(int16_t));
 
   for (k=0; k<E; k++) {
-
-
     while(dummy_w[ind] == LTE_NULL) {
 #ifdef RM_DEBUG_CC
       nulled++;
@@ -883,10 +822,7 @@ void lte_rate_matching_cc_rx(uint32_t RCC,
 #ifdef RM_DEBUG_CC
     printf("RM_RX_CC k %d (%d) ind: %d (%d)\n",k,soft_input[k],ind,w16[ind]);
 #endif
-
-
     w16[ind] += soft_input[k];
-
     ind++;
 
     if (ind==Kw) {
@@ -907,7 +843,6 @@ void lte_rate_matching_cc_rx(uint32_t RCC,
   }
 
 #ifdef RM_DEBUG_CC
-
   printf("Nulled %d\n",nulled);
 #endif
 }
@@ -915,8 +850,7 @@ void lte_rate_matching_cc_rx(uint32_t RCC,
 
 #ifdef MAIN
 
-void main()
-{
+void main() {
   uint8_t d[96+3+(3*6144)];
   uint8_t w[3*6144],e[12*6144];
   uint32_t RTC,G,rvidx;
@@ -924,7 +858,6 @@ void main()
   uint32_t mod_order = 4;
   uint32_t first_dlsch_symbol = 2;
   uint32_t i;
-
   G = ( nb_rb * (12 * mod_order) * (12-first_dlsch_symbol-3)) ;//( nb_rb * (12 * mod_order) * (14-first_dlsch_symbol-3)) :
 
   // initialize 96 first positions to "LTE_NULL"
diff --git a/openair1/PHY/CODING/lte_segmentation.c b/openair1/PHY/CODING/lte_segmentation.c
index ba79b0171e4e31dac4d411e07b4ab22b66263cbf..4dc531c58f9222b1b0460473154c640ae7fccea6 100644
--- a/openair1/PHY/CODING/lte_segmentation.c
+++ b/openair1/PHY/CODING/lte_segmentation.c
@@ -38,9 +38,7 @@ int lte_segmentation(unsigned char *input_buffer,
                      unsigned int *Cminus,
                      unsigned int *Kplus,
                      unsigned int *Kminus,
-                     unsigned int *F)
-{
-
+                     unsigned int *F) {
   unsigned int L,Bprime,Bprime_by_C,r,Kr,k,s,crc;
 
   if (B<=6144) {
@@ -56,19 +54,19 @@ int lte_segmentation(unsigned char *input_buffer,
 
     Bprime = B+((*C)*L);
 #ifdef DEBUG_SEGMENTATION
-    printf("Bprime %d\n",Bprime);
+    printf("Bprime %u\n",Bprime);
 #endif
   }
 
   if ((*C)>MAX_NUM_DLSCH_SEGMENTS) {
-      LOG_E(PHY,"lte_segmentation.c: too many segments %d, B %d, L %d, Bprime %d\n",*C,B,L,Bprime);
+    LOG_E(PHY,"lte_segmentation.c: too many segments %d, B %d, L %d, Bprime %d\n",*C,B,L,Bprime);
     return(-1);
   }
 
   // Find K+
   Bprime_by_C  = Bprime/(*C);
 #ifdef DEBUG_SEGMENTATION
-  printf("Bprime_by_C %d\n",Bprime_by_C);
+  printf("Bprime_by_C %u\n",Bprime_by_C);
 #endif
   //  Bprime = Bprime_by_C>>3;
 
@@ -93,17 +91,16 @@ int lte_segmentation(unsigned char *input_buffer,
 
     *Kminus = (*Kplus - 32);
   } else if (Bprime_by_C <=6144 ) { // increase by 8 bytes til here
-
     *Kplus = (Bprime_by_C>>6)<<6;
 #ifdef DEBUG_SEGMENTATION
-    printf("Bprime_by_C_by_C %d , Kplus %d\n",Bprime_by_C,*Kplus);
+    printf("Bprime_by_C_by_C %u , Kplus %u\n",Bprime_by_C,*Kplus);
 #endif
 
     if (*Kplus < Bprime_by_C)
       *Kplus = *Kplus + 64;
 
 #ifdef DEBUG_SEGMENTATION
-    printf("Bprime_by_C_by_C %d , Kplus2 %d\n",Bprime_by_C,*Kplus);
+    printf("Bprime_by_C_by_C %u , Kplus2 %u\n",Bprime_by_C,*Kplus);
 #endif
     *Kminus = (*Kplus - 64);
   } else {
@@ -116,25 +113,21 @@ int lte_segmentation(unsigned char *input_buffer,
     *Kminus = 0;
     *Cminus = 0;
   } else {
-
     //    printf("More than one segment (%d), exiting \n",*C);
     //    exit(-1);
     *Cminus = ((*C)*(*Kplus) - (Bprime))/((*Kplus) - (*Kminus));
     *Cplus  = (*C) - (*Cminus);
   }
 
-
   AssertFatal(Bprime <= (*Cplus)*(*Kplus) + (*Cminus)*(*Kminus),
-	      "Bprime %d <  (*Cplus %d)*(*Kplus %d) + (*Cminus %d)*(*Kminus %d)\n",
-	      Bprime,*Cplus,*Kplus,*Cminus,*Kminus);
-
+              "Bprime %d <  (*Cplus %d)*(*Kplus %d) + (*Cminus %d)*(*Kminus %d)\n",
+              Bprime,*Cplus,*Kplus,*Cminus,*Kminus);
   *F = ((*Cplus)*(*Kplus) + (*Cminus)*(*Kminus) - (Bprime));
 #ifdef DEBUG_SEGMENTATION
-  printf("C %d, Cplus %d, Cminus %d, Kplus %d, Kminus %d, Bprime_bytes %d, Bprime %d, F %d\n",*C,*Cplus,*Cminus,*Kplus,*Kminus,Bprime>>3,Bprime,*F);
+  printf("C %u, Cplus %u, Cminus %u, Kplus %u, Kminus %u, Bprime_bytes %u, Bprime %u, F %u\n",*C,*Cplus,*Cminus,*Kplus,*Kminus,Bprime>>3,Bprime,*F);
 #endif
 
   if ((input_buffer) && (output_buffers)) {
-
     for (k=0; k<*F>>3; k++) {
       output_buffers[0][k] = 0;
     }
@@ -142,7 +135,6 @@ int lte_segmentation(unsigned char *input_buffer,
     s=0;
 
     for (r=0; r<*C; r++) {
-
       if (r<*Cminus)
         Kr = *Kminus;
       else
@@ -150,18 +142,18 @@ int lte_segmentation(unsigned char *input_buffer,
 
       while (k<((Kr - L)>>3)) {
         output_buffers[r][k] = input_buffer[s];
-	//	printf("encoding segment %d : byte %d (%d) => %d\n",r,k,Kr>>3,input_buffer[s]);
+        //  printf("encoding segment %d : byte %d (%d) => %d\n",r,k,Kr>>3,input_buffer[s]);
         k++;
         s++;
       }
 
       if (*C > 1) { // add CRC
         crc = crc24b(output_buffers[r],Kr-24)>>8;
-        output_buffers[r][(Kr-24)>>3] = ((uint8_t*)&crc)[2];
-        output_buffers[r][1+((Kr-24)>>3)] = ((uint8_t*)&crc)[1];
-        output_buffers[r][2+((Kr-24)>>3)] = ((uint8_t*)&crc)[0];
+        output_buffers[r][(Kr-24)>>3] = ((uint8_t *)&crc)[2];
+        output_buffers[r][1+((Kr-24)>>3)] = ((uint8_t *)&crc)[1];
+        output_buffers[r][2+((Kr-24)>>3)] = ((uint8_t *)&crc)[0];
 #ifdef DEBUG_SEGMENTATION
-        printf("Segment %d : CRC %x\n",r,crc);
+        printf("Segment %u : CRC %x\n",r,crc);
 #endif
       }
 
@@ -175,9 +167,7 @@ int lte_segmentation(unsigned char *input_buffer,
 
 
 #ifdef MAIN
-main()
-{
-
+main() {
   unsigned int Kplus,Kminus,C,Cplus,Cminus,F,Bbytes;
 
   for (Bbytes=5; Bbytes<2*768; Bbytes++) {
diff --git a/openair1/PHY/LTE_ESTIMATION/lte_dl_channel_estimation.c b/openair1/PHY/LTE_ESTIMATION/lte_dl_channel_estimation.c
index f7c4a3ead3156cb0b2e49ad7db1b837d6ecd5ec6..e50af7cdd8f297a95b8c3eeb440227eb5ec37658 100644
--- a/openair1/PHY/LTE_ESTIMATION/lte_dl_channel_estimation.c
+++ b/openair1/PHY/LTE_ESTIMATION/lte_dl_channel_estimation.c
@@ -34,8 +34,7 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
                               unsigned char Ns,
                               unsigned char p,
                               unsigned char l,
-                              unsigned char symbol)
-{
+                              unsigned char symbol) {
   int pilot[2][200] __attribute__((aligned(16)));
   unsigned char nu,aarx;
   unsigned short k;
@@ -45,16 +44,14 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
   //  unsigned int n;
   //  int i;
   static int interpolateS11S12 = 1;
-
   uint16_t Nid_cell = (eNB_offset == 0) ? ue->frame_parms.Nid_cell : ue->measurements.adj_cell_id[eNB_offset-1];
-
   uint8_t nushift,pilot0,pilot1,pilot2,pilot3;
   uint8_t previous_thread_id = ue->current_thread_id[Ns>>1]==0 ? (RX_NB_TH-1):(ue->current_thread_id[Ns>>1]-1);
   int **dl_ch_estimates         =ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[Ns>>1]].dl_ch_estimates[eNB_offset];
   int **dl_ch_estimates_previous=ue->common_vars.common_vars_rx_data_per_thread[previous_thread_id].dl_ch_estimates[eNB_offset];
   int **rxdataF=ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[Ns>>1]].rxdataF;
-
   pilot0 = 0;
+
   if (ue->frame_parms.Ncp == 0) {  // normal prefix
     pilot1 = 4;
     pilot2 = 7;
@@ -81,7 +78,6 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
     return(-1);
   }
 
-
   //ch_offset     = (l*(ue->frame_parms.ofdm_symbol_size));
   if (ue->high_speed_flag == 0) // use second channel estimate position for temporary storage
     ch_offset     = ue->frame_parms.ofdm_symbol_size ;
@@ -89,93 +85,88 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
     ch_offset     = ue->frame_parms.ofdm_symbol_size*symbol;
 
   symbol_offset = ue->frame_parms.ofdm_symbol_size*symbol;
-
   k = (nu + nushift)%6;
-
 #ifdef DEBUG_CH
-  printf("Channel Estimation : ThreadId %d, eNB_offset %d cell_id %d ch_offset %d, OFDM size %d, Ncp=%d, l=%d, Ns=%d, k=%d\n",ue->current_thread_id[Ns>>1], eNB_offset,Nid_cell,ch_offset,ue->frame_parms.ofdm_symbol_size,
+  printf("Channel Estimation : ThreadId %d, eNB_offset %d cell_id %d ch_offset %d, OFDM size %d, Ncp=%d, l=%d, Ns=%d, k=%d\n",ue->current_thread_id[Ns>>1], eNB_offset,Nid_cell,ch_offset,
+         ue->frame_parms.ofdm_symbol_size,
          ue->frame_parms.Ncp,l,Ns,k);
 #endif
 
   switch (k) {
-  case 0 :
-    f=filt24_0;  //for first pilot of RB, first half
-    f2=filt24_2; //for second pilot of RB, first half
-    fl=filt24_0; //for first pilot of leftmost RB
-    f2l2=filt24_2;
-    //    fr=filt24_2r; //for first pilot of rightmost RB
-    fr=filt24_0r2; //for first pilot of rightmost RB
-    //    f2r2=filt24_0r2;
-    f2r2=filt24_2r;
-
-    f_dc=filt24_0_dcr;
-    f2_dc=filt24_2_dcl;
-
-    break;
-
-  case 1 :
-    f=filt24_1;
-    f2=filt24_3;
-    fl=filt24_1l;
-    f2l2=filt24_3l2;
-    fr=filt24_1r2;
-    f2r2=filt24_3r;
-    f_dc=filt24_1_dcr;  //for first pilot of RB, first half
-    f2_dc=filt24_3_dcl;  //for first pilot of RB, first half
-    break;
-
-  case 2 :
-    f=filt24_2;
-    f2=filt24_4;
-    fl=filt24_2l;
-    f2l2=filt24_4l2;
-    fr=filt24_2r2;
-    f2r2=filt24_4r;
-    f_dc=filt24_2_dcr;  //for first pilot of RB, first half
-    f2_dc=filt24_4_dcl;  //for first pilot of RB, first half
-    break;
-
-  case 3 :
-    f=filt24_3;
-    f2=filt24_5;
-    fl=filt24_3l;
-    f2l2=filt24_5l2;
-    fr=filt24_3r2;
-    f2r2=filt24_5r;
-    f_dc=filt24_3_dcr;  //for first pilot of RB, first half
-    f2_dc=filt24_5_dcl;  //for first pilot of RB, first half
-    break;
-
-  case 4 :
-    f=filt24_4;
-    f2=filt24_6;
-    fl=filt24_4l;
-    f2l2=filt24_6l2;
-    fr=filt24_4r2;
-    f2r2=filt24_6r;
-    f_dc=filt24_4_dcr;  //for first pilot of RB, first half
-    f2_dc=filt24_6_dcl;  //for first pilot of RB, first half
-    break;
-
-  case 5 :
-    f=filt24_5;
-    f2=filt24_7;
-    fl=filt24_5l;
-    f2l2=filt24_7l2;
-    fr=filt24_5r2;
-    f2r2=filt24_7r;
-    f_dc=filt24_5_dcr;  //for first pilot of RB, first half
-    f2_dc=filt24_7_dcl;  //for first pilot of RB, first half
-    break;
-
-  default:
-    LOG_E(PHY,"lte_dl_channel_estimation: k=%d -> ERROR\n",k);
-    return(-1);
-    break;
+    case 0 :
+      f=filt24_0;  //for first pilot of RB, first half
+      f2=filt24_2; //for second pilot of RB, first half
+      fl=filt24_0; //for first pilot of leftmost RB
+      f2l2=filt24_2;
+      //    fr=filt24_2r; //for first pilot of rightmost RB
+      fr=filt24_0r2; //for first pilot of rightmost RB
+      //    f2r2=filt24_0r2;
+      f2r2=filt24_2r;
+      f_dc=filt24_0_dcr;
+      f2_dc=filt24_2_dcl;
+      break;
+
+    case 1 :
+      f=filt24_1;
+      f2=filt24_3;
+      fl=filt24_1l;
+      f2l2=filt24_3l2;
+      fr=filt24_1r2;
+      f2r2=filt24_3r;
+      f_dc=filt24_1_dcr;  //for first pilot of RB, first half
+      f2_dc=filt24_3_dcl;  //for first pilot of RB, first half
+      break;
+
+    case 2 :
+      f=filt24_2;
+      f2=filt24_4;
+      fl=filt24_2l;
+      f2l2=filt24_4l2;
+      fr=filt24_2r2;
+      f2r2=filt24_4r;
+      f_dc=filt24_2_dcr;  //for first pilot of RB, first half
+      f2_dc=filt24_4_dcl;  //for first pilot of RB, first half
+      break;
+
+    case 3 :
+      f=filt24_3;
+      f2=filt24_5;
+      fl=filt24_3l;
+      f2l2=filt24_5l2;
+      fr=filt24_3r2;
+      f2r2=filt24_5r;
+      f_dc=filt24_3_dcr;  //for first pilot of RB, first half
+      f2_dc=filt24_5_dcl;  //for first pilot of RB, first half
+      break;
+
+    case 4 :
+      f=filt24_4;
+      f2=filt24_6;
+      fl=filt24_4l;
+      f2l2=filt24_6l2;
+      fr=filt24_4r2;
+      f2r2=filt24_6r;
+      f_dc=filt24_4_dcr;  //for first pilot of RB, first half
+      f2_dc=filt24_6_dcl;  //for first pilot of RB, first half
+      break;
+
+    case 5 :
+      f=filt24_5;
+      f2=filt24_7;
+      fl=filt24_5l;
+      f2l2=filt24_7l2;
+      fr=filt24_5r2;
+      f2r2=filt24_7r;
+      f_dc=filt24_5_dcr;  //for first pilot of RB, first half
+      f2_dc=filt24_7_dcl;  //for first pilot of RB, first half
+      break;
+
+    default:
+      LOG_E(PHY,"lte_dl_channel_estimation: k=%d -> ERROR\n",k);
+      return(-1);
+      break;
   }
 
-
-
   // generate pilot
   lte_dl_cell_spec_rx(ue,
                       eNB_offset,
@@ -184,27 +175,25 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
                       (l==0)?0:1,
                       p);
 
-
   for (aarx=0; aarx<ue->frame_parms.nb_antennas_rx; aarx++) {
-
     pil   = (int16_t *)&pilot[p][0];
     rxF   = (int16_t *)&rxdataF[aarx][((symbol_offset+k+ue->frame_parms.first_carrier_offset))];
     dl_ch = (int16_t *)&dl_ch_estimates[(p<<1)+aarx][ch_offset];
-
-
     //    if (eNb_id==0)
     memset(dl_ch,0,4*(ue->frame_parms.ofdm_symbol_size));
+
     if (ue->high_speed_flag==0) // multiply previous channel estimate by ch_est_alpha
       multadd_complex_vector_real_scalar(dl_ch-(ue->frame_parms.ofdm_symbol_size<<1),
                                          ue->ch_est_alpha,dl_ch-(ue->frame_parms.ofdm_symbol_size<<1),
                                          1,ue->frame_parms.ofdm_symbol_size);
+
 #ifdef DEBUG_CH
     printf("k %d, first_carrier %d\n",k,ue->frame_parms.first_carrier_offset);
 #endif
+
     if ((ue->frame_parms.N_RB_DL==6)  ||
         (ue->frame_parms.N_RB_DL==50) ||
         (ue->frame_parms.N_RB_DL==100)) {
-
       //First half of pilots
       // Treat first 2 pilots specially (left edge)
       ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
@@ -219,7 +208,6 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
       pil+=2;    // Re Im
       rxF+=12;
       dl_ch+=8;
-
       ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
       ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15);
 #ifdef DEBUG_CH
@@ -234,28 +222,22 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
       dl_ch+=16;
 
       for (pilot_cnt=2; pilot_cnt<((ue->frame_parms.N_RB_DL)-1); pilot_cnt+=2) {
-
-
-
         ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15); //Re
         ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15); //Im
 #ifdef DEBUG_CH
-	printf("pilot %d : rxF - > (%d,%d) ch -> (%d,%d), pil -> (%d,%d) \n",pilot_cnt,rxF[0],rxF[1],ch[0],ch[1],pil[0],pil[1]);
+        printf("pilot %u : rxF - > (%d,%d) ch -> (%d,%d), pil -> (%d,%d) \n",pilot_cnt,rxF[0],rxF[1],ch[0],ch[1],pil[0],pil[1]);
 #endif
         multadd_real_vector_complex_scalar(f,
                                            ch,
                                            dl_ch,
                                            24);
-
-
         pil+=2;    // Re Im
         rxF+=12;
         dl_ch+=8;
-
         ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
         ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15);
 #ifdef DEBUG_CH
-	printf("pilot %d : rxF - > (%d,%d) ch -> (%d,%d), pil -> (%d,%d) \n",pilot_cnt+1,rxF[0],rxF[1],ch[0],ch[1],pil[0],pil[1]);
+        printf("pilot %u : rxF - > (%d,%d) ch -> (%d,%d), pil -> (%d,%d) \n",pilot_cnt+1,rxF[0],rxF[1],ch[0],ch[1],pil[0],pil[1]);
 #endif
         multadd_real_vector_complex_scalar(f2,
                                            ch,
@@ -264,29 +246,25 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
         pil+=2;
         rxF+=12;
         dl_ch+=16;
-
       }
 
       //       printf("Second half\n");
       // Second half of RBs
-
       k = (nu + nushift)%6;
 
       if (k > 6)
         k -=6;
 
       rxF   = (int16_t *)&rxdataF[aarx][((symbol_offset+1+k))];
-
 #ifdef DEBUG_CH
       printf("second half k %d\n",k);
 #endif
-      for (pilot_cnt=0; pilot_cnt<((ue->frame_parms.N_RB_DL)-3); pilot_cnt+=2) {
-
 
+      for (pilot_cnt=0; pilot_cnt<((ue->frame_parms.N_RB_DL)-3); pilot_cnt+=2) {
         ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
         ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15);
 #ifdef DEBUG_CH
-	printf("pilot %d : rxF - > (%d,%d) ch -> (%d,%d), pil -> (%d,%d) \n",pilot_cnt,rxF[0],rxF[1],ch[0],ch[1],pil[0],pil[1]);
+        printf("pilot %u : rxF - > (%d,%d) ch -> (%d,%d), pil -> (%d,%d) \n",pilot_cnt,rxF[0],rxF[1],ch[0],ch[1],pil[0],pil[1]);
 #endif
         multadd_real_vector_complex_scalar(f,
                                            ch,
@@ -295,11 +273,10 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
         pil+=2;
         rxF+=12;
         dl_ch+=8;
-
         ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
         ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15);
 #ifdef DEBUG_CH
-	printf("pilot %d : rxF - > (%d,%d) ch -> (%d,%d), pil -> (%d,%d) \n",pilot_cnt+1,rxF[0],rxF[1],ch[0],ch[1],pil[0],pil[1]);
+        printf("pilot %u : rxF - > (%d,%d) ch -> (%d,%d), pil -> (%d,%d) \n",pilot_cnt+1,rxF[0],rxF[1],ch[0],ch[1],pil[0],pil[1]);
 #endif
         multadd_real_vector_complex_scalar(f2,
                                            ch,
@@ -308,13 +285,12 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
         pil+=2;
         rxF+=12;
         dl_ch+=16;
-
       }
 
       ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
       ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15);
 #ifdef DEBUG_CH
-      printf("pilot %d: rxF -> (%d,%d) ch -> (%d,%d), pil -> (%d,%d) \n",pilot_cnt,rxF[0],rxF[1],ch[0],ch[1],pil[0],pil[1]);
+      printf("pilot %u: rxF -> (%d,%d) ch -> (%d,%d), pil -> (%d,%d) \n",pilot_cnt,rxF[0],rxF[1],ch[0],ch[1],pil[0],pil[1]);
 #endif
       multadd_real_vector_complex_scalar(fr,
                                          ch,
@@ -323,34 +299,25 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
       pil+=2;    // Re Im
       rxF+=12;
       dl_ch+=8;
-
       ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
       ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15);
 #ifdef DEBUG_CH
-      printf("pilot %d: rxF - > (%d,%d) ch -> (%d,%d), pil -> (%d,%d) \n",pilot_cnt+1,rxF[0],rxF[1],ch[0],ch[1],pil[0],pil[1]);
+      printf("pilot %u: rxF - > (%d,%d) ch -> (%d,%d), pil -> (%d,%d) \n",pilot_cnt+1,rxF[0],rxF[1],ch[0],ch[1],pil[0],pil[1]);
 #endif
       multadd_real_vector_complex_scalar(f2r2,
                                          ch,
                                          dl_ch,
                                          24);
-
-
-    }
-
-    else if (ue->frame_parms.N_RB_DL==25) {
+    } else if (ue->frame_parms.N_RB_DL==25) {
       //printf("Channel estimation\n");
-
       // Treat first 2 pilots specially (left edge)
       ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
       ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15);
-
 #ifdef DEBUG_CH
       printf("pilot 0 : rxF - > (%d,%d) ch -> (%d,%d), pil -> (%d,%d) \n",rxF[0],rxF[1],ch[0],ch[1],pil[0],pil[1]);
-
       //      ch[0] = 1024;
       //      ch[1] = -128;
 #endif
-
       multadd_real_vector_complex_scalar(fl,
                                          ch,
                                          dl_ch,
@@ -358,17 +325,13 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
       pil+=2;    // Re Im
       rxF+=12;
       dl_ch+=8;
-
       ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
       ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15);
-
 #ifdef DEBUG_CH
       printf("pilot 1 : rxF - > (%d,%d) ch -> (%d,%d), pil -> (%d,%d) \n",rxF[0],rxF[1],ch[0],ch[1],pil[0],pil[1]);
-
       //      ch[0] = 1024;
       //      ch[1] = -128;
 #endif
-
       multadd_real_vector_complex_scalar(f2l2,
                                          ch,
                                          dl_ch,
@@ -378,21 +341,15 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
       dl_ch+=16;
 
       for (pilot_cnt=2; pilot_cnt<24; pilot_cnt+=2) {
-
         // printf("pilot[%d][%d] (%d,%d)\n",p,rb,pil[0],pil[1]);
         // printf("rx[%d][%d] -> (%d,%d)\n",p,ue->frame_parms.first_carrier_offset + ue->frame_parms.nushift + 6*rb+(3*p),rxF[0],rxF[1]);
-
         ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
         ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15);
-
 #ifdef DEBUG_CH
-        printf("pilot %d : rxF - > (%d,%d) ch -> (%d,%d), pil -> (%d,%d) \n",pilot_cnt,rxF[0],rxF[1],ch[0],ch[1],pil[0],pil[1]);
-
+        printf("pilot %u : rxF - > (%d,%d) ch -> (%d,%d), pil -> (%d,%d) \n",pilot_cnt,rxF[0],rxF[1],ch[0],ch[1],pil[0],pil[1]);
         //  ch[0] = 1024;
         //  ch[1] = -128;
 #endif
-
-
         multadd_real_vector_complex_scalar(f,
                                            ch,
                                            dl_ch,
@@ -400,13 +357,10 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
         pil+=2;    // Re Im
         rxF+=12;
         dl_ch+=8;
-
         ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
         ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15);
-
 #ifdef DEBUG_CH
-        printf("pilot %d : rxF - > (%d,%d) ch -> (%d,%d), pil -> (%d,%d) \n",pilot_cnt+1,rxF[0],rxF[1],ch[0],ch[1],pil[0],pil[1]);
-
+        printf("pilot %u : rxF - > (%d,%d) ch -> (%d,%d), pil -> (%d,%d) \n",pilot_cnt+1,rxF[0],rxF[1],ch[0],ch[1],pil[0],pil[1]);
         //  ch[0] = 1024;
         //  ch[1] = -128;
 #endif
@@ -417,39 +371,31 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
         pil+=2;
         rxF+=12;
         dl_ch+=16;
-
       }
 
       ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
       ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15);
 #ifdef DEBUG_CH
       printf("pilot 24: rxF -> (%d,%d) ch -> (%d,%d), pil -> (%d,%d) \n",rxF[0],rxF[1],ch[0],ch[1],pil[0],pil[1]);
-
       //      ch[0] = 1024;
       //      ch[1] = -128;
 #endif
-
-
       multadd_real_vector_complex_scalar(f_dc,
                                          ch,
                                          dl_ch,
                                          24);
       pil+=2;    // Re Im
       dl_ch+=8;
-
       // printf("Second half\n");
       // Second half of RBs
       rxF   = (int16_t *)&rxdataF[aarx][((symbol_offset+1+k))];
-
       ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
       ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15);
 #ifdef DEBUG_CH
       printf("pilot 25: rxF -> (%d,%d) ch -> (%d,%d), pil -> (%d,%d) \n",rxF[0],rxF[1],ch[0],ch[1],pil[0],pil[1]);
-
       //      ch[0] = 1024;
       //      ch[1] = -128;
 #endif
-
       multadd_real_vector_complex_scalar(f2_dc,
                                          ch,
                                          dl_ch,
@@ -459,19 +405,15 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
       dl_ch+=16;
 
       for (pilot_cnt=0; pilot_cnt<22; pilot_cnt+=2) {
-
         // printf("* pilot[%d][%d] (%d,%d)\n",p,rb,pil[0],pil[1]);
         // printf("rx[%d][%d] -> (%d,%d)\n",p,ue->frame_parms.first_carrier_offset + ue->frame_parms.nushift + 6*rb+(3*p),rxF[0],rxF[1]);
-
         ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
         ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15);
 #ifdef DEBUG_CH
-        printf("pilot %d rxF -> (%d,%d) ch -> (%d,%d), pil -> (%d,%d) \n",26+pilot_cnt,rxF[0],rxF[1],ch[0],ch[1],pil[0],pil[1]);
-
+        printf("pilot %u rxF -> (%d,%d) ch -> (%d,%d), pil -> (%d,%d) \n",26+pilot_cnt,rxF[0],rxF[1],ch[0],ch[1],pil[0],pil[1]);
         //  ch[0] = 1024;
         //  ch[1] = -128;
 #endif
-
         multadd_real_vector_complex_scalar(f,
                                            ch,
                                            dl_ch,
@@ -479,16 +421,13 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
         pil+=2;
         rxF+=12;
         dl_ch+=8;
-
         ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
         ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15);
 #ifdef DEBUG_CH
-        printf("pilot %d : rxF -> (%d,%d) ch -> (%d,%d), pil -> (%d,%d) \n",27+pilot_cnt,rxF[0],rxF[1],ch[0],ch[1],pil[0],pil[1]);
-
+        printf("pilot %u : rxF -> (%d,%d) ch -> (%d,%d), pil -> (%d,%d) \n",27+pilot_cnt,rxF[0],rxF[1],ch[0],ch[1],pil[0],pil[1]);
         //  ch[0] = 1024;
         //  ch[1] = -128;
 #endif
-
         multadd_real_vector_complex_scalar(f2,
                                            ch,
                                            dl_ch,
@@ -496,20 +435,15 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
         pil+=2;
         rxF+=12;
         dl_ch+=16;
-
       }
 
       ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
       ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15);
-
 #ifdef DEBUG_CH
       printf("pilot 49: rxF -> (%d,%d) ch -> (%d,%d), pil -> (%d,%d) \n",rxF[0],rxF[1],ch[0],ch[1],pil[0],pil[1]);
-
       //      ch[0] = 1024;
       //      ch[1] = -128;
 #endif
-
-
       multadd_real_vector_complex_scalar(fr,
                                          ch,
                                          dl_ch,
@@ -517,28 +451,20 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
       pil+=2;    // Re Im
       rxF+=12;
       dl_ch+=8;
-
       ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
       ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15);
-
 #ifdef DEBUG_CH
-
       printf("pilot 50: rxF - > (%d,%d) ch -> (%d,%d), pil -> (%d,%d) \n",rxF[0],rxF[1],ch[0],ch[1],pil[0],pil[1]);
-
       //      ch[0] = 1024;
       //      ch[1] = -128;
 #endif
-
       multadd_real_vector_complex_scalar(f2r2,
                                          ch,
                                          dl_ch,
                                          24);
-
     } else if (ue->frame_parms.N_RB_DL==15) {
-
       //printf("First Half\n");
       for (rb=0; rb<28; rb+=4) {
-
         //printf("aarx=%d\n",aarx);
         //printf("pilot[%d][%d] (%d,%d)\n",p,rb,pil[0],pil[1]);
         //printf("rx[%d][%d] -> (%d,%d)\n",p,
@@ -555,7 +481,6 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
         pil+=2;    // Re Im
         rxF+=12;
         dl_ch+=8;
-
         ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
         ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15);
         //printf("ch -> (%d,%d)\n",ch[0],ch[1]);
@@ -566,7 +491,6 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
         pil+=2;
         rxF+=12;
         dl_ch+=16;
-
       }
 
       ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
@@ -578,13 +502,11 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
                                          24);
       pil+=2;    // Re Im
       dl_ch+=8;
-
       //printf("Second half\n");
       //Second half of RBs
       rxF   = (int16_t *)&rxdataF[aarx][((symbol_offset+1+nushift + (3*p)))];
       ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
       ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15);
-
       multadd_real_vector_complex_scalar(f2,
                                          ch,
                                          dl_ch,
@@ -602,7 +524,6 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
         //       rxF[1]);
         ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
         ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15);
-
         multadd_real_vector_complex_scalar(f,
                                            ch,
                                            dl_ch,
@@ -610,10 +531,8 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
         pil+=2;
         rxF+=12;
         dl_ch+=8;
-
         ch[0] = (int16_t)(((int32_t)pil[0]*rxF[0] - (int32_t)pil[1]*rxF[1])>>15);
         ch[1] = (int16_t)(((int32_t)pil[0]*rxF[1] + (int32_t)pil[1]*rxF[0])>>15);
-
         multadd_real_vector_complex_scalar(f2,
                                            ch,
                                            dl_ch,
@@ -621,17 +540,14 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
         pil+=2;
         rxF+=12;
         dl_ch+=16;
-
       }
     } else {
       LOG_E(PHY,"channel estimation not implemented for ue->frame_parms.N_RB_DL = %d\n",ue->frame_parms.N_RB_DL);
     }
 
-
     if (ue->perfect_ce == 0) {
       // Temporal Interpolation
       // printf("ch_offset %d\n",ch_offset);
-
       dl_ch = (int16_t *)&dl_ch_estimates[(p<<1)+aarx][ch_offset];
 
       if (ue->high_speed_flag == 0) {
@@ -639,182 +555,155 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
                                            32767-ue->ch_est_alpha,
                                            dl_ch-(ue->frame_parms.ofdm_symbol_size<<1),0,ue->frame_parms.ofdm_symbol_size);
       } else { // high_speed_flag == 1
-            if ((symbol == 0)) {
-              //      printf("Interpolating %d->0\n",4-ue->frame_parms.Ncp);
-              //      dl_ch_prev = (int16_t *)&dl_ch_estimates[(p<<1)+aarx][(4-ue->frame_parms.Ncp)*(ue->frame_parms.ofdm_symbol_size)];
-          if(((Ns>>1)!=0) || ( ((Ns>>1)==0) && interpolateS11S12))
-          {
-                  //LOG_I(PHY,"Interpolate s11-->s0 to get s12 and s13  Ns %d \n", Ns);
-                  dl_ch_prev = (int16_t *)&dl_ch_estimates_previous[(p<<1)+aarx][pilot3*(ue->frame_parms.ofdm_symbol_size)];
-
-                  multadd_complex_vector_real_scalar(dl_ch_prev,21845,dl_ch_prev+(2*(ue->frame_parms.ofdm_symbol_size)),1,ue->frame_parms.ofdm_symbol_size);
-                  multadd_complex_vector_real_scalar(dl_ch,10923,dl_ch_prev+(2*(ue->frame_parms.ofdm_symbol_size)),0,ue->frame_parms.ofdm_symbol_size);
-
-                  multadd_complex_vector_real_scalar(dl_ch_prev,10923,dl_ch_prev+(2*((ue->frame_parms.ofdm_symbol_size)<<1)),1,ue->frame_parms.ofdm_symbol_size);
-                  multadd_complex_vector_real_scalar(dl_ch,21845,dl_ch_prev+(2*((ue->frame_parms.ofdm_symbol_size)<<1)),0,ue->frame_parms.ofdm_symbol_size);
-           }
-
-              interpolateS11S12 = 1;
-            } // this is 1/3,2/3 combination for pilots spaced by 3 symbols
-            else if (symbol == pilot1) {
-              dl_ch_prev = (int16_t *)&dl_ch_estimates[(p<<1)+aarx][0];
-
-              //LOG_I(PHY,"Interpolate s0-->s4 to get s1 s2 and s3 Ns %d \n", Ns);
-              if (ue->frame_parms.Ncp==0) {// pilot spacing 4 symbols (1/4,1/2,3/4 combination)
-
-                uint8_t previous_subframe;
-                if(Ns>>1 == 0)
-                    previous_subframe = 9;
-                else
-                    previous_subframe = ((Ns>>1) - 1 )%9;
-
-                if((subframe_select(&ue->frame_parms,previous_subframe) == SF_UL))
-                {
-
-                    multadd_complex_vector_real_scalar(dl_ch_prev,328,dl_ch_prev+(2*(ue->frame_parms.ofdm_symbol_size)),1,ue->frame_parms.ofdm_symbol_size);
-                    multadd_complex_vector_real_scalar(dl_ch,32440,dl_ch_prev+(2*(ue->frame_parms.ofdm_symbol_size)),0,ue->frame_parms.ofdm_symbol_size);
-
-                    multadd_complex_vector_real_scalar(dl_ch_prev,328,dl_ch_prev+(2*((ue->frame_parms.ofdm_symbol_size)<<1)),1,ue->frame_parms.ofdm_symbol_size);
-                    multadd_complex_vector_real_scalar(dl_ch,32440,dl_ch_prev+(2*((ue->frame_parms.ofdm_symbol_size)<<1)),0,ue->frame_parms.ofdm_symbol_size);
-
-                    multadd_complex_vector_real_scalar(dl_ch_prev,8192,dl_ch_prev+(3*2*(ue->frame_parms.ofdm_symbol_size)),1,ue->frame_parms.ofdm_symbol_size);
-                    multadd_complex_vector_real_scalar(dl_ch,32440,dl_ch_prev+(3*2*(ue->frame_parms.ofdm_symbol_size)),0,ue->frame_parms.ofdm_symbol_size);
-                }
-                else
-                {
-                    multadd_complex_vector_real_scalar(dl_ch_prev,24576,dl_ch_prev+(2*(ue->frame_parms.ofdm_symbol_size)),1,ue->frame_parms.ofdm_symbol_size);
-                    multadd_complex_vector_real_scalar(dl_ch,8192,dl_ch_prev+(2*(ue->frame_parms.ofdm_symbol_size)),0,ue->frame_parms.ofdm_symbol_size);
-
-                    multadd_complex_vector_real_scalar(dl_ch_prev,16384,dl_ch_prev+(2*((ue->frame_parms.ofdm_symbol_size)<<1)),1,ue->frame_parms.ofdm_symbol_size);
-                    multadd_complex_vector_real_scalar(dl_ch,16384,dl_ch_prev+(2*((ue->frame_parms.ofdm_symbol_size)<<1)),0,ue->frame_parms.ofdm_symbol_size);
-
-                    multadd_complex_vector_real_scalar(dl_ch_prev,8192,dl_ch_prev+(3*2*(ue->frame_parms.ofdm_symbol_size)),1,ue->frame_parms.ofdm_symbol_size);
-                    multadd_complex_vector_real_scalar(dl_ch,24576,dl_ch_prev+(3*2*(ue->frame_parms.ofdm_symbol_size)),0,ue->frame_parms.ofdm_symbol_size);
-
-                    }
-              } else {
-                multadd_complex_vector_real_scalar(dl_ch_prev,328,dl_ch_prev+(2*(ue->frame_parms.ofdm_symbol_size)),1,ue->frame_parms.ofdm_symbol_size);
-                multadd_complex_vector_real_scalar(dl_ch,21845,dl_ch_prev+(2*(ue->frame_parms.ofdm_symbol_size)),0,ue->frame_parms.ofdm_symbol_size);
-
-                multadd_complex_vector_real_scalar(dl_ch_prev,21845,dl_ch_prev+(2*(ue->frame_parms.ofdm_symbol_size)<<1),1,ue->frame_parms.ofdm_symbol_size);
-                multadd_complex_vector_real_scalar(dl_ch,10923,dl_ch_prev+(2*((ue->frame_parms.ofdm_symbol_size)<<1)),0,ue->frame_parms.ofdm_symbol_size);
-              } // pilot spacing 3 symbols (1/3,2/3 combination)
-            } else if (symbol == pilot2) {
-              dl_ch_prev = (int16_t *)&dl_ch_estimates[(p<<1)+aarx][pilot1*(ue->frame_parms.ofdm_symbol_size)];
-
-              multadd_complex_vector_real_scalar(dl_ch_prev,21845,dl_ch_prev+(2*(ue->frame_parms.ofdm_symbol_size)),1,ue->frame_parms.ofdm_symbol_size);
-              multadd_complex_vector_real_scalar(dl_ch,10923,dl_ch_prev+(2*(ue->frame_parms.ofdm_symbol_size)),0,ue->frame_parms.ofdm_symbol_size);
-
-              multadd_complex_vector_real_scalar(dl_ch_prev,10923,dl_ch_prev+(2*((ue->frame_parms.ofdm_symbol_size)<<1)),1,ue->frame_parms.ofdm_symbol_size);
-              multadd_complex_vector_real_scalar(dl_ch,21845,dl_ch_prev+(2*((ue->frame_parms.ofdm_symbol_size)<<1)),0,ue->frame_parms.ofdm_symbol_size);
-            } else { // symbol == pilot3
-              //      printf("Interpolating 0->%d\n",4-ue->frame_parms.Ncp);
-              dl_ch_prev = (int16_t *)&dl_ch_estimates[(p<<1)+aarx][pilot2*(ue->frame_parms.ofdm_symbol_size)];
-
-              if (ue->frame_parms.Ncp==0) {// pilot spacing 4 symbols (1/4,1/2,3/4 combination)
-                multadd_complex_vector_real_scalar(dl_ch_prev,24576,dl_ch_prev+(2*(ue->frame_parms.ofdm_symbol_size)),1,ue->frame_parms.ofdm_symbol_size);
-                multadd_complex_vector_real_scalar(dl_ch,8192,dl_ch_prev+(2*(ue->frame_parms.ofdm_symbol_size)),0,ue->frame_parms.ofdm_symbol_size);
-
-                multadd_complex_vector_real_scalar(dl_ch_prev,16384,dl_ch_prev+(2*((ue->frame_parms.ofdm_symbol_size)<<1)),1,ue->frame_parms.ofdm_symbol_size);
-                multadd_complex_vector_real_scalar(dl_ch,16384,dl_ch_prev+(2*((ue->frame_parms.ofdm_symbol_size)<<1)),0,ue->frame_parms.ofdm_symbol_size);
-
-                multadd_complex_vector_real_scalar(dl_ch_prev,8192,dl_ch_prev+(3*2*(ue->frame_parms.ofdm_symbol_size)),1,ue->frame_parms.ofdm_symbol_size);
-                multadd_complex_vector_real_scalar(dl_ch,24576,dl_ch_prev+(3*2*(ue->frame_parms.ofdm_symbol_size)),0,ue->frame_parms.ofdm_symbol_size);
-              } else {
-                multadd_complex_vector_real_scalar(dl_ch_prev,10923,dl_ch_prev+(2*(ue->frame_parms.ofdm_symbol_size)),1,ue->frame_parms.ofdm_symbol_size);
-                multadd_complex_vector_real_scalar(dl_ch,21845,dl_ch_prev+(2*(ue->frame_parms.ofdm_symbol_size)),0,ue->frame_parms.ofdm_symbol_size);
-
-                multadd_complex_vector_real_scalar(dl_ch_prev,21845,dl_ch_prev+(2*(ue->frame_parms.ofdm_symbol_size)<<1),1,ue->frame_parms.ofdm_symbol_size);
-                multadd_complex_vector_real_scalar(dl_ch,10923,dl_ch_prev+(2*((ue->frame_parms.ofdm_symbol_size)<<1)),0,ue->frame_parms.ofdm_symbol_size);
-              } // pilot spacing 3 symbols (1/3,2/3 combination)
-
-              if((ue->rx_offset_diff !=0) && ((Ns>>1) == 9))
-              {
-                  //LOG_I(PHY,"Extrapolate s7-->s11 to get s12 and s13 Ns %d\n", Ns);
-                  interpolateS11S12 = 0;
-                  //LOG_E(PHY,"Interpolate s7--s11 s12 s13 pilot 3 Ns %d l %d symbol %d \n", Ns, l, symbol);
-                  int16_t *dlChEst_ofdm11 = (int16_t *)&dl_ch_estimates[(p<<1)+aarx][pilot3*(ue->frame_parms.ofdm_symbol_size)];
-                  int16_t *dlChEst_ofdm7  = (int16_t *)&dl_ch_estimates[(p<<1)+aarx][pilot2*(ue->frame_parms.ofdm_symbol_size)];
-
-                  // interpolate ofdm s12: 5/4*ofdms11 + -1/4*ofdms7 5/4 q1.15 40960 -1/4 q1.15 8192
-                  int16_t *dlChEst_ofdm12 = (int16_t *)&dl_ch_estimates[(p<<1)+aarx][12*ue->frame_parms.ofdm_symbol_size];
-                  for(int i=0; i<(2*ue->frame_parms.ofdm_symbol_size); i++)
-                  {
-                      int64_t tmp_mult = 0;
-                      tmp_mult = ((int64_t)dlChEst_ofdm11[i] * 40960 - (int64_t)dlChEst_ofdm7[i] * 8192);
-
-                      tmp_mult = tmp_mult >> 15;
-                      dlChEst_ofdm12[i] = tmp_mult;
-                  }
-
-                  // interpolate ofdm s13: 3/2*ofdms11 + -1/2*ofdms7 3/2 q1.15 49152 1/2 q1.15 16384
-                  int16_t *dlChEst_ofdm13 = (int16_t *)&dl_ch_estimates[(p<<1)+aarx][13*ue->frame_parms.ofdm_symbol_size];
-                  for(int i=0; i<(2*ue->frame_parms.ofdm_symbol_size); i++)
-                  {
-                      int64_t tmp_mult = 0;
-                      tmp_mult = ((int64_t)dlChEst_ofdm11[i] * 49152 - (int64_t)dlChEst_ofdm7[i] * 16384);
-
-                      tmp_mult = tmp_mult >> 15;
-                      dlChEst_ofdm13[i] = tmp_mult;
-                  }
-              }
+        if ((symbol == 0)) {
+          //      printf("Interpolating %d->0\n",4-ue->frame_parms.Ncp);
+          //      dl_ch_prev = (int16_t *)&dl_ch_estimates[(p<<1)+aarx][(4-ue->frame_parms.Ncp)*(ue->frame_parms.ofdm_symbol_size)];
+          if(((Ns>>1)!=0) || ( ((Ns>>1)==0) && interpolateS11S12)) {
+            //LOG_I(PHY,"Interpolate s11-->s0 to get s12 and s13  Ns %d \n", Ns);
+            dl_ch_prev = (int16_t *)&dl_ch_estimates_previous[(p<<1)+aarx][pilot3*(ue->frame_parms.ofdm_symbol_size)];
+            multadd_complex_vector_real_scalar(dl_ch_prev,21845,dl_ch_prev+(2*(ue->frame_parms.ofdm_symbol_size)),1,ue->frame_parms.ofdm_symbol_size);
+            multadd_complex_vector_real_scalar(dl_ch,10923,dl_ch_prev+(2*(ue->frame_parms.ofdm_symbol_size)),0,ue->frame_parms.ofdm_symbol_size);
+            multadd_complex_vector_real_scalar(dl_ch_prev,10923,dl_ch_prev+(2*((ue->frame_parms.ofdm_symbol_size)<<1)),1,ue->frame_parms.ofdm_symbol_size);
+            multadd_complex_vector_real_scalar(dl_ch,21845,dl_ch_prev+(2*((ue->frame_parms.ofdm_symbol_size)<<1)),0,ue->frame_parms.ofdm_symbol_size);
+          }
 
+          interpolateS11S12 = 1;
+        } // this is 1/3,2/3 combination for pilots spaced by 3 symbols
+        else if (symbol == pilot1) {
+          dl_ch_prev = (int16_t *)&dl_ch_estimates[(p<<1)+aarx][0];
+
+          //LOG_I(PHY,"Interpolate s0-->s4 to get s1 s2 and s3 Ns %d \n", Ns);
+          if (ue->frame_parms.Ncp==0) {// pilot spacing 4 symbols (1/4,1/2,3/4 combination)
+            uint8_t previous_subframe;
+
+            if(Ns>>1 == 0)
+              previous_subframe = 9;
+            else
+              previous_subframe = ((Ns>>1) - 1 )%9;
+
+            if((subframe_select(&ue->frame_parms,previous_subframe) == SF_UL)) {
+              multadd_complex_vector_real_scalar(dl_ch_prev,328,dl_ch_prev+(2*(ue->frame_parms.ofdm_symbol_size)),1,ue->frame_parms.ofdm_symbol_size);
+              multadd_complex_vector_real_scalar(dl_ch,32440,dl_ch_prev+(2*(ue->frame_parms.ofdm_symbol_size)),0,ue->frame_parms.ofdm_symbol_size);
+              multadd_complex_vector_real_scalar(dl_ch_prev,328,dl_ch_prev+(2*((ue->frame_parms.ofdm_symbol_size)<<1)),1,ue->frame_parms.ofdm_symbol_size);
+              multadd_complex_vector_real_scalar(dl_ch,32440,dl_ch_prev+(2*((ue->frame_parms.ofdm_symbol_size)<<1)),0,ue->frame_parms.ofdm_symbol_size);
+              multadd_complex_vector_real_scalar(dl_ch_prev,8192,dl_ch_prev+(3*2*(ue->frame_parms.ofdm_symbol_size)),1,ue->frame_parms.ofdm_symbol_size);
+              multadd_complex_vector_real_scalar(dl_ch,32440,dl_ch_prev+(3*2*(ue->frame_parms.ofdm_symbol_size)),0,ue->frame_parms.ofdm_symbol_size);
+            } else {
+              multadd_complex_vector_real_scalar(dl_ch_prev,24576,dl_ch_prev+(2*(ue->frame_parms.ofdm_symbol_size)),1,ue->frame_parms.ofdm_symbol_size);
+              multadd_complex_vector_real_scalar(dl_ch,8192,dl_ch_prev+(2*(ue->frame_parms.ofdm_symbol_size)),0,ue->frame_parms.ofdm_symbol_size);
+              multadd_complex_vector_real_scalar(dl_ch_prev,16384,dl_ch_prev+(2*((ue->frame_parms.ofdm_symbol_size)<<1)),1,ue->frame_parms.ofdm_symbol_size);
+              multadd_complex_vector_real_scalar(dl_ch,16384,dl_ch_prev+(2*((ue->frame_parms.ofdm_symbol_size)<<1)),0,ue->frame_parms.ofdm_symbol_size);
+              multadd_complex_vector_real_scalar(dl_ch_prev,8192,dl_ch_prev+(3*2*(ue->frame_parms.ofdm_symbol_size)),1,ue->frame_parms.ofdm_symbol_size);
+              multadd_complex_vector_real_scalar(dl_ch,24576,dl_ch_prev+(3*2*(ue->frame_parms.ofdm_symbol_size)),0,ue->frame_parms.ofdm_symbol_size);
+            }
+          } else {
+            multadd_complex_vector_real_scalar(dl_ch_prev,328,dl_ch_prev+(2*(ue->frame_parms.ofdm_symbol_size)),1,ue->frame_parms.ofdm_symbol_size);
+            multadd_complex_vector_real_scalar(dl_ch,21845,dl_ch_prev+(2*(ue->frame_parms.ofdm_symbol_size)),0,ue->frame_parms.ofdm_symbol_size);
+            multadd_complex_vector_real_scalar(dl_ch_prev,21845,dl_ch_prev+(2*(ue->frame_parms.ofdm_symbol_size)<<1),1,ue->frame_parms.ofdm_symbol_size);
+            multadd_complex_vector_real_scalar(dl_ch,10923,dl_ch_prev+(2*((ue->frame_parms.ofdm_symbol_size)<<1)),0,ue->frame_parms.ofdm_symbol_size);
+          } // pilot spacing 3 symbols (1/3,2/3 combination)
+        } else if (symbol == pilot2) {
+          dl_ch_prev = (int16_t *)&dl_ch_estimates[(p<<1)+aarx][pilot1*(ue->frame_parms.ofdm_symbol_size)];
+          multadd_complex_vector_real_scalar(dl_ch_prev,21845,dl_ch_prev+(2*(ue->frame_parms.ofdm_symbol_size)),1,ue->frame_parms.ofdm_symbol_size);
+          multadd_complex_vector_real_scalar(dl_ch,10923,dl_ch_prev+(2*(ue->frame_parms.ofdm_symbol_size)),0,ue->frame_parms.ofdm_symbol_size);
+          multadd_complex_vector_real_scalar(dl_ch_prev,10923,dl_ch_prev+(2*((ue->frame_parms.ofdm_symbol_size)<<1)),1,ue->frame_parms.ofdm_symbol_size);
+          multadd_complex_vector_real_scalar(dl_ch,21845,dl_ch_prev+(2*((ue->frame_parms.ofdm_symbol_size)<<1)),0,ue->frame_parms.ofdm_symbol_size);
+        } else { // symbol == pilot3
+          //      printf("Interpolating 0->%d\n",4-ue->frame_parms.Ncp);
+          dl_ch_prev = (int16_t *)&dl_ch_estimates[(p<<1)+aarx][pilot2*(ue->frame_parms.ofdm_symbol_size)];
+
+          if (ue->frame_parms.Ncp==0) {// pilot spacing 4 symbols (1/4,1/2,3/4 combination)
+            multadd_complex_vector_real_scalar(dl_ch_prev,24576,dl_ch_prev+(2*(ue->frame_parms.ofdm_symbol_size)),1,ue->frame_parms.ofdm_symbol_size);
+            multadd_complex_vector_real_scalar(dl_ch,8192,dl_ch_prev+(2*(ue->frame_parms.ofdm_symbol_size)),0,ue->frame_parms.ofdm_symbol_size);
+            multadd_complex_vector_real_scalar(dl_ch_prev,16384,dl_ch_prev+(2*((ue->frame_parms.ofdm_symbol_size)<<1)),1,ue->frame_parms.ofdm_symbol_size);
+            multadd_complex_vector_real_scalar(dl_ch,16384,dl_ch_prev+(2*((ue->frame_parms.ofdm_symbol_size)<<1)),0,ue->frame_parms.ofdm_symbol_size);
+            multadd_complex_vector_real_scalar(dl_ch_prev,8192,dl_ch_prev+(3*2*(ue->frame_parms.ofdm_symbol_size)),1,ue->frame_parms.ofdm_symbol_size);
+            multadd_complex_vector_real_scalar(dl_ch,24576,dl_ch_prev+(3*2*(ue->frame_parms.ofdm_symbol_size)),0,ue->frame_parms.ofdm_symbol_size);
+          } else {
+            multadd_complex_vector_real_scalar(dl_ch_prev,10923,dl_ch_prev+(2*(ue->frame_parms.ofdm_symbol_size)),1,ue->frame_parms.ofdm_symbol_size);
+            multadd_complex_vector_real_scalar(dl_ch,21845,dl_ch_prev+(2*(ue->frame_parms.ofdm_symbol_size)),0,ue->frame_parms.ofdm_symbol_size);
+            multadd_complex_vector_real_scalar(dl_ch_prev,21845,dl_ch_prev+(2*(ue->frame_parms.ofdm_symbol_size)<<1),1,ue->frame_parms.ofdm_symbol_size);
+            multadd_complex_vector_real_scalar(dl_ch,10923,dl_ch_prev+(2*((ue->frame_parms.ofdm_symbol_size)<<1)),0,ue->frame_parms.ofdm_symbol_size);
+          } // pilot spacing 3 symbols (1/3,2/3 combination)
+
+          if((ue->rx_offset_diff !=0) && ((Ns>>1) == 9)) {
+            //LOG_I(PHY,"Extrapolate s7-->s11 to get s12 and s13 Ns %d\n", Ns);
+            interpolateS11S12 = 0;
+            //LOG_E(PHY,"Interpolate s7--s11 s12 s13 pilot 3 Ns %d l %d symbol %d \n", Ns, l, symbol);
+            int16_t *dlChEst_ofdm11 = (int16_t *)&dl_ch_estimates[(p<<1)+aarx][pilot3*(ue->frame_parms.ofdm_symbol_size)];
+            int16_t *dlChEst_ofdm7  = (int16_t *)&dl_ch_estimates[(p<<1)+aarx][pilot2*(ue->frame_parms.ofdm_symbol_size)];
+            // interpolate ofdm s12: 5/4*ofdms11 + -1/4*ofdms7 5/4 q1.15 40960 -1/4 q1.15 8192
+            int16_t *dlChEst_ofdm12 = (int16_t *)&dl_ch_estimates[(p<<1)+aarx][12*ue->frame_parms.ofdm_symbol_size];
+
+            for(int i=0; i<(2*ue->frame_parms.ofdm_symbol_size); i++) {
+              int64_t tmp_mult = 0;
+              tmp_mult = ((int64_t)dlChEst_ofdm11[i] * 40960 - (int64_t)dlChEst_ofdm7[i] * 8192);
+              tmp_mult = tmp_mult >> 15;
+              dlChEst_ofdm12[i] = tmp_mult;
             }
-        }
 
+            // interpolate ofdm s13: 3/2*ofdms11 + -1/2*ofdms7 3/2 q1.15 49152 1/2 q1.15 16384
+            int16_t *dlChEst_ofdm13 = (int16_t *)&dl_ch_estimates[(p<<1)+aarx][13*ue->frame_parms.ofdm_symbol_size];
+
+            for(int i=0; i<(2*ue->frame_parms.ofdm_symbol_size); i++) {
+              int64_t tmp_mult = 0;
+              tmp_mult = ((int64_t)dlChEst_ofdm11[i] * 49152 - (int64_t)dlChEst_ofdm7[i] * 16384);
+              tmp_mult = tmp_mult >> 15;
+              dlChEst_ofdm13[i] = tmp_mult;
+            }
+          }
+        }
+      }
     }
   }
 
   void (*idft)(int16_t *,int16_t *, int);
 
   switch (ue->frame_parms.ofdm_symbol_size) {
-  case 128:
-    idft = idft128;
-    break;
+    case 128:
+      idft = idft128;
+      break;
 
-  case 256:
-    idft = idft256;
-    break;
+    case 256:
+      idft = idft256;
+      break;
 
-  case 512:
-    idft = idft512;
-    break;
+    case 512:
+      idft = idft512;
+      break;
 
-  case 1024:
-    idft = idft1024;
-    break;
+    case 1024:
+      idft = idft1024;
+      break;
 
-  case 1536:
-    idft = idft1536;
-    break;
+    case 1536:
+      idft = idft1536;
+      break;
 
-  case 2048:
-    idft = idft2048;
-    break;
+    case 2048:
+      idft = idft2048;
+      break;
 
-  default:
-    idft = idft512;
-    break;
+    default:
+      idft = idft512;
+      break;
   }
 
-  if( ((Ns%2) == 0) && (l == pilot0))
-  {
-      // do ifft of channel estimate
-      for (aarx=0; aarx<ue->frame_parms.nb_antennas_rx; aarx++)
-          for (p=0; p<ue->frame_parms.nb_antenna_ports_eNB; p++) {
-              if (ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[Ns>>1]].dl_ch_estimates[eNB_offset][(p<<1)+aarx])
-              {
-                  //LOG_I(PHY,"Channel Impulse Computation Slot %d ThreadId %d Symbol %d \n", Ns, ue->current_thread_id[Ns>>1], l);
-                  idft((int16_t*) &ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[Ns>>1]].dl_ch_estimates[eNB_offset][(p<<1)+aarx][8],
-                          (int16_t*) ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[Ns>>1]].dl_ch_estimates_time[eNB_offset][(p<<1)+aarx],1);
-              }
-          }
+  if( ((Ns%2) == 0) && (l == pilot0)) {
+    // do ifft of channel estimate
+    for (aarx=0; aarx<ue->frame_parms.nb_antennas_rx; aarx++)
+      for (p=0; p<ue->frame_parms.nb_antenna_ports_eNB; p++) {
+        if (ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[Ns>>1]].dl_ch_estimates[eNB_offset][(p<<1)+aarx]) {
+          //LOG_I(PHY,"Channel Impulse Computation Slot %d ThreadId %d Symbol %d \n", Ns, ue->current_thread_id[Ns>>1], l);
+          idft((int16_t *) &ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[Ns>>1]].dl_ch_estimates[eNB_offset][(p<<1)+aarx][8],
+               (int16_t *) ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[Ns>>1]].dl_ch_estimates_time[eNB_offset][(p<<1)+aarx],1);
+        }
+      }
   }
 
   T(T_UE_PHY_DL_CHANNEL_ESTIMATE, T_INT(eNB_id),
     T_INT(ue->proc.proc_rxtx[ue->current_thread_id[Ns>>1]].frame_rx%1024), T_INT(ue->proc.proc_rxtx[ue->current_thread_id[Ns>>1]].subframe_rx),
     T_INT(0), T_BUFFER(&ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[Ns>>1]].dl_ch_estimates_time[eNB_offset][0][0], 512  * 4));
-
   return(0);
 }
 
diff --git a/openair1/PHY/LTE_TRANSPORT/prach.c b/openair1/PHY/LTE_TRANSPORT/prach.c
index b913bcbd8c8800f9b8559ec2da64594ebdca26f5..59450cf08114a1329c9a572b76440f47c5071f73 100644
--- a/openair1/PHY/LTE_TRANSPORT/prach.c
+++ b/openair1/PHY/LTE_TRANSPORT/prach.c
@@ -40,37 +40,33 @@
 #include "prach_extern.h"
 
 #if (LTE_RRC_VERSION < MAKE_VERSION(14, 0, 0))
-#define rx_prach0 rx_prach
+  #define rx_prach0 rx_prach
 #endif
 
 void rx_prach0(PHY_VARS_eNB *eNB,
-	       RU_t *ru,
-	       uint16_t *max_preamble,
-	       uint16_t *max_preamble_energy,
-	       uint16_t *max_preamble_delay,
-	       uint16_t Nf, 
-	       uint8_t tdd_mapindex
+               RU_t *ru,
+               uint16_t *max_preamble,
+               uint16_t *max_preamble_energy,
+               uint16_t *max_preamble_delay,
+               uint16_t Nf,
+               uint8_t tdd_mapindex
 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-	       ,uint8_t br_flag,
-	       uint8_t ce_level
+  ,uint8_t br_flag,
+  uint8_t ce_level
 #endif
-	       )
-{
-
+              ) {
   int i;
-
   LTE_DL_FRAME_PARMS *fp;
   lte_frame_type_t   frame_type;
-  uint16_t           rootSequenceIndex;  
-  uint8_t            prach_ConfigIndex;   
-  uint8_t            Ncs_config;          
-  uint8_t            restricted_set;      
+  uint16_t           rootSequenceIndex;
+  uint8_t            prach_ConfigIndex;
+  uint8_t            Ncs_config;
+  uint8_t            restricted_set;
   uint8_t            n_ra_prb;
   int                subframe;
   int16_t            *prachF=NULL;
   int16_t            **rxsigF=NULL;
   int                nb_rx;
-
   int16_t *prach2;
   uint8_t preamble_index;
   uint16_t NCS,NCS2;
@@ -94,106 +90,108 @@ void rx_prach0(PHY_VARS_eNB *eNB,
   int16_t levdB;
   int fft_size,log2_ifft_size;
   int16_t prach_ifft_tmp[2048*2] __attribute__((aligned(32)));
-  int32_t *prach_ifft=(int32_t*)NULL;
+  int32_t *prach_ifft=(int32_t *)NULL;
   int32_t **prach_ifftp=(int32_t **)NULL;
 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
   int prach_ifft_cnt=0;
 #endif
 
-
-  if (ru) { 
+  if (ru) {
     fp    = &ru->frame_parms;
     nb_rx = ru->nb_rx;
-  }
-  else if (eNB) {
+  } else if (eNB) {
     fp    = &eNB->frame_parms;
     nb_rx = fp->nb_antennas_rx;
-  }
-  else AssertFatal(1==0,"rx_prach called without valid RU or eNB descriptor\n");
-  
-  frame_type          = fp->frame_type;
+  } else AssertFatal(1==0,"rx_prach called without valid RU or eNB descriptor\n");
 
+  frame_type          = fp->frame_type;
 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
+
   if (br_flag == 1) {
     AssertFatal(fp->prach_emtc_config_common.prach_Config_enabled==1,
-		"emtc prach_Config is not enabled\n");
+                "emtc prach_Config is not enabled\n");
     AssertFatal(fp->prach_emtc_config_common.prach_ConfigInfo.prach_CElevel_enable[ce_level]==1,
-		"ce_level %d is not active\n",ce_level);
+                "ce_level %d is not active\n",ce_level);
     rootSequenceIndex   = fp->prach_emtc_config_common.rootSequenceIndex;
     prach_ConfigIndex   = fp->prach_emtc_config_common.prach_ConfigInfo.prach_ConfigIndex[ce_level];
     Ncs_config          = fp->prach_emtc_config_common.prach_ConfigInfo.zeroCorrelationZoneConfig;
     restricted_set      = fp->prach_emtc_config_common.prach_ConfigInfo.highSpeedFlag;
     n_ra_prb            = get_prach_prb_offset(fp,prach_ConfigIndex,
-					       fp->prach_emtc_config_common.prach_ConfigInfo.prach_FreqOffset[ce_level],
-					       tdd_mapindex,Nf);
+                          fp->prach_emtc_config_common.prach_ConfigInfo.prach_FreqOffset[ce_level],
+                          tdd_mapindex,Nf);
     // update pointers to results for ce_level
     max_preamble        += ce_level;
     max_preamble_energy += ce_level;
     max_preamble_delay  += ce_level;
-  }
-  else 
+  } else
 #endif
-    {
-      rootSequenceIndex   = fp->prach_config_common.rootSequenceIndex;
-      prach_ConfigIndex   = fp->prach_config_common.prach_ConfigInfo.prach_ConfigIndex;
-      Ncs_config          = fp->prach_config_common.prach_ConfigInfo.zeroCorrelationZoneConfig;
-      restricted_set      = fp->prach_config_common.prach_ConfigInfo.highSpeedFlag;
-      n_ra_prb            = get_prach_prb_offset(fp,prach_ConfigIndex,
-						 fp->prach_config_common.prach_ConfigInfo.prach_FreqOffset,
-						 tdd_mapindex,Nf);
-    }
+  {
+    rootSequenceIndex   = fp->prach_config_common.rootSequenceIndex;
+    prach_ConfigIndex   = fp->prach_config_common.prach_ConfigInfo.prach_ConfigIndex;
+    Ncs_config          = fp->prach_config_common.prach_ConfigInfo.zeroCorrelationZoneConfig;
+    restricted_set      = fp->prach_config_common.prach_ConfigInfo.highSpeedFlag;
+    n_ra_prb            = get_prach_prb_offset(fp,prach_ConfigIndex,
+                          fp->prach_config_common.prach_ConfigInfo.prach_FreqOffset,
+                          tdd_mapindex,Nf);
+  }
 
   int16_t *prach[nb_rx];
   uint8_t prach_fmt = get_prach_fmt(prach_ConfigIndex,frame_type);
   uint16_t N_ZC = (prach_fmt <4)?839:139;
-  
+
   if (eNB) {
 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
+
     if (br_flag == 1) {
       prach_ifftp         = eNB->prach_vars_br.prach_ifft[ce_level];
       subframe            = eNB->proc.subframe_prach_br;
       prachF              = eNB->prach_vars_br.prachF;
       rxsigF              = eNB->prach_vars_br.rxsigF[ce_level];
-      if (LOG_DEBUGFLAG(PRACH)){
-        if (((ru->proc.frame_prach)&1023) < 20) LOG_I(PHY,"PRACH (eNB) : running rx_prach (br_flag %d, ce_level %d) for frame %d subframe %d, prach_FreqOffset %d, prach_ConfigIndex %d, rootSequenceIndex %d, repetition number %d,numRepetitionsPrePreambleAttempt %d\n",
-			  	     br_flag,ce_level,ru->proc.frame_prach,subframe,
-				     fp->prach_emtc_config_common.prach_ConfigInfo.prach_FreqOffset[ce_level],
-				     prach_ConfigIndex,rootSequenceIndex,
-				     eNB->prach_vars_br.repetition_number[ce_level],
-				     fp->prach_emtc_config_common.prach_ConfigInfo.prach_numRepetitionPerPreambleAttempt[ce_level]);
+
+      if (LOG_DEBUGFLAG(PRACH)) {
+        if (((ru->proc.frame_prach)&1023) < 20) LOG_I(PHY,
+              "PRACH (eNB) : running rx_prach (br_flag %d, ce_level %d) for frame %d subframe %d, prach_FreqOffset %d, prach_ConfigIndex %d, rootSequenceIndex %d, repetition number %d,numRepetitionsPrePreambleAttempt %d\n",
+              br_flag,ce_level,ru->proc.frame_prach,subframe,
+              fp->prach_emtc_config_common.prach_ConfigInfo.prach_FreqOffset[ce_level],
+              prach_ConfigIndex,rootSequenceIndex,
+              eNB->prach_vars_br.repetition_number[ce_level],
+              fp->prach_emtc_config_common.prach_ConfigInfo.prach_numRepetitionPerPreambleAttempt[ce_level]);
       }
     } else
 #endif
-      {
-        prach_ifftp       = eNB->prach_vars.prach_ifft[0];
-        subframe          = eNB->proc.subframe_prach;
-        prachF            = eNB->prach_vars.prachF;
-        rxsigF            = eNB->prach_vars.rxsigF[0];
-        if (LOG_DEBUGFLAG(PRACH)){
-          if (((ru->proc.frame_prach)&1023) < 20) LOG_I(PHY,"PRACH (eNB) : running rx_prach for subframe %d, prach_FreqOffset %d, prach_ConfigIndex %d , rootSequenceIndex %d\n", subframe,fp->prach_config_common.prach_ConfigInfo.prach_FreqOffset,prach_ConfigIndex,rootSequenceIndex);
-        }
+    {
+      prach_ifftp       = eNB->prach_vars.prach_ifft[0];
+      subframe          = eNB->proc.subframe_prach;
+      prachF            = eNB->prach_vars.prachF;
+      rxsigF            = eNB->prach_vars.rxsigF[0];
+
+      if (LOG_DEBUGFLAG(PRACH)) {
+        if (((ru->proc.frame_prach)&1023) < 20) LOG_I(PHY,"PRACH (eNB) : running rx_prach for subframe %d, prach_FreqOffset %d, prach_ConfigIndex %d , rootSequenceIndex %d\n", subframe,
+              fp->prach_config_common.prach_ConfigInfo.prach_FreqOffset,prach_ConfigIndex,rootSequenceIndex);
       }
-  }
-  else {
+    }
+  } else {
 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
+
     if (br_flag == 1) {
-        subframe          = ru->proc.subframe_prach_br;
-        rxsigF            = ru->prach_rxsigF_br[ce_level];
-        if (LOG_DEBUGFLAG(PRACH)){
-          if (((ru->proc.frame_prach)&1023) < 20) LOG_I(PHY,"PRACH (RU) : running rx_prach (br_flag %d, ce_level %d) for frame %d subframe %d, prach_FreqOffset %d, prach_ConfigIndex %d\n",
-				       br_flag,ce_level,ru->proc.frame_prach,subframe,fp->prach_emtc_config_common.prach_ConfigInfo.prach_FreqOffset[ce_level],prach_ConfigIndex);
-        }
+      subframe          = ru->proc.subframe_prach_br;
+      rxsigF            = ru->prach_rxsigF_br[ce_level];
+
+      if (LOG_DEBUGFLAG(PRACH)) {
+        if (((ru->proc.frame_prach)&1023) < 20) LOG_I(PHY,"PRACH (RU) : running rx_prach (br_flag %d, ce_level %d) for frame %d subframe %d, prach_FreqOffset %d, prach_ConfigIndex %d\n",
+              br_flag,ce_level,ru->proc.frame_prach,subframe,fp->prach_emtc_config_common.prach_ConfigInfo.prach_FreqOffset[ce_level],prach_ConfigIndex);
+      }
     } else
 #endif
-      {
-        subframe          = ru->proc.subframe_prach;
-        rxsigF            = ru->prach_rxsigF;
-        if (LOG_DEBUGFLAG(PRACH)){
-          if (((ru->proc.frame_prach)&1023) < 20) LOG_I(PHY,"PRACH (RU) : running rx_prach for subframe %d, prach_FreqOffset %d, prach_ConfigIndex %d\n",
-	        subframe,fp->prach_config_common.prach_ConfigInfo.prach_FreqOffset,prach_ConfigIndex);
-        }
-      }
+    {
+      subframe          = ru->proc.subframe_prach;
+      rxsigF            = ru->prach_rxsigF;
 
+      if (LOG_DEBUGFLAG(PRACH)) {
+        if (((ru->proc.frame_prach)&1023) < 20) LOG_I(PHY,"PRACH (RU) : running rx_prach for subframe %d, prach_FreqOffset %d, prach_ConfigIndex %d\n",
+              subframe,fp->prach_config_common.prach_ConfigInfo.prach_FreqOffset,prach_ConfigIndex);
+      }
+    }
   }
 
   AssertFatal(ru!=NULL,"ru is null\n");
@@ -201,25 +199,29 @@ void rx_prach0(PHY_VARS_eNB *eNB,
   for (aa=0; aa<nb_rx; aa++) {
     if (ru->if_south == LOCAL_RF) { // set the time-domain signal if we have to use it in this node
       // DJP - indexing below in subframe zero takes us off the beginning of the array???
-      prach[aa] = (int16_t*)&ru->common.rxdata[aa][(subframe*fp->samples_per_tti)-ru->N_TA_offset];
-
-        if (LOG_DUMPFLAG(PRACH)){
-          int32_t en0=signal_energy((int32_t*)prach[aa],fp->samples_per_tti);
-          int8_t dbEn0 = dB_fixed(en0);
-          int8_t rach_dBm = dbEn0 - ru->rx_total_gain_dB;
-          char buffer[80];
-          if (dbEn0>32 && prach[0]!= NULL) {
-            static int counter=0;
-            sprintf(buffer, "%s%d", "/tmp/prach_rx",counter);
-            LOG_M(buffer,"prach_rx",prach[0],fp->samples_per_tti,1,13);
-          }
+      prach[aa] = (int16_t *)&ru->common.rxdata[aa][(subframe*fp->samples_per_tti)-ru->N_TA_offset];
+
+      if (LOG_DUMPFLAG(PRACH)) {
+        int32_t en0=signal_energy((int32_t *)prach[aa],fp->samples_per_tti);
+        int8_t dbEn0 = dB_fixed(en0);
+        int8_t rach_dBm = dbEn0 - ru->rx_total_gain_dB;
+        char buffer[80];
+
+        if (dbEn0>32 && prach[0]!= NULL) {
+          static int counter=0;
+          sprintf(buffer, "%s%d", "/tmp/prach_rx",counter);
+          LOG_M(buffer,"prach_rx",prach[0],fp->samples_per_tti,1,13);
+        }
+
         if (dB_fixed(en0)>32) {
           sprintf(buffer, "rach_dBm:%d",rach_dBm);
+
           if (prach[0]!= NULL) LOG_M("prach_rx","prach_rx",prach[0],fp->samples_per_tti,1,1);
-            LOG_I(PHY,"RU %d, br_flag %d ce_level %d frame %d subframe %d per_tti:%d prach:%p (energy %d) TA:%d %s rxdata:%p index:%d\n",
-                  ru->idx,br_flag,ce_level,ru->proc.frame_prach,subframe,fp->samples_per_tti,
-                  prach[aa],dbEn0,ru->N_TA_offset,buffer,ru->common.rxdata[aa], 
-                  (subframe*fp->samples_per_tti)-ru->N_TA_offset);
+
+          LOG_I(PHY,"RU %d, br_flag %d ce_level %d frame %d subframe %d per_tti:%d prach:%p (energy %d) TA:%d %s rxdata:%p index:%d\n",
+                ru->idx,br_flag,ce_level,ru->proc.frame_prach,subframe,fp->samples_per_tti,
+                prach[aa],dbEn0,ru->N_TA_offset,buffer,ru->common.rxdata[aa],
+                (subframe*fp->samples_per_tti)-ru->N_TA_offset);
         }
       }
     }
@@ -228,19 +230,17 @@ void rx_prach0(PHY_VARS_eNB *eNB,
   // First compute physical root sequence
   if (restricted_set == 0) {
     AssertFatal(Ncs_config<=15,
-		"Illegal Ncs_config for unrestricted format %d\n",Ncs_config);
+                "Illegal Ncs_config for unrestricted format %d\n",Ncs_config);
     NCS = NCS_unrestricted[Ncs_config];
   } else {
     AssertFatal(Ncs_config<=14,
-		"FATAL, Illegal Ncs_config for restricted format %d\n",Ncs_config);
+                "FATAL, Illegal Ncs_config for restricted format %d\n",Ncs_config);
     NCS = NCS_restricted[Ncs_config];
   }
 
   if (eNB) start_meas(&eNB->rx_prach);
 
-
   prach_root_sequence_map = (prach_fmt < 4) ? prach_root_sequence_map0_3 : prach_root_sequence_map4;
-
   // PDP is oversampled, e.g. 1024 sample instead of 839
   // Adapt the NCS (zero-correlation zones) with oversampling factor e.g. 1024/839
   NCS2 = (N_ZC==839) ? ((NCS<<10)/839) : ((NCS<<8)/139);
@@ -249,56 +249,56 @@ void rx_prach0(PHY_VARS_eNB *eNB,
     NCS2 = N_ZC;
 
   switch (prach_fmt) {
-  case 0:
-    Ncp = 3168;
-    break;
-
-  case 1:
-  case 3:
-    Ncp = 21024;
-    break;
-
-  case 2:
-    Ncp = 6240;
-    break;
-
-  case 4:
-    Ncp = 448;
-    break;
-
-  default:
-    Ncp = 3168;
-    break;
+    case 0:
+      Ncp = 3168;
+      break;
+
+    case 1:
+    case 3:
+      Ncp = 21024;
+      break;
+
+    case 2:
+      Ncp = 6240;
+      break;
+
+    case 4:
+      Ncp = 448;
+      break;
+
+    default:
+      Ncp = 3168;
+      break;
   }
 
   // Adjust CP length based on UL bandwidth
   switch (fp->N_RB_UL) {
-  case 6:
-    Ncp>>=4;
-    break;
+    case 6:
+      Ncp>>=4;
+      break;
 
-  case 15:
-    Ncp>>=3;
-    break;
+    case 15:
+      Ncp>>=3;
+      break;
 
-  case 25:
-    Ncp>>=2;
-    break;
+    case 25:
+      Ncp>>=2;
+      break;
 
-  case 50:
-    Ncp>>=1;
-    break;
+    case 50:
+      Ncp>>=1;
+      break;
 
-  case 75:
-    Ncp=(Ncp*3)>>2;
-    break;
-
-  case 100:
-    if (fp->threequarter_fs == 1)
+    case 75:
       Ncp=(Ncp*3)>>2;
-    break;
-  }
+      break;
 
+    case 100:
+      if (fp->threequarter_fs == 1)
+        Ncp=(Ncp*3)>>2;
+
+      break;
+  }
 
   if (((eNB!=NULL) && (ru->function != NGFI_RAU_IF4p5))||
       ((eNB==NULL) && (ru->function == NGFI_RRU_IF4p5))) { // compute the DFTs of the PRACH temporal resources
@@ -306,192 +306,188 @@ void rx_prach0(PHY_VARS_eNB *eNB,
     if (LOG_DEBUGFLAG(PRACH)) {
       LOG_D(PHY,"rx_prach: Doing FFT for N_RB_UL %d nb_rx:%d Ncp:%d\n",fp->N_RB_UL, nb_rx, Ncp);
     }
+
     for (aa=0; aa<nb_rx; aa++) {
       AssertFatal(prach[aa]!=NULL,"prach[%d] is null\n",aa);
       prach2 = prach[aa] + (Ncp<<1);
-  
+
       // do DFT
       switch (fp->N_RB_UL) {
-      case 6:
-	if (prach_fmt == 4) {
-	  dft256(prach2,rxsigF[aa],1);
-	} else {
-	  dft1536(prach2,rxsigF[aa],1);
-	  
-	  if (prach_fmt>1)
-	    dft1536(prach2+3072,rxsigF[aa]+3072,1);
-	}
-	
-	break;
-	
-      case 15:
-	if (prach_fmt == 4) {
-	  dft256(prach2,rxsigF[aa],1);
-	} else {
-	  dft3072(prach2,rxsigF[aa],1);
-	  
-	  if (prach_fmt>1)
-	    dft3072(prach2+6144,rxsigF[aa]+6144,1);
-	}
-	
-	break;
-	
-      case 25:
-      default:
-	if (prach_fmt == 4) {
-	  dft1024(prach2,rxsigF[aa],1);
-	  fft_size = 1024;
-	} else {
-	  dft6144(prach2,rxsigF[aa],1);
-	  
-	  if (prach_fmt>1)
-	    dft6144(prach2+12288,rxsigF[aa]+12288,1);
-	  
-	  fft_size = 6144;
-	}
-	
-	break;
-	
-      case 50:
-	if (prach_fmt == 4) {
-	  dft2048(prach2,rxsigF[aa],1);
-	} else {
-	  dft12288(prach2,rxsigF[aa],1);
-	  
-	  if (prach_fmt>1)
-	    dft12288(prach2+24576,rxsigF[aa]+24576,1);
-	}
-	
-	break;
-	
-      case 75:
-	if (prach_fmt == 4) {
-	  dft3072(prach2,rxsigF[aa],1);
-	} else {
-	  dft18432(prach2,rxsigF[aa],1);
-	  
-	  if (prach_fmt>1)
-	    dft18432(prach2+36864,rxsigF[aa]+36864,1);
-	}
-	
-	break;
-	
-      case 100:
-	if (fp->threequarter_fs==0) {
-	  if (prach_fmt == 4) {
-	    dft4096(prach2,rxsigF[aa],1);
-	  } else {
-	    dft24576(prach2,rxsigF[aa],1);
-	    
-	    if (prach_fmt>1)
-	      dft24576(prach2+49152,rxsigF[aa]+49152,1);
-	  }
-	} else {
-	  if (prach_fmt == 4) {
-	    dft3072(prach2,rxsigF[aa],1);
-	  } else {
-	    dft18432(prach2,rxsigF[aa],1);
-	    
-	    if (prach_fmt>1)
-	      dft18432(prach2+36864,rxsigF[aa]+36864,1);
-	  }
-	}
-	
-	break;
+        case 6:
+          if (prach_fmt == 4) {
+            dft256(prach2,rxsigF[aa],1);
+          } else {
+            dft1536(prach2,rxsigF[aa],1);
+
+            if (prach_fmt>1)
+              dft1536(prach2+3072,rxsigF[aa]+3072,1);
+          }
+
+          break;
+
+        case 15:
+          if (prach_fmt == 4) {
+            dft256(prach2,rxsigF[aa],1);
+          } else {
+            dft3072(prach2,rxsigF[aa],1);
+
+            if (prach_fmt>1)
+              dft3072(prach2+6144,rxsigF[aa]+6144,1);
+          }
+
+          break;
+
+        case 25:
+        default:
+          if (prach_fmt == 4) {
+            dft1024(prach2,rxsigF[aa],1);
+            fft_size = 1024;
+          } else {
+            dft6144(prach2,rxsigF[aa],1);
+
+            if (prach_fmt>1)
+              dft6144(prach2+12288,rxsigF[aa]+12288,1);
+
+            fft_size = 6144;
+          }
+
+          break;
+
+        case 50:
+          if (prach_fmt == 4) {
+            dft2048(prach2,rxsigF[aa],1);
+          } else {
+            dft12288(prach2,rxsigF[aa],1);
+
+            if (prach_fmt>1)
+              dft12288(prach2+24576,rxsigF[aa]+24576,1);
+          }
+
+          break;
+
+        case 75:
+          if (prach_fmt == 4) {
+            dft3072(prach2,rxsigF[aa],1);
+          } else {
+            dft18432(prach2,rxsigF[aa],1);
+
+            if (prach_fmt>1)
+              dft18432(prach2+36864,rxsigF[aa]+36864,1);
+          }
+
+          break;
+
+        case 100:
+          if (fp->threequarter_fs==0) {
+            if (prach_fmt == 4) {
+              dft4096(prach2,rxsigF[aa],1);
+            } else {
+              dft24576(prach2,rxsigF[aa],1);
+
+              if (prach_fmt>1)
+                dft24576(prach2+49152,rxsigF[aa]+49152,1);
+            }
+          } else {
+            if (prach_fmt == 4) {
+              dft3072(prach2,rxsigF[aa],1);
+            } else {
+              dft18432(prach2,rxsigF[aa],1);
+
+              if (prach_fmt>1)
+                dft18432(prach2+36864,rxsigF[aa]+36864,1);
+            }
+          }
+
+          break;
       }
 
       k = (12*n_ra_prb) - 6*fp->N_RB_UL;
-      
+
       if (k<0) {
-	k+=(fp->ofdm_symbol_size);
+        k+=(fp->ofdm_symbol_size);
       }
-      
+
       k*=12;
-      k+=13; 
+      k+=13;
       k*=2;
       int dftsize_x2 = fp->ofdm_symbol_size*24;
       //LOG_D(PHY,"Shifting prach_rxF from %d to 0\n",k);
 
-      if ((k+(839*2)) > dftsize_x2) { // PRACH signal is split around DC 
-	memmove((void*)&rxsigF[aa][dftsize_x2-k],(void*)&rxsigF[aa][0],(k+(839*2)-dftsize_x2)*2);	
-	memmove((void*)&rxsigF[aa][0],(void*)(&rxsigF[aa][k]),(dftsize_x2-k)*2);	
-      }
-      else  // PRACH signal is not split around DC
-	memmove((void*)&rxsigF[aa][0],(void*)(&rxsigF[aa][k]),839*4);	
-      
+      if ((k+(839*2)) > dftsize_x2) { // PRACH signal is split around DC
+        memmove((void *)&rxsigF[aa][dftsize_x2-k],(void *)&rxsigF[aa][0],(k+(839*2)-dftsize_x2)*2);
+        memmove((void *)&rxsigF[aa][0],(void *)(&rxsigF[aa][k]),(dftsize_x2-k)*2);
+      } else // PRACH signal is not split around DC
+        memmove((void *)&rxsigF[aa][0],(void *)(&rxsigF[aa][k]),839*4);
     }
-	     
   }
 
-  if ((eNB==NULL) && (ru!=NULL) && ru->function == NGFI_RRU_IF4p5) {
-
+  if ((eNB==NULL) && ru->function == NGFI_RRU_IF4p5) {
     /// **** send_IF4 of rxsigF to RAU **** ///
 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-    if (br_flag == 1) send_IF4p5(ru, ru->proc.frame_prach, ru->proc.subframe_prach, IF4p5_PRACH+1+ce_level);      
-
+    if (br_flag == 1) send_IF4p5(ru, ru->proc.frame_prach, ru->proc.subframe_prach, IF4p5_PRACH+1+ce_level);
     else
 #endif
       send_IF4p5(ru, ru->proc.frame_prach, ru->proc.subframe_prach, IF4p5_PRACH);
-    
+
     return;
   } else if (eNB!=NULL) {
-
     if ( LOG_DEBUGFLAG(PRACH)) {
-      int en = dB_fixed(signal_energy((int32_t*)&rxsigF[0][0],840));
+      int en = dB_fixed(signal_energy((int32_t *)&rxsigF[0][0],840));
+
       if ((en > 60)&&(br_flag==1)) LOG_I(PHY,"PRACH (br_flag %d,ce_level %d, n_ra_prb %d, k %d): Frame %d, Subframe %d => %d dB\n",br_flag,ce_level,n_ra_prb,k,eNB->proc.frame_rx,eNB->proc.subframe_rx,en);
     }
   }
-  
-  // in case of RAU and prach received rx_thread wakes up prach
 
+  // in case of RAU and prach received rx_thread wakes up prach
   // here onwards is for eNodeB_3GPP or NGFI_RAU_IF4p5
-
   preamble_offset_old = 99;
-
   uint8_t update_TA  = 4;
   uint8_t update_TA2 = 1;
+
   switch (eNB->frame_parms.N_RB_DL) {
-  case 6:
-    update_TA = 16;
-    break;
-    
-  case 25:
-    update_TA = 4;
-    break;
-    
-  case 50:
-    update_TA = 2;
-    break;
-    
-  case 75:
-    update_TA  = 3;
-    update_TA2 = 2;
-  case 100:
-    update_TA  = 1;
-    break;
+    case 6:
+      update_TA = 16;
+      break;
+
+    case 25:
+      update_TA = 4;
+      break;
+
+    case 50:
+      update_TA = 2;
+      break;
+
+    case 75:
+      update_TA  = 3;
+      update_TA2 = 2;
+      break;
+
+    case 100:
+      update_TA  = 1;
+      break;
   }
-  
+
   *max_preamble_energy=0;
+
   for (preamble_index=0 ; preamble_index<64 ; preamble_index++) {
+    if (LOG_DEBUGFLAG(PRACH)) {
+      int en = dB_fixed(signal_energy((int32_t *)&rxsigF[0][0],840));
 
-    if (LOG_DEBUGFLAG(PRACH)){
-      int en = dB_fixed(signal_energy((int32_t*)&rxsigF[0][0],840));
       if (en>60) LOG_I(PHY,"frame %d, subframe %d : Trying preamble %d (br_flag %d)\n",ru->proc.frame_prach,subframe,preamble_index,br_flag);
     }
+
     if (restricted_set == 0) {
       // This is the relative offset in the root sequence table (5.7.2-4 from 36.211) for the given preamble index
       preamble_offset = ((NCS==0)? preamble_index : (preamble_index/(N_ZC/NCS)));
-      
+
       if (preamble_offset != preamble_offset_old) {
         preamble_offset_old = preamble_offset;
         new_dft = 1;
         // This is the \nu corresponding to the preamble index
         preamble_shift  = 0;
-      }
-      
-      else {
+      } else {
         preamble_shift  -= NCS;
-	
+
         if (preamble_shift < 0)
           preamble_shift+=N_ZC;
       }
@@ -520,7 +516,6 @@ void rx_prach0(PHY_VARS_eNB *eNB,
           }
 
           u = prach_root_sequence_map[index];
-
           uint16_t n_group_ra = 0;
 
           if ( (du[u]<(N_ZC/3)) && (du[u]>=NCS) ) {
@@ -561,177 +556,184 @@ void rx_prach0(PHY_VARS_eNB *eNB,
 
     // Compute DFT of RX signal (conjugate input, results in conjugate output) for each new rootSequenceIndex
     if (LOG_DEBUGFLAG(PRACH)) {
-      int en = dB_fixed(signal_energy((int32_t*)&rxsigF[0][0],840));
+      int en = dB_fixed(signal_energy((int32_t *)&rxsigF[0][0],840));
+
       if (en>60) LOG_I(PHY,"frame %d, subframe %d : preamble index %d: offset %d, preamble shift %d (br_flag %d, en %d)\n",
-		       ru->proc.frame_prach,subframe,preamble_index,preamble_offset,preamble_shift,br_flag,en);
+                         ru->proc.frame_prach,subframe,preamble_index,preamble_offset,preamble_shift,br_flag,en);
     }
+
     log2_ifft_size = 10;
     fft_size = 6144;
 
     if (new_dft == 1) {
       new_dft = 0;
-
 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
+
       if (br_flag == 1) {
-	Xu=(int16_t*)eNB->X_u_br[ce_level][preamble_offset-first_nonzero_root_idx];
-	prach_ifft = prach_ifftp[prach_ifft_cnt++];
-	if (eNB->prach_vars_br.repetition_number[ce_level]==1) memset(prach_ifft,0,((N_ZC==839)?2048:256)*sizeof(int32_t));
-      }
-      else
+        Xu=(int16_t *)eNB->X_u_br[ce_level][preamble_offset-first_nonzero_root_idx];
+        prach_ifft = prach_ifftp[prach_ifft_cnt++];
+
+        if (eNB->prach_vars_br.repetition_number[ce_level]==1) memset(prach_ifft,0,((N_ZC==839)?2048:256)*sizeof(int32_t));
+      } else
 #endif
-	{
-	  Xu=(int16_t*)eNB->X_u[preamble_offset-first_nonzero_root_idx];
-	  prach_ifft = prach_ifftp[0];
-          memset(prach_ifft,0,((N_ZC==839) ? 2048 : 256)*sizeof(int32_t));
-	}
+      {
+        Xu=(int16_t *)eNB->X_u[preamble_offset-first_nonzero_root_idx];
+        prach_ifft = prach_ifftp[0];
+        memset(prach_ifft,0,((N_ZC==839) ? 2048 : 256)*sizeof(int32_t));
+      }
 
       memset(prachF, 0, sizeof(int16_t)*2*1024 );
-      if (LOG_DUMPFLAG(PRACH)) {      
+
+      if (LOG_DUMPFLAG(PRACH)) {
         if (prach[0]!= NULL) LOG_M("prach_rx0.m","prach_rx0",prach[0],6144+792,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);
+
+        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 
-
-	k=0;	
-	for (offset=0; offset<(N_ZC<<1); offset+=2) {
-	  prachF[offset]   = (int16_t)(((int32_t)Xu[offset]*rxsigF[aa][k]   + (int32_t)Xu[offset+1]*rxsigF[aa][k+1])>>15);
-	  prachF[offset+1] = (int16_t)(((int32_t)Xu[offset]*rxsigF[aa][k+1] - (int32_t)Xu[offset+1]*rxsigF[aa][k])>>15);
-	  k+=2;
-	  if (k==(12*2*fp->ofdm_symbol_size))
-	    k=0;
-	}
-	
-	// Now do IFFT of size 1024 (N_ZC=839) or 256 (N_ZC=139)
-	if (N_ZC == 839) {
-	  log2_ifft_size = 10;
-	  idft1024(prachF,prach_ifft_tmp,1);
-	  // compute energy and accumulate over receive antennas and repetitions for BR
-	  for (i=0;i<2048;i++)
-	    prach_ifft[i] += (prach_ifft_tmp[i<<1]*prach_ifft_tmp[i<<1] + prach_ifft_tmp[1+(i<<1)]*prach_ifft_tmp[1+(i<<1)])>>10;
-	} else {
-	  idft256(prachF,prach_ifft_tmp,1);
-	  log2_ifft_size = 8;
-	  // compute energy and accumulate over receive antennas and repetitions for BR
-	  for (i=0;i<256;i++)
-	    prach_ifft[i] += (prach_ifft_tmp[i<<1]*prach_ifft_tmp[(i<<1)] + prach_ifft_tmp[1+(i<<1)]*prach_ifft_tmp[1+(i<<1)])>>10;
-	}
-
-        if (LOG_DUMPFLAG(PRACH)) {	
-	  if (aa==0) LOG_M("prach_rxF_comp0.m","prach_rxF_comp0",prachF,1024,1,1);
+
+      for (aa=0; aa<nb_rx; aa++) {
+        // Do componentwise product with Xu* on each antenna
+        k=0;
+
+        for (offset=0; offset<(N_ZC<<1); offset+=2) {
+          prachF[offset]   = (int16_t)(((int32_t)Xu[offset]*rxsigF[aa][k]   + (int32_t)Xu[offset+1]*rxsigF[aa][k+1])>>15);
+          prachF[offset+1] = (int16_t)(((int32_t)Xu[offset]*rxsigF[aa][k+1] - (int32_t)Xu[offset+1]*rxsigF[aa][k])>>15);
+          k+=2;
+
+          if (k==(12*2*fp->ofdm_symbol_size))
+            k=0;
+        }
+
+        // Now do IFFT of size 1024 (N_ZC=839) or 256 (N_ZC=139)
+        if (N_ZC == 839) {
+          log2_ifft_size = 10;
+          idft1024(prachF,prach_ifft_tmp,1);
+
+          // compute energy and accumulate over receive antennas and repetitions for BR
+          for (i=0; i<2048; i++)
+            prach_ifft[i] += (prach_ifft_tmp[i<<1]*prach_ifft_tmp[i<<1] + prach_ifft_tmp[1+(i<<1)]*prach_ifft_tmp[1+(i<<1)])>>10;
+        } else {
+          idft256(prachF,prach_ifft_tmp,1);
+          log2_ifft_size = 8;
+
+          // compute energy and accumulate over receive antennas and repetitions for BR
+          for (i=0; i<256; i++)
+            prach_ifft[i] += (prach_ifft_tmp[i<<1]*prach_ifft_tmp[(i<<1)] + prach_ifft_tmp[1+(i<<1)]*prach_ifft_tmp[1+(i<<1)])>>10;
+        }
+
+        if (LOG_DUMPFLAG(PRACH)) {
+          if (aa==0) LOG_M("prach_rxF_comp0.m","prach_rxF_comp0",prachF,1024,1,1);
+
           if (aa==1) LOG_M("prach_rxF_comp1.m","prach_rxF_comp1",prachF,1024,1,1);
         }
       }// antennas_rx
     } // new dft
-    
-    // check energy in nth time shift, for 
+
+    // check energy in nth time shift, for
 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
+
     if ((br_flag==0) ||
-	(eNB->prach_vars_br.repetition_number[ce_level]==
-	 eNB->frame_parms.prach_emtc_config_common.prach_ConfigInfo.prach_numRepetitionPerPreambleAttempt[ce_level]))
+        (eNB->prach_vars_br.repetition_number[ce_level]==
+         eNB->frame_parms.prach_emtc_config_common.prach_ConfigInfo.prach_numRepetitionPerPreambleAttempt[ce_level]))
 #endif
-      {
-      if (LOG_DEBUGFLAG(PRACH)){
-        int en = dB_fixed(signal_energy((int32_t*)&rxsigF[0][0],840));
-	if (en>60) LOG_I(PHY,"frame %d, subframe %d: Checking for peak in time-domain (br_flag %d, en %d)\n",ru->proc.frame_prach,subframe,br_flag,en);
+    {
+      if (LOG_DEBUGFLAG(PRACH)) {
+        int en = dB_fixed(signal_energy((int32_t *)&rxsigF[0][0],840));
+
+        if (en>60) LOG_I(PHY,"frame %d, subframe %d: Checking for peak in time-domain (br_flag %d, en %d)\n",ru->proc.frame_prach,subframe,br_flag,en);
       }
-	preamble_shift2 = ((preamble_shift==0) ? 0 : ((preamble_shift<<log2_ifft_size)/N_ZC));
-
-    
-	for (i=0; i<NCS2; i++) {
-	  lev = (int32_t)prach_ifft[(preamble_shift2+i)];
-	  levdB = dB_fixed_times10(lev);
-	  
-	  if (levdB>*max_preamble_energy) {
-	    *max_preamble_energy  = levdB;
-	    *max_preamble_delay   = ((i*fft_size)>>log2_ifft_size)*update_TA/update_TA2;
-	    *max_preamble         = preamble_index;
-            if (LOG_DEBUGFLAG(PRACH)){
-              int en = dB_fixed(signal_energy((int32_t*)&rxsigF[0][0],840));
-	      if ((en>60) && (br_flag==1)) 
-                 LOG_D(PHY,"frame %d, subframe %d : max_preamble_energy %d, max_preamble_delay %d, max_preamble %d (br_flag %d,ce_level %d, levdB %d, lev %d)\n",
-                       ru->proc.frame_prach,subframe,
-                       *max_preamble_energy,*max_preamble_delay,
-                       *max_preamble,br_flag,ce_level,levdB,lev);
-            }
-	  }
-	}
 
+      preamble_shift2 = ((preamble_shift==0) ? 0 : ((preamble_shift<<log2_ifft_size)/N_ZC));
+
+      for (i=0; i<NCS2; i++) {
+        lev = (int32_t)prach_ifft[(preamble_shift2+i)];
+        levdB = dB_fixed_times10(lev);
+
+        if (levdB>*max_preamble_energy) {
+          *max_preamble_energy  = levdB;
+          *max_preamble_delay   = ((i*fft_size)>>log2_ifft_size)*update_TA/update_TA2;
+          *max_preamble         = preamble_index;
+
+          if (LOG_DEBUGFLAG(PRACH)) {
+            int en = dB_fixed(signal_energy((int32_t *)&rxsigF[0][0],840));
+
+            if ((en>60) && (br_flag==1))
+              LOG_D(PHY,"frame %d, subframe %d : max_preamble_energy %d, max_preamble_delay %d, max_preamble %d (br_flag %d,ce_level %d, levdB %d, lev %d)\n",
+                    ru->proc.frame_prach,subframe,
+                    *max_preamble_energy,*max_preamble_delay,
+                    *max_preamble,br_flag,ce_level,levdB,lev);
+          }
+        }
       }
+    }
   }// preamble_index
 
   if (LOG_DUMPFLAG(PRACH)) {
-    int en = dB_fixed(signal_energy((int32_t*)&rxsigF[0][0],840));  
+    int en = dB_fixed(signal_energy((int32_t *)&rxsigF[0][0],840));
+
     if (en>60) {
       k = (12*n_ra_prb) - 6*fp->N_RB_UL;
-      
+
       if (k<0) k+=fp->ofdm_symbol_size;
-      
+
       k*=12;
       k+=13;
       k*=2;
-      
+
       if (br_flag == 0) {
-  	  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);
+        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);
+      } else {
+        LOG_E(PHY,"Dumping prach (br_flag %d), k = %d (n_ra_prb %d)\n",br_flag,k,n_ra_prb);
+        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);
       }
-      else {
-  	LOG_E(PHY,"Dumping prach (br_flag %d), k = %d (n_ra_prb %d)\n",br_flag,k,n_ra_prb);
-  	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);      
-      }
-
     }
   } /* LOG_DUMPFLAG(PRACH) */
-  if (eNB) stop_meas(&eNB->rx_prach);
 
+  if (eNB) stop_meas(&eNB->rx_prach);
 }
 
 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
 
 void rx_prach(PHY_VARS_eNB *eNB,
-	      RU_t *ru,
-	      uint16_t *max_preamble,
-	      uint16_t *max_preamble_energy,
-	      uint16_t *max_preamble_delay,
-	      uint16_t Nf, 
-	      uint8_t tdd_mapindex,
-	      uint8_t br_flag) {
-
+              RU_t *ru,
+              uint16_t *max_preamble,
+              uint16_t *max_preamble_energy,
+              uint16_t *max_preamble_delay,
+              uint16_t Nf,
+              uint8_t tdd_mapindex,
+              uint8_t br_flag) {
   int i;
   int prach_mask=0;
 
-  if (br_flag == 0) { 
+  if (br_flag == 0) {
     rx_prach0(eNB,ru,max_preamble,max_preamble_energy,max_preamble_delay,Nf,tdd_mapindex,0,0);
-  }
-  else { // This is procedure for eMTC, basically handling the repetitions
+  } else { // This is procedure for eMTC, basically handling the repetitions
     prach_mask = is_prach_subframe(&eNB->frame_parms,eNB->proc.frame_prach_br,eNB->proc.subframe_prach_br);
-    for (i=0;i<4;i++) {
-      if ((eNB->frame_parms.prach_emtc_config_common.prach_ConfigInfo.prach_CElevel_enable[i]==1) &&
-	  ((prach_mask&(1<<(i+1))) > 0)) { // check that prach CE level is active now
 
-	// if first reception in group of repetitions store frame for later (in RA-RNTI for Msg2) 
-	if (eNB->prach_vars_br.repetition_number[i]==0) eNB->prach_vars_br.first_frame[i]=eNB->proc.frame_prach_br;
+    for (i=0; i<4; i++) {
+      if ((eNB->frame_parms.prach_emtc_config_common.prach_ConfigInfo.prach_CElevel_enable[i]==1) &&
+          ((prach_mask&(1<<(i+1))) > 0)) { // check that prach CE level is active now
 
-	// increment repetition number
-	eNB->prach_vars_br.repetition_number[i]++;
+        // if first reception in group of repetitions store frame for later (in RA-RNTI for Msg2)
+        if (eNB->prach_vars_br.repetition_number[i]==0) eNB->prach_vars_br.first_frame[i]=eNB->proc.frame_prach_br;
 
-	// do basic PRACH reception
-	rx_prach0(eNB,ru,max_preamble,max_preamble_energy,max_preamble_delay,Nf,tdd_mapindex,1,i);
-	
-	// if last repetition, clear counter
-	if (eNB->prach_vars_br.repetition_number[i] == eNB->frame_parms.prach_emtc_config_common.prach_ConfigInfo.prach_numRepetitionPerPreambleAttempt[i]) {
-	  eNB->prach_vars_br.repetition_number[i]=0;
+        // increment repetition number
+        eNB->prach_vars_br.repetition_number[i]++;
+        // do basic PRACH reception
+        rx_prach0(eNB,ru,max_preamble,max_preamble_energy,max_preamble_delay,Nf,tdd_mapindex,1,i);
 
-	}
+        // if last repetition, clear counter
+        if (eNB->prach_vars_br.repetition_number[i] == eNB->frame_parms.prach_emtc_config_common.prach_ConfigInfo.prach_numRepetitionPerPreambleAttempt[i]) {
+          eNB->prach_vars_br.repetition_number[i]=0;
+        }
       }
     }
   }
diff --git a/openair1/PHY/defs_UE.h b/openair1/PHY/defs_UE.h
index a303902b0795fce0965fcdb646da227d50ef9a96..5beb6e3ba0e524cfa39d232110b66bfa48ce26da 100644
--- a/openair1/PHY/defs_UE.h
+++ b/openair1/PHY/defs_UE.h
@@ -204,6 +204,12 @@ typedef struct {
 	/// condition variable for timer_thread;
 	pthread_cond_t cond_ticking;
 	//time_stats_t timer_stats;
+
+	// below 3 members is used for waiting each UE threads(multiple UEs test) in L2 FAPI simulator.
+	// This used in UE_phy_stub_single_thread_rxn_txnp4
+	pthread_mutex_t mutex_single_thread;
+	pthread_cond_t  cond_single_thread;
+	int             num_single_thread[NUMBER_OF_UE_MAX];
 } SF_ticking;
 
 typedef struct {
@@ -890,6 +896,7 @@ typedef struct {
 struct rx_tx_thread_data {
   PHY_VARS_UE    *UE;
   UE_rxtx_proc_t *proc;
+  uint16_t       ue_thread_id;
 };
 
 
diff --git a/openair1/README.TXT b/openair1/README.TXT
index 23c86e888e47f697adb8d1509630d5958e5be693..69912b4ecff0d7d98bd84ed1643ca79f94c0d3ae 100644
--- a/openair1/README.TXT
+++ b/openair1/README.TXT
@@ -1,15 +1,20 @@
-This folder contains the software for the device driver of CBMIMO1 and the physical layer signal processing.
+This folder contains the software for layer 1 of the OpenAirInterface eNB and UE as well as the unitary simulators
 
 |-- PHY			   // contains all signal processing related to physical layer (used in real-time AND simulation)
 
-General remarks: every directory contains at least defs.h (for declaration of structure and functions), vars.h (for definitions of variables), and extern.h (variables are defined only once in cbmimo1_device.c (for real-time HW operation) or a top-level simulation (in SIMULATION/xxx), if variables are needed in another file, use extern.h)
+General remarks: every directory contains at least defs.h (for declaration of structure and functions), vars.h (for definitions of variables), and extern.h (variables are defined only once in xxx-softmodem.c (for real-time HW operation) or a top-level simulation (in SIMULATION/xxx), if variables are needed in another file, use extern.h)
 
 |   |-- CODING		   // turbo and convolutional (de-)coders, rate-matching, crc generation (implementation of 36-212)
 |   |   `-- TESTBENCH      // This contains unitary testbenches for the different channel coders/decoders
 |   |-- INIT		   // variables defined in vars.h are initialzed here (memory allocation)
 |   |-- LTE_ESTIMATION     // estimation for LTE
 |   |-- LTE_REFSIG 	   // reference signals for LTE (sync and pilot sequences) reference signals from 36-211 
+|   |-- NR_REFSIG 	   // reference signals for NR (sync and pilot sequences) reference signals from 38-211 
 |   |-- LTE_TRANSPORT      // these are the top level routines for different transport and physical channels (for example DL-SCH, PSS) implements a subset of 36-211,36-212
+|   |-- LTE_UE_TRANSPORT      // these are the top level routines for different transport and physical channels (for example DL-SCH, PSS) implements a subset of 36-211,36-212
+|   |-- NR_TRANSPORT      // these are the top level routines for different transport and physical channels (for example DL-SCH, PSS) implements a subset of 38-211,38-212
+|   |-- NR_UE_TRANSPORT      // these are the top level routines for different transport and physical channels (for example DL-SCH, PSS) implements a subset of 38-211,38-212
+|   |-- NBIoT_TRANSPORT      // these are the top level routines for different transport and physical channels for NB-IoT
 |   |-- MODULATION	   // modulation and demodulation includes FFT/SC-FDMA front-end processing from 36-211
 |   |-- TOOLS		   // tools like (I)FFT, vector operations, matrix multiplication, etc.
 |   |   `-- FFTTEST        // unitary testbench for FFT routines
@@ -22,20 +27,25 @@ General remarks: every directory contains at least defs.h (for declaration of st
 |   |-- spec_defs_top.h
 |   |-- types.h
 |   `-- vars.h		  
-|-- SCHED		  // schedules the different PHY functions according to the nodes role 
+|-- SCHED		  // schedules the different LTE eNB functions 
 |   |-- defs.h
 |   |-- extern.h
-|   |-- phy_procedures_emos.c    // non-LTE PHY procedures for EMOS
-|   |-- phy_procedures_emos.h
 |   |-- phy_procedures_lte_eNb.c // LTE PHY procedures for eNB (from 36-213) 
-|   |-- phy_procedures_lte_ue.c  // LTE PHY procedures for UE (from 36-213)
 |   |-- phy_procedures_lte_common.c  // LTE PHY procedures common for UE and eNB (from 36-213)
+|   |-- prach_procedures.c  //LTE PRACH  procedures (from 36-213)
+|   |-- ru_procedures.c  //RU  procedures 
+|   |-- fapi_l1.c  //L1 side of the FAPI interface
 |   |-- phy_mac_stub.c  //MAC stub that generates channels when used in phy-test-mode
+|   |-- rt_compat.h
+|   `-- vars.h
+|-- SCHED_UE		  // schedules the different LTE UE functions 
+|   |-- phy_procedures_lte_ue.c  // LTE PHY procedures for UE (from 36-213)
 |   |-- pucch_pc.c // power control for PUCCH
 |   |-- pusch_pc.c // power control for PUSCH
 |   |-- srs_pc.c // power control for SRS
-|   |-- rt_compat.h
-|   `-- vars.h
+|-- SCHED_NB_IOT		  // same as above for NB-IOT
+|-- SCHED_NR		  // same as above for NR gNB
+|-- SCHED_NR_UE		  // same as above for NR UE
 |-- SIMULATION		 // contains simulation routines to test PHY
 |   |-- LTE_PHY          // LTE simulation testbenches for unitary simulation of transport/physical channels
 |   |   |-- pbchsim.c       // PBCH simulation testbench
@@ -43,7 +53,7 @@ General remarks: every directory contains at least defs.h (for declaration of st
 |   |   |-- dlsim.c         // PDSCH simulation testbench
 |   |   |-- ulsim.c         // PUSCH simulation testbench
 |   |   |-- pucchsim.c      // PUCCH simulation testbench
-|   |-- RF
+|   |-- RF  		    // RF simulation tools 
 |   |-- ETH_TRANSPORT
 |   `-- TOOLS
 
diff --git a/openair2/COMMON/platform_constants.h b/openair2/COMMON/platform_constants.h
index 6a3b7f80050d8d173f63087c73c8bd8186a3db55..2b28b760a813fcfcf0a98e6ebff5d20779d7cddd 100644
--- a/openair2/COMMON/platform_constants.h
+++ b/openair2/COMMON/platform_constants.h
@@ -64,6 +64,16 @@
 #    define MAX_MODULES                NB_MODULES_MAX
 
 #ifndef UE_EXPANSION
+// TODO:L2 FAPI simulator.
+// UESIM_EXPANSION is used to be same value of MAX_MOBILES_PER_ENB
+// in eNB and UE.
+// now , if we use --mu option in UE, compiling error will occur.
+// This problem will be fixed in the future.
+# ifdef UESIM_EXPANSION
+#    define MAX_MOBILES_PER_ENB         256
+#    define MAX_MOBILES_PER_ENB_NB_IoT  256
+#    define MAX_eNB                      2
+# else
 # ifdef LARGE_SCALE
 #    define MAX_MOBILES_PER_ENB         128
 #    define MAX_MOBILES_PER_ENB_NB_IoT  128
@@ -73,6 +83,7 @@
 #    define MAX_MOBILES_PER_ENB_NB_IoT  16
 #    define MAX_eNB                      2
 # endif
+#endif
 #else
 #    define MAX_MOBILES_PER_ENB 256
 #    define MAX_MOBILES_PER_ENB_NB_IoT 256
diff --git a/openair2/COMMON/tasks_def.h b/openair2/COMMON/tasks_def.h
index 92d1ff4128fb5413dbd71de4e98eed9157eac15b..318c4649e411fe51dc40ff7b3e6b27be252a97a3 100644
--- a/openair2/COMMON/tasks_def.h
+++ b/openair2/COMMON/tasks_def.h
@@ -25,18 +25,11 @@ TASK_DEF(TASK_TIMER,    TASK_PRIORITY_MAX,          10)
 // Other possible tasks in the process
 
 // Common tasks:
-/// Layer 2 and Layer 1 task supporting all the synchronous processing
-TASK_DEF(TASK_L2L1,     TASK_PRIORITY_MAX_LEAST,    200)
 
 ///   Bearers Manager task
 TASK_DEF(TASK_BM,       TASK_PRIORITY_MED,          200)
 
 // eNodeB tasks and sub-tasks:
-//// Layer 2 and Layer 1 sub-tasks
-SUB_TASK_DEF(TASK_L2L1,     TASK_PHY_ENB,               200)
-SUB_TASK_DEF(TASK_L2L1,     TASK_MAC_ENB,               200)
-SUB_TASK_DEF(TASK_L2L1,     TASK_RLC_ENB,               200)
-SUB_TASK_DEF(TASK_L2L1,     TASK_PDCP_ENB,              200)
 
 ///   Radio Resource Control task
 TASK_DEF(TASK_RRC_ENB,  TASK_PRIORITY_MED,          200)
@@ -63,11 +56,6 @@ TASK_DEF(TASK_ENB_APP,  TASK_PRIORITY_MED,          200)
 TASK_DEF(TASK_FLEXRAN_AGENT,  TASK_PRIORITY_MED,          200)
 
 // UE tasks and sub-tasks:
-//// Layer 2 and Layer 1 sub-tasks
-SUB_TASK_DEF(TASK_L2L1,     TASK_PHY_UE,                200)
-SUB_TASK_DEF(TASK_L2L1,     TASK_MAC_UE,                200)
-SUB_TASK_DEF(TASK_L2L1,     TASK_RLC_UE,                200)
-SUB_TASK_DEF(TASK_L2L1,     TASK_PDCP_UE,               200)
 
 ///   Radio Resource Control task
 TASK_DEF(TASK_RRC_UE,   TASK_PRIORITY_MED,          200)
diff --git a/openair2/ENB_APP/flexran_agent_ran_api.c b/openair2/ENB_APP/flexran_agent_ran_api.c
index fe484c6c84937c16cda418375f92c4632bce7ac2..8ada30cc82d02c36001eabe977ff1c9025f94ed5 100644
--- a/openair2/ENB_APP/flexran_agent_ran_api.c
+++ b/openair2/ENB_APP/flexran_agent_ran_api.c
@@ -375,14 +375,16 @@ void flexran_update_TA(mid_t mod_id, mid_t ue_id, uint8_t cc_id)
     ue_sched_ctl->ta_timer--;
     ue_sched_ctl->ta_update		      = 0;	// don't trigger a timing advance command      
   }
-*/
 #warning "Implement flexran_update_TA() in RAN API"
+*/
 }
 
 /* TODO needs to be revised, looks suspicious: why do we need UE stats? */
 int flexran_get_MAC_CE_bitmap_TA(mid_t mod_id, mid_t ue_id, uint8_t cc_id)
 {
+/*
 #warning "Implement flexran_get_MAC_CE_bitmap_TA() in RAN API"
+*/
   if (!phy_is_present(mod_id, cc_id)) return 0;
 
   /* UE_stats can not be null, they are an array in RC
@@ -476,7 +478,9 @@ int flexran_get_harq(mid_t       mod_id,
   /*   *status = 0; */
   /* } */
   /*return *round;*/
+/*
 #warning "Implement flexran_get_harq() in RAN API"
+*/
   return 0;
 }
 
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_RA.c b/openair2/LAYER2/MAC/eNB_scheduler_RA.c
index 32166fdb9c9a60bfac85a614239b676cd0333893..23b709f58e607df84b1880f916c82a94ac096a26 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_RA.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_RA.c
@@ -1342,7 +1342,7 @@ schedule_RA(module_id_t module_idP, frame_t frameP, sub_frame_t subframeP)
 
 	    if (ra->state == MSG2)
 		generate_Msg2(module_idP, CC_id, frameP, subframeP, ra);
-	    else if (ra->state == MSG4 && ra->Msg4_frame == frameP && ra->Msg4_subframe == subframeP )
+		else if (ra->state == MSG4 && ra->Msg4_frame == frameP && ra->Msg4_subframe == subframeP )
 		generate_Msg4(module_idP, CC_id, frameP, subframeP, ra);
 	    else if (ra->state == WAITMSG4ACK)
 		check_Msg4_retransmission(module_idP, CC_id, frameP,
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_fairRR.c b/openair2/LAYER2/MAC/eNB_scheduler_fairRR.c
index e437f6b849f1ec12763c8953bd0725196ea94cde..86f7e16acfd028b5024ad2c4511fa1ef3c11b81d 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_fairRR.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_fairRR.c
@@ -594,6 +594,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(rballoc_sub[0],0,(MAX_NUM_CCs)*(N_RBG_MAX)*sizeof(unsigned char));
   memset(min_rb_unit,0,sizeof(min_rb_unit));
 
   for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_primitives.c b/openair2/LAYER2/MAC/eNB_scheduler_primitives.c
index 30f8109525b7df2963f198fe48386bed5b60bcf3..9bcec88bf7092af13af90a6a749e01ac208f2108 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_primitives.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_primitives.c
@@ -61,6 +61,7 @@ extern uint16_t frame_cnt;
 #include "SCHED/sched_common.h"
 
 extern RAN_CONTEXT_t RC;
+extern uint8_t nfapi_mode;
 
 int choose(int n, int k)
 {
@@ -1286,6 +1287,7 @@ fill_nfapi_ulsch_harq_information(module_id_t                            module_
   */
 #endif
   harq_information->harq_information_rel10.delta_offset_harq = puschConfigDedicated->betaOffset_ACK_Index;
+  harq_information->harq_information_rel10.tl.tag = NFAPI_UL_CONFIG_REQUEST_ULSCH_HARQ_INFORMATION_REL10_TAG;
   AssertFatal(UE_list->UE_template[CC_idP][UE_id].physicalConfigDedicated->pucch_ConfigDedicated != NULL,
 	      "pucch_ConfigDedicated is null!\n");
   if ((UE_list->UE_template[CC_idP][UE_id].physicalConfigDedicated->pucch_ConfigDedicated->tdd_AckNackFeedbackMode != NULL)
@@ -3633,9 +3635,19 @@ extract_harq(module_id_t mod_idP, int CC_idP, int UE_id,
 	AssertFatal(num_ack_nak == 1,
 		    "num_ack_nak %d > 1 for 1 CC and single-layer transmission frame:%d subframe:%d\n",
 		    num_ack_nak,frameP,subframeP);
-	AssertFatal(sched_ctl->round[CC_idP][harq_pid] < 8,
-		    "Got ACK/NAK for inactive harq_pid %d for UE %d/%x\n",
-		    harq_pid, UE_id, rnti);
+
+	// In case of nFAPI, sometimes timing of eNB and UE become different.
+	// So if nfapi_mode == 2(VNF) , this function don't check assertion to avoid process exit.
+	if (nfapi_mode != 2){
+		AssertFatal(sched_ctl->round[CC_idP][harq_pid] < 8,
+			    "Got ACK/NAK for inactive harq_pid %d for UE %d/%x\n",
+			    harq_pid, UE_id, rnti);
+	} else {
+		if(sched_ctl->round[CC_idP][harq_pid] == 8){
+			LOG_E(MAC,"Got ACK/NAK for inactive harq_pid %d for UE %d/%x\n",harq_pid, UE_id, rnti);
+			return;
+		}
+	 }		
 	AssertFatal(pdu[0] == 1 || pdu[0] == 2
 		    || pdu[0] == 4,
 		    "Received ACK/NAK %d which is not 1 or 2 for harq_pid %d from UE %d/%x\n",
diff --git a/openair2/LAYER2/MAC/mac_extern.h b/openair2/LAYER2/MAC/mac_extern.h
index ca72882471f11122633b5dc76af58740f73ce757..fd9ffb6a87ebce7c297cb0c8b3fce8b25aee361d 100644
--- a/openair2/LAYER2/MAC/mac_extern.h
+++ b/openair2/LAYER2/MAC/mac_extern.h
@@ -64,7 +64,8 @@ extern eNB_DLSCH_INFO eNB_dlsch_info[NUMBER_OF_eNB_MAX][MAX_NUM_CCs][MAX_MOBILES
 extern unsigned char NB_INST;
 #endif
 extern unsigned char NB_eNB_INST;
-extern unsigned char NB_UE_INST;
+extern uint16_t NB_UE_INST;
+extern uint16_t NB_THREAD_INST;
 extern unsigned char NB_RN_INST;
 extern unsigned short NODE_ID[1];
 
diff --git a/openair2/LAYER2/MAC/mac_vars.h b/openair2/LAYER2/MAC/mac_vars.h
index 4090d954bc538b80152f7381c235b3c7d5c892c7..7126301a7c82292a399914bb455f713059912b39 100644
--- a/openair2/LAYER2/MAC/mac_vars.h
+++ b/openair2/LAYER2/MAC/mac_vars.h
@@ -95,7 +95,7 @@ const uint8_t cqi2fmt2x_agg[MAX_SUPPORTED_BW][CQI_VALUE_RANGE] = {
 
 uint32_t RRC_CONNECTION_FLAG;
 
-UE_MAC_INST *UE_mac_inst;	//[NB_MODULE_MAX];
+UE_MAC_INST *UE_mac_inst = NULL;	//[NB_MODULE_MAX];
 MAC_RLC_XFACE *Mac_rlc_xface;
 
 /// Primary component carrier index of eNB
@@ -109,7 +109,8 @@ eNB_DLSCH_INFO eNB_dlsch_info[NUMBER_OF_eNB_MAX][MAX_NUM_CCs][MAX_MOBILES_PER_EN
 
 #ifdef OPENAIR2
 unsigned char NB_eNB_INST = 0;
-unsigned char NB_UE_INST = 0;
+uint16_t NB_UE_INST = 0;
+uint16_t NB_THREAD_INST = 0;
 unsigned char NB_RN_INST = 0;
 unsigned char NB_INST = 0;
 #endif
diff --git a/openair2/LAYER2/MAC/main_ue.c b/openair2/LAYER2/MAC/main_ue.c
index 95f25c7ff51b72648bf1c9d2a4e5d058bce2baa3..1168ed265abde1667da8f9e28f5395c96d093bc4 100644
--- a/openair2/LAYER2/MAC/main_ue.c
+++ b/openair2/LAYER2/MAC/main_ue.c
@@ -43,7 +43,8 @@
 
 
 #include "common/ran_context.h"
-
+extern FILL_UL_INFO_MUTEX_t fill_ul_mutex;
+extern uint8_t nfapi_mode;
 extern void openair_rrc_top_init_ue( int eMBMS_active, char* uecap_xer, uint8_t cba_group_active, uint8_t HO_active);
 
 void dl_phy_sync_success(module_id_t module_idP, frame_t frameP, unsigned char eNB_index, uint8_t first_sync)	//init as MR
@@ -103,6 +104,15 @@ mac_top_init_ue(int eMBMS_active, char *uecap_xer,
 	UE_mac_inst = NULL;
     }
 
+    // mutex below are used for multiple UE's L2 FAPI simulation.
+    if (nfapi_mode == 3){
+      pthread_mutex_init(&fill_ul_mutex.rx_mutex,NULL);
+      pthread_mutex_init(&fill_ul_mutex.crc_mutex,NULL);
+      pthread_mutex_init(&fill_ul_mutex.sr_mutex,NULL);
+      pthread_mutex_init(&fill_ul_mutex.harq_mutex,NULL);
+      pthread_mutex_init(&fill_ul_mutex.cqi_mutex,NULL);
+      pthread_mutex_init(&fill_ul_mutex.rach_mutex,NULL);
+    }
 
     LOG_I(MAC, "[MAIN] calling RRC\n");
     openair_rrc_top_init_ue(eMBMS_active, uecap_xer, cba_group_active,
diff --git a/openair2/LAYER2/MAC/ue_procedures.c b/openair2/LAYER2/MAC/ue_procedures.c
index dd7354df1cfbc8aafdb1cdbec7a9dbc37e14296c..bca5ef0ae8afbb42d8302f6a6da07508d3f90303 100644
--- a/openair2/LAYER2/MAC/ue_procedures.c
+++ b/openair2/LAYER2/MAC/ue_procedures.c
@@ -69,6 +69,8 @@
 extern UL_IND_t *UL_INFO;
 
 extern uint8_t  nfapi_mode;
+extern int next_ra_frame;
+extern module_id_t next_Mod_id;
 
 /*
  *
@@ -2530,44 +2532,50 @@ ue_scheduler(const module_id_t module_idP,
 				   UE_mac_inst[module_idP].crnti, txFrameP,
 				   txSubframeP, eNB_indexP);
 #if defined(ENABLE_ITTI)
+    if(module_idP == 0){
+      do {
+	  // Checks if a message has been sent to MAC sub-task
+	  itti_poll_msg(TASK_MAC_UE, &msg_p);
 
-    do {
-	// Checks if a message has been sent to MAC sub-task
-	itti_poll_msg(TASK_MAC_UE, &msg_p);
+	    if (msg_p != NULL) {
 
-	if (msg_p != NULL) {
+	      switch (ITTI_MSG_ID(msg_p)) {
+	      case RRC_MAC_CCCH_DATA_REQ:
+		  LOG_I(MAC,
+		        "Received %s from %s: instance %d, frameP %d, eNB_index %d\n",
+		        ITTI_MSG_NAME(msg_p), ITTI_MSG_ORIGIN_NAME(msg_p), ITTI_MSG_INSTANCE(msg_p),
+		        RRC_MAC_CCCH_DATA_REQ(msg_p).frame,
+		        RRC_MAC_CCCH_DATA_REQ(msg_p).enb_index);
 
-	    switch (ITTI_MSG_ID(msg_p)) {
-	    case RRC_MAC_CCCH_DATA_REQ:
-		LOG_I(MAC,
-		      "Received %s from %s: instance %d, frameP %d, eNB_index %d\n",
-		      ITTI_MSG_NAME(msg_p), ITTI_MSG_ORIGIN_NAME(msg_p), ITTI_MSG_INSTANCE(msg_p),
-		      RRC_MAC_CCCH_DATA_REQ(msg_p).frame,
-		      RRC_MAC_CCCH_DATA_REQ(msg_p).enb_index);
+		  // TODO process CCCH data req.
+		  break;
 
-		// TODO process CCCH data req.
-		break;
 
+	      default:
+		  LOG_E(MAC, "Received unexpected message %s\n", ITTI_MSG_NAME(msg_p));
+		  break;
+	      }
 
-	    default:
-		LOG_E(MAC, "Received unexpected message %s\n", ITTI_MSG_NAME(msg_p));
-		break;
+	      result = itti_free(ITTI_MSG_ORIGIN_ID(msg_p), msg_p);
+	      AssertFatal(result == EXIT_SUCCESS,
+			  "Failed to free memory (%d)!\n", result);
 	    }
-
-	    result = itti_free(ITTI_MSG_ORIGIN_ID(msg_p), msg_p);
-	    AssertFatal(result == EXIT_SUCCESS,
-			"Failed to free memory (%d)!\n", result);
-	}
-    }
+      }
     while (msg_p != NULL);
-
+    }
 #endif
 
     //Mac_rlc_xface->frameP=frameP;
     //Rrc_xface->Frame_index=Mac_rlc_xface->frameP;
     //if (subframe%5 == 0)
     //LG#ifdef EXMIMO
-    pdcp_run(&ctxt);
+
+    // data to/from NETLINK is treated in pdcp_run.
+    // one socket is used in multiple UE's L2 FAPI simulator and
+    // only first UE need to do this.
+    if(module_idP == 0){
+      pdcp_run(&ctxt);
+    }
     //#endif
     UE_mac_inst[module_idP].txFrame = txFrameP;
     UE_mac_inst[module_idP].txSubframe = txSubframeP;
diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c
index 47723f9b40f2f41bccfc3c14306fb8d2bbf23dbb..b21a5c24220b565f002cd448ce73dfac3e5971ea 100644
--- a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c
+++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c
@@ -49,7 +49,7 @@
 #include "platform_constants.h"
 #include "common/utils/LOG/vcd_signal_dumper.h"
 #include "msc.h"
-
+#include "targets/COMMON/openairinterface5g_limits.h"
 #if defined(ENABLE_SECURITY)
 # include "UTIL/OSA/osa_defs.h"
 #endif
@@ -64,9 +64,12 @@
 #endif
 
 extern int otg_enabled;
-
+#if defined(ENABLE_USE_MME)
+extern uint8_t nfapi_mode;
+#endif
 #include "common/ran_context.h"
 extern RAN_CONTEXT_t RC;
+hash_table_t  *pdcp_coll_p = NULL;
 
 #ifdef MBMS_MULTICAST_OUT
 # include <sys/types.h>
@@ -798,12 +801,21 @@ pdcp_data_ind(
          * for the UE compiled in noS1 mode, we need 0
          * TODO: be sure of this
          */
-        ((pdcp_data_ind_header_t*) new_sdu_p->data)->inst  = 1;
+        if (nfapi_mode == 3) {
+#ifdef UESIM_EXPANSION
+          ((pdcp_data_ind_header_t*) new_sdu_p->data)->inst  = 0;
+#else
+          ((pdcp_data_ind_header_t*) new_sdu_p->data)->inst  = ctxt_pP->module_id;
+#endif
+        } else {
+          ((pdcp_data_ind_header_t*) new_sdu_p->data)->inst  = 1;
+        }
 #endif
       } else {
         ((pdcp_data_ind_header_t*) new_sdu_p->data)->rb_id = rb_id + (ctxt_pP->module_id * LTE_maxDRB);
+        ((pdcp_data_ind_header_t*) new_sdu_p->data)->inst  = ctxt_pP->module_id;
       }
-
+      // new_sdu_p->data->inst is set again in UE case so move to above.
       //Panos: Commented this out because it cancels the assignment in #if defined(ENABLE_USE_MME) case
       //((pdcp_data_ind_header_t*) new_sdu_p->data)->inst  = ctxt_pP->module_id;
 
@@ -2021,7 +2033,7 @@ void pdcp_layer_init(void)
    * Initialize SDU list
    */
   list_init(&pdcp_sdu_list, NULL);
-  pdcp_coll_p = hashtable_create ((LTE_maxDRB + 2) * 16, NULL, pdcp_free);
+  pdcp_coll_p = hashtable_create ((LTE_maxDRB + 2) * NUMBER_OF_UE_MAX, NULL, pdcp_free);
   AssertFatal(pdcp_coll_p != NULL, "UNRECOVERABLE error, PDCP hashtable_create failed");
 
   for (instance = 0; instance < MAX_MOBILES_PER_ENB; instance++) {
diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp.h b/openair2/LAYER2/PDCP_v10.1.0/pdcp.h
index bc3bdac828828cce47915f50165b47bae83f41ce..69157b639837bf146ef29b8306f997597314809b 100644
--- a/openair2/LAYER2/PDCP_v10.1.0/pdcp.h
+++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp.h
@@ -542,7 +542,7 @@ sdu_size_t             pdcp_input_sdu_remaining_size_to_read;
     (((hash_key_t)(sESSION_ID)) << 37) | \
     (((hash_key_t)(0x0000000000000001))  << 63))
 
-hash_table_t  *pdcp_coll_p;
+extern hash_table_t  *pdcp_coll_p;
 
 #endif
 /*@}*/
diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c
index cf89a6dc1b75c09d74f448665fa2bfa6121a2a51..906fbaba5a4f626cb2457c89f9687138f88b36b0 100644
--- a/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c
+++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c
@@ -82,10 +82,13 @@ extern struct msghdr nas_msg_tx;
 extern struct msghdr nas_msg_rx;
 
 unsigned char pdcp_read_state_g = 0;
+extern uint8_t nfapi_mode;
+#ifdef UESIM_EXPANSION
+extern uint16_t inst_pdcp_list[NUMBER_OF_UE_MAX];
+#endif
 #endif
 
 extern Packet_OTG_List_t *otg_pdcp_buffer;
-
 #if defined(LINK_ENB_PDCP_TO_GTPV1U)
 #  include "gtpv1u_eNB_task.h"
 #  include "gtpv1u_eNB_defs.h"
@@ -168,7 +171,12 @@ int pdcp_fifo_flush_sdus(const protocol_ctxt_t* const  ctxt_pP)
             ((pdcp_data_ind_header_t*) sdu_p->data)->inst,
             ((pdcp_data_ind_header_t *) sdu_p->data)->data_size);
 #else
-      //((pdcp_data_ind_header_t *)(sdu_p->data))->inst = 0;
+      // Raphael: was suppressed by Raymond --> should be suppressed?
+      // value of sdu_p->data->inst is set in pdcp_data_ind
+      // it's necessary to set 1 in case of UE with S1.
+      //if (ctxt_pP->enb_flag){
+      //  ((pdcp_data_ind_header_t *)(sdu_p->data))->inst = 0;
+      //}
 #endif
 
 #if defined(LINK_ENB_PDCP_TO_GTPV1U)
@@ -927,7 +935,15 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t* const  ctxt_pP)
             rab_id      = pdcp_read_header_g.rb_id % LTE_maxDRB;
             ctxt.rnti          = pdcp_eNB_UE_instance_to_rnti[pdcp_read_header_g.rb_id / LTE_maxDRB];
           } else {
-            ctxt.module_id = 0;
+            if (nfapi_mode == 3) {
+#ifdef UESIM_EXPANSION
+              ctxt.module_id = inst_pdcp_list[pdcp_read_header_g.inst];
+#else
+              ctxt.module_id = pdcp_read_header_g.inst;
+#endif
+            } else {
+              ctxt.module_id = 0;
+            }
             rab_id      = pdcp_read_header_g.rb_id % LTE_maxDRB;
             ctxt.rnti          = pdcp_UE_UE_module_id_to_rnti[ctxt.module_id];
           }
@@ -1072,7 +1088,22 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t* const  ctxt_pP)
                                           pdcp_read_header_g.rb_id,
                                           rab_id,
                                           pdcp_read_header_g.data_size);
-
+                        if(nfapi_mode == 3){
+                        pdcp_data_req(
+                              &ctxt,
+                              SRB_FLAG_NO,
+                              rab_id,
+                              RLC_MUI_UNDEFINED,
+                              RLC_SDU_CONFIRM_NO,
+                              pdcp_read_header_g.data_size,
+                              (unsigned char *)NLMSG_DATA(nas_nlh_rx),
+                              PDCP_TRANSMISSION_MODE_DATA
+#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
+                              ,NULL
+                              ,NULL
+#endif
+                              );
+                        }else{
                         pdcp_data_req(
                               &ctxt,
                               SRB_FLAG_NO,
@@ -1087,6 +1118,7 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t* const  ctxt_pP)
                               ,&pdcp_read_header_g.destinationL2Id
 #endif
                               );
+                        }
                      } else {
                         MSC_LOG_RX_DISCARDED_MESSAGE(
                               (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_PDCP_ENB:MSC_PDCP_UE,
@@ -1130,7 +1162,22 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t* const  ctxt_pP)
                                        pdcp_read_header_g.rb_id,
                                        DEFAULT_RAB_ID,
                                        pdcp_read_header_g.data_size);
-
+                     if(nfapi_mode == 3){
+                     pdcp_data_req (
+                           &ctxt,
+                           SRB_FLAG_NO,
+                           DEFAULT_RAB_ID,
+                           RLC_MUI_UNDEFINED,
+                           RLC_SDU_CONFIRM_NO,
+                           pdcp_read_header_g.data_size,
+                           (unsigned char *)NLMSG_DATA(nas_nlh_rx),
+                           PDCP_TRANSMISSION_MODE_DATA
+#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
+                           ,NULL
+                           ,NULL
+#endif
+                               );
+                     }else{
                      pdcp_data_req (
                            &ctxt,
                            SRB_FLAG_NO,
@@ -1145,6 +1192,7 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t* const  ctxt_pP)
                            ,&pdcp_read_header_g.destinationL2Id
 #endif
                            );
+                     }
                   }
                }
 
diff --git a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c
index e2911efcaf3314ebff84e2143ab1be72e88abb54..33ab7965e514ea878d7fcf648e0c11f3185c0fd7 100644
--- a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c
+++ b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c
@@ -25,9 +25,7 @@
 #include "platform_types.h"
 #include "platform_constants.h"
 //-----------------------------------------------------------------------------
-#if ENABLE_ITTI
-# include "intertask_interface.h"
-#endif
+
 #include "assertions.h"
 #include "msc.h"
 #include "hashtable.h"
@@ -46,171 +44,145 @@
 //-----------------------------------------------------------------------------
 uint32_t
 rlc_am_get_status_pdu_buffer_occupancy(
-  rlc_am_entity_t * const      rlc_pP){
-
-	//Compute Max Status PDU size according to what has been received and not received in the window [vrR vrMS[
-
-    // minimum header size in bits to be transmitted: D/C + CPT + ACK_SN + E1
-	uint32_t                    nb_bits_to_transmit	  = RLC_AM_PDU_D_C_BITS + RLC_AM_STATUS_PDU_CPT_LENGTH + RLC_AM_SN_BITS + RLC_AM_PDU_E_BITS;
-	mem_block_t                  *cursor_p              = rlc_pP->receiver_buffer.head;
-    rlc_am_pdu_info_t            *pdu_info_cursor_p     = NULL;
-    int                           waited_so             = 0;
-
-	rlc_sn_t sn_cursor = rlc_pP->vr_r;
-	rlc_sn_t sn_prev = rlc_pP->vr_r;
-	rlc_sn_t sn_end = rlc_pP->vr_ms;
-	boolean_t	segment_loop_end	  = false;
-
-
-	if (sn_prev != sn_end)
-	{
-		while ((RLC_AM_DIFF_SN(sn_prev,rlc_pP->vr_r) < RLC_AM_DIFF_SN(sn_end,rlc_pP->vr_r)) && (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;
-
-			// Add holes between sn_prev and sn_cursor
-			while ((sn_prev != sn_cursor) && (sn_prev != sn_end))
-			{
-				  /* Add 1 NACK_SN + E1 + E2 */
-				  nb_bits_to_transmit += (RLC_AM_SN_BITS + (RLC_AM_PDU_E_BITS << 1));
-				  sn_prev = RLC_AM_NEXT_SN(sn_prev);
-			} //end while (sn_prev != sn_cursor)
-
-			/* Handle case sn_cursor is partially received */
-			/* Each gap will add NACK_SN + E1 + E2 + SOStart + SOEnd */
-			if ((((rlc_am_rx_pdu_management_t*)(cursor_p->data))->all_segments_received == 0) && (RLC_AM_DIFF_SN(sn_cursor,rlc_pP->vr_r) < RLC_AM_DIFF_SN(sn_end,rlc_pP->vr_r)))
-			{
-                 /* Check lsf */
-				  segment_loop_end = (pdu_info_cursor_p->lsf == 1);
-
-	    		  /* Fill for [0 SO[ if SO not null */
-	    		  if (pdu_info_cursor_p->so) {
-	    			  nb_bits_to_transmit += (RLC_AM_SN_BITS + (RLC_AM_PDU_E_BITS << 1) + (RLC_AM_STATUS_PDU_SO_LENGTH << 1));
-	                  waited_so = pdu_info_cursor_p->so + pdu_info_cursor_p->payload_size;
-	    		  }
-	    		  else {
-	        		  waited_so = pdu_info_cursor_p->payload_size;
-	    		  }
-
-                  /* Go to next segment */
-                  cursor_p = cursor_p->next;
-                  if (cursor_p != NULL)
-                  {
-                      pdu_info_cursor_p     = &((rlc_am_rx_pdu_management_t*)(cursor_p->data))->pdu_info;
-                  }
+  rlc_am_entity_t *const      rlc_pP) {
+  //Compute Max Status PDU size according to what has been received and not received in the window [vrR vrMS[
+  // minimum header size in bits to be transmitted: D/C + CPT + ACK_SN + E1
+  uint32_t                    nb_bits_to_transmit   = RLC_AM_PDU_D_C_BITS + RLC_AM_STATUS_PDU_CPT_LENGTH + RLC_AM_SN_BITS + RLC_AM_PDU_E_BITS;
+  mem_block_t                  *cursor_p              = rlc_pP->receiver_buffer.head;
+  rlc_am_pdu_info_t            *pdu_info_cursor_p     = NULL;
+  int                           waited_so             = 0;
+  rlc_sn_t sn_cursor = rlc_pP->vr_r;
+  rlc_sn_t sn_prev = rlc_pP->vr_r;
+  rlc_sn_t sn_end = rlc_pP->vr_ms;
+  boolean_t segment_loop_end    = false;
+
+  if (sn_prev != sn_end) {
+    while ((RLC_AM_DIFF_SN(sn_prev,rlc_pP->vr_r) < RLC_AM_DIFF_SN(sn_end,rlc_pP->vr_r)) && (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;
+
+      // Add holes between sn_prev and sn_cursor
+      while ((sn_prev != sn_cursor) && (sn_prev != sn_end)) {
+        /* Add 1 NACK_SN + E1 + E2 */
+        nb_bits_to_transmit += (RLC_AM_SN_BITS + (RLC_AM_PDU_E_BITS << 1));
+        sn_prev = RLC_AM_NEXT_SN(sn_prev);
+      } //end while (sn_prev != sn_cursor)
+
+      /* Handle case sn_cursor is partially received */
+      /* Each gap will add NACK_SN + E1 + E2 + SOStart + SOEnd */
+      if ((((rlc_am_rx_pdu_management_t *)(cursor_p->data))->all_segments_received == 0) && (RLC_AM_DIFF_SN(sn_cursor,rlc_pP->vr_r) < RLC_AM_DIFF_SN(sn_end,rlc_pP->vr_r))) {
+        /* Check lsf */
+        segment_loop_end = (pdu_info_cursor_p->lsf == 1);
+
+        /* Fill for [0 SO[ if SO not null */
+        if (pdu_info_cursor_p->so) {
+          nb_bits_to_transmit += (RLC_AM_SN_BITS + (RLC_AM_PDU_E_BITS << 1) + (RLC_AM_STATUS_PDU_SO_LENGTH << 1));
+          waited_so = pdu_info_cursor_p->so + pdu_info_cursor_p->payload_size;
+        } else {
+          waited_so = pdu_info_cursor_p->payload_size;
+        }
+
+        /* Go to next segment */
+        cursor_p = cursor_p->next;
+
+        if (cursor_p != NULL) {
+          pdu_info_cursor_p     = &((rlc_am_rx_pdu_management_t *)(cursor_p->data))->pdu_info;
+        }
+
+        /* Fill following gaps if any */
+        while (!segment_loop_end) {
+          if ((cursor_p != NULL) && (pdu_info_cursor_p->sn == sn_cursor)) {
+            /* Check lsf */
+            segment_loop_end = (pdu_info_cursor_p->lsf == 1);
+
+            if (waited_so < pdu_info_cursor_p->so) {
+              nb_bits_to_transmit += (RLC_AM_SN_BITS + (RLC_AM_PDU_E_BITS << 1) + (RLC_AM_STATUS_PDU_SO_LENGTH << 1));
+            } else {
+              /* contiguous segment: only update waited_so */
+              /* Assuming so and payload_size updated according to duplication removal done at reception ... */
+              waited_so += pdu_info_cursor_p->payload_size;
+            }
+
+            /* Go to next received PDU or PDU Segment */
+            cursor_p = cursor_p->next;
+
+            if (cursor_p != NULL) {
+              pdu_info_cursor_p     = &((rlc_am_rx_pdu_management_t *)(cursor_p->data))->pdu_info;
+            }
+          } else {
+            /* Fill last gap assuming LSF is not received */
+            nb_bits_to_transmit += (RLC_AM_SN_BITS + (RLC_AM_PDU_E_BITS << 1) + (RLC_AM_STATUS_PDU_SO_LENGTH << 1));
+            segment_loop_end = true;
+          }
+        } // end while (!segment_loop_end)
+      } // end if segments
+      else {
+        /* Go to next received PDU or PDU segment with different SN */
+        do {
+          cursor_p = cursor_p->next;
+        } while ((cursor_p != NULL) && (((rlc_am_rx_pdu_management_t *)(cursor_p->data))->pdu_info.sn == sn_cursor));
+      }
 
-	    		  /* Fill following gaps if any */
-	    		  while (!segment_loop_end)
-	    		  {
-	    			  if ((cursor_p != NULL) && (pdu_info_cursor_p->sn == sn_cursor))
-	    			  {
-		                  /* Check lsf */
-	    				  segment_loop_end = (pdu_info_cursor_p->lsf == 1);
-
-            			  if (waited_so < pdu_info_cursor_p->so) {
-    	                      nb_bits_to_transmit += (RLC_AM_SN_BITS + (RLC_AM_PDU_E_BITS << 1) + (RLC_AM_STATUS_PDU_SO_LENGTH << 1));
-            			  }
-            			  else {
-            				  /* contiguous segment: only update waited_so */
-            				  /* Assuming so and payload_size updated according to duplication removal done at reception ... */
-            				  waited_so += pdu_info_cursor_p->payload_size;
-            			  }
-
-            			  /* Go to next received PDU or PDU Segment */
-            			  cursor_p = cursor_p->next;
-    	                  if (cursor_p != NULL)
-    	                  {
-    		                  pdu_info_cursor_p     = &((rlc_am_rx_pdu_management_t*)(cursor_p->data))->pdu_info;
-    	                  }
-	    			  }
-	    			  else
-	    			  {
-	    				  /* Fill last gap assuming LSF is not received */
-	    				  nb_bits_to_transmit += (RLC_AM_SN_BITS + (RLC_AM_PDU_E_BITS << 1) + (RLC_AM_STATUS_PDU_SO_LENGTH << 1));
-	    				  segment_loop_end = true;
-	    			  }
-	    		  } // end while (!segment_loop_end)
-			} // end if segments
-			else
-			{
-				  /* Go to next received PDU or PDU segment with different SN */
-				  do
-				  {
-					  cursor_p = cursor_p->next;
-				  } while ((cursor_p != NULL) && (((rlc_am_rx_pdu_management_t*)(cursor_p->data))->pdu_info.sn == sn_cursor));
-			}
-
-			sn_prev = RLC_AM_NEXT_SN(sn_cursor);
-		}
-	} // end if (sn_prev != sn_end)
-
-	// round up to the greatest byte
-	return ((nb_bits_to_transmit + 7) >> 3);
+      sn_prev = RLC_AM_NEXT_SN(sn_cursor);
+    }
+  } // end if (sn_prev != sn_end)
 
+  // round up to the greatest byte
+  return ((nb_bits_to_transmit + 7) >> 3);
 }
 
 //-----------------------------------------------------------------------------
 uint32_t
 rlc_am_get_buffer_occupancy_in_bytes (
-  const protocol_ctxt_t* const ctxt_pP,
-  rlc_am_entity_t * const      rlc_pP)
-{
+  const protocol_ctxt_t *const ctxt_pP,
+  rlc_am_entity_t *const      rlc_pP) {
   // priority of control trafic
   rlc_pP->status_buffer_occupancy = 0;
-  if ((rlc_pP->status_requested) && !(rlc_pP->status_requested & RLC_AM_STATUS_NO_TX_MASK)) {
-      rlc_pP->status_buffer_occupancy = rlc_am_get_status_pdu_buffer_occupancy(rlc_pP);
-#if TRACE_RLC_AM_BO
-
-        LOG_D(RLC, PROTOCOL_CTXT_FMT RB_AM_FMT" BO : CONTROL PDU %d bytes \n",
-              PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-			rlc_pP->status_buffer_occupancy);
 
-#endif
+  if ((rlc_pP->status_requested) && !(rlc_pP->status_requested & RLC_AM_STATUS_NO_TX_MASK)) {
+    rlc_pP->status_buffer_occupancy = rlc_am_get_status_pdu_buffer_occupancy(rlc_pP);
+    LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT" BO : CONTROL PDU %d bytes \n",
+          PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
+          rlc_pP->status_buffer_occupancy);
   }
 
-
-#if TRACE_RLC_AM_BO
-
-  if ((rlc_pP->status_buffer_occupancy + rlc_pP->retrans_num_bytes_to_retransmit + rlc_pP->sdu_buffer_occupancy + max_li_overhead + header_overhead) > 0) {
-    LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT" BO : STATUS  BUFFER %d bytes \n", PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP), rlc_pP->status_buffer_occupancy);
-    LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT" BO : RETRANS BUFFER %d bytes \n", PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP), rlc_pP->retrans_num_bytes_to_retransmit);
-    LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT" BO : SDU     BUFFER %d bytes + li_overhead %d bytes header_overhead %d bytes (nb sdu not segmented %d)\n",
-          PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-          rlc_pP->sdu_buffer_occupancy,
-          0,
-          0,
-          rlc_pP->nb_sdu_no_segmented);
+  if ( LOG_DEBUGFLAG(DEBUG_RLC)) {
+    if ((rlc_pP->status_buffer_occupancy + rlc_pP->retrans_num_bytes_to_retransmit + rlc_pP->sdu_buffer_occupancy ) > 0) {
+      LOG_UI(RLC, PROTOCOL_RLC_AM_CTXT_FMT" BO : STATUS  BUFFER %d bytes \n", PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP), rlc_pP->status_buffer_occupancy);
+      LOG_UI(RLC, PROTOCOL_RLC_AM_CTXT_FMT" BO : RETRANS BUFFER %d bytes \n", PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP), rlc_pP->retrans_num_bytes_to_retransmit);
+      LOG_UI(RLC, PROTOCOL_RLC_AM_CTXT_FMT" BO : SDU	BUFFER %d bytes + li_overhead %d bytes header_overhead %d bytes (nb sdu not segmented %d)\n",
+             PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
+             rlc_pP->sdu_buffer_occupancy,
+             0,
+             0,
+             rlc_pP->nb_sdu_no_segmented);
+    }
   }
 
-#endif
   return rlc_pP->status_buffer_occupancy + rlc_pP->retrans_num_bytes_to_retransmit + rlc_pP->sdu_buffer_occupancy;
 }
 //-----------------------------------------------------------------------------
 void
 rlc_am_release (
-  const protocol_ctxt_t* const ctxt_pP,
-  rlc_am_entity_t * const      rlc_pP
-)
-{
+  const protocol_ctxt_t *const ctxt_pP,
+  rlc_am_entity_t *const      rlc_pP
+) {
   // empty
 }
 //-----------------------------------------------------------------------------
 void
 config_req_rlc_am (
-  const protocol_ctxt_t* const ctxt_pP,
+  const protocol_ctxt_t *const ctxt_pP,
   const srb_flag_t             srb_flagP,
-  const rlc_am_info_t  *       config_am_pP,
+  const rlc_am_info_t         *config_am_pP,
   const rb_id_t                rb_idP,
-  const logical_chan_id_t      chan_idP 
-)
-{
+  const logical_chan_id_t      chan_idP
+) {
   rlc_union_t       *rlc_union_p = NULL;
   rlc_am_entity_t *l_rlc_p         = NULL;
   hash_key_t       key           = RLC_COLL_KEY_VALUE(ctxt_pP->module_id, ctxt_pP->rnti, ctxt_pP->enb_flag, rb_idP, srb_flagP);
   hashtable_rc_t   h_rc;
-
-  h_rc = hashtable_get(rlc_coll_p, key, (void**)&rlc_union_p);
+  h_rc = hashtable_get(rlc_coll_p, key, (void **)&rlc_union_p);
 
   if (h_rc == HASH_TABLE_OK) {
     l_rlc_p = &rlc_union_p->rlc.am;
@@ -252,18 +224,16 @@ uint32_t t_StatusProhibit_tab[LTE_T_StatusProhibit_spare8]= {0,5,10,15,20,25,30,
 
 //-----------------------------------------------------------------------------
 void config_req_rlc_am_asn1 (
-  const protocol_ctxt_t* const         ctxt_pP,
+  const protocol_ctxt_t *const         ctxt_pP,
   const srb_flag_t                     srb_flagP,
-  const struct LTE_RLC_Config__am  * const config_am_pP,
+  const struct LTE_RLC_Config__am   *const config_am_pP,
   const rb_id_t                        rb_idP,
-  const logical_chan_id_t              chan_idP)
-{
+  const logical_chan_id_t              chan_idP) {
   rlc_union_t     *rlc_union_p   = NULL;
   rlc_am_entity_t *l_rlc_p         = NULL;
   hash_key_t       key           = RLC_COLL_KEY_VALUE(ctxt_pP->module_id, ctxt_pP->rnti, ctxt_pP->enb_flag, rb_idP, srb_flagP);
   hashtable_rc_t   h_rc;
-
-  h_rc = hashtable_get(rlc_coll_p, key, (void**)&rlc_union_p);
+  h_rc = hashtable_get(rlc_coll_p, key, (void **)&rlc_union_p);
 
   if (h_rc == HASH_TABLE_OK) {
     l_rlc_p = &rlc_union_p->rlc.am;
@@ -280,7 +250,6 @@ void config_req_rlc_am_asn1 (
         (config_am_pP->dl_AM_RLC.t_Reordering<LTE_T_Reordering_spare1) &&
         (config_am_pP->dl_AM_RLC.t_StatusProhibit<LTE_T_StatusProhibit_spare8) ) {
 #endif
-
       MSC_LOG_RX_MESSAGE(
         (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_ENB:MSC_RLC_UE,
         (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RRC_ENB:MSC_RRC_UE,
@@ -292,7 +261,6 @@ void config_req_rlc_am_asn1 (
         PollRetransmit_tab[config_am_pP->ul_AM_RLC.t_PollRetransmit],
         am_t_Reordering_tab[config_am_pP->dl_AM_RLC.t_Reordering],
         t_StatusProhibit_tab[config_am_pP->dl_AM_RLC.t_StatusProhibit]);
-
       LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT" CONFIG_REQ (max_retx_threshold=%d poll_pdu=%d poll_byte=%d t_poll_retransmit=%d t_reord=%d t_status_prohibit=%d)\n",
             PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,l_rlc_p),
             maxRetxThreshold_tab[config_am_pP->ul_AM_RLC.maxRetxThreshold],
@@ -301,7 +269,6 @@ void config_req_rlc_am_asn1 (
             PollRetransmit_tab[config_am_pP->ul_AM_RLC.t_PollRetransmit],
             am_t_Reordering_tab[config_am_pP->dl_AM_RLC.t_Reordering],
             t_StatusProhibit_tab[config_am_pP->dl_AM_RLC.t_StatusProhibit]);
-
       rlc_am_init(ctxt_pP, l_rlc_p);
       rlc_am_set_debug_infos(ctxt_pP, l_rlc_p, srb_flagP, rb_idP, chan_idP);
       rlc_am_configure(ctxt_pP, l_rlc_p,
@@ -311,7 +278,8 @@ void config_req_rlc_am_asn1 (
                        PollRetransmit_tab[config_am_pP->ul_AM_RLC.t_PollRetransmit],
                        am_t_Reordering_tab[config_am_pP->dl_AM_RLC.t_Reordering],
                        t_StatusProhibit_tab[config_am_pP->dl_AM_RLC.t_StatusProhibit]);
-    } else {
+    }
+    else {
       MSC_LOG_RX_DISCARDED_MESSAGE(
         (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_ENB:MSC_RLC_UE,
         (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RRC_ENB:MSC_RRC_UE,
@@ -320,7 +288,6 @@ void config_req_rlc_am_asn1 (
         MSC_AS_TIME_FMT" "PROTOCOL_RLC_AM_MSC_FMT" CONFIG-REQ",
         MSC_AS_TIME_ARGS(ctxt_pP),
         PROTOCOL_RLC_AM_MSC_ARGS(ctxt_pP, l_rlc_p));
-
       LOG_D(RLC,
             PROTOCOL_RLC_AM_CTXT_FMT"ILLEGAL CONFIG_REQ (max_retx_threshold=%ld poll_pdu=%ld poll_byte=%ld t_poll_retransmit=%ld t_reord=%ld t_status_prohibit=%ld), RLC-AM NOT CONFIGURED\n",
             PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,l_rlc_p),
@@ -339,36 +306,35 @@ void config_req_rlc_am_asn1 (
 
 //-----------------------------------------------------------------------------
 void rlc_am_stat_req (
-  const protocol_ctxt_t* const         ctxt_pP,
-  rlc_am_entity_t * const              rlc_pP,
-  unsigned int* stat_tx_pdcp_sdu,
-  unsigned int* stat_tx_pdcp_bytes,
-  unsigned int* stat_tx_pdcp_sdu_discarded,
-  unsigned int* stat_tx_pdcp_bytes_discarded,
-  unsigned int* stat_tx_data_pdu,
-  unsigned int* stat_tx_data_bytes,
-  unsigned int* stat_tx_retransmit_pdu_by_status,
-  unsigned int* stat_tx_retransmit_bytes_by_status,
-  unsigned int* stat_tx_retransmit_pdu,
-  unsigned int* stat_tx_retransmit_bytes,
-  unsigned int* stat_tx_control_pdu,
-  unsigned int* stat_tx_control_bytes,
-  unsigned int* stat_rx_pdcp_sdu,
-  unsigned int* stat_rx_pdcp_bytes,
-  unsigned int* stat_rx_data_pdus_duplicate,
-  unsigned int* stat_rx_data_bytes_duplicate,
-  unsigned int* stat_rx_data_pdu,
-  unsigned int* stat_rx_data_bytes,
-  unsigned int* stat_rx_data_pdu_dropped,
-  unsigned int* stat_rx_data_bytes_dropped,
-  unsigned int* stat_rx_data_pdu_out_of_window,
-  unsigned int* stat_rx_data_bytes_out_of_window,
-  unsigned int* stat_rx_control_pdu,
-  unsigned int* stat_rx_control_bytes,
-  unsigned int* stat_timer_reordering_timed_out,
-  unsigned int* stat_timer_poll_retransmit_timed_out,
-  unsigned int* stat_timer_status_prohibit_timed_out)
-{
+  const protocol_ctxt_t *const         ctxt_pP,
+  rlc_am_entity_t *const              rlc_pP,
+  unsigned int *stat_tx_pdcp_sdu,
+  unsigned int *stat_tx_pdcp_bytes,
+  unsigned int *stat_tx_pdcp_sdu_discarded,
+  unsigned int *stat_tx_pdcp_bytes_discarded,
+  unsigned int *stat_tx_data_pdu,
+  unsigned int *stat_tx_data_bytes,
+  unsigned int *stat_tx_retransmit_pdu_by_status,
+  unsigned int *stat_tx_retransmit_bytes_by_status,
+  unsigned int *stat_tx_retransmit_pdu,
+  unsigned int *stat_tx_retransmit_bytes,
+  unsigned int *stat_tx_control_pdu,
+  unsigned int *stat_tx_control_bytes,
+  unsigned int *stat_rx_pdcp_sdu,
+  unsigned int *stat_rx_pdcp_bytes,
+  unsigned int *stat_rx_data_pdus_duplicate,
+  unsigned int *stat_rx_data_bytes_duplicate,
+  unsigned int *stat_rx_data_pdu,
+  unsigned int *stat_rx_data_bytes,
+  unsigned int *stat_rx_data_pdu_dropped,
+  unsigned int *stat_rx_data_bytes_dropped,
+  unsigned int *stat_rx_data_pdu_out_of_window,
+  unsigned int *stat_rx_data_bytes_out_of_window,
+  unsigned int *stat_rx_control_pdu,
+  unsigned int *stat_rx_control_bytes,
+  unsigned int *stat_timer_reordering_timed_out,
+  unsigned int *stat_timer_poll_retransmit_timed_out,
+  unsigned int *stat_timer_status_prohibit_timed_out) {
   *stat_tx_pdcp_sdu                     = rlc_pP->stat_tx_pdcp_sdu;
   *stat_tx_pdcp_bytes                   = rlc_pP->stat_tx_pdcp_bytes;
   *stat_tx_pdcp_sdu_discarded           = rlc_pP->stat_tx_pdcp_sdu_discarded;
@@ -396,15 +362,13 @@ void rlc_am_stat_req (
   *stat_timer_reordering_timed_out      = rlc_pP->stat_timer_reordering_timed_out;
   *stat_timer_poll_retransmit_timed_out = rlc_pP->stat_timer_poll_retransmit_timed_out;
   *stat_timer_status_prohibit_timed_out = rlc_pP->stat_timer_status_prohibit_timed_out;
-
 }
 //-----------------------------------------------------------------------------
 void
 rlc_am_get_pdus (
-  const protocol_ctxt_t* const ctxt_pP,
-  rlc_am_entity_t * const      rlc_pP
-)
-{
+  const protocol_ctxt_t *const ctxt_pP,
+  rlc_am_entity_t *const      rlc_pP
+) {
   //int display_flag = 0;
   // 5.1.3.1 Transmit operations
   // 5.1.3.1.1
@@ -412,31 +376,27 @@ rlc_am_get_pdus (
   // The transmitting side of an AM RLC entity shall prioritize transmission of RLC control PDUs over RLC data PDUs.
   // The transmitting side of an AM RLC entity shall prioritize retransmission of RLC data PDUs over transmission of new
   // AMD PDUs.
-
-
   switch (rlc_pP->protocol_state) {
-
-  case RLC_NULL_STATE:
-    break;
-
-  case RLC_DATA_TRANSFER_READY_STATE:
-
-    // TRY TO SEND CONTROL PDU FIRST
-    if ((rlc_pP->nb_bytes_requested_by_mac >= 2) &&
-    		((rlc_pP->status_requested) && !(rlc_pP->status_requested & RLC_AM_STATUS_NO_TX_MASK))) {
-      // 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.
-
+    case RLC_NULL_STATE:
+      break;
+
+    case RLC_DATA_TRANSFER_READY_STATE:
+
+      // TRY TO SEND CONTROL PDU FIRST
+      if ((rlc_pP->nb_bytes_requested_by_mac >= 2) &&
+          ((rlc_pP->status_requested) && !(rlc_pP->status_requested & RLC_AM_STATUS_NO_TX_MASK))) {
+        // 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.
         rlc_am_send_status_pdu(ctxt_pP, rlc_pP);
-        mem_block_t* pdu = list_remove_head(&rlc_pP->control_pdu_list);
+        mem_block_t *pdu = list_remove_head(&rlc_pP->control_pdu_list);
 
         if (pdu) {
           list_add_tail_eurecom (pdu, &rlc_pP->pdus_to_mac_layer);
@@ -445,89 +405,81 @@ rlc_am_get_pdus (
           rlc_am_start_timer_status_prohibit(ctxt_pP, rlc_pP);
           return;
         }
-      }
-      else {
-              LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT" DELAYED SENT STATUS PDU (Available MAC Data %u)(T-PROHIBIT %u) (DELAY FLAG %u)\n",
+      } else {
+        LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT" DELAYED SENT STATUS PDU (Available MAC Data %u)(T-PROHIBIT %u) (DELAY FLAG %u)\n",
               PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-					rlc_pP->nb_bytes_requested_by_mac,rlc_pP->t_status_prohibit.ms_time_out,(rlc_pP->status_requested & RLC_AM_STATUS_TRIGGERED_DELAYED));
-    }
+              rlc_pP->nb_bytes_requested_by_mac,rlc_pP->t_status_prohibit.ms_time_out,(rlc_pP->status_requested & RLC_AM_STATUS_TRIGGERED_DELAYED));
+      }
 
-    // THEN TRY TO SEND RETRANS PDU
+      // THEN TRY TO SEND RETRANS PDU
       if ((rlc_pP->retrans_num_bytes_to_retransmit) && (rlc_pP->nb_bytes_requested_by_mac > 2)) {
+        /* Get 1 AM data PDU or PDU segment to retransmit */
+        mem_block_t *pdu_retx = rlc_am_get_pdu_to_retransmit(ctxt_pP, rlc_pP);
 
-      /* Get 1 AM data PDU or PDU segment to retransmit */
-      mem_block_t* pdu_retx = rlc_am_get_pdu_to_retransmit(ctxt_pP, rlc_pP);
-
-      if (pdu_retx != NULL) {
-    	  list_add_tail_eurecom (pdu_retx, &rlc_pP->pdus_to_mac_layer);
-
+        if (pdu_retx != NULL) {
+          list_add_tail_eurecom (pdu_retx, &rlc_pP->pdus_to_mac_layer);
           return;
         }
-        }
+      }
 
-    // THEN TRY TO SEND NEW DATA PDU
-    if ((rlc_pP->nb_bytes_requested_by_mac > 2) && (rlc_pP->sdu_buffer_occupancy) && (rlc_pP->vt_s != rlc_pP->vt_ms)) {
-      rlc_am_segment_10(ctxt_pP, rlc_pP);
-      list_add_list (&rlc_pP->segmentation_pdu_list, &rlc_pP->pdus_to_mac_layer);
+      // THEN TRY TO SEND NEW DATA PDU
+      if ((rlc_pP->nb_bytes_requested_by_mac > 2) && (rlc_pP->sdu_buffer_occupancy) && (rlc_pP->vt_s != rlc_pP->vt_ms)) {
+        rlc_am_segment_10(ctxt_pP, rlc_pP);
+        list_add_list (&rlc_pP->segmentation_pdu_list, &rlc_pP->pdus_to_mac_layer);
 
-      if (rlc_pP->pdus_to_mac_layer.head != NULL) {
-        rlc_pP->stat_tx_data_pdu                   += 1;
-        rlc_pP->stat_tx_data_bytes                 += (((struct mac_tb_req*)(rlc_pP->pdus_to_mac_layer.head->data))->tb_size);
-        return;
+        if (rlc_pP->pdus_to_mac_layer.head != NULL) {
+          rlc_pP->stat_tx_data_pdu                   += 1;
+          rlc_pP->stat_tx_data_bytes                 += (((struct mac_tb_req *)(rlc_pP->pdus_to_mac_layer.head->data))->tb_size);
+          return;
+        }
       }
-    }
 
+      break;
 
-    break;
-
-  default:
-    LOG_E(RLC, PROTOCOL_RLC_AM_CTXT_FMT" MAC_DATA_REQ UNKNOWN PROTOCOL STATE 0x%02X\n",
-          PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-          rlc_pP->protocol_state);
+    default:
+      LOG_E(RLC, PROTOCOL_RLC_AM_CTXT_FMT" MAC_DATA_REQ UNKNOWN PROTOCOL STATE 0x%02X\n",
+            PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
+            rlc_pP->protocol_state);
   }
 }
 //-----------------------------------------------------------------------------
 void
 rlc_am_rx (
-  const protocol_ctxt_t* const ctxt_pP,
-  void * const                 arg_pP,
+  const protocol_ctxt_t *const ctxt_pP,
+  void *const                 arg_pP,
   struct mac_data_ind          data_indP
-)
-{
+) {
   rlc_am_entity_t *rlc = (rlc_am_entity_t *) arg_pP;
 
   switch (rlc->protocol_state) {
-
-  case RLC_NULL_STATE:
-    LOG_I(RLC, PROTOCOL_RLC_AM_CTXT_FMT" ERROR MAC_DATA_IND IN RLC_NULL_STATE\n", PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP, rlc));
-    list_free (&data_indP.data);
-    break;
-
-  case RLC_DATA_TRANSFER_READY_STATE:
-    rlc_am_receive_routing (ctxt_pP, rlc, data_indP);
-    break;
-
-  default:
-    LOG_E(RLC, PROTOCOL_RLC_AM_CTXT_FMT" TX UNKNOWN PROTOCOL STATE 0x%02X\n", PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP, rlc), rlc->protocol_state);
-    list_free (&data_indP.data);
+    case RLC_NULL_STATE:
+      LOG_I(RLC, PROTOCOL_RLC_AM_CTXT_FMT" ERROR MAC_DATA_IND IN RLC_NULL_STATE\n", PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP, rlc));
+      list_free (&data_indP.data);
+      break;
+
+    case RLC_DATA_TRANSFER_READY_STATE:
+      rlc_am_receive_routing (ctxt_pP, rlc, data_indP);
+      break;
+
+    default:
+      LOG_E(RLC, PROTOCOL_RLC_AM_CTXT_FMT" TX UNKNOWN PROTOCOL STATE 0x%02X\n", PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP, rlc), rlc->protocol_state);
+      list_free (&data_indP.data);
   }
 }
 
 //-----------------------------------------------------------------------------
 struct mac_status_resp
 rlc_am_mac_status_indication (
-  const protocol_ctxt_t* const ctxt_pP,
-  void * const                 rlc_pP,
+  const protocol_ctxt_t *const ctxt_pP,
+  void *const                 rlc_pP,
   const uint16_t               tb_sizeP,
   struct mac_status_ind        tx_statusP,
-  const eNB_flag_t enb_flagP)
-{
+  const eNB_flag_t enb_flagP) {
   struct mac_status_resp  status_resp;
   uint16_t  sdu_size = 0;
   uint16_t  sdu_remaining_size = 0;
   int32_t diff_time=0;
   rlc_am_entity_t *rlc = (rlc_am_entity_t *) rlc_pP;
-
   status_resp.buffer_occupancy_in_bytes        = 0;
   status_resp.buffer_occupancy_in_pdus         = 0;
   status_resp.head_sdu_remaining_size_to_send  = 0;
@@ -561,31 +513,27 @@ rlc_am_mac_status_indication (
   // For eNB scheduler : Add Max RLC header size for new PDU
   // For UE : do not add RLC header part to be compliant with BSR definition in 36.321
   if (enb_flagP == ENB_FLAG_YES) {
-	  uint32_t max_li_overhead = 0;
-	  uint32_t header_overhead = 0;
+    uint32_t max_li_overhead = 0;
+    uint32_t header_overhead = 0;
 
-	   if (rlc->nb_sdu_no_segmented > 1) {
-	   	/* This computation assumes there is no SDU with size greater than 2047 bytes, otherwise a new PDU must be built except for LI15 configuration from Rel12*/
-	 	  uint32_t num_li = rlc->nb_sdu_no_segmented - 1;
-	       max_li_overhead = num_li + (num_li >> 1) + (num_li & 1);
-	   }
+    if (rlc->nb_sdu_no_segmented > 1) {
+      /* This computation assumes there is no SDU with size greater than 2047 bytes, otherwise a new PDU must be built except for LI15 configuration from Rel12*/
+      uint32_t num_li = rlc->nb_sdu_no_segmented - 1;
+      max_li_overhead = num_li + (num_li >> 1) + (num_li & 1);
+    }
 
-	   if (rlc->sdu_buffer_occupancy > 0) {
-	     header_overhead = 2;
-	   }
+    if (rlc->sdu_buffer_occupancy > 0) {
+      header_overhead = 2;
+    }
 
-	   status_resp.buffer_occupancy_in_bytes += (header_overhead + max_li_overhead);
+    status_resp.buffer_occupancy_in_bytes += (header_overhead + max_li_overhead);
   }
 
-
   if ((rlc->input_sdus[rlc->current_sdu_index].mem_block != NULL) && (status_resp.buffer_occupancy_in_bytes)) {
-
     //status_resp.buffer_occupancy_in_bytes += ((rlc_am_entity_t *) rlc)->tx_header_min_length_in_bytes;
     status_resp.buffer_occupancy_in_pdus = rlc->nb_sdu;
     diff_time =   ctxt_pP->frame - ((rlc_am_tx_sdu_management_t *) (rlc->input_sdus[rlc->current_sdu_index].mem_block->data))->sdu_creation_time;
-
     status_resp.head_sdu_creation_time = (diff_time > 0 ) ? (uint32_t) diff_time :  (uint32_t)(0xffffffff - diff_time + ctxt_pP->frame) ;
-
     sdu_size            = ((rlc_am_tx_sdu_management_t *) (rlc->input_sdus[rlc->current_sdu_index].mem_block->data))->sdu_size;
     sdu_remaining_size  = ((rlc_am_tx_sdu_management_t *) (rlc->input_sdus[rlc->current_sdu_index].mem_block->data))->sdu_remaining_size;
     status_resp.head_sdu_remaining_size_to_send = sdu_remaining_size;
@@ -595,83 +543,71 @@ rlc_am_mac_status_indication (
     } else {
       status_resp.head_sdu_is_segmented = 1;
     }
-
   } else {
-	  /* Not so many possibilities ... */
-	  /* either buffer_occupancy_in_bytes = 0 and that's it */
-	  /* or we have segmented all received SDUs and buffer occupancy is then made of retransmissions and/or status pdu pending */
-	  /* then consider only retransmission buffer for the specific BO values used by eNB scheduler (not used up to now...) */
-	  if (rlc->retrans_num_bytes_to_retransmit) {
-		  status_resp.buffer_occupancy_in_pdus = rlc->retrans_num_pdus;
-		  status_resp.head_sdu_remaining_size_to_send = rlc->retrans_num_bytes_to_retransmit;
-		  status_resp.head_sdu_is_segmented = 1;
-			    }
-			  }
-#if MESSAGE_CHART_GENERATOR_RLC_MAC
-  MSC_LOG_RX_MESSAGE(
-    (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_ENB:MSC_RLC_UE,
-    (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_MAC_ENB:MSC_MAC_UE,
-    NULL,0,
-    MSC_AS_TIME_FMT" "PROTOCOL_RLC_AM_MSC_FMT" STATUS-IND %u",
-    MSC_AS_TIME_ARGS(ctxt_pP),
-    PROTOCOL_RLC_AM_MSC_ARGS(ctxt_pP, rlc),
-    tb_sizeP);
-  MSC_LOG_TX_MESSAGE(
-    (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_ENB:MSC_RLC_UE,
-    (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_MAC_ENB:MSC_MAC_UE,
-    NULL,0,
-    MSC_AS_TIME_FMT" "PROTOCOL_RLC_AM_MSC_FMT" STATUS-RESP BO:%u/n%u(%u)  %s sdu remain %u",
-    MSC_AS_TIME_ARGS(ctxt_pP),
-    PROTOCOL_RLC_AM_MSC_ARGS(ctxt_pP, rlc),
-    status_resp.buffer_occupancy_in_bytes,
-    status_resp.buffer_occupancy_in_pdus,rlc->nb_sdu,
-    (status_resp.head_sdu_is_segmented)?"sdu seg":"sdu not seg",
-    status_resp.head_sdu_remaining_size_to_send);
-#endif
+    /* Not so many possibilities ... */
+    /* either buffer_occupancy_in_bytes = 0 and that's it */
+    /* or we have segmented all received SDUs and buffer occupancy is then made of retransmissions and/or status pdu pending */
+    /* then consider only retransmission buffer for the specific BO values used by eNB scheduler (not used up to now...) */
+    if (rlc->retrans_num_bytes_to_retransmit) {
+      status_resp.buffer_occupancy_in_pdus = rlc->retrans_num_pdus;
+      status_resp.head_sdu_remaining_size_to_send = rlc->retrans_num_bytes_to_retransmit;
+      status_resp.head_sdu_is_segmented = 1;
+    }
+  }
 
-#if TRACE_RLC_AM_TX_STATUS
+  if (MESSAGE_CHART_GENERATOR) {
+    MSC_LOG_RX_MESSAGE(
+      (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_ENB:MSC_RLC_UE,
+      (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_MAC_ENB:MSC_MAC_UE,
+      NULL,0,
+      MSC_AS_TIME_FMT" "PROTOCOL_RLC_AM_MSC_FMT" STATUS-IND %u",
+      MSC_AS_TIME_ARGS(ctxt_pP),
+      PROTOCOL_RLC_AM_MSC_ARGS(ctxt_pP, rlc),
+      tb_sizeP);
+    MSC_LOG_TX_MESSAGE(
+      (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_ENB:MSC_RLC_UE,
+      (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_MAC_ENB:MSC_MAC_UE,
+      NULL,0,
+      MSC_AS_TIME_FMT" "PROTOCOL_RLC_AM_MSC_FMT" STATUS-RESP BO:%u/n%u(%u)  %s sdu remain %u",
+      MSC_AS_TIME_ARGS(ctxt_pP),
+      PROTOCOL_RLC_AM_MSC_ARGS(ctxt_pP, rlc),
+      status_resp.buffer_occupancy_in_bytes,
+      status_resp.buffer_occupancy_in_pdus,rlc->nb_sdu,
+      (status_resp.head_sdu_is_segmented)?"sdu seg":"sdu not seg",
+      status_resp.head_sdu_remaining_size_to_send);
+  }
 
-  if (tb_sizeP > 0) {
-    LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT" MAC_STATUS_INDICATION (DATA) %d bytes -> %d bytes\n",
-          PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-          tb_sizeP,
-          status_resp.buffer_occupancy_in_bytes);
-    /*if ((tx_statusP.tx_status == MAC_TX_STATUS_SUCCESSFUL) && (tx_statusP.no_pdu)) {
-        msg ("[FRAME %5u][%s][RLC_AM][MOD %u/%u][RB %u] MAC_STATUS_INDICATION  TX STATUS   SUCCESSFUL %d PDUs\n",rlc->module_id,
-    rlc->rb_id, ctxt_pP->frame, tx_statusP.no_pdu);
+  if (LOG_DEBUGFLAG(DEBUG_RLC)) {
+    if (tb_sizeP > 0) {
+      LOG_UI(RLC, PROTOCOL_RLC_AM_CTXT_FMT" MAC_STATUS_INDICATION (DATA) %d bytes -> %d bytes\n",
+             PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc),
+             tb_sizeP,
+             status_resp.buffer_occupancy_in_bytes);
     }
-    if ((tx_statusP.tx_status == MAC_TX_STATUS_UNSUCCESSFUL) && (tx_statusP.no_pdu)) {
-        msg ("[FRAME %5u][%s][RLC_AM][MOD %u/%u][RB %u] MAC_STATUS_INDICATION  TX STATUS UNSUCCESSFUL %d PDUs\n",rlc->module_id, rlc->rb_id,
-    ctxt_pP->frame, tx_statusP.no_pdu);
-    }*/
   }
 
-#endif
   return status_resp;
 }
 
 //-----------------------------------------------------------------------------
 void
 rlc_am_set_nb_bytes_requested_by_mac (
-  void * const            rlc_pP,
+  void *const            rlc_pP,
   const tb_size_t         tb_sizeP
-)
-{
-	((rlc_am_entity_t *) rlc_pP)->nb_bytes_requested_by_mac = tb_sizeP;
+) {
+  ((rlc_am_entity_t *) rlc_pP)->nb_bytes_requested_by_mac = tb_sizeP;
 }
 
 //-----------------------------------------------------------------------------
 struct mac_data_req
 rlc_am_mac_data_request (
-  const protocol_ctxt_t* const ctxt_pP,
-  void * const                 rlc_pP,
+  const protocol_ctxt_t *const ctxt_pP,
+  void *const                 rlc_pP,
   const eNB_flag_t        enb_flagP
-)
-{
+) {
   struct mac_data_req data_req;
   rlc_am_entity_t *l_rlc_p = (rlc_am_entity_t *) rlc_pP;
   unsigned int nb_bytes_requested_by_mac = ((rlc_am_entity_t *) rlc_pP)->nb_bytes_requested_by_mac;
-#if TRACE_RLC_AM_PDU || MESSAGE_CHART_GENERATOR
   rlc_am_pdu_info_t   pdu_info;
   rlc_am_pdu_sn_10_t *rlc_am_pdu_sn_10_p;
   mem_block_t        *tb_p;
@@ -679,9 +615,6 @@ rlc_am_mac_data_request (
   int                 num_nack;
   char                message_string[9000];
   size_t              message_string_size = 0;
-#   if ENABLE_ITTI
-  MessageDef         *msg_p;
-#   endif
   int                 octet_index, index;
   /* for no gcc warnings */
   (void)num_nack;
@@ -689,8 +622,6 @@ rlc_am_mac_data_request (
   (void)message_string_size;
   (void)octet_index;
   (void)index;
-#endif
-
   list_init (&data_req.data, NULL);
   rlc_am_get_pdus (ctxt_pP, l_rlc_p);
   list_add_list (&l_rlc_p->pdus_to_mac_layer, &data_req.data);
@@ -704,217 +635,197 @@ rlc_am_mac_data_request (
   }
 
   if (enb_flagP) {
-	  // redundant in UE MAC Tx processing and not used in eNB ...
-  data_req.buffer_occupancy_in_bytes   = rlc_am_get_buffer_occupancy_in_bytes(ctxt_pP, l_rlc_p);
+    // redundant in UE MAC Tx processing and not used in eNB ...
+    data_req.buffer_occupancy_in_bytes   = rlc_am_get_buffer_occupancy_in_bytes(ctxt_pP, l_rlc_p);
   }
-  data_req.rlc_info.rlc_protocol_state = l_rlc_p->protocol_state;
-
-#if TRACE_RLC_AM_PDU || MESSAGE_CHART_GENERATOR
 
-  if (data_req.data.nb_elements > 0) {
+  data_req.rlc_info.rlc_protocol_state = l_rlc_p->protocol_state;
 
+  if ( (MESSAGE_CHART_GENERATOR || LOG_DEBUGFLAG(DEBUG_RLC))&& data_req.data.nb_elements > 0) {
     tb_p = data_req.data.head;
 
     while (tb_p != NULL) {
-
-      rlc_am_pdu_sn_10_p = (rlc_am_pdu_sn_10_t*)((struct mac_tb_req *) (tb_p->data))->data_ptr;
+      rlc_am_pdu_sn_10_p = (rlc_am_pdu_sn_10_t *)((struct mac_tb_req *) (tb_p->data))->data_ptr;
       tb_size_in_bytes   = ((struct mac_tb_req *) (tb_p->data))->tb_size;
 
       if ((((struct mac_tb_req *) (tb_p->data))->data_ptr[0] & RLC_DC_MASK) == RLC_DC_DATA_PDU ) {
         if (rlc_am_get_data_pdu_infos(ctxt_pP,l_rlc_p,rlc_am_pdu_sn_10_p, tb_size_in_bytes, &pdu_info) >= 0) {
-#if MESSAGE_CHART_GENERATOR
-          message_string_size = 0;
-          message_string_size += sprintf(&message_string[message_string_size],
-                                         MSC_AS_TIME_FMT" "PROTOCOL_RLC_AM_MSC_FMT" DATA SN %u size %u RF %u P %u FI %u",
-                                         MSC_AS_TIME_ARGS(ctxt_pP),
-                                         PROTOCOL_RLC_AM_MSC_ARGS(ctxt_pP, l_rlc_p),
-                                         pdu_info.sn,
-                                         tb_size_in_bytes,
-                                         pdu_info.rf,
-                                         pdu_info.p,
-                                         pdu_info.fi);
-
-          if (pdu_info.rf) {
-            message_string_size += sprintf(&message_string[message_string_size], " LSF %u\n", pdu_info.lsf);
-            message_string_size += sprintf(&message_string[message_string_size], " SO %u\n", pdu_info.so);
-          }
+          if (MESSAGE_CHART_GENERATOR) {
+            message_string_size = 0;
+            message_string_size += sprintf(&message_string[message_string_size],
+                                           MSC_AS_TIME_FMT" "PROTOCOL_RLC_AM_MSC_FMT" DATA SN %u size %u RF %u P %u FI %u",
+                                           MSC_AS_TIME_ARGS(ctxt_pP),
+                                           PROTOCOL_RLC_AM_MSC_ARGS(ctxt_pP, l_rlc_p),
+                                           pdu_info.sn,
+                                           tb_size_in_bytes,
+                                           pdu_info.rf,
+                                           pdu_info.p,
+                                           pdu_info.fi);
+
+            if (pdu_info.rf) {
+              message_string_size += sprintf(&message_string[message_string_size], " LSF %u\n", pdu_info.lsf);
+              message_string_size += sprintf(&message_string[message_string_size], " SO %u\n", pdu_info.so);
+            }
 
-          if (pdu_info.e) {
-            message_string_size += sprintf(&message_string[message_string_size], "| HE:");
+            if (pdu_info.e) {
+              message_string_size += sprintf(&message_string[message_string_size], "| HE:");
 
-            for (index=0; index < pdu_info.num_li; index++) {
-              message_string_size += sprintf(&message_string[message_string_size], " LI %u", pdu_info.li_list[index]);
+              for (index=0; index < pdu_info.num_li; index++) {
+                message_string_size += sprintf(&message_string[message_string_size], " LI %u", pdu_info.li_list[index]);
+              }
             }
-          }
-
-          MSC_LOG_TX_MESSAGE(
-            (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_ENB:MSC_RLC_UE,
-            (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_UE:MSC_RLC_ENB,
-            (char*)rlc_am_pdu_sn_10_p,
-            tb_size_in_bytes,
-            message_string);
 
-#endif
-#   if ENABLE_ITTI
-          message_string_size = 0;
-          message_string_size += sprintf(&message_string[message_string_size], "Bearer      : %u\n", l_rlc_p->rb_id);
-          message_string_size += sprintf(&message_string[message_string_size], "PDU size    : %u\n", tb_size_in_bytes);
-          message_string_size += sprintf(&message_string[message_string_size], "Header size : %u\n", pdu_info.header_size);
-          message_string_size += sprintf(&message_string[message_string_size], "Payload size: %u\n", pdu_info.payload_size);
-
-          if (pdu_info.rf) {
-            message_string_size += sprintf(&message_string[message_string_size], "PDU type    : RLC AM DATA REQ: AMD PDU segment\n\n");
-          } else {
-            message_string_size += sprintf(&message_string[message_string_size], "PDU type    : RLC AM DATA REQ: AMD PDU\n\n");
+            MSC_LOG_TX_MESSAGE(
+              (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_ENB:MSC_RLC_UE,
+              (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_UE:MSC_RLC_ENB,
+              (char *)rlc_am_pdu_sn_10_p,
+              tb_size_in_bytes,
+              message_string);
           }
 
-          message_string_size += sprintf(&message_string[message_string_size], "Header      :\n");
-          message_string_size += sprintf(&message_string[message_string_size], "  D/C       : %u\n", pdu_info.d_c);
-          message_string_size += sprintf(&message_string[message_string_size], "  RF        : %u\n", pdu_info.rf);
-          message_string_size += sprintf(&message_string[message_string_size], "  P         : %u\n", pdu_info.p);
-          message_string_size += sprintf(&message_string[message_string_size], "  FI        : %u\n", pdu_info.fi);
-          message_string_size += sprintf(&message_string[message_string_size], "  E         : %u\n", pdu_info.e);
-          message_string_size += sprintf(&message_string[message_string_size], "  SN        : %u\n", pdu_info.sn);
-
-          if (pdu_info.rf) {
-            message_string_size += sprintf(&message_string[message_string_size], "  LSF       : %u\n", pdu_info.lsf);
-            message_string_size += sprintf(&message_string[message_string_size], "  SO        : %u\n", pdu_info.so);
-          }
+          if ( LOG_DEBUGFLAG(DEBUG_RLC)) {
+            message_string_size = 0;
+            message_string_size += sprintf(&message_string[message_string_size], "Bearer      : %u\n", l_rlc_p->rb_id);
+            message_string_size += sprintf(&message_string[message_string_size], "PDU size    : %u\n", tb_size_in_bytes);
+            message_string_size += sprintf(&message_string[message_string_size], "Header size : %u\n", pdu_info.header_size);
+            message_string_size += sprintf(&message_string[message_string_size], "Payload size: %u\n", pdu_info.payload_size);
 
-          if (pdu_info.e) {
-            message_string_size += sprintf(&message_string[message_string_size], "\nHeader extension  : \n");
+            if (pdu_info.rf) {
+              message_string_size += sprintf(&message_string[message_string_size], "PDU type    : RLC AM DATA REQ: AMD PDU segment\n\n");
+            } else {
+              message_string_size += sprintf(&message_string[message_string_size], "PDU type    : RLC AM DATA REQ: AMD PDU\n\n");
+            }
 
-            for (index=0; index < pdu_info.num_li; index++) {
-              message_string_size += sprintf(&message_string[message_string_size], "  LI        : %u\n", pdu_info.li_list[index]);
+            message_string_size += sprintf(&message_string[message_string_size], "Header      :\n");
+            message_string_size += sprintf(&message_string[message_string_size], "  D/C       : %u\n", pdu_info.d_c);
+            message_string_size += sprintf(&message_string[message_string_size], "  RF        : %u\n", pdu_info.rf);
+            message_string_size += sprintf(&message_string[message_string_size], "  P         : %u\n", pdu_info.p);
+            message_string_size += sprintf(&message_string[message_string_size], "  FI        : %u\n", pdu_info.fi);
+            message_string_size += sprintf(&message_string[message_string_size], "  E         : %u\n", pdu_info.e);
+            message_string_size += sprintf(&message_string[message_string_size], "  SN        : %u\n", pdu_info.sn);
+
+            if (pdu_info.rf) {
+              message_string_size += sprintf(&message_string[message_string_size], "  LSF       : %u\n", pdu_info.lsf);
+              message_string_size += sprintf(&message_string[message_string_size], "  SO        : %u\n", pdu_info.so);
             }
-          }
 
-          message_string_size += sprintf(&message_string[message_string_size], "\nPayload  : \n");
-          message_string_size += sprintf(&message_string[message_string_size], "------+-------------------------------------------------|\n");
-          message_string_size += sprintf(&message_string[message_string_size], "      |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |\n");
-          message_string_size += sprintf(&message_string[message_string_size], "------+-------------------------------------------------|\n");
+            if (pdu_info.e) {
+              message_string_size += sprintf(&message_string[message_string_size], "\nHeader extension  : \n");
 
-          for (octet_index = 0; octet_index < pdu_info.payload_size; octet_index++) {
-            if ((octet_index % 16) == 0) {
-              if (octet_index != 0) {
-                message_string_size += sprintf(&message_string[message_string_size], " |\n");
+              for (index=0; index < pdu_info.num_li; index++) {
+                message_string_size += sprintf(&message_string[message_string_size], "  LI        : %u\n", pdu_info.li_list[index]);
               }
-
-              message_string_size += sprintf(&message_string[message_string_size], " %04d |", octet_index);
             }
 
-            /*
-             * Print every single octet in hexadecimal form
-             */
-            message_string_size += sprintf(&message_string[message_string_size], " %02x", pdu_info.payload[octet_index]);
-            /*
-             * Align newline and pipes according to the octets in groups of 2
-             */
-          }
+            message_string_size += sprintf(&message_string[message_string_size], "\nPayload  : \n");
+            message_string_size += sprintf(&message_string[message_string_size], "------+-------------------------------------------------|\n");
+            message_string_size += sprintf(&message_string[message_string_size], "      |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |\n");
+            message_string_size += sprintf(&message_string[message_string_size], "------+-------------------------------------------------|\n");
 
-          /*
-           * Append enough spaces and put final pipe
-           */
-          for (index = octet_index; index < 16; ++index) {
-            message_string_size += sprintf(&message_string[message_string_size], "   ");
-          }
+            for (octet_index = 0; octet_index < pdu_info.payload_size; octet_index++) {
+              if ((octet_index % 16) == 0) {
+                if (octet_index != 0) {
+                  message_string_size += sprintf(&message_string[message_string_size], " |\n");
+                }
 
-          message_string_size += sprintf(&message_string[message_string_size], " |\n");
+                message_string_size += sprintf(&message_string[message_string_size], " %04d |", octet_index);
+              }
 
-          msg_p = itti_alloc_new_message_sized (ctxt_pP->enb_flag > 0 ? TASK_RLC_ENB:TASK_RLC_UE , RLC_AM_DATA_PDU_REQ, message_string_size + sizeof (IttiMsgText));
-          msg_p->ittiMsg.rlc_am_data_pdu_req.size = message_string_size;
-          memcpy(&msg_p->ittiMsg.rlc_am_data_pdu_req.text, message_string, message_string_size);
+              /*
+               * Print every single octet in hexadecimal form
+               */
+              message_string_size += sprintf(&message_string[message_string_size], " %02x", pdu_info.payload[octet_index]);
+              /*
+               * Align newline and pipes according to the octets in groups of 2
+               */
+            }
 
-          itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
+            /*
+             * Append enough spaces and put final pipe
+             */
+            for (index = octet_index; index < 16; ++index) {
+              message_string_size += sprintf(&message_string[message_string_size], "   ");
+            }
 
-# else
-          rlc_am_display_data_pdu_infos(ctxt_pP, l_rlc_p, &pdu_info);
-# endif
+            LOG_UI(RLC,"%s\n",message_string);
+          } /* LOG_DEBUGFLAG(DEBUG_RLC) */
         }
       } else {
         if (rlc_am_get_control_pdu_infos(rlc_am_pdu_sn_10_p, &tb_size_in_bytes, &l_rlc_p->control_pdu_info) >= 0) {
           tb_size_in_bytes   = ((struct mac_tb_req *) (tb_p->data))->tb_size; //tb_size_in_bytes modified by rlc_am_get_control_pdu_infos!
-#if MESSAGE_CHART_GENERATOR
-          message_string_size = 0;
-          message_string_size += sprintf(&message_string[message_string_size],
-                                         MSC_AS_TIME_FMT" "PROTOCOL_RLC_AM_MSC_FMT" STATUS ACK_SN %u",
-                                         MSC_AS_TIME_ARGS(ctxt_pP),
-                                         PROTOCOL_RLC_AM_MSC_ARGS(ctxt_pP, l_rlc_p),
-                                         l_rlc_p->control_pdu_info.ack_sn);
-
-          for (num_nack = 0; num_nack < l_rlc_p->control_pdu_info.num_nack; num_nack++) {
-            if (l_rlc_p->control_pdu_info.nack_list[num_nack].e2) {
-              message_string_size += sprintf(&message_string[message_string_size], "  NACK SN %u SO START %u SO END %u",
-            		  l_rlc_p->control_pdu_info.nack_list[num_nack].nack_sn,
-                                             l_rlc_p->control_pdu_info.nack_list[num_nack].so_start,
-                                             l_rlc_p->control_pdu_info.nack_list[num_nack].so_end);
 
-            } else {
-              message_string_size += sprintf(&message_string[message_string_size], "  NACK SN %u",
-            		  l_rlc_p->control_pdu_info.nack_list[num_nack].nack_sn);
+          if (MESSAGE_CHART_GENERATOR ) {
+            message_string_size = 0;
+            message_string_size += sprintf(&message_string[message_string_size],
+                                           MSC_AS_TIME_FMT" "PROTOCOL_RLC_AM_MSC_FMT" STATUS ACK_SN %u",
+                                           MSC_AS_TIME_ARGS(ctxt_pP),
+                                           PROTOCOL_RLC_AM_MSC_ARGS(ctxt_pP, l_rlc_p),
+                                           l_rlc_p->control_pdu_info.ack_sn);
+
+            for (num_nack = 0; num_nack < l_rlc_p->control_pdu_info.num_nack; num_nack++) {
+              if (l_rlc_p->control_pdu_info.nack_list[num_nack].e2) {
+                message_string_size += sprintf(&message_string[message_string_size], "  NACK SN %u SO START %u SO END %u",
+                                               l_rlc_p->control_pdu_info.nack_list[num_nack].nack_sn,
+                                               l_rlc_p->control_pdu_info.nack_list[num_nack].so_start,
+                                               l_rlc_p->control_pdu_info.nack_list[num_nack].so_end);
+              } else {
+                message_string_size += sprintf(&message_string[message_string_size], "  NACK SN %u",
+                                               l_rlc_p->control_pdu_info.nack_list[num_nack].nack_sn);
+              }
             }
-          }
-
-          MSC_LOG_TX_MESSAGE(
-            (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_ENB:MSC_RLC_UE,
-            (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_UE:MSC_RLC_ENB,
-            (char*)rlc_am_pdu_sn_10_p,
-            tb_size_in_bytes,
-            message_string);
 
-#endif
-#   if ENABLE_ITTI
-          message_string_size = 0;
-          message_string_size += sprintf(&message_string[message_string_size], "Bearer      : %u\n", l_rlc_p->rb_id);
-          message_string_size += sprintf(&message_string[message_string_size], "PDU size    : %u\n", tb_size_in_bytes);
-          message_string_size += sprintf(&message_string[message_string_size], "PDU type    : RLC AM DATA REQ: STATUS PDU\n\n");
-          message_string_size += sprintf(&message_string[message_string_size], "Header      :\n");
-          message_string_size += sprintf(&message_string[message_string_size], "  D/C       : %u\n", l_rlc_p->control_pdu_info.d_c);
-          message_string_size += sprintf(&message_string[message_string_size], "  CPT       : %u\n", l_rlc_p->control_pdu_info.cpt);
-          message_string_size += sprintf(&message_string[message_string_size], "  ACK_SN    : %u\n", l_rlc_p->control_pdu_info.ack_sn);
-          message_string_size += sprintf(&message_string[message_string_size], "  E1        : %u\n", l_rlc_p->control_pdu_info.e1);
-
-          for (num_nack = 0; num_nack < l_rlc_p->control_pdu_info.num_nack; num_nack++) {
-            if (l_rlc_p->control_pdu_info.nack_list[num_nack].e2) {
-              message_string_size += sprintf(&message_string[message_string_size], "  NACK SN %04d SO START %05d SO END %05d",
-                                             l_rlc_p->control_pdu_info.nack_list[num_nack].nack_sn,
-                                             l_rlc_p->control_pdu_info.nack_list[num_nack].so_start,
-                                             l_rlc_p->control_pdu_info.nack_list[num_nack].so_end);
-            } else {
-              message_string_size += sprintf(&message_string[message_string_size], "  NACK SN %04d",  l_rlc_p->control_pdu_info.nack_list[num_nack].nack_sn);
-            }
+            MSC_LOG_TX_MESSAGE(
+              (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_ENB:MSC_RLC_UE,
+              (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_UE:MSC_RLC_ENB,
+              (char *)rlc_am_pdu_sn_10_p,
+              tb_size_in_bytes,
+              message_string);
           }
 
-          msg_p = itti_alloc_new_message_sized (ctxt_pP->enb_flag > 0 ? TASK_RLC_ENB:TASK_RLC_UE , RLC_AM_STATUS_PDU_REQ, message_string_size + sizeof (IttiMsgText));
-          msg_p->ittiMsg.rlc_am_status_pdu_req.size = message_string_size;
-          memcpy(&msg_p->ittiMsg.rlc_am_status_pdu_req.text, message_string, message_string_size);
-
-          itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
+          if ( LOG_DEBUGFLAG(DEBUG_RLC)) {
+            message_string_size = 0;
+            message_string_size += sprintf(&message_string[message_string_size], "Bearer      : %u\n", l_rlc_p->rb_id);
+            message_string_size += sprintf(&message_string[message_string_size], "PDU size    : %u\n", tb_size_in_bytes);
+            message_string_size += sprintf(&message_string[message_string_size], "PDU type    : RLC AM DATA REQ: STATUS PDU\n\n");
+            message_string_size += sprintf(&message_string[message_string_size], "Header      :\n");
+            message_string_size += sprintf(&message_string[message_string_size], "  D/C       : %u\n", l_rlc_p->control_pdu_info.d_c);
+            message_string_size += sprintf(&message_string[message_string_size], "  CPT       : %u\n", l_rlc_p->control_pdu_info.cpt);
+            message_string_size += sprintf(&message_string[message_string_size], "  ACK_SN    : %u\n", l_rlc_p->control_pdu_info.ack_sn);
+            message_string_size += sprintf(&message_string[message_string_size], "  E1        : %u\n", l_rlc_p->control_pdu_info.e1);
+
+            for (num_nack = 0; num_nack < l_rlc_p->control_pdu_info.num_nack; num_nack++) {
+              if (l_rlc_p->control_pdu_info.nack_list[num_nack].e2) {
+                message_string_size += sprintf(&message_string[message_string_size], "  NACK SN %04d SO START %05d SO END %05d",
+                                               l_rlc_p->control_pdu_info.nack_list[num_nack].nack_sn,
+                                               l_rlc_p->control_pdu_info.nack_list[num_nack].so_start,
+                                               l_rlc_p->control_pdu_info.nack_list[num_nack].so_end);
+              } else {
+                message_string_size += sprintf(&message_string[message_string_size], "  NACK SN %04d",  l_rlc_p->control_pdu_info.nack_list[num_nack].nack_sn);
+              }
+            }
 
-#   endif
+            LOG_UI(RLC,"%s\n",message_string);
+          } /* LOG_DEBUGFLAG(DEBUG_RLC) */
         }
       }
 
       tb_p = tb_p->next;
-    }
-  }
+    } /* while */
+  } /* MESSAGE_CHART_GENERATOR && data_req.data.nb_elements > 0 */
 
-#endif
   return data_req;
 }
 //-----------------------------------------------------------------------------
 void
 rlc_am_mac_data_indication (
-  const protocol_ctxt_t* const ctxt_pP,
-  void * const                 rlc_pP,
+  const protocol_ctxt_t *const ctxt_pP,
+  void *const                 rlc_pP,
   struct mac_data_ind          data_indP
-)
-{
-  rlc_am_entity_t*           l_rlc_p = (rlc_am_entity_t*) rlc_pP;
+) {
+  rlc_am_entity_t           *l_rlc_p = (rlc_am_entity_t *) rlc_pP;
   /*rlc_am_control_pdu_info_t control_pdu_info;
   int                       num_li;
   int16_t                     tb_size;*/
-#if TRACE_RLC_AM_PDU || MESSAGE_CHART_GENERATOR
   rlc_am_pdu_info_t   pdu_info;
   rlc_am_pdu_sn_10_t *rlc_am_pdu_sn_10_p;
   mem_block_t        *tb_p;
@@ -922,9 +833,6 @@ rlc_am_mac_data_indication (
   int                 num_nack;
   char                message_string[7000];
   size_t              message_string_size = 0;
-#   if ENABLE_ITTI
-  MessageDef         *msg_p;
-#   endif
   int                 octet_index, index;
   /* for no gcc warnings */
   (void)num_nack;
@@ -932,242 +840,209 @@ rlc_am_mac_data_indication (
   (void)message_string_size;
   (void)octet_index;
   (void)index;
-#endif
-
   (void)l_rlc_p; /* avoid gcc warning "unused variable" */
 
-#if TRACE_RLC_AM_PDU || MESSAGE_CHART_GENERATOR
-
-  if (data_indP.data.nb_elements > 0) {
-
-    tb_p = data_indP.data.head;
-
-    while (tb_p != NULL) {
-
-      rlc_am_pdu_sn_10_p = (rlc_am_pdu_sn_10_t*)((struct mac_tb_ind *) (tb_p->data))->data_ptr;
-      tb_size_in_bytes   = ((struct mac_tb_ind *) (tb_p->data))->size;
+  if ( LOG_DEBUGFLAG(DEBUG_RLC) || MESSAGE_CHART_GENERATOR ) {
+    if (data_indP.data.nb_elements > 0) {
+      tb_p = data_indP.data.head;
+
+      while (tb_p != NULL) {
+        rlc_am_pdu_sn_10_p = (rlc_am_pdu_sn_10_t *)((struct mac_tb_ind *) (tb_p->data))->data_ptr;
+        tb_size_in_bytes   = ((struct mac_tb_ind *) (tb_p->data))->size;
+
+        if ((((struct mac_tb_ind *) (tb_p->data))->data_ptr[0] & RLC_DC_MASK) == RLC_DC_DATA_PDU ) {
+          if (rlc_am_get_data_pdu_infos(ctxt_pP,l_rlc_p,rlc_am_pdu_sn_10_p, tb_size_in_bytes, &pdu_info) >= 0) {
+            if (MESSAGE_CHART_GENERATOR) {
+              message_string_size = 0;
+              message_string_size += sprintf(&message_string[message_string_size],
+                                             MSC_AS_TIME_FMT" "PROTOCOL_RLC_AM_MSC_FMT" DATA SN %u size %u RF %u P %u FI %u",
+                                             MSC_AS_TIME_ARGS(ctxt_pP),
+                                             PROTOCOL_RLC_AM_MSC_ARGS(ctxt_pP, l_rlc_p),
+                                             pdu_info.sn,
+                                             tb_size_in_bytes,
+                                             pdu_info.rf,
+                                             pdu_info.p,
+                                             pdu_info.fi);
+
+              if (pdu_info.rf) {
+                message_string_size += sprintf(&message_string[message_string_size], " LSF %u\n", pdu_info.lsf);
+                message_string_size += sprintf(&message_string[message_string_size], " SO %u\n", pdu_info.so);
+              }
 
-      if ((((struct mac_tb_ind *) (tb_p->data))->data_ptr[0] & RLC_DC_MASK) == RLC_DC_DATA_PDU ) {
-        if (rlc_am_get_data_pdu_infos(ctxt_pP,l_rlc_p,rlc_am_pdu_sn_10_p, tb_size_in_bytes, &pdu_info) >= 0) {
-#if MESSAGE_CHART_GENERATOR
-          message_string_size = 0;
-          message_string_size += sprintf(&message_string[message_string_size],
-                                         MSC_AS_TIME_FMT" "PROTOCOL_RLC_AM_MSC_FMT" DATA SN %u size %u RF %u P %u FI %u",
-                                         MSC_AS_TIME_ARGS(ctxt_pP),
-                                         PROTOCOL_RLC_AM_MSC_ARGS(ctxt_pP, l_rlc_p),
-                                         pdu_info.sn,
-                                         tb_size_in_bytes,
-                                         pdu_info.rf,
-                                         pdu_info.p,
-                                         pdu_info.fi);
-
-          if (pdu_info.rf) {
-            message_string_size += sprintf(&message_string[message_string_size], " LSF %u\n", pdu_info.lsf);
-            message_string_size += sprintf(&message_string[message_string_size], " SO %u\n", pdu_info.so);
-          }
+              if (pdu_info.e) {
+                message_string_size += sprintf(&message_string[message_string_size], "| HE:");
 
-          if (pdu_info.e) {
-            message_string_size += sprintf(&message_string[message_string_size], "| HE:");
+                for (index=0; index < pdu_info.num_li; index++) {
+                  message_string_size += sprintf(&message_string[message_string_size], " LI %u", pdu_info.li_list[index]);
+                }
+              }
 
-            for (index=0; index < pdu_info.num_li; index++) {
-              message_string_size += sprintf(&message_string[message_string_size], " LI %u", pdu_info.li_list[index]);
+              MSC_LOG_RX_MESSAGE(
+                (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_ENB:MSC_RLC_UE,
+                (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_UE:MSC_RLC_ENB,
+                (char *)rlc_am_pdu_sn_10_p,
+                tb_size_in_bytes,
+                message_string);
             }
-          }
 
-          MSC_LOG_RX_MESSAGE(
-            (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_ENB:MSC_RLC_UE,
-            (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_UE:MSC_RLC_ENB,
-            (char*)rlc_am_pdu_sn_10_p,
-            tb_size_in_bytes,
-            message_string);
+            if ( LOG_DEBUGFLAG(DEBUG_RLC)) {
+              message_string_size += sprintf(&message_string[message_string_size], "Bearer	: %u\n", l_rlc_p->rb_id);
+              message_string_size += sprintf(&message_string[message_string_size], "PDU size	: %u\n", tb_size_in_bytes);
+              message_string_size += sprintf(&message_string[message_string_size], "Header size : %u\n", pdu_info.header_size);
+              message_string_size += sprintf(&message_string[message_string_size], "Payload size: %u\n", pdu_info.payload_size);
 
-#endif
+              if (pdu_info.rf) {
+                message_string_size += sprintf(&message_string[message_string_size], "PDU type    : RLC AM DATA IND: AMD PDU segment\n\n");
+              } else {
+                message_string_size += sprintf(&message_string[message_string_size], "PDU type    : RLC AM DATA IND: AMD PDU\n\n");
+              }
 
-#   if ENABLE_ITTI && TRACE_RLC_AM_PDU
-          message_string_size += sprintf(&message_string[message_string_size], "Bearer      : %u\n", l_rlc_p->rb_id);
-          message_string_size += sprintf(&message_string[message_string_size], "PDU size    : %u\n", tb_size_in_bytes);
-          message_string_size += sprintf(&message_string[message_string_size], "Header size : %u\n", pdu_info.header_size);
-          message_string_size += sprintf(&message_string[message_string_size], "Payload size: %u\n", pdu_info.payload_size);
+              message_string_size += sprintf(&message_string[message_string_size], "Header      :\n");
+              message_string_size += sprintf(&message_string[message_string_size], "  D/C       : %u\n", pdu_info.d_c);
+              message_string_size += sprintf(&message_string[message_string_size], "  RF        : %u\n", pdu_info.rf);
+              message_string_size += sprintf(&message_string[message_string_size], "  P         : %u\n", pdu_info.p);
+              message_string_size += sprintf(&message_string[message_string_size], "  FI        : %u\n", pdu_info.fi);
+              message_string_size += sprintf(&message_string[message_string_size], "  E         : %u\n", pdu_info.e);
+              message_string_size += sprintf(&message_string[message_string_size], "  SN        : %u\n", pdu_info.sn);
+
+              if (pdu_info.rf) {
+                message_string_size += sprintf(&message_string[message_string_size], "  LSF       : %u\n", pdu_info.lsf);
+                message_string_size += sprintf(&message_string[message_string_size], "  SO        : %u\n", pdu_info.so);
+              }
 
-          if (pdu_info.rf) {
-            message_string_size += sprintf(&message_string[message_string_size], "PDU type    : RLC AM DATA IND: AMD PDU segment\n\n");
-          } else {
-            message_string_size += sprintf(&message_string[message_string_size], "PDU type    : RLC AM DATA IND: AMD PDU\n\n");
-          }
+              if (pdu_info.e) {
+                message_string_size += sprintf(&message_string[message_string_size], "\nHeader extension  : \n");
 
-          message_string_size += sprintf(&message_string[message_string_size], "Header      :\n");
-          message_string_size += sprintf(&message_string[message_string_size], "  D/C       : %u\n", pdu_info.d_c);
-          message_string_size += sprintf(&message_string[message_string_size], "  RF        : %u\n", pdu_info.rf);
-          message_string_size += sprintf(&message_string[message_string_size], "  P         : %u\n", pdu_info.p);
-          message_string_size += sprintf(&message_string[message_string_size], "  FI        : %u\n", pdu_info.fi);
-          message_string_size += sprintf(&message_string[message_string_size], "  E         : %u\n", pdu_info.e);
-          message_string_size += sprintf(&message_string[message_string_size], "  SN        : %u\n", pdu_info.sn);
-
-          if (pdu_info.rf) {
-            message_string_size += sprintf(&message_string[message_string_size], "  LSF       : %u\n", pdu_info.lsf);
-            message_string_size += sprintf(&message_string[message_string_size], "  SO        : %u\n", pdu_info.so);
-          }
+                for (index=0; index < pdu_info.num_li; index++) {
+                  message_string_size += sprintf(&message_string[message_string_size], "  LI        : %u\n", pdu_info.li_list[index]);
+                }
+              }
 
-          if (pdu_info.e) {
-            message_string_size += sprintf(&message_string[message_string_size], "\nHeader extension  : \n");
+              message_string_size += sprintf(&message_string[message_string_size], "\nPayload  : \n");
+              message_string_size += sprintf(&message_string[message_string_size], "------+-------------------------------------------------|\n");
+              message_string_size += sprintf(&message_string[message_string_size], "      |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |\n");
+              message_string_size += sprintf(&message_string[message_string_size], "------+-------------------------------------------------|\n");
 
-            for (index=0; index < pdu_info.num_li; index++) {
-              message_string_size += sprintf(&message_string[message_string_size], "  LI        : %u\n", pdu_info.li_list[index]);
-            }
-          }
+              for (octet_index = 0; octet_index < pdu_info.payload_size; octet_index++) {
+                if ((octet_index % 16) == 0) {
+                  if (octet_index != 0) {
+                    message_string_size += sprintf(&message_string[message_string_size], " |\n");
+                  }
 
-          message_string_size += sprintf(&message_string[message_string_size], "\nPayload  : \n");
-          message_string_size += sprintf(&message_string[message_string_size], "------+-------------------------------------------------|\n");
-          message_string_size += sprintf(&message_string[message_string_size], "      |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |\n");
-          message_string_size += sprintf(&message_string[message_string_size], "------+-------------------------------------------------|\n");
+                  message_string_size += sprintf(&message_string[message_string_size], " %04d |", octet_index);
+                }
 
-          for (octet_index = 0; octet_index < pdu_info.payload_size; octet_index++) {
-            if ((octet_index % 16) == 0) {
-              if (octet_index != 0) {
-                message_string_size += sprintf(&message_string[message_string_size], " |\n");
+                /*
+                 * Print every single octet in hexadecimal form
+                 */
+                message_string_size += sprintf(&message_string[message_string_size], " %02x", pdu_info.payload[octet_index]);
+                /*
+                 * Align newline and pipes according to the octets in groups of 2
+                 */
               }
 
-              message_string_size += sprintf(&message_string[message_string_size], " %04d |", octet_index);
-            }
-
-            /*
-             * Print every single octet in hexadecimal form
-             */
-            message_string_size += sprintf(&message_string[message_string_size], " %02x", pdu_info.payload[octet_index]);
-            /*
-             * Align newline and pipes according to the octets in groups of 2
-             */
-          }
+              /*
+               * Append enough spaces and put final pipe
+               */
+              for (index = octet_index; index < 16; ++index) {
+                message_string_size += sprintf(&message_string[message_string_size], "   ");
+              }
 
-          /*
-           * Append enough spaces and put final pipe
-           */
-          for (index = octet_index; index < 16; ++index) {
-            message_string_size += sprintf(&message_string[message_string_size], "   ");
+              LOG_UI(RLC,"%s\n",message_string);
+            } /* LOG_DEBUGFLAG */
           }
+        } else {
+          if (rlc_am_get_control_pdu_infos(rlc_am_pdu_sn_10_p, &tb_size_in_bytes, &l_rlc_p->control_pdu_info) >= 0) {
+            if (MESSAGE_CHART_GENERATOR) {
+              message_string_size = 0;
+              message_string_size += sprintf(&message_string[message_string_size],
+                                             MSC_AS_TIME_FMT" "PROTOCOL_RLC_AM_MSC_FMT" STATUS size ACK_SN %u",
+                                             MSC_AS_TIME_ARGS(ctxt_pP),
+                                             PROTOCOL_RLC_AM_MSC_ARGS(ctxt_pP, l_rlc_p),
+                                             l_rlc_p->control_pdu_info.ack_sn);
+
+              for (num_nack = 0; num_nack < l_rlc_p->control_pdu_info.num_nack; num_nack++) {
+                if (l_rlc_p->control_pdu_info.nack_list[num_nack].e2) {
+                  message_string_size += sprintf(&message_string[message_string_size], "  NACK SN %u SO START %u SO END %u",
+                                                 l_rlc_p->control_pdu_info.nack_list[num_nack].nack_sn,
+                                                 l_rlc_p->control_pdu_info.nack_list[num_nack].so_start,
+                                                 l_rlc_p->control_pdu_info.nack_list[num_nack].so_end);
+                } else {
+                  message_string_size += sprintf(&message_string[message_string_size], "  NACK SN %u",
+                                                 l_rlc_p->control_pdu_info.nack_list[num_nack].nack_sn);
+                }
+              }
 
-          message_string_size += sprintf(&message_string[message_string_size], " |\n");
-
-          msg_p = itti_alloc_new_message_sized (ctxt_pP->enb_flag > 0 ? TASK_RLC_ENB:TASK_RLC_UE , RLC_AM_DATA_PDU_IND, message_string_size + sizeof (IttiMsgText));
-          msg_p->ittiMsg.rlc_am_data_pdu_ind.size = message_string_size;
-          memcpy(&msg_p->ittiMsg.rlc_am_data_pdu_ind.text, message_string, message_string_size);
-
-          itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
-
-# else
-          rlc_am_display_data_pdu_infos(ctxt_pP, l_rlc_p, &pdu_info);
-# endif
-        }
-      } else {
-        if (rlc_am_get_control_pdu_infos(rlc_am_pdu_sn_10_p, &tb_size_in_bytes, &l_rlc_p->control_pdu_info) >= 0) {
-#if MESSAGE_CHART_GENERATOR
-          message_string_size = 0;
-          message_string_size += sprintf(&message_string[message_string_size],
-                                         MSC_AS_TIME_FMT" "PROTOCOL_RLC_AM_MSC_FMT" STATUS size ACK_SN %u",
-                                         MSC_AS_TIME_ARGS(ctxt_pP),
-                                         PROTOCOL_RLC_AM_MSC_ARGS(ctxt_pP, l_rlc_p),
-                                         l_rlc_p->control_pdu_info.ack_sn);
-
-          for (num_nack = 0; num_nack < l_rlc_p->control_pdu_info.num_nack; num_nack++) {
-            if (l_rlc_p->control_pdu_info.nack_list[num_nack].e2) {
-              message_string_size += sprintf(&message_string[message_string_size], "  NACK SN %u SO START %u SO END %u",
-                                             l_rlc_p->control_pdu_info.nack_list[num_nack].nack_sn,
-                                             l_rlc_p->control_pdu_info.nack_list[num_nack].so_start,
-                                             l_rlc_p->control_pdu_info.nack_list[num_nack].so_end);
-
-            } else {
-              message_string_size += sprintf(&message_string[message_string_size], "  NACK SN %u",
-                                             l_rlc_p->control_pdu_info.nack_list[num_nack].nack_sn);
+              MSC_LOG_RX_MESSAGE(
+                (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_ENB:MSC_RLC_UE,
+                (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_UE:MSC_RLC_ENB,
+                (char *)rlc_am_pdu_sn_10_p,
+                tb_size_in_bytes,
+                message_string);
             }
-          }
-
-          MSC_LOG_RX_MESSAGE(
-            (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_ENB:MSC_RLC_UE,
-            (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_UE:MSC_RLC_ENB,
-            (char*)rlc_am_pdu_sn_10_p,
-            tb_size_in_bytes,
-            message_string);
 
-#endif
+            if ( LOG_DEBUGFLAG(DEBUG_RLC)) {
+              message_string_size = 0;
+              message_string_size += sprintf(&message_string[message_string_size], "Bearer      : %u\n", l_rlc_p->rb_id);
+              message_string_size += sprintf(&message_string[message_string_size], "PDU size    : %u\n", ((struct mac_tb_ind *) (tb_p->data))->size);
+              message_string_size += sprintf(&message_string[message_string_size], "PDU type    : RLC AM DATA IND: STATUS PDU\n\n");
+              message_string_size += sprintf(&message_string[message_string_size], "Header      :\n");
+              message_string_size += sprintf(&message_string[message_string_size], "  D/C       : %u\n", l_rlc_p->control_pdu_info.d_c);
+              message_string_size += sprintf(&message_string[message_string_size], "  CPT       : %u\n", l_rlc_p->control_pdu_info.cpt);
+              message_string_size += sprintf(&message_string[message_string_size], "  ACK_SN    : %u\n", l_rlc_p->control_pdu_info.ack_sn);
+              message_string_size += sprintf(&message_string[message_string_size], "  E1        : %u\n", l_rlc_p->control_pdu_info.e1);
+
+              for (num_nack = 0; num_nack < l_rlc_p->control_pdu_info.num_nack; num_nack++) {
+                if (l_rlc_p->control_pdu_info.nack_list[num_nack].e2) {
+                  message_string_size += sprintf(&message_string[message_string_size], "  NACK SN %04d SO START %05d SO END %05d",
+                                                 l_rlc_p->control_pdu_info.nack_list[num_nack].nack_sn,
+                                                 l_rlc_p->control_pdu_info.nack_list[num_nack].so_start,
+                                                 l_rlc_p->control_pdu_info.nack_list[num_nack].so_end);
+                } else {
+                  message_string_size += sprintf(&message_string[message_string_size], "  NACK SN %04d",  l_rlc_p->control_pdu_info.nack_list[num_nack].nack_sn);
+                }
+              }
 
-#   if ENABLE_ITTI && TRACE_RLC_AM_PDU
-          message_string_size = 0;
-          message_string_size += sprintf(&message_string[message_string_size], "Bearer      : %u\n", l_rlc_p->rb_id);
-          message_string_size += sprintf(&message_string[message_string_size], "PDU size    : %u\n", ((struct mac_tb_ind *) (tb_p->data))->size);
-          message_string_size += sprintf(&message_string[message_string_size], "PDU type    : RLC AM DATA IND: STATUS PDU\n\n");
-          message_string_size += sprintf(&message_string[message_string_size], "Header      :\n");
-          message_string_size += sprintf(&message_string[message_string_size], "  D/C       : %u\n", l_rlc_p->control_pdu_info.d_c);
-          message_string_size += sprintf(&message_string[message_string_size], "  CPT       : %u\n", l_rlc_p->control_pdu_info.cpt);
-          message_string_size += sprintf(&message_string[message_string_size], "  ACK_SN    : %u\n", l_rlc_p->control_pdu_info.ack_sn);
-          message_string_size += sprintf(&message_string[message_string_size], "  E1        : %u\n", l_rlc_p->control_pdu_info.e1);
-
-          for (num_nack = 0; num_nack < l_rlc_p->control_pdu_info.num_nack; num_nack++) {
-            if (l_rlc_p->control_pdu_info.nack_list[num_nack].e2) {
-              message_string_size += sprintf(&message_string[message_string_size], "  NACK SN %04d SO START %05d SO END %05d",
-                                             l_rlc_p->control_pdu_info.nack_list[num_nack].nack_sn,
-                                             l_rlc_p->control_pdu_info.nack_list[num_nack].so_start,
-                                             l_rlc_p->control_pdu_info.nack_list[num_nack].so_end);
-            } else {
-              message_string_size += sprintf(&message_string[message_string_size], "  NACK SN %04d",  l_rlc_p->control_pdu_info.nack_list[num_nack].nack_sn);
+              LOG_UI(RLC, "%s\n",message_string);
             }
           }
-
-          msg_p = itti_alloc_new_message_sized (ctxt_pP->enb_flag > 0 ? TASK_RLC_ENB:TASK_RLC_UE , RLC_AM_STATUS_PDU_IND, message_string_size + sizeof (IttiMsgText));
-          msg_p->ittiMsg.rlc_am_status_pdu_ind.size = message_string_size;
-          memcpy(&msg_p->ittiMsg.rlc_am_status_pdu_ind.text, message_string, message_string_size);
-
-          itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
-
-#   endif
         }
-      }
 
-      tb_p = tb_p->next;
+        tb_p = tb_p->next;
+      }
     }
-  }
+  } /* LOG_DEBUGFLAG(RLC) || MESSAGE_TRACE_GENERATOR) */
 
-#endif
   rlc_am_rx (ctxt_pP, rlc_pP, data_indP);
 }
 
 //-----------------------------------------------------------------------------
 void
 rlc_am_data_req (
-  const protocol_ctxt_t* const ctxt_pP,
-  void * const                rlc_pP,
-  mem_block_t * const         sdu_pP)
-{
+  const protocol_ctxt_t *const ctxt_pP,
+  void *const                rlc_pP,
+  mem_block_t *const         sdu_pP) {
   rlc_am_entity_t     *l_rlc_p = (rlc_am_entity_t *) rlc_pP;
   uint32_t             mui;
   uint16_t             data_offset;
   uint16_t             data_size;
-#if TRACE_RLC_AM_PDU
   char                 message_string[7000];
   size_t               message_string_size = 0;
-#if ENABLE_ITTI
-  MessageDef          *msg_p;
-#endif
   int                  octet_index, index;
-#endif
-
   RLC_AM_MUTEX_LOCK(&l_rlc_p->lock_input_sdus, ctxt_pP, l_rlc_p);
 
   if ((l_rlc_p->input_sdus[l_rlc_p->next_sdu_index].mem_block == NULL) &&
       (l_rlc_p->input_sdus[l_rlc_p->next_sdu_index].flags.segmented == 0) &&
       (((l_rlc_p->next_sdu_index + 1) % RLC_AM_SDU_CONTROL_BUFFER_SIZE) != l_rlc_p->current_sdu_index)) {
-
-
     memset(&l_rlc_p->input_sdus[l_rlc_p->next_sdu_index], 0, sizeof(rlc_am_tx_sdu_management_t));
     l_rlc_p->input_sdus[l_rlc_p->next_sdu_index].mem_block = sdu_pP;
-
     mui         = ((struct rlc_am_data_req *) (sdu_pP->data))->mui;
     data_offset = ((struct rlc_am_data_req *) (sdu_pP->data))->data_offset;
     data_size   = ((struct rlc_am_data_req *) (sdu_pP->data))->data_size;
-
     MSC_LOG_RX_MESSAGE(
       (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_ENB:MSC_RLC_UE,
       (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_PDCP_ENB:MSC_PDCP_UE,
-      (const char*)(&sdu_pP->data[data_offset]),
+      (const char *)(&sdu_pP->data[data_offset]),
       data_size,
       MSC_AS_TIME_FMT" "PROTOCOL_RLC_AM_MSC_FMT" DATA-REQ size %u mui %u",
       MSC_AS_TIME_ARGS(ctxt_pP),
@@ -1175,68 +1050,53 @@ rlc_am_data_req (
       data_size,
       mui);
 
+    if (LOG_DEBUGFLAG(DEBUG_RLC)) {
+      message_string_size += sprintf(&message_string[message_string_size], "Bearer      : %u\n", l_rlc_p->rb_id);
+      message_string_size += sprintf(&message_string[message_string_size], "SDU size    : %u\n", data_size);
+      message_string_size += sprintf(&message_string[message_string_size], "MUI         : %u\n", mui);
+      message_string_size += sprintf(&message_string[message_string_size], "CONF        : %u\n", ((struct rlc_am_data_req *) (sdu_pP->data))->conf);
+      message_string_size += sprintf(&message_string[message_string_size], "\nPayload  : \n");
+      message_string_size += sprintf(&message_string[message_string_size], "------+-------------------------------------------------|\n");
+      message_string_size += sprintf(&message_string[message_string_size], "      |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |\n");
+      message_string_size += sprintf(&message_string[message_string_size], "------+-------------------------------------------------|\n");
+
+      for (octet_index = 0; octet_index < data_size; octet_index++) {
+        if ((octet_index % 16) == 0) {
+          if (octet_index != 0) {
+            message_string_size += sprintf(&message_string[message_string_size], " |\n");
+          }
 
-#if TRACE_RLC_AM_PDU
-    message_string_size += sprintf(&message_string[message_string_size], "Bearer      : %u\n", l_rlc_p->rb_id);
-    message_string_size += sprintf(&message_string[message_string_size], "SDU size    : %u\n", data_size);
-    message_string_size += sprintf(&message_string[message_string_size], "MUI         : %u\n", mui);
-    message_string_size += sprintf(&message_string[message_string_size], "CONF        : %u\n", ((struct rlc_am_data_req *) (sdu_pP->data))->conf);
-
-    message_string_size += sprintf(&message_string[message_string_size], "\nPayload  : \n");
-    message_string_size += sprintf(&message_string[message_string_size], "------+-------------------------------------------------|\n");
-    message_string_size += sprintf(&message_string[message_string_size], "      |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |\n");
-    message_string_size += sprintf(&message_string[message_string_size], "------+-------------------------------------------------|\n");
-
-    for (octet_index = 0; octet_index < data_size; octet_index++) {
-      if ((octet_index % 16) == 0) {
-        if (octet_index != 0) {
-          message_string_size += sprintf(&message_string[message_string_size], " |\n");
+          message_string_size += sprintf(&message_string[message_string_size], " %04d |", octet_index);
         }
 
-        message_string_size += sprintf(&message_string[message_string_size], " %04d |", octet_index);
+        /*
+         * Print every single octet in hexadecimal form
+         */
+        message_string_size += sprintf(&message_string[message_string_size], " %02x", ((uint8_t *)(&sdu_pP->data[data_offset]))[octet_index]);
+        /*
+         * Align newline and pipes according to the octets in groups of 2
+         */
       }
 
       /*
-       * Print every single octet in hexadecimal form
+       * Append enough spaces and put final pipe
        */
-      message_string_size += sprintf(&message_string[message_string_size], " %02x", ((uint8_t*)(&sdu_pP->data[data_offset]))[octet_index]);
-      /*
-       * Align newline and pipes according to the octets in groups of 2
-       */
-    }
-
-    /*
-     * Append enough spaces and put final pipe
-     */
-    for (index = octet_index; index < 16; ++index) {
-      message_string_size += sprintf(&message_string[message_string_size], "   ");
-    }
-
-    message_string_size += sprintf(&message_string[message_string_size], " |\n");
-
-#   if ENABLE_ITTI
-    msg_p = itti_alloc_new_message_sized (ctxt_pP->enb_flag > 0 ? TASK_RLC_ENB:TASK_RLC_UE , RLC_AM_SDU_REQ, message_string_size + sizeof (IttiMsgText));
-    msg_p->ittiMsg.rlc_am_sdu_req.size = message_string_size;
-    memcpy(&msg_p->ittiMsg.rlc_am_sdu_req.text, message_string, message_string_size);
-
-    itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
+      for (index = octet_index; index < 16; ++index) {
+        message_string_size += sprintf(&message_string[message_string_size], "   ");
+      }
 
-#   else
-    LOG_T(RLC, "%s", message_string);
-#   endif
-#endif
+      message_string_size += sprintf(&message_string[message_string_size], " |\n");
+      LOG_UI(RLC, "%s\n", message_string);
+    } /* LOG_DEBUGFLAG(RLC) */
 
     l_rlc_p->stat_tx_pdcp_sdu   += 1;
     l_rlc_p->stat_tx_pdcp_bytes += data_size;
-
     l_rlc_p->input_sdus[l_rlc_p->next_sdu_index].mui      = mui;
     l_rlc_p->input_sdus[l_rlc_p->next_sdu_index].sdu_size = data_size;
-
     l_rlc_p->sdu_buffer_occupancy += data_size;
     l_rlc_p->nb_sdu += 1;
     l_rlc_p->nb_sdu_no_segmented += 1;
-
-    l_rlc_p->input_sdus[l_rlc_p->next_sdu_index].first_byte = (uint8_t*)(&sdu_pP->data[data_offset]);
+    l_rlc_p->input_sdus[l_rlc_p->next_sdu_index].first_byte = (uint8_t *)(&sdu_pP->data[data_offset]);
     l_rlc_p->input_sdus[l_rlc_p->next_sdu_index].sdu_remaining_size = l_rlc_p->input_sdus[l_rlc_p->next_sdu_index].sdu_size;
     l_rlc_p->input_sdus[l_rlc_p->next_sdu_index].sdu_segmented_size = 0;
     l_rlc_p->input_sdus[l_rlc_p->next_sdu_index].sdu_creation_time  = ctxt_pP->frame;
@@ -1250,43 +1110,44 @@ rlc_am_data_req (
     l_rlc_p->input_sdus[l_rlc_p->next_sdu_index].flags.no_new_sdu_segmented_in_last_pdu = 0;
     //l_rlc_p->input_sdus[l_rlc_p->next_sdu_index].li_index_for_discard = -1;
     l_rlc_p->next_sdu_index = (l_rlc_p->next_sdu_index + 1) % RLC_AM_SDU_CONTROL_BUFFER_SIZE;
-    if (l_rlc_p->channel_id <3)
-    {
-    LOG_I(RLC, PROTOCOL_RLC_AM_CTXT_FMT" RLC_AM_DATA_REQ size %d Bytes,  NB SDU %d current_sdu_index=%d next_sdu_index=%d conf %d mui %d vtA %d vtS %d\n",
-          PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,l_rlc_p),
-          data_size,
-          l_rlc_p->nb_sdu,
-          l_rlc_p->current_sdu_index,
-          l_rlc_p->next_sdu_index,
-          ((struct rlc_am_data_req *) (sdu_pP->data))->conf,
-          mui,
-		  l_rlc_p->vt_a,
-		  l_rlc_p->vt_s);
+
+    if (l_rlc_p->channel_id <3) {
+      LOG_I(RLC, PROTOCOL_RLC_AM_CTXT_FMT" RLC_AM_DATA_REQ size %d Bytes,  NB SDU %d current_sdu_index=%d next_sdu_index=%d conf %d mui %d vtA %d vtS %d\n",
+            PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,l_rlc_p),
+            data_size,
+            l_rlc_p->nb_sdu,
+            l_rlc_p->current_sdu_index,
+            l_rlc_p->next_sdu_index,
+            ((struct rlc_am_data_req *) (sdu_pP->data))->conf,
+            mui,
+            l_rlc_p->vt_a,
+            l_rlc_p->vt_s);
     }
   } else {
-#if MESSAGE_CHART_GENERATOR
-    mui         = ((struct rlc_am_data_req*) (sdu_pP->data))->mui;
-    data_offset = ((struct rlc_am_data_req*) (sdu_pP->data))->data_offset;
-    data_size   = ((struct rlc_am_data_req*) (sdu_pP->data))->data_size;
-    MSC_LOG_RX_DISCARDED_MESSAGE(
-      (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_ENB:MSC_RLC_UE,
-      (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_PDCP_ENB:MSC_PDCP_UE,
-      (const char*)(&sdu_pP->data[data_offset]),
-      data_size,
-      MSC_AS_TIME_FMT" "PROTOCOL_RLC_AM_MSC_FMT" DATA-REQ size %u mui %u",
-      MSC_AS_TIME_ARGS(ctxt_pP),
-      PROTOCOL_RLC_AM_MSC_ARGS(ctxt_pP, l_rlc_p),
-      data_size,
-      mui);
-#endif
+    if( MESSAGE_CHART_GENERATOR) {
+      mui   = ((struct rlc_am_data_req *) (sdu_pP->data))->mui;
+      data_offset = ((struct rlc_am_data_req *) (sdu_pP->data))->data_offset;
+      data_size   = ((struct rlc_am_data_req *) (sdu_pP->data))->data_size;
+      MSC_LOG_RX_DISCARDED_MESSAGE(
+        (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_ENB:MSC_RLC_UE,
+        (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_PDCP_ENB:MSC_PDCP_UE,
+        (const char *)(&sdu_pP->data[data_offset]),
+        data_size,
+        MSC_AS_TIME_FMT" "PROTOCOL_RLC_AM_MSC_FMT" DATA-REQ size %u mui %u",
+        MSC_AS_TIME_ARGS(ctxt_pP),
+        PROTOCOL_RLC_AM_MSC_ARGS(ctxt_pP, l_rlc_p),
+        data_size,
+        mui);
+    }
+
     LOG_W(RLC, PROTOCOL_RLC_AM_CTXT_FMT" RLC_AM_DATA_REQ BUFFER FULL, NB SDU %d current_sdu_index=%d next_sdu_index=%d size_input_sdus_buffer=%d vtA=%d vtS=%d\n",
           PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,l_rlc_p),
           l_rlc_p->nb_sdu,
           l_rlc_p->current_sdu_index,
           l_rlc_p->next_sdu_index,
           RLC_AM_SDU_CONTROL_BUFFER_SIZE,
-		  l_rlc_p->vt_a,
-		  l_rlc_p->vt_s);
+          l_rlc_p->vt_a,
+          l_rlc_p->vt_s);
     LOG_W(RLC, "                                        input_sdus[].mem_block=%p next input_sdus[].flags.segmented=%d\n",
           l_rlc_p->input_sdus[l_rlc_p->next_sdu_index].mem_block, l_rlc_p->input_sdus[l_rlc_p->next_sdu_index].flags.segmented);
     l_rlc_p->stat_tx_pdcp_sdu_discarded   += 1;
diff --git a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_reassembly.c b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_reassembly.c
index d2fe1d1bfd66ed0e7617e781e45cb1231af0e403..369c7fd0da56576168243e6c8de429a2f557e773 100644
--- a/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_reassembly.c
+++ b/openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_reassembly.c
@@ -23,9 +23,7 @@
 #define RLC_AM_REASSEMBLY_C 1
 #include "platform_types.h"
 //-----------------------------------------------------------------------------
-#if ENABLE_ITTI
-# include "intertask_interface.h"
-#endif
+
 #include "assertions.h"
 #include "rlc.h"
 #include "rlc_am.h"
@@ -37,19 +35,17 @@
 //-----------------------------------------------------------------------------
 inline void
 rlc_am_clear_rx_sdu (
-  const protocol_ctxt_t* const ctxt_pP,
-  rlc_am_entity_t * const      rlc_pP)
-{
+  const protocol_ctxt_t *const ctxt_pP,
+  rlc_am_entity_t *const      rlc_pP) {
   rlc_pP->output_sdu_size_to_write = 0;
 }
 //-----------------------------------------------------------------------------
 void
 rlc_am_reassembly (
-  const protocol_ctxt_t* const ctxt_pP,
-  rlc_am_entity_t * const rlc_pP,
-  uint8_t * src_pP,
-  const int32_t lengthP)
-{
+  const protocol_ctxt_t *const ctxt_pP,
+  rlc_am_entity_t *const rlc_pP,
+  uint8_t *src_pP,
+  const int32_t lengthP) {
   LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[REASSEMBLY PAYLOAD] reassembly()  %d bytes\n",
         PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
         lengthP);
@@ -57,6 +53,7 @@ rlc_am_reassembly (
   if (rlc_pP->output_sdu_in_construction == NULL) {
     rlc_pP->output_sdu_in_construction = get_free_mem_block (RLC_SDU_MAX_SIZE, __func__);
     rlc_pP->output_sdu_size_to_write = 0;
+
     //assert(rlc_pP->output_sdu_in_construction != NULL);
     if(rlc_pP->output_sdu_in_construction == NULL) {
       LOG_E(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[REASSEMBLY PAYLOAD] output_sdu_in_construction is NULL\n",
@@ -66,7 +63,6 @@ rlc_am_reassembly (
   }
 
   if (rlc_pP->output_sdu_in_construction != NULL) {
-
     // check if no overflow in size
     if ((rlc_pP->output_sdu_size_to_write + lengthP) <= RLC_SDU_MAX_SIZE) {
       memcpy (&rlc_pP->output_sdu_in_construction->data[rlc_pP->output_sdu_size_to_write], src_pP, lengthP);
@@ -93,18 +89,8 @@ rlc_am_reassembly (
 //-----------------------------------------------------------------------------
 void
 rlc_am_send_sdu (
-  const protocol_ctxt_t* const ctxt_pP,
-  rlc_am_entity_t * const      rlc_pP)
-{
-#   if TRACE_RLC_AM_PDU
-  char                 message_string[7000];
-  size_t               message_string_size = 0;
-#if ENABLE_ITTI
-  MessageDef          *msg_p;
-#endif
-  int                  octet_index, index;
-#endif
-
+  const protocol_ctxt_t *const ctxt_pP,
+  rlc_am_entity_t *const      rlc_pP) {
   if ((rlc_pP->output_sdu_in_construction)) {
     LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[SEND_SDU] %d bytes sdu %p\n",
           PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
@@ -120,73 +106,62 @@ rlc_am_send_sdu (
                                    rlc_pP->output_sdu_size_to_write,
                                    rlc_pP->output_sdu_in_construction);
 #else
-#   if TRACE_RLC_AM_PDU
-      message_string_size += sprintf(&message_string[message_string_size], "Bearer      : %u\n", rlc_pP->rb_id);
-      message_string_size += sprintf(&message_string[message_string_size], "SDU size    : %u\n", rlc_pP->output_sdu_size_to_write);
-
-      message_string_size += sprintf(&message_string[message_string_size], "\nPayload  : \n");
-      message_string_size += sprintf(&message_string[message_string_size], "------+-------------------------------------------------|\n");
-      message_string_size += sprintf(&message_string[message_string_size], "      |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |\n");
-      message_string_size += sprintf(&message_string[message_string_size], "------+-------------------------------------------------|\n");
-
-      for (octet_index = 0; octet_index < rlc_pP->output_sdu_size_to_write; octet_index++) {
-        if ((octet_index % 16) == 0) {
-          if (octet_index != 0) {
-            message_string_size += sprintf(&message_string[message_string_size], " |\n");
+
+      if ( LOG_DEBUGFLAG(DEBUG_RLC)) {
+        char                 message_string[7000];
+        size_t               message_string_size = 0;
+        int                  octet_index, index;
+        message_string_size += sprintf(&message_string[message_string_size], "Bearer	  : %u\n", rlc_pP->rb_id);
+        message_string_size += sprintf(&message_string[message_string_size], "SDU size    : %u\n", rlc_pP->output_sdu_size_to_write);
+        message_string_size += sprintf(&message_string[message_string_size], "\nPayload  : \n");
+        message_string_size += sprintf(&message_string[message_string_size], "------+-------------------------------------------------|\n");
+        message_string_size += sprintf(&message_string[message_string_size], "      |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |\n");
+        message_string_size += sprintf(&message_string[message_string_size], "------+-------------------------------------------------|\n");
+
+        for (octet_index = 0; octet_index < rlc_pP->output_sdu_size_to_write; octet_index++) {
+          if ((octet_index % 16) == 0) {
+            if (octet_index != 0) {
+              message_string_size += sprintf(&message_string[message_string_size], " |\n");
+            }
+
+            message_string_size += sprintf(&message_string[message_string_size], " %04d |", octet_index);
           }
 
-          message_string_size += sprintf(&message_string[message_string_size], " %04d |", octet_index);
+          /*
+           * Print every single octet in hexadecimal form
+           */
+          message_string_size += sprintf(&message_string[message_string_size],
+                                         " %02x",
+                                         rlc_pP->output_sdu_in_construction->data[octet_index]);
+          /*
+           * Align newline and pipes according to the octets in groups of 2
+           */
         }
 
         /*
-         * Print every single octet in hexadecimal form
+         * Append enough spaces and put final pipe
          */
-        message_string_size += sprintf(&message_string[message_string_size],
-                                       " %02x",
-                                       rlc_pP->output_sdu_in_construction->data[octet_index]);
-        /*
-         * Align newline and pipes according to the octets in groups of 2
-         */
-      }
+        for (index = octet_index; index < 16; ++index) {
+          message_string_size += sprintf(&message_string[message_string_size], "   ");
+        }
 
-      /*
-       * Append enough spaces and put final pipe
-       */
-      for (index = octet_index; index < 16; ++index) {
-        message_string_size += sprintf(&message_string[message_string_size], "   ");
+        message_string_size += sprintf(&message_string[message_string_size], " |\n");
+        LOG_T(RLC, "%s", message_string);
       }
 
-      message_string_size += sprintf(&message_string[message_string_size], " |\n");
-
-
-
-#      if ENABLE_ITTI
-      msg_p = itti_alloc_new_message_sized (ctxt_pP->enb_flag > 0 ? TASK_RLC_ENB:TASK_RLC_UE ,
-                                            RLC_AM_SDU_IND,
-                                            message_string_size + sizeof (IttiMsgText));
-      msg_p->ittiMsg.rlc_am_sdu_ind.size = message_string_size;
-      memcpy(&msg_p->ittiMsg.rlc_am_sdu_ind.text, message_string, message_string_size);
-
-      itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
-
-#      else
-      LOG_T(RLC, "%s", message_string);
-#      endif
-#   endif
 #if !ENABLE_ITTI
       RLC_AM_MUTEX_UNLOCK(&rlc_pP->lock_input_sdus);
 #endif
       MSC_LOG_TX_MESSAGE(
         (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_ENB:MSC_RLC_UE,
         (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_PDCP_ENB:MSC_PDCP_UE,
-        (const char*)(rlc_pP->output_sdu_in_construction->data),
+        (const char *)(rlc_pP->output_sdu_in_construction->data),
         rlc_pP->output_sdu_size_to_write,
         MSC_AS_TIME_FMT" "PROTOCOL_RLC_AM_MSC_FMT" DATA-IND size %u",
         MSC_AS_TIME_ARGS(ctxt_pP),
         PROTOCOL_RLC_AM_MSC_ARGS(ctxt_pP,rlc_pP),
         rlc_pP->output_sdu_size_to_write
       );
-
       rlc_data_ind (ctxt_pP,
                     BOOL_NOT(rlc_pP->is_data_plane),
                     MBMS_FLAG_NO,
@@ -203,16 +178,16 @@ rlc_am_send_sdu (
             PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP));
       //msg("[RLC_AM][MOD %d] Freeing mem_block ...\n", rlc_pP->module_id);
       //free_mem_block (rlc_pP->output_sdu_in_construction, __func__);
-//Assertion(eNB)_PRAN_DesignDocument_annex No.764
-     LOG_E(RLC, PROTOCOL_RLC_AM_CTXT_FMT" SEND SDU REQUESTED %d bytes\n",
-             PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-             rlc_pP->output_sdu_size_to_write);
-/*
-      AssertFatal(3==4,
-                  PROTOCOL_RLC_AM_CTXT_FMT" SEND SDU REQUESTED %d bytes",
-                  PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                  rlc_pP->output_sdu_size_to_write);
-*/
+      //Assertion(eNB)_PRAN_DesignDocument_annex No.764
+      LOG_E(RLC, PROTOCOL_RLC_AM_CTXT_FMT" SEND SDU REQUESTED %d bytes\n",
+            PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
+            rlc_pP->output_sdu_size_to_write);
+      /*
+            AssertFatal(3==4,
+                        PROTOCOL_RLC_AM_CTXT_FMT" SEND SDU REQUESTED %d bytes",
+                        PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
+                        rlc_pP->output_sdu_size_to_write);
+      */
     }
 
     rlc_pP->output_sdu_size_to_write = 0;
@@ -221,191 +196,189 @@ rlc_am_send_sdu (
 //-----------------------------------------------------------------------------
 void
 rlc_am_reassemble_pdu(
-  const protocol_ctxt_t* const ctxt_pP,
-  rlc_am_entity_t * const      rlc_pP,
-  mem_block_t * const          tb_pP,
-  boolean_t free_rlc_pdu)
-{
+  const protocol_ctxt_t *const ctxt_pP,
+  rlc_am_entity_t *const      rlc_pP,
+  mem_block_t *const          tb_pP,
+  boolean_t free_rlc_pdu) {
   int i,j;
-
-  rlc_am_pdu_info_t* pdu_info        = &((rlc_am_rx_pdu_management_t*)(tb_pP->data))->pdu_info;
+  rlc_am_pdu_info_t *pdu_info        = &((rlc_am_rx_pdu_management_t *)(tb_pP->data))->pdu_info;
   LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[REASSEMBLY PDU] TRY REASSEMBLY PDU SN=%03d\n",
         PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
         pdu_info->sn);
-#if TRACE_RLC_AM_RX_DECODE
-  rlc_am_display_data_pdu_infos(ctxt_pP, rlc_pP, pdu_info);
-#endif
+
+  if ( LOG_DEBUGFLAG(DEBUG_RLC)) {
+    rlc_am_display_data_pdu_infos(ctxt_pP, rlc_pP, pdu_info);
+  }
 
   if (pdu_info->e == RLC_E_FIXED_PART_DATA_FIELD_FOLLOW) {
     switch (pdu_info->fi) {
-    case RLC_FI_1ST_BYTE_DATA_IS_1ST_BYTE_SDU_LAST_BYTE_DATA_IS_LAST_BYTE_SDU:
-      LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[REASSEMBLY PDU] TRY REASSEMBLY PDU NO E_LI FI=11 (00)\n",
-            PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP));
-      // one complete SDU
-      rlc_am_send_sdu(ctxt_pP, rlc_pP); // may be not necessary
-      rlc_am_reassembly (ctxt_pP, rlc_pP, pdu_info->payload, pdu_info->payload_size);
-      rlc_am_send_sdu(ctxt_pP, rlc_pP); // may be not necessary
-      //rlc_pP->reassembly_missing_sn_detected = 0;
-      break;
-
-    case RLC_FI_1ST_BYTE_DATA_IS_1ST_BYTE_SDU_LAST_BYTE_DATA_IS_NOT_LAST_BYTE_SDU:
-      LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[REASSEMBLY PDU] TRY REASSEMBLY PDU NO E_LI FI=10 (01)\n",
-            PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP));
-      // one beginning segment of SDU in PDU
-      rlc_am_send_sdu(ctxt_pP, rlc_pP); // may be not necessary
-      rlc_am_reassembly (ctxt_pP, rlc_pP,pdu_info->payload, pdu_info->payload_size);
-      //rlc_pP->reassembly_missing_sn_detected = 0;
-      break;
-
-    case RLC_FI_1ST_BYTE_DATA_IS_NOT_1ST_BYTE_SDU_LAST_BYTE_DATA_IS_LAST_BYTE_SDU:
-      LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[REASSEMBLY PDU] TRY REASSEMBLY PDU NO E_LI FI=01 (10)\n",
-            PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP));
-      // one last segment of SDU
-      //if (rlc_pP->reassembly_missing_sn_detected == 0) {
-      rlc_am_reassembly (ctxt_pP, rlc_pP, pdu_info->payload, pdu_info->payload_size);
-      rlc_am_send_sdu(ctxt_pP, rlc_pP);
-      //} // else { clear sdu already done
-      //rlc_pP->reassembly_missing_sn_detected = 0;
-      break;
-
-    case RLC_FI_1ST_BYTE_DATA_IS_NOT_1ST_BYTE_SDU_LAST_BYTE_DATA_IS_NOT_LAST_BYTE_SDU:
-      LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[REASSEMBLY PDU] TRY REASSEMBLY PDU NO E_LI FI=00 (11)\n",
-            PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP));
-      //if (rlc_pP->reassembly_missing_sn_detected == 0) {
-      // one whole segment of SDU in PDU
-      rlc_am_reassembly (ctxt_pP, rlc_pP, pdu_info->payload, pdu_info->payload_size);
-      //} else {
-      //    rlc_pP->reassembly_missing_sn_detected = 1; // not necessary but for readability of the code
-      //}
-
-      break;
-
-    default:
-//Assertion(eNB)_PRAN_DesignDocument_annex No.1428
-      LOG_E(RLC, "RLC_E_FIXED_PART_DATA_FIELD_FOLLOW error pdu_info->fi[%d]\n", pdu_info->fi);
-//      assert(0 != 0);
+      case RLC_FI_1ST_BYTE_DATA_IS_1ST_BYTE_SDU_LAST_BYTE_DATA_IS_LAST_BYTE_SDU:
+        LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[REASSEMBLY PDU] TRY REASSEMBLY PDU NO E_LI FI=11 (00)\n",
+              PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP));
+        // one complete SDU
+        rlc_am_send_sdu(ctxt_pP, rlc_pP); // may be not necessary
+        rlc_am_reassembly (ctxt_pP, rlc_pP, pdu_info->payload, pdu_info->payload_size);
+        rlc_am_send_sdu(ctxt_pP, rlc_pP); // may be not necessary
+        //rlc_pP->reassembly_missing_sn_detected = 0;
+        break;
+
+      case RLC_FI_1ST_BYTE_DATA_IS_1ST_BYTE_SDU_LAST_BYTE_DATA_IS_NOT_LAST_BYTE_SDU:
+        LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[REASSEMBLY PDU] TRY REASSEMBLY PDU NO E_LI FI=10 (01)\n",
+              PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP));
+        // one beginning segment of SDU in PDU
+        rlc_am_send_sdu(ctxt_pP, rlc_pP); // may be not necessary
+        rlc_am_reassembly (ctxt_pP, rlc_pP,pdu_info->payload, pdu_info->payload_size);
+        //rlc_pP->reassembly_missing_sn_detected = 0;
+        break;
+
+      case RLC_FI_1ST_BYTE_DATA_IS_NOT_1ST_BYTE_SDU_LAST_BYTE_DATA_IS_LAST_BYTE_SDU:
+        LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[REASSEMBLY PDU] TRY REASSEMBLY PDU NO E_LI FI=01 (10)\n",
+              PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP));
+        // one last segment of SDU
+        //if (rlc_pP->reassembly_missing_sn_detected == 0) {
+        rlc_am_reassembly (ctxt_pP, rlc_pP, pdu_info->payload, pdu_info->payload_size);
+        rlc_am_send_sdu(ctxt_pP, rlc_pP);
+        //} // else { clear sdu already done
+        //rlc_pP->reassembly_missing_sn_detected = 0;
+        break;
+
+      case RLC_FI_1ST_BYTE_DATA_IS_NOT_1ST_BYTE_SDU_LAST_BYTE_DATA_IS_NOT_LAST_BYTE_SDU:
+        LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[REASSEMBLY PDU] TRY REASSEMBLY PDU NO E_LI FI=00 (11)\n",
+              PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP));
+        //if (rlc_pP->reassembly_missing_sn_detected == 0) {
+        // one whole segment of SDU in PDU
+        rlc_am_reassembly (ctxt_pP, rlc_pP, pdu_info->payload, pdu_info->payload_size);
+        //} else {
+        //    rlc_pP->reassembly_missing_sn_detected = 1; // not necessary but for readability of the code
+        //}
+        break;
+
+      default:
+        //Assertion(eNB)_PRAN_DesignDocument_annex No.1428
+        LOG_E(RLC, "RLC_E_FIXED_PART_DATA_FIELD_FOLLOW error pdu_info->fi[%d]\n", pdu_info->fi);
+        //      assert(0 != 0);
     }
   } else {
     switch (pdu_info->fi) {
-    case RLC_FI_1ST_BYTE_DATA_IS_1ST_BYTE_SDU_LAST_BYTE_DATA_IS_LAST_BYTE_SDU:
-      LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[REASSEMBLY PDU] TRY REASSEMBLY PDU FI=11 (00) Li=",
-            PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP));
-
-      for (i=0; i < pdu_info->num_li; i++) {
-        LOG_D(RLC, "%d ",pdu_info->li_list[i]);
-      }
+      case RLC_FI_1ST_BYTE_DATA_IS_1ST_BYTE_SDU_LAST_BYTE_DATA_IS_LAST_BYTE_SDU:
+        LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[REASSEMBLY PDU] TRY REASSEMBLY PDU FI=11 (00) Li=",
+              PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP));
 
-      LOG_D(RLC, "\n");
-      //msg(" remaining size %d\n",size);
-      // N complete SDUs
-      rlc_am_send_sdu(ctxt_pP, rlc_pP);
-      j = 0;
+        for (i=0; i < pdu_info->num_li; i++) {
+          LOG_D(RLC, "%d ",pdu_info->li_list[i]);
+        }
 
-      for (i = 0; i < pdu_info->num_li; i++) {
-        rlc_am_reassembly (ctxt_pP, rlc_pP, &pdu_info->payload[j], pdu_info->li_list[i]);
+        LOG_D(RLC, "\n");
+        //msg(" remaining size %d\n",size);
+        // N complete SDUs
         rlc_am_send_sdu(ctxt_pP, rlc_pP);
-        j = j + pdu_info->li_list[i];
-      }
+        j = 0;
 
-      if (pdu_info->hidden_size > 0) { // normally should always be > 0 but just for help debug
-        // data is already ok, done by last loop above
-        rlc_am_reassembly (ctxt_pP, rlc_pP, &pdu_info->payload[j], pdu_info->hidden_size);
-        rlc_am_send_sdu(ctxt_pP, rlc_pP);
-      }
+        for (i = 0; i < pdu_info->num_li; i++) {
+          rlc_am_reassembly (ctxt_pP, rlc_pP, &pdu_info->payload[j], pdu_info->li_list[i]);
+          rlc_am_send_sdu(ctxt_pP, rlc_pP);
+          j = j + pdu_info->li_list[i];
+        }
 
-      //rlc_pP->reassembly_missing_sn_detected = 0;
-      break;
+        if (pdu_info->hidden_size > 0) { // normally should always be > 0 but just for help debug
+          // data is already ok, done by last loop above
+          rlc_am_reassembly (ctxt_pP, rlc_pP, &pdu_info->payload[j], pdu_info->hidden_size);
+          rlc_am_send_sdu(ctxt_pP, rlc_pP);
+        }
 
-    case RLC_FI_1ST_BYTE_DATA_IS_1ST_BYTE_SDU_LAST_BYTE_DATA_IS_NOT_LAST_BYTE_SDU:
-      LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[REASSEMBLY PDU] TRY REASSEMBLY PDU FI=10 (01) Li=",
-            PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP));
+        //rlc_pP->reassembly_missing_sn_detected = 0;
+        break;
 
-      for (i=0; i < pdu_info->num_li; i++) {
-        LOG_D(RLC, "%d ",pdu_info->li_list[i]);
-      }
+      case RLC_FI_1ST_BYTE_DATA_IS_1ST_BYTE_SDU_LAST_BYTE_DATA_IS_NOT_LAST_BYTE_SDU:
+        LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[REASSEMBLY PDU] TRY REASSEMBLY PDU FI=10 (01) Li=",
+              PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP));
 
-      LOG_D(RLC, "\n");
-      //msg(" remaining size %d\n",size);
-      // N complete SDUs + one segment of SDU in PDU
-      rlc_am_send_sdu(ctxt_pP, rlc_pP);
-      j = 0;
+        for (i=0; i < pdu_info->num_li; i++) {
+          LOG_D(RLC, "%d ",pdu_info->li_list[i]);
+        }
 
-      for (i = 0; i < pdu_info->num_li; i++) {
-        rlc_am_reassembly (ctxt_pP, rlc_pP, &pdu_info->payload[j], pdu_info->li_list[i]);
+        LOG_D(RLC, "\n");
+        //msg(" remaining size %d\n",size);
+        // N complete SDUs + one segment of SDU in PDU
         rlc_am_send_sdu(ctxt_pP, rlc_pP);
-        j = j + pdu_info->li_list[i];
-      }
+        j = 0;
 
-      if (pdu_info->hidden_size > 0) { // normally should always be > 0 but just for help debug
-        // data is already ok, done by last loop above
-        rlc_am_reassembly (ctxt_pP, rlc_pP, &pdu_info->payload[j], pdu_info->hidden_size);
-      }
+        for (i = 0; i < pdu_info->num_li; i++) {
+          rlc_am_reassembly (ctxt_pP, rlc_pP, &pdu_info->payload[j], pdu_info->li_list[i]);
+          rlc_am_send_sdu(ctxt_pP, rlc_pP);
+          j = j + pdu_info->li_list[i];
+        }
 
-      //rlc_pP->reassembly_missing_sn_detected = 0;
-      break;
+        if (pdu_info->hidden_size > 0) { // normally should always be > 0 but just for help debug
+          // data is already ok, done by last loop above
+          rlc_am_reassembly (ctxt_pP, rlc_pP, &pdu_info->payload[j], pdu_info->hidden_size);
+        }
 
-    case RLC_FI_1ST_BYTE_DATA_IS_NOT_1ST_BYTE_SDU_LAST_BYTE_DATA_IS_LAST_BYTE_SDU:
-      LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[REASSEMBLY PDU] TRY REASSEMBLY PDU FI=01 (10) Li=",
-            PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP));
+        //rlc_pP->reassembly_missing_sn_detected = 0;
+        break;
 
-      for (i=0; i < pdu_info->num_li; i++) {
-        LOG_D(RLC, "%d ",pdu_info->li_list[i]);
-      }
+      case RLC_FI_1ST_BYTE_DATA_IS_NOT_1ST_BYTE_SDU_LAST_BYTE_DATA_IS_LAST_BYTE_SDU:
+        LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[REASSEMBLY PDU] TRY REASSEMBLY PDU FI=01 (10) Li=",
+              PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP));
 
-      LOG_D(RLC, "\n");
-      //msg(" remaining size %d\n",size);
-      // one last segment of SDU + N complete SDUs in PDU
-      j = 0;
+        for (i=0; i < pdu_info->num_li; i++) {
+          LOG_D(RLC, "%d ",pdu_info->li_list[i]);
+        }
 
-      for (i = 0; i < pdu_info->num_li; i++) {
-        rlc_am_reassembly (ctxt_pP, rlc_pP, &pdu_info->payload[j], pdu_info->li_list[i]);
-        rlc_am_send_sdu(ctxt_pP, rlc_pP);
-        j = j + pdu_info->li_list[i];
-      }
+        LOG_D(RLC, "\n");
+        //msg(" remaining size %d\n",size);
+        // one last segment of SDU + N complete SDUs in PDU
+        j = 0;
 
-      if (pdu_info->hidden_size > 0) { // normally should always be > 0 but just for help debug
-        // data is already ok, done by last loop above
-        rlc_am_reassembly (ctxt_pP, rlc_pP, &pdu_info->payload[j], pdu_info->hidden_size);
-        rlc_am_send_sdu(ctxt_pP, rlc_pP);
-      }
+        for (i = 0; i < pdu_info->num_li; i++) {
+          rlc_am_reassembly (ctxt_pP, rlc_pP, &pdu_info->payload[j], pdu_info->li_list[i]);
+          rlc_am_send_sdu(ctxt_pP, rlc_pP);
+          j = j + pdu_info->li_list[i];
+        }
 
-      //rlc_pP->reassembly_missing_sn_detected = 0;
-      break;
+        if (pdu_info->hidden_size > 0) { // normally should always be > 0 but just for help debug
+          // data is already ok, done by last loop above
+          rlc_am_reassembly (ctxt_pP, rlc_pP, &pdu_info->payload[j], pdu_info->hidden_size);
+          rlc_am_send_sdu(ctxt_pP, rlc_pP);
+        }
 
-    case RLC_FI_1ST_BYTE_DATA_IS_NOT_1ST_BYTE_SDU_LAST_BYTE_DATA_IS_NOT_LAST_BYTE_SDU:
-      LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[REASSEMBLY PDU] TRY REASSEMBLY PDU FI=00 (11) Li=",
-            PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP));
+        //rlc_pP->reassembly_missing_sn_detected = 0;
+        break;
 
-      for (i=0; i < pdu_info->num_li; i++) {
-        LOG_D(RLC, "%d ",pdu_info->li_list[i]);
-      }
+      case RLC_FI_1ST_BYTE_DATA_IS_NOT_1ST_BYTE_SDU_LAST_BYTE_DATA_IS_NOT_LAST_BYTE_SDU:
+        LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[REASSEMBLY PDU] TRY REASSEMBLY PDU FI=00 (11) Li=",
+              PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP));
 
-      LOG_D(RLC, "\n");
-      //msg(" remaining size %d\n",size);
-      j = 0;
+        for (i=0; i < pdu_info->num_li; i++) {
+          LOG_D(RLC, "%d ",pdu_info->li_list[i]);
+        }
 
-      for (i = 0; i < pdu_info->num_li; i++) {
-        rlc_am_reassembly (ctxt_pP, rlc_pP, &pdu_info->payload[j], pdu_info->li_list[i]);
-        rlc_am_send_sdu(ctxt_pP, rlc_pP);
-        j = j + pdu_info->li_list[i];
-      }
+        LOG_D(RLC, "\n");
+        //msg(" remaining size %d\n",size);
+        j = 0;
 
-      if (pdu_info->hidden_size > 0) { // normally should always be > 0 but just for help debug
-        // data is already ok, done by last loop above
-        rlc_am_reassembly (ctxt_pP, rlc_pP, &pdu_info->payload[j], pdu_info->hidden_size);
-      }
+        for (i = 0; i < pdu_info->num_li; i++) {
+          rlc_am_reassembly (ctxt_pP, rlc_pP, &pdu_info->payload[j], pdu_info->li_list[i]);
+          rlc_am_send_sdu(ctxt_pP, rlc_pP);
+          j = j + pdu_info->li_list[i];
+        }
+
+        if (pdu_info->hidden_size > 0) { // normally should always be > 0 but just for help debug
+          // data is already ok, done by last loop above
+          rlc_am_reassembly (ctxt_pP, rlc_pP, &pdu_info->payload[j], pdu_info->hidden_size);
+        }
 
-      //rlc_pP->reassembly_missing_sn_detected = 0;
-      break;
+        //rlc_pP->reassembly_missing_sn_detected = 0;
+        break;
 
-    default:
-//Assertion(eNB)_PRAN_DesignDocument_annex No.1429
-      LOG_E(RLC, "not RLC_E_FIXED_PART_DATA_FIELD_FOLLOW error pdu_info->fi[%d]\n", pdu_info->fi);
-//      assert(1 != 1);
+      default:
+        //Assertion(eNB)_PRAN_DesignDocument_annex No.1429
+        LOG_E(RLC, "not RLC_E_FIXED_PART_DATA_FIELD_FOLLOW error pdu_info->fi[%d]\n", pdu_info->fi);
+        //      assert(1 != 1);
     }
   }
 
   if (free_rlc_pdu) {
-	  free_mem_block(tb_pP, __func__);
+    free_mem_block(tb_pP, __func__);
   }
 }
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 917f1a1791d733bc9a63701fc2bef0d92e6f1506..5c68aecf61397e88c58f249bb0e3fa5936a54e26 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
@@ -27,59 +27,19 @@
 #include "platform_types.h"
 //-----------------------------------------------------------------------------
 #if ENABLE_ITTI
-# include "intertask_interface.h"
+  #include "intertask_interface.h"
 #endif
 #include "assertions.h"
 #include "list.h"
 #include "rlc_am.h"
 #include "common/utils/LOG/log.h"
 
-#   if ENABLE_ITTI
-//-----------------------------------------------------------------------------
-void
-rlc_am_itti_display_status_ind_infos(
-  const protocol_ctxt_t* const            ctxt_pP,
-  const rlc_am_entity_t *const            rlc_pP,
-  const rlc_am_control_pdu_info_t *const  pdu_info_pP)
-{
-  char                 message_string[1000];
-  size_t               message_string_size = 0;
-  MessageDef          *msg_p;
-
-  int num_nack;
-
-  if (!pdu_info_pP->d_c) {
-    message_string_size += sprintf(&message_string[message_string_size], "Bearer      : %u\n", rlc_pP->rb_id);
-    message_string_size += sprintf(&message_string[message_string_size], "CONTROL PDU ACK SN %04d", pdu_info_pP->ack_sn);
-
-    for (num_nack = 0; num_nack < pdu_info_pP->num_nack; num_nack++) {
-      if (pdu_info_pP->nack_list[num_nack].e2) {
-        message_string_size += sprintf(&message_string[message_string_size], "\n\tNACK SN %04d SO START %05d SO END %05d",  pdu_info_pP->nack_list[num_nack].nack_sn,
-                                       pdu_info_pP->nack_list[num_nack].so_start,
-                                       pdu_info_pP->nack_list[num_nack].so_end);
-      } else {
-        message_string_size += sprintf(&message_string[message_string_size], "\n\tNACK SN %04d",  pdu_info_pP->nack_list[num_nack].nack_sn);
-      }
-    }
-
-    message_string_size += sprintf(&message_string[message_string_size], "\n");
-
-    msg_p = itti_alloc_new_message_sized (ctxt_pP->enb_flag > 0 ? TASK_RLC_ENB:TASK_RLC_UE , RLC_AM_STATUS_PDU_IND, message_string_size + sizeof (IttiMsgText));
-    msg_p->ittiMsg.rlc_am_status_pdu_ind.size = message_string_size;
-    memcpy(&msg_p->ittiMsg.rlc_am_status_pdu_ind.text, message_string, message_string_size);
-
-    itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
-  }
-}
-
-#   endif
 
 //-----------------------------------------------------------------------------
 uint16_t rlc_am_read_bit_field(
-  uint8_t** data_ppP,
-  unsigned int* bit_pos_pP,
-  const signed int bits_to_readP)
-{
+  uint8_t **data_ppP,
+  unsigned int *bit_pos_pP,
+  const signed int bits_to_readP) {
   uint16_t        value     = 0;
   unsigned int bits_read = 0;
   signed int bits_to_read = bits_to_readP;
@@ -113,11 +73,10 @@ uint16_t rlc_am_read_bit_field(
 //-----------------------------------------------------------------------------
 void
 rlc_am_write8_bit_field(
-  uint8_t** data_ppP,
-  unsigned int* bit_pos_pP,
+  uint8_t **data_ppP,
+  unsigned int *bit_pos_pP,
   const signed int bits_to_writeP,
-  const uint8_t valueP)
-{
+  const uint8_t valueP) {
   unsigned int available_bits;
   signed int bits_to_write= bits_to_writeP;
 
@@ -148,11 +107,10 @@ rlc_am_write8_bit_field(
 //-----------------------------------------------------------------------------
 void
 rlc_am_write16_bit_field(
-  uint8_t** data_ppP,
-  unsigned int* bit_pos_pP,
+  uint8_t **data_ppP,
+  unsigned int *bit_pos_pP,
   signed int bits_to_writeP,
-  const uint16_t valueP)
-{
+  const uint16_t valueP) {
   //assert(bits_to_writeP <= 16);
   if(bits_to_writeP > 16) {
     LOG_E(RLC, "bits_to_writeP error. %d\n", bits_to_writeP);
@@ -168,15 +126,12 @@ rlc_am_write16_bit_field(
 //-----------------------------------------------------------------------------
 signed int
 rlc_am_get_control_pdu_infos(
-  rlc_am_pdu_sn_10_t* const        header_pP,
-  sdu_size_t * const               total_size_pP,
-  rlc_am_control_pdu_info_t* const pdu_info_pP)
-{
+  rlc_am_pdu_sn_10_t *const        header_pP,
+  sdu_size_t *const               total_size_pP,
+  rlc_am_control_pdu_info_t *const pdu_info_pP) {
   memset(pdu_info_pP, 0, sizeof (rlc_am_control_pdu_info_t));
-
   pdu_info_pP->d_c = header_pP->b1 >> 7;
 
-
   if (!pdu_info_pP->d_c) {
     pdu_info_pP->cpt    = (header_pP->b1 >> 4) & 0x07;
 
@@ -191,7 +146,7 @@ rlc_am_get_control_pdu_infos(
     if (pdu_info_pP->e1) {
       unsigned int nack_to_read  = 1;
       unsigned int bit_pos       = 7; // range from 0 (MSB/left) to 7 (LSB/right)
-      uint8_t*        byte_pos_p      = &header_pP->b2;
+      uint8_t        *byte_pos_p      = &header_pP->b2;
 
       while (nack_to_read)  {
         pdu_info_pP->nack_list[pdu_info_pP->num_nack].nack_sn = rlc_am_read_bit_field(&byte_pos_p, &bit_pos, 10);
@@ -214,9 +169,11 @@ rlc_am_get_control_pdu_infos(
         if (!pdu_info_pP->nack_list[pdu_info_pP->num_nack - 1].e1) {
           nack_to_read = 0;
           *total_size_pP = *total_size_pP - (sdu_size_t)((uint64_t)byte_pos_p + (uint64_t)((bit_pos + 7)/8) - (uint64_t)header_pP);
+
           if (*total_size_pP != 0) {
             LOG_E(RLC, "[RLC_AM_GET_CONTROL_PDU_INFOS][FIRST]header_pP->b1=%d,header_pP->b2=%d\n",header_pP->b1,header_pP->b2);
           }
+
           return 0;
         }
 
@@ -230,9 +187,11 @@ rlc_am_get_control_pdu_infos(
     } else {
       *total_size_pP = *total_size_pP - 2;
     }
+
     if (*total_size_pP != 0) {
       LOG_E(RLC, "[RLC_AM_GET_CONTROL_PDU_INFOS][SECOND]header_pP->b1=%d,header_pP->b2=%d\n",header_pP->b1,header_pP->b2);
     }
+
     return 0;
   } else {
     return -1;
@@ -241,9 +200,8 @@ rlc_am_get_control_pdu_infos(
 //-----------------------------------------------------------------------------
 void
 rlc_am_display_control_pdu_infos(
-  const rlc_am_control_pdu_info_t* const pdu_info_pP
-)
-{
+  const rlc_am_control_pdu_info_t *const pdu_info_pP
+) {
   int num_nack;
 
   if (!pdu_info_pP->d_c) {
@@ -267,25 +225,23 @@ rlc_am_display_control_pdu_infos(
 //-----------------------------------------------------------------------------
 void
 rlc_am_receive_process_control_pdu(
-  const protocol_ctxt_t* const  ctxt_pP,
+  const protocol_ctxt_t *const  ctxt_pP,
   rlc_am_entity_t *const rlc_pP,
-  mem_block_t* const tb_pP,
-  uint8_t** first_byte_ppP,
-  sdu_size_t * const tb_size_in_bytes_pP)
-{
-  rlc_am_pdu_sn_10_t *rlc_am_pdu_sn_10_p = (rlc_am_pdu_sn_10_t*)*first_byte_ppP;
+  mem_block_t *const tb_pP,
+  uint8_t **first_byte_ppP,
+  sdu_size_t *const tb_size_in_bytes_pP) {
+  rlc_am_pdu_sn_10_t *rlc_am_pdu_sn_10_p = (rlc_am_pdu_sn_10_t *)*first_byte_ppP;
   sdu_size_t          initial_pdu_size   = *tb_size_in_bytes_pP;
   rlc_sn_t        ack_sn    = RLC_AM_NEXT_SN(rlc_pP->vt_a);
   rlc_sn_t        sn_cursor = rlc_pP->vt_a;
-  rlc_sn_t		vt_a_new  = rlc_pP->vt_a;
-  rlc_sn_t		sn_data_cnf;
+  rlc_sn_t    vt_a_new  = rlc_pP->vt_a;
+  rlc_sn_t    sn_data_cnf;
   rlc_sn_t        nack_sn,prev_nack_sn;
-  sdu_size_t		data_cnf_so_stop = 0x7FFF;
+  sdu_size_t    data_cnf_so_stop = 0x7FFF;
   unsigned int nack_index;
   boolean_t status = TRUE;
 
   if (rlc_am_get_control_pdu_infos(rlc_am_pdu_sn_10_p, tb_size_in_bytes_pP, &rlc_pP->control_pdu_info) >= 0) {
-
     rlc_am_tx_buffer_display(ctxt_pP, rlc_pP, " TX BUFFER BEFORE PROCESS OF STATUS PDU");
     LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT" RX CONTROL PDU VT(A) %04d VT(S) %04d POLL_SN %04d ACK_SN %04d\n",
           PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
@@ -294,7 +250,6 @@ rlc_am_receive_process_control_pdu(
           rlc_pP->poll_sn,
           rlc_pP->control_pdu_info.ack_sn);
     rlc_am_display_control_pdu_infos(&rlc_pP->control_pdu_info);
-
     ack_sn    = rlc_pP->control_pdu_info.ack_sn;
     // 5.2.1 Retransmission
     //
@@ -326,8 +281,7 @@ rlc_am_receive_process_control_pdu(
 
     /* Note : ackSn can be equal to current vtA only in case the status pdu contains a list of nack_sn with same value = vtA with SOStart/SOEnd */
     /* and meaning the report is not complete due to not enough ressources to fill all SOStart/SOEnd of this NACK_SN */
-    if (RLC_AM_DIFF_SN(rlc_pP->vt_s,rlc_pP->vt_a) >= RLC_AM_DIFF_SN(ack_sn,rlc_pP->vt_a))
-    {
+    if (RLC_AM_DIFF_SN(rlc_pP->vt_s,rlc_pP->vt_a) >= RLC_AM_DIFF_SN(ack_sn,rlc_pP->vt_a)) {
       if (rlc_pP->control_pdu_info.num_nack == 0) {
         while (sn_cursor != ack_sn) {
           rlc_am_ack_pdu(ctxt_pP, rlc_pP, sn_cursor,TRUE);
@@ -342,63 +296,56 @@ rlc_am_receive_process_control_pdu(
         prev_nack_sn = 0x3FFF;
 
         while (sn_cursor != nack_sn) {
-            rlc_am_ack_pdu(ctxt_pP, rlc_pP, sn_cursor,TRUE);
-            sn_cursor = RLC_AM_NEXT_SN(sn_cursor);
+          rlc_am_ack_pdu(ctxt_pP, rlc_pP, sn_cursor,TRUE);
+          sn_cursor = RLC_AM_NEXT_SN(sn_cursor);
         }
 
         vt_a_new = nack_sn;
-
         // catch DataCfn
         rlc_am_tx_data_pdu_management_t *tx_data_pdu_buffer_p = &rlc_pP->tx_data_pdu_buffer[nack_sn % RLC_AM_WINDOW_SIZE];
+
         if (tx_data_pdu_buffer_p->retx_payload_size == tx_data_pdu_buffer_p->payload_size) {
-        	sn_data_cnf   = RLC_AM_PREV_SN(nack_sn);
-        }
-        else if (tx_data_pdu_buffer_p->nack_so_start != 0) {
-        	sn_data_cnf       = nack_sn;
-        	data_cnf_so_stop    = tx_data_pdu_buffer_p->nack_so_start - 1;
-        }
-        else {
-        	sn_data_cnf       = RLC_AM_PREV_SN(nack_sn);
+          sn_data_cnf   = RLC_AM_PREV_SN(nack_sn);
+        } else if (tx_data_pdu_buffer_p->nack_so_start != 0) {
+          sn_data_cnf       = nack_sn;
+          data_cnf_so_stop    = tx_data_pdu_buffer_p->nack_so_start - 1;
+        } else {
+          sn_data_cnf       = RLC_AM_PREV_SN(nack_sn);
         }
 
-
         while ((sn_cursor != ack_sn) && (status)) {
           if (sn_cursor != nack_sn) {
             rlc_am_ack_pdu(ctxt_pP,
                            rlc_pP,
                            sn_cursor,
-						   FALSE);
+                           FALSE);
           } else {
-        	status = rlc_am_nack_pdu (ctxt_pP,
-                             rlc_pP,
-							 nack_sn,
-							 prev_nack_sn,
-                             rlc_pP->control_pdu_info.nack_list[nack_index].so_start,
-                             rlc_pP->control_pdu_info.nack_list[nack_index].so_end);
-
+            status = rlc_am_nack_pdu (ctxt_pP,
+                                      rlc_pP,
+                                      nack_sn,
+                                      prev_nack_sn,
+                                      rlc_pP->control_pdu_info.nack_list[nack_index].so_start,
+                                      rlc_pP->control_pdu_info.nack_list[nack_index].so_end);
             nack_index = nack_index + 1;
             prev_nack_sn = nack_sn;
 
             if (nack_index < rlc_pP->control_pdu_info.num_nack) {
-               nack_sn = rlc_pP->control_pdu_info.nack_list[nack_index].nack_sn;
-            }
-            else if (nack_sn != ack_sn) {
-            	/* general case*/
-            	nack_sn = ack_sn;
-            }
-            else {
-            	/*specific case when the sender did not have enough TBS to fill all SOStart SOEnd for this NACK_SN */
-            	break;
+              nack_sn = rlc_pP->control_pdu_info.nack_list[nack_index].nack_sn;
+            } else if (nack_sn != ack_sn) {
+              /* general case*/
+              nack_sn = ack_sn;
+            } else {
+              /*specific case when the sender did not have enough TBS to fill all SOStart SOEnd for this NACK_SN */
+              break;
             }
           }
+
           if (prev_nack_sn != nack_sn) {
-        	  /* do not increment sn_cursor in case of several informations for the same nack_sn */
-              sn_cursor = (sn_cursor + 1)  & RLC_AM_SN_MASK;
+            /* do not increment sn_cursor in case of several informations for the same nack_sn */
+            sn_cursor = (sn_cursor + 1)  & RLC_AM_SN_MASK;
           }
         }
       }
-
-
     } else {
       LOG_E(RLC, PROTOCOL_RLC_AM_CTXT_FMT" WARNING CONTROL PDU ACK SN %d OUT OF WINDOW vtA=%d vtS=%d\n",
             PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),ack_sn,rlc_pP->vt_a,rlc_pP->vt_s);
@@ -413,61 +360,57 @@ rlc_am_receive_process_control_pdu(
   }
 
   if (status) {
-      /* Check for Stopping TpollReTx */
-      if ((rlc_pP->poll_sn != RLC_SN_UNDEFINED) &&
-          (RLC_AM_DIFF_SN(ack_sn,rlc_pP->vt_a) > RLC_AM_DIFF_SN(rlc_pP->poll_sn,rlc_pP->vt_a))) {
-        rlc_am_stop_and_reset_timer_poll_retransmit(ctxt_pP, rlc_pP);
-        rlc_pP->poll_sn = RLC_SN_UNDEFINED;
-      }
-
-      //TODO : this part does not cover all cases of Data Cnf and move it at the end of Status PDU processing
-      sn_cursor = rlc_pP->vt_a;
-
-      // Fix Issue 238 : check sn_data_cnf has been transmitted
-      if ((rlc_pP->tx_data_pdu_buffer[sn_data_cnf % RLC_AM_WINDOW_SIZE].flags.transmitted) &&
-    		  (rlc_pP->tx_data_pdu_buffer[sn_data_cnf % RLC_AM_WINDOW_SIZE].sn == sn_data_cnf)) {
-    	  /* Handle all acked PDU up to and excluding sn_data_cnf */
-          while (sn_cursor != sn_data_cnf) {
-        	  rlc_am_pdu_sdu_data_cnf(ctxt_pP,rlc_pP,sn_cursor);
-        	  sn_cursor = RLC_AM_NEXT_SN(sn_cursor);
-          }
+    /* Check for Stopping TpollReTx */
+    if ((rlc_pP->poll_sn != RLC_SN_UNDEFINED) &&
+        (RLC_AM_DIFF_SN(ack_sn,rlc_pP->vt_a) > RLC_AM_DIFF_SN(rlc_pP->poll_sn,rlc_pP->vt_a))) {
+      rlc_am_stop_and_reset_timer_poll_retransmit(ctxt_pP, rlc_pP);
+      rlc_pP->poll_sn = RLC_SN_UNDEFINED;
+    }
 
-          // Handle last SN. TO DO : case of PDU partially ACKED with SDU to be data conf
-          if (data_cnf_so_stop == 0x7FFF) {
-        	  rlc_am_pdu_sdu_data_cnf(ctxt_pP,rlc_pP,sn_data_cnf);
-          }
+    //TODO : this part does not cover all cases of Data Cnf and move it at the end of Status PDU processing
+    sn_cursor = rlc_pP->vt_a;
 
-          LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT" RECEIVE STATUS PDU ACK_SN=%d NewvtA=%d OldvtA=%d SnDataCnf=%d DataCnfSOStop=%d vtS=%d\n",
-                      PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),ack_sn,vt_a_new,rlc_pP->vt_a,sn_data_cnf,data_cnf_so_stop,rlc_pP->vt_s);
+    // Fix Issue 238 : check sn_data_cnf has been transmitted
+    if ((rlc_pP->tx_data_pdu_buffer[sn_data_cnf % RLC_AM_WINDOW_SIZE].flags.transmitted) &&
+        (rlc_pP->tx_data_pdu_buffer[sn_data_cnf % RLC_AM_WINDOW_SIZE].sn == sn_data_cnf)) {
+      /* Handle all acked PDU up to and excluding sn_data_cnf */
+      while (sn_cursor != sn_data_cnf) {
+        rlc_am_pdu_sdu_data_cnf(ctxt_pP,rlc_pP,sn_cursor);
+        sn_cursor = RLC_AM_NEXT_SN(sn_cursor);
       }
-      else {
-          LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT" RECEIVE STATUS PDU WITH NO SDU CNF ACK_SN=%d NewvtA=%d OldvtA=%d vtS=%d\n",
-                      PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),ack_sn,vt_a_new,rlc_pP->vt_a,rlc_pP->vt_s);
+
+      // Handle last SN. TO DO : case of PDU partially ACKED with SDU to be data conf
+      if (data_cnf_so_stop == 0x7FFF) {
+        rlc_am_pdu_sdu_data_cnf(ctxt_pP,rlc_pP,sn_data_cnf);
       }
 
-      /* Update vtA and vtMS */
-      rlc_pP->vt_a = vt_a_new;
-      rlc_pP->vt_ms = (rlc_pP->vt_a + RLC_AM_WINDOW_SIZE) & RLC_AM_SN_MASK;
-  }
+      LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT" RECEIVE STATUS PDU ACK_SN=%d NewvtA=%d OldvtA=%d SnDataCnf=%d DataCnfSOStop=%d vtS=%d\n",
+            PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),ack_sn,vt_a_new,rlc_pP->vt_a,sn_data_cnf,data_cnf_so_stop,rlc_pP->vt_s);
+    } else {
+      LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT" RECEIVE STATUS PDU WITH NO SDU CNF ACK_SN=%d NewvtA=%d OldvtA=%d vtS=%d\n",
+            PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),ack_sn,vt_a_new,rlc_pP->vt_a,rlc_pP->vt_s);
+    }
 
-  *first_byte_ppP = (uint8_t*)((uint64_t)*first_byte_ppP + initial_pdu_size - *tb_size_in_bytes_pP);
+    /* Update vtA and vtMS */
+    rlc_pP->vt_a = vt_a_new;
+    rlc_pP->vt_ms = (rlc_pP->vt_a + RLC_AM_WINDOW_SIZE) & RLC_AM_SN_MASK;
+  }
 
+  *first_byte_ppP = (uint8_t *)((uint64_t)*first_byte_ppP + initial_pdu_size - *tb_size_in_bytes_pP);
   free_mem_block(tb_pP, __func__);
   rlc_am_tx_buffer_display(ctxt_pP, rlc_pP, NULL);
 }
 //-----------------------------------------------------------------------------
 int
 rlc_am_write_status_pdu(
-  const protocol_ctxt_t* const     ctxt_pP,
+  const protocol_ctxt_t *const     ctxt_pP,
   rlc_am_entity_t *const           rlc_pP,
-  rlc_am_pdu_sn_10_t* const        rlc_am_pdu_sn_10_pP,
-  rlc_am_control_pdu_info_t* const pdu_info_pP)
-{
+  rlc_am_pdu_sn_10_t *const        rlc_am_pdu_sn_10_pP,
+  rlc_am_control_pdu_info_t *const pdu_info_pP) {
   unsigned int bit_pos       = 4; // range from 0 (MSB/left) to 7 (LSB/right)
-  uint8_t*        byte_pos_p    = &rlc_am_pdu_sn_10_pP->b1;
+  uint8_t        *byte_pos_p    = &rlc_am_pdu_sn_10_pP->b1;
   unsigned int index         = 0;
   unsigned int num_bytes     = 0;
-
   rlc_am_write16_bit_field(&byte_pos_p, &bit_pos, 10, pdu_info_pP->ack_sn);
 
   if (pdu_info_pP->num_nack > 0) {
@@ -495,20 +438,17 @@ rlc_am_write_status_pdu(
     num_bytes += 1;
   }
 
-#if TRACE_RLC_AM_STATUS_CREATION
   LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT" WROTE STATUS PDU %d BYTES\n",
         PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
         num_bytes);
-#endif
   return num_bytes;
 }
 //-----------------------------------------------------------------------------
 void
 rlc_am_send_status_pdu(
-  const protocol_ctxt_t* const  ctxt_pP,
+  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;
@@ -530,10 +470,9 @@ rlc_am_send_status_pdu(
   //             - 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;
   // minimum header size in bits to be transmitted: D/C + CPT + ACK_SN + E1
-  signed int                    nb_bits_transmitted	  = RLC_AM_PDU_D_C_BITS + RLC_AM_STATUS_PDU_CPT_LENGTH + RLC_AM_SN_BITS + RLC_AM_PDU_E_BITS;
+  signed int                    nb_bits_transmitted   = RLC_AM_PDU_D_C_BITS + RLC_AM_STATUS_PDU_CPT_LENGTH + RLC_AM_SN_BITS + RLC_AM_PDU_E_BITS;
   rlc_am_control_pdu_info_t     control_pdu_info;
   rlc_am_pdu_info_t            *pdu_info_cursor_p     = NULL;
   rlc_sn_t                      sn_cursor             = 0;
@@ -543,325 +482,278 @@ rlc_am_send_status_pdu(
   int                           waited_so             = 0;
   mem_block_t                  *tb_p                  = NULL;
   sdu_size_t                    pdu_size              = 0;
-  boolean_t						status_report_completed	= false;
-  boolean_t						segment_loop_end	  = false;
-
+  boolean_t           status_report_completed = false;
+  boolean_t           segment_loop_end    = false;
   memset(&control_pdu_info, 0, sizeof(rlc_am_control_pdu_info_t));
-
-#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
 
   /* Handle no NACK first */
   if (rlc_pP->vr_r == rlc_pP->vr_ms) {
-
-	  control_pdu_info.ack_sn = rlc_pP->vr_ms;
-	  status_report_completed = true;
-#if TRACE_RLC_AM_STATUS_CREATION
-          LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[SEND-STATUS] LINE %d ALL ACK WITH ACK_SN %04d\n",
-                PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                __LINE__,
-				rlc_pP->vr_ms);
-#endif
-  }
-  else if ((cursor_p != NULL) && ((nb_bits_transmitted + RLC_AM_SN_BITS + (RLC_AM_PDU_E_BITS << 1)) <= nb_bits_to_transmit)) {
-
-    pdu_info_cursor_p       = &((rlc_am_rx_pdu_management_t*)(cursor_p->data))->pdu_info;
+    control_pdu_info.ack_sn = rlc_pP->vr_ms;
+    status_report_completed = true;
+    LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[SEND-STATUS] LINE %d ALL ACK WITH ACK_SN %04d\n",
+          PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
+          __LINE__,
+          rlc_pP->vr_ms);
+  } else if ((cursor_p != NULL) && ((nb_bits_transmitted + RLC_AM_SN_BITS + (RLC_AM_PDU_E_BITS << 1)) <= nb_bits_to_transmit)) {
+    pdu_info_cursor_p       = &((rlc_am_rx_pdu_management_t *)(cursor_p->data))->pdu_info;
     sn_cursor             = pdu_info_cursor_p->sn;
-
     /* Set E1 bit for the presence of first NACK_SN/E1/E2 */
     control_pdu_info.e1 = 1;
 
     // 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 ((!status_report_completed) && (RLC_AM_DIFF_SN(sn_nack,rlc_pP->vr_r) < RLC_AM_DIFF_SN(rlc_pP->vr_ms,rlc_pP->vr_r))
-    		&& (cursor_p != NULL) && (nb_bits_transmitted <= nb_bits_to_transmit)) {
-
-      pdu_info_cursor_p       = &((rlc_am_rx_pdu_management_t*)(cursor_p->data))->pdu_info;
+           && (cursor_p != NULL) && (nb_bits_transmitted <= nb_bits_to_transmit)) {
+      pdu_info_cursor_p       = &((rlc_am_rx_pdu_management_t *)(cursor_p->data))->pdu_info;
       sn_cursor             = pdu_info_cursor_p->sn;
-      all_segments_received = ((rlc_am_rx_pdu_management_t*)(cursor_p->data))->all_segments_received;
+      all_segments_received = ((rlc_am_rx_pdu_management_t *)(cursor_p->data))->all_segments_received;
 
       /* First fill NACK_SN with each missing PDU between current sn_nack and sn_cursor */
       while ((sn_nack != sn_cursor) && (RLC_AM_DIFF_SN(sn_nack,rlc_pP->vr_r) < RLC_AM_DIFF_SN(rlc_pP->vr_ms,rlc_pP->vr_r))) {
-    	  if (nb_bits_transmitted + RLC_AM_SN_BITS + (RLC_AM_PDU_E_BITS << 1) <= nb_bits_to_transmit) {
-    		  /* Fill NACK_SN infos */
-              control_pdu_info.nack_list[control_pdu_info.num_nack].nack_sn   = sn_nack;
-              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    = RLC_AM_STATUS_PDU_SO_END_ALL_BYTES;
-              control_pdu_info.nack_list[control_pdu_info.num_nack].e2        = 0;
-              /* Set E1 for next NACK_SN. The last one will be cleared */
-              control_pdu_info.nack_list[control_pdu_info.num_nack].e1  = 1;
-              control_pdu_info.num_nack += 1;
-              nb_bits_transmitted += (RLC_AM_SN_BITS + (RLC_AM_PDU_E_BITS << 1));
-#if TRACE_RLC_AM_STATUS_CREATION
+        if (nb_bits_transmitted + RLC_AM_SN_BITS + (RLC_AM_PDU_E_BITS << 1) <= nb_bits_to_transmit) {
+          /* Fill NACK_SN infos */
+          control_pdu_info.nack_list[control_pdu_info.num_nack].nack_sn   = sn_nack;
+          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    = RLC_AM_STATUS_PDU_SO_END_ALL_BYTES;
+          control_pdu_info.nack_list[control_pdu_info.num_nack].e2        = 0;
+          /* Set E1 for next NACK_SN. The last one will be cleared */
+          control_pdu_info.nack_list[control_pdu_info.num_nack].e1  = 1;
+          control_pdu_info.num_nack += 1;
+          nb_bits_transmitted += (RLC_AM_SN_BITS + (RLC_AM_PDU_E_BITS << 1));
           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__,
-				sn_nack);
-#endif
-    		  sn_nack = RLC_AM_NEXT_SN(sn_nack);
-    	  }
-    	  else {
-    		  /* Not enough UL TBS*/
-    		  /* latest value of sn_nack shall be used as ACK_SN */
-    		  control_pdu_info.ack_sn = sn_nack;
-    		  status_report_completed = true;
-#if TRACE_RLC_AM_STATUS_CREATION
+                sn_nack);
+          sn_nack = RLC_AM_NEXT_SN(sn_nack);
+        } else {
+          /* Not enough UL TBS*/
+          /* latest value of sn_nack shall be used as ACK_SN */
+          control_pdu_info.ack_sn = sn_nack;
+          status_report_completed = true;
           LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[SEND-STATUS] LINE %d NOT ENOUGH TBS STOP WITH ACK_SN %04d\n",
                 PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
                 __LINE__,
-				sn_nack);
-#endif
-    		  break;
-    	  }
+                sn_nack);
+          break;
+        }
       }
 
       if (sn_nack == rlc_pP->vr_ms) {
-    	  break;
+        break;
       }
 
       /* Now process all Segments of sn_cursor if PDU not fully received */
       if ((!status_report_completed) && (all_segments_received == 0) && (sn_cursor != rlc_pP->vr_ms)) {
-    	  //AssertFatal (sn_nack == sn_cursor, "RLC AM Tx Status PDU Data sn_nack=%d and sn_cursor=%d should be equal LcId=%d\n",sn_nack,sn_cursor, rlc_pP->channel_id);
-      	if(sn_nack != sn_cursor){
-      		LOG_E(RLC, "RLC AM Tx Status PDU Data sn_nack=%d and sn_cursor=%d should be equal LcId=%d\n",sn_nack,sn_cursor, rlc_pP->channel_id);
-      	}
-
-    	  /* First ensure there is enough TBS for at least 1 SOStart/SOEnd, else break */
+        //AssertFatal (sn_nack == sn_cursor, "RLC AM Tx Status PDU Data sn_nack=%d and sn_cursor=%d should be equal LcId=%d\n",sn_nack,sn_cursor, rlc_pP->channel_id);
+        if(sn_nack != sn_cursor) {
+          LOG_E(RLC, "RLC AM Tx Status PDU Data sn_nack=%d and sn_cursor=%d should be equal LcId=%d\n",sn_nack,sn_cursor, rlc_pP->channel_id);
+        }
+        /* First ensure there is enough TBS for at least 1 SOStart/SOEnd, else break */
         else if ((nb_bits_transmitted + RLC_AM_SN_BITS + (RLC_AM_PDU_E_BITS << 1) + (RLC_AM_STATUS_PDU_SO_LENGTH << 1)) <= nb_bits_to_transmit) {
-    		  /* Init loop flags */
+          /* Init loop flags */
+          /* Check lsf */
+          segment_loop_end = (pdu_info_cursor_p->lsf == 1);
+
+          /* Init first SO Start according to first segment */
+          if (pdu_info_cursor_p->so) {
+            /* Fill the first SO */
+            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  = 0;
+            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].e2        = 1;
+            /* Set E1 for next NACK_SN. The last one will be cleared */
+            control_pdu_info.nack_list[control_pdu_info.num_nack].e1  = 1;
+            control_pdu_info.num_nack += 1;
+            nb_bits_transmitted += (RLC_AM_SN_BITS + (RLC_AM_PDU_E_BITS << 1) + (RLC_AM_STATUS_PDU_SO_LENGTH << 1));
+            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__,
+                  sn_cursor,
+                  0,
+                  pdu_info_cursor_p->so - 1);
+            waited_so = pdu_info_cursor_p->so + pdu_info_cursor_p->payload_size;
+          } else {
+            waited_so = pdu_info_cursor_p->payload_size;
+          }
+
+          /* Go to next segment */
+          cursor_p = cursor_p->next;
+
+          if (cursor_p != NULL) {
+            pdu_info_cursor_p     = &((rlc_am_rx_pdu_management_t *)(cursor_p->data))->pdu_info;
+          }
+
+          /* Find the first discontinuity and then fill SOStart/SOEnd */
+          while (!segment_loop_end) {
+            if ((cursor_p != NULL) && (pdu_info_cursor_p->sn == sn_cursor)) {
+              /* PDU segment is for the same SN*/
               /* Check lsf */
-    		  segment_loop_end = (pdu_info_cursor_p->lsf == 1);
+              segment_loop_end = (pdu_info_cursor_p->lsf == 1);
 
-    		  /* Init first SO Start according to first segment */
-    		  if (pdu_info_cursor_p->so) {
-    			  /* Fill the first SO */
+              if (waited_so < pdu_info_cursor_p->so) {
+                /* SO is greater than previous received portion : gap identified to fill */
+                if ((nb_bits_transmitted + RLC_AM_SN_BITS + (RLC_AM_PDU_E_BITS << 1) + (RLC_AM_STATUS_PDU_SO_LENGTH << 1)) <= nb_bits_to_transmit) {
                   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  = 0;
+                  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].e2        = 1;
                   /* Set E1 for next NACK_SN. The last one will be cleared */
                   control_pdu_info.nack_list[control_pdu_info.num_nack].e1  = 1;
                   control_pdu_info.num_nack += 1;
                   nb_bits_transmitted += (RLC_AM_SN_BITS + (RLC_AM_PDU_E_BITS << 1) + (RLC_AM_STATUS_PDU_SO_LENGTH << 1));
-#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__,
-				  sn_cursor,
-                  0,
-				  pdu_info_cursor_p->so - 1);
-#endif
-                  waited_so = pdu_info_cursor_p->so + pdu_info_cursor_p->payload_size;
-    		  }
-    		  else {
-        		  waited_so = pdu_info_cursor_p->payload_size;
-    		  }
+                  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__,
+                        sn_cursor,
+                        waited_so,
+                        pdu_info_cursor_p->so);
+                } else {
+                  /* Not enough resources to set a SOStart/SEnd, then set ACK_SN to current NACK_SN and stop Status PDU build */
+                  control_pdu_info.ack_sn = sn_cursor;
+                  status_report_completed = true;
+                  segment_loop_end = true;
+                  break;
+                }
+              } else {
+                /* contiguous segment: only update waited_so */
+                /* Assuming so and payload_size updated according to duplication removal done at reception ... */
+                waited_so += pdu_info_cursor_p->payload_size;
+              }
 
-              /* Go to next segment */
+              /* Go to next received PDU or PDU Segment */
               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) {
+                pdu_info_cursor_p     = &((rlc_am_rx_pdu_management_t *)(cursor_p->data))->pdu_info;
+              }
+            } //end if (cursor_p != NULL) && (pdu_info_cursor_p->sn == sn_cursor)
+            else {
+              /* Previous PDU segment was the last one and did not have lsf indication : fill the latest gap */
+              if ((nb_bits_transmitted + RLC_AM_SN_BITS + (RLC_AM_PDU_E_BITS << 1) + (RLC_AM_STATUS_PDU_SO_LENGTH << 1)) <= nb_bits_to_transmit) {
+                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    = RLC_AM_STATUS_PDU_SO_END_ALL_BYTES;
+                control_pdu_info.nack_list[control_pdu_info.num_nack].e2        = 1;
+                /* Set E1 for next NACK_SN. The last one will be cleared */
+                control_pdu_info.nack_list[control_pdu_info.num_nack].e1  = 1;
+                control_pdu_info.num_nack += 1;
+                nb_bits_transmitted += (RLC_AM_SN_BITS + (RLC_AM_PDU_E_BITS << 1) + (RLC_AM_STATUS_PDU_SO_LENGTH << 1));
+                LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[SEND-STATUS] LINE %d PREPARE SENDING LAST NACK %04d SO START %05d SO END %05d\n",
+                      PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
+                      __LINE__,
+                      sn_cursor,
+                      waited_so,
+                      RLC_AM_STATUS_PDU_SO_END_ALL_BYTES);
+              } else {
+                /* Not enough resources to set a SOStart/SEnd, then set ACK_SN to current NACK_SN and stop Status PDU build */
+                control_pdu_info.ack_sn = sn_cursor;
+                status_report_completed = true;
               }
 
-    		  /* Find the first discontinuity and then fill SOStart/SOEnd */
-    		  while (!segment_loop_end) {
-    			  if ((cursor_p != NULL) && (pdu_info_cursor_p->sn == sn_cursor)) {
-
-					  /* PDU segment is for the same SN*/
-					  /* Check lsf */
-					  segment_loop_end = (pdu_info_cursor_p->lsf == 1);
-
-					  if (waited_so < pdu_info_cursor_p->so) {
-						  /* SO is greater than previous received portion : gap identified to fill */
-						  if ((nb_bits_transmitted + RLC_AM_SN_BITS + (RLC_AM_PDU_E_BITS << 1) + (RLC_AM_STATUS_PDU_SO_LENGTH << 1)) <= nb_bits_to_transmit) {
-							  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].e2        = 1;
-							  /* Set E1 for next NACK_SN. The last one will be cleared */
-							  control_pdu_info.nack_list[control_pdu_info.num_nack].e1  = 1;
-							  control_pdu_info.num_nack += 1;
-							  nb_bits_transmitted += (RLC_AM_SN_BITS + (RLC_AM_PDU_E_BITS << 1) + (RLC_AM_STATUS_PDU_SO_LENGTH << 1));
-#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__,
-			  sn_cursor,
-			  waited_so,
-			  pdu_info_cursor_p->so);
-#endif
-						  }
-						  else {
-							  /* Not enough resources to set a SOStart/SEnd, then set ACK_SN to current NACK_SN and stop Status PDU build */
-							  control_pdu_info.ack_sn = sn_cursor;
-							  status_report_completed = true;
-							  segment_loop_end = true;
-							  break;
-						  }
-					  }
-					  else {
-						  /* contiguous segment: only update waited_so */
-						  /* Assuming so and payload_size updated according to duplication removal done at reception ... */
-						  waited_so += pdu_info_cursor_p->payload_size;
-					  }
-
-					  /* Go to next received PDU or PDU Segment */
-					  cursor_p = cursor_p->next;
-	                  if (cursor_p != NULL)
-	                  {
-		                  pdu_info_cursor_p     = &((rlc_am_rx_pdu_management_t*)(cursor_p->data))->pdu_info;
-	                  }
-
-    			  } //end if (cursor_p != NULL) && (pdu_info_cursor_p->sn == sn_cursor)
-    			  else {
-    				  /* Previous PDU segment was the last one and did not have lsf indication : fill the latest gap */
-    		    	  if ((nb_bits_transmitted + RLC_AM_SN_BITS + (RLC_AM_PDU_E_BITS << 1) + (RLC_AM_STATUS_PDU_SO_LENGTH << 1)) <= nb_bits_to_transmit) {
-    	                      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    = RLC_AM_STATUS_PDU_SO_END_ALL_BYTES;
-    	                      control_pdu_info.nack_list[control_pdu_info.num_nack].e2        = 1;
-    	                      /* Set E1 for next NACK_SN. The last one will be cleared */
-    	                      control_pdu_info.nack_list[control_pdu_info.num_nack].e1  = 1;
-    	                      control_pdu_info.num_nack += 1;
-    	                      nb_bits_transmitted += (RLC_AM_SN_BITS + (RLC_AM_PDU_E_BITS << 1) + (RLC_AM_STATUS_PDU_SO_LENGTH << 1));
-#if TRACE_RLC_AM_STATUS_CREATION
-            LOG_D(RLC, PROTOCOL_RLC_AM_CTXT_FMT"[SEND-STATUS] LINE %d PREPARE SENDING LAST NACK %04d SO START %05d SO END %05d\n",
-                  PROTOCOL_RLC_AM_CTXT_ARGS(ctxt_pP,rlc_pP),
-                  __LINE__,
-				  sn_cursor,
-				  waited_so,
-				  RLC_AM_STATUS_PDU_SO_END_ALL_BYTES);
-#endif
-     		    	  }
-    		    	  else {
-    		    		  /* Not enough resources to set a SOStart/SEnd, then set ACK_SN to current NACK_SN and stop Status PDU build */
-    		    		  control_pdu_info.ack_sn = sn_cursor;
-    		    		  status_report_completed = true;
-    		    	  }
-
-    		    	  segment_loop_end = true;
-    			  }
-    		  } //end  while (!segment_loop_end)
-    	  } // end if enough resource for transmitting at least one SOStart/SOEnd
-    	  else {
-    		  /* Not enough UL TBS to set at least one SOStart/SOEnd */
-    		  /* latest value of sn_nack shall be used as ACK_SN */
-    		  control_pdu_info.ack_sn = sn_nack;
-    		  status_report_completed = true;
-    	  }
+              segment_loop_end = true;
+            }
+          } //end  while (!segment_loop_end)
+        } // end if enough resource for transmitting at least one SOStart/SOEnd
+        else {
+          /* Not enough UL TBS to set at least one SOStart/SOEnd */
+          /* latest value of sn_nack shall be used as ACK_SN */
+          control_pdu_info.ack_sn = sn_nack;
+          status_report_completed = true;
+        }
       } // end while on all PDU segments of sn_cursor
       else {
-    	  /* Go to next received PDU or PDU segment with different SN */
-    	  do {
-    		  	  cursor_p = cursor_p->next;
-    	  	  } while ((cursor_p != NULL) && (((rlc_am_rx_pdu_management_t*)(cursor_p->data))->pdu_info.sn == sn_cursor));
+        /* Go to next received PDU or PDU segment with different SN */
+        do {
+          cursor_p = cursor_p->next;
+        } while ((cursor_p != NULL) && (((rlc_am_rx_pdu_management_t *)(cursor_p->data))->pdu_info.sn == sn_cursor));
       }
 
       /* Increment sn_nack except if sn_cursor = vrMS and if current SN was not fully received */
       if (RLC_AM_DIFF_SN(sn_cursor,rlc_pP->vr_r) < RLC_AM_DIFF_SN(rlc_pP->vr_ms,rlc_pP->vr_r)) {
-    	  sn_nack = RLC_AM_NEXT_SN(sn_cursor);
-      }
-      else {
-    	  sn_nack = rlc_pP->vr_ms;
+        sn_nack = RLC_AM_NEXT_SN(sn_cursor);
+      } else {
+        sn_nack = rlc_pP->vr_ms;
       }
-
-
     } // End main while NACK_SN
 
     /* Clear E1 of last nack_sn entry */
-//	AssertFatal ((control_pdu_info.num_nack) || (all_segments_received == 0), "RLC AM Tx Status PDU Data Error no NACK_SN vrR=%d vrMS=%d lastSN_NACK=%d Completed=%d NbBytesAvailable=%d LcId=%d\n",
-//	        rlc_pP->vr_r,rlc_pP->vr_ms,sn_nack,status_report_completed,(nb_bits_to_transmit >> 3),rlc_pP->channel_id);
-  	if (!((control_pdu_info.num_nack) || (all_segments_received == 0))){
-  		LOG_E(RLC, "RLC AM Tx Status PDU Data Error no NACK_SN vrR=%d vrMS=%d lastSN_NACK=%d Completed=%d NbBytesAvailable=%d LcId=%d\n",
-		        rlc_pP->vr_r,rlc_pP->vr_ms,sn_nack,status_report_completed,(nb_bits_to_transmit >> 3),rlc_pP->channel_id);
-  		return;
-  	}
-  	
-	if (control_pdu_info.num_nack) {
-	    control_pdu_info.nack_list[control_pdu_info.num_nack - 1].e1  = 0;
-	}
+    //  AssertFatal ((control_pdu_info.num_nack) || (all_segments_received == 0), "RLC AM Tx Status PDU Data Error no NACK_SN vrR=%d vrMS=%d lastSN_NACK=%d Completed=%d NbBytesAvailable=%d LcId=%d\n",
+    //          rlc_pP->vr_r,rlc_pP->vr_ms,sn_nack,status_report_completed,(nb_bits_to_transmit >> 3),rlc_pP->channel_id);
+    if (!((control_pdu_info.num_nack) || (all_segments_received == 0))) {
+      LOG_E(RLC, "RLC AM Tx Status PDU Data Error no NACK_SN vrR=%d vrMS=%d lastSN_NACK=%d Completed=%d NbBytesAvailable=%d LcId=%d\n",
+            rlc_pP->vr_r,rlc_pP->vr_ms,sn_nack,status_report_completed,(nb_bits_to_transmit >> 3),rlc_pP->channel_id);
+      return;
+    }
 
+    if (control_pdu_info.num_nack) {
+      control_pdu_info.nack_list[control_pdu_info.num_nack - 1].e1  = 0;
+    }
 
     /* Set ACK_SN unless it was set before */
-    if (!status_report_completed){
-
-    	control_pdu_info.ack_sn = sn_nack;
+    if (!status_report_completed) {
+      control_pdu_info.ack_sn = sn_nack;
     }
-
   } else {
-	/* reception buffer empty or not enough TBS for filling at least 1 NACK_SN + E1 + E2 */
+    /* reception buffer empty or not enough TBS for filling at least 1 NACK_SN + E1 + E2 */
     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
   }
 
-
   //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 = (nb_bits_transmitted + 7) >> 3;
-//  AssertFatal (pdu_size <= rlc_pP->nb_bytes_requested_by_mac, "RLC AM Tx Status PDU Data size=%d bigger than remaining TBS=%d nb_bits_transmitted=%d LcId=%d\n",
-//		  pdu_size,rlc_pP->nb_bytes_requested_by_mac,nb_bits_transmitted, rlc_pP->channel_id);
-	if(pdu_size > rlc_pP->nb_bytes_requested_by_mac){
-		LOG_E(RLC, "RLC AM Tx Status PDU Data size=%d bigger than remaining TBS=%d nb_bits_transmitted=%d LcId=%d\n",
-		  pdu_size,rlc_pP->nb_bytes_requested_by_mac,nb_bits_transmitted, rlc_pP->channel_id);
-		return;
-	}
 
+  //  AssertFatal (pdu_size <= rlc_pP->nb_bytes_requested_by_mac, "RLC AM Tx Status PDU Data size=%d bigger than remaining TBS=%d nb_bits_transmitted=%d LcId=%d\n",
+  //      pdu_size,rlc_pP->nb_bytes_requested_by_mac,nb_bits_transmitted, rlc_pP->channel_id);
+  if(pdu_size > rlc_pP->nb_bytes_requested_by_mac) {
+    LOG_E(RLC, "RLC AM Tx Status PDU Data size=%d bigger than remaining TBS=%d nb_bits_transmitted=%d LcId=%d\n",
+          pdu_size,rlc_pP->nb_bytes_requested_by_mac,nb_bits_transmitted, rlc_pP->channel_id);
+    return;
+  }
 
-#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)]);
-
+  ((struct mac_tb_req *)(tb_p->data))->data_ptr         = (uint8_t *)&(tb_p->data[sizeof(struct mac_tb_req)]);
   // warning reuse of pdu_size
   // TODO : rlc_am_write_status_pdu should be rewritten as not very tested ...
-  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;
+  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
 
-//  AssertFatal (pdu_size == ((nb_bits_transmitted + 7) >> 3), "RLC AM Tx Status PDU Data encoding size=%d different than expected=%d LcId=%d\n",
-//  		  pdu_size,((nb_bits_transmitted + 7) >> 3), rlc_pP->channel_id);
-	if(pdu_size != ((nb_bits_transmitted + 7) >> 3)){
-		LOG_E(RLC, "RLC AM Tx Status PDU Data encoding size=%d different than expected=%d LcId=%d\n",
-  		  pdu_size,((nb_bits_transmitted + 7) >> 3), rlc_pP->channel_id);
-		pdu_size = 0;
-		return;
-	}
+  //  AssertFatal (pdu_size == ((nb_bits_transmitted + 7) >> 3), "RLC AM Tx Status PDU Data encoding size=%d different than expected=%d LcId=%d\n",
+  //        pdu_size,((nb_bits_transmitted + 7) >> 3), rlc_pP->channel_id);
+  if(pdu_size != ((nb_bits_transmitted + 7) >> 3)) {
+    LOG_E(RLC, "RLC AM Tx Status PDU Data encoding size=%d different than expected=%d LcId=%d\n",
+          pdu_size,((nb_bits_transmitted + 7) >> 3), rlc_pP->channel_id);
+    pdu_size = 0;
+    return;
+  }
 
   // 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;
@@ -869,7 +761,6 @@ rlc_am_send_status_pdu(
   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;
-
 }
 
 
diff --git a/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um.c b/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um.c
index f04fd6681935ddadc08b6f63c832436357984d16..b59a6025f51bc2e3748e65355293af5bc4eb0eae 100644
--- a/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um.c
+++ b/openair2/LAYER2/RLC/UM_v9.3.0/rlc_um.c
@@ -27,7 +27,7 @@
 #include "platform_constants.h"
 //-----------------------------------------------------------------------------
 #if ENABLE_ITTI
-# include "intertask_interface.h"
+  #include "intertask_interface.h"
 #endif
 #include "assertions.h"
 #include "msc.h"
@@ -43,24 +43,23 @@
 
 //-----------------------------------------------------------------------------
 void rlc_um_stat_req     (rlc_um_entity_t *rlc_pP,
-                          unsigned int* stat_tx_pdcp_sdu,
-                          unsigned int* stat_tx_pdcp_bytes,
-                          unsigned int* stat_tx_pdcp_sdu_discarded,
-                          unsigned int* stat_tx_pdcp_bytes_discarded,
-                          unsigned int* stat_tx_data_pdu,
-                          unsigned int* stat_tx_data_bytes,
-                          unsigned int* stat_rx_pdcp_sdu,
-                          unsigned int* stat_rx_pdcp_bytes,
-                          unsigned int* stat_rx_data_pdus_duplicate,
-                          unsigned int* stat_rx_data_bytes_duplicate,
-                          unsigned int* stat_rx_data_pdu,
-                          unsigned int* stat_rx_data_bytes,
-                          unsigned int* stat_rx_data_pdu_dropped,
-                          unsigned int* stat_rx_data_bytes_dropped,
-                          unsigned int* stat_rx_data_pdu_out_of_window,
-                          unsigned int* stat_rx_data_bytes_out_of_window,
-                          unsigned int* stat_timer_reordering_timed_out)
-{
+                          unsigned int *stat_tx_pdcp_sdu,
+                          unsigned int *stat_tx_pdcp_bytes,
+                          unsigned int *stat_tx_pdcp_sdu_discarded,
+                          unsigned int *stat_tx_pdcp_bytes_discarded,
+                          unsigned int *stat_tx_data_pdu,
+                          unsigned int *stat_tx_data_bytes,
+                          unsigned int *stat_rx_pdcp_sdu,
+                          unsigned int *stat_rx_pdcp_bytes,
+                          unsigned int *stat_rx_data_pdus_duplicate,
+                          unsigned int *stat_rx_data_bytes_duplicate,
+                          unsigned int *stat_rx_data_pdu,
+                          unsigned int *stat_rx_data_bytes,
+                          unsigned int *stat_rx_data_pdu_dropped,
+                          unsigned int *stat_rx_data_bytes_dropped,
+                          unsigned int *stat_rx_data_pdu_out_of_window,
+                          unsigned int *stat_rx_data_bytes_out_of_window,
+                          unsigned int *stat_timer_reordering_timed_out) {
   *stat_tx_pdcp_sdu                     = rlc_pP->stat_tx_pdcp_sdu;
   *stat_tx_pdcp_bytes                   = rlc_pP->stat_tx_pdcp_bytes;
   *stat_tx_pdcp_sdu_discarded           = rlc_pP->stat_tx_pdcp_sdu_discarded;
@@ -81,8 +80,7 @@ void rlc_um_stat_req     (rlc_um_entity_t *rlc_pP,
 }
 //-----------------------------------------------------------------------------
 uint32_t
-rlc_um_get_buffer_occupancy (rlc_um_entity_t *rlc_pP)
-{
+rlc_um_get_buffer_occupancy (rlc_um_entity_t *rlc_pP) {
   if (rlc_pP->buffer_occupancy > 0) {
     return rlc_pP->buffer_occupancy;
   } else {
@@ -91,351 +89,294 @@ rlc_um_get_buffer_occupancy (rlc_um_entity_t *rlc_pP)
 }
 //-----------------------------------------------------------------------------
 void
-rlc_um_get_pdus (const protocol_ctxt_t* const ctxt_pP, void *argP)
-{
+rlc_um_get_pdus (const protocol_ctxt_t *const ctxt_pP, void *argP) {
   rlc_um_entity_t *rlc_p = (rlc_um_entity_t *) argP;
 
   switch (rlc_p->protocol_state) {
+    case RLC_NULL_STATE:
+      // from 3GPP TS 25.322 V9.2.0 p43
+      // In the NULL state the RLC entity does not exist and therefore it is
+      // not possible to transfer any data through it.
+      // Upon reception of a CRLC-CONFIG-Req from upper layer indicating
+      // establishment, the RLC entity:
+      //   - is created; and
+      //   - enters the DATA_TRANSFER_READY state.
+      break;
+
+    case RLC_DATA_TRANSFER_READY_STATE:
+
+      // from 3GPP TS 25.322 V9.2.0 p43-44
+      // In the DATA_TRANSFER_READY state, unacknowledged mode data can be
+      // exchanged between the entities according to subclause 11.2.
+      // Upon reception of a CRLC-CONFIG-Req from upper layer indicating
+      // release, the RLC entity:
+      // -enters the NULL state; and
+      // -is considered as being terminated.
+      // Upon reception of a CRLC-CONFIG-Req from upper layer indicating
+      // modification, the RLC entity:
+      // - stays in the DATA_TRANSFER_READY state;
+      // - modifies only the protocol parameters and timers as indicated by
+      // upper layers.
+      // Upon reception of a CRLC-SUSPEND-Req from upper layers, the RLC
+      // entity:
+      // - enters the LOCAL_SUSPEND state.
+
+      // SEND DATA TO MAC
+      if (rlc_p->tx_sn_length == 10) {
+        rlc_um_segment_10 (ctxt_pP, rlc_p);
+      }
 
-  case RLC_NULL_STATE:
-    // from 3GPP TS 25.322 V9.2.0 p43
-    // In the NULL state the RLC entity does not exist and therefore it is
-    // not possible to transfer any data through it.
-    // Upon reception of a CRLC-CONFIG-Req from upper layer indicating
-    // establishment, the RLC entity:
-    //   - is created; and
-    //   - enters the DATA_TRANSFER_READY state.
-    break;
-
-  case RLC_DATA_TRANSFER_READY_STATE:
-
-    // from 3GPP TS 25.322 V9.2.0 p43-44
-    // In the DATA_TRANSFER_READY state, unacknowledged mode data can be
-    // exchanged between the entities according to subclause 11.2.
-    // Upon reception of a CRLC-CONFIG-Req from upper layer indicating
-    // release, the RLC entity:
-    // -enters the NULL state; and
-    // -is considered as being terminated.
-    // Upon reception of a CRLC-CONFIG-Req from upper layer indicating
-    // modification, the RLC entity:
-    // - stays in the DATA_TRANSFER_READY state;
-    // - modifies only the protocol parameters and timers as indicated by
-    // upper layers.
-    // Upon reception of a CRLC-SUSPEND-Req from upper layers, the RLC
-    // entity:
-    // - enters the LOCAL_SUSPEND state.
-
-    // SEND DATA TO MAC
-    if (rlc_p->tx_sn_length == 10) {
-      rlc_um_segment_10 (ctxt_pP, rlc_p);
-    }
-
-    if (rlc_p->tx_sn_length == 5) {
-      rlc_um_segment_5 (ctxt_pP, rlc_p);
-    }
+      if (rlc_p->tx_sn_length == 5) {
+        rlc_um_segment_5 (ctxt_pP, rlc_p);
+      }
 
-    break;
-
-  case RLC_LOCAL_SUSPEND_STATE:
-    // from 3GPP TS 25.322 V9.2.0 p44
-    // In the LOCAL_SUSPEND state, the RLC entity is suspended, i.e. it does
-    // not send UMD PDUs with "Sequence Number" greater than or equal to a
-    // certain specified value (see subclause 9.7.5).
-    // Upon reception of a CRLC-CONFIG-Req from upper layer indicating
-    // release, the RLC entity:
-    // - enters the NULL state; and
-    // - is considered as being terminated.
-    // Upon reception of a CRLC-RESUME-Req from upper layers, the RLC entity:
-    // - enters the DATA_TRANSFER_READY state; and
-    // - resumes the data transmission.
-    // Upon reception of a CRLC-CONFIG-Req from upper layer indicating
-    // modification, the RLC entity:
-    // - stays in the LOCAL_SUSPEND state;
-    // - modifies only the protocol parameters and timers as indicated by
-    //   upper layers.
-
-    // TO DO TAKE CARE OF SN : THE IMPLEMENTATION OF THIS FUNCTIONNALITY IS NOT CRITICAL
-    break;
-
-  default:
-    LOG_E(RLC, PROTOCOL_RLC_UM_CTXT_FMT" MAC_DATA_REQ UNKNOWN PROTOCOL STATE %02X hex\n",
-          PROTOCOL_RLC_UM_CTXT_ARGS(ctxt_pP,rlc_p),
-          rlc_p->protocol_state);
+      break;
+
+    case RLC_LOCAL_SUSPEND_STATE:
+      // from 3GPP TS 25.322 V9.2.0 p44
+      // In the LOCAL_SUSPEND state, the RLC entity is suspended, i.e. it does
+      // not send UMD PDUs with "Sequence Number" greater than or equal to a
+      // certain specified value (see subclause 9.7.5).
+      // Upon reception of a CRLC-CONFIG-Req from upper layer indicating
+      // release, the RLC entity:
+      // - enters the NULL state; and
+      // - is considered as being terminated.
+      // Upon reception of a CRLC-RESUME-Req from upper layers, the RLC entity:
+      // - enters the DATA_TRANSFER_READY state; and
+      // - resumes the data transmission.
+      // Upon reception of a CRLC-CONFIG-Req from upper layer indicating
+      // modification, the RLC entity:
+      // - stays in the LOCAL_SUSPEND state;
+      // - modifies only the protocol parameters and timers as indicated by
+      //   upper layers.
+      // TO DO TAKE CARE OF SN : THE IMPLEMENTATION OF THIS FUNCTIONNALITY IS NOT CRITICAL
+      break;
+
+    default:
+      LOG_E(RLC, PROTOCOL_RLC_UM_CTXT_FMT" MAC_DATA_REQ UNKNOWN PROTOCOL STATE %02X hex\n",
+            PROTOCOL_RLC_UM_CTXT_ARGS(ctxt_pP,rlc_p),
+            rlc_p->protocol_state);
   }
 }
 
 //-----------------------------------------------------------------------------
 void
-rlc_um_rx (const protocol_ctxt_t* const ctxt_pP, void *argP, struct mac_data_ind data_indP)
-{
+rlc_um_rx (const protocol_ctxt_t *const ctxt_pP, void *argP, struct mac_data_ind data_indP) {
   rlc_um_entity_t    *l_rlc_p = (rlc_um_entity_t *) argP;
-#if TRACE_RLC_UM_PDU || MESSAGE_CHART_GENERATOR
   char  message_string[10000];
   mem_block_t        *tb_p;
   int16_t               tb_size_in_bytes;
   size_t              message_string_size = 0;
   rlc_um_pdu_info_t   pdu_info;
   int index;
-#endif
-#if TRACE_RLC_UM_PDU
   int                 octet_index;
-#   if ENABLE_ITTI
-  MessageDef         *msg_p;
-#   endif
-#endif
 
   switch (l_rlc_p->protocol_state) {
+    case RLC_NULL_STATE:
+      // from 3GPP TS 25.322 V9.2.0 p43
+      // In the NULL state the RLC entity does not exist and therefore it is
+      // not possible to transfer any data through it.
+      // Upon reception of a CRLC-CONFIG-Req from upper layer indicating
+      // establishment, the RLC entity:
+      //   - is created; and
+      //   - enters the DATA_TRANSFER_READY state.
+      LOG_I(RLC, PROTOCOL_RLC_UM_CTXT_FMT" ERROR MAC_DATA_IND IN RLC_NULL_STATE\n",
+            PROTOCOL_RLC_UM_CTXT_ARGS(ctxt_pP,l_rlc_p));
+
+      if (data_indP.data.nb_elements > 0 && MESSAGE_CHART_GENERATOR) {
+        tb_p = data_indP.data.head;
+
+        while (tb_p != NULL) {
+          tb_size_in_bytes   = ((struct mac_tb_ind *) (tb_p->data))->size;
+          rlc_um_get_pdu_infos(ctxt_pP,l_rlc_p,(rlc_um_pdu_sn_10_t *) ((struct mac_tb_ind *) (tb_p->data))->data_ptr, tb_size_in_bytes, &pdu_info, l_rlc_p->rx_sn_length);
+          message_string_size = 0;
+          message_string_size += sprintf(&message_string[message_string_size],
+                                         MSC_AS_TIME_FMT" "PROTOCOL_RLC_UM_MSC_FMT"DATA SN %u size %u FI %u",
+                                         MSC_AS_TIME_ARGS(ctxt_pP),
+                                         PROTOCOL_RLC_UM_MSC_ARGS(ctxt_pP, l_rlc_p),
+                                         pdu_info.sn,
+                                         tb_size_in_bytes,
+                                         pdu_info.fi);
+
+          if (pdu_info.e) {
+            message_string_size += sprintf(&message_string[message_string_size], "| HE:");
+
+            for (index=0; index < pdu_info.num_li; index++) {
+              message_string_size += sprintf(&message_string[message_string_size], " LI %u", pdu_info.li_list[index]);
+            }
+          }
 
-  case RLC_NULL_STATE:
-    // from 3GPP TS 25.322 V9.2.0 p43
-    // In the NULL state the RLC entity does not exist and therefore it is
-    // not possible to transfer any data through it.
-    // Upon reception of a CRLC-CONFIG-Req from upper layer indicating
-    // establishment, the RLC entity:
-    //   - is created; and
-    //   - enters the DATA_TRANSFER_READY state.
-    LOG_I(RLC, PROTOCOL_RLC_UM_CTXT_FMT" ERROR MAC_DATA_IND IN RLC_NULL_STATE\n",
-          PROTOCOL_RLC_UM_CTXT_ARGS(ctxt_pP,l_rlc_p));
-#if MESSAGE_CHART_GENERATOR
-
-    if (data_indP.data.nb_elements > 0) {
-      tb_p = data_indP.data.head;
-
-      while (tb_p != NULL) {
-        tb_size_in_bytes   = ((struct mac_tb_ind*) (tb_p->data))->size;
-        rlc_um_get_pdu_infos(ctxt_pP,l_rlc_p,(rlc_um_pdu_sn_10_t*) ((struct mac_tb_ind*) (tb_p->data))->data_ptr, tb_size_in_bytes, &pdu_info, l_rlc_p->rx_sn_length);
-        message_string_size = 0;
-        message_string_size += sprintf(&message_string[message_string_size],
-                                       MSC_AS_TIME_FMT" "PROTOCOL_RLC_UM_MSC_FMT"DATA SN %u size %u FI %u",
-                                       MSC_AS_TIME_ARGS(ctxt_pP),
-                                       PROTOCOL_RLC_UM_MSC_ARGS(ctxt_pP, l_rlc_p),
-                                       pdu_info.sn,
-                                       tb_size_in_bytes,
-                                       pdu_info.fi);
-
-        if (pdu_info.e) {
-          message_string_size += sprintf(&message_string[message_string_size], "| HE:");
-
-          for (index=0; index < pdu_info.num_li; index++) {
-            message_string_size += sprintf(&message_string[message_string_size], " LI %u", pdu_info.li_list[index]);
-        }
+          MSC_LOG_RX_DISCARDED_MESSAGE(
+            (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_ENB:MSC_RLC_UE,
+            (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_UE:MSC_RLC_ENB,
+            (const char *)pdu_info.payload,
+            tb_size_in_bytes,
+            message_string);
+          tb_p = tb_p->next;
         }
+      }/*MESSAGE_CHART_GENERATOR*/
+
+      list_free (&data_indP.data);
+      break;
+
+    case RLC_DATA_TRANSFER_READY_STATE:
+      // from 3GPP TS 25.322 V9.2.0 p43-44
+      // In the DATA_TRANSFER_READY state, unacknowledged mode data can be
+      // exchanged between the entities according to subclause 11.2.
+      // Upon reception of a CRLC-CONFIG-Req from upper layer indicating
+      // release, the RLC entity:
+      // -enters the NULL state; and
+      // -is considered as being terminated.
+      // Upon reception of a CRLC-CONFIG-Req from upper layer indicating
+      // modification, the RLC entity:
+      // - stays in the DATA_TRANSFER_READY state;
+      // - modifies only the protocol parameters and timers as indicated by
+      // upper layers.
+      // Upon reception of a CRLC-SUSPEND-Req from upper layers, the RLC
+      // entity:
+      // - enters the LOCAL_SUSPEND state.
+      data_indP.tb_size = data_indP.tb_size >> 3;
+
+      if (data_indP.data.nb_elements > 0 && (MESSAGE_CHART_GENERATOR || LOG_DEBUGFLAG(DEBUG_RLC))) {
+        LOG_D(RLC, PROTOCOL_RLC_UM_CTXT_FMT" MAC_DATA_IND %d TBs\n",
+              PROTOCOL_RLC_UM_CTXT_ARGS(ctxt_pP,l_rlc_p),
+              data_indP.data.nb_elements);
+        tb_p = data_indP.data.head;
+
+        while (tb_p != NULL) {
+          tb_size_in_bytes   = ((struct mac_tb_ind *) (tb_p->data))->size;
+          rlc_um_get_pdu_infos(ctxt_pP,
+                               l_rlc_p,(rlc_um_pdu_sn_10_t *) ((struct mac_tb_ind *) (tb_p->data))->data_ptr,
+                               tb_size_in_bytes,
+                               &pdu_info,
+                               l_rlc_p->rx_sn_length);
+
+          if (MESSAGE_CHART_GENERATOR) {
+            message_string_size = 0;
+            message_string_size += sprintf(&message_string[message_string_size],
+                                           MSC_AS_TIME_FMT" "PROTOCOL_RLC_UM_MSC_FMT"DATA SN %u size %u FI %u",
+                                           MSC_AS_TIME_ARGS(ctxt_pP),
+                                           PROTOCOL_RLC_UM_MSC_ARGS(ctxt_pP, l_rlc_p),
+                                           pdu_info.sn,
+                                           tb_size_in_bytes,
+                                           pdu_info.fi);
+
+            if (pdu_info.e) {
+              message_string_size += sprintf(&message_string[message_string_size], "| HE:");
+
+              for (index=0; index < pdu_info.num_li; index++) {
+                message_string_size += sprintf(&message_string[message_string_size], " LI  %u", pdu_info.li_list[index]);
+              }
+            }
 
-        MSC_LOG_RX_DISCARDED_MESSAGE(
-          (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_ENB:MSC_RLC_UE,
-          (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_UE:MSC_RLC_ENB,
-          (const char*)pdu_info.payload,
-          tb_size_in_bytes,
-          message_string);
-
-        tb_p = tb_p->next;
-      }
-    }
-
-#endif
-    list_free (&data_indP.data);
-    break;
-
-  case RLC_DATA_TRANSFER_READY_STATE:
-    // from 3GPP TS 25.322 V9.2.0 p43-44
-    // In the DATA_TRANSFER_READY state, unacknowledged mode data can be
-    // exchanged between the entities according to subclause 11.2.
-    // Upon reception of a CRLC-CONFIG-Req from upper layer indicating
-    // release, the RLC entity:
-    // -enters the NULL state; and
-    // -is considered as being terminated.
-    // Upon reception of a CRLC-CONFIG-Req from upper layer indicating
-    // modification, the RLC entity:
-    // - stays in the DATA_TRANSFER_READY state;
-    // - modifies only the protocol parameters and timers as indicated by
-    // upper layers.
-    // Upon reception of a CRLC-SUSPEND-Req from upper layers, the RLC
-    // entity:
-    // - enters the LOCAL_SUSPEND state.
-    data_indP.tb_size = data_indP.tb_size >> 3;
-
-#if TRACE_RLC_UM_PDU || MESSAGE_CHART_GENERATOR
-
-    if (data_indP.data.nb_elements > 0) {
-      LOG_D(RLC, PROTOCOL_RLC_UM_CTXT_FMT" MAC_DATA_IND %d TBs\n",
-            PROTOCOL_RLC_UM_CTXT_ARGS(ctxt_pP,l_rlc_p),
-            data_indP.data.nb_elements);
-
-      tb_p = data_indP.data.head;
-
-      while (tb_p != NULL) {
-        tb_size_in_bytes   = ((struct mac_tb_ind *) (tb_p->data))->size;
-        rlc_um_get_pdu_infos(ctxt_pP,
-                             l_rlc_p,(rlc_um_pdu_sn_10_t*) ((struct mac_tb_ind*) (tb_p->data))->data_ptr,
-                             tb_size_in_bytes,
-                             &pdu_info,
-                             l_rlc_p->rx_sn_length);
-
-#if MESSAGE_CHART_GENERATOR
-        message_string_size = 0;
-        message_string_size += sprintf(&message_string[message_string_size],
-                                       MSC_AS_TIME_FMT" "PROTOCOL_RLC_UM_MSC_FMT"DATA SN %u size %u FI %u",
-                                       MSC_AS_TIME_ARGS(ctxt_pP),
-                                       PROTOCOL_RLC_UM_MSC_ARGS(ctxt_pP, l_rlc_p),
-                                       pdu_info.sn,
-                                       tb_size_in_bytes,
-                                       pdu_info.fi);
-
-        if (pdu_info.e) {
-          message_string_size += sprintf(&message_string[message_string_size], "| HE:");
-
-          for (index=0; index < pdu_info.num_li; index++) {
-            message_string_size += sprintf(&message_string[message_string_size], " LI  %u", pdu_info.li_list[index]);
+            MSC_LOG_RX_MESSAGE(
+              (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_ENB:MSC_RLC_UE,
+              (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_UE:MSC_RLC_ENB,
+              (char *)pdu_info.payload,
+              tb_size_in_bytes,
+              message_string);
           }
-        }
 
-        MSC_LOG_RX_MESSAGE(
-          (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_ENB:MSC_RLC_UE,
-          (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_UE:MSC_RLC_ENB,
-          (char*)pdu_info.payload,
-          tb_size_in_bytes,
-          message_string);
-
-#endif
-#if TRACE_RLC_UM_PDU
-        message_string_size = 0;
-        message_string_size += sprintf(&message_string[message_string_size], "Bearer      : %u\n", l_rlc_p->rb_id);
-        message_string_size += sprintf(&message_string[message_string_size], "PDU size    : %u\n", tb_size_in_bytes);
-        message_string_size += sprintf(&message_string[message_string_size], "Header size : %u\n", pdu_info.header_size);
-        message_string_size += sprintf(&message_string[message_string_size], "Payload size: %u\n", pdu_info.payload_size);
-        message_string_size += sprintf(&message_string[message_string_size], "PDU type    : RLC UM DATA IND: UMD PDU\n\n");
-
-        message_string_size += sprintf(&message_string[message_string_size], "Header      :\n");
-        message_string_size += sprintf(&message_string[message_string_size], "  FI        : %u\n", pdu_info.fi);
-        message_string_size += sprintf(&message_string[message_string_size], "  E         : %u\n", pdu_info.e);
-        message_string_size += sprintf(&message_string[message_string_size], "  SN        : %u\n", pdu_info.sn);
-
-        if (pdu_info.e) {
-          message_string_size += sprintf(&message_string[message_string_size], "\nHeader extension  : \n");
-
-          for (index=0; index < pdu_info.num_li; index++) {
-            message_string_size += sprintf(&message_string[message_string_size], "  LI        : %u\n", pdu_info.li_list[index]);
-          }
-        }
+          if (LOG_DEBUGFLAG(DEBUG_RLC)) {
+            message_string_size = 0;
+            message_string_size += sprintf(&message_string[message_string_size], "Bearer      : %u\n", l_rlc_p->rb_id);
+            message_string_size += sprintf(&message_string[message_string_size], "PDU size    : %u\n", tb_size_in_bytes);
+            message_string_size += sprintf(&message_string[message_string_size], "Header size : %u\n", pdu_info.header_size);
+            message_string_size += sprintf(&message_string[message_string_size], "Payload size: %u\n", pdu_info.payload_size);
+            message_string_size += sprintf(&message_string[message_string_size], "PDU type    : RLC UM DATA IND: UMD PDU\n\n");
+            message_string_size += sprintf(&message_string[message_string_size], "Header      :\n");
+            message_string_size += sprintf(&message_string[message_string_size], "  FI	    : %u\n", pdu_info.fi);
+            message_string_size += sprintf(&message_string[message_string_size], "  E	    : %u\n", pdu_info.e);
+            message_string_size += sprintf(&message_string[message_string_size], "  SN	    : %u\n", pdu_info.sn);
+
+            if (pdu_info.e) {
+              message_string_size += sprintf(&message_string[message_string_size], "\nHeader extension  : \n");
+
+              for (index=0; index < pdu_info.num_li; index++) {
+                message_string_size += sprintf(&message_string[message_string_size], "  LI        : %u\n", pdu_info.li_list[index]);
+              }
+            }
 
-        message_string_size += sprintf(&message_string[message_string_size], "\nPayload  : \n");
-        message_string_size += sprintf(&message_string[message_string_size], "------+-------------------------------------------------|\n");
-        message_string_size += sprintf(&message_string[message_string_size], "      |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |\n");
-        message_string_size += sprintf(&message_string[message_string_size], "------+-------------------------------------------------|\n");
+            message_string_size += sprintf(&message_string[message_string_size], "\nPayload  : \n");
+            message_string_size += sprintf(&message_string[message_string_size], "------+-------------------------------------------------|\n");
+            message_string_size += sprintf(&message_string[message_string_size], "      |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |\n");
+            message_string_size += sprintf(&message_string[message_string_size], "------+-------------------------------------------------|\n");
+
+            for (octet_index = 0; octet_index < pdu_info.payload_size; octet_index++) {
+              if ((octet_index % 16) == 0) {
+                if (octet_index != 0) {
+                  message_string_size += sprintf(&message_string[message_string_size], " |\n");
+                }
+
+                message_string_size += sprintf(&message_string[message_string_size], " %04d |", octet_index);
+              }
+
+              /*
+               * Print every single octet in hexadecimal form
+               */
+              message_string_size += sprintf(&message_string[message_string_size], " %02x", pdu_info.payload[octet_index]);
+              /*
+               * Align newline and pipes according to the octets in groups of 2
+               */
+            }
 
-        for (octet_index = 0; octet_index < pdu_info.payload_size; octet_index++) {
-          if ((octet_index % 16) == 0) {
-            if (octet_index != 0) {
-              message_string_size += sprintf(&message_string[message_string_size], " |\n");
+            /*
+             * Append enough spaces and put final pipe
+             */
+            for (index = octet_index; index < 16; ++index) {
+              message_string_size += sprintf(&message_string[message_string_size], "   ");
             }
 
-            message_string_size += sprintf(&message_string[message_string_size], " %04d |", octet_index);
+            message_string_size += sprintf(&message_string[message_string_size], " |\n");
+            LOG_UI(RLC, "%s|\n", message_string);
           }
 
-          /*
-           * Print every single octet in hexadecimal form
-           */
-          message_string_size += sprintf(&message_string[message_string_size], " %02x", pdu_info.payload[octet_index]);
-          /*
-           * Align newline and pipes according to the octets in groups of 2
-           */
+          tb_p = tb_p->next;
         }
-
-        /*
-         * Append enough spaces and put final pipe
-         */
-        for (index = octet_index; index < 16; ++index) {
-          message_string_size += sprintf(&message_string[message_string_size], "   ");
-        }
-
-        message_string_size += sprintf(&message_string[message_string_size], " |\n");
-
-#   if ENABLE_ITTI
-        msg_p = itti_alloc_new_message_sized (ctxt_pP->enb_flag ? TASK_RLC_ENB:TASK_RLC_UE , RLC_UM_DATA_PDU_IND, message_string_size + sizeof (IttiMsgText));
-        msg_p->ittiMsg.rlc_um_data_pdu_ind.size = message_string_size;
-        memcpy(&msg_p->ittiMsg.rlc_um_data_pdu_ind.text, message_string, message_string_size);
-
-        itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
-
-# else
-        LOG_T(RLC, "%s", message_string);
-# endif // ENABLE_ITTI
-#endif // TRACE_RLC_UM_PDU
-
-        tb_p = tb_p->next;
       }
-    }
 
-#endif
-    rlc_um_receive (ctxt_pP, l_rlc_p, data_indP);
-    break;
-
-  case RLC_LOCAL_SUSPEND_STATE:
-    // from 3GPP TS 25.322 V9.2.0 p44
-    // In the LOCAL_SUSPEND state, the RLC entity is suspended, i.e. it does
-    // not send UMD PDUs with "Sequence Number" greater than or equal to a
-    // certain specified value (see subclause 9.7.5).
-    // Upon reception of a CRLC-CONFIG-Req from upper layer indicating
-    // release, the RLC entity:
-    // - enters the NULL state; and
-    // - is considered as being terminated.
-    // Upon reception of a CRLC-RESUME-Req from upper layers, the RLC entity:
-    // - enters the DATA_TRANSFER_READY state; and
-    // - resumes the data transmission.
-    // Upon reception of a CRLC-CONFIG-Req from upper layer indicating
-    // modification, the RLC entity:
-    // - stays in the LOCAL_SUSPEND state;
-    // - modifies only the protocol parameters and timers as indicated by
-    //   upper layers.
-    LOG_I(RLC, PROTOCOL_RLC_UM_CTXT_FMT" RLC_LOCAL_SUSPEND_STATE\n",
-          PROTOCOL_RLC_UM_CTXT_ARGS(ctxt_pP,l_rlc_p));
-    /*if (data_indP.data.nb_elements > 0) {
-        LOG_D(RLC, "[FRAME %05d][%s][RLC_UM][MOD %02u/%02u][RB %02d] MAC_DATA_IND %d TBs\n", l_rlc_p->module_id, l_rlc_p->rb_id, ctxt_pP->frame, data_indP.data.nb_elements);
-        rlc_p[l_rlc_p->module_id].m_mscgen_trace_length = sprintf(rlc_p[l_rlc_p->module_id].m_mscgen_trace, "[MSC_MSG][FRAME %05d][MAC_%s][MOD %02d][][--- MAC_DATA_IND/ %d TB(s) ",
-            ctxt_pP->frame,
-            (ctxt_pP->enb_flag) ? "eNB":"UE",
-            l_rlc_p->module_id,
-            data_indP.data.nb_elements);
-
-        tb = data_indP.data.head;
-        while (tb != NULL) {
-            rlc_p[l_rlc_p->module_id].m_mscgen_trace_length += sprintf(&rlc_p[l_rlc_p->module_id].m_mscgen_trace[rlc_p[l_rlc_p->module_id].m_mscgen_trace_length], " SN %d %c%c%c %d Bytes ",
-                                                                (((struct mac_tb_ind *) (tb->data))->data_ptr[1]) +  (((uint16_t)((((struct mac_tb_ind *) (tb->data))->data_ptr[0]) & 0x03)) << 8),
-                                                                (((struct mac_tb_ind *) (tb->data))->data_ptr[0] & 0x10) ?  '}':'{',
-                                                                (((struct mac_tb_ind *) (tb->data))->data_ptr[0] & 0x08) ?  '{':'}',
-                                                                (((struct mac_tb_ind *) (tb->data))->data_ptr[0] & 0x04) ?  'E':'_',
-                                                                ((struct mac_tb_ind *) (tb->data))->size);
-            tb = tb->next;
-        }
-        rlc_p[l_rlc_p->module_id].m_mscgen_trace_length += sprintf(&rlc_p[l_rlc_p->module_id].m_mscgen_trace[rlc_p[l_rlc_p->module_id].m_mscgen_trace_length], " DROPPED RLC LOCAL SUSPEND STATE ---X][RLC_UM][MOD %02d][RB %02d]\n",
-            l_rlc_p->module_id,
-            l_rlc_p->rb_id);
-
-        rlc_p[l_rlc_p->module_id].m_mscgen_trace[rlc_p[l_rlc_p->module_id].m_mscgen_trace_length] = 0;
-        LOG_D(RLC, "%s", rlc_p[l_rlc_p->module_id].m_mscgen_trace);
-    }*/
-    list_free (&data_indP.data);
-    break;
-
-  default:
-    LOG_E(RLC, PROTOCOL_RLC_UM_CTXT_FMT" TX UNKNOWN PROTOCOL STATE %02X hex\n",
-          PROTOCOL_RLC_UM_CTXT_ARGS(ctxt_pP,l_rlc_p),
-          l_rlc_p->protocol_state);
-    list_free (&data_indP.data);
+      rlc_um_receive (ctxt_pP, l_rlc_p, data_indP);
+      break;
+
+    case RLC_LOCAL_SUSPEND_STATE:
+      // from 3GPP TS 25.322 V9.2.0 p44
+      // In the LOCAL_SUSPEND state, the RLC entity is suspended, i.e. it does
+      // not send UMD PDUs with "Sequence Number" greater than or equal to a
+      // certain specified value (see subclause 9.7.5).
+      // Upon reception of a CRLC-CONFIG-Req from upper layer indicating
+      // release, the RLC entity:
+      // - enters the NULL state; and
+      // - is considered as being terminated.
+      // Upon reception of a CRLC-RESUME-Req from upper layers, the RLC entity:
+      // - enters the DATA_TRANSFER_READY state; and
+      // - resumes the data transmission.
+      // Upon reception of a CRLC-CONFIG-Req from upper layer indicating
+      // modification, the RLC entity:
+      // - stays in the LOCAL_SUSPEND state;
+      // - modifies only the protocol parameters and timers as indicated by
+      //   upper layers.
+      LOG_I(RLC, PROTOCOL_RLC_UM_CTXT_FMT" RLC_LOCAL_SUSPEND_STATE\n",
+            PROTOCOL_RLC_UM_CTXT_ARGS(ctxt_pP,l_rlc_p));
+      list_free (&data_indP.data);
+      break;
+
+    default:
+      LOG_E(RLC, PROTOCOL_RLC_UM_CTXT_FMT" TX UNKNOWN PROTOCOL STATE %02X hex\n",
+            PROTOCOL_RLC_UM_CTXT_ARGS(ctxt_pP,l_rlc_p),
+            l_rlc_p->protocol_state);
+      list_free (&data_indP.data);
   }
 }
 
 //-----------------------------------------------------------------------------
 struct mac_status_resp
-rlc_um_mac_status_indication (const protocol_ctxt_t* const ctxt_pP, void *rlc_pP, uint16_t tbs_sizeP, struct mac_status_ind tx_statusP,const eNB_flag_t enb_flagP)
-{
+rlc_um_mac_status_indication (const protocol_ctxt_t *const ctxt_pP, void *rlc_pP, uint16_t tbs_sizeP, struct mac_status_ind tx_statusP,const eNB_flag_t enb_flagP) {
   struct mac_status_resp status_resp;
   uint16_t  sdu_size = 0;
   uint16_t  sdu_remaining_size = 0;
   int32_t diff_time=0;
-  rlc_um_entity_t   *rlc_p = NULL;
+  rlc_um_entity_t   *rlc_p = (rlc_um_entity_t *) rlc_pP;
   mem_block_t       *mb_p = NULL;
-
   status_resp.buffer_occupancy_in_pdus         = 0;
   status_resp.buffer_occupancy_in_bytes        = 0;
   status_resp.head_sdu_remaining_size_to_send  = 0;
@@ -443,31 +384,24 @@ rlc_um_mac_status_indication (const protocol_ctxt_t* const ctxt_pP, void *rlc_pP
   status_resp.head_sdu_is_segmented            = 0;
 
   if (rlc_pP) {
-
-    rlc_p = (rlc_um_entity_t *) rlc_pP;
     status_resp.rlc_info.rlc_protocol_state      = rlc_p->protocol_state;
     rlc_um_check_timer_dar_time_out(ctxt_pP, rlc_p);
-
     rlc_p->nb_bytes_requested_by_mac = tbs_sizeP;
-
     status_resp.buffer_occupancy_in_bytes = rlc_um_get_buffer_occupancy (rlc_p);
 
     if ((status_resp.buffer_occupancy_in_bytes > 0) && ((mb_p = list_get_head(&rlc_p->input_sdus)) != NULL)) {
-
       if (enb_flagP == ENB_FLAG_YES) {
-    	  /* For eNB: add minimum RLC UM header size for the scheduler */
-    	  /* For UE : RLC header part is not taken into account for BSR reporting (cf 36.321) */
-          status_resp.buffer_occupancy_in_bytes += rlc_p->tx_header_min_length_in_bytes;
+        /* For eNB: add minimum RLC UM header size for the scheduler */
+        /* For UE : RLC header part is not taken into account for BSR reporting (cf 36.321) */
+        status_resp.buffer_occupancy_in_bytes += rlc_p->tx_header_min_length_in_bytes;
       }
-      status_resp.buffer_occupancy_in_pdus = rlc_p->input_sdus.nb_elements;
 
+      status_resp.buffer_occupancy_in_pdus = rlc_p->input_sdus.nb_elements;
       diff_time =   ctxt_pP->frame - ((struct rlc_um_tx_sdu_management *)mb_p->data)->sdu_creation_time;
       status_resp.head_sdu_creation_time = (diff_time > 0 ) ? (uint32_t) diff_time :  (uint32_t)(0xffffffff - diff_time + ctxt_pP->frame) ;
       //msg("rlc_p status for ctxt_pP->frame %d diff time %d resp %d\n", ctxt_pP->frame, diff_time,status_resp.head_sdu_creation_time) ;
-
       sdu_size            = ((struct rlc_um_tx_sdu_management *) mb_p->data)->sdu_size;
       sdu_remaining_size  = ((struct rlc_um_tx_sdu_management *) mb_p->data)->sdu_remaining_size;
-
       status_resp.head_sdu_remaining_size_to_send = sdu_remaining_size;
 
       if (sdu_size == sdu_remaining_size)  {
@@ -475,35 +409,31 @@ rlc_um_mac_status_indication (const protocol_ctxt_t* const ctxt_pP, void *rlc_pP
       } else {
         status_resp.head_sdu_is_segmented = 1;
       }
-
     } else {
     }
 
-    //msg("[FRAME %05d][%s][RLC_UM][MOD %02u/%02u][RB %02d] MAC_STATUS_INDICATION BO = %d\n", ((rlc_um_entity_t *) rlc_pP)->module_id, ((rlc_um_entity_t *) rlc_pP)->rb_id, status_resp.buffer_occupancy_in_bytes);
+    status_resp.rlc_info.rlc_protocol_state = rlc_p->protocol_state;
 
-    status_resp.rlc_info.rlc_protocol_state = ((rlc_um_entity_t *) rlc_pP)->protocol_state;
-#if TRACE_RLC_UM_TX_STATUS
+    if (LOG_DEBUGFLAG(DEBUG_RLC)) {
+      if (( rlc_p->rb_id > 0) && (status_resp.buffer_occupancy_in_bytes > 0)) {
+        LOG_UI(RLC, PROTOCOL_RLC_UM_CTXT_FMT"MAC_STATUS_INDICATION (DATA) %d bytes requested -> %d bytes available\n",
+               PROTOCOL_RLC_UM_CTXT_ARGS(ctxt_pP,rlc_p),
+               tbs_sizeP,
+               status_resp.buffer_occupancy_in_bytes);
 
-    if ((((rlc_um_entity_t *) rlc_pP)->rb_id > 0) && (status_resp.buffer_occupancy_in_bytes > 0)) {
-      LOG_D(RLC, PROTOCOL_RLC_UM_CTXT_FMT" MAC_STATUS_INDICATION (DATA) %d bytes requested -> %d bytes available\n",
-            PROTOCOL_RLC_UM_CTXT_ARGS(ctxt_pP,rlc_pP),
-            tbs_sizeP,
-            status_resp.buffer_occupancy_in_bytes);
-
-      if ((tx_statusP.tx_status == MAC_TX_STATUS_SUCCESSFUL) && (tx_statusP.no_pdu)) {
-        LOG_D(RLC, PROTOCOL_RLC_UM_CTXT_FMT" MAC_STATUS_INDICATION  TX STATUS   SUCCESSFUL %d PDUs\n",
-              PROTOCOL_RLC_UM_CTXT_ARGS(ctxt_pP,rlc_pP),
-              tx_statusP.no_pdu);
-      }
+        if ((tx_statusP.tx_status == MAC_TX_STATUS_SUCCESSFUL) && (tx_statusP.no_pdu)) {
+          LOG_D(RLC, PROTOCOL_RLC_UM_CTXT_FMT" MAC_STATUS_INDICATION  TX STATUS   SUCCESSFUL %d PDUs\n",
+                PROTOCOL_RLC_UM_CTXT_ARGS(ctxt_pP,rlc_p),
+                tx_statusP.no_pdu);
+        }
 
-      if ((tx_statusP.tx_status == MAC_TX_STATUS_UNSUCCESSFUL) && (tx_statusP.no_pdu)) {
-        LOG_D(RLC, PROTOCOL_RLC_UM_CTXT_FMT" MAC_STATUS_INDICATION  TX STATUS UNSUCCESSFUL %d PDUs\n",
-              PROTOCOL_RLC_UM_CTXT_ARGS(ctxt_pP,rlc_pP),
-              tx_statusP.no_pdu);
+        if ((tx_statusP.tx_status == MAC_TX_STATUS_UNSUCCESSFUL) && (tx_statusP.no_pdu)) {
+          LOG_UI(RLC, PROTOCOL_RLC_UM_CTXT_FMT" MAC_STATUS_INDICATION  TX STATUS UNSUCCESSFUL %d PDUs\n",
+                 PROTOCOL_RLC_UM_CTXT_ARGS(ctxt_pP,rlc_p),
+                 tx_statusP.no_pdu);
+        }
       }
     }
-
-#endif
   } else {
     LOG_E(RLC, "[RLC] rlc_um_mac_status_indication RLC NULL!!!\n");
   }
@@ -514,44 +444,34 @@ rlc_um_mac_status_indication (const protocol_ctxt_t* const ctxt_pP, void *rlc_pP
 //-----------------------------------------------------------------------------
 void
 rlc_um_set_nb_bytes_requested_by_mac (
-  void *				rlc_pP,
-  const tb_size_t		tb_sizeP
-)
-{
-	((rlc_um_entity_t *) rlc_pP)->nb_bytes_requested_by_mac = tb_sizeP;
+  void         *rlc_pP,
+  const tb_size_t   tb_sizeP
+) {
+  ((rlc_um_entity_t *) rlc_pP)->nb_bytes_requested_by_mac = tb_sizeP;
 }
 
 //-----------------------------------------------------------------------------
 struct mac_data_req
-rlc_um_mac_data_request (const protocol_ctxt_t* const ctxt_pP, void *rlc_pP,const eNB_flag_t  enb_flagP)
-{
+rlc_um_mac_data_request (const protocol_ctxt_t *const ctxt_pP, void *rlc_pP,const eNB_flag_t  enb_flagP) {
   struct mac_data_req data_req;
   int16_t               tb_size_in_bytes;
   mem_block_t        *tb_p;
-#if TRACE_RLC_UM_PDU || MESSAGE_CHART_GENERATOR
   char  message_string[10000];
   size_t              message_string_size = 0;
-#   if ENABLE_ITTI
-  MessageDef         *msg_p;
-#   endif
   rlc_um_pdu_info_t   pdu_info;
   int                 octet_index, index;
-#endif
   rlc_um_entity_t *l_rlc_p = (rlc_um_entity_t *) rlc_pP;
-
   rlc_um_get_pdus(ctxt_pP, l_rlc_p);
-
   list_init (&data_req.data, NULL);
   list_add_list (&l_rlc_p->pdus_to_mac_layer, &data_req.data);
 
-
   if (enb_flagP) {
-	  // redundant in UE MAC Tx processing and not used in eNB scheduler ...
-	  data_req.buffer_occupancy_in_bytes = rlc_um_get_buffer_occupancy (l_rlc_p);
+    // redundant in UE MAC Tx processing and not used in eNB scheduler ...
+    data_req.buffer_occupancy_in_bytes = rlc_um_get_buffer_occupancy (l_rlc_p);
 
-	  if (data_req.buffer_occupancy_in_bytes > 0) {
-	    data_req.buffer_occupancy_in_bytes += l_rlc_p->tx_header_min_length_in_bytes;
-	  }
+    if (data_req.buffer_occupancy_in_bytes > 0) {
+      data_req.buffer_occupancy_in_bytes += l_rlc_p->tx_header_min_length_in_bytes;
+    }
   }
 
   data_req.rlc_info.rlc_protocol_state = l_rlc_p->protocol_state;
@@ -561,7 +481,6 @@ rlc_um_mac_data_request (const protocol_ctxt_t* const ctxt_pP, void *rlc_pP,cons
 
     while (tb_p != NULL) {
       tb_size_in_bytes   = ((struct mac_tb_req *) (tb_p->data))->tb_size;
-
       LOG_D(RLC, PROTOCOL_RLC_UM_CTXT_FMT" MAC_DATA_REQUEST  TB SIZE %u\n",
             PROTOCOL_RLC_UM_CTXT_ARGS(ctxt_pP,l_rlc_p),
             ((struct mac_tb_req *) (tb_p->data))->tb_size);
@@ -574,156 +493,130 @@ rlc_um_mac_data_request (const protocol_ctxt_t* const ctxt_pP, void *rlc_pP,cons
         tb_p = tb_p->next;
         continue;
       }
-        
-#if TRACE_RLC_UM_PDU || MESSAGE_CHART_GENERATOR
-      rlc_um_get_pdu_infos(ctxt_pP, l_rlc_p,(rlc_um_pdu_sn_10_t*) ((struct mac_tb_req*) (tb_p->data))->data_ptr, tb_size_in_bytes, &pdu_info, l_rlc_p->rx_sn_length);
-#endif
-#if MESSAGE_CHART_GENERATOR
-      message_string_size = 0;
-      message_string_size += sprintf(&message_string[message_string_size],
-                                     MSC_AS_TIME_FMT" "PROTOCOL_RLC_UM_MSC_FMT" DATA SN %u size %u FI %u",
-                                     MSC_AS_TIME_ARGS(ctxt_pP),
-                                     PROTOCOL_RLC_UM_MSC_ARGS(ctxt_pP, l_rlc_p),
-                                     pdu_info.sn,
-                                     tb_size_in_bytes,
-                                     pdu_info.fi);
-
-      if (pdu_info.e) {
-        message_string_size += sprintf(&message_string[message_string_size], "|HE:");
-
-        for (index=0; index < pdu_info.num_li; index++) {
-          message_string_size += sprintf(&message_string[message_string_size], " LI %u", pdu_info.li_list[index]);
-        }
-      }
 
-      MSC_LOG_TX_MESSAGE(
-        (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_ENB:MSC_RLC_UE,
-        (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_UE:MSC_RLC_ENB,
-        (const char*)pdu_info.payload,
-        pdu_info.payload_size,
-        message_string);
+      if (MESSAGE_CHART_GENERATOR || LOG_DEBUGFLAG(DEBUG_RLC) ) {
+        rlc_um_get_pdu_infos(ctxt_pP, l_rlc_p,(rlc_um_pdu_sn_10_t *) ((struct mac_tb_req *) (tb_p->data))->data_ptr, tb_size_in_bytes, &pdu_info, l_rlc_p->rx_sn_length);
 
-#endif
-#if TRACE_RLC_UM_PDU
-      message_string_size = 0;
-      message_string_size += sprintf(&message_string[message_string_size], "Bearer      : %u\n", l_rlc_p->rb_id);
-      message_string_size += sprintf(&message_string[message_string_size], "PDU size    : %u\n", tb_size_in_bytes);
-      message_string_size += sprintf(&message_string[message_string_size], "Header size : %u\n", pdu_info.header_size);
-      message_string_size += sprintf(&message_string[message_string_size], "Payload size: %u\n", pdu_info.payload_size);
-      message_string_size += sprintf(&message_string[message_string_size], "PDU type    : RLC UM DATA IND: UMD PDU\n\n");
-
-      message_string_size += sprintf(&message_string[message_string_size], "Header      :\n");
-      message_string_size += sprintf(&message_string[message_string_size], "  FI        : %u\n", pdu_info.fi);
-      message_string_size += sprintf(&message_string[message_string_size], "  E         : %u\n", pdu_info.e);
-      message_string_size += sprintf(&message_string[message_string_size], "  SN        : %u\n", pdu_info.sn);
-
-      if (pdu_info.e) {
-        message_string_size += sprintf(&message_string[message_string_size], "\nHeader extension  : \n");
-
-        for (index=0; index < pdu_info.num_li; index++) {
-          message_string_size += sprintf(&message_string[message_string_size], "  LI        : %u\n", pdu_info.li_list[index]);
-        }
-      }
+        if(MESSAGE_CHART_GENERATOR) {
+          message_string_size = 0;
+          message_string_size += sprintf(&message_string[message_string_size],
+                                         MSC_AS_TIME_FMT" "PROTOCOL_RLC_UM_MSC_FMT" DATA SN %u size %u FI %u",
+                                         MSC_AS_TIME_ARGS(ctxt_pP),
+                                         PROTOCOL_RLC_UM_MSC_ARGS(ctxt_pP, l_rlc_p),
+                                         pdu_info.sn,
+                                         tb_size_in_bytes,
+                                         pdu_info.fi);
 
-      message_string_size += sprintf(&message_string[message_string_size], "\nPayload  : \n");
-      message_string_size += sprintf(&message_string[message_string_size], "------+-------------------------------------------------|\n");
-      message_string_size += sprintf(&message_string[message_string_size], "      |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |\n");
-      message_string_size += sprintf(&message_string[message_string_size], "------+-------------------------------------------------|\n");
+          if (pdu_info.e) {
+            message_string_size += sprintf(&message_string[message_string_size], "|HE:");
 
-      for (octet_index = 0; octet_index < pdu_info.payload_size; octet_index++) {
-        if ((octet_index % 16) == 0) {
-          if (octet_index != 0) {
-            message_string_size += sprintf(&message_string[message_string_size], " |\n");
+            for (index=0; index < pdu_info.num_li; index++) {
+              message_string_size += sprintf(&message_string[message_string_size], " LI %u", pdu_info.li_list[index]);
+            }
           }
 
-          message_string_size += sprintf(&message_string[message_string_size], " %04d |", octet_index);
+          MSC_LOG_TX_MESSAGE(
+            (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_ENB:MSC_RLC_UE,
+            (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_UE:MSC_RLC_ENB,
+            (const char *)pdu_info.payload,
+            pdu_info.payload_size,
+            message_string);
         }
 
-        /*
-         * Print every single octet in hexadecimal form
-         */
-        message_string_size += sprintf(&message_string[message_string_size], " %02x", pdu_info.payload[octet_index]);
-        /*
-         * Align newline and pipes according to the octets in groups of 2
-         */
-      }
+        if(LOG_DEBUGFLAG(DEBUG_RLC)) {
+          message_string_size = 0;
+          message_string_size += sprintf(&message_string[message_string_size], "Bearer	  : %u\n", l_rlc_p->rb_id);
+          message_string_size += sprintf(&message_string[message_string_size], "PDU size    : %u\n", tb_size_in_bytes);
+          message_string_size += sprintf(&message_string[message_string_size], "Header size : %u\n", pdu_info.header_size);
+          message_string_size += sprintf(&message_string[message_string_size], "Payload size: %u\n", pdu_info.payload_size);
+          message_string_size += sprintf(&message_string[message_string_size], "PDU type    : RLC UM DATA IND: UMD PDU\n\n");
+          message_string_size += sprintf(&message_string[message_string_size], "Header	  :\n");
+          message_string_size += sprintf(&message_string[message_string_size], "  FI	  : %u\n", pdu_info.fi);
+          message_string_size += sprintf(&message_string[message_string_size], "  E	  : %u\n", pdu_info.e);
+          message_string_size += sprintf(&message_string[message_string_size], "  SN	  : %u\n", pdu_info.sn);
+
+          if (pdu_info.e) {
+            message_string_size += sprintf(&message_string[message_string_size], "\nHeader extension  : \n");
+
+            for (index=0; index < pdu_info.num_li; index++) {
+              message_string_size += sprintf(&message_string[message_string_size], "  LI        : %u\n", pdu_info.li_list[index]);
+            }
+          }
 
-      /*
-       * Append enough spaces and put final pipe
-       */
-      for (index = octet_index; index < 16; ++index) {
-        message_string_size += sprintf(&message_string[message_string_size], "   ");
-      }
+          message_string_size += sprintf(&message_string[message_string_size], "\nPayload  : \n");
+          message_string_size += sprintf(&message_string[message_string_size], "------+-------------------------------------------------|\n");
+          message_string_size += sprintf(&message_string[message_string_size], "      |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |\n");
+          message_string_size += sprintf(&message_string[message_string_size], "------+-------------------------------------------------|\n");
 
-      message_string_size += sprintf(&message_string[message_string_size], " |\n");
+          for (octet_index = 0; octet_index < pdu_info.payload_size; octet_index++) {
+            if ((octet_index % 16) == 0) {
+              if (octet_index != 0) {
+                message_string_size += sprintf(&message_string[message_string_size], " |\n");
+              }
 
-#   if ENABLE_ITTI
-      msg_p = itti_alloc_new_message_sized (ctxt_pP->enb_flag > 0 ? TASK_RLC_ENB:TASK_RLC_UE , RLC_UM_DATA_PDU_REQ, message_string_size + sizeof (IttiMsgText));
-      msg_p->ittiMsg.rlc_um_data_pdu_req.size = message_string_size;
-      memcpy(&msg_p->ittiMsg.rlc_um_data_pdu_req.text, message_string, message_string_size);
+              message_string_size += sprintf(&message_string[message_string_size], " %04d |", octet_index);
+            }
 
-      itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
+            /*
+             * Print every single octet in hexadecimal form
+             */
+            message_string_size += sprintf(&message_string[message_string_size], " %02x", pdu_info.payload[octet_index]);
+            /*
+             * Align newline and pipes according to the octets in groups of 2
+             */
+          }
+
+          /*
+           * Append enough spaces and put final pipe
+           */
+          for (index = octet_index; index < 16; ++index) {
+            message_string_size += sprintf(&message_string[message_string_size], "   ");
+          }
+
+          message_string_size += sprintf(&message_string[message_string_size], " |\n");
+          LOG_UI(RLC, "%s\n", message_string);
+        } /*LOG_DEBUGFLAG(DEBUG_RLC) */
+      } /* MESSAGE_CHART_GENERATOR || LOG_DEBUGFLAG(DEBUG_RLC) */
 
-# else
-      LOG_T(RLC, "%s", message_string);
-# endif
-#endif
       tb_p = tb_p->next;
-    }
-  }
+    } /* while (tb_p != NULL) */
+  } /* if (data_req.data.nb_elements > 0) */
 
   return data_req;
 }
 
 //-----------------------------------------------------------------------------
 void
-rlc_um_mac_data_indication (const protocol_ctxt_t* const ctxt_pP, void *rlc_pP, struct mac_data_ind data_indP)
-{
+rlc_um_mac_data_indication (const protocol_ctxt_t *const ctxt_pP, void *rlc_pP, struct mac_data_ind data_indP) {
   rlc_um_rx (ctxt_pP, rlc_pP, data_indP);
   rlc_um_check_timer_dar_time_out(ctxt_pP, rlc_pP);
 }
 
 //-----------------------------------------------------------------------------
 void
-rlc_um_data_req (const protocol_ctxt_t* const ctxt_pP, void *rlc_pP, mem_block_t *sdu_pP)
-{
+rlc_um_data_req (const protocol_ctxt_t *const ctxt_pP, void *rlc_pP, mem_block_t *sdu_pP) {
   rlc_um_entity_t *rlc_p = (rlc_um_entity_t *) rlc_pP;
-
-#if TRACE_RLC_UM_PDU
-#if ENABLE_ITTI
-  MessageDef          *msg_p;
-#   endif
   uint16_t             data_offset;
   uint16_t             data_size;
   size_t               message_string_size = 0;
   int                  octet_index, index;
   char                 message_string[7000];
-#endif
-
   LOG_D(RLC, PROTOCOL_RLC_UM_CTXT_FMT" RLC_UM_DATA_REQ size %d Bytes, BO %d , NB SDU %d\n",
         PROTOCOL_RLC_UM_CTXT_ARGS(ctxt_pP,rlc_p),
         ((struct rlc_um_data_req *) (sdu_pP->data))->data_size,
         rlc_p->buffer_occupancy,
         rlc_p->input_sdus.nb_elements);
-
-  /*rlc_util_print_hex_octets(
-      RLC,
-      (uint8_t*)&sdu_pP->data[sizeof (struct rlc_um_data_req_alloc)],
-      ((struct rlc_um_data_req *) (sdu_pP->data))->data_size);*/
-
   // IMPORTANT : do not change order of affectations
   ((struct rlc_um_tx_sdu_management *) (sdu_pP->data))->sdu_size = ((struct rlc_um_data_req *) (sdu_pP->data))->data_size;
   //rlc_p->nb_sdu += 1;
-  ((struct rlc_um_tx_sdu_management *) (sdu_pP->data))->first_byte = (uint8_t*)&sdu_pP->data[sizeof (struct rlc_um_data_req_alloc)];
+  ((struct rlc_um_tx_sdu_management *) (sdu_pP->data))->first_byte = (uint8_t *)&sdu_pP->data[sizeof (struct rlc_um_data_req_alloc)];
   ((struct rlc_um_tx_sdu_management *) (sdu_pP->data))->sdu_remaining_size = ((struct rlc_um_tx_sdu_management *)
       (sdu_pP->data))->sdu_size;
   ((struct rlc_um_tx_sdu_management *) (sdu_pP->data))->sdu_segmented_size = 0;
   ((struct rlc_um_tx_sdu_management *) (sdu_pP->data))->sdu_creation_time = ctxt_pP->frame;
   //rlc_p->next_sdu_index = (rlc_p->next_sdu_index + 1) % rlc_p->size_input_sdus_buffer;
-
   rlc_p->stat_tx_pdcp_sdu   += 1;
   rlc_p->stat_tx_pdcp_bytes += ((struct rlc_um_tx_sdu_management *) (sdu_pP->data))->sdu_size;
-
   MSC_LOG_RX_MESSAGE(
     (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_ENB:MSC_RLC_UE,
     (ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_PDCP_ENB:MSC_PDCP_UE,
@@ -732,74 +625,61 @@ rlc_um_data_req (const protocol_ctxt_t* const ctxt_pP, void *rlc_pP, mem_block_t
     MSC_AS_TIME_FMT" "PROTOCOL_RLC_UM_MSC_FMT" DATA-REQ size %u",
     MSC_AS_TIME_ARGS(ctxt_pP),
     PROTOCOL_RLC_UM_MSC_ARGS(ctxt_pP, rlc_p),
-    ((struct rlc_um_tx_sdu_management*) (sdu_pP->data))->sdu_size);
-
-
-#   if TRACE_RLC_UM_PDU
-  data_offset = sizeof (struct rlc_um_data_req_alloc);
-  data_size   = ((struct rlc_um_tx_sdu_management *)(sdu_pP->data))->sdu_size;
-  message_string_size += sprintf(&message_string[message_string_size], "Bearer      : %u\n", rlc_p->rb_id);
-  message_string_size += sprintf(&message_string[message_string_size], "SDU size    : %u\n", data_size);
-
-  message_string_size += sprintf(&message_string[message_string_size], "\nPayload  : \n");
-  message_string_size += sprintf(&message_string[message_string_size], "------+-------------------------------------------------|\n");
-  message_string_size += sprintf(&message_string[message_string_size], "      |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |\n");
-  message_string_size += sprintf(&message_string[message_string_size], "------+-------------------------------------------------|\n");
+    ((struct rlc_um_tx_sdu_management *) (sdu_pP->data))->sdu_size);
+
+  if (LOG_DEBUGFLAG(DEBUG_RLC) ) {
+    data_offset = sizeof (struct rlc_um_data_req_alloc);
+    data_size = ((struct rlc_um_tx_sdu_management *)(sdu_pP->data))->sdu_size;
+    message_string_size += sprintf(&message_string[message_string_size], "Bearer      : %u\n", rlc_p->rb_id);
+    message_string_size += sprintf(&message_string[message_string_size], "SDU size    : %u\n", data_size);
+    message_string_size += sprintf(&message_string[message_string_size], "\nPayload  : \n");
+    message_string_size += sprintf(&message_string[message_string_size], "------+-------------------------------------------------|\n");
+    message_string_size += sprintf(&message_string[message_string_size], "	|  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |\n");
+    message_string_size += sprintf(&message_string[message_string_size], "------+-------------------------------------------------|\n");
+
+    for (octet_index = 0; octet_index < data_size; octet_index++) {
+      if ((octet_index % 16) == 0) {
+        if (octet_index != 0) {
+          message_string_size += sprintf(&message_string[message_string_size], " |\n");
+        }
 
-  for (octet_index = 0; octet_index < data_size; octet_index++) {
-    if ((octet_index % 16) == 0) {
-      if (octet_index != 0) {
-        message_string_size += sprintf(&message_string[message_string_size], " |\n");
+        message_string_size += sprintf(&message_string[message_string_size], " %04d |", octet_index);
       }
 
-      message_string_size += sprintf(&message_string[message_string_size], " %04d |", octet_index);
+      /*
+       * Print every single octet in hexadecimal form
+       */
+      message_string_size += sprintf(&message_string[message_string_size], " %02x", ((uint8_t *)(&sdu_pP->data[data_offset]))[octet_index]);
+      /*
+       * Align newline and pipes according to the octets in groups of 2
+       */
     }
 
     /*
-     * Print every single octet in hexadecimal form
-     */
-    message_string_size += sprintf(&message_string[message_string_size], " %02x", ((uint8_t*)(&sdu_pP->data[data_offset]))[octet_index]);
-    /*
-     * Align newline and pipes according to the octets in groups of 2
+     * Append enough spaces and put final pipe
      */
-  }
+    for (index = octet_index; index < 16; ++index) {
+      message_string_size += sprintf(&message_string[message_string_size], "   ");
+    }
 
-  /*
-   * Append enough spaces and put final pipe
-   */
-  for (index = octet_index; index < 16; ++index) {
-    message_string_size += sprintf(&message_string[message_string_size], "   ");
+    LOG_UI(RLC, "%s|\n", message_string);
   }
 
-  message_string_size += sprintf(&message_string[message_string_size], " |\n");
-
-#   if ENABLE_ITTI
-  msg_p = itti_alloc_new_message_sized (ctxt_pP->enb_flag > 0 ? TASK_RLC_ENB:TASK_RLC_UE , RLC_UM_SDU_REQ, message_string_size + sizeof (IttiMsgText));
-  msg_p->ittiMsg.rlc_um_sdu_req.size = message_string_size;
-  memcpy(&msg_p->ittiMsg.rlc_um_sdu_req.text, message_string, message_string_size);
-
-  itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
-
-#else
-  LOG_T(RLC, "%s", message_string);
-#endif
-#   endif
   RLC_UM_MUTEX_LOCK(&rlc_p->lock_input_sdus, ctxt_pP, rlc_p);
   rlc_p->buffer_occupancy += ((struct rlc_um_tx_sdu_management *) (sdu_pP->data))->sdu_size;
   list_add_tail_eurecom(sdu_pP, &rlc_p->input_sdus);
   RLC_UM_MUTEX_UNLOCK(&rlc_p->lock_input_sdus);
-#if DEBUG_RLC_CONGESTION
-#if MESSAGE_CHART_GENERATOR
-  if (rlc_p->buffer_occupancy > 4096) {
+
+  if (MESSAGE_CHART_GENERATOR) {
+    if (rlc_p->buffer_occupancy > 4096) {
       MSC_LOG_EVENT((ctxt_pP->enb_flag == ENB_FLAG_YES) ? MSC_RLC_ENB:MSC_RLC_UE,\
-                             "0 "PROTOCOL_RLC_AM_MSC_FMT" BO %u bytes",\
-                             PROTOCOL_RLC_AM_MSC_ARGS(ctxt_pP,rlc_pP), rlc_p->buffer_occupancy);
+                    "0 "PROTOCOL_RLC_AM_MSC_FMT" BO %u bytes",\
+                    PROTOCOL_RLC_AM_MSC_ARGS(ctxt_pP,rlc_p), rlc_p->buffer_occupancy);
+    }
   }
-#else
-  LOG_W(RLC, PROTOCOL_RLC_UM_CTXT_FMT" BO %d , NB SDU %d\n",
+
+  LOG_T(RLC, PROTOCOL_RLC_UM_CTXT_FMT" BO %d , NB SDU %d\n",
         PROTOCOL_RLC_UM_CTXT_ARGS(ctxt_pP,rlc_p),
         rlc_p->buffer_occupancy,
         rlc_p->input_sdus.nb_elements);
-#endif
-#endif
 }
diff --git a/openair2/LAYER2/RLC/rlc.c b/openair2/LAYER2/RLC/rlc.c
index b65f2b02744c8cb344e28f4b2c365be4f1d7d256..e5d9977de75b3f0a16570cada2921ad32355d80d 100644
--- a/openair2/LAYER2/RLC/rlc.c
+++ b/openair2/LAYER2/RLC/rlc.c
@@ -34,23 +34,23 @@
 #include "common/utils/LOG/log.h"
 #include "UTIL/OCG/OCG_vars.h"
 #include "common/utils/LOG/vcd_signal_dumper.h"
-
+#include "targets/COMMON/openairinterface5g_limits.h"
 #include "assertions.h"
 
 extern boolean_t pdcp_data_ind(
-  const protocol_ctxt_t* const ctxt_pP,
+  const protocol_ctxt_t *const ctxt_pP,
   const srb_flag_t srb_flagP,
   const MBMS_flag_t MBMS_flagP,
   const rb_id_t rb_idP,
   const sdu_size_t sdu_buffer_sizeP,
-  mem_block_t* const sdu_buffer_pP);
+  mem_block_t *const sdu_buffer_pP);
 
 #define DEBUG_RLC_PDCP_INTERFACE 1
 //#define TRACE_RLC_PAYLOAD 1
 #define DEBUG_RLC_DATA_REQ 1
 
 //-----------------------------------------------------------------------------
-void rlc_util_print_hex_octets(comp_name_t componentP, unsigned char* dataP, const signed long sizeP)
+void rlc_util_print_hex_octets(comp_name_t componentP, unsigned char *dataP, const signed long sizeP)
 //-----------------------------------------------------------------------------
 {
   unsigned long octet_index = 0;
@@ -59,9 +59,6 @@ void rlc_util_print_hex_octets(comp_name_t componentP, unsigned char* dataP, con
     return;
   }
 
-
-
-
   LOG_T(componentP, "+-----+-------------------------------------------------+\n");
   LOG_T(componentP, "|     |  0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f |\n");
   LOG_T(componentP, "+-----+-------------------------------------------------+\n");
@@ -98,38 +95,37 @@ void rlc_util_print_hex_octets(comp_name_t componentP, unsigned char* dataP, con
 
 //-----------------------------------------------------------------------------
 rlc_op_status_t rlc_stat_req     (
-  const protocol_ctxt_t* const ctxt_pP,
+  const protocol_ctxt_t *const ctxt_pP,
   const srb_flag_t    srb_flagP,
   const rb_id_t       rb_idP,
-  unsigned int* stat_rlc_mode,
-  unsigned int* stat_tx_pdcp_sdu,
-  unsigned int* stat_tx_pdcp_bytes,
-  unsigned int* stat_tx_pdcp_sdu_discarded,
-  unsigned int* stat_tx_pdcp_bytes_discarded,
-  unsigned int* stat_tx_data_pdu,
-  unsigned int* stat_tx_data_bytes,
-  unsigned int* stat_tx_retransmit_pdu_by_status,
-  unsigned int* stat_tx_retransmit_bytes_by_status,
-  unsigned int* stat_tx_retransmit_pdu,
-  unsigned int* stat_tx_retransmit_bytes,
-  unsigned int* stat_tx_control_pdu,
-  unsigned int* stat_tx_control_bytes,
-  unsigned int* stat_rx_pdcp_sdu,
-  unsigned int* stat_rx_pdcp_bytes,
-  unsigned int* stat_rx_data_pdus_duplicate,
-  unsigned int* stat_rx_data_bytes_duplicate,
-  unsigned int* stat_rx_data_pdu,
-  unsigned int* stat_rx_data_bytes,
-  unsigned int* stat_rx_data_pdu_dropped,
-  unsigned int* stat_rx_data_bytes_dropped,
-  unsigned int* stat_rx_data_pdu_out_of_window,
-  unsigned int* stat_rx_data_bytes_out_of_window,
-  unsigned int* stat_rx_control_pdu,
-  unsigned int* stat_rx_control_bytes,
-  unsigned int* stat_timer_reordering_timed_out,
-  unsigned int* stat_timer_poll_retransmit_timed_out,
-  unsigned int* stat_timer_status_prohibit_timed_out)
-{
+  unsigned int *stat_rlc_mode,
+  unsigned int *stat_tx_pdcp_sdu,
+  unsigned int *stat_tx_pdcp_bytes,
+  unsigned int *stat_tx_pdcp_sdu_discarded,
+  unsigned int *stat_tx_pdcp_bytes_discarded,
+  unsigned int *stat_tx_data_pdu,
+  unsigned int *stat_tx_data_bytes,
+  unsigned int *stat_tx_retransmit_pdu_by_status,
+  unsigned int *stat_tx_retransmit_bytes_by_status,
+  unsigned int *stat_tx_retransmit_pdu,
+  unsigned int *stat_tx_retransmit_bytes,
+  unsigned int *stat_tx_control_pdu,
+  unsigned int *stat_tx_control_bytes,
+  unsigned int *stat_rx_pdcp_sdu,
+  unsigned int *stat_rx_pdcp_bytes,
+  unsigned int *stat_rx_data_pdus_duplicate,
+  unsigned int *stat_rx_data_bytes_duplicate,
+  unsigned int *stat_rx_data_pdu,
+  unsigned int *stat_rx_data_bytes,
+  unsigned int *stat_rx_data_pdu_dropped,
+  unsigned int *stat_rx_data_bytes_dropped,
+  unsigned int *stat_rx_data_pdu_out_of_window,
+  unsigned int *stat_rx_data_bytes_out_of_window,
+  unsigned int *stat_rx_control_pdu,
+  unsigned int *stat_rx_control_bytes,
+  unsigned int *stat_timer_reordering_timed_out,
+  unsigned int *stat_timer_poll_retransmit_timed_out,
+  unsigned int *stat_timer_status_prohibit_timed_out) {
   //-----------------------------------------------------------------------------
   rlc_mode_t             rlc_mode        = RLC_MODE_NONE;
   rlc_union_t           *rlc_union_p     = NULL;
@@ -137,182 +133,183 @@ rlc_op_status_t rlc_stat_req     (
   hashtable_rc_t         h_rc;
 
   //AssertFatal (rb_idP < NB_RB_MAX, "RB id is too high (%u/%d)!\n", rb_idP, NB_RB_MAX);
-	if(rb_idP >= NB_RB_MAX){
-		LOG_E(RLC, "RB id is too high (%u/%d)!\n", rb_idP, NB_RB_MAX);
-		return RLC_OP_STATUS_BAD_PARAMETER;
-	}
-	
+  if(rb_idP >= NB_RB_MAX) {
+    LOG_E(RLC, "RB id is too high (%u/%d)!\n", rb_idP, NB_RB_MAX);
+    return RLC_OP_STATUS_BAD_PARAMETER;
+  }
+
   key = RLC_COLL_KEY_VALUE(ctxt_pP->module_id, ctxt_pP->rnti, ctxt_pP->enb_flag, rb_idP, srb_flagP);
-  h_rc = hashtable_get(rlc_coll_p, key, (void**)&rlc_union_p);
+  h_rc = hashtable_get(rlc_coll_p, key, (void **)&rlc_union_p);
 
   if (h_rc == HASH_TABLE_OK) {
     rlc_mode = rlc_union_p->mode;
   }
+
   *stat_rlc_mode                     = rlc_mode;
+
   switch (rlc_mode) {
-  case RLC_MODE_NONE:
-    *stat_tx_pdcp_sdu                     = 0;
-    *stat_tx_pdcp_bytes                   = 0;
-    *stat_tx_pdcp_sdu_discarded           = 0;
-    *stat_tx_pdcp_bytes_discarded         = 0;
-    *stat_tx_data_pdu                     = 0;
-    *stat_tx_data_bytes                   = 0;
-    *stat_tx_retransmit_pdu_by_status     = 0;
-    *stat_tx_retransmit_bytes_by_status   = 0;
-    *stat_tx_retransmit_pdu               = 0;
-    *stat_tx_retransmit_bytes             = 0;
-    *stat_tx_control_pdu                  = 0;
-    *stat_tx_control_bytes                = 0;
-    *stat_rx_pdcp_sdu                     = 0;
-    *stat_rx_pdcp_bytes                   = 0;
-    *stat_rx_data_pdus_duplicate          = 0;
-    *stat_rx_data_bytes_duplicate         = 0;
-    *stat_rx_data_pdu                     = 0;
-    *stat_rx_data_bytes                   = 0;
-    *stat_rx_data_pdu_dropped             = 0;
-    *stat_rx_data_bytes_dropped           = 0;
-    *stat_rx_data_pdu_out_of_window       = 0;
-    *stat_rx_data_bytes_out_of_window     = 0;
-    *stat_rx_control_pdu                  = 0;
-    *stat_rx_control_bytes                = 0;
-    *stat_timer_reordering_timed_out      = 0;
-    *stat_timer_poll_retransmit_timed_out = 0;
-    *stat_timer_status_prohibit_timed_out = 0;
-    return RLC_OP_STATUS_BAD_PARAMETER;
-    break;
-
-  case RLC_MODE_AM:
-    rlc_am_stat_req(ctxt_pP,
-                    &rlc_union_p->rlc.am,
-                    stat_tx_pdcp_sdu,
-                    stat_tx_pdcp_bytes,
-                    stat_tx_pdcp_sdu_discarded,
-                    stat_tx_pdcp_bytes_discarded,
-                    stat_tx_data_pdu,
-                    stat_tx_data_bytes,
-                    stat_tx_retransmit_pdu_by_status,
-                    stat_tx_retransmit_bytes_by_status,
-                    stat_tx_retransmit_pdu,
-                    stat_tx_retransmit_bytes,
-                    stat_tx_control_pdu,
-                    stat_tx_control_bytes,
-                    stat_rx_pdcp_sdu,
-                    stat_rx_pdcp_bytes,
-                    stat_rx_data_pdus_duplicate,
-                    stat_rx_data_bytes_duplicate,
-                    stat_rx_data_pdu,
-                    stat_rx_data_bytes,
-                    stat_rx_data_pdu_dropped,
-                    stat_rx_data_bytes_dropped,
-                    stat_rx_data_pdu_out_of_window,
-                    stat_rx_data_bytes_out_of_window,
-                    stat_rx_control_pdu,
-                    stat_rx_control_bytes,
-                    stat_timer_reordering_timed_out,
-                    stat_timer_poll_retransmit_timed_out,
-                    stat_timer_status_prohibit_timed_out);
-    return RLC_OP_STATUS_OK;
-    break;
-
-  case RLC_MODE_UM:
-    *stat_tx_retransmit_pdu_by_status     = 0;
-    *stat_tx_retransmit_bytes_by_status   = 0;
-    *stat_tx_retransmit_pdu               = 0;
-    *stat_tx_retransmit_bytes             = 0;
-    *stat_tx_control_pdu                  = 0;
-    *stat_tx_control_bytes                = 0;
-    *stat_rx_data_pdu_dropped             = 0;
-    *stat_rx_data_bytes_dropped           = 0;
-    *stat_rx_data_pdu_out_of_window       = 0;
-    *stat_rx_data_bytes_out_of_window     = 0;
-    *stat_timer_poll_retransmit_timed_out = 0;
-    *stat_timer_status_prohibit_timed_out = 0;
-    rlc_um_stat_req (&rlc_union_p->rlc.um,
-                     stat_tx_pdcp_sdu,
-                     stat_tx_pdcp_bytes,
-                     stat_tx_pdcp_sdu_discarded,
-                     stat_tx_pdcp_bytes_discarded,
-                     stat_tx_data_pdu,
-                     stat_tx_data_bytes,
-                     stat_rx_pdcp_sdu,
-                     stat_rx_pdcp_bytes,
-                     stat_rx_data_pdus_duplicate,
-                     stat_rx_data_bytes_duplicate,
-                     stat_rx_data_pdu,
-                     stat_rx_data_bytes,
-                     stat_rx_data_pdu_dropped,
-                     stat_rx_data_bytes_dropped,
-                     stat_rx_data_pdu_out_of_window,
-                     stat_rx_data_bytes_out_of_window,
-                     stat_timer_reordering_timed_out);
-    return RLC_OP_STATUS_OK;
-    break;
-
-  case RLC_MODE_TM:
-    *stat_tx_pdcp_sdu                     = 0;
-    *stat_tx_pdcp_bytes                   = 0;
-    *stat_tx_pdcp_sdu_discarded           = 0;
-    *stat_tx_pdcp_bytes_discarded         = 0;
-    *stat_tx_data_pdu                     = 0;
-    *stat_tx_data_bytes                   = 0;
-    *stat_tx_retransmit_pdu_by_status     = 0;
-    *stat_tx_retransmit_bytes_by_status   = 0;
-    *stat_tx_retransmit_pdu               = 0;
-    *stat_tx_retransmit_bytes             = 0;
-    *stat_tx_control_pdu                  = 0;
-    *stat_tx_control_bytes                = 0;
-    *stat_rx_pdcp_sdu                     = 0;
-    *stat_rx_pdcp_bytes                   = 0;
-    *stat_rx_data_pdus_duplicate          = 0;
-    *stat_rx_data_bytes_duplicate         = 0;
-    *stat_rx_data_pdu                     = 0;
-    *stat_rx_data_bytes                   = 0;
-    *stat_rx_data_pdu_dropped             = 0;
-    *stat_rx_data_bytes_dropped           = 0;
-    *stat_rx_data_pdu_out_of_window       = 0;
-    *stat_rx_data_bytes_out_of_window     = 0;
-    *stat_rx_control_pdu                  = 0;
-    *stat_rx_control_bytes                = 0;
-    *stat_timer_reordering_timed_out      = 0;
-    *stat_timer_poll_retransmit_timed_out = 0;
-    *stat_timer_status_prohibit_timed_out = 0;
-    return RLC_OP_STATUS_BAD_PARAMETER;
-    break;
-
-  default:
-    *stat_tx_pdcp_sdu                     = 0;
-    *stat_tx_pdcp_bytes                   = 0;
-    *stat_tx_pdcp_sdu_discarded           = 0;
-    *stat_tx_pdcp_bytes_discarded         = 0;
-    *stat_tx_data_pdu                     = 0;
-    *stat_tx_data_bytes                   = 0;
-    *stat_tx_retransmit_pdu_by_status     = 0;
-    *stat_tx_retransmit_bytes_by_status   = 0;
-    *stat_tx_retransmit_pdu               = 0;
-    *stat_tx_retransmit_bytes             = 0;
-    *stat_tx_control_pdu                  = 0;
-    *stat_tx_control_bytes                = 0;
-    *stat_rx_pdcp_sdu                     = 0;
-    *stat_rx_pdcp_bytes                   = 0;
-    *stat_rx_data_pdus_duplicate          = 0;
-    *stat_rx_data_bytes_duplicate         = 0;
-    *stat_rx_data_pdu                     = 0;
-    *stat_rx_data_bytes                   = 0;
-    *stat_rx_data_pdu_dropped             = 0;
-    *stat_rx_data_bytes_dropped           = 0;
-    *stat_rx_data_pdu_out_of_window       = 0;
-    *stat_rx_data_bytes_out_of_window     = 0;
-    *stat_rx_control_pdu                  = 0;
-    *stat_rx_control_bytes                = 0;
-
-    *stat_timer_poll_retransmit_timed_out = 0;
-    *stat_timer_status_prohibit_timed_out = 0;
-    return RLC_OP_STATUS_BAD_PARAMETER;
+    case RLC_MODE_NONE:
+      *stat_tx_pdcp_sdu                     = 0;
+      *stat_tx_pdcp_bytes                   = 0;
+      *stat_tx_pdcp_sdu_discarded           = 0;
+      *stat_tx_pdcp_bytes_discarded         = 0;
+      *stat_tx_data_pdu                     = 0;
+      *stat_tx_data_bytes                   = 0;
+      *stat_tx_retransmit_pdu_by_status     = 0;
+      *stat_tx_retransmit_bytes_by_status   = 0;
+      *stat_tx_retransmit_pdu               = 0;
+      *stat_tx_retransmit_bytes             = 0;
+      *stat_tx_control_pdu                  = 0;
+      *stat_tx_control_bytes                = 0;
+      *stat_rx_pdcp_sdu                     = 0;
+      *stat_rx_pdcp_bytes                   = 0;
+      *stat_rx_data_pdus_duplicate          = 0;
+      *stat_rx_data_bytes_duplicate         = 0;
+      *stat_rx_data_pdu                     = 0;
+      *stat_rx_data_bytes                   = 0;
+      *stat_rx_data_pdu_dropped             = 0;
+      *stat_rx_data_bytes_dropped           = 0;
+      *stat_rx_data_pdu_out_of_window       = 0;
+      *stat_rx_data_bytes_out_of_window     = 0;
+      *stat_rx_control_pdu                  = 0;
+      *stat_rx_control_bytes                = 0;
+      *stat_timer_reordering_timed_out      = 0;
+      *stat_timer_poll_retransmit_timed_out = 0;
+      *stat_timer_status_prohibit_timed_out = 0;
+      return RLC_OP_STATUS_BAD_PARAMETER;
+      break;
+
+    case RLC_MODE_AM:
+      rlc_am_stat_req(ctxt_pP,
+                      &rlc_union_p->rlc.am,
+                      stat_tx_pdcp_sdu,
+                      stat_tx_pdcp_bytes,
+                      stat_tx_pdcp_sdu_discarded,
+                      stat_tx_pdcp_bytes_discarded,
+                      stat_tx_data_pdu,
+                      stat_tx_data_bytes,
+                      stat_tx_retransmit_pdu_by_status,
+                      stat_tx_retransmit_bytes_by_status,
+                      stat_tx_retransmit_pdu,
+                      stat_tx_retransmit_bytes,
+                      stat_tx_control_pdu,
+                      stat_tx_control_bytes,
+                      stat_rx_pdcp_sdu,
+                      stat_rx_pdcp_bytes,
+                      stat_rx_data_pdus_duplicate,
+                      stat_rx_data_bytes_duplicate,
+                      stat_rx_data_pdu,
+                      stat_rx_data_bytes,
+                      stat_rx_data_pdu_dropped,
+                      stat_rx_data_bytes_dropped,
+                      stat_rx_data_pdu_out_of_window,
+                      stat_rx_data_bytes_out_of_window,
+                      stat_rx_control_pdu,
+                      stat_rx_control_bytes,
+                      stat_timer_reordering_timed_out,
+                      stat_timer_poll_retransmit_timed_out,
+                      stat_timer_status_prohibit_timed_out);
+      return RLC_OP_STATUS_OK;
+      break;
+
+    case RLC_MODE_UM:
+      *stat_tx_retransmit_pdu_by_status     = 0;
+      *stat_tx_retransmit_bytes_by_status   = 0;
+      *stat_tx_retransmit_pdu               = 0;
+      *stat_tx_retransmit_bytes             = 0;
+      *stat_tx_control_pdu                  = 0;
+      *stat_tx_control_bytes                = 0;
+      *stat_rx_data_pdu_dropped             = 0;
+      *stat_rx_data_bytes_dropped           = 0;
+      *stat_rx_data_pdu_out_of_window       = 0;
+      *stat_rx_data_bytes_out_of_window     = 0;
+      *stat_timer_poll_retransmit_timed_out = 0;
+      *stat_timer_status_prohibit_timed_out = 0;
+      rlc_um_stat_req (&rlc_union_p->rlc.um,
+                       stat_tx_pdcp_sdu,
+                       stat_tx_pdcp_bytes,
+                       stat_tx_pdcp_sdu_discarded,
+                       stat_tx_pdcp_bytes_discarded,
+                       stat_tx_data_pdu,
+                       stat_tx_data_bytes,
+                       stat_rx_pdcp_sdu,
+                       stat_rx_pdcp_bytes,
+                       stat_rx_data_pdus_duplicate,
+                       stat_rx_data_bytes_duplicate,
+                       stat_rx_data_pdu,
+                       stat_rx_data_bytes,
+                       stat_rx_data_pdu_dropped,
+                       stat_rx_data_bytes_dropped,
+                       stat_rx_data_pdu_out_of_window,
+                       stat_rx_data_bytes_out_of_window,
+                       stat_timer_reordering_timed_out);
+      return RLC_OP_STATUS_OK;
+      break;
+
+    case RLC_MODE_TM:
+      *stat_tx_pdcp_sdu                     = 0;
+      *stat_tx_pdcp_bytes                   = 0;
+      *stat_tx_pdcp_sdu_discarded           = 0;
+      *stat_tx_pdcp_bytes_discarded         = 0;
+      *stat_tx_data_pdu                     = 0;
+      *stat_tx_data_bytes                   = 0;
+      *stat_tx_retransmit_pdu_by_status     = 0;
+      *stat_tx_retransmit_bytes_by_status   = 0;
+      *stat_tx_retransmit_pdu               = 0;
+      *stat_tx_retransmit_bytes             = 0;
+      *stat_tx_control_pdu                  = 0;
+      *stat_tx_control_bytes                = 0;
+      *stat_rx_pdcp_sdu                     = 0;
+      *stat_rx_pdcp_bytes                   = 0;
+      *stat_rx_data_pdus_duplicate          = 0;
+      *stat_rx_data_bytes_duplicate         = 0;
+      *stat_rx_data_pdu                     = 0;
+      *stat_rx_data_bytes                   = 0;
+      *stat_rx_data_pdu_dropped             = 0;
+      *stat_rx_data_bytes_dropped           = 0;
+      *stat_rx_data_pdu_out_of_window       = 0;
+      *stat_rx_data_bytes_out_of_window     = 0;
+      *stat_rx_control_pdu                  = 0;
+      *stat_rx_control_bytes                = 0;
+      *stat_timer_reordering_timed_out      = 0;
+      *stat_timer_poll_retransmit_timed_out = 0;
+      *stat_timer_status_prohibit_timed_out = 0;
+      return RLC_OP_STATUS_BAD_PARAMETER;
+      break;
+
+    default:
+      *stat_tx_pdcp_sdu                     = 0;
+      *stat_tx_pdcp_bytes                   = 0;
+      *stat_tx_pdcp_sdu_discarded           = 0;
+      *stat_tx_pdcp_bytes_discarded         = 0;
+      *stat_tx_data_pdu                     = 0;
+      *stat_tx_data_bytes                   = 0;
+      *stat_tx_retransmit_pdu_by_status     = 0;
+      *stat_tx_retransmit_bytes_by_status   = 0;
+      *stat_tx_retransmit_pdu               = 0;
+      *stat_tx_retransmit_bytes             = 0;
+      *stat_tx_control_pdu                  = 0;
+      *stat_tx_control_bytes                = 0;
+      *stat_rx_pdcp_sdu                     = 0;
+      *stat_rx_pdcp_bytes                   = 0;
+      *stat_rx_data_pdus_duplicate          = 0;
+      *stat_rx_data_bytes_duplicate         = 0;
+      *stat_rx_data_pdu                     = 0;
+      *stat_rx_data_bytes                   = 0;
+      *stat_rx_data_pdu_dropped             = 0;
+      *stat_rx_data_bytes_dropped           = 0;
+      *stat_rx_data_pdu_out_of_window       = 0;
+      *stat_rx_data_bytes_out_of_window     = 0;
+      *stat_rx_control_pdu                  = 0;
+      *stat_rx_control_bytes                = 0;
+      *stat_timer_poll_retransmit_timed_out = 0;
+      *stat_timer_status_prohibit_timed_out = 0;
+      return RLC_OP_STATUS_BAD_PARAMETER;
   }
 }
 
 //-----------------------------------------------------------------------------
-rlc_op_status_t rlc_data_req     (const protocol_ctxt_t* const ctxt_pP,
+rlc_op_status_t rlc_data_req     (const protocol_ctxt_t *const ctxt_pP,
                                   const srb_flag_t   srb_flagP,
                                   const MBMS_flag_t  MBMS_flagP,
                                   const rb_id_t      rb_idP,
@@ -321,18 +318,16 @@ rlc_op_status_t rlc_data_req     (const protocol_ctxt_t* const ctxt_pP,
                                   sdu_size_t   sdu_sizeP,
                                   mem_block_t *sdu_pP
 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-                                  ,const uint32_t * const sourceL2Id
-                                  ,const uint32_t * const destinationL2Id
+  ,const uint32_t *const sourceL2Id
+  ,const uint32_t *const destinationL2Id
 #endif
-                                  )
-{
+                                 ) {
   //-----------------------------------------------------------------------------
   mem_block_t           *new_sdu_p    = NULL;
   rlc_mode_t             rlc_mode     = RLC_MODE_NONE;
   rlc_union_t           *rlc_union_p = NULL;
   hash_key_t             key         = HASHTABLE_NOT_A_KEY_VALUE;
   hashtable_rc_t         h_rc;
-
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
   rlc_mbms_id_t         *mbms_id_p  = NULL;
   logical_chan_id_t      log_ch_id  = 0;
@@ -351,32 +346,33 @@ rlc_op_status_t rlc_data_req     (const protocol_ctxt_t* const ctxt_pP,
 #else
   AssertFatal(MBMS_flagP == 0, "MBMS_flagP %u", MBMS_flagP);
 #endif
-
 #if T_TRACER
+
   if (ctxt_pP->enb_flag)
     T(T_ENB_RLC_DL, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->rnti), T_INT(rb_idP), T_INT(sdu_sizeP));
+
 #endif
 
   if (MBMS_flagP) {
     //AssertFatal (rb_idP < NB_RB_MBMS_MAX, "RB id is too high (%u/%d)!\n", rb_idP, NB_RB_MBMS_MAX);
-  	if(rb_idP >= NB_RB_MBMS_MAX){
-  		LOG_E(RLC, "RB id is too high (%u/%d)!\n", rb_idP, NB_RB_MBMS_MAX);
-  		return RLC_OP_STATUS_BAD_PARAMETER;
-  	}
+    if(rb_idP >= NB_RB_MBMS_MAX) {
+      LOG_E(RLC, "RB id is too high (%u/%d)!\n", rb_idP, NB_RB_MBMS_MAX);
+      return RLC_OP_STATUS_BAD_PARAMETER;
+    }
   } else {
     //AssertFatal (rb_idP < NB_RB_MAX, "RB id is too high (%u/%d)!\n", rb_idP, NB_RB_MAX);
-  	if(rb_idP >= NB_RB_MAX){
-  		LOG_E(RLC, "RB id is too high (%u/%d)!\n", rb_idP, NB_RB_MAX);
-  		return RLC_OP_STATUS_BAD_PARAMETER;
-  	}
+    if(rb_idP >= NB_RB_MAX) {
+      LOG_E(RLC, "RB id is too high (%u/%d)!\n", rb_idP, NB_RB_MAX);
+      return RLC_OP_STATUS_BAD_PARAMETER;
+    }
   }
 
   //DevAssert(sdu_pP != NULL);
-	if(sdu_pP == NULL){
-		LOG_E(RLC, "sdu_pP == NULL\n");
-		return RLC_OP_STATUS_BAD_PARAMETER;
-	}
-	
+  if(sdu_pP == NULL) {
+    LOG_E(RLC, "sdu_pP == NULL\n");
+    return RLC_OP_STATUS_BAD_PARAMETER;
+  }
+
   //DevCheck(sdu_sizeP > 0, sdu_sizeP, 0, 0);
   if(sdu_sizeP <= 0) {
     LOG_E(RLC, "sdu_sizeP %d, file %s, line %d\n", sdu_sizeP, __FILE__ ,__LINE__);
@@ -386,9 +382,7 @@ rlc_op_status_t rlc_data_req     (const protocol_ctxt_t* const ctxt_pP,
 #if (LTE_RRC_VERSION < MAKE_VERSION(10, 0, 0))
   DevCheck(MBMS_flagP == 0, MBMS_flagP, 0, 0);
 #endif
-
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ,VCD_FUNCTION_IN);
-
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
 
   if (MBMS_flagP == TRUE) {
@@ -402,31 +396,31 @@ rlc_op_status_t rlc_data_req     (const protocol_ctxt_t* const ctxt_pP,
 
     key = RLC_COLL_KEY_MBMS_VALUE(ctxt_pP->module_id, ctxt_pP->rnti, ctxt_pP->enb_flag, mbms_id_p->service_id, mbms_id_p->session_id);
   }
-  if (sourceL2Id && destinationL2Id){
-	  LOG_I (RLC, "RLC_COLL_KEY_VALUE: ctxt_pP->module_id: %d, ctxt_pP->rnti: %d, ctxt_pP->enb_flag: %d, rb_idP:%d, srb_flagP: %d \n \n", ctxt_pP->module_id, ctxt_pP->rnti, ctxt_pP->enb_flag, rb_idP, srb_flagP);
-	      key = RLC_COLL_KEY_VALUE(ctxt_pP->module_id, ctxt_pP->rnti, ctxt_pP->enb_flag, rb_idP, srb_flagP);
-
-	      //Thinh's line originally uncommented
-	      //key = RLC_COLL_KEY_SOURCE_DEST_VALUE(ctxt_pP->module_id, ctxt_pP->rnti, ctxt_pP->enb_flag, rb_idP, *sourceL2Id, *destinationL2Id, srb_flagP);
 
-
-     //key_lcid = RLC_COLL_KEY_LCID_SOURCE_DEST_VALUE(ctxt_pP->module_id, ctxt_pP->rnti, ctxt_pP->enb_flag, chan_idP, *sourceL2Id, *destinationL2Id, srb_flagP);
+  if (sourceL2Id && destinationL2Id) {
+    LOG_D (RLC, "RLC_COLL_KEY_VALUE: ctxt_pP->module_id: %d, ctxt_pP->rnti: %d, ctxt_pP->enb_flag: %d, rb_idP:%d, srb_flagP: %d \n \n", ctxt_pP->module_id, ctxt_pP->rnti, ctxt_pP->enb_flag, rb_idP,
+           srb_flagP);
+    key = RLC_COLL_KEY_VALUE(ctxt_pP->module_id, ctxt_pP->rnti, ctxt_pP->enb_flag, rb_idP, srb_flagP);
+    //Thinh's line originally uncommented
+    //key = RLC_COLL_KEY_SOURCE_DEST_VALUE(ctxt_pP->module_id, ctxt_pP->rnti, ctxt_pP->enb_flag, rb_idP, *sourceL2Id, *destinationL2Id, srb_flagP);
+    //key_lcid = RLC_COLL_KEY_LCID_SOURCE_DEST_VALUE(ctxt_pP->module_id, ctxt_pP->rnti, ctxt_pP->enb_flag, chan_idP, *sourceL2Id, *destinationL2Id, srb_flagP);
   } else
 #endif
   {
-	  LOG_I (RLC, "RLC_COLL_KEY_VALUE: ctxt_pP->module_id: %d, ctxt_pP->rnti: %d, ctxt_pP->enb_flag: %d, rb_idP:%d, srb_flagP: %d \n \n", ctxt_pP->module_id, ctxt_pP->rnti, ctxt_pP->enb_flag, rb_idP, srb_flagP);
+    LOG_D (RLC, "RLC_COLL_KEY_VALUE: ctxt_pP->module_id: %d, ctxt_pP->rnti: %d, ctxt_pP->enb_flag: %d, rb_idP:%d, srb_flagP: %d \n \n", ctxt_pP->module_id, ctxt_pP->rnti, ctxt_pP->enb_flag, rb_idP,
+           srb_flagP);
     key = RLC_COLL_KEY_VALUE(ctxt_pP->module_id, ctxt_pP->rnti, ctxt_pP->enb_flag, rb_idP, srb_flagP);
   }
 
-  h_rc = hashtable_get(rlc_coll_p, key, (void**)&rlc_union_p);
+  h_rc = hashtable_get(rlc_coll_p, key, (void **)&rlc_union_p);
 
   if (h_rc == HASH_TABLE_OK) {
     rlc_mode = rlc_union_p->mode;
   } else {
     rlc_mode = RLC_MODE_NONE;
     //AssertFatal (0 , "RLC not configured key %ju\n", key);
-  	LOG_E(RLC, "not configured key %lu\n", key);
-  	return RLC_OP_STATUS_OUT_OF_RESSOURCES;
+    LOG_E(RLC, "not configured key %lu\n", key);
+    return RLC_OP_STATUS_OUT_OF_RESSOURCES;
   }
 
   if (MBMS_flagP == 0) {
@@ -434,111 +428,105 @@ rlc_op_status_t rlc_data_req     (const protocol_ctxt_t* const ctxt_pP,
           PROTOCOL_CTXT_ARGS(ctxt_pP),
           rb_idP);
 #if defined(TRACE_RLC_PAYLOAD)
-    rlc_util_print_hex_octets(RLC, (unsigned char*)sdu_pP->data, sdu_sizeP);
+    rlc_util_print_hex_octets(RLC, (unsigned char *)sdu_pP->data, sdu_sizeP);
 #endif
-
 #ifdef DEBUG_RLC_DATA_REQ
     LOG_D(RLC,"RLC_TYPE : %d\n", rlc_mode);
 #endif
 
     switch (rlc_mode) {
-    case RLC_MODE_NONE:
-      free_mem_block(sdu_pP, __func__);
-      LOG_E(RLC, PROTOCOL_CTXT_FMT" Received RLC_MODE_NONE as rlc_type for rb_id %u\n",
-            PROTOCOL_CTXT_ARGS(ctxt_pP),
-            rb_idP);
-      VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ,VCD_FUNCTION_OUT);
-      return RLC_OP_STATUS_BAD_PARAMETER;
+      case RLC_MODE_NONE:
+        free_mem_block(sdu_pP, __func__);
+        LOG_E(RLC, PROTOCOL_CTXT_FMT" Received RLC_MODE_NONE as rlc_type for rb_id %u\n",
+              PROTOCOL_CTXT_ARGS(ctxt_pP),
+              rb_idP);
+        VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ,VCD_FUNCTION_OUT);
+        return RLC_OP_STATUS_BAD_PARAMETER;
 
-    case RLC_MODE_AM:
+      case RLC_MODE_AM:
 #ifdef DEBUG_RLC_DATA_REQ
-      LOG_D(RLC,"RLC_MODE_AM\n");
+        LOG_D(RLC,"RLC_MODE_AM\n");
 #endif
-      new_sdu_p = get_free_mem_block (sdu_sizeP + sizeof (struct rlc_am_data_req_alloc), __func__);
-
-      if (new_sdu_p != NULL) {
-        // PROCESS OF COMPRESSION HERE:
-        memset (new_sdu_p->data, 0, sizeof (struct rlc_am_data_req_alloc));
-        memcpy (&new_sdu_p->data[sizeof (struct rlc_am_data_req_alloc)], &sdu_pP->data[0], sdu_sizeP);
+        new_sdu_p = get_free_mem_block (sdu_sizeP + sizeof (struct rlc_am_data_req_alloc), __func__);
 
-        ((struct rlc_am_data_req *) (new_sdu_p->data))->data_size = sdu_sizeP;
-        ((struct rlc_am_data_req *) (new_sdu_p->data))->conf = confirmP;
-        ((struct rlc_am_data_req *) (new_sdu_p->data))->mui  = muiP;
-        ((struct rlc_am_data_req *) (new_sdu_p->data))->data_offset = sizeof (struct rlc_am_data_req_alloc);
-        free_mem_block(sdu_pP, __func__);
-        rlc_am_data_req(ctxt_pP, &rlc_union_p->rlc.am, new_sdu_p);
-        VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ,VCD_FUNCTION_OUT);
-        return RLC_OP_STATUS_OK;
-      } else {
-        VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ,VCD_FUNCTION_OUT);
-        free_mem_block(sdu_pP, __func__);
-        return RLC_OP_STATUS_INTERNAL_ERROR;
-      }
-
-      break;
+        if (new_sdu_p != NULL) {
+          // PROCESS OF COMPRESSION HERE:
+          memset (new_sdu_p->data, 0, sizeof (struct rlc_am_data_req_alloc));
+          memcpy (&new_sdu_p->data[sizeof (struct rlc_am_data_req_alloc)], &sdu_pP->data[0], sdu_sizeP);
+          ((struct rlc_am_data_req *) (new_sdu_p->data))->data_size = sdu_sizeP;
+          ((struct rlc_am_data_req *) (new_sdu_p->data))->conf = confirmP;
+          ((struct rlc_am_data_req *) (new_sdu_p->data))->mui  = muiP;
+          ((struct rlc_am_data_req *) (new_sdu_p->data))->data_offset = sizeof (struct rlc_am_data_req_alloc);
+          free_mem_block(sdu_pP, __func__);
+          rlc_am_data_req(ctxt_pP, &rlc_union_p->rlc.am, new_sdu_p);
+          VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ,VCD_FUNCTION_OUT);
+          return RLC_OP_STATUS_OK;
+        } else {
+          VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ,VCD_FUNCTION_OUT);
+          free_mem_block(sdu_pP, __func__);
+          return RLC_OP_STATUS_INTERNAL_ERROR;
+        }
 
-    case RLC_MODE_UM:
-      /* TODO: this is a hack, needs better solution. Let's not use too
-       * much memory and store at maximum 5 millions bytes.
-       */
-      /* look for HACK_RLC_UM_LIMIT for others places related to the hack. Please do not remove this comment. */
-      if (rlc_um_get_buffer_occupancy(&rlc_union_p->rlc.um) > 5000000) {
-        free_mem_block(sdu_pP, __func__);
-        return RLC_OP_STATUS_OUT_OF_RESSOURCES;
-      }
+        break;
 
-      new_sdu_p = get_free_mem_block (sdu_sizeP + sizeof (struct rlc_um_data_req_alloc), __func__);
+      case RLC_MODE_UM:
 
-      if (new_sdu_p != NULL) {
-        // PROCESS OF COMPRESSION HERE:
-        memset (new_sdu_p->data, 0, sizeof (struct rlc_um_data_req_alloc));
-        memcpy (&new_sdu_p->data[sizeof (struct rlc_um_data_req_alloc)], &sdu_pP->data[0], sdu_sizeP);
+        /* TODO: this is a hack, needs better solution. Let's not use too
+         * much memory and store at maximum 5 millions bytes.
+         */
+        /* look for HACK_RLC_UM_LIMIT for others places related to the hack. Please do not remove this comment. */
+        if (rlc_um_get_buffer_occupancy(&rlc_union_p->rlc.um) > 5000000) {
+          free_mem_block(sdu_pP, __func__);
+          return RLC_OP_STATUS_OUT_OF_RESSOURCES;
+        }
 
-        ((struct rlc_um_data_req *) (new_sdu_p->data))->data_size = sdu_sizeP;
-        ((struct rlc_um_data_req *) (new_sdu_p->data))->data_offset = sizeof (struct rlc_um_data_req_alloc);
-        free_mem_block(sdu_pP, __func__);
+        new_sdu_p = get_free_mem_block (sdu_sizeP + sizeof (struct rlc_um_data_req_alloc), __func__);
 
-        rlc_um_data_req(ctxt_pP, &rlc_union_p->rlc.um, new_sdu_p);
+        if (new_sdu_p != NULL) {
+          // PROCESS OF COMPRESSION HERE:
+          memset (new_sdu_p->data, 0, sizeof (struct rlc_um_data_req_alloc));
+          memcpy (&new_sdu_p->data[sizeof (struct rlc_um_data_req_alloc)], &sdu_pP->data[0], sdu_sizeP);
+          ((struct rlc_um_data_req *) (new_sdu_p->data))->data_size = sdu_sizeP;
+          ((struct rlc_um_data_req *) (new_sdu_p->data))->data_offset = sizeof (struct rlc_um_data_req_alloc);
+          free_mem_block(sdu_pP, __func__);
+          rlc_um_data_req(ctxt_pP, &rlc_union_p->rlc.um, new_sdu_p);
+          //free_mem_block(new_sdu, __func__);
+          VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ,VCD_FUNCTION_OUT);
+          return RLC_OP_STATUS_OK;
+        } else {
+          VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ,VCD_FUNCTION_OUT);
+          free_mem_block(sdu_pP, __func__);
+          return RLC_OP_STATUS_INTERNAL_ERROR;
+        }
 
-        //free_mem_block(new_sdu, __func__);
-        VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ,VCD_FUNCTION_OUT);
-        return RLC_OP_STATUS_OK;
-      } else {
-        VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ,VCD_FUNCTION_OUT);
-        free_mem_block(sdu_pP, __func__);
-        return RLC_OP_STATUS_INTERNAL_ERROR;
-      }
+        break;
 
-      break;
+      case RLC_MODE_TM:
+        new_sdu_p = get_free_mem_block (sdu_sizeP + sizeof (struct rlc_tm_data_req_alloc), __func__);
 
-    case RLC_MODE_TM:
-      new_sdu_p = get_free_mem_block (sdu_sizeP + sizeof (struct rlc_tm_data_req_alloc), __func__);
+        if (new_sdu_p != NULL) {
+          // PROCESS OF COMPRESSION HERE:
+          memset (new_sdu_p->data, 0, sizeof (struct rlc_tm_data_req_alloc));
+          memcpy (&new_sdu_p->data[sizeof (struct rlc_tm_data_req_alloc)], &sdu_pP->data[0], sdu_sizeP);
+          ((struct rlc_tm_data_req *) (new_sdu_p->data))->data_size = sdu_sizeP;
+          ((struct rlc_tm_data_req *) (new_sdu_p->data))->data_offset = sizeof (struct rlc_tm_data_req_alloc);
+          free_mem_block(sdu_pP, __func__);
+          rlc_tm_data_req(ctxt_pP, &rlc_union_p->rlc.tm, new_sdu_p);
+          VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ,VCD_FUNCTION_OUT);
+          return RLC_OP_STATUS_OK;
+        } else {
+          //handle_event(ERROR,"FILE %s FONCTION rlc_data_req() LINE %s : out of memory\n", __FILE__, __LINE__);
+          VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ,VCD_FUNCTION_OUT);
+          free_mem_block(sdu_pP, __func__);
+          return RLC_OP_STATUS_INTERNAL_ERROR;
+        }
 
-      if (new_sdu_p != NULL) {
-        // PROCESS OF COMPRESSION HERE:
-        memset (new_sdu_p->data, 0, sizeof (struct rlc_tm_data_req_alloc));
-        memcpy (&new_sdu_p->data[sizeof (struct rlc_tm_data_req_alloc)], &sdu_pP->data[0], sdu_sizeP);
+        break;
 
-        ((struct rlc_tm_data_req *) (new_sdu_p->data))->data_size = sdu_sizeP;
-        ((struct rlc_tm_data_req *) (new_sdu_p->data))->data_offset = sizeof (struct rlc_tm_data_req_alloc);
+      default:
         free_mem_block(sdu_pP, __func__);
-        rlc_tm_data_req(ctxt_pP, &rlc_union_p->rlc.tm, new_sdu_p);
-        VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ,VCD_FUNCTION_OUT);
-        return RLC_OP_STATUS_OK;
-      } else {
-        //handle_event(ERROR,"FILE %s FONCTION rlc_data_req() LINE %s : out of memory\n", __FILE__, __LINE__);
         VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ,VCD_FUNCTION_OUT);
-        free_mem_block(sdu_pP, __func__);
         return RLC_OP_STATUS_INTERNAL_ERROR;
-      }
-
-      break;
-
-    default:
-      free_mem_block(sdu_pP, __func__);
-      VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ,VCD_FUNCTION_OUT);
-      return RLC_OP_STATUS_INTERNAL_ERROR;
-
     }
 
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
@@ -557,7 +545,6 @@ rlc_op_status_t rlc_data_req     (const protocol_ctxt_t* const ctxt_pP,
           ((struct rlc_um_data_req *) (new_sdu_p->data))->data_offset = sizeof (struct rlc_um_data_req_alloc);
           free_mem_block(sdu_pP, __func__);
           rlc_um_data_req(ctxt_pP, &rlc_union_p->rlc.um, new_sdu_p);
-
           //free_mem_block(new_sdu, __func__);
           VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RLC_DATA_REQ,VCD_FUNCTION_OUT);
           return RLC_OP_STATUS_OK;
@@ -578,8 +565,7 @@ rlc_op_status_t rlc_data_req     (const protocol_ctxt_t* const ctxt_pP,
 
 #else
   }
-  else  /* MBMS_flag != 0 */
-  {
+  else { /* MBMS_flag != 0 */
     free_mem_block(sdu_pP, __func__);
     LOG_E(RLC, "MBMS_flag != 0 while Rel10/Rel14 is not defined...\n");
     //handle_event(ERROR,"FILE %s FONCTION rlc_data_req() LINE %s : parameter module_id out of bounds :%d\n", __FILE__, __LINE__, module_idP);
@@ -592,32 +578,27 @@ rlc_op_status_t rlc_data_req     (const protocol_ctxt_t* const ctxt_pP,
 
 //-----------------------------------------------------------------------------
 void rlc_data_ind     (
-  const protocol_ctxt_t* const ctxt_pP,
+  const protocol_ctxt_t *const ctxt_pP,
   const srb_flag_t  srb_flagP,
   const MBMS_flag_t MBMS_flagP,
   const rb_id_t     rb_idP,
   const sdu_size_t  sdu_sizeP,
-  mem_block_t      *sdu_pP)
-{
+  mem_block_t      *sdu_pP) {
   //-----------------------------------------------------------------------------
-
-
 #if defined(TRACE_RLC_PAYLOAD)
   LOG_D(RLC, PROTOCOL_CTXT_FMT"[%s %u] Display of rlc_data_ind: size %u\n",
         PROTOCOL_CTXT_ARGS(ctxt_pP),
         (srb_flagP) ? "SRB" : "DRB",
         rb_idP,
         sdu_sizeP);
-
-  rlc_util_print_hex_octets(RLC, (unsigned char*)sdu_pP->data, sdu_sizeP);
+  rlc_util_print_hex_octets(RLC, (unsigned char *)sdu_pP->data, sdu_sizeP);
 #endif
-
 #if T_TRACER
+
   if (ctxt_pP->enb_flag)
     T(T_ENB_RLC_UL, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->rnti), T_INT(rb_idP), T_INT(sdu_sizeP));
-#endif
-
 
+#endif
   pdcp_data_ind (
     ctxt_pP,
     srb_flagP,
@@ -627,14 +608,12 @@ void rlc_data_ind     (
     sdu_pP);
 }
 //-----------------------------------------------------------------------------
-void rlc_data_conf     (const protocol_ctxt_t* const ctxt_pP,
+void rlc_data_conf     (const protocol_ctxt_t *const ctxt_pP,
                         const srb_flag_t      srb_flagP,
                         const rb_id_t         rb_idP,
                         const mui_t           muiP,
-                        const rlc_tx_status_t statusP)
-{
+                        const rlc_tx_status_t statusP) {
   //-----------------------------------------------------------------------------
-
   if (srb_flagP) {
     if (rlc_rrc_data_conf != NULL) {
       rlc_rrc_data_conf (ctxt_pP, rb_idP , muiP, statusP);
@@ -643,20 +622,17 @@ void rlc_data_conf     (const protocol_ctxt_t* const ctxt_pP,
 }
 //-----------------------------------------------------------------------------
 int
-rlc_module_init (void)
-{
+rlc_module_init (void) {
   //-----------------------------------------------------------------------------
   int          k;
   module_id_t  module_id1;
-
   /* for no gcc warnings */
   (void)k;
-
   LOG_D(RLC, "MODULE INIT\n");
   rlc_rrc_data_ind  = NULL;
   rlc_rrc_data_conf = NULL;
+  rlc_coll_p = hashtable_create ((LTE_maxDRB + 2) * NUMBER_OF_UE_MAX, NULL, rb_free_rlc_union);
 
-  rlc_coll_p = hashtable_create ((LTE_maxDRB + 2) * 16, NULL, rb_free_rlc_union);
   //AssertFatal(rlc_coll_p != NULL, "UNRECOVERABLE error, RLC hashtable_create failed");
   if(rlc_coll_p == NULL) {
     LOG_E(RLC, "UNRECOVERABLE error, RLC hashtable_create failed\n");
@@ -694,7 +670,6 @@ rlc_module_init (void)
   }
 
   pool_buffer_init();
-
   return(0);
 }
 //-----------------------------------------------------------------------------
@@ -706,8 +681,7 @@ rlc_module_cleanup (void)
 }
 //-----------------------------------------------------------------------------
 void
-rlc_layer_init (void)
-{
+rlc_layer_init (void) {
   //-----------------------------------------------------------------------------
 }
 //-----------------------------------------------------------------------------
diff --git a/openair2/NETWORK_DRIVER/MESH/local.h b/openair2/NETWORK_DRIVER/MESH/local.h
index e23188d357006d2bebf16f58c5650cbea5d39266..f3f30f92244148cc0ee8f571306e66e4b9f9cb2f 100644
--- a/openair2/NETWORK_DRIVER/MESH/local.h
+++ b/openair2/NETWORK_DRIVER/MESH/local.h
@@ -64,6 +64,8 @@
 #include "rrc_nas_primitives.h"
 #include "COMMON/platform_types.h"
 
+#define MAKE_VERSION(a,b,c) ((a)*256+(b)*16+(c))
+
 struct rb_entity {
   nasRadioBearerId_t rab_id;
   nasSapId_t sapi;
@@ -160,6 +162,10 @@ typedef struct pdcp_data_req_header_s {
   sdu_size_t          data_size;
   signed int          inst;
   ip_traffic_type_t   traffic_type;
+#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
+  uint32_t sourceL2Id;
+  uint32_t destinationL2Id;
+#endif
 } pdcp_data_req_header_t;
 
 typedef struct pdcp_data_ind_header_s {
@@ -167,6 +173,10 @@ typedef struct pdcp_data_ind_header_s {
   sdu_size_t          data_size;
   signed int          inst;
   ip_traffic_type_t   dummy_traffic_type;
+#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
+  uint32_t sourceL2Id;
+  uint32_t destinationL2Id;
+#endif
 } pdcp_data_ind_header_t;
 
 extern struct net_device *nasdev[NB_INSTANCES_MAX];
diff --git a/openair2/NETWORK_DRIVER/UE_IP/common.c b/openair2/NETWORK_DRIVER/UE_IP/common.c
index 87d8ca01edfe1af115b36b37180739b743650509..1f0545270828579ca49903ea2aa9989d7898224e 100644
--- a/openair2/NETWORK_DRIVER/UE_IP/common.c
+++ b/openair2/NETWORK_DRIVER/UE_IP/common.c
@@ -304,7 +304,16 @@ ue_ip_common_ip2wireless(
     if (dst_addr) {
       printk("[UE_IP_DRV][%s] Dest %d.%d.%d.%d\n",__FUNCTION__, dst_addr[0],dst_addr[1],dst_addr[2],dst_addr[3]);
     }
-
+    // modify inst by IP address for the U-Plane of multiple UEs while L2 fapi simulator start
+#ifdef UESIM_EXPANSION
+    if ((src_addr[3] - 2)> instP) {
+        pdcph.inst = src_addr[3] - 2;
+        printk("[UE_IP_DRV] change INST from %d to %d\n",instP, pdcph.inst);
+        instP = src_addr[3] - 2;
+        priv_p=netdev_priv(ue_ip_dev[instP]);
+    }
+#endif
+    // modify inst by IP address for the U-Plane of multiple UEs while L2 fapi simulator end
     //get Ipv4 address and pass to PCDP header
     printk("[UE_IP_DRV] source Id: 0x%08x\n",pdcph.sourceL2Id );
     printk("[UE_IP_DRV] destinationL2Id Id: 0x%08x\n",pdcph.destinationL2Id );
diff --git a/openair2/NETWORK_DRIVER/UE_IP/device.c b/openair2/NETWORK_DRIVER/UE_IP/device.c
index 47c820fe775330dd0aa9de35052667f31e4b0266..4f295543dca310e933694d9b296a7f2c0b7ce87b 100644
--- a/openair2/NETWORK_DRIVER/UE_IP/device.c
+++ b/openair2/NETWORK_DRIVER/UE_IP/device.c
@@ -394,7 +394,7 @@ int init_module (void)
 
   for (inst=0; inst<UE_IP_NB_INSTANCES_MAX; inst++) {
     printk("[UE_IP_DRV][%s] begin init instance %d\n", __FUNCTION__,inst);
-    sprintf(devicename,"oip%d",inst);
+    sprintf(devicename,"oip%d",inst+1);
 #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0)
     ue_ip_dev[inst]  = alloc_netdev(sizeof(ue_ip_priv_t),devicename, ue_ip_init);
 #else
diff --git a/openair2/PHY_INTERFACE/IF_Module.h b/openair2/PHY_INTERFACE/IF_Module.h
index 26c9a60476b35ece534d996b3cb9bdab2eda9f24..b6ede7d598a05f1e06e802fb0d52b46a96510b50 100644
--- a/openair2/PHY_INTERFACE/IF_Module.h
+++ b/openair2/PHY_INTERFACE/IF_Module.h
@@ -128,6 +128,17 @@ typedef struct IF_Module_s{
   pthread_mutex_t if_mutex;
 }IF_Module_t;
 
+// These mutex is used for multiple UEs L2 FAPI simulator.
+// Each UEs set these value in UL and UL_INFO is shared in all UE's thread.
+typedef struct {
+  pthread_mutex_t rx_mutex;
+  pthread_mutex_t crc_mutex;
+  pthread_mutex_t sr_mutex;
+  pthread_mutex_t harq_mutex;
+  pthread_mutex_t cqi_mutex;
+  pthread_mutex_t rach_mutex;
+}FILL_UL_INFO_MUTEX_t;
+
 /*Initial */
 IF_Module_t *IF_Module_init(int Mod_id);
 void IF_Module_kill(int Mod_id);
diff --git a/openair2/PHY_INTERFACE/phy_stub_UE.c b/openair2/PHY_INTERFACE/phy_stub_UE.c
index 18e2fa4cb742a03820ba376fc0cd78894ce149f0..0c961d9fbbb99a4f6b938c88137f0e7533887f0e 100644
--- a/openair2/PHY_INTERFACE/phy_stub_UE.c
+++ b/openair2/PHY_INTERFACE/phy_stub_UE.c
@@ -25,7 +25,11 @@ extern int oai_nfapi_rach_ind(nfapi_rach_indication_t *rach_ind);
 void configure_nfapi_pnf(char *vnf_ip_addr, int vnf_p5_port, char *pnf_ip_addr, int pnf_p7_port, int vnf_p7_port);
 
 
-
+UL_IND_t *UL_INFO = NULL;
+nfapi_tx_request_pdu_t* tx_request_pdu_list = NULL;
+nfapi_dl_config_request_t* dl_config_req = NULL;
+nfapi_ul_config_request_t* ul_config_req = NULL;
+nfapi_hi_dci0_request_t* hi_dci0_req = NULL;
 
 //extern uint8_t nfapi_pnf;
 //UL_IND_t *UL_INFO;
@@ -47,7 +51,9 @@ void fill_rx_indication_UE_MAC(module_id_t Mod_id,int frame,int subframe, UL_IND
 	  int timing_advance_update;
 
 
-	  pthread_mutex_lock(&UE_mac_inst[Mod_id].UL_INFO_mutex);
+	  // pthread_mutex_lock(&UE_mac_inst[Mod_id].UL_INFO_mutex);
+	  // change for mutiple UE's simulation.
+	  pthread_mutex_lock(&fill_ul_mutex.rx_mutex);
 
 
 	  UL_INFO->rx_ind.sfn_sf                    = frame<<4| subframe;
@@ -65,7 +71,11 @@ void fill_rx_indication_UE_MAC(module_id_t Mod_id,int frame,int subframe, UL_IND
 	  //pdu->rx_indication_rel8.length         = eNB->ulsch[UE_id]->harq_processes[harq_pid]->TBS>>3;
 	  pdu->rx_indication_rel8.length         = buflen;
 	  pdu->rx_indication_rel8.offset         = 1;   // DJP - I dont understand - but broken unless 1 ????  0;  // filled in at the end of the UL_INFO formation
-	  pdu->data                              = ulsch_buffer;
+
+	  // ulsch_buffer is necessary to keep its value. 
+	  //pdu->data                              = ulsch_buffer;
+	  pdu->data = malloc(buflen);
+	  memcpy(pdu->data,ulsch_buffer,buflen);
 	  // estimate timing advance for MAC
 	  //sync_pos                               = lte_est_timing_advance_pusch(eNB,UE_id);
 	  timing_advance_update                  = 0;  // Don't know what to put here
@@ -80,7 +90,9 @@ void fill_rx_indication_UE_MAC(module_id_t Mod_id,int frame,int subframe, UL_IND
 
 	  UL_INFO->rx_ind.rx_indication_body.number_of_pdus++;
 	  UL_INFO->rx_ind.sfn_sf = frame<<4 | subframe;
-	  pthread_mutex_unlock(&UE_mac_inst[Mod_id].UL_INFO_mutex);
+	  // pthread_mutex_unlock(&UE_mac_inst[Mod_id].UL_INFO_mutex);
+	  // change for mutiple UE's simulation.
+	  pthread_mutex_unlock(&fill_ul_mutex.rx_mutex);
 
 
 }
@@ -88,7 +100,9 @@ void fill_rx_indication_UE_MAC(module_id_t Mod_id,int frame,int subframe, UL_IND
 void fill_sr_indication_UE_MAC(int Mod_id,int frame,int subframe, UL_IND_t *UL_INFO, uint16_t rnti) {
 
 
-  pthread_mutex_lock(&UE_mac_inst[Mod_id].UL_INFO_mutex);
+  // change for mutiple UE's simulation.
+  //pthread_mutex_lock(&UE_mac_inst[Mod_id].UL_INFO_mutex);
+  pthread_mutex_lock(&fill_ul_mutex.sr_mutex);
 
   nfapi_sr_indication_t       *sr_ind = &UL_INFO->sr_ind;
   nfapi_sr_indication_body_t  *sr_ind_body =    &sr_ind->sr_indication_body;
@@ -122,13 +136,17 @@ void fill_sr_indication_UE_MAC(int Mod_id,int frame,int subframe, UL_IND_t *UL_I
 
   //UL_INFO->rx_ind.rx_indication_body.number_of_pdus++;
   sr_ind_body->number_of_srs++;
-  pthread_mutex_unlock(&UE_mac_inst[Mod_id].UL_INFO_mutex);
+  // change for mutiple UE's simulation.
+  // pthread_mutex_unlock(&UE_mac_inst[Mod_id].UL_INFO_mutex);
+  pthread_mutex_unlock(&fill_ul_mutex.sr_mutex);
 }
 
 
 void fill_crc_indication_UE_MAC(int Mod_id,int frame,int subframe, UL_IND_t *UL_INFO, uint8_t crc_flag, int index, uint16_t rnti) {
 
-  pthread_mutex_lock(&UE_mac_inst[Mod_id].UL_INFO_mutex);
+  // change for mutiple UE's simulation.
+  //pthread_mutex_lock(&UE_mac_inst[Mod_id].UL_INFO_mutex);
+  pthread_mutex_lock(&fill_ul_mutex.crc_mutex);
 
   // REMEMBER HAVE EXCHANGED THE FOLLOWING TWO LINES HERE!
   nfapi_crc_indication_pdu_t *pdu =   &UL_INFO->crc_ind.crc_indication_body.crc_pdu_list[UL_INFO->crc_ind.crc_indication_body.number_of_crcs];
@@ -151,14 +169,21 @@ void fill_crc_indication_UE_MAC(int Mod_id,int frame,int subframe, UL_IND_t *UL_
 
   LOG_D(PHY, "%s() rnti:%04x pdus:%d\n", __FUNCTION__, pdu->rx_ue_information.rnti, UL_INFO->crc_ind.crc_indication_body.number_of_crcs);
 
-  pthread_mutex_unlock(&UE_mac_inst[Mod_id].UL_INFO_mutex);
+  // change for mutiple UE's simulation.
+  // pthread_mutex_unlock(&UE_mac_inst[Mod_id].UL_INFO_mutex);
+  pthread_mutex_unlock(&fill_ul_mutex.crc_mutex);
 }
 
 void fill_rach_indication_UE_MAC(int Mod_id,int frame,int subframe, UL_IND_t *UL_INFO, uint8_t ra_PreambleIndex, uint16_t ra_RNTI) {
 
 	LOG_D(MAC, "fill_rach_indication_UE_MAC 1 \n");
-	pthread_mutex_lock(&UE_mac_inst[Mod_id].UL_INFO_mutex);
-	UL_INFO = (UL_IND_t*)malloc(sizeof(UL_IND_t));
+
+	// change for mutiple UE's simulation.
+	// pthread_mutex_lock(&UE_mac_inst[Mod_id].UL_INFO_mutex);
+	pthread_mutex_lock(&fill_ul_mutex.rach_mutex);
+	
+	// memory allocation and free memory of UL_INFO are done in UE_phy_stub_single_thread_rxn_txnp4.
+	// UL_INFO = (UL_IND_t*)malloc(sizeof(UL_IND_t));
 
 	    UL_INFO->rach_ind.rach_indication_body.number_of_preambles                 = 1;
 
@@ -195,16 +220,22 @@ void fill_rach_indication_UE_MAC(int Mod_id,int frame,int subframe, UL_IND_t *UL
 	          // with that branch.
 	          oai_nfapi_rach_ind(&UL_INFO->rach_ind);
 	          free(UL_INFO->rach_ind.rach_indication_body.preamble_list);
-	          free(UL_INFO);
+
+	         // memory allocation and free memory of UL_INFO are done in UE_phy_stub_single_thread_rxn_txnp4.
+	          //free(UL_INFO);
 
 	        //}
-	      pthread_mutex_unlock(&UE_mac_inst[Mod_id].UL_INFO_mutex);
+	      // change for mutiple UE's simulation.
+	      // pthread_mutex_unlock(&UE_mac_inst[Mod_id].UL_INFO_mutex);
+	      pthread_mutex_unlock(&fill_ul_mutex.rach_mutex);
 
 }
 
 void fill_ulsch_cqi_indication_UE_MAC(int Mod_id, uint16_t frame,uint8_t subframe, UL_IND_t *UL_INFO, uint16_t rnti) {
 
-	pthread_mutex_lock(&UE_mac_inst[Mod_id].UL_INFO_mutex);
+	// change for mutiple UE's simulation.
+	//pthread_mutex_lock(&UE_mac_inst[Mod_id].UL_INFO_mutex);
+	pthread_mutex_lock(&fill_ul_mutex.cqi_mutex);
 	nfapi_cqi_indication_pdu_t *pdu         = &UL_INFO->cqi_ind.cqi_pdu_list[UL_INFO->cqi_ind.number_of_cqis];
 	nfapi_cqi_indication_raw_pdu_t *raw_pdu = &UL_INFO->cqi_ind.cqi_raw_pdu_list[UL_INFO->cqi_ind.number_of_cqis];
 
@@ -233,14 +264,18 @@ void fill_ulsch_cqi_indication_UE_MAC(int Mod_id, uint16_t frame,uint8_t subfram
 
 
   UL_INFO->cqi_ind.number_of_cqis++;
-  pthread_mutex_unlock(&UE_mac_inst[Mod_id].UL_INFO_mutex);
-
+  // change for mutiple UE's simulation.
+  //pthread_mutex_unlock(&UE_mac_inst[Mod_id].UL_INFO_mutex);
+  pthread_mutex_unlock(&fill_ul_mutex.cqi_mutex);
 }
 
 void fill_ulsch_harq_indication_UE_MAC(int Mod_id, int frame,int subframe, UL_IND_t *UL_INFO, nfapi_ul_config_ulsch_harq_information *harq_information, uint16_t rnti)
 {
 
-  pthread_mutex_lock(&UE_mac_inst[Mod_id].UL_INFO_mutex);
+  // change for mutiple UE's simulation.
+  //pthread_mutex_lock(&UE_mac_inst[Mod_id].UL_INFO_mutex);
+  pthread_mutex_lock(&fill_ul_mutex.harq_mutex);
+
   nfapi_harq_indication_pdu_t *pdu =   &UL_INFO->harq_ind.harq_indication_body.harq_pdu_list[UL_INFO->harq_ind.harq_indication_body.number_of_harqs];
   int i;
 
@@ -271,8 +306,9 @@ void fill_ulsch_harq_indication_UE_MAC(int Mod_id, int frame,int subframe, UL_IN
     }
 
   UL_INFO->harq_ind.harq_indication_body.number_of_harqs++;
-  pthread_mutex_unlock(&UE_mac_inst[Mod_id].UL_INFO_mutex);
-}
+  // change for mutiple UE's simulation.
+  //pthread_mutex_unlock(&UE_mac_inst[Mod_id].UL_INFO_mutex);
+  pthread_mutex_unlock(&fill_ul_mutex.harq_mutex);}
 
 
 void fill_uci_harq_indication_UE_MAC(int Mod_id,
@@ -285,7 +321,10 @@ void fill_uci_harq_indication_UE_MAC(int Mod_id,
 			      uint16_t tdd_multiplexing_mask*/) {
 
 
-  pthread_mutex_lock(&UE_mac_inst[Mod_id].UL_INFO_mutex);
+  // change for mutiple UE's simulation.
+  //pthread_mutex_lock(&UE_mac_inst[Mod_id].UL_INFO_mutex);
+  pthread_mutex_lock(&fill_ul_mutex.harq_mutex);
+
   nfapi_harq_indication_t *ind       = &UL_INFO->harq_ind;
   nfapi_harq_indication_body_t *body = &ind->harq_indication_body;
   nfapi_harq_indication_pdu_t *pdu =   &body->harq_pdu_list[UL_INFO->harq_ind.harq_indication_body.number_of_harqs];
@@ -311,6 +350,7 @@ void fill_uci_harq_indication_UE_MAC(int Mod_id,
   else if (SNRtimes10 >  635) pdu->ul_cqi_information.ul_cqi=255;
   else                        pdu->ul_cqi_information.ul_cqi=(640+SNRtimes10)/5;
   pdu->ul_cqi_information.channel = 0;
+  if(harq_information->harq_information_rel9_fdd.tl.tag == NFAPI_UL_CONFIG_REQUEST_HARQ_INFORMATION_REL9_FDD_TAG){
       if ((harq_information->harq_information_rel9_fdd.ack_nack_mode == 0) &&
           (harq_information->harq_information_rel9_fdd.harq_size == 1)) {
 
@@ -332,12 +372,31 @@ void fill_uci_harq_indication_UE_MAC(int Mod_id,
       pdu->harq_indication_fdd_rel13.harq_tb_n[1] = 1; // Assuming always an ACK (No NACK or DTX)
 
     }
-    else AssertFatal(1==0,"only format 1a/b for now, received \n");
+  }else if(harq_information->harq_information_rel10_tdd.tl.tag == NFAPI_UL_CONFIG_REQUEST_HARQ_INFORMATION_REL10_TDD_TAG ){
+      if ((harq_information->harq_information_rel10_tdd.ack_nack_mode == 0) &&
+          (harq_information->harq_information_rel10_tdd.harq_size == 1)) {
+        pdu->harq_indication_tdd_rel13.tl.tag = NFAPI_HARQ_INDICATION_TDD_REL13_TAG;
+        pdu->harq_indication_tdd_rel13.mode = 0;
+        pdu->harq_indication_tdd_rel13.number_of_ack_nack = 1;
+        pdu->harq_indication_tdd_rel13.harq_data[0].bundling.value_0 = 1;
+
+      }  else if ((harq_information->harq_information_rel10_tdd.ack_nack_mode == 1) &&
+                  (harq_information->harq_information_rel10_tdd.harq_size == 2)) {
+        pdu->harq_indication_tdd_rel13.tl.tag = NFAPI_HARQ_INDICATION_TDD_REL13_TAG;
+        pdu->harq_indication_tdd_rel13.mode = 0;
+        pdu->harq_indication_tdd_rel13.number_of_ack_nack = 1;
+        pdu->harq_indication_tdd_rel13.harq_data[0].bundling.value_0 = 1;
+        pdu->harq_indication_tdd_rel13.harq_data[1].bundling.value_0 = 1;
+
+      }
+  } else AssertFatal(1==0,"only format 1a/b for now, received \n");
 
 
   UL_INFO->harq_ind.harq_indication_body.number_of_harqs++;
   LOG_D(PHY,"Incremented eNB->UL_INFO.harq_ind.number_of_harqs:%d\n", UL_INFO->harq_ind.harq_indication_body.number_of_harqs);
-  pthread_mutex_unlock(&UE_mac_inst[Mod_id].UL_INFO_mutex);
+  // change for mutiple UE's simulation.
+  //pthread_mutex_unlock(&UE_mac_inst[Mod_id].UL_INFO_mutex);
+  pthread_mutex_unlock(&fill_ul_mutex.harq_mutex);
 
 }
 
@@ -622,7 +681,8 @@ int dl_config_req_UE_MAC(nfapi_dl_config_request_t* req, module_id_t Mod_id) //,
 				//if(tx_request_pdu_list[dl_config_pdu_tmp->dlsch_pdu.dlsch_pdu_rel8.pdu_index].segments[0].segment_data!= NULL && tx_request_pdu_list[dl_config_pdu_tmp->dlsch_pdu.dlsch_pdu_rel8.pdu_index].segments[0].segment_length >0){
 				*/
 
-				if(dl_config_pdu_tmp->dlsch_pdu.dlsch_pdu_rel8.pdu_index <= tx_req_num_elems -1){
+				// to avoid unexpected error , add check pdu_index is more than 0.
+				if((dl_config_pdu_tmp->dlsch_pdu.dlsch_pdu_rel8.pdu_index >= 0) &&(dl_config_pdu_tmp->dlsch_pdu.dlsch_pdu_rel8.pdu_index <= tx_req_num_elems -1)){
 				//if(tx_request_pdu_list + dl_config_pdu_tmp->dlsch_pdu.dlsch_pdu_rel8.pdu_index!= NULL){
 
 					LOG_E(MAC, "dl_config_req_UE_MAC 2 Received data: sfn/sf:%d PDU[%d] size:%d, TX_PDU index: %d, tx_req_num_elems: %d \n", NFAPI_SFNSF2DEC(req->sfn_sf), i, dl_config_pdu_list[i].pdu_size, dl_config_pdu_tmp->dlsch_pdu.dlsch_pdu_rel8.pdu_index, tx_req_num_elems);
diff --git a/openair2/PHY_INTERFACE/phy_stub_UE.h b/openair2/PHY_INTERFACE/phy_stub_UE.h
index 9060951b26068a974ed92c7b21e25772054ac96b..21fb8518fad866e88c1d78f21aecd232657916c4 100644
--- a/openair2/PHY_INTERFACE/phy_stub_UE.h
+++ b/openair2/PHY_INTERFACE/phy_stub_UE.h
@@ -17,19 +17,23 @@
 //#include "openair1/PHY/defs.h"
 //#include "openair1/PHY/LTE_TRANSPORT/defs.h"
 
-UL_IND_t *UL_INFO;
-
-nfapi_tx_request_pdu_t* tx_request_pdu_list;
+// this mutex is used to set multiple UE's UL value in L2 FAPI simulator.
+FILL_UL_INFO_MUTEX_t fill_ul_mutex;
+//below 2 difinitions move to phy_stub_UE.c to add initialization when difinition.
+extern UL_IND_t *UL_INFO;
+extern nfapi_tx_request_pdu_t* tx_request_pdu_list;
 // New
 /// Pointers to config_request types. Used from nfapi callback functions.
-nfapi_dl_config_request_t* dl_config_req;
-nfapi_ul_config_request_t* ul_config_req;
-nfapi_hi_dci0_request_t* hi_dci0_req;
+//below 3 difinitions move to phy_stub_UE.c to add initialization when difinition.
+extern nfapi_dl_config_request_t* dl_config_req;
+extern nfapi_ul_config_request_t* ul_config_req;
+extern nfapi_hi_dci0_request_t* hi_dci0_req;
 
 int	tx_req_num_elems;
 
-int next_ra_frame;
-module_id_t next_Mod_id;
+//below 2 difinitions move to lte-ue.c to add initialization when difinition.
+//int next_ra_frame;
+//module_id_t next_Mod_id;
 eth_params_t         stub_eth_params;
 
 
diff --git a/openair2/RRC/LTE/MESSAGES/asn1_msg_NB_IoT.c b/openair2/RRC/LTE/MESSAGES/asn1_msg_NB_IoT.c
index 4c63db1d03cc8c72dd021bc1f51ccb6891997e89..480f5c35163bb94c69c8af5c21c904b84a650af3 100644
--- a/openair2/RRC/LTE/MESSAGES/asn1_msg_NB_IoT.c
+++ b/openair2/RRC/LTE/MESSAGES/asn1_msg_NB_IoT.c
@@ -70,7 +70,7 @@
 #include "enb_config.h"
 
 #if defined(ENABLE_ITTI)
-# include "intertask_interface.h"
+  #include "intertask_interface.h"
 #endif
 
 
@@ -78,14 +78,12 @@
 
 /*do_MIB_NB_NB_IoT*/
 uint8_t do_MIB_NB_IoT(
-		rrc_eNB_carrier_data_NB_IoT_t *carrier,
-		uint16_t N_RB_DL,//may not needed--> for NB_IoT only 1 PRB is used
-		uint32_t frame,
-    uint32_t hyper_frame)
-{
+  rrc_eNB_carrier_data_NB_IoT_t *carrier,
+  uint16_t N_RB_DL,//may not needed--> for NB_IoT only 1 PRB is used
+  uint32_t frame,
+  uint32_t hyper_frame) {
   asn_enc_rval_t enc_rval;
   LTE_BCCH_BCH_Message_NB_t *mib_NB_IoT = &(carrier->mib_NB_IoT);
-
   /*
    * systemFrameNumber-MSB: (TS 36.331 pag 576)
    * define the 4 MSB of the SFN (10 bits). The last significant 6 bits will be acquired implicitly by decoding the NPBCH
@@ -98,46 +96,39 @@ uint8_t do_MIB_NB_IoT(
    *
    * NOTE: in OAI never modify the SIB messages!!??
    */
-
   //XXX check if correct the bit assignment
   uint8_t sfn_MSB = (uint8_t)((frame>>6) & 0x0f); // all the 4 bits are set to 1
   uint8_t hsfn_LSB = (uint8_t)(hyper_frame & 0x03); //2 bits set to 1 (0x3 = 0011)
   uint16_t spare=0; //11 bits --> use uint16
-
   mib_NB_IoT->message.systemFrameNumber_MSB_r13.buf = &sfn_MSB;
   mib_NB_IoT->message.systemFrameNumber_MSB_r13.size = 1; //if expressed in byte
   mib_NB_IoT->message.systemFrameNumber_MSB_r13.bits_unused = 4; //is byte based (so how many bits you don't use of the 8 bits of a bite
-
   mib_NB_IoT->message.hyperSFN_LSB_r13.buf= &hsfn_LSB;
   mib_NB_IoT->message.hyperSFN_LSB_r13.size= 1;
   mib_NB_IoT->message.hyperSFN_LSB_r13.bits_unused = 6;
-
   //XXX to be set??
   mib_NB_IoT->message.spare.buf = (uint8_t *)&spare;
   mib_NB_IoT->message.spare.size = 2;
   mib_NB_IoT->message.spare.bits_unused = 5;
-
   //decide how to set it
   mib_NB_IoT->message.schedulingInfoSIB1_r13 =11; //see TS 36.213-->tables 16.4.1.3-3 ecc...
   mib_NB_IoT->message.systemInfoValueTag_r13= 0;
   mib_NB_IoT->message.ab_Enabled_r13 = 0;
-
   //to be decided
   mib_NB_IoT->message.operationModeInfo_r13.present = LTE_MasterInformationBlock_NB__operationModeInfo_r13_PR_inband_SamePCI_r13;
   mib_NB_IoT->message.operationModeInfo_r13.choice.inband_SamePCI_r13.eutra_CRS_SequenceInfo_r13 = 0;
-
   printf("[MIB] Initialization of frame information,sfn_MSB %x, hsfn_LSB %x\n",
          (uint32_t)sfn_MSB,
-		 (uint32_t)hsfn_LSB);
-
+         (uint32_t)hsfn_LSB);
   enc_rval = uper_encode_to_buffer(&asn_DEF_LTE_BCCH_BCH_Message_NB,
                                    NULL,
-                                   (void*)mib_NB_IoT,
+                                   (void *)mib_NB_IoT,
                                    carrier->MIB_NB_IoT,
                                    100);
+
   if(enc_rval.encoded <= 0) {
-      LOG_E(RRC, "ASN1 message encoding failed (%s, %lu)!\n",
-               enc_rval.failed_type->name, enc_rval.encoded);
+    LOG_E(RRC, "ASN1 message encoding failed (%s, %lu)!\n",
+          enc_rval.failed_type->name, enc_rval.encoded);
   }
 
   if (enc_rval.encoded==-1) {
@@ -145,63 +136,47 @@ uint8_t do_MIB_NB_IoT(
   }
 
   return((enc_rval.encoded+7)/8);
-
 }
 
 /*do_SIB1_NB*/
 uint8_t do_SIB1_NB_IoT(uint8_t Mod_id, int CC_id,
-				rrc_eNB_carrier_data_NB_IoT_t *carrier,
-                NbIoTRrcConfigurationReq *configuration,
-				uint32_t frame
-               )
-{
+                       rrc_eNB_carrier_data_NB_IoT_t *carrier,
+                       NbIoTRrcConfigurationReq *configuration,
+                       uint32_t frame
+                      ) {
   LTE_BCCH_DL_SCH_Message_NB_t *bcch_message= &(carrier->siblock1_NB_IoT);
   LTE_SystemInformationBlockType1_NB_t **sib1_NB_IoT= &(carrier->sib1_NB_IoT);
-  
-
   asn_enc_rval_t enc_rval;
-
   LTE_PLMN_IdentityInfo_NB_r13_t PLMN_identity_info_NB_IoT;
   LTE_MCC_MNC_Digit_t dummy_mcc[3],dummy_mnc[3];
   LTE_SchedulingInfo_NB_r13_t *schedulingInfo_NB_IoT;
   LTE_SIB_Type_NB_r13_t *sib_type_NB_IoT;
-
-
-  long* attachWithoutPDN_Connectivity = NULL;
+  long *attachWithoutPDN_Connectivity = NULL;
   attachWithoutPDN_Connectivity = CALLOC(1,sizeof(long));
   long *nrs_CRS_PowerOffset=NULL;
   nrs_CRS_PowerOffset = CALLOC(1, sizeof(long));
   long *eutraControlRegionSize=NULL; //this parameter should be set only if we are considering in-band operating mode (samePCI or differentPCI)
-   eutraControlRegionSize = CALLOC(1,sizeof(long));
+  eutraControlRegionSize = CALLOC(1,sizeof(long));
   long systemInfoValueTagSI = 0;
-
   memset(bcch_message,0,sizeof(LTE_BCCH_DL_SCH_Message_NB_t));
   bcch_message->message.present = LTE_BCCH_DL_SCH_MessageType_NB_PR_c1;
   bcch_message->message.choice.c1.present = LTE_BCCH_DL_SCH_MessageType_NB__c1_PR_systemInformationBlockType1_r13;
-
   //allocation
   *sib1_NB_IoT = &bcch_message->message.choice.c1.choice.systemInformationBlockType1_r13;
-
-
   /*TS 36.331 v14.2.0 pag 589
    * hyperSFN-MSB
    * Indicates the 8 most significant bits of the hyper-SFN. Together with the hyper-LSB in MIB-NB the complete HSFN is build up
    */
   //FIXME see if correct
   uint8_t hyperSFN_MSB = (uint8_t) ((frame>>2)& 0xff);
-
   //XXX to be checked
   (*sib1_NB_IoT)->hyperSFN_MSB_r13.buf = &hyperSFN_MSB;
   (*sib1_NB_IoT)->hyperSFN_MSB_r13.size = 1;
   (*sib1_NB_IoT)->hyperSFN_MSB_r13.bits_unused = 0;
-
   memset(&PLMN_identity_info_NB_IoT,0,sizeof(LTE_PLMN_IdentityInfo_NB_r13_t));
-
   PLMN_identity_info_NB_IoT.plmn_Identity_r13.mcc = CALLOC(1,sizeof(*PLMN_identity_info_NB_IoT.plmn_Identity_r13.mcc));
   memset(PLMN_identity_info_NB_IoT.plmn_Identity_r13.mcc,0,sizeof(*PLMN_identity_info_NB_IoT.plmn_Identity_r13.mcc));
-
   asn_set_empty(&PLMN_identity_info_NB_IoT.plmn_Identity_r13.mcc->list);//.size=0;
-
   //left as it is???
 #if defined(ENABLE_ITTI)
   dummy_mcc[0] = (configuration->mcc / 100) % 10;
@@ -215,11 +190,8 @@ uint8_t do_SIB1_NB_IoT(uint8_t Mod_id, int CC_id,
   ASN_SEQUENCE_ADD(&PLMN_identity_info_NB_IoT.plmn_Identity_r13.mcc->list,&dummy_mcc[0]);
   ASN_SEQUENCE_ADD(&PLMN_identity_info_NB_IoT.plmn_Identity_r13.mcc->list,&dummy_mcc[1]);
   ASN_SEQUENCE_ADD(&PLMN_identity_info_NB_IoT.plmn_Identity_r13.mcc->list,&dummy_mcc[2]);
-
   PLMN_identity_info_NB_IoT.plmn_Identity_r13.mnc.list.size=0;
   PLMN_identity_info_NB_IoT.plmn_Identity_r13.mnc.list.count=0;
-
-
 #if defined(ENABLE_ITTI)
 
   if (configuration->mnc >= 100) {
@@ -252,15 +224,11 @@ uint8_t do_SIB1_NB_IoT(uint8_t Mod_id, int CC_id,
 
   //still set to "notReserved" as in the previous case
   PLMN_identity_info_NB_IoT.cellReservedForOperatorUse_r13=LTE_PLMN_IdentityInfo_NB_r13__cellReservedForOperatorUse_r13_notReserved;
-
   *attachWithoutPDN_Connectivity = 0;
   PLMN_identity_info_NB_IoT.attachWithoutPDN_Connectivity_r13 = attachWithoutPDN_Connectivity;
-
   ASN_SEQUENCE_ADD(&(*sib1_NB_IoT)->cellAccessRelatedInfo_r13.plmn_IdentityList_r13.list,&PLMN_identity_info_NB_IoT);
-
   // 16 bits = 2 byte
   (*sib1_NB_IoT)->cellAccessRelatedInfo_r13.trackingAreaCode_r13.buf = MALLOC(2); //MALLOC works in byte
-
   //lefts as it is?
 #if defined(ENABLE_ITTI)
   (*sib1_NB_IoT)->cellAccessRelatedInfo_r13.trackingAreaCode_r13.buf[0] = (configuration->tac >> 8) & 0xff;
@@ -271,7 +239,6 @@ uint8_t do_SIB1_NB_IoT(uint8_t Mod_id, int CC_id,
 #endif
   (*sib1_NB_IoT)->cellAccessRelatedInfo_r13.trackingAreaCode_r13.size=2;
   (*sib1_NB_IoT)->cellAccessRelatedInfo_r13.trackingAreaCode_r13.bits_unused=0;
-
   // 28 bits --> i have to use 32 bits = 4 byte
   (*sib1_NB_IoT)->cellAccessRelatedInfo_r13.cellIdentity_r13.buf = MALLOC(8); // why allocate 8 byte?
 #if defined(ENABLE_ITTI)
@@ -287,20 +254,14 @@ uint8_t do_SIB1_NB_IoT(uint8_t Mod_id, int CC_id,
 #endif
   (*sib1_NB_IoT)->cellAccessRelatedInfo_r13.cellIdentity_r13.size=4;
   (*sib1_NB_IoT)->cellAccessRelatedInfo_r13.cellIdentity_r13.bits_unused=4;
-
   //Still set to "notBarred" as in the previous case
   (*sib1_NB_IoT)->cellAccessRelatedInfo_r13.cellBarred_r13=LTE_SystemInformationBlockType1_NB__cellAccessRelatedInfo_r13__cellBarred_r13_notBarred;
-
   //Still Set to "notAllowed" like in the previous case
   (*sib1_NB_IoT)->cellAccessRelatedInfo_r13.intraFreqReselection_r13=LTE_SystemInformationBlockType1_NB__cellAccessRelatedInfo_r13__intraFreqReselection_r13_notAllowed;
-
-
   (*sib1_NB_IoT)->cellSelectionInfo_r13.q_RxLevMin_r13=-65; //which value?? TS 36.331 V14.2.1 pag. 589
   (*sib1_NB_IoT)->cellSelectionInfo_r13.q_QualMin_r13 = 0; //FIXME new parameter for SIB1-NB, not present in SIB1 (for cell reselection but if not used the UE should apply the default value)
-
   (*sib1_NB_IoT)->p_Max_r13 = CALLOC(1, sizeof(LTE_P_Max_t));
   *((*sib1_NB_IoT)->p_Max_r13) = 23;
-
   //FIXME
   (*sib1_NB_IoT)->freqBandIndicator_r13 =
 #if defined(ENABLE_ITTI)
@@ -308,70 +269,55 @@ uint8_t do_SIB1_NB_IoT(uint8_t Mod_id, int CC_id,
 #else
     5; //if not configured we use band 5 (UL: 824 MHz - 849MHz / DL: 869 MHz - 894 MHz  FDD mode)
 #endif
-
-    //OPTIONAL new parameters, to be used?
-      /*
-       * freqBandInfo_r13
-       * multiBandInfoList_r13
-       * nrs_CRS_PowerOffset_r13
-       * sib1_NB_IoT->downlinkBitmap_r13.choice.subframePattern10_r13 =(is a BIT_STRING)
-       */
-
-
-   (*sib1_NB_IoT)->downlinkBitmap_r13 = CALLOC(1, sizeof(struct LTE_DL_Bitmap_NB_r13));
-   ((*sib1_NB_IoT)->downlinkBitmap_r13)->present= LTE_DL_Bitmap_NB_r13_PR_NOTHING;
-
-   *eutraControlRegionSize = 1;
-   (*sib1_NB_IoT)->eutraControlRegionSize_r13 = eutraControlRegionSize;
-
-
-   *nrs_CRS_PowerOffset= 0;
-   (*sib1_NB_IoT)->nrs_CRS_PowerOffset_r13 = nrs_CRS_PowerOffset;
-
-   schedulingInfo_NB_IoT = (LTE_SchedulingInfo_NB_r13_t*) malloc (3*sizeof(LTE_SchedulingInfo_NB_r13_t));
-   sib_type_NB_IoT = (LTE_SIB_Type_NB_r13_t *) malloc (3*sizeof(LTE_SIB_Type_NB_r13_t));
-
+  //OPTIONAL new parameters, to be used?
+  /*
+   * freqBandInfo_r13
+   * multiBandInfoList_r13
+   * nrs_CRS_PowerOffset_r13
+   * sib1_NB_IoT->downlinkBitmap_r13.choice.subframePattern10_r13 =(is a BIT_STRING)
+   */
+  (*sib1_NB_IoT)->downlinkBitmap_r13 = CALLOC(1, sizeof(struct LTE_DL_Bitmap_NB_r13));
+  ((*sib1_NB_IoT)->downlinkBitmap_r13)->present= LTE_DL_Bitmap_NB_r13_PR_NOTHING;
+  *eutraControlRegionSize = 1;
+  (*sib1_NB_IoT)->eutraControlRegionSize_r13 = eutraControlRegionSize;
+  *nrs_CRS_PowerOffset= 0;
+  (*sib1_NB_IoT)->nrs_CRS_PowerOffset_r13 = nrs_CRS_PowerOffset;
+  schedulingInfo_NB_IoT = (LTE_SchedulingInfo_NB_r13_t *) malloc (3*sizeof(LTE_SchedulingInfo_NB_r13_t));
+  sib_type_NB_IoT = (LTE_SIB_Type_NB_r13_t *) malloc (3*sizeof(LTE_SIB_Type_NB_r13_t));
   memset(&schedulingInfo_NB_IoT[0],0,sizeof(LTE_SchedulingInfo_NB_r13_t));
   memset(&schedulingInfo_NB_IoT[1],0,sizeof(LTE_SchedulingInfo_NB_r13_t));
-  memset(&schedulingInfo_NB_IoT[2],0,sizeof(LTE_SchedulingInfo_NB_r13_t));    
+  memset(&schedulingInfo_NB_IoT[2],0,sizeof(LTE_SchedulingInfo_NB_r13_t));
   memset(&sib_type_NB_IoT[0],0,sizeof(LTE_SIB_Type_NB_r13_t));
   memset(&sib_type_NB_IoT[1],0,sizeof(LTE_SIB_Type_NB_r13_t));
   memset(&sib_type_NB_IoT[2],0,sizeof(LTE_SIB_Type_NB_r13_t));
-
-
   // Now, follow the scheduler SIB configuration
   // There is only one sib2+sib3 common setting
   schedulingInfo_NB_IoT[0].si_Periodicity_r13=LTE_SchedulingInfo_NB_r13__si_Periodicity_r13_rf4096;
-  schedulingInfo_NB_IoT[0].si_RepetitionPattern_r13=LTE_SchedulingInfo_NB_r13__si_RepetitionPattern_r13_every2ndRF; //This Indicates the starting radio frames within the SI window used for SI message transmission.
+  schedulingInfo_NB_IoT[0].si_RepetitionPattern_r13=
+    LTE_SchedulingInfo_NB_r13__si_RepetitionPattern_r13_every2ndRF; //This Indicates the starting radio frames within the SI window used for SI message transmission.
   schedulingInfo_NB_IoT[0].si_TB_r13= LTE_SchedulingInfo_NB_r13__si_TB_r13_b680;//208 bits
-  
-
   // This is for SIB2/3
   /*SIB3 --> There is no mapping information of SIB2 since it is always present
     *  in the first SystemInformation message
     * listed in the schedulingInfoList list.
     * */
   sib_type_NB_IoT[0]=LTE_SIB_Type_NB_r13_sibType3_NB_r13;
-
   ASN_SEQUENCE_ADD(&schedulingInfo_NB_IoT[0].sib_MappingInfo_r13.list,&sib_type_NB_IoT[0]);
   ASN_SEQUENCE_ADD(&(*sib1_NB_IoT)->schedulingInfoList_r13.list,&schedulingInfo_NB_IoT[0]);
-
   //printf("[ASN Debug] SI P: %ld\n",(*sib1_NB_IoT)->schedulingInfoList_r13.list.array[0]->si_Periodicity_r13);
-
 #if defined(ENABLE_ITTI)
 
   if (configuration->frame_type == TDD)
 #endif
   {
-	//FIXME in NB-IoT mandatory to be FDD --> so must give an error
-	  LOG_E(RRC,"[NB-IoT %d] Frame Type is TDD --> not supported by NB-IoT, exiting\n", Mod_id); //correct?
-	  exit(-1);
+    //FIXME in NB-IoT mandatory to be FDD --> so must give an error
+    LOG_E(RRC,"[NB-IoT %d] Frame Type is TDD --> not supported by NB-IoT, exiting\n", Mod_id); //correct?
+    exit(-1);
   }
 
   //FIXME which value chose for the following parameter
   (*sib1_NB_IoT)->si_WindowLength_r13=LTE_SystemInformationBlockType1_NB__si_WindowLength_r13_ms160;
   (*sib1_NB_IoT)->si_RadioFrameOffset_r13= 0;
-
   /*In Nb-IoT change/update of specific SI message can additionally be indicated by a SI message specific value tag
    * systemInfoValueTagSI (there is no SystemInfoValueTag in SIB1-NB but only in MIB-NB)
    *contained in systemInfoValueTagList_r13
@@ -381,24 +327,21 @@ uint8_t do_SIB1_NB_IoT(uint8_t Mod_id, int CC_id,
   asn_set_empty(&(*sib1_NB_IoT)->systemInfoValueTagList_r13->list);
   ASN_SEQUENCE_ADD(&(*sib1_NB_IoT)->systemInfoValueTagList_r13->list,&systemInfoValueTagSI);
 
-
   if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
-     xer_fprint(stdout, &asn_DEF_LTE_BCCH_DL_SCH_Message_NB, (void*)bcch_message);
+    xer_fprint(stdout, &asn_DEF_LTE_BCCH_DL_SCH_Message_NB, (void *)bcch_message);
   }
 
-
   enc_rval = uper_encode_to_buffer(&asn_DEF_LTE_BCCH_DL_SCH_Message_NB,
                                    NULL,
-                                   (void*)bcch_message,
+                                   (void *)bcch_message,
                                    carrier->SIB1_NB_IoT,
                                    100);
 
-  if (enc_rval.encoded > 0){ 
-       LOG_E(RRC,"ASN1 message encoding failed (%s, %lu)!\n",
-               enc_rval.failed_type->name, enc_rval.encoded);
+  if (enc_rval.encoded > 0) {
+    LOG_E(RRC,"ASN1 message encoding failed (%s, %lu)!\n",
+          enc_rval.failed_type->name, enc_rval.encoded);
   }
 
-
 #ifdef USER_MODE
   LOG_D(RRC,"[NB-IoT] SystemInformationBlockType1-NB Encoded %zd bits (%zd bytes)\n",enc_rval.encoded,(enc_rval.encoded+7)/8);
 #endif
@@ -415,34 +358,26 @@ uint8_t do_SIB1_NB_IoT(uint8_t Mod_id, int CC_id,
 uint8_t do_SIB23_NB_IoT(uint8_t Mod_id,
                         int CC_id,
                         rrc_eNB_carrier_data_NB_IoT_t *carrier,//MP: this is already a carrier[CC_id]
-                        NbIoTRrcConfigurationReq *configuration ) //openair2/COMMON/rrc_messages_types.h
-{
+                        NbIoTRrcConfigurationReq *configuration ) { //openair2/COMMON/rrc_messages_types.h
   struct LTE_SystemInformation_NB_r13_IEs__sib_TypeAndInfo_r13__Member *sib2_NB_part;
   struct LTE_SystemInformation_NB_r13_IEs__sib_TypeAndInfo_r13__Member *sib3_NB_part;
-
   LTE_BCCH_DL_SCH_Message_NB_t *bcch_message = &(carrier->systemInformation_NB_IoT); //is the systeminformation-->BCCH_DL_SCH_Message_NB
   LTE_SystemInformationBlockType2_NB_r13_t *sib2_NB_IoT;
   LTE_SystemInformationBlockType3_NB_r13_t *sib3_NB_IoT;
-
   asn_enc_rval_t enc_rval;
   LTE_RACH_Info_NB_r13_t rach_Info_NB_IoT;
   LTE_NPRACH_Parameters_NB_r13_t *nprach_parameters;
-
   //optional
   long *connEstFailOffset = NULL;
   connEstFailOffset = CALLOC(1, sizeof(long));
-
-//  RSRP_ThresholdsNPRACH_InfoList_NB_r13_t *rsrp_ThresholdsPrachInfoList;
-//  RSRP_Range_t rsrp_range;
-
+  //  RSRP_ThresholdsNPRACH_InfoList_NB_r13_t *rsrp_ThresholdsPrachInfoList;
+  //  RSRP_Range_t rsrp_range;
   LTE_ACK_NACK_NumRepetitions_NB_r13_t ack_nack_repetition;
   struct LTE_NPUSCH_ConfigCommon_NB_r13__dmrs_Config_r13 *dmrs_config;
-  struct LTE_DL_GapConfig_NB_r13	*dl_Gap;
-
+  struct LTE_DL_GapConfig_NB_r13  *dl_Gap;
   long *srs_SubframeConfig;
   srs_SubframeConfig= CALLOC(1, sizeof(long));
 
-
   if (bcch_message) {
     memset(bcch_message,0,sizeof(LTE_BCCH_DL_SCH_Message_NB_t));
   } else {
@@ -451,84 +386,64 @@ uint8_t do_SIB23_NB_IoT(uint8_t Mod_id,
   }
 
   //before schould be allocated memory somewhere?
-//  if (!carrier->sib2_NB_IoT) {
-//    LOG_E(RRC,"[NB-IoT %d] sib2_NB_IoT is null, exiting\n", Mod_id);
-//    exit(-1);
-//  }
-//
-//  if (!carrier->sib3_NB_IoT) {
-//    LOG_E(RRC,"[NB-IoT %d] sib3_NB_IoT is null, exiting\n", Mod_id);
-//    exit(-1);
-//  }
-
-
+  //  if (!carrier->sib2_NB_IoT) {
+  //    LOG_E(RRC,"[NB-IoT %d] sib2_NB_IoT is null, exiting\n", Mod_id);
+  //    exit(-1);
+  //  }
+  //
+  //  if (!carrier->sib3_NB_IoT) {
+  //    LOG_E(RRC,"[NB-IoT %d] sib3_NB_IoT is null, exiting\n", Mod_id);
+  //    exit(-1);
+  //  }
   LOG_I(RRC,"[NB-IoT %d] Configuration SIB2/3\n", Mod_id);
-
   sib2_NB_part = CALLOC(1,sizeof(struct LTE_SystemInformation_NB_r13_IEs__sib_TypeAndInfo_r13__Member));
   sib3_NB_part = CALLOC(1,sizeof(struct LTE_SystemInformation_NB_r13_IEs__sib_TypeAndInfo_r13__Member));
   memset(sib2_NB_part,0,sizeof(struct LTE_SystemInformation_NB_r13_IEs__sib_TypeAndInfo_r13__Member));
   memset(sib3_NB_part,0,sizeof(struct LTE_SystemInformation_NB_r13_IEs__sib_TypeAndInfo_r13__Member));
-
   sib2_NB_part->present = LTE_SystemInformation_NB_r13_IEs__sib_TypeAndInfo_r13__Member_PR_sib2_r13;
   sib3_NB_part->present = LTE_SystemInformation_NB_r13_IEs__sib_TypeAndInfo_r13__Member_PR_sib3_r13;
-
   //may bug if not correct allocation of memory
   carrier->sib2_NB_IoT = &sib2_NB_part->choice.sib2_r13;
   carrier->sib3_NB_IoT = &sib3_NB_part->choice.sib3_r13;
   sib2_NB_IoT = carrier->sib2_NB_IoT;
   sib3_NB_IoT = carrier->sib3_NB_IoT;
-
   nprach_parameters = (LTE_NPRACH_Parameters_NB_r13_t *) malloc (3*sizeof(LTE_NPRACH_Parameters_NB_r13_t));
-
   memset(&nprach_parameters[0],0,sizeof(LTE_NPRACH_Parameters_NB_r13_t));
   memset(&nprach_parameters[1],0,sizeof(LTE_NPRACH_Parameters_NB_r13_t));
   memset(&nprach_parameters[2],0,sizeof(LTE_NPRACH_Parameters_NB_r13_t));
-
-/// SIB2-NB-----------------------------------------
-
+  /// SIB2-NB-----------------------------------------
   //Barring is manage by ab-Enabled in MIB-NB (but is not a struct as ac-BarringInfo in LTE legacy)
-
   //RACH Config. Common--------------------------------------------------------------
   sib2_NB_IoT->radioResourceConfigCommon_r13.rach_ConfigCommon_r13.preambleTransMax_CE_r13 =
-   		  configuration->rach_preambleTransMax_CE_NB;
+    configuration->rach_preambleTransMax_CE_NB;
   sib2_NB_IoT->radioResourceConfigCommon_r13.rach_ConfigCommon_r13.powerRampingParameters_r13.powerRampingStep =
-	configuration->rach_powerRampingStep_NB;
+    configuration->rach_powerRampingStep_NB;
   sib2_NB_IoT->radioResourceConfigCommon_r13.rach_ConfigCommon_r13.powerRampingParameters_r13.preambleInitialReceivedTargetPower =
     configuration->rach_preambleInitialReceivedTargetPower_NB;
-
   rach_Info_NB_IoT.ra_ResponseWindowSize_r13 = configuration->rach_raResponseWindowSize_NB;
   rach_Info_NB_IoT.mac_ContentionResolutionTimer_r13 = configuration-> rach_macContentionResolutionTimer_NB;
   //rach_infoList max size = maxNPRACH-Resources-NB-r13 = 3
   ASN_SEQUENCE_ADD(&sib2_NB_IoT->radioResourceConfigCommon_r13.rach_ConfigCommon_r13.rach_InfoList_r13.list,&rach_Info_NB_IoT);
-
   //TS 36.331 pag 614 --> if not present the value to infinity sould be used
   *connEstFailOffset = 0;
-  
   sib2_NB_IoT->radioResourceConfigCommon_r13.rach_ConfigCommon_r13.connEstFailOffset_r13 = connEstFailOffset; /*OPTIONAL*/
-
-
   // BCCH-Config-NB-IoT----------------------------------------------------------------
   sib2_NB_IoT->radioResourceConfigCommon_r13.bcch_Config_r13.modificationPeriodCoeff_r13
     = configuration->bcch_modificationPeriodCoeff_NB;
-
   // PCCH-Config-NB-IoT-----------------------------------------------------------------
   sib2_NB_IoT->radioResourceConfigCommon_r13.pcch_Config_r13.defaultPagingCycle_r13
     = configuration->pcch_defaultPagingCycle_NB;
   sib2_NB_IoT->radioResourceConfigCommon_r13.pcch_Config_r13.nB_r13 = configuration->pcch_nB_NB;
   sib2_NB_IoT->radioResourceConfigCommon_r13.pcch_Config_r13.npdcch_NumRepetitionPaging_r13 = configuration-> pcch_npdcch_NumRepetitionPaging_NB;
-
   //NPRACH-Config-NB-IoT-----------------------------------------------------------------
-
-  sib2_NB_IoT->radioResourceConfigCommon_r13.nprach_Config_r13.rsrp_ThresholdsPrachInfoList_r13 = NULL; 
+  sib2_NB_IoT->radioResourceConfigCommon_r13.nprach_Config_r13.rsrp_ThresholdsPrachInfoList_r13 = NULL;
   sib2_NB_IoT->radioResourceConfigCommon_r13.nprach_Config_r13.nprach_CP_Length_r13 = configuration->nprach_CP_Length;
   /*OPTIONAL*/
-//   =CALLOC(1, sizeof(struct RSRP_ThresholdsNPRACH_InfoList_NB_r13)); //fatto uguale dopo
-//   rsrp_ThresholdsPrachInfoList = sib2_NB_IoT->radioResourceConfigCommon_r13.nprach_Config_r13.rsrp_ThresholdsPrachInfoList_r13;
-//   rsrp_range = configuration->nprach_rsrp_range_NB;
-//   ASN_SEQUENCE_ADD(&rsrp_ThresholdsPrachInfoList->list,rsrp_range);
-
+  //   =CALLOC(1, sizeof(struct RSRP_ThresholdsNPRACH_InfoList_NB_r13)); //fatto uguale dopo
+  //   rsrp_ThresholdsPrachInfoList = sib2_NB_IoT->radioResourceConfigCommon_r13.nprach_Config_r13.rsrp_ThresholdsPrachInfoList_r13;
+  //   rsrp_range = configuration->nprach_rsrp_range_NB;
+  //   ASN_SEQUENCE_ADD(&rsrp_ThresholdsPrachInfoList->list,rsrp_range);
   // According configuration to set the 3 CE level configuration setting
-
   nprach_parameters[0].nprach_Periodicity_r13               = configuration->nprach_Periodicity[0];
   nprach_parameters[0].nprach_StartTime_r13                 = configuration->nprach_StartTime[0];
   nprach_parameters[0].nprach_SubcarrierOffset_r13          = configuration->nprach_SubcarrierOffset[0];
@@ -539,7 +454,6 @@ uint8_t do_SIB23_NB_IoT(uint8_t Mod_id,
   nprach_parameters[0].npdcch_NumRepetitions_RA_r13         = configuration->npdcch_NumRepetitions_RA[0];
   nprach_parameters[0].npdcch_StartSF_CSS_RA_r13            = configuration->npdcch_StartSF_CSS_RA[0];
   nprach_parameters[0].npdcch_Offset_RA_r13                 = configuration->npdcch_Offset_RA[0];
-
   nprach_parameters[1].nprach_Periodicity_r13               = configuration->nprach_Periodicity[1];
   nprach_parameters[1].nprach_StartTime_r13                 = configuration->nprach_StartTime[1];
   nprach_parameters[1].nprach_SubcarrierOffset_r13          = configuration->nprach_SubcarrierOffset[1];
@@ -550,7 +464,6 @@ uint8_t do_SIB23_NB_IoT(uint8_t Mod_id,
   nprach_parameters[1].npdcch_NumRepetitions_RA_r13         = configuration->npdcch_NumRepetitions_RA[1];
   nprach_parameters[1].npdcch_StartSF_CSS_RA_r13            = configuration->npdcch_StartSF_CSS_RA[1];
   nprach_parameters[1].npdcch_Offset_RA_r13                 = configuration->npdcch_Offset_RA[1];
-
   nprach_parameters[2].nprach_Periodicity_r13               = configuration->nprach_Periodicity[2];
   nprach_parameters[2].nprach_StartTime_r13                 = configuration->nprach_StartTime[2];
   nprach_parameters[2].nprach_SubcarrierOffset_r13          = configuration->nprach_SubcarrierOffset[2];
@@ -561,40 +474,29 @@ uint8_t do_SIB23_NB_IoT(uint8_t Mod_id,
   nprach_parameters[2].npdcch_NumRepetitions_RA_r13         = configuration->npdcch_NumRepetitions_RA[2];
   nprach_parameters[2].npdcch_StartSF_CSS_RA_r13            = configuration->npdcch_StartSF_CSS_RA[2];
   nprach_parameters[2].npdcch_Offset_RA_r13                 = configuration->npdcch_Offset_RA[2];
-
-
   //nprach_parameterList have a max size of 3 possible nprach configuration (see maxNPRACH_Resources_NB_r13)
   ASN_SEQUENCE_ADD(&sib2_NB_IoT->radioResourceConfigCommon_r13.nprach_Config_r13.nprach_ParametersList_r13.list,&nprach_parameters[0]);
   ASN_SEQUENCE_ADD(&sib2_NB_IoT->radioResourceConfigCommon_r13.nprach_Config_r13.nprach_ParametersList_r13.list,&nprach_parameters[1]);
   ASN_SEQUENCE_ADD(&sib2_NB_IoT->radioResourceConfigCommon_r13.nprach_Config_r13.nprach_ParametersList_r13.list,&nprach_parameters[2]);
-  
   // NPDSCH-Config NB-IOT
   sib2_NB_IoT->radioResourceConfigCommon_r13.npdsch_ConfigCommon_r13.nrs_Power_r13= configuration->npdsch_nrs_Power;
-
-
   //NPUSCH-Config NB-IoT----------------------------------------------------------------
   //list of size 3 (see maxNPRACH_Resources_NB_r13)
   ack_nack_repetition = configuration-> npusch_ack_nack_numRepetitions_NB; //is an enumerative
   ASN_SEQUENCE_ADD(&(sib2_NB_IoT->radioResourceConfigCommon_r13.npusch_ConfigCommon_r13.ack_NACK_NumRepetitions_Msg4_r13.list) ,&ack_nack_repetition);
-
   *srs_SubframeConfig = configuration->npusch_srs_SubframeConfig_NB;
   sib2_NB_IoT->radioResourceConfigCommon_r13.npusch_ConfigCommon_r13.srs_SubframeConfig_r13= srs_SubframeConfig; /*OPTIONAL*/
-
-
   /*OPTIONAL*/
   dmrs_config = CALLOC(1,sizeof(struct LTE_NPUSCH_ConfigCommon_NB_r13__dmrs_Config_r13));
   dmrs_config->threeTone_CyclicShift_r13 = configuration->npusch_threeTone_CyclicShift_r13;
   dmrs_config->sixTone_CyclicShift_r13 = configuration->npusch_sixTone_CyclicShift_r13;
-
   /*OPTIONAL
    * -define the base sequence for a DMRS sequence in a cell with multi tone transmission (3,6,12) see TS 36.331 NPUSCH-Config-NB
    * -if not defined will be calculated based on the cellID once we configure the phy layer (rrc_mac_config_req) through the config_sib2 */
   dmrs_config->threeTone_BaseSequence_r13 = NULL;
   dmrs_config->sixTone_BaseSequence_r13 = NULL;
   dmrs_config->twelveTone_BaseSequence_r13 = NULL;
-
   sib2_NB_IoT->radioResourceConfigCommon_r13.npusch_ConfigCommon_r13.dmrs_Config_r13 = dmrs_config;
-
   //ulReferenceSignalsNPUSCH
   /*Reference Signal (RS) for UL in NB-IoT is called DRS (Demodulation Reference Signal)
    * sequence-group hopping can be enabled or disabled by means of the cell-specific parameter groupHoppingEnabled_r13
@@ -603,22 +505,17 @@ uint8_t do_SIB23_NB_IoT(uint8_t Mod_id,
    */
   sib2_NB_IoT->radioResourceConfigCommon_r13.npusch_ConfigCommon_r13.ul_ReferenceSignalsNPUSCH_r13.groupHoppingEnabled_r13= configuration->npusch_groupHoppingEnabled;
   sib2_NB_IoT->radioResourceConfigCommon_r13.npusch_ConfigCommon_r13.ul_ReferenceSignalsNPUSCH_r13.groupAssignmentNPUSCH_r13 =configuration->npusch_groupAssignmentNPUSCH_r13;
-
-
   //dl_GAP---------------------------------------------------------------------------------/*OPTIONAL*/
   dl_Gap = CALLOC(1,sizeof(struct LTE_DL_GapConfig_NB_r13));
   dl_Gap->dl_GapDurationCoeff_r13= configuration-> dl_GapDurationCoeff_NB;
   dl_Gap->dl_GapPeriodicity_r13= configuration->dl_GapPeriodicity_NB;
   dl_Gap->dl_GapThreshold_r13= configuration->dl_GapThreshold_NB;
   sib2_NB_IoT->radioResourceConfigCommon_r13.dl_Gap_r13 = dl_Gap;
-
-
   // uplinkPowerControlCommon - NB-IoT------------------------------------------------------
   sib2_NB_IoT->radioResourceConfigCommon_r13.uplinkPowerControlCommon_r13.p0_NominalNPUSCH_r13 = configuration->npusch_p0_NominalNPUSCH;
   sib2_NB_IoT->radioResourceConfigCommon_r13.uplinkPowerControlCommon_r13.deltaPreambleMsg3_r13 = configuration->deltaPreambleMsg3;
   sib2_NB_IoT->radioResourceConfigCommon_r13.uplinkPowerControlCommon_r13.alpha_r13 = configuration->npusch_alpha;
   //no deltaFlist_PUCCH and no UL cyclic prefix
-
   // UE Timers and Constants -NB-IoT--------------------------------------------------------
   sib2_NB_IoT->ue_TimersAndConstants_r13.t300_r13 = configuration-> ue_TimersAndConstants_t300_NB;
   sib2_NB_IoT->ue_TimersAndConstants_r13.t301_r13 = configuration-> ue_TimersAndConstants_t301_NB;
@@ -626,61 +523,47 @@ uint8_t do_SIB23_NB_IoT(uint8_t Mod_id,
   sib2_NB_IoT->ue_TimersAndConstants_r13.t311_r13 = configuration-> ue_TimersAndConstants_t311_NB;
   sib2_NB_IoT->ue_TimersAndConstants_r13.n310_r13 = configuration-> ue_TimersAndConstants_n310_NB;
   sib2_NB_IoT->ue_TimersAndConstants_r13.n311_r13 = configuration-> ue_TimersAndConstants_n311_NB;
-
   //other SIB2-NB Parameters--------------------------------------------------------------------------------
   sib2_NB_IoT->freqInfo_r13.additionalSpectrumEmission_r13 = 1;
   sib2_NB_IoT->freqInfo_r13.ul_CarrierFreq_r13 = NULL; /*OPTIONAL*/
-
   sib2_NB_IoT->timeAlignmentTimerCommon_r13=LTE_TimeAlignmentTimer_infinity;//TimeAlignmentTimer_sf5120;
-
   /*OPTIONAL*/
   sib2_NB_IoT->multiBandInfoList_r13 = NULL;
-
-/// SIB3-NB-------------------------------------------------------
-
+  /// SIB3-NB-------------------------------------------------------
   sib3_NB_IoT->cellReselectionInfoCommon_r13.q_Hyst_r13=LTE_SystemInformationBlockType3_NB_r13__cellReselectionInfoCommon_r13__q_Hyst_r13_dB4;
   sib3_NB_IoT->cellReselectionServingFreqInfo_r13.s_NonIntraSearch_r13=0; //or define in configuration?
-
   sib3_NB_IoT->intraFreqCellReselectionInfo_r13.q_RxLevMin_r13 = -70;
   //new
   sib3_NB_IoT->intraFreqCellReselectionInfo_r13.q_QualMin_r13 = CALLOC(1,sizeof(*sib3_NB_IoT->intraFreqCellReselectionInfo_r13.q_QualMin_r13));
   *(sib3_NB_IoT->intraFreqCellReselectionInfo_r13.q_QualMin_r13)= 10; //a caso
-
   sib3_NB_IoT->intraFreqCellReselectionInfo_r13.p_Max_r13 = NULL;
   sib3_NB_IoT->intraFreqCellReselectionInfo_r13.s_IntraSearchP_r13 = 31; // s_intraSearch --> s_intraSearchP!!! (they call in a different way)
   sib3_NB_IoT->intraFreqCellReselectionInfo_r13.t_Reselection_r13=1;
-
   //how to manage?
   sib3_NB_IoT->freqBandInfo_r13 = NULL;
   sib3_NB_IoT->multiBandInfoList_r13 = NULL;
-
-
-///BCCH message (generate the SI message)
+  ///BCCH message (generate the SI message)
   bcch_message->message.present = LTE_BCCH_DL_SCH_MessageType_NB_PR_c1;
   bcch_message->message.choice.c1.present = LTE_BCCH_DL_SCH_MessageType_NB__c1_PR_systemInformation_r13;
-
   bcch_message->message.choice.c1.choice.systemInformation_r13.criticalExtensions.present = LTE_SystemInformation_NB__criticalExtensions_PR_systemInformation_r13;
   bcch_message->message.choice.c1.choice.systemInformation_r13.criticalExtensions.choice.systemInformation_r13.sib_TypeAndInfo_r13.list.count=0;
-
   ASN_SEQUENCE_ADD(&bcch_message->message.choice.c1.choice.systemInformation_r13.criticalExtensions.choice.systemInformation_r13.sib_TypeAndInfo_r13.list,
                    sib2_NB_part);
   ASN_SEQUENCE_ADD(&bcch_message->message.choice.c1.choice.systemInformation_r13.criticalExtensions.choice.systemInformation_r13.sib_TypeAndInfo_r13.list,
                    sib3_NB_part);
 
   if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
-     xer_fprint(stdout, &asn_DEF_LTE_BCCH_DL_SCH_Message_NB, (void*)bcch_message);
+    xer_fprint(stdout, &asn_DEF_LTE_BCCH_DL_SCH_Message_NB, (void *)bcch_message);
   }
+
   enc_rval = uper_encode_to_buffer(&asn_DEF_LTE_BCCH_DL_SCH_Message_NB,
                                    NULL,
-                                   (void*)bcch_message,
+                                   (void *)bcch_message,
                                    carrier->SIB23_NB_IoT,
                                    900);
-//  AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n",
-//               enc_rval.failed_type->name, enc_rval.encoded);
-
-//#if defined(ENABLE_ITTI).....
-
-
+  //  AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n",
+  //               enc_rval.failed_type->name, enc_rval.encoded);
+  //#if defined(ENABLE_ITTI).....
 #ifdef USER_MODE
   LOG_D(RRC,"[NB-IoT] SystemInformation-NB Encoded %zd bits (%zd bytes)\n",enc_rval.encoded,(enc_rval.encoded+7)/8);
 #endif
@@ -692,270 +575,226 @@ uint8_t do_SIB23_NB_IoT(uint8_t Mod_id,
 
   carrier->sib2_NB_IoT = sib2_NB_IoT;
   carrier->sib3_NB_IoT = sib3_NB_IoT;
-
   return((enc_rval.encoded+7)/8);
 }
 
 /*do_RRCConnectionSetup_NB_IoT--> the aim is to establish SRB1 and SRB1bis(implicitly)*/
 uint8_t do_RRCConnectionSetup_NB_IoT(
-  const protocol_ctxt_t*     const ctxt_pP,
-  rrc_eNB_ue_context_NB_IoT_t*      const ue_context_pP,
+  const protocol_ctxt_t     *const ctxt_pP,
+  rrc_eNB_ue_context_NB_IoT_t      *const ue_context_pP,
   int                              CC_id,
-  uint8_t*                   const buffer, //Srb0.Tx_buffer.Payload
+  uint8_t                   *const buffer, //Srb0.Tx_buffer.Payload
   const uint8_t                    Transaction_id,
-  const NB_IoT_DL_FRAME_PARMS* const frame_parms, // maybe not used
-  LTE_SRB_ToAddModList_NB_r13_t**             SRB_configList_NB_IoT, //for both SRB1bis and SRB1
-  struct LTE_PhysicalConfigDedicated_NB_r13** physicalConfigDedicated_NB_IoT
+  const NB_IoT_DL_FRAME_PARMS *const frame_parms, // maybe not used
+  LTE_SRB_ToAddModList_NB_r13_t             **SRB_configList_NB_IoT, //for both SRB1bis and SRB1
+  struct LTE_PhysicalConfigDedicated_NB_r13 **physicalConfigDedicated_NB_IoT
 )
 
 {
+  asn_enc_rval_t enc_rval;
+  //MP:logical channel group not defined for Nb-IoT
+  //MP: logical channel priority pag 605 (is 1 for SRB1 and for SRB1bis should be the same)
+  //long* prioritySRB1 = NULL;
+  long *prioritySRB1bis = NULL;
+  BOOLEAN_t *logicalChannelSR_Prohibit =NULL; //pag 605
+  BOOLEAN_t *npusch_AllSymbols= NULL;
+  // struct SRB_ToAddMod_NB_r13* SRB1_config_NB = NULL;
+  // struct SRB_ToAddMod_NB_r13__rlc_Config_r13* SRB1_rlc_config_NB = NULL;
+  // struct SRB_ToAddMod_NB_r13__logicalChannelConfig_r13* SRB1_lchan_config_NB = NULL;
+  struct LTE_SRB_ToAddMod_NB_r13 *SRB1bis_config_NB_IoT = NULL;
+  struct LTE_SRB_ToAddMod_NB_r13__rlc_Config_r13 *SRB1bis_rlc_config_NB_IoT = NULL;
+  struct LTE_SRB_ToAddMod_NB_r13__logicalChannelConfig_r13 *SRB1bis_lchan_config_NB_IoT = NULL;
+  //No UL_specific parameters for NB-IoT in LogicalChanelConfig-NB
+  LTE_PhysicalConfigDedicated_NB_r13_t *physicalConfigDedicated2_NB_IoT = NULL;
+  LTE_DL_CCCH_Message_NB_t dl_ccch_msg_NB_IoT;
+  LTE_RRCConnectionSetup_NB_t *rrcConnectionSetup_NB_IoT = NULL;
+  memset((void *)&dl_ccch_msg_NB_IoT,0,sizeof(LTE_DL_CCCH_Message_NB_t));
+  dl_ccch_msg_NB_IoT.message.present = LTE_DL_CCCH_MessageType_NB_PR_c1;
+  dl_ccch_msg_NB_IoT.message.choice.c1.present = LTE_DL_CCCH_MessageType_NB__c1_PR_rrcConnectionSetup_r13;
+  rrcConnectionSetup_NB_IoT = &dl_ccch_msg_NB_IoT.message.choice.c1.choice.rrcConnectionSetup_r13;
 
- asn_enc_rval_t enc_rval;
-
-
- //MP:logical channel group not defined for Nb-IoT
-
- //MP: logical channel priority pag 605 (is 1 for SRB1 and for SRB1bis should be the same)
- //long* prioritySRB1 = NULL;
- long* prioritySRB1bis = NULL;
- BOOLEAN_t* logicalChannelSR_Prohibit =NULL; //pag 605
- BOOLEAN_t* npusch_AllSymbols= NULL;
-
-// struct SRB_ToAddMod_NB_r13* SRB1_config_NB = NULL;
-// struct SRB_ToAddMod_NB_r13__rlc_Config_r13* SRB1_rlc_config_NB = NULL;
-// struct SRB_ToAddMod_NB_r13__logicalChannelConfig_r13* SRB1_lchan_config_NB = NULL;
-
- struct LTE_SRB_ToAddMod_NB_r13* SRB1bis_config_NB_IoT = NULL;
- struct LTE_SRB_ToAddMod_NB_r13__rlc_Config_r13* SRB1bis_rlc_config_NB_IoT = NULL;
- struct LTE_SRB_ToAddMod_NB_r13__logicalChannelConfig_r13* SRB1bis_lchan_config_NB_IoT = NULL;
-
- //No UL_specific parameters for NB-IoT in LogicalChanelConfig-NB
-
- LTE_PhysicalConfigDedicated_NB_r13_t* physicalConfigDedicated2_NB_IoT = NULL;
- LTE_DL_CCCH_Message_NB_t dl_ccch_msg_NB_IoT;
- LTE_RRCConnectionSetup_NB_t* rrcConnectionSetup_NB_IoT = NULL;
-
- memset((void *)&dl_ccch_msg_NB_IoT,0,sizeof(LTE_DL_CCCH_Message_NB_t));
- dl_ccch_msg_NB_IoT.message.present = LTE_DL_CCCH_MessageType_NB_PR_c1;
- dl_ccch_msg_NB_IoT.message.choice.c1.present = LTE_DL_CCCH_MessageType_NB__c1_PR_rrcConnectionSetup_r13;
- rrcConnectionSetup_NB_IoT = &dl_ccch_msg_NB_IoT.message.choice.c1.choice.rrcConnectionSetup_r13;
-
-
- if (*SRB_configList_NB_IoT) {
-   free(*SRB_configList_NB_IoT);
- }
- *SRB_configList_NB_IoT = CALLOC(1,sizeof(LTE_SRB_ToAddModList_NB_r13_t));
-
-/// SRB1--------------------
- {
-// SRB1_config_NB = CALLOC(1,sizeof(*SRB1_config_NB));
-//
-// //no srb_Identity in SRB_ToAddMod_NB
-//
-// SRB1_rlc_config_NB = CALLOC(1,sizeof(*SRB1_rlc_config_NB));
-// SRB1_config_NB->rlc_Config_r13   = SRB1_rlc_config_NB;
-//
-// SRB1_rlc_config_NB->present = SRB_ToAddMod_NB_r13__rlc_Config_r13_PR_explicitValue;
-// SRB1_rlc_config_NB->choice.explicitValue.present=RLC_Config_NB_r13_PR_am;//the only possible in NB_IoT
-//
-//// SRB1_rlc_config_NB->choice.explicitValue.choice.am.ul_AM_RLC_r13.t_PollRetransmit_r13 = enb_properties.properties[ctxt_pP->module_id]->srb1_timer_poll_retransmit_r13;
-//// SRB1_rlc_config_NB->choice.explicitValue.choice.am.ul_AM_RLC_r13.maxRetxThreshold_r13 = enb_properties.properties[ctxt_pP->module_id]->srb1_max_retx_threshold_r13;
-//// //(musT be disabled--> SRB1 config pag 640 specs )
-//// SRB1_rlc_config_NB->choice.explicitValue.choice.am.dl_AM_RLC_r13.enableStatusReportSN_Gap_r13 =NULL;
-//
-//
-// SRB1_rlc_config_NB->choice.explicitValue.choice.am.ul_AM_RLC_r13.t_PollRetransmit_r13 = T_PollRetransmit_NB_r13_ms25000;
-// SRB1_rlc_config_NB->choice.explicitValue.choice.am.ul_AM_RLC_r13.maxRetxThreshold_r13 = UL_AM_RLC_NB_r13__maxRetxThreshold_r13_t8;
-// //(musT be disabled--> SRB1 config pag 640 specs )
-// SRB1_rlc_config_NB->choice.explicitValue.choice.am.dl_AM_RLC_r13.enableStatusReportSN_Gap_r13 = NULL;
-//
-// SRB1_lchan_config_NB = CALLOC(1,sizeof(*SRB1_lchan_config_NB));
-// SRB1_config_NB->logicalChannelConfig_r13  = SRB1_lchan_config_NB;
-//
-// SRB1_lchan_config_NB->present = SRB_ToAddMod_NB_r13__logicalChannelConfig_r13_PR_explicitValue;
-//
-//
-// prioritySRB1 = CALLOC(1, sizeof(long));
-// *prioritySRB1 = 1;
-// SRB1_lchan_config_NB->choice.explicitValue.priority_r13 = prioritySRB1;
-//
-// logicalChannelSR_Prohibit = CALLOC(1, sizeof(BOOLEAN_t));
-// *logicalChannelSR_Prohibit = 1;
-// //schould be set to TRUE (specs pag 641)
-// SRB1_lchan_config_NB->choice.explicitValue.logicalChannelSR_Prohibit_r13 = logicalChannelSR_Prohibit;
-//
-// //ADD SRB1
-// ASN_SEQUENCE_ADD(&(*SRB_configList_NB_IoT)->list,SRB1_config_NB);
- }
-
-///SRB1bis (The configuration for SRB1 and SRB1bis is the same) the only difference is the logical channel identity = 3 but not set here
-
-		 SRB1bis_config_NB_IoT = CALLOC(1,sizeof(*SRB1bis_config_NB_IoT));
-
-		 //no srb_Identity in SRB_ToAddMod_NB
-		 SRB1bis_rlc_config_NB_IoT = CALLOC(1,sizeof(*SRB1bis_rlc_config_NB_IoT));
-		 SRB1bis_config_NB_IoT->rlc_Config_r13   = SRB1bis_rlc_config_NB_IoT;
-
-		 SRB1bis_rlc_config_NB_IoT->present = LTE_SRB_ToAddMod_NB_r13__rlc_Config_r13_PR_explicitValue;
-		 SRB1bis_rlc_config_NB_IoT->choice.explicitValue.present=LTE_RLC_Config_NB_r13_PR_am;//MP: the only possible RLC config in NB_IoT
-
-		 SRB1bis_rlc_config_NB_IoT->choice.explicitValue.choice.am.ul_AM_RLC_r13.t_PollRetransmit_r13 = LTE_T_PollRetransmit_NB_r13_ms25000;
-		 SRB1bis_rlc_config_NB_IoT->choice.explicitValue.choice.am.ul_AM_RLC_r13.maxRetxThreshold_r13 = LTE_UL_AM_RLC_NB_r13__maxRetxThreshold_r13_t8;
-		 //(musT be disabled--> SRB1 config pag 640 specs )
-		 SRB1bis_rlc_config_NB_IoT->choice.explicitValue.choice.am.dl_AM_RLC_r13.enableStatusReportSN_Gap_r13 =NULL;
-
-		 SRB1bis_lchan_config_NB_IoT = CALLOC(1,sizeof(*SRB1bis_lchan_config_NB_IoT));
-		 SRB1bis_config_NB_IoT->logicalChannelConfig_r13  = SRB1bis_lchan_config_NB_IoT;
-
-		 SRB1bis_lchan_config_NB_IoT->present = LTE_SRB_ToAddMod_NB_r13__logicalChannelConfig_r13_PR_explicitValue;
-
-		 prioritySRB1bis = CALLOC(1, sizeof(long));
-		 *prioritySRB1bis = 1; //same as SRB1?
-		 SRB1bis_lchan_config_NB_IoT->choice.explicitValue.priority_r13 = prioritySRB1bis;
-
-		 logicalChannelSR_Prohibit = CALLOC(1, sizeof(BOOLEAN_t));
-		 *logicalChannelSR_Prohibit = 1; //schould be set to TRUE (specs pag 641)
-		 SRB1bis_lchan_config_NB_IoT->choice.explicitValue.logicalChannelSR_Prohibit_r13 = logicalChannelSR_Prohibit;
-
-		 //ADD SRB1bis
-		 //MP: Actually there is no way to distinguish SRB1 and SRB1bis once put in the list
-		 //MP: SRB_ToAddModList_NB_r13_t size = 1
-		 ASN_SEQUENCE_ADD(&(*SRB_configList_NB_IoT)->list,SRB1bis_config_NB_IoT);
-
-
- // PhysicalConfigDedicated (NPDCCH, NPUSCH, CarrierConfig, UplinkPowerControl)
-
- physicalConfigDedicated2_NB_IoT = CALLOC(1,sizeof(*physicalConfigDedicated2_NB_IoT));
- *physicalConfigDedicated_NB_IoT = physicalConfigDedicated2_NB_IoT;
-
- physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13= CALLOC(1, sizeof(*physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13));
- physicalConfigDedicated2_NB_IoT->npdcch_ConfigDedicated_r13 = CALLOC(1,sizeof(*physicalConfigDedicated2_NB_IoT->npdcch_ConfigDedicated_r13));
- physicalConfigDedicated2_NB_IoT->npusch_ConfigDedicated_r13 = CALLOC(1,sizeof(*physicalConfigDedicated2_NB_IoT->npusch_ConfigDedicated_r13));
- physicalConfigDedicated2_NB_IoT->uplinkPowerControlDedicated_r13 = CALLOC(1,sizeof(*physicalConfigDedicated2_NB_IoT->uplinkPowerControlDedicated_r13));
-
- //no tpc, no cqi and no pucch, no pdsch, no soundingRS, no AntennaInfo, no scheduling request config
-
- /*
-  * NB-IoT supports the operation with either one or two antenna ports, AP0 and AP1.
-  * For the latter case, Space Frequency Block Coding (SFBC) is applied.
-  * Once selected, the same transmission scheme applies to NPBCH, NPDCCH, and NPDSCH.
-  * */
-
- //FIXME: MP: CarrierConfigDedicated check the set values ----------------------------------------------
+  if (*SRB_configList_NB_IoT) {
+    free(*SRB_configList_NB_IoT);
+  }
 
+  *SRB_configList_NB_IoT = CALLOC(1,sizeof(LTE_SRB_ToAddModList_NB_r13_t));
+  /// SRB1--------------------
+  {
+    // SRB1_config_NB = CALLOC(1,sizeof(*SRB1_config_NB));
+    //
+    // //no srb_Identity in SRB_ToAddMod_NB
+    //
+    // SRB1_rlc_config_NB = CALLOC(1,sizeof(*SRB1_rlc_config_NB));
+    // SRB1_config_NB->rlc_Config_r13   = SRB1_rlc_config_NB;
+    //
+    // SRB1_rlc_config_NB->present = SRB_ToAddMod_NB_r13__rlc_Config_r13_PR_explicitValue;
+    // SRB1_rlc_config_NB->choice.explicitValue.present=RLC_Config_NB_r13_PR_am;//the only possible in NB_IoT
+    //
+    //// SRB1_rlc_config_NB->choice.explicitValue.choice.am.ul_AM_RLC_r13.t_PollRetransmit_r13 = enb_properties.properties[ctxt_pP->module_id]->srb1_timer_poll_retransmit_r13;
+    //// SRB1_rlc_config_NB->choice.explicitValue.choice.am.ul_AM_RLC_r13.maxRetxThreshold_r13 = enb_properties.properties[ctxt_pP->module_id]->srb1_max_retx_threshold_r13;
+    //// //(musT be disabled--> SRB1 config pag 640 specs )
+    //// SRB1_rlc_config_NB->choice.explicitValue.choice.am.dl_AM_RLC_r13.enableStatusReportSN_Gap_r13 =NULL;
+    //
+    //
+    // SRB1_rlc_config_NB->choice.explicitValue.choice.am.ul_AM_RLC_r13.t_PollRetransmit_r13 = T_PollRetransmit_NB_r13_ms25000;
+    // SRB1_rlc_config_NB->choice.explicitValue.choice.am.ul_AM_RLC_r13.maxRetxThreshold_r13 = UL_AM_RLC_NB_r13__maxRetxThreshold_r13_t8;
+    // //(musT be disabled--> SRB1 config pag 640 specs )
+    // SRB1_rlc_config_NB->choice.explicitValue.choice.am.dl_AM_RLC_r13.enableStatusReportSN_Gap_r13 = NULL;
+    //
+    // SRB1_lchan_config_NB = CALLOC(1,sizeof(*SRB1_lchan_config_NB));
+    // SRB1_config_NB->logicalChannelConfig_r13  = SRB1_lchan_config_NB;
+    //
+    // SRB1_lchan_config_NB->present = SRB_ToAddMod_NB_r13__logicalChannelConfig_r13_PR_explicitValue;
+    //
+    //
+    // prioritySRB1 = CALLOC(1, sizeof(long));
+    // *prioritySRB1 = 1;
+    // SRB1_lchan_config_NB->choice.explicitValue.priority_r13 = prioritySRB1;
+    //
+    // logicalChannelSR_Prohibit = CALLOC(1, sizeof(BOOLEAN_t));
+    // *logicalChannelSR_Prohibit = 1;
+    // //schould be set to TRUE (specs pag 641)
+    // SRB1_lchan_config_NB->choice.explicitValue.logicalChannelSR_Prohibit_r13 = logicalChannelSR_Prohibit;
+    //
+    // //ADD SRB1
+    // ASN_SEQUENCE_ADD(&(*SRB_configList_NB_IoT)->list,SRB1_config_NB);
+  }
+  ///SRB1bis (The configuration for SRB1 and SRB1bis is the same) the only difference is the logical channel identity = 3 but not set here
+  SRB1bis_config_NB_IoT = CALLOC(1,sizeof(*SRB1bis_config_NB_IoT));
+  //no srb_Identity in SRB_ToAddMod_NB
+  SRB1bis_rlc_config_NB_IoT = CALLOC(1,sizeof(*SRB1bis_rlc_config_NB_IoT));
+  SRB1bis_config_NB_IoT->rlc_Config_r13   = SRB1bis_rlc_config_NB_IoT;
+  SRB1bis_rlc_config_NB_IoT->present = LTE_SRB_ToAddMod_NB_r13__rlc_Config_r13_PR_explicitValue;
+  SRB1bis_rlc_config_NB_IoT->choice.explicitValue.present=LTE_RLC_Config_NB_r13_PR_am;//MP: the only possible RLC config in NB_IoT
+  SRB1bis_rlc_config_NB_IoT->choice.explicitValue.choice.am.ul_AM_RLC_r13.t_PollRetransmit_r13 = LTE_T_PollRetransmit_NB_r13_ms25000;
+  SRB1bis_rlc_config_NB_IoT->choice.explicitValue.choice.am.ul_AM_RLC_r13.maxRetxThreshold_r13 = LTE_UL_AM_RLC_NB_r13__maxRetxThreshold_r13_t8;
+  //(musT be disabled--> SRB1 config pag 640 specs )
+  SRB1bis_rlc_config_NB_IoT->choice.explicitValue.choice.am.dl_AM_RLC_r13.enableStatusReportSN_Gap_r13 =NULL;
+  SRB1bis_lchan_config_NB_IoT = CALLOC(1,sizeof(*SRB1bis_lchan_config_NB_IoT));
+  SRB1bis_config_NB_IoT->logicalChannelConfig_r13  = SRB1bis_lchan_config_NB_IoT;
+  SRB1bis_lchan_config_NB_IoT->present = LTE_SRB_ToAddMod_NB_r13__logicalChannelConfig_r13_PR_explicitValue;
+  prioritySRB1bis = CALLOC(1, sizeof(long));
+  *prioritySRB1bis = 1; //same as SRB1?
+  SRB1bis_lchan_config_NB_IoT->choice.explicitValue.priority_r13 = prioritySRB1bis;
+  logicalChannelSR_Prohibit = CALLOC(1, sizeof(BOOLEAN_t));
+  *logicalChannelSR_Prohibit = 1; //schould be set to TRUE (specs pag 641)
+  SRB1bis_lchan_config_NB_IoT->choice.explicitValue.logicalChannelSR_Prohibit_r13 = logicalChannelSR_Prohibit;
+  //ADD SRB1bis
+  //MP: Actually there is no way to distinguish SRB1 and SRB1bis once put in the list
+  //MP: SRB_ToAddModList_NB_r13_t size = 1
+  ASN_SEQUENCE_ADD(&(*SRB_configList_NB_IoT)->list,SRB1bis_config_NB_IoT);
+  // PhysicalConfigDedicated (NPDCCH, NPUSCH, CarrierConfig, UplinkPowerControl)
+  physicalConfigDedicated2_NB_IoT = CALLOC(1,sizeof(*physicalConfigDedicated2_NB_IoT));
+  *physicalConfigDedicated_NB_IoT = physicalConfigDedicated2_NB_IoT;
+  physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13= CALLOC(1, sizeof(*physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13));
+  physicalConfigDedicated2_NB_IoT->npdcch_ConfigDedicated_r13 = CALLOC(1,sizeof(*physicalConfigDedicated2_NB_IoT->npdcch_ConfigDedicated_r13));
+  physicalConfigDedicated2_NB_IoT->npusch_ConfigDedicated_r13 = CALLOC(1,sizeof(*physicalConfigDedicated2_NB_IoT->npusch_ConfigDedicated_r13));
+  physicalConfigDedicated2_NB_IoT->uplinkPowerControlDedicated_r13 = CALLOC(1,sizeof(*physicalConfigDedicated2_NB_IoT->uplinkPowerControlDedicated_r13));
+  //no tpc, no cqi and no pucch, no pdsch, no soundingRS, no AntennaInfo, no scheduling request config
+  /*
+   * NB-IoT supports the operation with either one or two antenna ports, AP0 and AP1.
+   * For the latter case, Space Frequency Block Coding (SFBC) is applied.
+   * Once selected, the same transmission scheme applies to NPBCH, NPDCCH, and NPDSCH.
+   * */
+  //FIXME: MP: CarrierConfigDedicated check the set values ----------------------------------------------
   //DL
+  physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13->dl_CarrierConfig_r13.dl_CarrierFreq_r13.carrierFreq_r13=0;//random value set
+  physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13->dl_CarrierConfig_r13.downlinkBitmapNonAnchor_r13= CALLOC(1,
+      sizeof(struct LTE_DL_CarrierConfigDedicated_NB_r13__downlinkBitmapNonAnchor_r13));
+  physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13->dl_CarrierConfig_r13.downlinkBitmapNonAnchor_r13->present=
+    LTE_DL_CarrierConfigDedicated_NB_r13__downlinkBitmapNonAnchor_r13_PR_useNoBitmap_r13;
+  physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13->dl_CarrierConfig_r13.dl_GapNonAnchor_r13 = CALLOC(1,sizeof(struct LTE_DL_CarrierConfigDedicated_NB_r13__dl_GapNonAnchor_r13));
+  physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13->dl_CarrierConfig_r13.dl_GapNonAnchor_r13->present =
+    LTE_DL_CarrierConfigDedicated_NB_r13__dl_GapNonAnchor_r13_PR_useNoGap_r13;
+  physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13->dl_CarrierConfig_r13.inbandCarrierInfo_r13= NULL;
+  //UL
+  physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13->ul_CarrierConfig_r13.ul_CarrierFreq_r13= NULL;
+  // NPDCCH
+  physicalConfigDedicated2_NB_IoT->npdcch_ConfigDedicated_r13->npdcch_NumRepetitions_r13 =0;
+  physicalConfigDedicated2_NB_IoT->npdcch_ConfigDedicated_r13->npdcch_Offset_USS_r13 =0;
+  physicalConfigDedicated2_NB_IoT->npdcch_ConfigDedicated_r13->npdcch_StartSF_USS_r13=0;
+  // NPUSCH //(specs TS 36.331 v14.2.1 pag 643) /* OPTIONAL */
+  physicalConfigDedicated2_NB_IoT->npusch_ConfigDedicated_r13->ack_NACK_NumRepetitions_r13= NULL;
+  npusch_AllSymbols= CALLOC(1, sizeof(BOOLEAN_t));
+  *npusch_AllSymbols= 1; //TRUE
+  physicalConfigDedicated2_NB_IoT->npusch_ConfigDedicated_r13->npusch_AllSymbols_r13= npusch_AllSymbols; /* OPTIONAL */
+  physicalConfigDedicated2_NB_IoT->npusch_ConfigDedicated_r13->groupHoppingDisabled_r13=NULL; /* OPTIONAL */
+  // UplinkPowerControlDedicated
+  physicalConfigDedicated2_NB_IoT->uplinkPowerControlDedicated_r13->p0_UE_NPUSCH_r13 = 0; // 0 dB (specs TS36.331 v14.2.1 pag 643)
+  //Fill the rrcConnectionSetup-NB message
+  rrcConnectionSetup_NB_IoT->rrc_TransactionIdentifier = Transaction_id; //input value
+  rrcConnectionSetup_NB_IoT->criticalExtensions.present = LTE_RRCConnectionSetup_NB__criticalExtensions_PR_c1;
+  rrcConnectionSetup_NB_IoT->criticalExtensions.choice.c1.present =LTE_RRCConnectionSetup_NB__criticalExtensions__c1_PR_rrcConnectionSetup_r13 ;
+  //MP: carry only SRB1bis at the moment and phyConfigDedicated
+  rrcConnectionSetup_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionSetup_r13.radioResourceConfigDedicated_r13.srb_ToAddModList_r13 = *SRB_configList_NB_IoT;
+  rrcConnectionSetup_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionSetup_r13.radioResourceConfigDedicated_r13.drb_ToAddModList_r13 = NULL;
+  rrcConnectionSetup_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionSetup_r13.radioResourceConfigDedicated_r13.drb_ToReleaseList_r13 = NULL;
+  rrcConnectionSetup_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionSetup_r13.radioResourceConfigDedicated_r13.rlf_TimersAndConstants_r13 = NULL;
+  rrcConnectionSetup_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionSetup_r13.radioResourceConfigDedicated_r13.physicalConfigDedicated_r13 = physicalConfigDedicated2_NB_IoT;
+  rrcConnectionSetup_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionSetup_r13.radioResourceConfigDedicated_r13.mac_MainConfig_r13 = NULL;
 
- physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13->dl_CarrierConfig_r13.dl_CarrierFreq_r13.carrierFreq_r13=0;//random value set
- physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13->dl_CarrierConfig_r13.downlinkBitmapNonAnchor_r13= CALLOC(1,sizeof(struct LTE_DL_CarrierConfigDedicated_NB_r13__downlinkBitmapNonAnchor_r13));
-		 physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13->dl_CarrierConfig_r13.downlinkBitmapNonAnchor_r13->present=
-				 	 	 	 	 	 	 	 	 LTE_DL_CarrierConfigDedicated_NB_r13__downlinkBitmapNonAnchor_r13_PR_useNoBitmap_r13;
-
- physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13->dl_CarrierConfig_r13.dl_GapNonAnchor_r13 = CALLOC(1,sizeof(struct LTE_DL_CarrierConfigDedicated_NB_r13__dl_GapNonAnchor_r13));
- physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13->dl_CarrierConfig_r13.dl_GapNonAnchor_r13->present =
-		  	  	  	  	  	  	  	  	  	  	  LTE_DL_CarrierConfigDedicated_NB_r13__dl_GapNonAnchor_r13_PR_useNoGap_r13;
+  if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+    xer_fprint(stdout, &asn_DEF_LTE_DL_CCCH_Message_NB, (void *)&dl_ccch_msg_NB_IoT);
+  }
 
- physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13->dl_CarrierConfig_r13.inbandCarrierInfo_r13= NULL;
+  enc_rval = uper_encode_to_buffer(&asn_DEF_LTE_DL_CCCH_Message_NB,
+                                   NULL,
+                                   (void *)&dl_ccch_msg_NB_IoT,
+                                   buffer,
+                                   100);
 
-  //UL
- physicalConfigDedicated2_NB_IoT->carrierConfigDedicated_r13->ul_CarrierConfig_r13.ul_CarrierFreq_r13= NULL;
-
- // NPDCCH
- physicalConfigDedicated2_NB_IoT->npdcch_ConfigDedicated_r13->npdcch_NumRepetitions_r13 =0;
- physicalConfigDedicated2_NB_IoT->npdcch_ConfigDedicated_r13->npdcch_Offset_USS_r13 =0;
- physicalConfigDedicated2_NB_IoT->npdcch_ConfigDedicated_r13->npdcch_StartSF_USS_r13=0;
-
- // NPUSCH //(specs TS 36.331 v14.2.1 pag 643) /* OPTIONAL */
- physicalConfigDedicated2_NB_IoT->npusch_ConfigDedicated_r13->ack_NACK_NumRepetitions_r13= NULL;
- npusch_AllSymbols= CALLOC(1, sizeof(BOOLEAN_t));
- *npusch_AllSymbols= 1; //TRUE
- physicalConfigDedicated2_NB_IoT->npusch_ConfigDedicated_r13->npusch_AllSymbols_r13= npusch_AllSymbols; /* OPTIONAL */
- physicalConfigDedicated2_NB_IoT->npusch_ConfigDedicated_r13->groupHoppingDisabled_r13=NULL; /* OPTIONAL */
-
- // UplinkPowerControlDedicated
- physicalConfigDedicated2_NB_IoT->uplinkPowerControlDedicated_r13->p0_UE_NPUSCH_r13 = 0; // 0 dB (specs TS36.331 v14.2.1 pag 643)
-
-
- //Fill the rrcConnectionSetup-NB message
- rrcConnectionSetup_NB_IoT->rrc_TransactionIdentifier = Transaction_id; //input value
- rrcConnectionSetup_NB_IoT->criticalExtensions.present = LTE_RRCConnectionSetup_NB__criticalExtensions_PR_c1;
- rrcConnectionSetup_NB_IoT->criticalExtensions.choice.c1.present =LTE_RRCConnectionSetup_NB__criticalExtensions__c1_PR_rrcConnectionSetup_r13 ;
- //MP: carry only SRB1bis at the moment and phyConfigDedicated
- rrcConnectionSetup_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionSetup_r13.radioResourceConfigDedicated_r13.srb_ToAddModList_r13 = *SRB_configList_NB_IoT;
- rrcConnectionSetup_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionSetup_r13.radioResourceConfigDedicated_r13.drb_ToAddModList_r13 = NULL;
- rrcConnectionSetup_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionSetup_r13.radioResourceConfigDedicated_r13.drb_ToReleaseList_r13 = NULL;
- rrcConnectionSetup_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionSetup_r13.radioResourceConfigDedicated_r13.rlf_TimersAndConstants_r13 = NULL;
- rrcConnectionSetup_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionSetup_r13.radioResourceConfigDedicated_r13.physicalConfigDedicated_r13 = physicalConfigDedicated2_NB_IoT;
- rrcConnectionSetup_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionSetup_r13.radioResourceConfigDedicated_r13.mac_MainConfig_r13 = NULL;
-
- if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
-    xer_fprint(stdout, &asn_DEF_LTE_DL_CCCH_Message_NB, (void*)&dl_ccch_msg_NB_IoT);
- }
- enc_rval = uper_encode_to_buffer(&asn_DEF_LTE_DL_CCCH_Message_NB,
-                                  NULL,
-                                  (void*)&dl_ccch_msg_NB_IoT,
-                                  buffer,
-                                  100);
-
- if (enc_rval.encoded <= 0) {
-     LOG_E(RRC, "ASN1 message encoding failed (%s, %lu)!\n",
-              enc_rval.failed_type->name, enc_rval.encoded);
- }
+  if (enc_rval.encoded <= 0) {
+    LOG_E(RRC, "ASN1 message encoding failed (%s, %lu)!\n",
+          enc_rval.failed_type->name, enc_rval.encoded);
+  }
 
 #ifdef USER_MODE
- LOG_D(RRC,"RRCConnectionSetup-NB Encoded %zd bits (%zd bytes), ecause %d\n",
-       enc_rval.encoded,(enc_rval.encoded+7)/8,ecause);
+  LOG_D(RRC,"RRCConnectionSetup-NB Encoded %zd bits (%zd bytes), ecause %d\n",
+        enc_rval.encoded,(enc_rval.encoded+7)/8,ecause);
 #endif
-
- return((enc_rval.encoded+7)/8);
+  return((enc_rval.encoded+7)/8);
 }
 
 /*do_SecurityModeCommand - exactly the same as previous implementation*/
 uint8_t do_SecurityModeCommand_NB_IoT(
-  const protocol_ctxt_t* const ctxt_pP,
-  uint8_t* const buffer,
+  const protocol_ctxt_t *const ctxt_pP,
+  uint8_t *const buffer,
   const uint8_t Transaction_id,
   const uint8_t cipheringAlgorithm,
-  const uint8_t integrityProtAlgorithm)
-{
+  const uint8_t integrityProtAlgorithm) {
   LTE_DL_DCCH_Message_NB_t dl_dcch_msg_NB_IoT;
   asn_enc_rval_t enc_rval;
-
   memset(&dl_dcch_msg_NB_IoT,0,sizeof(LTE_DL_DCCH_Message_NB_t));
-
   dl_dcch_msg_NB_IoT.message.present = LTE_DL_DCCH_MessageType_NB_PR_c1;
   dl_dcch_msg_NB_IoT.message.choice.c1.present = LTE_DL_DCCH_MessageType_NB__c1_PR_securityModeCommand_r13;
-
   dl_dcch_msg_NB_IoT.message.choice.c1.choice.securityModeCommand_r13.rrc_TransactionIdentifier = Transaction_id;
   dl_dcch_msg_NB_IoT.message.choice.c1.choice.securityModeCommand_r13.criticalExtensions.present = LTE_SecurityModeCommand__criticalExtensions_PR_c1;
-
   dl_dcch_msg_NB_IoT.message.choice.c1.choice.securityModeCommand_r13.criticalExtensions.choice.c1.present =
-		  LTE_SecurityModeCommand__criticalExtensions__c1_PR_securityModeCommand_r8;
-
+    LTE_SecurityModeCommand__criticalExtensions__c1_PR_securityModeCommand_r8;
   // the two following information could be based on the mod_id
   dl_dcch_msg_NB_IoT.message.choice.c1.choice.securityModeCommand_r13.criticalExtensions.choice.c1.choice.securityModeCommand_r8.securityConfigSMC.securityAlgorithmConfig.cipheringAlgorithm
     = (LTE_CipheringAlgorithm_r12_t)cipheringAlgorithm; //bug solved
-
   dl_dcch_msg_NB_IoT.message.choice.c1.choice.securityModeCommand_r13.criticalExtensions.choice.c1.choice.securityModeCommand_r8.securityConfigSMC.securityAlgorithmConfig.integrityProtAlgorithm
     = (e_LTE_SecurityAlgorithmConfig__integrityProtAlgorithm)integrityProtAlgorithm;
 
-//only changed "asn_DEF_DL_DCCH_Message_NB"
+  //only changed "asn_DEF_DL_DCCH_Message_NB"
   if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
-     xer_fprint(stdout, &asn_DEF_LTE_DL_DCCH_Message_NB, (void*)&dl_dcch_msg_NB_IoT);
+    xer_fprint(stdout, &asn_DEF_LTE_DL_DCCH_Message_NB, (void *)&dl_dcch_msg_NB_IoT);
   }
+
   enc_rval = uper_encode_to_buffer(&asn_DEF_LTE_DL_DCCH_Message_NB,
                                    NULL,
-                                   (void*)&dl_dcch_msg_NB_IoT,
+                                   (void *)&dl_dcch_msg_NB_IoT,
                                    buffer,
                                    100);
+
   if (enc_rval.encoded <= 0) {
-      LOG_E(RRC, "ASN1 message encoding failed (%s, %lu)!\n",
-               enc_rval.failed_type->name, enc_rval.encoded);
+    LOG_E(RRC, "ASN1 message encoding failed (%s, %lu)!\n",
+          enc_rval.failed_type->name, enc_rval.encoded);
   }
 
-
-//#if defined(ENABLE_ITTI)
-//# if !defined(DISABLE_XER_SPRINT)....
-
+  //#if defined(ENABLE_ITTI)
+  //# if !defined(DISABLE_XER_SPRINT)....
 #ifdef USER_MODE
   LOG_D(RRC,"[NB-IoT %d] securityModeCommand-NB for UE %x Encoded %zd bits (%zd bytes)\n",
         ctxt_pP->module_id,
@@ -976,47 +815,43 @@ uint8_t do_SecurityModeCommand_NB_IoT(
 
 /*do_UECapabilityEnquiry_NB_IoT - very similar to legacy lte*/
 uint8_t do_UECapabilityEnquiry_NB_IoT(
-  const protocol_ctxt_t* const ctxt_pP,
-  uint8_t*               const buffer,
+  const protocol_ctxt_t *const ctxt_pP,
+  uint8_t               *const buffer,
   const uint8_t                Transaction_id
 )
 
 {
-
   LTE_DL_DCCH_Message_NB_t dl_dcch_msg_NB_IoT;
   //no RAT type in NB-IoT
   asn_enc_rval_t enc_rval;
-
   memset(&dl_dcch_msg_NB_IoT,0,sizeof(LTE_DL_DCCH_Message_NB_t));
-
   dl_dcch_msg_NB_IoT.message.present           = LTE_DL_DCCH_MessageType_NB_PR_c1;
   dl_dcch_msg_NB_IoT.message.choice.c1.present = LTE_DL_DCCH_MessageType_NB__c1_PR_ueCapabilityEnquiry_r13;
-
   dl_dcch_msg_NB_IoT.message.choice.c1.choice.ueCapabilityEnquiry_r13.rrc_TransactionIdentifier = Transaction_id;
-
   dl_dcch_msg_NB_IoT.message.choice.c1.choice.ueCapabilityEnquiry_r13.criticalExtensions.present = LTE_UECapabilityEnquiry_NB__criticalExtensions_PR_c1;
   dl_dcch_msg_NB_IoT.message.choice.c1.choice.ueCapabilityEnquiry_r13.criticalExtensions.choice.c1.present =
-		  LTE_UECapabilityEnquiry_NB__criticalExtensions__c1_PR_ueCapabilityEnquiry_r13;
+    LTE_UECapabilityEnquiry_NB__criticalExtensions__c1_PR_ueCapabilityEnquiry_r13;
 
   //no ue_CapabilityRequest (list of RAT_Type)
 
-//only changed "asn_DEF_DL_DCCH_Message_NB"
+  //only changed "asn_DEF_DL_DCCH_Message_NB"
   if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
-     xer_fprint(stdout, &asn_DEF_LTE_DL_DCCH_Message_NB, (void*)&dl_dcch_msg_NB_IoT);
+    xer_fprint(stdout, &asn_DEF_LTE_DL_DCCH_Message_NB, (void *)&dl_dcch_msg_NB_IoT);
   }
+
   enc_rval = uper_encode_to_buffer(&asn_DEF_LTE_DL_DCCH_Message_NB,
                                    NULL,
-                                   (void*)&dl_dcch_msg_NB_IoT,
+                                   (void *)&dl_dcch_msg_NB_IoT,
                                    buffer,
                                    100);
-  if (enc_rval.encoded <= 0) {
-     LOG_E(RRC, "ASN1 message encoding failed (%s, %lu)!\n",
-               enc_rval.failed_type->name, enc_rval.encoded);
-    }
 
-//#if defined(ENABLE_ITTI)
-//# if !defined(DISABLE_XER_SPRINT)....
+  if (enc_rval.encoded <= 0) {
+    LOG_E(RRC, "ASN1 message encoding failed (%s, %lu)!\n",
+          enc_rval.failed_type->name, enc_rval.encoded);
+  }
 
+  //#if defined(ENABLE_ITTI)
+  //# if !defined(DISABLE_XER_SPRINT)....
 #ifdef USER_MODE
   LOG_D(RRC,"[NB-IoT %d] UECapabilityEnquiry-NB for UE %x Encoded %zd bits (%zd bytes)\n",
         ctxt_pP->module_id,
@@ -1039,39 +874,32 @@ uint8_t do_UECapabilityEnquiry_NB_IoT(
  * (including RBs, MAC main configuration and physical channel configuration)
  * including any associated dedicated NAS information.*/
 uint16_t do_RRCConnectionReconfiguration_NB_IoT(
-  const protocol_ctxt_t*        const ctxt_pP,
-    uint8_t                            *buffer,
-    uint8_t                             Transaction_id,
-    LTE_SRB_ToAddModList_NB_r13_t          *SRB1_list_NB, //SRB_ConfigList2 (default)--> only SRB1
-    LTE_DRB_ToAddModList_NB_r13_t          *DRB_list_NB_IoT, //DRB_ConfigList (default)
-    LTE_DRB_ToReleaseList_NB_r13_t         *DRB_list2_NB_IoT, //is NULL when passed
-    struct LTE_PhysicalConfigDedicated_NB_r13     *physicalConfigDedicated_NB_IoT,
-	LTE_MAC_MainConfig_NB_r13_t                   *mac_MainConfig_NB_IoT,
-  struct LTE_RRCConnectionReconfiguration_NB_r13_IEs__dedicatedInfoNASList_r13* dedicatedInfoNASList_NB_IoT)
+  const protocol_ctxt_t        *const ctxt_pP,
+  uint8_t                            *buffer,
+  uint8_t                             Transaction_id,
+  LTE_SRB_ToAddModList_NB_r13_t          *SRB1_list_NB, //SRB_ConfigList2 (default)--> only SRB1
+  LTE_DRB_ToAddModList_NB_r13_t          *DRB_list_NB_IoT, //DRB_ConfigList (default)
+  LTE_DRB_ToReleaseList_NB_r13_t         *DRB_list2_NB_IoT, //is NULL when passed
+  struct LTE_PhysicalConfigDedicated_NB_r13     *physicalConfigDedicated_NB_IoT,
+  LTE_MAC_MainConfig_NB_r13_t                   *mac_MainConfig_NB_IoT,
+  struct LTE_RRCConnectionReconfiguration_NB_r13_IEs__dedicatedInfoNASList_r13 *dedicatedInfoNASList_NB_IoT)
 
 {
-
- //check on DRB_list if contains more than 2 DRB?
-
+  //check on DRB_list if contains more than 2 DRB?
   asn_enc_rval_t enc_rval;
   LTE_DL_DCCH_Message_NB_t dl_dcch_msg_NB_IoT;
   LTE_RRCConnectionReconfiguration_NB_t *rrcConnectionReconfiguration_NB;
-
-
   memset(&dl_dcch_msg_NB_IoT,0,sizeof(LTE_DL_DCCH_Message_NB_t));
-
   dl_dcch_msg_NB_IoT.message.present           = LTE_DL_DCCH_MessageType_NB_PR_c1;
   dl_dcch_msg_NB_IoT.message.choice.c1.present = LTE_DL_DCCH_MessageType_NB__c1_PR_rrcConnectionReconfiguration_r13;
   rrcConnectionReconfiguration_NB          = &dl_dcch_msg_NB_IoT.message.choice.c1.choice.rrcConnectionReconfiguration_r13;
-
   // RRCConnectionReconfiguration
   rrcConnectionReconfiguration_NB->rrc_TransactionIdentifier = Transaction_id;
   rrcConnectionReconfiguration_NB->criticalExtensions.present = LTE_RRCConnectionReconfiguration_NB__criticalExtensions_PR_c1;
   rrcConnectionReconfiguration_NB->criticalExtensions.choice.c1.present =LTE_RRCConnectionReconfiguration_NB__criticalExtensions__c1_PR_rrcConnectionReconfiguration_r13 ;
-
   //RAdioResourceconfigDedicated
   rrcConnectionReconfiguration_NB->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r13.radioResourceConfigDedicated_r13 =
-		  CALLOC(1,sizeof(*rrcConnectionReconfiguration_NB->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r13.radioResourceConfigDedicated_r13));
+    CALLOC(1,sizeof(*rrcConnectionReconfiguration_NB->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r13.radioResourceConfigDedicated_r13));
   rrcConnectionReconfiguration_NB->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r13.radioResourceConfigDedicated_r13->srb_ToAddModList_r13 = SRB1_list_NB; //only SRB1
   rrcConnectionReconfiguration_NB->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r13.radioResourceConfigDedicated_r13->drb_ToAddModList_r13 = DRB_list_NB_IoT;
   rrcConnectionReconfiguration_NB->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r13.radioResourceConfigDedicated_r13->drb_ToReleaseList_r13 = DRB_list2_NB_IoT; //NULL
@@ -1081,126 +909,94 @@ uint16_t do_RRCConnectionReconfiguration_NB_IoT(
 
   if (mac_MainConfig_NB_IoT!=NULL) {
     rrcConnectionReconfiguration_NB->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r13.radioResourceConfigDedicated_r13->mac_MainConfig_r13 =
-    		CALLOC(1, sizeof(*rrcConnectionReconfiguration_NB->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r13.radioResourceConfigDedicated_r13->mac_MainConfig_r13));
+      CALLOC(1, sizeof(*rrcConnectionReconfiguration_NB->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r13.radioResourceConfigDedicated_r13->mac_MainConfig_r13));
     rrcConnectionReconfiguration_NB->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r13.radioResourceConfigDedicated_r13->mac_MainConfig_r13->present
       =LTE_RadioResourceConfigDedicated_NB_r13__mac_MainConfig_r13_PR_explicitValue_r13;
-   //why memcopy only this one?
+    //why memcopy only this one?
     memcpy(&rrcConnectionReconfiguration_NB->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r13.radioResourceConfigDedicated_r13->mac_MainConfig_r13->choice.explicitValue_r13,
            mac_MainConfig_NB_IoT, sizeof(*mac_MainConfig_NB_IoT));
-
   } else {
-	  rrcConnectionReconfiguration_NB->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r13.radioResourceConfigDedicated_r13->mac_MainConfig_r13=NULL;
+    rrcConnectionReconfiguration_NB->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r13.radioResourceConfigDedicated_r13->mac_MainConfig_r13=NULL;
   }
 
   //no measConfig, measIDlist
   //no mobilityControlInfo
-
   rrcConnectionReconfiguration_NB->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r13.dedicatedInfoNASList_r13 = dedicatedInfoNASList_NB_IoT;
   //mainly used for cell-reselection/handover purposes??
   rrcConnectionReconfiguration_NB->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r13.fullConfig_r13 = NULL;
-
   enc_rval = uper_encode_to_buffer(&asn_DEF_LTE_DL_DCCH_Message_NB,
                                    NULL,
-                                   (void*)&dl_dcch_msg_NB_IoT,
+                                   (void *)&dl_dcch_msg_NB_IoT,
                                    buffer,
                                    RRC_BUF_SIZE);
+
   if (enc_rval.encoded <= 0) {
-     LOG_E(RRC, "ASN1 message encoding failed %s, %li\n",
-               enc_rval.failed_type->name, enc_rval.encoded);
+    LOG_E(RRC, "ASN1 message encoding failed %s, %li\n",
+          enc_rval.failed_type->name, enc_rval.encoded);
   }
 
   //changed only asn_DEF_DL_DCCH_Message_NB
   if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
-     xer_fprint(stdout,&asn_DEF_LTE_DL_DCCH_Message_NB,(void*)&dl_dcch_msg_NB_IoT);
+    xer_fprint(stdout,&asn_DEF_LTE_DL_DCCH_Message_NB,(void *)&dl_dcch_msg_NB_IoT);
   }
 
-//#if defined(ENABLE_ITTI)
-//# if !defined(DISABLE_XER_SPRINT)...
-
-
+  //#if defined(ENABLE_ITTI)
+  //# if !defined(DISABLE_XER_SPRINT)...
   LOG_I(RRC,"RRCConnectionReconfiguration-NB Encoded %zd bits (%zd bytes)\n",enc_rval.encoded,(enc_rval.encoded+7)/8);
-
   return((enc_rval.encoded+7)/8);
 }
 
 /*do_RRCConnectionReestablishmentReject - exactly the same as legacy LTE*/
 uint8_t do_RRCConnectionReestablishmentReject_NB_IoT(
-    uint8_t                    Mod_id,
-    uint8_t*                   const buffer)
-{
-
+  uint8_t                    Mod_id,
+  uint8_t                   *const buffer) {
   asn_enc_rval_t enc_rval;
-
   LTE_DL_CCCH_Message_NB_t dl_ccch_msg_NB_IoT;
   LTE_RRCConnectionReestablishmentReject_t *rrcConnectionReestablishmentReject;
-
   memset((void *)&dl_ccch_msg_NB_IoT,0,sizeof(LTE_DL_CCCH_Message_NB_t));
   dl_ccch_msg_NB_IoT.message.present = LTE_DL_CCCH_MessageType_NB_PR_c1;
   dl_ccch_msg_NB_IoT.message.choice.c1.present = LTE_DL_CCCH_MessageType_NB__c1_PR_rrcConnectionReestablishmentReject_r13;
   rrcConnectionReestablishmentReject    = &dl_ccch_msg_NB_IoT.message.choice.c1.choice.rrcConnectionReestablishmentReject_r13;
-
   // RRCConnectionReestablishmentReject //exactly the same as LTE
   rrcConnectionReestablishmentReject->criticalExtensions.present = LTE_RRCConnectionReestablishmentReject__criticalExtensions_PR_rrcConnectionReestablishmentReject_r8;
 
   //Only change in "asn_DEF_DL_CCCH_Message_NB"
   if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
-     xer_fprint(stdout, &asn_DEF_LTE_DL_CCCH_Message_NB, (void*)&dl_ccch_msg_NB_IoT);
+    xer_fprint(stdout, &asn_DEF_LTE_DL_CCCH_Message_NB, (void *)&dl_ccch_msg_NB_IoT);
   }
+
   enc_rval = uper_encode_to_buffer(&asn_DEF_LTE_DL_CCCH_Message_NB,
                                    NULL,
-                                   (void*)&dl_ccch_msg_NB_IoT,
+                                   (void *)&dl_ccch_msg_NB_IoT,
                                    buffer,
                                    100);
+
   if (enc_rval.encoded <= 0) {
-     LOG_E(RRC,"ASN1 message encoding failed (%s, %lu)!\n",
-               enc_rval.failed_type->name, enc_rval.encoded);
+    LOG_E(RRC,"ASN1 message encoding failed (%s, %lu)!\n",
+          enc_rval.failed_type->name, enc_rval.encoded);
   }
 
   //Only change in "asn_DEF_DL_CCCH_Message_NB"
-#if defined(ENABLE_ITTI)
-# if !defined(DISABLE_XER_SPRINT)
-  {
-    char        message_string[20000];
-    size_t      message_string_size;
-
-    if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_LTE_DL_CCCH_Message_NB, (void *) &dl_ccch_msg_NB_IoT)) > 0) {
-      MessageDef *msg_p;
-
-      msg_p = itti_alloc_new_message_sized (TASK_RRC_ENB_NB_IoT, RRC_DL_CCCH, message_string_size + sizeof (IttiMsgText));
-      msg_p->ittiMsg.rrc_dl_ccch.size = message_string_size;
-      memcpy(&msg_p->ittiMsg.rrc_dl_ccch.text, message_string, message_string_size);
-
-      itti_send_msg_to_task(TASK_UNKNOWN, Mod_id, msg_p);
-    }
-  }
-# endif
-#endif
-
 #ifdef USER_MODE
   LOG_D(RRC,"RRCConnectionReestablishmentReject Encoded %zd bits (%zd bytes)\n",
         enc_rval.encoded,(enc_rval.encoded+7)/8);
 #endif
-
   return((enc_rval.encoded+7)/8);
 }
 
 /*do_RRCConnectionReject_NB_IoT*/
 uint8_t do_RRCConnectionReject_NB_IoT(
-    uint8_t                    Mod_id,
-    uint8_t*                   const buffer)
+  uint8_t                    Mod_id,
+  uint8_t                   *const buffer)
 
 {
-
   asn_enc_rval_t enc_rval;
-
   LTE_DL_CCCH_Message_NB_t          dl_ccch_msg_NB_IoT;
   LTE_RRCConnectionReject_NB_t      *rrcConnectionReject_NB_IoT;
-
   memset((void *)&dl_ccch_msg_NB_IoT,0,sizeof(LTE_DL_CCCH_Message_NB_t));
   dl_ccch_msg_NB_IoT.message.present           = LTE_DL_CCCH_MessageType_NB_PR_c1;
   dl_ccch_msg_NB_IoT.message.choice.c1.present = LTE_DL_CCCH_MessageType_NB__c1_PR_rrcConnectionReject_r13;
   rrcConnectionReject_NB_IoT = &dl_ccch_msg_NB_IoT.message.choice.c1.choice.rrcConnectionReject_r13;
-
   // RRCConnectionReject-NB_IoT
   rrcConnectionReject_NB_IoT->criticalExtensions.present = LTE_RRCConnectionReject_NB__criticalExtensions_PR_c1;
   rrcConnectionReject_NB_IoT->criticalExtensions.choice.c1.present = LTE_RRCConnectionReject_NB__criticalExtensions__c1_PR_rrcConnectionReject_r13;
@@ -1209,48 +1005,30 @@ uint8_t do_RRCConnectionReject_NB_IoT(
   //new-use of suspend indication
   //If present, this field indicates that the UE should remain suspended and not release its stored context.
   rrcConnectionReject_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionReject_r13.rrc_SuspendIndication_r13=
-		  CALLOC(1, sizeof(long));
+    CALLOC(1, sizeof(long));
   *(rrcConnectionReject_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionReject_r13.rrc_SuspendIndication_r13)=
-		  LTE_RRCConnectionReject_NB_r13_IEs__rrc_SuspendIndication_r13_true;
+    LTE_RRCConnectionReject_NB_r13_IEs__rrc_SuspendIndication_r13_true;
 
   //Only Modified "asn_DEF_DL_CCCH_Message_NB"
   if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
-     xer_fprint(stdout, &asn_DEF_LTE_DL_CCCH_Message_NB, (void*)&dl_ccch_msg_NB_IoT);
+    xer_fprint(stdout, &asn_DEF_LTE_DL_CCCH_Message_NB, (void *)&dl_ccch_msg_NB_IoT);
   }
+
   enc_rval = uper_encode_to_buffer(&asn_DEF_LTE_DL_CCCH_Message_NB,
                                    NULL,
-                                   (void*)&dl_ccch_msg_NB_IoT,
+                                   (void *)&dl_ccch_msg_NB_IoT,
                                    buffer,
                                    100);
-  if (enc_rval.encoded <= 0) {
-     LOG_E(RRC, "ASN1 message encoding failed (%s, %ld)!\n",
-               enc_rval.failed_type->name, enc_rval.encoded);
-  }
-
-#if defined(ENABLE_ITTI)
-# if !defined(DISABLE_XER_SPRINT)
-  {
-    char        message_string[20000];
-    size_t      message_string_size;
-
-    if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_LTE_DL_CCCH_Message_NB, (void *) &dl_ccch_msg_NB_IoT)) > 0) {
-      MessageDef *msg_p;
 
-      msg_p = itti_alloc_new_message_sized (TASK_RRC_ENB_NB_IoT, RRC_DL_CCCH, message_string_size + sizeof (IttiMsgText));
-      msg_p->ittiMsg.rrc_dl_ccch.size = message_string_size;
-      memcpy(&msg_p->ittiMsg.rrc_dl_ccch.text, message_string, message_string_size);
-
-      itti_send_msg_to_task(TASK_UNKNOWN, Mod_id, msg_p);
-    }
+  if (enc_rval.encoded <= 0) {
+    LOG_E(RRC, "ASN1 message encoding failed (%s, %ld)!\n",
+          enc_rval.failed_type->name, enc_rval.encoded);
   }
-# endif
-#endif
 
 #ifdef USER_MODE
   LOG_D(RRC,"RRCConnectionReject-NB Encoded %zd bits (%zd bytes)\n",
         enc_rval.encoded,(enc_rval.encoded+7)/8);
 #endif
-
   return((enc_rval.encoded+7)/8);
 }
 
@@ -1260,19 +1038,16 @@ uint8_t do_RRCConnectionReject_NB_IoT(
 
 /*do_DLInformationTransfer_NB*/
 uint8_t do_DLInformationTransfer_NB_IoT(
-		uint8_t Mod_id,
-		uint8_t **buffer,
-		uint8_t transaction_id,
-		uint32_t pdu_length,
-		uint8_t *pdu_buffer)
+  uint8_t Mod_id,
+  uint8_t **buffer,
+  uint8_t transaction_id,
+  uint32_t pdu_length,
+  uint8_t *pdu_buffer)
 
 {
   ssize_t encoded;
-
   LTE_DL_DCCH_Message_NB_t dl_dcch_msg_NB_IoT;
-
   memset(&dl_dcch_msg_NB_IoT, 0, sizeof(LTE_DL_DCCH_Message_NB_t));
-
   dl_dcch_msg_NB_IoT.message.present           = LTE_DL_DCCH_MessageType_NB_PR_c1;
   dl_dcch_msg_NB_IoT.message.choice.c1.present = LTE_DL_DCCH_MessageType_NB__c1_PR_dlInformationTransfer_r13;
   dl_dcch_msg_NB_IoT.message.choice.c1.choice.dlInformationTransfer_r13.rrc_TransactionIdentifier = transaction_id;
@@ -1280,29 +1055,8 @@ uint8_t do_DLInformationTransfer_NB_IoT(
   dl_dcch_msg_NB_IoT.message.choice.c1.choice.dlInformationTransfer_r13.criticalExtensions.choice.c1.present = LTE_DLInformationTransfer_NB__criticalExtensions__c1_PR_dlInformationTransfer_r13;
   dl_dcch_msg_NB_IoT.message.choice.c1.choice.dlInformationTransfer_r13.criticalExtensions.choice.c1.choice.dlInformationTransfer_r13.dedicatedInfoNAS_r13.size = pdu_length;
   dl_dcch_msg_NB_IoT.message.choice.c1.choice.dlInformationTransfer_r13.criticalExtensions.choice.c1.choice.dlInformationTransfer_r13.dedicatedInfoNAS_r13.buf = pdu_buffer;
-
-  encoded = uper_encode_to_new_buffer (&asn_DEF_LTE_DL_DCCH_Message_NB, NULL, (void*) &dl_dcch_msg_NB_IoT, (void **) buffer);
-
+  encoded = uper_encode_to_new_buffer (&asn_DEF_LTE_DL_DCCH_Message_NB, NULL, (void *) &dl_dcch_msg_NB_IoT, (void **) buffer);
   //only change in "asn_DEF_DL_DCCH_Message_NB"
-#if defined(ENABLE_ITTI)
-# if !defined(DISABLE_XER_SPRINT)
-  {
-    char        message_string[10000];
-    size_t      message_string_size;
-
-    if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_LTE_DL_DCCH_Message_NB, (void *)&dl_dcch_msg_NB_IoT)) > 0) {
-      MessageDef *msg_p;
-
-      msg_p = itti_alloc_new_message_sized (TASK_RRC_ENB_NB_IoT, RRC_DL_DCCH, message_string_size + sizeof (IttiMsgText));
-      msg_p->ittiMsg.rrc_dl_dcch.size = message_string_size;
-      memcpy(&msg_p->ittiMsg.rrc_dl_dcch.text, message_string, message_string_size);
-
-      itti_send_msg_to_task(TASK_UNKNOWN, Mod_id, msg_p);
-    }
-  }
-# endif
-#endif
-
   return encoded;
 }
 
@@ -1313,70 +1067,43 @@ uint8_t do_DLInformationTransfer_NB_IoT(
 
 /*do_RRCConnectionReestablishment_NB-->used to re-establish SRB1*/ //which parameter to use?
 uint8_t do_RRCConnectionReestablishment_NB_IoT(
-		uint8_t Mod_id,
-		uint8_t* const buffer,
-		const uint8_t     Transaction_id,
-		const NB_IoT_DL_FRAME_PARMS* const frame_parms, //to be changed
-		LTE_SRB_ToAddModList_NB_r13_t*      SRB_list_NB_IoT) //should contain SRB1 already configured?
-{
-
-	asn_enc_rval_t enc_rval;
-	LTE_DL_CCCH_Message_NB_t dl_ccch_msg_NB_IoT;
-	LTE_RRCConnectionReestablishment_NB_t* rrcConnectionReestablishment_NB_IoT;
-
-	memset(&dl_ccch_msg_NB_IoT, 0, sizeof(LTE_DL_CCCH_Message_NB_t));
-
-	dl_ccch_msg_NB_IoT.message.present = LTE_DL_CCCH_MessageType_NB_PR_c1;
-	dl_ccch_msg_NB_IoT.message.choice.c1.present = LTE_DL_CCCH_MessageType_NB__c1_PR_rrcConnectionReestablishment_r13;
-	rrcConnectionReestablishment_NB_IoT = &dl_ccch_msg_NB_IoT.message.choice.c1.choice.rrcConnectionReestablishment_r13;
-
-	//rrcConnectionReestablishment_NB
-	rrcConnectionReestablishment_NB_IoT->rrc_TransactionIdentifier = Transaction_id;
-	rrcConnectionReestablishment_NB_IoT->criticalExtensions.present = LTE_RRCConnectionReestablishment_NB__criticalExtensions_PR_c1;
-	rrcConnectionReestablishment_NB_IoT->criticalExtensions.choice.c1.present = LTE_RRCConnectionReestablishment_NB__criticalExtensions__c1_PR_rrcConnectionReestablishment_r13;
-
-	rrcConnectionReestablishment_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r13.radioResourceConfigDedicated_r13.srb_ToAddModList_r13 = SRB_list_NB_IoT;
-	rrcConnectionReestablishment_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r13.radioResourceConfigDedicated_r13.drb_ToAddModList_r13 = NULL;
-	rrcConnectionReestablishment_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r13.radioResourceConfigDedicated_r13.drb_ToReleaseList_r13 = NULL;
-	rrcConnectionReestablishment_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r13.radioResourceConfigDedicated_r13.rlf_TimersAndConstants_r13= NULL;
-	rrcConnectionReestablishment_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r13.radioResourceConfigDedicated_r13.mac_MainConfig_r13= NULL;
-	rrcConnectionReestablishment_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r13.radioResourceConfigDedicated_r13.physicalConfigDedicated_r13 = NULL;
-
-	rrcConnectionReestablishment_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r13.nextHopChainingCount_r13=0;
-
-	enc_rval = uper_encode_to_buffer(&asn_DEF_LTE_DL_CCCH_Message_NB,
-                                           NULL,
-	                                   (void*)&dl_ccch_msg_NB_IoT,
-	                                   buffer,
-	                                   RRC_BUF_SIZE);
-
-	if (enc_rval.encoded <= 0) {
-           LOG_E(RRC, "ASN1 message encoding failed (%s, %li)!\n",
-	               enc_rval.failed_type->name, enc_rval.encoded);
-        }
-
-        if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
-           xer_fprint(stdout,&asn_DEF_LTE_DL_CCCH_Message_NB,(void*)&dl_ccch_msg_NB_IoT);
-        }
-
-#if defined(ENABLE_ITTI)
-# if !defined(DISABLE_XER_SPRINT)
-  {
-    char        message_string[30000];
-    size_t      message_string_size;
-
-    if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_LTE_DL_CCCH_Message_NB, (void *) &dl_ccch_msg_NB_IoT)) > 0) {
-      MessageDef *msg_p;
+  uint8_t Mod_id,
+  uint8_t *const buffer,
+  const uint8_t     Transaction_id,
+  const NB_IoT_DL_FRAME_PARMS *const frame_parms, //to be changed
+  LTE_SRB_ToAddModList_NB_r13_t      *SRB_list_NB_IoT) { //should contain SRB1 already configured?
+  asn_enc_rval_t enc_rval;
+  LTE_DL_CCCH_Message_NB_t dl_ccch_msg_NB_IoT;
+  LTE_RRCConnectionReestablishment_NB_t *rrcConnectionReestablishment_NB_IoT;
+  memset(&dl_ccch_msg_NB_IoT, 0, sizeof(LTE_DL_CCCH_Message_NB_t));
+  dl_ccch_msg_NB_IoT.message.present = LTE_DL_CCCH_MessageType_NB_PR_c1;
+  dl_ccch_msg_NB_IoT.message.choice.c1.present = LTE_DL_CCCH_MessageType_NB__c1_PR_rrcConnectionReestablishment_r13;
+  rrcConnectionReestablishment_NB_IoT = &dl_ccch_msg_NB_IoT.message.choice.c1.choice.rrcConnectionReestablishment_r13;
+  //rrcConnectionReestablishment_NB
+  rrcConnectionReestablishment_NB_IoT->rrc_TransactionIdentifier = Transaction_id;
+  rrcConnectionReestablishment_NB_IoT->criticalExtensions.present = LTE_RRCConnectionReestablishment_NB__criticalExtensions_PR_c1;
+  rrcConnectionReestablishment_NB_IoT->criticalExtensions.choice.c1.present = LTE_RRCConnectionReestablishment_NB__criticalExtensions__c1_PR_rrcConnectionReestablishment_r13;
+  rrcConnectionReestablishment_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r13.radioResourceConfigDedicated_r13.srb_ToAddModList_r13 = SRB_list_NB_IoT;
+  rrcConnectionReestablishment_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r13.radioResourceConfigDedicated_r13.drb_ToAddModList_r13 = NULL;
+  rrcConnectionReestablishment_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r13.radioResourceConfigDedicated_r13.drb_ToReleaseList_r13 = NULL;
+  rrcConnectionReestablishment_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r13.radioResourceConfigDedicated_r13.rlf_TimersAndConstants_r13= NULL;
+  rrcConnectionReestablishment_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r13.radioResourceConfigDedicated_r13.mac_MainConfig_r13= NULL;
+  rrcConnectionReestablishment_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r13.radioResourceConfigDedicated_r13.physicalConfigDedicated_r13 = NULL;
+  rrcConnectionReestablishment_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionReestablishment_r13.nextHopChainingCount_r13=0;
+  enc_rval = uper_encode_to_buffer(&asn_DEF_LTE_DL_CCCH_Message_NB,
+                                   NULL,
+                                   (void *)&dl_ccch_msg_NB_IoT,
+                                   buffer,
+                                   RRC_BUF_SIZE);
 
-      msg_p = itti_alloc_new_message_sized (TASK_RRC_ENB_NB_IoT, RRC_DL_CCCH, message_string_size + sizeof (IttiMsgText));
-      msg_p->ittiMsg.rrc_dl_ccch.size = message_string_size;
-      memcpy(&msg_p->ittiMsg.rrc_dl_ccch.text, message_string, message_string_size);
+  if (enc_rval.encoded <= 0) {
+    LOG_E(RRC, "ASN1 message encoding failed (%s, %li)!\n",
+          enc_rval.failed_type->name, enc_rval.encoded);
+  }
 
-      itti_send_msg_to_task(TASK_UNKNOWN, Mod_id, msg_p);
-    }
+  if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+    xer_fprint(stdout,&asn_DEF_LTE_DL_CCCH_Message_NB,(void *)&dl_ccch_msg_NB_IoT);
   }
-# endif
-#endif
 
   LOG_I(RRC,"RRCConnectionReestablishment-NB Encoded %zd bits (%zd bytes)\n",enc_rval.encoded,(enc_rval.encoded+7)/8);
   return 0;
@@ -1386,40 +1113,29 @@ uint8_t do_RRCConnectionReestablishment_NB_IoT(
 uint8_t do_RRCConnectionRelease_NB_IoT(
   uint8_t                             Mod_id,
   uint8_t                            *buffer,
- const uint8_t                             Transaction_id)
-{
-
+  const uint8_t                             Transaction_id) {
   asn_enc_rval_t enc_rval;
-
   LTE_DL_DCCH_Message_NB_t dl_dcch_msg_NB_IoT;
   LTE_RRCConnectionRelease_NB_t *rrcConnectionRelease_NB_IoT;
-
-
   memset(&dl_dcch_msg_NB_IoT,0,sizeof(LTE_DL_DCCH_Message_NB_t));
-
   dl_dcch_msg_NB_IoT.message.present           = LTE_DL_DCCH_MessageType_NB_PR_c1;
   dl_dcch_msg_NB_IoT.message.choice.c1.present = LTE_DL_DCCH_MessageType_NB__c1_PR_rrcConnectionRelease_r13;
   rrcConnectionRelease_NB_IoT                  = &dl_dcch_msg_NB_IoT.message.choice.c1.choice.rrcConnectionRelease_r13;
-
   // RRCConnectionRelease
   rrcConnectionRelease_NB_IoT->rrc_TransactionIdentifier = Transaction_id;
   rrcConnectionRelease_NB_IoT->criticalExtensions.present = LTE_RRCConnectionRelease_NB__criticalExtensions_PR_c1;
   rrcConnectionRelease_NB_IoT->criticalExtensions.choice.c1.present = LTE_RRCConnectionRelease_NB__criticalExtensions__c1_PR_rrcConnectionRelease_r13 ;
-
   rrcConnectionRelease_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionRelease_r13.releaseCause_r13 = LTE_ReleaseCause_NB_r13_other;
   rrcConnectionRelease_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionRelease_r13.redirectedCarrierInfo_r13 = NULL;
   rrcConnectionRelease_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionRelease_r13.extendedWaitTime_r13 = NULL;
-
   //Why allocate memory for non critical extension?
   rrcConnectionRelease_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionRelease_r13.nonCriticalExtension=CALLOC(1,
       sizeof(*rrcConnectionRelease_NB_IoT->criticalExtensions.choice.c1.choice.rrcConnectionRelease_r13.nonCriticalExtension));
-
   enc_rval = uper_encode_to_buffer(&asn_DEF_LTE_DL_DCCH_Message_NB,
                                    NULL,
-                                   (void*)&dl_dcch_msg_NB_IoT,
+                                   (void *)&dl_dcch_msg_NB_IoT,
                                    buffer,
                                    RRC_BUF_SIZE);//check
-
   return((enc_rval.encoded+7)/8);
 }
 
diff --git a/openair2/RRC/LTE/rrc_UE.c b/openair2/RRC/LTE/rrc_UE.c
index 65150d32ab61b37dff69748a9db98079829e0aef..49f9e1674051dbaa753e388ebc1749e9f063dff2 100644
--- a/openair2/RRC/LTE/rrc_UE.c
+++ b/openair2/RRC/LTE/rrc_UE.c
@@ -44,7 +44,7 @@
 #include "common/utils/LOG/log.h"
 #include "common/utils/LOG/vcd_signal_dumper.h"
 #ifndef CELLULAR
-#include "RRC/LTE/MESSAGES/asn1_msg.h"
+  #include "RRC/LTE/MESSAGES/asn1_msg.h"
 #endif
 #include "LTE_RRCConnectionRequest.h"
 #include "LTE_RRCConnectionReconfiguration.h"
@@ -55,7 +55,7 @@
 #include "LTE_BCCH-DL-SCH-Message.h"
 #include "LTE_PCCH-Message.h"
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-#include "LTE_MCCH-Message.h"
+  #include "LTE_MCCH-Message.h"
 #endif
 #include "LTE_MeasConfig.h"
 #include "LTE_MeasGapConfig.h"
@@ -66,11 +66,11 @@
 #include "RRC/NAS/nas_config.h"
 #include "RRC/NAS/rb_config.h"
 #if ENABLE_RAL
-#include "rrc_UE_ral.h"
+  #include "rrc_UE_ral.h"
 #endif
 
 #if defined(ENABLE_SECURITY)
-# include "UTIL/OSA/osa_defs.h"
+  #include "UTIL/OSA/osa_defs.h"
 #endif
 
 #include "pdcp.h"
@@ -78,7 +78,7 @@
 #include "msc.h"
 
 #if defined(ENABLE_ITTI)
-# include "intertask_interface.h"
+  #include "intertask_interface.h"
 #endif
 
 #include "SIMULATION/TOOLS/sim.h" // for taus
@@ -86,52 +86,52 @@
 #include "openair2/LAYER2/MAC/mac_extern.h"
 
 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-#include "LTE_SL-Preconfiguration-r12.h"
+  #include "LTE_SL-Preconfiguration-r12.h"
 
-//for D2D
-int ctrl_sock_fd;
-#define BUFSIZE 1024
-struct sockaddr_in prose_app_addr;
-int slrb_id;
-int send_ue_information = 0;
+  //for D2D
+  int ctrl_sock_fd;
+  #define BUFSIZE 1024
+  struct sockaddr_in prose_app_addr;
+  int slrb_id;
+  int send_ue_information = 0;
 #endif
 
 // for malloc_clear
 #include "PHY/defs_UE.h"
 
 extern void pdcp_config_set_security(
-  const protocol_ctxt_t* const  ctxt_pP,
-  pdcp_t         * const pdcp_pP,
+  const protocol_ctxt_t *const  ctxt_pP,
+  pdcp_t          *const pdcp_pP,
   const rb_id_t         rb_idP,
   const uint16_t        lc_idP,
   const uint8_t         security_modeP,
-  uint8_t        * const kRRCenc,
-  uint8_t        * const kRRCint,
-  uint8_t        * const  kUPenc);
+  uint8_t         *const kRRCenc,
+  uint8_t         *const kRRCint,
+  uint8_t         *const  kUPenc);
 
 // internal prototypes
 
-void rrc_ue_process_securityModeCommand( const protocol_ctxt_t* const ctxt_pP, LTE_SecurityModeCommand_t* const securityModeCommand, const uint8_t eNB_index );
+void rrc_ue_process_securityModeCommand( const protocol_ctxt_t *const ctxt_pP, LTE_SecurityModeCommand_t *const securityModeCommand, const uint8_t eNB_index );
 
-static int decode_SI( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index );
+static int decode_SI( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index );
 
-static int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index, const uint8_t rsrq, const uint8_t rsrp );
+static int decode_SIB1( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index, const uint8_t rsrq, const uint8_t rsrp );
 
 /** \brief Generates/Encodes RRCConnnectionSetupComplete message at UE
  *  \param ctxt_pP Running context
  *  \param eNB_index Index of corresponding eNB/CH
  *  \param Transaction_id Transaction identifier
  */
-static void rrc_ue_generate_RRCConnectionSetupComplete( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index, const uint8_t Transaction_id );
+static void rrc_ue_generate_RRCConnectionSetupComplete( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index, const uint8_t Transaction_id );
 
 /** \brief Generates/Encodes RRCConnectionReconfigurationComplete message at UE
  *  \param ctxt_pP Running context
  *  \param eNB_index Index of corresponding eNB/CH
  *  \param Transaction_id RRC transaction identifier
  */
-static void rrc_ue_generate_RRCConnectionReconfigurationComplete( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index, const uint8_t Transaction_id );
+static void rrc_ue_generate_RRCConnectionReconfigurationComplete( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index, const uint8_t Transaction_id );
 
-static void rrc_ue_generate_MeasurementReport(protocol_ctxt_t* const ctxt_pP, uint8_t eNB_index );
+static void rrc_ue_generate_MeasurementReport(protocol_ctxt_t *const ctxt_pP, uint8_t eNB_index );
 
 static uint8_t check_trigger_meas_event(
   module_id_t module_idP,
@@ -144,7 +144,8 @@ static uint8_t check_trigger_meas_event(
 
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
 static void decode_MBSFNAreaConfiguration(module_id_t module_idP, uint8_t eNB_index, frame_t frameP,uint8_t mbsfn_sync_area);
-uint8_t rrc_ue_generate_SidelinkUEInformation( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index,LTE_SL_DestinationInfoList_r12_t  *destinationInfoList, long *discTxResourceReq, SL_TRIGGER_t mode);
+uint8_t rrc_ue_generate_SidelinkUEInformation( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index,LTE_SL_DestinationInfoList_r12_t  *destinationInfoList, long *discTxResourceReq,
+    SL_TRIGGER_t mode);
 #endif
 
 
@@ -157,36 +158,21 @@ uint8_t rrc_ue_generate_SidelinkUEInformation( const protocol_ctxt_t* const ctxt
 /*------------------------------------------------------------------------------*/
 /* to avoid gcc warnings when compiling with certain options */
 #if defined(ENABLE_USE_MME) || ENABLE_RAL
-static Rrc_State_t rrc_get_state (module_id_t ue_mod_idP)
-{
+static Rrc_State_t rrc_get_state (module_id_t ue_mod_idP) {
   return UE_rrc_inst[ue_mod_idP].RrcState;
 }
 #endif
 
-static Rrc_Sub_State_t rrc_get_sub_state (module_id_t ue_mod_idP)
-{
+static Rrc_Sub_State_t rrc_get_sub_state (module_id_t ue_mod_idP) {
   return UE_rrc_inst[ue_mod_idP].RrcSubState;
 }
 
-static int rrc_set_state (module_id_t ue_mod_idP, Rrc_State_t state)
-{
+static int rrc_set_state (module_id_t ue_mod_idP, Rrc_State_t state) {
   AssertFatal ((RRC_STATE_FIRST <= state) && (state <= RRC_STATE_LAST),
                "Invalid state %d!\n", state);
 
   if (UE_rrc_inst[ue_mod_idP].RrcState != state) {
     UE_rrc_inst[ue_mod_idP].RrcState = state;
-
-#if defined(ENABLE_ITTI)
-    {
-      MessageDef *msg_p;
-
-      msg_p = itti_alloc_new_message(TASK_RRC_UE, RRC_STATE_IND);
-      RRC_STATE_IND(msg_p).state = UE_rrc_inst[ue_mod_idP].RrcState;
-      RRC_STATE_IND(msg_p).sub_state = UE_rrc_inst[ue_mod_idP].RrcSubState;
-
-      itti_send_msg_to_task(TASK_UNKNOWN, UE_MODULE_ID_TO_INSTANCE(ue_mod_idP), msg_p);
-    }
-#endif
     return (1);
   }
 
@@ -194,43 +180,30 @@ static int rrc_set_state (module_id_t ue_mod_idP, Rrc_State_t state)
 }
 
 //-----------------------------------------------------------------------------
-static int rrc_set_sub_state( module_id_t ue_mod_idP, Rrc_Sub_State_t subState )
-{
+static int rrc_set_sub_state( module_id_t ue_mod_idP, Rrc_Sub_State_t subState ) {
 #if (defined(ENABLE_ITTI) && (defined(ENABLE_USE_MME) || ENABLE_RAL))
 
   switch (UE_rrc_inst[ue_mod_idP].RrcState) {
-  case RRC_STATE_INACTIVE:
-    AssertFatal ((RRC_SUB_STATE_INACTIVE_FIRST <= subState) && (subState <= RRC_SUB_STATE_INACTIVE_LAST),
-                 "Invalid sub state %d for state %d!\n", subState, UE_rrc_inst[ue_mod_idP].RrcState);
-    break;
-
-  case RRC_STATE_IDLE:
-    AssertFatal ((RRC_SUB_STATE_IDLE_FIRST <= subState) && (subState <= RRC_SUB_STATE_IDLE_LAST),
-                 "Invalid sub state %d for state %d!\n", subState, UE_rrc_inst[ue_mod_idP].RrcState);
-    break;
-
-  case RRC_STATE_CONNECTED:
-    AssertFatal ((RRC_SUB_STATE_CONNECTED_FIRST <= subState) && (subState <= RRC_SUB_STATE_CONNECTED_LAST),
-                 "Invalid sub state %d for state %d!\n", subState, UE_rrc_inst[ue_mod_idP].RrcState);
-    break;
+    case RRC_STATE_INACTIVE:
+      AssertFatal ((RRC_SUB_STATE_INACTIVE_FIRST <= subState) && (subState <= RRC_SUB_STATE_INACTIVE_LAST),
+                   "Invalid sub state %d for state %d!\n", subState, UE_rrc_inst[ue_mod_idP].RrcState);
+      break;
+
+    case RRC_STATE_IDLE:
+      AssertFatal ((RRC_SUB_STATE_IDLE_FIRST <= subState) && (subState <= RRC_SUB_STATE_IDLE_LAST),
+                   "Invalid sub state %d for state %d!\n", subState, UE_rrc_inst[ue_mod_idP].RrcState);
+      break;
+
+    case RRC_STATE_CONNECTED:
+      AssertFatal ((RRC_SUB_STATE_CONNECTED_FIRST <= subState) && (subState <= RRC_SUB_STATE_CONNECTED_LAST),
+                   "Invalid sub state %d for state %d!\n", subState, UE_rrc_inst[ue_mod_idP].RrcState);
+      break;
   }
 
 #endif
 
   if (UE_rrc_inst[ue_mod_idP].RrcSubState != subState) {
     UE_rrc_inst[ue_mod_idP].RrcSubState = subState;
-
-#if defined(ENABLE_ITTI)
-    {
-      MessageDef *msg_p;
-
-      msg_p = itti_alloc_new_message(TASK_RRC_UE, RRC_STATE_IND);
-      RRC_STATE_IND(msg_p).state = UE_rrc_inst[ue_mod_idP].RrcState;
-      RRC_STATE_IND(msg_p).sub_state = UE_rrc_inst[ue_mod_idP].RrcSubState;
-
-      itti_send_msg_to_task(TASK_UNKNOWN, UE_MODULE_ID_TO_INSTANCE(ue_mod_idP), msg_p);
-    }
-#endif
     return (1);
   }
 
@@ -240,33 +213,30 @@ static int rrc_set_sub_state( module_id_t ue_mod_idP, Rrc_Sub_State_t subState )
 //-----------------------------------------------------------------------------
 void
 openair_rrc_on_ue(
-  const protocol_ctxt_t* const ctxt_pP
+  const protocol_ctxt_t *const ctxt_pP
 )
 //-----------------------------------------------------------------------------
 {
   unsigned short i;
-
-
-    LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" UE?:OPENAIR RRC IN....\n",
-          PROTOCOL_RRC_CTXT_ARGS(ctxt_pP));
-
-    for (i = 0; i < NB_eNB_INST; i++) {
-      LOG_D(RRC, PROTOCOL_RRC_CTXT_FMT" Activating CCCH (eNB %d)\n",
-            PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), i);
-      UE_rrc_inst[ctxt_pP->module_id].Srb0[i].Srb_id = CCCH;
-      memcpy (&UE_rrc_inst[ctxt_pP->module_id].Srb0[i].Lchan_desc[0], &CCCH_LCHAN_DESC, LCHAN_DESC_SIZE);
-      memcpy (&UE_rrc_inst[ctxt_pP->module_id].Srb0[i].Lchan_desc[1], &CCCH_LCHAN_DESC, LCHAN_DESC_SIZE);
-      rrc_config_buffer (&UE_rrc_inst[ctxt_pP->module_id].Srb0[i], CCCH, 1);
-      UE_rrc_inst[ctxt_pP->module_id].Srb0[i].Active = 1;
-    }
+  LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" UE?:OPENAIR RRC IN....\n",
+        PROTOCOL_RRC_CTXT_ARGS(ctxt_pP));
+
+  for (i = 0; i < NB_eNB_INST; i++) {
+    LOG_D(RRC, PROTOCOL_RRC_CTXT_FMT" Activating CCCH (eNB %d)\n",
+          PROTOCOL_RRC_CTXT_ARGS(ctxt_pP), i);
+    UE_rrc_inst[ctxt_pP->module_id].Srb0[i].Srb_id = CCCH;
+    memcpy (&UE_rrc_inst[ctxt_pP->module_id].Srb0[i].Lchan_desc[0], &CCCH_LCHAN_DESC, LCHAN_DESC_SIZE);
+    memcpy (&UE_rrc_inst[ctxt_pP->module_id].Srb0[i].Lchan_desc[1], &CCCH_LCHAN_DESC, LCHAN_DESC_SIZE);
+    rrc_config_buffer (&UE_rrc_inst[ctxt_pP->module_id].Srb0[i], CCCH, 1);
+    UE_rrc_inst[ctxt_pP->module_id].Srb0[i].Active = 1;
+  }
 }
 
 //-----------------------------------------------------------------------------
-static void init_SI_UE( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index )
-{
+static void init_SI_UE( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index ) {
   UE_rrc_inst[ctxt_pP->module_id].sizeof_SIB1[eNB_index] = 0;
   UE_rrc_inst[ctxt_pP->module_id].sizeof_SI[eNB_index] = 0;
-  UE_rrc_inst[ctxt_pP->module_id].SIB1[eNB_index] = (uint8_t*)malloc16_clear( 32 );
+  UE_rrc_inst[ctxt_pP->module_id].SIB1[eNB_index] = (uint8_t *)malloc16_clear( 32 );
   UE_rrc_inst[ctxt_pP->module_id].sib1[eNB_index] = malloc16_clear( sizeof(LTE_SystemInformationBlockType1_t) );
   UE_rrc_inst[ctxt_pP->module_id].sib2[eNB_index] = malloc16_clear( sizeof(LTE_SystemInformationBlockType2_t) );
   UE_rrc_inst[ctxt_pP->module_id].sib3[eNB_index] = malloc16_clear( sizeof(LTE_SystemInformationBlockType3_t) );
@@ -284,21 +254,16 @@ static void init_SI_UE( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_
   UE_rrc_inst[ctxt_pP->module_id].sib18[eNB_index] = malloc16_clear( sizeof(LTE_SystemInformationBlockType18_r12_t) );
   UE_rrc_inst[ctxt_pP->module_id].sib19[eNB_index] = malloc16_clear( sizeof(LTE_SystemInformationBlockType19_r12_t) );
   UE_rrc_inst[ctxt_pP->module_id].sib21[eNB_index] = malloc16_clear( sizeof(LTE_SystemInformationBlockType21_r14_t) );
-
 #endif
-  UE_rrc_inst[ctxt_pP->module_id].SI[eNB_index] = (uint8_t*)malloc16_clear( 64 );
-
-  UE_rrc_inst[ctxt_pP->module_id].si[eNB_index] = (LTE_SystemInformation_t*)malloc16_clear( sizeof(LTE_SystemInformation_t) );
-
+  UE_rrc_inst[ctxt_pP->module_id].SI[eNB_index] = (uint8_t *)malloc16_clear( 64 );
+  UE_rrc_inst[ctxt_pP->module_id].si[eNB_index] = (LTE_SystemInformation_t *)malloc16_clear( sizeof(LTE_SystemInformation_t) );
   UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus = 0;
   UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIcnt    = 0;
 }
 
 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-void init_SL_preconfig(UE_RRC_INST *UE, const uint8_t eNB_index )
-{
+void init_SL_preconfig(UE_RRC_INST *UE, const uint8_t eNB_index ) {
   LOG_I(RRC,"Initializing Sidelink Pre-configuration for UE\n");
-
   UE->SL_Preconfiguration[eNB_index] = malloc16_clear( sizeof(struct LTE_SL_Preconfiguration_r12) );
   UE->SL_Preconfiguration[eNB_index]->preconfigGeneral_r12.rohc_Profiles_r12.profile0x0001_r12       = true;
   UE->SL_Preconfiguration[eNB_index]->preconfigGeneral_r12.carrierFreq_r12                           = 3350;
@@ -306,7 +271,6 @@ void init_SL_preconfig(UE_RRC_INST *UE, const uint8_t eNB_index )
   UE->SL_Preconfiguration[eNB_index]->preconfigGeneral_r12.additionalSpectrumEmission_r12            = 0;
   UE->SL_Preconfiguration[eNB_index]->preconfigGeneral_r12.sl_bandwidth_r12                          = LTE_SL_PreconfigGeneral_r12__sl_bandwidth_r12_n50;
   UE->SL_Preconfiguration[eNB_index]->preconfigGeneral_r12.tdd_ConfigSL_r12.subframeAssignmentSL_r12 = LTE_TDD_ConfigSL_r12__subframeAssignmentSL_r12_none;
-
   UE->SL_Preconfiguration[eNB_index]->preconfigSync_r12.syncCP_Len_r12            = LTE_SL_CP_Len_r12_normal;
   UE->SL_Preconfiguration[eNB_index]->preconfigSync_r12.syncOffsetIndicator1_r12  = 0;
   UE->SL_Preconfiguration[eNB_index]->preconfigSync_r12.syncOffsetIndicator2_r12  = 0;
@@ -317,7 +281,6 @@ void init_SL_preconfig(UE_RRC_INST *UE, const uint8_t eNB_index )
   UE->SL_Preconfiguration[eNB_index]->preconfigSync_r12.syncRefDiffHyst_r12       = LTE_SL_PreconfigSync_r12__syncRefDiffHyst_r12_dB0;
   UE->SL_Preconfiguration[eNB_index]->preconfigSync_r12.ext1                      = malloc16_clear(sizeof(struct LTE_SL_PreconfigSync_r12__ext1));
   UE->SL_Preconfiguration[eNB_index]->preconfigSync_r12.ext1->syncTxPeriodic_r13  = NULL;
-
   struct LTE_SL_PreconfigCommPool_r12 *preconfigpool = malloc16_clear(sizeof(struct LTE_SL_PreconfigCommPool_r12));
   preconfigpool->sc_CP_Len_r12                                                    = LTE_SL_CP_Len_r12_normal;
   preconfigpool->sc_Period_r12                                                    = LTE_SL_PeriodComm_r12_sf40;
@@ -340,7 +303,6 @@ void init_SL_preconfig(UE_RRC_INST *UE, const uint8_t eNB_index )
   preconfigpool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs40_r12.buf[3]      = 0;
   preconfigpool->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs40_r12.buf[4]      = 0;
   preconfigpool->sc_TxParameters_r12                                              = 0;
-
   preconfigpool->data_CP_Len_r12                                                  = LTE_SL_CP_Len_r12_normal;
   // 20 PRBs for SL communications
   preconfigpool->data_TF_ResourceConfig_r12.prb_Num_r12                             = 20;
@@ -360,123 +322,117 @@ void init_SL_preconfig(UE_RRC_INST *UE, const uint8_t eNB_index )
   preconfigpool->data_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs40_r12.buf[2]      = 0xFF;
   preconfigpool->data_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs40_r12.buf[3]      = 0xFF;
   preconfigpool->data_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs40_r12.buf[5]      = 0xFF;
-
   preconfigpool->dataHoppingConfig_r12.hoppingParameter_r12                         = 0;
   preconfigpool->dataHoppingConfig_r12.numSubbands_r12                              = LTE_SL_HoppingConfigComm_r12__numSubbands_r12_ns1;
   preconfigpool->dataHoppingConfig_r12.rb_Offset_r12                                = 0;
-
   preconfigpool->dataTxParameters_r12                                               = 0;
-
   ASN_SEQUENCE_ADD(&UE->SL_Preconfiguration[eNB_index]->preconfigComm_r12.list,preconfigpool);
-
   // Rel13 extensions
   UE->SL_Preconfiguration[eNB_index]->ext1 = NULL;
-/*
-  // Establish a SLRB (using DRB 3 for now)
-  protocol_ctxt_t ctxt;
-  PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, 0, ENB_FLAG_NO, 0x1234, 0, 0,0);
-
-  UE->DRB_config[0][0] = CALLOC(1,sizeof(struct DRB_ToAddMod));
-  UE->DRB_config[0][0]->eps_BearerIdentity = CALLOC(1, sizeof(long));
-  UE->DRB_config[0][0]->drb_Identity =  3;
-  UE->DRB_config[0][0]->eps_BearerIdentity = CALLOC(1, sizeof(long));
-  // allowed value 5..15, value : x+4
-  *(UE->DRB_config[0][0]->eps_BearerIdentity) = 3;
-  UE->DRB_config[0][0]->logicalChannelIdentity = CALLOC(1, sizeof(long));
-  *(UE->DRB_config[0][0]->logicalChannelIdentity) = UE->DRB_config[0][0]->drb_Identity; //(long) (ue_context_pP->ue_context.e_rab[i].param.e_rab_id + 2); // value : x+2
-
-  // TTN - Establish a new SLRB for PC5-S (using DRB 10 for now)
-  UE->DRB_config[0][1] = CALLOC(1,sizeof(struct DRB_ToAddMod));
-  UE->DRB_config[0][1]->eps_BearerIdentity = CALLOC(1, sizeof(long));
-  UE->DRB_config[0][1]->drb_Identity =  10;
-  UE->DRB_config[0][1]->eps_BearerIdentity = CALLOC(1, sizeof(long));
-  // allowed value 5..15, value : x+4
-  *(UE->DRB_config[0][1]->eps_BearerIdentity) = 10;
-  UE->DRB_config[0][1]->logicalChannelIdentity = CALLOC(1, sizeof(long));
-  *(UE->DRB_config[0][1]->logicalChannelIdentity) = UE->DRB_config[0][1]->drb_Identity; //(long) (ue_context_pP->ue_context.e_rab[i].param.e_rab_id + 2); // value : x+2
-
-  struct RLC_Config                  *DRB_rlc_config                   = CALLOC(1,sizeof(struct RLC_Config));
-  struct PDCP_Config                 *DRB_pdcp_config                  = CALLOC(1,sizeof(struct PDCP_Config));
-  struct PDCP_Config__rlc_UM         *PDCP_rlc_UM                      = CALLOC(1,sizeof(struct PDCP_Config__rlc_UM));
-  struct LogicalChannelConfig        *DRB_lchan_config                 = CALLOC(1,sizeof(struct LogicalChannelConfig));
-  struct LogicalChannelConfig__ul_SpecificParameters
-    *DRB_ul_SpecificParameters                                         = CALLOC(1, sizeof(struct LogicalChannelConfig__ul_SpecificParameters));
-  long                               *logicalchannelgroup_drb          = CALLOC(1, sizeof(long));
-
-  DRB_rlc_config->present = RLC_Config_PR_um_Bi_Directional;
-  DRB_rlc_config->choice.um_Bi_Directional.ul_UM_RLC.sn_FieldLength = SN_FieldLength_size10;
-  DRB_rlc_config->choice.um_Bi_Directional.dl_UM_RLC.sn_FieldLength = SN_FieldLength_size10;
-  DRB_rlc_config->choice.um_Bi_Directional.dl_UM_RLC.t_Reordering = T_Reordering_ms35;
-  UE->DRB_config[0][0]->rlc_Config = DRB_rlc_config;
-  UE->DRB_config[0][1]->rlc_Config = DRB_rlc_config;
-
-  DRB_pdcp_config = CALLOC(1, sizeof(*DRB_pdcp_config));
-  UE->DRB_config[0][0]->pdcp_Config = DRB_pdcp_config;
-  UE->DRB_config[0][1]->pdcp_Config = DRB_pdcp_config;
-  DRB_pdcp_config->discardTimer = CALLOC(1, sizeof(long));
-  *DRB_pdcp_config->discardTimer = PDCP_Config__discardTimer_infinity;
-  DRB_pdcp_config->rlc_AM = NULL;
-  DRB_pdcp_config->rlc_UM = NULL;
-
-  // avoid gcc warnings
-  (void)PDCP_rlc_UM;
-
-  DRB_pdcp_config->rlc_UM = PDCP_rlc_UM;
-  PDCP_rlc_UM->pdcp_SN_Size = PDCP_Config__rlc_UM__pdcp_SN_Size_len12bits;
-  DRB_pdcp_config->headerCompression.present = PDCP_Config__headerCompression_PR_notUsed;
-
-  UE->DRB_config[0][0]->logicalChannelConfig = DRB_lchan_config;
-  UE->DRB_config[0][1]->logicalChannelConfig = DRB_lchan_config;
-  DRB_ul_SpecificParameters = CALLOC(1, sizeof(*DRB_ul_SpecificParameters));
-  DRB_lchan_config->ul_SpecificParameters = DRB_ul_SpecificParameters;
-
-  DRB_ul_SpecificParameters->priority = 12;    // lower priority than srb1, srb2 and other dedicated bearer
-  DRB_ul_SpecificParameters->prioritisedBitRate =LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_kBps8 ;
-    //LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity;
-  DRB_ul_SpecificParameters->bucketSizeDuration =
-    LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms50;
-
-  // LCG for DTCH can take the value from 1 to 3 as defined in 36331: normally controlled by upper layers (like RRM)
-
-  *logicalchannelgroup_drb = 1;
-  DRB_ul_SpecificParameters->logicalChannelGroup = logicalchannelgroup_drb;
-
-  UE->DRB_configList = CALLOC(1,sizeof(DRB_ToAddModList_t));
-  ASN_SEQUENCE_ADD(&UE->DRB_configList->list,UE->DRB_config[0][0]);
-  ASN_SEQUENCE_ADD(&UE->DRB_configList->list,UE->DRB_config[0][1]);
-
-  rrc_pdcp_config_asn1_req(&ctxt,
-			   (SRB_ToAddModList_t *) NULL,
-			   UE->DRB_configList,
-			   (DRB_ToReleaseList_t*) NULL,
-			   0xff, NULL, NULL, NULL
-#if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-                           , (LTE_PMCH_InfoList_r9_t *) NULL
-#endif
-                           ,NULL);
+  /*
+    // Establish a SLRB (using DRB 3 for now)
+    protocol_ctxt_t ctxt;
+    PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, 0, ENB_FLAG_NO, 0x1234, 0, 0,0);
+
+    UE->DRB_config[0][0] = CALLOC(1,sizeof(struct DRB_ToAddMod));
+    UE->DRB_config[0][0]->eps_BearerIdentity = CALLOC(1, sizeof(long));
+    UE->DRB_config[0][0]->drb_Identity =  3;
+    UE->DRB_config[0][0]->eps_BearerIdentity = CALLOC(1, sizeof(long));
+    // allowed value 5..15, value : x+4
+    *(UE->DRB_config[0][0]->eps_BearerIdentity) = 3;
+    UE->DRB_config[0][0]->logicalChannelIdentity = CALLOC(1, sizeof(long));
+    *(UE->DRB_config[0][0]->logicalChannelIdentity) = UE->DRB_config[0][0]->drb_Identity; //(long) (ue_context_pP->ue_context.e_rab[i].param.e_rab_id + 2); // value : x+2
+
+    // TTN - Establish a new SLRB for PC5-S (using DRB 10 for now)
+    UE->DRB_config[0][1] = CALLOC(1,sizeof(struct DRB_ToAddMod));
+    UE->DRB_config[0][1]->eps_BearerIdentity = CALLOC(1, sizeof(long));
+    UE->DRB_config[0][1]->drb_Identity =  10;
+    UE->DRB_config[0][1]->eps_BearerIdentity = CALLOC(1, sizeof(long));
+    // allowed value 5..15, value : x+4
+    *(UE->DRB_config[0][1]->eps_BearerIdentity) = 10;
+    UE->DRB_config[0][1]->logicalChannelIdentity = CALLOC(1, sizeof(long));
+    *(UE->DRB_config[0][1]->logicalChannelIdentity) = UE->DRB_config[0][1]->drb_Identity; //(long) (ue_context_pP->ue_context.e_rab[i].param.e_rab_id + 2); // value : x+2
+
+    struct RLC_Config                  *DRB_rlc_config                   = CALLOC(1,sizeof(struct RLC_Config));
+    struct PDCP_Config                 *DRB_pdcp_config                  = CALLOC(1,sizeof(struct PDCP_Config));
+    struct PDCP_Config__rlc_UM         *PDCP_rlc_UM                      = CALLOC(1,sizeof(struct PDCP_Config__rlc_UM));
+    struct LogicalChannelConfig        *DRB_lchan_config                 = CALLOC(1,sizeof(struct LogicalChannelConfig));
+    struct LogicalChannelConfig__ul_SpecificParameters
+      *DRB_ul_SpecificParameters                                         = CALLOC(1, sizeof(struct LogicalChannelConfig__ul_SpecificParameters));
+    long                               *logicalchannelgroup_drb          = CALLOC(1, sizeof(long));
+
+    DRB_rlc_config->present = RLC_Config_PR_um_Bi_Directional;
+    DRB_rlc_config->choice.um_Bi_Directional.ul_UM_RLC.sn_FieldLength = SN_FieldLength_size10;
+    DRB_rlc_config->choice.um_Bi_Directional.dl_UM_RLC.sn_FieldLength = SN_FieldLength_size10;
+    DRB_rlc_config->choice.um_Bi_Directional.dl_UM_RLC.t_Reordering = T_Reordering_ms35;
+    UE->DRB_config[0][0]->rlc_Config = DRB_rlc_config;
+    UE->DRB_config[0][1]->rlc_Config = DRB_rlc_config;
+
+    DRB_pdcp_config = CALLOC(1, sizeof(*DRB_pdcp_config));
+    UE->DRB_config[0][0]->pdcp_Config = DRB_pdcp_config;
+    UE->DRB_config[0][1]->pdcp_Config = DRB_pdcp_config;
+    DRB_pdcp_config->discardTimer = CALLOC(1, sizeof(long));
+    *DRB_pdcp_config->discardTimer = PDCP_Config__discardTimer_infinity;
+    DRB_pdcp_config->rlc_AM = NULL;
+    DRB_pdcp_config->rlc_UM = NULL;
+
+    // avoid gcc warnings
+    (void)PDCP_rlc_UM;
+
+    DRB_pdcp_config->rlc_UM = PDCP_rlc_UM;
+    PDCP_rlc_UM->pdcp_SN_Size = PDCP_Config__rlc_UM__pdcp_SN_Size_len12bits;
+    DRB_pdcp_config->headerCompression.present = PDCP_Config__headerCompression_PR_notUsed;
+
+    UE->DRB_config[0][0]->logicalChannelConfig = DRB_lchan_config;
+    UE->DRB_config[0][1]->logicalChannelConfig = DRB_lchan_config;
+    DRB_ul_SpecificParameters = CALLOC(1, sizeof(*DRB_ul_SpecificParameters));
+    DRB_lchan_config->ul_SpecificParameters = DRB_ul_SpecificParameters;
+
+    DRB_ul_SpecificParameters->priority = 12;    // lower priority than srb1, srb2 and other dedicated bearer
+    DRB_ul_SpecificParameters->prioritisedBitRate =LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_kBps8 ;
+      //LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity;
+    DRB_ul_SpecificParameters->bucketSizeDuration =
+      LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms50;
+
+    // LCG for DTCH can take the value from 1 to 3 as defined in 36331: normally controlled by upper layers (like RRM)
+
+    *logicalchannelgroup_drb = 1;
+    DRB_ul_SpecificParameters->logicalChannelGroup = logicalchannelgroup_drb;
+
+    UE->DRB_configList = CALLOC(1,sizeof(DRB_ToAddModList_t));
+    ASN_SEQUENCE_ADD(&UE->DRB_configList->list,UE->DRB_config[0][0]);
+    ASN_SEQUENCE_ADD(&UE->DRB_configList->list,UE->DRB_config[0][1]);
+
+    rrc_pdcp_config_asn1_req(&ctxt,
+           (SRB_ToAddModList_t *) NULL,
+           UE->DRB_configList,
+           (DRB_ToReleaseList_t*) NULL,
+           0xff, NULL, NULL, NULL
+  #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
+                             , (LTE_PMCH_InfoList_r9_t *) NULL
+  #endif
+                             ,NULL);
 
-  rrc_rlc_config_asn1_req(&ctxt,
-			  (SRB_ToAddModList_t*)NULL,
-			  UE->DRB_configList,
-			  (DRB_ToReleaseList_t*)NULL
-#if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-			  ,(LTE_PMCH_InfoList_r9_t *)NULL
-#endif
-			  );
-*/
+    rrc_rlc_config_asn1_req(&ctxt,
+          (SRB_ToAddModList_t*)NULL,
+          UE->DRB_configList,
+          (DRB_ToReleaseList_t*)NULL
+  #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
+          ,(LTE_PMCH_InfoList_r9_t *)NULL
+  #endif
+          );
+  */
 }
 
 #endif
 
 //-----------------------------------------------------------------------------
-void openair_rrc_ue_init_security( const protocol_ctxt_t* const ctxt_pP )
-{
+void openair_rrc_ue_init_security( const protocol_ctxt_t *const ctxt_pP ) {
 #if defined(ENABLE_SECURITY)
   //    uint8_t *kRRCenc;
   //    uint8_t *kRRCint;
   char ascii_buffer[65];
   uint8_t i;
-
   memset(UE_rrc_inst[ctxt_pP->module_id].kenb, ctxt_pP->module_id, 32);
 
   for (i = 0; i < 32; i++) {
@@ -490,8 +446,7 @@ void openair_rrc_ue_init_security( const protocol_ctxt_t* const ctxt_pP )
 }
 
 //-----------------------------------------------------------------------------
-char openair_rrc_ue_init( const module_id_t ue_mod_idP, const unsigned char eNB_index )
-{
+char openair_rrc_ue_init( const module_id_t ue_mod_idP, const unsigned char eNB_index ) {
   protocol_ctxt_t ctxt;
   PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_idP, ENB_FLAG_NO, NOT_A_RNTI, 0, 0,eNB_index);
   LOG_I(RRC,
@@ -499,7 +454,6 @@ char openair_rrc_ue_init( const module_id_t ue_mod_idP, const unsigned char eNB_
         PROTOCOL_RRC_CTXT_ARGS(&ctxt));
   rrc_set_state (ue_mod_idP, RRC_STATE_INACTIVE);
   rrc_set_sub_state (ue_mod_idP, RRC_SUB_STATE_INACTIVE);
-
   LOG_I(RRC,"[UE %d] INIT State = RRC_IDLE (eNB %d)\n",ctxt.module_id,eNB_index);
   UE_rrc_inst[ctxt.module_id].Info[eNB_index].State=RRC_IDLE;
   UE_rrc_inst[ctxt.module_id].Info[eNB_index].T300_active = 0;
@@ -516,22 +470,16 @@ char openair_rrc_ue_init( const module_id_t ue_mod_idP, const unsigned char eNB_
 #else
   UE_rrc_inst[ctxt.module_id].integrity_algorithm = LTE_SecurityAlgorithmConfig__integrityProtAlgorithm_reserved;
 #endif
-
   openair_rrc_ue_init_security(&ctxt);
   init_SI_UE(&ctxt,eNB_index);
   LOG_D(RRC,PROTOCOL_RRC_CTXT_FMT"  INIT: phy_sync_2_ch_ind\n",
         PROTOCOL_RRC_CTXT_ARGS(&ctxt));
-
-
-
 #ifndef NO_RRM
   send_msg(&S_rrc,msg_rrc_phy_synch_to_CH_ind(ctxt.module_id,eNB_index,UE_rrc_inst[ctxt.module_id].Mac_id));
 #endif
-
 #ifndef NO_RRM
   send_msg(&S_rrc,msg_rrc_phy_synch_to_CH_ind(ctxt.module_id,eNB_index,UE_rrc_inst[ctxt.module_id].Mac_id));
 #endif
-
 #ifdef NO_RRM //init ch SRB0, SRB1 & BDTCH
   openair_rrc_on_ue(&ctxt);
 #endif
@@ -544,18 +492,14 @@ char openair_rrc_ue_init( const module_id_t ue_mod_idP, const unsigned char eNB_
 
   UE_rrc_inst[ue_mod_idP].num_active_cba_groups = 0;
 #endif
-
   return 0;
 }
 
 //-----------------------------------------------------------------------------
-void rrc_ue_generate_RRCConnectionRequest( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index )
-{
-
+void rrc_ue_generate_RRCConnectionRequest( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index ) {
   uint8_t i=0,rv[6];
 
   if(UE_rrc_inst[ctxt_pP->module_id].Srb0[eNB_index].Tx_buffer.payload_size ==0) {
-
     // Get RRCConnectionRequest, fill random for now
     // Generate random byte stream for contention resolution
     for (i=0; i<6; i++) {
@@ -572,9 +516,8 @@ void rrc_ue_generate_RRCConnectionRequest( const protocol_ctxt_t* const ctxt_pP,
     UE_rrc_inst[ctxt_pP->module_id].Srb0[eNB_index].Tx_buffer.payload_size =
       do_RRCConnectionRequest(
         ctxt_pP->module_id,
-        (uint8_t*)UE_rrc_inst[ctxt_pP->module_id].Srb0[eNB_index].Tx_buffer.Payload,
+        (uint8_t *)UE_rrc_inst[ctxt_pP->module_id].Srb0[eNB_index].Tx_buffer.Payload,
         rv);
-
     LOG_I(RRC,"[UE %d] : Frame %d, Logical Channel UL-CCCH (SRB0), Generating RRCConnectionRequest (bytes %d, eNB %d)\n",
           ctxt_pP->module_id, ctxt_pP->frame, UE_rrc_inst[ctxt_pP->module_id].Srb0[eNB_index].Tx_buffer.payload_size, eNB_index);
 
@@ -585,7 +528,6 @@ void rrc_ue_generate_RRCConnectionRequest( const protocol_ctxt_t* const ctxt_pP,
     LOG_T(RRC,"\n");
     /*UE_rrc_inst[ue_mod_idP].Srb0[Idx].Tx_buffer.Payload[i] = taus()&0xff;
     UE_rrc_inst[ue_mod_idP].Srb0[Idx].Tx_buffer.payload_size =i; */
-
   }
 }
 
@@ -611,12 +553,11 @@ static const char const nas_attach_req_imsi[] = {
 //-----------------------------------------------------------------------------
 void
 rrc_t310_expiration(
-  const protocol_ctxt_t* const ctxt_pP,
+  const protocol_ctxt_t *const ctxt_pP,
   const uint8_t                 eNB_index
 )
 //-----------------------------------------------------------------------------
 {
-
   if (UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].State != RRC_CONNECTED) {
     LOG_D(RRC, "Timer 310 expired, going to RRC_IDLE\n");
     UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].State = RRC_IDLE;
@@ -628,7 +569,7 @@ rrc_t310_expiration(
 
     if (UE_rrc_inst[ctxt_pP->module_id].Srb2[eNB_index].Active == 1) {
       LOG_D (RRC,"[Inst %d] eNB_index %d, Remove RB %d\n ", ctxt_pP->module_id, eNB_index,
-           UE_rrc_inst[ctxt_pP->module_id].Srb2[eNB_index].Srb_info.Srb_id);
+             UE_rrc_inst[ctxt_pP->module_id].Srb2[eNB_index].Srb_info.Srb_id);
       rrc_pdcp_config_req (ctxt_pP,
                            SRB_FLAG_YES,
                            CONFIG_ACTION_REMOVE,
@@ -650,43 +591,36 @@ rrc_t310_expiration(
 }
 
 //-----------------------------------------------------------------------------
-static void rrc_ue_generate_RRCConnectionSetupComplete( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index, const uint8_t Transaction_id )
-{
-
+static void rrc_ue_generate_RRCConnectionSetupComplete( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index, const uint8_t Transaction_id ) {
   uint8_t    buffer[100];
   uint8_t    size;
-  const char * nas_msg;
+  const char *nas_msg;
   int   nas_msg_length;
-
 #if defined(ENABLE_ITTI) && defined(ENABLE_USE_MME)
-  nas_msg         = (char*) UE_rrc_inst[ctxt_pP->module_id].initialNasMsg.data;
+  nas_msg         = (char *) UE_rrc_inst[ctxt_pP->module_id].initialNasMsg.data;
   nas_msg_length  = UE_rrc_inst[ctxt_pP->module_id].initialNasMsg.length;
 #else
   nas_msg         = nas_attach_req_imsi;
   nas_msg_length  = sizeof(nas_attach_req_imsi);
 #endif
-
   size = do_RRCConnectionSetupComplete(ctxt_pP->module_id, buffer, Transaction_id, nas_msg_length, nas_msg);
-
   LOG_I(RRC,"[UE %d][RAPROC] Frame %d : Logical Channel UL-DCCH (SRB1), Generating RRCConnectionSetupComplete (bytes%d, eNB %d)\n",
         ctxt_pP->module_id,ctxt_pP->frame, size, eNB_index);
   LOG_D(RLC,
         "[FRAME %05d][RRC_UE][MOD %02d][][--- PDCP_DATA_REQ/%d Bytes (RRCConnectionSetupComplete to eNB %d MUI %d) --->][PDCP][MOD %02d][RB %02d]\n",
         ctxt_pP->frame, ctxt_pP->module_id+NB_eNB_INST, size, eNB_index, rrc_mui, ctxt_pP->module_id+NB_eNB_INST, DCCH);
   rrc_data_req_ue (
-		ctxt_pP,
-		DCCH,
-		rrc_mui++,
-		SDU_CONFIRM_NO,
-		size,
-		buffer,
-		PDCP_TRANSMISSION_MODE_CONTROL);
+    ctxt_pP,
+    DCCH,
+    rrc_mui++,
+    SDU_CONFIRM_NO,
+    size,
+    buffer,
+    PDCP_TRANSMISSION_MODE_CONTROL);
 }
 
 //-----------------------------------------------------------------------------
-void rrc_ue_generate_RRCConnectionReconfigurationComplete( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index, const uint8_t Transaction_id )
-{
-
+void rrc_ue_generate_RRCConnectionReconfigurationComplete( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index, const uint8_t Transaction_id ) {
   uint8_t buffer[32], size;
   size = do_RRCConnectionReconfigurationComplete(ctxt_pP, buffer, Transaction_id);
   LOG_I(RRC,PROTOCOL_RRC_CTXT_UE_FMT" Logical Channel UL-DCCH (SRB1), Generating RRCConnectionReconfigurationComplete (bytes %d, eNB_index %d)\n",
@@ -701,65 +635,34 @@ void rrc_ue_generate_RRCConnectionReconfigurationComplete( const protocol_ctxt_t
         UE_MODULE_ID_TO_INSTANCE(ctxt_pP->module_id),
         DCCH);
   rrc_data_req_ue (
-		ctxt_pP,
-		DCCH,
-		rrc_mui++,
-		SDU_CONFIRM_NO,
-		size,
-		buffer,
-		PDCP_TRANSMISSION_MODE_CONTROL);
+    ctxt_pP,
+    DCCH,
+    rrc_mui++,
+    SDU_CONFIRM_NO,
+    size,
+    buffer,
+    PDCP_TRANSMISSION_MODE_CONTROL);
 }
 
 
 //-----------------------------------------------------------------------------
 // Called by L2 interface (MAC)
-int rrc_ue_decode_ccch( const protocol_ctxt_t* const ctxt_pP, const SRB_INFO* const Srb_info, const uint8_t eNB_index )
-{
-  LTE_DL_CCCH_Message_t* dl_ccch_msg=NULL;
+int rrc_ue_decode_ccch( const protocol_ctxt_t *const ctxt_pP, const SRB_INFO *const Srb_info, const uint8_t eNB_index ) {
+  LTE_DL_CCCH_Message_t *dl_ccch_msg=NULL;
   asn_dec_rval_t dec_rval;
   int rval=0;
-
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_DECODE_CCCH, VCD_FUNCTION_IN);
   //  LOG_D(RRC,"[UE %d] Decoding DL-CCCH message (%d bytes), State %d\n",ue_mod_idP,Srb_info->Rx_buffer.payload_size,
   //  UE_rrc_inst[ue_mod_idP].Info[eNB_index].State);
-
   dec_rval = uper_decode(NULL,
                          &asn_DEF_LTE_DL_CCCH_Message,
-                         (void**)&dl_ccch_msg,
-                         (uint8_t*)Srb_info->Rx_buffer.Payload,
+                         (void **)&dl_ccch_msg,
+                         (uint8_t *)Srb_info->Rx_buffer.Payload,
                          100,0,0);
 
   if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
-     xer_fprint(stdout,&asn_DEF_LTE_DL_CCCH_Message,(void*)dl_ccch_msg);
-  }
-
-#if defined(ENABLE_ITTI)
-# if defined(DISABLE_ITTI_XER_PRINT)
-  {
-    MessageDef *msg_p;
-
-    msg_p = itti_alloc_new_message (TASK_RRC_UE, RRC_DL_CCCH_MESSAGE);
-    memcpy (&msg_p->ittiMsg, (void *) dl_ccch_msg, sizeof(RrcDlCcchMessage));
-
-    itti_send_msg_to_task (TASK_UNKNOWN, ctxt_pP->instance, msg_p);
-  }
-# else
-  {
-    char        message_string[10000];
-    size_t      message_string_size;
-
-    if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_LTE_DL_CCCH_Message, (void *)dl_ccch_msg)) > 0) {
-      MessageDef *msg_p;
-
-      msg_p = itti_alloc_new_message_sized (TASK_RRC_UE, RRC_DL_CCCH, message_string_size + sizeof (IttiMsgText));
-      msg_p->ittiMsg.rrc_dl_ccch.size = message_string_size;
-      memcpy(&msg_p->ittiMsg.rrc_dl_ccch.text, message_string, message_string_size);
-
-      itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
-    }
+    xer_fprint(stdout,&asn_DEF_LTE_DL_CCCH_Message,(void *)dl_ccch_msg);
   }
-# endif
-#endif
 
   if ((dec_rval.code != RC_OK) && (dec_rval.consumed==0)) {
     LOG_E(RRC,"[UE %d] Frame %d : Failed to decode DL-CCCH-Message (%zu bytes)\n",ctxt_pP->module_id,ctxt_pP->frame,dec_rval.consumed);
@@ -768,74 +671,68 @@ int rrc_ue_decode_ccch( const protocol_ctxt_t* const ctxt_pP, const SRB_INFO* co
   }
 
   if (dl_ccch_msg->message.present == LTE_DL_CCCH_MessageType_PR_c1) {
-
     if (UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].State == RRC_SI_RECEIVED) {
-
       switch (dl_ccch_msg->message.choice.c1.present) {
+        case LTE_DL_CCCH_MessageType__c1_PR_NOTHING:
+          LOG_I(RRC, "[UE%d] Frame %d : Received PR_NOTHING on DL-CCCH-Message\n",
+                ctxt_pP->module_id,
+                ctxt_pP->frame);
+          rval = 0;
+          break;
 
-      case LTE_DL_CCCH_MessageType__c1_PR_NOTHING:
-        LOG_I(RRC, "[UE%d] Frame %d : Received PR_NOTHING on DL-CCCH-Message\n",
-              ctxt_pP->module_id,
-              ctxt_pP->frame);
-        rval = 0;
-        break;
-
-      case LTE_DL_CCCH_MessageType__c1_PR_rrcConnectionReestablishment:
-        LOG_I(RRC,
-              "[UE%d] Frame %d : Logical Channel DL-CCCH (SRB0), Received RRCConnectionReestablishment\n",
-              ctxt_pP->module_id,
-              ctxt_pP->frame);
-        rval = 0;
-        break;
-
-      case LTE_DL_CCCH_MessageType__c1_PR_rrcConnectionReestablishmentReject:
-        LOG_I(RRC,
-              "[UE%d] Frame %d : Logical Channel DL-CCCH (SRB0), Received RRCConnectionReestablishmentReject\n",
-              ctxt_pP->module_id,
-              ctxt_pP->frame);
-        rval = 0;
-        break;
-
-      case LTE_DL_CCCH_MessageType__c1_PR_rrcConnectionReject:
-        LOG_I(RRC,
-              "[UE%d] Frame %d : Logical Channel DL-CCCH (SRB0), Received RRCConnectionReject \n",
-              ctxt_pP->module_id,
-              ctxt_pP->frame);
-        rval = 0;
-        break;
-
-      case LTE_DL_CCCH_MessageType__c1_PR_rrcConnectionSetup:
-        LOG_I(RRC,
-              "[UE%d][RAPROC] Frame %d : Logical Channel DL-CCCH (SRB0), Received RRCConnectionSetup RNTI %x\n",
-              ctxt_pP->module_id,
-              ctxt_pP->frame,
-              ctxt_pP->rnti);
-        // Get configuration
+        case LTE_DL_CCCH_MessageType__c1_PR_rrcConnectionReestablishment:
+          LOG_I(RRC,
+                "[UE%d] Frame %d : Logical Channel DL-CCCH (SRB0), Received RRCConnectionReestablishment\n",
+                ctxt_pP->module_id,
+                ctxt_pP->frame);
+          rval = 0;
+          break;
 
-        // Release T300 timer
-        UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].T300_active = 0;
-        rrc_ue_process_radioResourceConfigDedicated(
-          ctxt_pP,
-          eNB_index,
-          &dl_ccch_msg->message.choice.c1.choice.rrcConnectionSetup.criticalExtensions.choice.c1.choice.rrcConnectionSetup_r8.radioResourceConfigDedicated);
+        case LTE_DL_CCCH_MessageType__c1_PR_rrcConnectionReestablishmentReject:
+          LOG_I(RRC,
+                "[UE%d] Frame %d : Logical Channel DL-CCCH (SRB0), Received RRCConnectionReestablishmentReject\n",
+                ctxt_pP->module_id,
+                ctxt_pP->frame);
+          rval = 0;
+          break;
 
-        rrc_set_state (ctxt_pP->module_id, RRC_STATE_CONNECTED);
-        rrc_set_sub_state (ctxt_pP->module_id, RRC_SUB_STATE_CONNECTED);
-        UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].rnti = ctxt_pP->rnti;
-        rrc_ue_generate_RRCConnectionSetupComplete(
-          ctxt_pP,
-          eNB_index,
-          dl_ccch_msg->message.choice.c1.choice.rrcConnectionSetup.rrc_TransactionIdentifier);
+        case LTE_DL_CCCH_MessageType__c1_PR_rrcConnectionReject:
+          LOG_I(RRC,
+                "[UE%d] Frame %d : Logical Channel DL-CCCH (SRB0), Received RRCConnectionReject \n",
+                ctxt_pP->module_id,
+                ctxt_pP->frame);
+          rval = 0;
+          break;
 
-        rval = 0;
-        break;
+        case LTE_DL_CCCH_MessageType__c1_PR_rrcConnectionSetup:
+          LOG_I(RRC,
+                "[UE%d][RAPROC] Frame %d : Logical Channel DL-CCCH (SRB0), Received RRCConnectionSetup RNTI %x\n",
+                ctxt_pP->module_id,
+                ctxt_pP->frame,
+                ctxt_pP->rnti);
+          // Get configuration
+          // Release T300 timer
+          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].T300_active = 0;
+          rrc_ue_process_radioResourceConfigDedicated(
+            ctxt_pP,
+            eNB_index,
+            &dl_ccch_msg->message.choice.c1.choice.rrcConnectionSetup.criticalExtensions.choice.c1.choice.rrcConnectionSetup_r8.radioResourceConfigDedicated);
+          rrc_set_state (ctxt_pP->module_id, RRC_STATE_CONNECTED);
+          rrc_set_sub_state (ctxt_pP->module_id, RRC_SUB_STATE_CONNECTED);
+          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].rnti = ctxt_pP->rnti;
+          rrc_ue_generate_RRCConnectionSetupComplete(
+            ctxt_pP,
+            eNB_index,
+            dl_ccch_msg->message.choice.c1.choice.rrcConnectionSetup.rrc_TransactionIdentifier);
+          rval = 0;
+          break;
 
-      default:
-        LOG_E(RRC, "[UE%d] Frame %d : Unknown message\n",
-              ctxt_pP->module_id,
-              ctxt_pP->frame);
-        rval = -1;
-        break;
+        default:
+          LOG_E(RRC, "[UE%d] Frame %d : Unknown message\n",
+                ctxt_pP->module_id,
+                ctxt_pP->frame);
+          rval = -1;
+          break;
       }
     }
   }
@@ -850,30 +747,21 @@ rrc_ue_establish_srb1(
   module_id_t ue_mod_idP,
   frame_t frameP,
   uint8_t eNB_index,
-  struct LTE_SRB_ToAddMod* SRB_config
+  struct LTE_SRB_ToAddMod *SRB_config
 )
 //-----------------------------------------------------------------------------
 {
   // add descriptor from RRC PDU
-
-
   UE_rrc_inst[ue_mod_idP].Srb1[eNB_index].Active = 1;
   UE_rrc_inst[ue_mod_idP].Srb1[eNB_index].Status = RADIO_CONFIG_OK;//RADIO CFG
   UE_rrc_inst[ue_mod_idP].Srb1[eNB_index].Srb_info.Srb_id = 1;
-
   // copy default configuration for now
   //  memcpy(&UE_rrc_inst[ue_mod_idP].Srb1[eNB_index].Srb_info.Lchan_desc[0],&DCCH_LCHAN_DESC,LCHAN_DESC_SIZE);
   //  memcpy(&UE_rrc_inst[ue_mod_idP].Srb1[eNB_index].Srb_info.Lchan_desc[1],&DCCH_LCHAN_DESC,LCHAN_DESC_SIZE);
-
-
   LOG_I(RRC,"[UE %d], CONFIG_SRB1 %d corresponding to eNB_index %d\n", ue_mod_idP,DCCH,eNB_index);
-
   //rrc_pdcp_config_req (ue_mod_idP+NB_eNB_INST, frameP, 0, CONFIG_ACTION_ADD, lchan_id,UNDEF_SECURITY_MODE);
   //  rrc_rlc_config_req(ue_mod_idP+NB_eNB_INST,frameP,0,CONFIG_ACTION_ADD,lchan_id,SIGNALLING_RADIO_BEARER,Rlc_info_am_config);
-
   //  UE_rrc_inst[ue_mod_idP].Srb1[eNB_index].Srb_info.Tx_buffer.payload_size=DEFAULT_MEAS_IND_SIZE+1;
-
-
   return(0);
 }
 
@@ -883,30 +771,21 @@ rrc_ue_establish_srb2(
   module_id_t ue_mod_idP,
   frame_t frameP,
   uint8_t eNB_index,
-  struct LTE_SRB_ToAddMod* SRB_config
+  struct LTE_SRB_ToAddMod *SRB_config
 )
 //-----------------------------------------------------------------------------
 {
   // add descriptor from RRC PDU
-
-
   UE_rrc_inst[ue_mod_idP].Srb2[eNB_index].Active = 1;
   UE_rrc_inst[ue_mod_idP].Srb2[eNB_index].Status = RADIO_CONFIG_OK;//RADIO CFG
   UE_rrc_inst[ue_mod_idP].Srb2[eNB_index].Srb_info.Srb_id = 2;
-
   // copy default configuration for now
   //  memcpy(&UE_rrc_inst[ue_mod_idP].Srb2[eNB_index].Srb_info.Lchan_desc[0],&DCCH_LCHAN_DESC,LCHAN_DESC_SIZE);
   //  memcpy(&UE_rrc_inst[ue_mod_idP].Srb2[eNB_index].Srb_info.Lchan_desc[1],&DCCH_LCHAN_DESC,LCHAN_DESC_SIZE);
-
-
   LOG_I(RRC,"[UE %d], CONFIG_SRB2 %d corresponding to eNB_index %d\n",ue_mod_idP,DCCH1,eNB_index);
-
   //rrc_pdcp_config_req (ue_mod_idP+NB_eNB_INST, frameP, 0, CONFIG_ACTION_ADD, lchan_id, UNDEF_SECURITY_MODE);
   //  rrc_rlc_config_req(ue_mod_idP+NB_eNB_INST,frameP,0,CONFIG_ACTION_ADD,lchan_id,SIGNALLING_RADIO_BEARER,Rlc_info_am_config);
-
   //  UE_rrc_inst[ue_mod_idP].Srb1[eNB_index].Srb_info.Tx_buffer.payload_size=DEFAULT_MEAS_IND_SIZE+1;
-
-
   return(0);
 }
 
@@ -916,7 +795,7 @@ rrc_ue_establish_drb(
   module_id_t ue_mod_idP,
   frame_t frameP,
   uint8_t eNB_index,
-  struct LTE_DRB_ToAddMod* DRB_config
+  struct LTE_DRB_ToAddMod *DRB_config
 )
 //-----------------------------------------------------------------------------
 {
@@ -928,7 +807,6 @@ rrc_ue_establish_drb(
   (void)ip_addr_offset3;
   (void)ip_addr_offset4;
 #endif
-
   LOG_I(RRC,"[UE %d] Frame %d: processing RRCConnectionReconfiguration: reconfiguring DRB %ld/LCID %d\n",
         ue_mod_idP, frameP, DRB_config->drb_Identity, (int)*DRB_config->logicalChannelIdentity);
   /*
@@ -954,7 +832,6 @@ rrc_ue_establish_drb(
           ue_mod_idP,
           ip_addr_offset3+ue_mod_idP,
           (long int)((eNB_index * maxDRB) + DRB_config->drb_Identity));
-
     rb_conf_ipv4(0,//add
                  ue_mod_idP,//cx align with the UE index
                  ip_addr_offset3+ue_mod_idP,//inst num_enb+ue_index
@@ -967,7 +844,6 @@ rrc_ue_establish_drb(
 
 #    endif
 #endif
-
   return(0);
 }
 
@@ -975,13 +851,12 @@ rrc_ue_establish_drb(
 //-----------------------------------------------------------------------------
 void
 rrc_ue_process_measConfig(
-  const protocol_ctxt_t* const       ctxt_pP,
+  const protocol_ctxt_t *const       ctxt_pP,
   const uint8_t                      eNB_index,
-  LTE_MeasConfig_t* const               measConfig
+  LTE_MeasConfig_t *const               measConfig
 )
 //-----------------------------------------------------------------------------
 {
-
   // This is the procedure described in 36.331 Section 5.5.2.1
   int i;
   long ind;
@@ -1003,8 +878,8 @@ rrc_ue_process_measConfig(
 
       if (UE_rrc_inst[ctxt_pP->module_id].MeasObj[eNB_index][ind-1]) {
         LOG_D(RRC,"Modifying measurement object %ld\n",ind);
-        memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].MeasObj[eNB_index][ind-1],
-               (char*)measObj,
+        memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].MeasObj[eNB_index][ind-1],
+               (char *)measObj,
                sizeof(LTE_MeasObjectToAddMod_t));
       } else {
         LOG_I(RRC,"Adding measurement object %ld\n",ind);
@@ -1021,45 +896,43 @@ rrc_ue_process_measConfig(
     }
 
     LOG_I(RRC,"call rrc_mac_config_req \n");
-
     rrc_mac_config_req_ue(ctxt_pP->module_id,0,eNB_index,
-			  (LTE_RadioResourceConfigCommonSIB_t *)NULL,
-			  (struct LTE_PhysicalConfigDedicated *)NULL,
+                          (LTE_RadioResourceConfigCommonSIB_t *)NULL,
+                          (struct LTE_PhysicalConfigDedicated *)NULL,
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-			  (LTE_SCellToAddMod_r10_t *)NULL,
-			  //struct PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10,
-#endif
-			  UE_rrc_inst[ctxt_pP->module_id].MeasObj[eNB_index],
-			  (LTE_MAC_MainConfig_t *)NULL,
-			  0,
-			  (struct LTE_LogicalChannelConfig *)NULL,
-			  (LTE_MeasGapConfig_t *)NULL,
-			  (LTE_TDD_Config_t *)NULL,
-			  (LTE_MobilityControlInfo_t *)NULL,
-			  NULL,
-			  NULL,
-			  NULL,
-			  NULL,
-			  NULL,
-			  NULL
+                          (LTE_SCellToAddMod_r10_t *)NULL,
+                          //struct PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10,
+#endif
+                          UE_rrc_inst[ctxt_pP->module_id].MeasObj[eNB_index],
+                          (LTE_MAC_MainConfig_t *)NULL,
+                          0,
+                          (struct LTE_LogicalChannelConfig *)NULL,
+                          (LTE_MeasGapConfig_t *)NULL,
+                          (LTE_TDD_Config_t *)NULL,
+                          (LTE_MobilityControlInfo_t *)NULL,
+                          NULL,
+                          NULL,
+                          NULL,
+                          NULL,
+                          NULL,
+                          NULL
 #if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0))
-			  ,0,
-			  (LTE_MBSFN_AreaInfoList_r9_t *)NULL,
-			  (LTE_PMCH_InfoList_r9_t *)NULL
-
+                          ,0,
+                          (LTE_MBSFN_AreaInfoList_r9_t *)NULL,
+                          (LTE_PMCH_InfoList_r9_t *)NULL
 #endif
 #ifdef CBA
-			  ,
-			  0,
-			  0
+                          ,
+                          0,
+                          0
 #endif
 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-           ,
-           0,
-           NULL,
-           NULL
+                          ,
+                          0,
+                          NULL,
+                          NULL
 #endif
-			  );
+                         );
   }
 
   if (measConfig->reportConfigToRemoveList != NULL) {
@@ -1077,8 +950,8 @@ rrc_ue_process_measConfig(
 
       if (UE_rrc_inst[ctxt_pP->module_id].ReportConfig[eNB_index][ind-1]) {
         LOG_I(RRC,"Modifying Report Configuration %ld\n",ind-1);
-        memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].ReportConfig[eNB_index][ind-1],
-               (char*)measConfig->reportConfigToAddModList->list.array[i],
+        memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].ReportConfig[eNB_index][ind-1],
+               (char *)measConfig->reportConfigToAddModList->list.array[i],
                sizeof(LTE_ReportConfigToAddMod_t));
       } else {
         LOG_D(RRC,"Adding Report Configuration %ld %p \n",ind-1,measConfig->reportConfigToAddModList->list.array[i]);
@@ -1090,8 +963,8 @@ rrc_ue_process_measConfig(
   if (measConfig->quantityConfig != NULL) {
     if (UE_rrc_inst[ctxt_pP->module_id].QuantityConfig[eNB_index]) {
       LOG_D(RRC,"Modifying Quantity Configuration \n");
-      memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].QuantityConfig[eNB_index],
-             (char*)measConfig->quantityConfig,
+      memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].QuantityConfig[eNB_index],
+             (char *)measConfig->quantityConfig,
              sizeof(LTE_QuantityConfig_t));
     } else {
       LOG_D(RRC,"Adding Quantity configuration\n");
@@ -1112,8 +985,8 @@ rrc_ue_process_measConfig(
 
       if (UE_rrc_inst[ctxt_pP->module_id].MeasId[eNB_index][ind-1]) {
         LOG_D(RRC,"Modifying Measurement ID %ld\n",ind-1);
-        memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].MeasId[eNB_index][ind-1],
-               (char*)measConfig->measIdToAddModList->list.array[i],
+        memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].MeasId[eNB_index][ind-1],
+               (char *)measConfig->measIdToAddModList->list.array[i],
                sizeof(LTE_MeasIdToAddMod_t));
       } else {
         LOG_D(RRC,"Adding Measurement ID %ld %p\n",ind-1,measConfig->measIdToAddModList->list.array[i]);
@@ -1124,8 +997,8 @@ rrc_ue_process_measConfig(
 
   if (measConfig->measGapConfig !=NULL) {
     if (UE_rrc_inst[ctxt_pP->module_id].measGapConfig[eNB_index]) {
-      memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].measGapConfig[eNB_index],
-             (char*)measConfig->measGapConfig,
+      memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].measGapConfig[eNB_index],
+             (char *)measConfig->measGapConfig,
              sizeof(LTE_MeasGapConfig_t));
     } else {
       UE_rrc_inst[ctxt_pP->module_id].measGapConfig[eNB_index] = measConfig->measGapConfig;
@@ -1135,8 +1008,8 @@ rrc_ue_process_measConfig(
   if (measConfig->quantityConfig != NULL) {
     if (UE_rrc_inst[ctxt_pP->module_id].QuantityConfig[eNB_index]) {
       LOG_I(RRC,"Modifying Quantity Configuration \n");
-      memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].QuantityConfig[eNB_index],
-             (char*)measConfig->quantityConfig,
+      memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].QuantityConfig[eNB_index],
+             (char *)measConfig->quantityConfig,
              sizeof(LTE_QuantityConfig_t));
     } else {
       LOG_I(RRC,"Adding Quantity configuration\n");
@@ -1147,7 +1020,6 @@ rrc_ue_process_measConfig(
         (*UE_rrc_inst[ctxt_pP->module_id].QuantityConfig[eNB_index]->quantityConfigEUTRA->filterCoefficientRSRP)/4);
     UE_rrc_inst[ctxt_pP->module_id].filter_coeff_rsrq = 1./pow(2,
         (*UE_rrc_inst[ctxt_pP->module_id].QuantityConfig[eNB_index]->quantityConfigEUTRA->filterCoefficientRSRQ)/4);
-
     LOG_I(RRC,"[UE %d] set rsrp-coeff for eNB %d: %ld rsrq-coeff: %ld rsrp_factor: %f rsrq_factor: %f \n",
           ctxt_pP->module_id, eNB_index, // UE_rrc_inst[ue_mod_idP].Info[eNB_index].UE_index,
           *UE_rrc_inst[ctxt_pP->module_id].QuantityConfig[eNB_index]->quantityConfigEUTRA->filterCoefficientRSRP,
@@ -1162,7 +1034,7 @@ rrc_ue_process_measConfig(
 
   if (measConfig->speedStatePars != NULL) {
     if (UE_rrc_inst[ctxt_pP->module_id].speedStatePars) {
-      memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].speedStatePars,(char*)measConfig->speedStatePars,sizeof(struct LTE_MeasConfig__speedStatePars));
+      memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].speedStatePars,(char *)measConfig->speedStatePars,sizeof(struct LTE_MeasConfig__speedStatePars));
     } else {
       UE_rrc_inst[ctxt_pP->module_id].speedStatePars = measConfig->speedStatePars;
     }
@@ -1174,231 +1046,192 @@ rrc_ue_process_measConfig(
 
 
 void
-rrc_ue_update_radioResourceConfigDedicated(LTE_RadioResourceConfigDedicated_t* radioResourceConfigDedicated,
-        const protocol_ctxt_t* const ctxt_pP,
-        uint8_t eNB_index)
-{
-    LTE_PhysicalConfigDedicated_t* physicalConfigDedicated2 = NULL;
-
-    physicalConfigDedicated2 = CALLOC(1,sizeof(*physicalConfigDedicated2));
-    physicalConfigDedicated2->pdsch_ConfigDedicated         = CALLOC(1,sizeof(*physicalConfigDedicated2->pdsch_ConfigDedicated));
-    physicalConfigDedicated2->pusch_ConfigDedicated         = CALLOC(1,sizeof(*physicalConfigDedicated2->pusch_ConfigDedicated));
-    physicalConfigDedicated2->pucch_ConfigDedicated         = CALLOC(1,sizeof(*physicalConfigDedicated2->pucch_ConfigDedicated));
-    physicalConfigDedicated2->cqi_ReportConfig              = CALLOC(1,sizeof(*physicalConfigDedicated2->cqi_ReportConfig));
-    physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic
-                                                            = CALLOC(1,sizeof(*physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic));
-    physicalConfigDedicated2->soundingRS_UL_ConfigDedicated = CALLOC(1,sizeof(*physicalConfigDedicated2->soundingRS_UL_ConfigDedicated));
-    physicalConfigDedicated2->schedulingRequestConfig       = CALLOC(1,sizeof(*physicalConfigDedicated2->schedulingRequestConfig));
-    physicalConfigDedicated2->antennaInfo                   = CALLOC(1,sizeof(*physicalConfigDedicated2->antennaInfo));
-
-    physicalConfigDedicated2->uplinkPowerControlDedicated   = CALLOC(1,sizeof(*physicalConfigDedicated2->uplinkPowerControlDedicated));
-    physicalConfigDedicated2->tpc_PDCCH_ConfigPUSCH         = CALLOC(1,sizeof(*physicalConfigDedicated2->tpc_PDCCH_ConfigPUSCH));
-    physicalConfigDedicated2->tpc_PDCCH_ConfigPUCCH         = CALLOC(1,sizeof(*physicalConfigDedicated2->tpc_PDCCH_ConfigPUCCH));
-
-    // Update pdsch_ConfigDedicated
-    if(radioResourceConfigDedicated->physicalConfigDedicated->pdsch_ConfigDedicated != NULL)
-    {
-        LOG_I(RRC,"Update pdsch_ConfigDedicated config \n");
-
-        if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pdsch_ConfigDedicated == NULL)
-            UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pdsch_ConfigDedicated = CALLOC(1,sizeof(LTE_PDSCH_ConfigDedicated_t));
-
-        memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pdsch_ConfigDedicated,
-                (char*)radioResourceConfigDedicated->physicalConfigDedicated->pdsch_ConfigDedicated,
-                sizeof(physicalConfigDedicated2->pdsch_ConfigDedicated));
-    }
-    else
-    {
-        LOG_I(RRC,"Keep old config for pdsch_ConfigDedicated\n");
-    }
-
-    // Update pusch_ConfigDedicated
-    if(radioResourceConfigDedicated->physicalConfigDedicated->pusch_ConfigDedicated != NULL)
-    {
-        LOG_I(RRC,"Update pusch_ConfigDedicated config \n");
-
-        if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pusch_ConfigDedicated == NULL)
-            UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pusch_ConfigDedicated = CALLOC(1,sizeof(LTE_PUSCH_ConfigDedicated_t));
-
-        memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pusch_ConfigDedicated,
-                (char*)radioResourceConfigDedicated->physicalConfigDedicated->pusch_ConfigDedicated,
-                sizeof(physicalConfigDedicated2->pusch_ConfigDedicated));
-    }
-    else
-    {
-        LOG_I(RRC,"Keep old config for pusch_ConfigDedicated\n");
-    }
-
-    // Update pucch_ConfigDedicated
-    if(radioResourceConfigDedicated->physicalConfigDedicated->pucch_ConfigDedicated != NULL)
-    {
-        LOG_I(RRC,"Update pucch_ConfigDedicated config \n");
-        if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pucch_ConfigDedicated == NULL)
-            UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pucch_ConfigDedicated = CALLOC(1,sizeof(LTE_PUCCH_ConfigDedicated_t));
-
-        memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pucch_ConfigDedicated,
-                (char*)radioResourceConfigDedicated->physicalConfigDedicated->pucch_ConfigDedicated,
-                sizeof(physicalConfigDedicated2->pucch_ConfigDedicated));
-    }
-    else
-    {
-        LOG_I(RRC,"Keep old config for pucch_ConfigDedicated\n");
-    }
+rrc_ue_update_radioResourceConfigDedicated(LTE_RadioResourceConfigDedicated_t *radioResourceConfigDedicated,
+    const protocol_ctxt_t *const ctxt_pP,
+    uint8_t eNB_index) {
+  LTE_PhysicalConfigDedicated_t *physicalConfigDedicated2 = NULL;
+  physicalConfigDedicated2 = CALLOC(1,sizeof(*physicalConfigDedicated2));
+  physicalConfigDedicated2->pdsch_ConfigDedicated         = CALLOC(1,sizeof(*physicalConfigDedicated2->pdsch_ConfigDedicated));
+  physicalConfigDedicated2->pusch_ConfigDedicated         = CALLOC(1,sizeof(*physicalConfigDedicated2->pusch_ConfigDedicated));
+  physicalConfigDedicated2->pucch_ConfigDedicated         = CALLOC(1,sizeof(*physicalConfigDedicated2->pucch_ConfigDedicated));
+  physicalConfigDedicated2->cqi_ReportConfig              = CALLOC(1,sizeof(*physicalConfigDedicated2->cqi_ReportConfig));
+  physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic
+    = CALLOC(1,sizeof(*physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic));
+  physicalConfigDedicated2->soundingRS_UL_ConfigDedicated = CALLOC(1,sizeof(*physicalConfigDedicated2->soundingRS_UL_ConfigDedicated));
+  physicalConfigDedicated2->schedulingRequestConfig       = CALLOC(1,sizeof(*physicalConfigDedicated2->schedulingRequestConfig));
+  physicalConfigDedicated2->antennaInfo                   = CALLOC(1,sizeof(*physicalConfigDedicated2->antennaInfo));
+  physicalConfigDedicated2->uplinkPowerControlDedicated   = CALLOC(1,sizeof(*physicalConfigDedicated2->uplinkPowerControlDedicated));
+  physicalConfigDedicated2->tpc_PDCCH_ConfigPUSCH         = CALLOC(1,sizeof(*physicalConfigDedicated2->tpc_PDCCH_ConfigPUSCH));
+  physicalConfigDedicated2->tpc_PDCCH_ConfigPUCCH         = CALLOC(1,sizeof(*physicalConfigDedicated2->tpc_PDCCH_ConfigPUCCH));
+
+  // Update pdsch_ConfigDedicated
+  if(radioResourceConfigDedicated->physicalConfigDedicated->pdsch_ConfigDedicated != NULL) {
+    LOG_I(RRC,"Update pdsch_ConfigDedicated config \n");
+
+    if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pdsch_ConfigDedicated == NULL)
+      UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pdsch_ConfigDedicated = CALLOC(1,sizeof(LTE_PDSCH_ConfigDedicated_t));
+
+    memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pdsch_ConfigDedicated,
+           (char *)radioResourceConfigDedicated->physicalConfigDedicated->pdsch_ConfigDedicated,
+           sizeof(physicalConfigDedicated2->pdsch_ConfigDedicated));
+  } else {
+    LOG_I(RRC,"Keep old config for pdsch_ConfigDedicated\n");
+  }
 
-    // Update cqi_ReportConfig
-    if(radioResourceConfigDedicated->physicalConfigDedicated->cqi_ReportConfig != NULL)
-    {
-        LOG_I(RRC,"Update cqi_ReportConfig config (size=%zu,%zu)\n", sizeof(*physicalConfigDedicated2->cqi_ReportConfig), sizeof(LTE_CQI_ReportConfig_t));
+  // Update pusch_ConfigDedicated
+  if(radioResourceConfigDedicated->physicalConfigDedicated->pusch_ConfigDedicated != NULL) {
+    LOG_I(RRC,"Update pusch_ConfigDedicated config \n");
 
-        if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->cqi_ReportConfig == NULL)
-            UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->cqi_ReportConfig = CALLOC(1,sizeof(LTE_CQI_ReportConfig_t));
+    if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pusch_ConfigDedicated == NULL)
+      UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pusch_ConfigDedicated = CALLOC(1,sizeof(LTE_PUSCH_ConfigDedicated_t));
 
-        memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->cqi_ReportConfig,
-                (char*)radioResourceConfigDedicated->physicalConfigDedicated->cqi_ReportConfig,
-                sizeof(*physicalConfigDedicated2->cqi_ReportConfig));
+    memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pusch_ConfigDedicated,
+           (char *)radioResourceConfigDedicated->physicalConfigDedicated->pusch_ConfigDedicated,
+           sizeof(physicalConfigDedicated2->pusch_ConfigDedicated));
+  } else {
+    LOG_I(RRC,"Keep old config for pusch_ConfigDedicated\n");
+  }
 
-        if (radioResourceConfigDedicated->physicalConfigDedicated->cqi_ReportConfig->cqi_ReportPeriodic != NULL) {
-          LOG_I(RRC,"Update cqi_ReportPeriodic config (size=%zu,%zu)\n", sizeof(*physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic), sizeof(LTE_CQI_ReportPeriodic_t));
+  // Update pucch_ConfigDedicated
+  if(radioResourceConfigDedicated->physicalConfigDedicated->pucch_ConfigDedicated != NULL) {
+    LOG_I(RRC,"Update pucch_ConfigDedicated config \n");
 
-          if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->cqi_ReportConfig->cqi_ReportPeriodic == NULL)
-            UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->cqi_ReportConfig->cqi_ReportPeriodic = CALLOC(1,sizeof(LTE_CQI_ReportPeriodic_t));
+    if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pucch_ConfigDedicated == NULL)
+      UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pucch_ConfigDedicated = CALLOC(1,sizeof(LTE_PUCCH_ConfigDedicated_t));
 
-          memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->cqi_ReportConfig->cqi_ReportPeriodic,
-                  (char*)radioResourceConfigDedicated->physicalConfigDedicated->cqi_ReportConfig->cqi_ReportPeriodic,
-                  sizeof(*physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic));
-        }
-    }
-    else
-    {
-        LOG_I(RRC,"Keep old config for cqi_ReportConfig\n");
-    }
+    memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->pucch_ConfigDedicated,
+           (char *)radioResourceConfigDedicated->physicalConfigDedicated->pucch_ConfigDedicated,
+           sizeof(physicalConfigDedicated2->pucch_ConfigDedicated));
+  } else {
+    LOG_I(RRC,"Keep old config for pucch_ConfigDedicated\n");
+  }
 
-    // Update schedulingRequestConfig
-    if(radioResourceConfigDedicated->physicalConfigDedicated->schedulingRequestConfig != NULL)
-    {
-        LOG_I(RRC,"Update schedulingRequestConfig config \n");
+  // Update cqi_ReportConfig
+  if(radioResourceConfigDedicated->physicalConfigDedicated->cqi_ReportConfig != NULL) {
+    LOG_I(RRC,"Update cqi_ReportConfig config (size=%zu,%zu)\n", sizeof(*physicalConfigDedicated2->cqi_ReportConfig), sizeof(LTE_CQI_ReportConfig_t));
 
-        if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->schedulingRequestConfig == NULL)
-            UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->schedulingRequestConfig = CALLOC(1,sizeof(LTE_SchedulingRequestConfig_t));
+    if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->cqi_ReportConfig == NULL)
+      UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->cqi_ReportConfig = CALLOC(1,sizeof(LTE_CQI_ReportConfig_t));
 
-        memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->schedulingRequestConfig,
-                (char*)radioResourceConfigDedicated->physicalConfigDedicated->schedulingRequestConfig,
-                sizeof(physicalConfigDedicated2->schedulingRequestConfig));
-    }
-    else
-    {
-        LOG_I(RRC,"Keep old config for schedulingRequestConfig\n");
-    }
+    memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->cqi_ReportConfig,
+           (char *)radioResourceConfigDedicated->physicalConfigDedicated->cqi_ReportConfig,
+           sizeof(*physicalConfigDedicated2->cqi_ReportConfig));
 
-    // Update soundingRS_UL_ConfigDedicated
-    if(radioResourceConfigDedicated->physicalConfigDedicated->soundingRS_UL_ConfigDedicated != NULL)
-    {
-        LOG_I(RRC,"Update soundingRS_UL_ConfigDedicated config \n");
+    if (radioResourceConfigDedicated->physicalConfigDedicated->cqi_ReportConfig->cqi_ReportPeriodic != NULL) {
+      LOG_I(RRC,"Update cqi_ReportPeriodic config (size=%zu,%zu)\n", sizeof(*physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic), sizeof(LTE_CQI_ReportPeriodic_t));
 
-        if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->soundingRS_UL_ConfigDedicated == NULL)
-            UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->soundingRS_UL_ConfigDedicated = CALLOC(1,sizeof(LTE_SoundingRS_UL_ConfigDedicated_t));
+      if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->cqi_ReportConfig->cqi_ReportPeriodic == NULL)
+        UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->cqi_ReportConfig->cqi_ReportPeriodic = CALLOC(1,sizeof(LTE_CQI_ReportPeriodic_t));
 
-        memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->soundingRS_UL_ConfigDedicated,
-                (char*)radioResourceConfigDedicated->physicalConfigDedicated->soundingRS_UL_ConfigDedicated,
-                sizeof(physicalConfigDedicated2->soundingRS_UL_ConfigDedicated));
-    }
-    else
-    {
-        LOG_I(RRC,"Keep old config for soundingRS_UL_ConfigDedicated\n");
+      memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->cqi_ReportConfig->cqi_ReportPeriodic,
+             (char *)radioResourceConfigDedicated->physicalConfigDedicated->cqi_ReportConfig->cqi_ReportPeriodic,
+             sizeof(*physicalConfigDedicated2->cqi_ReportConfig->cqi_ReportPeriodic));
     }
+  } else {
+    LOG_I(RRC,"Keep old config for cqi_ReportConfig\n");
+  }
 
-    // Update antennaInfo
-    if(radioResourceConfigDedicated->physicalConfigDedicated->antennaInfo != NULL)
-    {
-        LOG_I(RRC,"Update antennaInfo config \n");
-
-        if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->antennaInfo == NULL)
-            UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->antennaInfo = CALLOC(1,sizeof(struct LTE_PhysicalConfigDedicated__antennaInfo));
-
-        memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->antennaInfo,
-                (char*)radioResourceConfigDedicated->physicalConfigDedicated->antennaInfo,
-                sizeof(physicalConfigDedicated2->antennaInfo));
+  // Update schedulingRequestConfig
+  if(radioResourceConfigDedicated->physicalConfigDedicated->schedulingRequestConfig != NULL) {
+    LOG_I(RRC,"Update schedulingRequestConfig config \n");
 
-        UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->antennaInfo->choice.explicitValue.transmissionMode =
-        		radioResourceConfigDedicated->physicalConfigDedicated->antennaInfo->choice.explicitValue.transmissionMode;
-        UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->antennaInfo->choice.explicitValue.codebookSubsetRestriction =
-        		radioResourceConfigDedicated->physicalConfigDedicated->antennaInfo->choice.explicitValue.codebookSubsetRestriction;
-        UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->antennaInfo->choice.explicitValue.ue_TransmitAntennaSelection =
-        		radioResourceConfigDedicated->physicalConfigDedicated->antennaInfo->choice.explicitValue.ue_TransmitAntennaSelection;
+    if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->schedulingRequestConfig == NULL)
+      UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->schedulingRequestConfig = CALLOC(1,sizeof(LTE_SchedulingRequestConfig_t));
 
-        LOG_I(PHY,"New Transmission Mode %ld \n",radioResourceConfigDedicated->physicalConfigDedicated->antennaInfo->choice.explicitValue.transmissionMode);
-        LOG_I(PHY,"Configured Transmission Mode %ld \n",UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->antennaInfo->choice.explicitValue.transmissionMode);
+    memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->schedulingRequestConfig,
+           (char *)radioResourceConfigDedicated->physicalConfigDedicated->schedulingRequestConfig,
+           sizeof(physicalConfigDedicated2->schedulingRequestConfig));
+  } else {
+    LOG_I(RRC,"Keep old config for schedulingRequestConfig\n");
+  }
 
-    }
-    else
-    {
-        LOG_I(RRC,"Keep old config for antennaInfo\n");
-    }
+  // Update soundingRS_UL_ConfigDedicated
+  if(radioResourceConfigDedicated->physicalConfigDedicated->soundingRS_UL_ConfigDedicated != NULL) {
+    LOG_I(RRC,"Update soundingRS_UL_ConfigDedicated config \n");
 
+    if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->soundingRS_UL_ConfigDedicated == NULL)
+      UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->soundingRS_UL_ConfigDedicated = CALLOC(1,sizeof(LTE_SoundingRS_UL_ConfigDedicated_t));
 
-    // Update uplinkPowerControlDedicated
-    if(radioResourceConfigDedicated->physicalConfigDedicated->uplinkPowerControlDedicated != NULL)
-    {
-        LOG_I(RRC,"Update uplinkPowerControlDedicated config \n");
+    memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->soundingRS_UL_ConfigDedicated,
+           (char *)radioResourceConfigDedicated->physicalConfigDedicated->soundingRS_UL_ConfigDedicated,
+           sizeof(physicalConfigDedicated2->soundingRS_UL_ConfigDedicated));
+  } else {
+    LOG_I(RRC,"Keep old config for soundingRS_UL_ConfigDedicated\n");
+  }
 
-        if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->uplinkPowerControlDedicated == NULL)
-            UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->uplinkPowerControlDedicated = CALLOC(1,sizeof(LTE_UplinkPowerControlDedicated_t));
+  // Update antennaInfo
+  if(radioResourceConfigDedicated->physicalConfigDedicated->antennaInfo != NULL) {
+    LOG_I(RRC,"Update antennaInfo config \n");
+
+    if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->antennaInfo == NULL)
+      UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->antennaInfo = CALLOC(1,sizeof(struct LTE_PhysicalConfigDedicated__antennaInfo));
+
+    memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->antennaInfo,
+           (char *)radioResourceConfigDedicated->physicalConfigDedicated->antennaInfo,
+           sizeof(physicalConfigDedicated2->antennaInfo));
+    UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->antennaInfo->choice.explicitValue.transmissionMode =
+      radioResourceConfigDedicated->physicalConfigDedicated->antennaInfo->choice.explicitValue.transmissionMode;
+    UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->antennaInfo->choice.explicitValue.codebookSubsetRestriction =
+      radioResourceConfigDedicated->physicalConfigDedicated->antennaInfo->choice.explicitValue.codebookSubsetRestriction;
+    UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->antennaInfo->choice.explicitValue.ue_TransmitAntennaSelection =
+      radioResourceConfigDedicated->physicalConfigDedicated->antennaInfo->choice.explicitValue.ue_TransmitAntennaSelection;
+    LOG_I(PHY,"New Transmission Mode %ld \n",radioResourceConfigDedicated->physicalConfigDedicated->antennaInfo->choice.explicitValue.transmissionMode);
+    LOG_I(PHY,"Configured Transmission Mode %ld \n",UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->antennaInfo->choice.explicitValue.transmissionMode);
+  } else {
+    LOG_I(RRC,"Keep old config for antennaInfo\n");
+  }
 
-        memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->uplinkPowerControlDedicated,
-                (char*)radioResourceConfigDedicated->physicalConfigDedicated->uplinkPowerControlDedicated,
-                sizeof(physicalConfigDedicated2->uplinkPowerControlDedicated));
-    }
-    else
-    {
-        LOG_I(RRC,"Keep old config for uplinkPowerControlDedicated\n");
-    }
+  // Update uplinkPowerControlDedicated
+  if(radioResourceConfigDedicated->physicalConfigDedicated->uplinkPowerControlDedicated != NULL) {
+    LOG_I(RRC,"Update uplinkPowerControlDedicated config \n");
 
-    // Update tpc_PDCCH_ConfigPUCCH
-    if(radioResourceConfigDedicated->physicalConfigDedicated->tpc_PDCCH_ConfigPUCCH != NULL)
-    {
-        LOG_I(RRC,"Update tpc_PDCCH_ConfigPUCCH config \n");
+    if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->uplinkPowerControlDedicated == NULL)
+      UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->uplinkPowerControlDedicated = CALLOC(1,sizeof(LTE_UplinkPowerControlDedicated_t));
 
-        if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->tpc_PDCCH_ConfigPUCCH == NULL)
-            UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->tpc_PDCCH_ConfigPUCCH = CALLOC(1,sizeof(LTE_TPC_PDCCH_Config_t));
+    memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->uplinkPowerControlDedicated,
+           (char *)radioResourceConfigDedicated->physicalConfigDedicated->uplinkPowerControlDedicated,
+           sizeof(physicalConfigDedicated2->uplinkPowerControlDedicated));
+  } else {
+    LOG_I(RRC,"Keep old config for uplinkPowerControlDedicated\n");
+  }
 
-        memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->tpc_PDCCH_ConfigPUCCH,
-                (char*)radioResourceConfigDedicated->physicalConfigDedicated->tpc_PDCCH_ConfigPUCCH,
-                sizeof(physicalConfigDedicated2->tpc_PDCCH_ConfigPUCCH));
-    }
-    else
-    {
-        LOG_I(RRC,"Keep old config for tpc_PDCCH_ConfigPUCCH\n");
-    }
+  // Update tpc_PDCCH_ConfigPUCCH
+  if(radioResourceConfigDedicated->physicalConfigDedicated->tpc_PDCCH_ConfigPUCCH != NULL) {
+    LOG_I(RRC,"Update tpc_PDCCH_ConfigPUCCH config \n");
 
-    // Update tpc_PDCCH_ConfigPUSCH
-    if(radioResourceConfigDedicated->physicalConfigDedicated->tpc_PDCCH_ConfigPUSCH != NULL)
-    {
-        LOG_I(RRC,"Update tpc_PDCCH_ConfigPUSCH config \n");
+    if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->tpc_PDCCH_ConfigPUCCH == NULL)
+      UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->tpc_PDCCH_ConfigPUCCH = CALLOC(1,sizeof(LTE_TPC_PDCCH_Config_t));
 
-        if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->tpc_PDCCH_ConfigPUSCH == NULL)
-            UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->tpc_PDCCH_ConfigPUSCH = CALLOC(1,sizeof(LTE_TPC_PDCCH_Config_t));
+    memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->tpc_PDCCH_ConfigPUCCH,
+           (char *)radioResourceConfigDedicated->physicalConfigDedicated->tpc_PDCCH_ConfigPUCCH,
+           sizeof(physicalConfigDedicated2->tpc_PDCCH_ConfigPUCCH));
+  } else {
+    LOG_I(RRC,"Keep old config for tpc_PDCCH_ConfigPUCCH\n");
+  }
 
-        memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->tpc_PDCCH_ConfigPUSCH,
-                (char*)radioResourceConfigDedicated->physicalConfigDedicated->tpc_PDCCH_ConfigPUSCH,
-                sizeof(physicalConfigDedicated2->tpc_PDCCH_ConfigPUSCH));
+  // Update tpc_PDCCH_ConfigPUSCH
+  if(radioResourceConfigDedicated->physicalConfigDedicated->tpc_PDCCH_ConfigPUSCH != NULL) {
+    LOG_I(RRC,"Update tpc_PDCCH_ConfigPUSCH config \n");
 
-    }
-    else
-    {
-        LOG_I(RRC,"Keep old config for tpc_PDCCH_ConfigPUSCH\n");
-    }
+    if(UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->tpc_PDCCH_ConfigPUSCH == NULL)
+      UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->tpc_PDCCH_ConfigPUSCH = CALLOC(1,sizeof(LTE_TPC_PDCCH_Config_t));
 
+    memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]->tpc_PDCCH_ConfigPUSCH,
+           (char *)radioResourceConfigDedicated->physicalConfigDedicated->tpc_PDCCH_ConfigPUSCH,
+           sizeof(physicalConfigDedicated2->tpc_PDCCH_ConfigPUSCH));
+  } else {
+    LOG_I(RRC,"Keep old config for tpc_PDCCH_ConfigPUSCH\n");
+  }
 }
 //-----------------------------------------------------------------------------
 void
 rrc_ue_process_radioResourceConfigDedicated(
-  const protocol_ctxt_t* const ctxt_pP,
+  const protocol_ctxt_t *const ctxt_pP,
   uint8_t eNB_index,
-  LTE_RadioResourceConfigDedicated_t* radioResourceConfigDedicated
+  LTE_RadioResourceConfigDedicated_t *radioResourceConfigDedicated
 )
 //-----------------------------------------------------------------------------
 {
-
   long SRB_id,DRB_id;
   int i,cnt;
   LTE_LogicalChannelConfig_t *SRB1_logicalChannelConfig,*SRB2_logicalChannelConfig;
@@ -1413,9 +1246,9 @@ rrc_ue_process_radioResourceConfigDedicated(
 
     if (UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index]) {
 #if 1
-        rrc_ue_update_radioResourceConfigDedicated(radioResourceConfigDedicated, ctxt_pP, eNB_index);
+      rrc_ue_update_radioResourceConfigDedicated(radioResourceConfigDedicated, ctxt_pP, eNB_index);
 #else
-      memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index],(char*)radioResourceConfigDedicated->physicalConfigDedicated,
+      memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index],(char *)radioResourceConfigDedicated->physicalConfigDedicated,
              sizeof(struct PhysicalConfigDedicated));
 #endif
     } else {
@@ -1428,7 +1261,7 @@ rrc_ue_process_radioResourceConfigDedicated(
   if (radioResourceConfigDedicated->mac_MainConfig) {
     if (radioResourceConfigDedicated->mac_MainConfig->present == LTE_RadioResourceConfigDedicated__mac_MainConfig_PR_explicitValue) {
       if (UE_rrc_inst[ctxt_pP->module_id].mac_MainConfig[eNB_index]) {
-        memcpy((char*)UE_rrc_inst[ctxt_pP->module_id].mac_MainConfig[eNB_index],(char*)&radioResourceConfigDedicated->mac_MainConfig->choice.explicitValue,
+        memcpy((char *)UE_rrc_inst[ctxt_pP->module_id].mac_MainConfig[eNB_index],(char *)&radioResourceConfigDedicated->mac_MainConfig->choice.explicitValue,
                sizeof(LTE_MAC_MainConfig_t));
       } else {
         UE_rrc_inst[ctxt_pP->module_id].mac_MainConfig[eNB_index] = &radioResourceConfigDedicated->mac_MainConfig->choice.explicitValue;
@@ -1476,7 +1309,6 @@ rrc_ue_process_radioResourceConfigDedicated(
   if (radioResourceConfigDedicated->srb_ToAddModList) {
     uint8_t *kRRCenc = NULL;
     uint8_t *kRRCint = NULL;
-
 #if defined(ENABLE_SECURITY)
     derive_key_rrc_enc(UE_rrc_inst[ctxt_pP->module_id].ciphering_algorithm,
                        UE_rrc_inst[ctxt_pP->module_id].kenb, &kRRCenc);
@@ -1486,8 +1318,8 @@ rrc_ue_process_radioResourceConfigDedicated(
     // Refresh SRBs
     rrc_pdcp_config_asn1_req(ctxt_pP,
                              radioResourceConfigDedicated->srb_ToAddModList,
-                             (LTE_DRB_ToAddModList_t*)NULL,
-                             (LTE_DRB_ToReleaseList_t*)NULL,
+                             (LTE_DRB_ToAddModList_t *)NULL,
+                             (LTE_DRB_ToReleaseList_t *)NULL,
                              UE_rrc_inst[ctxt_pP->module_id].ciphering_algorithm |
                              (UE_rrc_inst[ctxt_pP->module_id].integrity_algorithm << 4),
                              kRRCenc,
@@ -1497,18 +1329,16 @@ rrc_ue_process_radioResourceConfigDedicated(
                              ,(LTE_PMCH_InfoList_r9_t *)NULL
 #endif
                              ,NULL);
-
     // Refresh SRBs
     rrc_rlc_config_asn1_req(ctxt_pP,
                             radioResourceConfigDedicated->srb_ToAddModList,
-                            (LTE_DRB_ToAddModList_t*)NULL,
-                            (LTE_DRB_ToReleaseList_t*)NULL
+                            (LTE_DRB_ToAddModList_t *)NULL,
+                            (LTE_DRB_ToReleaseList_t *)NULL
 #if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0))
                             ,(LTE_PMCH_InfoList_r9_t *)NULL
                             , 0, 0
 #endif
                            );
-
 #if ENABLE_RAL
     // first msg that includes srb config
     UE_rrc_inst[ctxt_pP->module_id].num_srb=radioResourceConfigDedicated->srb_ToAddModList->list.count;
@@ -1530,7 +1360,6 @@ rrc_ue_process_radioResourceConfigDedicated(
           if (UE_rrc_inst[ctxt_pP->module_id].SRB1_config[eNB_index]->logicalChannelConfig) {
             if (UE_rrc_inst[ctxt_pP->module_id].SRB1_config[eNB_index]->logicalChannelConfig->present == LTE_SRB_ToAddMod__logicalChannelConfig_PR_explicitValue) {
               SRB1_logicalChannelConfig = &UE_rrc_inst[ctxt_pP->module_id].SRB1_config[eNB_index]->logicalChannelConfig->choice.explicitValue;
-
             } else {
               SRB1_logicalChannelConfig = &SRB1_logicalChannelConfig_defaultValue;
             }
@@ -1540,45 +1369,44 @@ rrc_ue_process_radioResourceConfigDedicated(
 
           LOG_I(RRC, "[FRAME %05d][RRC_UE][MOD %02d][][--- MAC_CONFIG_REQ  (SRB1 eNB %d) --->][MAC_UE][MOD %02d][]\n",
                 ctxt_pP->frame, ctxt_pP->module_id, eNB_index, ctxt_pP->module_id);
-
           rrc_mac_config_req_ue(ctxt_pP->module_id,0,eNB_index,
-				(LTE_RadioResourceConfigCommonSIB_t *)NULL,
-				UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index],
+                                (LTE_RadioResourceConfigCommonSIB_t *)NULL,
+                                UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index],
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-				(LTE_SCellToAddMod_r10_t *)NULL,
-				//struct PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10,
-#endif
-				(LTE_MeasObjectToAddMod_t **)NULL,
-				UE_rrc_inst[ctxt_pP->module_id].mac_MainConfig[eNB_index],
-				1,
-				SRB1_logicalChannelConfig,
-				(LTE_MeasGapConfig_t *)NULL,
-				NULL,
-				NULL,
-				NULL,
-				NULL,
-				NULL,
-				NULL,
-				NULL,
-				NULL
+                                (LTE_SCellToAddMod_r10_t *)NULL,
+                                //struct PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10,
+#endif
+                                (LTE_MeasObjectToAddMod_t **)NULL,
+                                UE_rrc_inst[ctxt_pP->module_id].mac_MainConfig[eNB_index],
+                                1,
+                                SRB1_logicalChannelConfig,
+                                (LTE_MeasGapConfig_t *)NULL,
+                                NULL,
+                                NULL,
+                                NULL,
+                                NULL,
+                                NULL,
+                                NULL,
+                                NULL,
+                                NULL
 #if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0))
-				,
-				0,
-				(LTE_MBSFN_AreaInfoList_r9_t *)NULL,
-				(LTE_PMCH_InfoList_r9_t *)NULL
+                                ,
+                                0,
+                                (LTE_MBSFN_AreaInfoList_r9_t *)NULL,
+                                (LTE_PMCH_InfoList_r9_t *)NULL
 #endif
 #ifdef CBA
-				,
-				0,
-				0
+                                ,
+                                0,
+                                0
 #endif
 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-           ,
-           0,
-           NULL,
-           NULL
+                                ,
+                                0,
+                                NULL,
+                                NULL
 #endif
-				);
+                               );
         }
       } else {
         if (UE_rrc_inst[ctxt_pP->module_id].SRB2_config[eNB_index]) {
@@ -1606,44 +1434,43 @@ rrc_ue_process_radioResourceConfigDedicated(
                 eNB_index,
                 ctxt_pP->module_id);
           rrc_mac_config_req_ue(ctxt_pP->module_id,0,eNB_index,
-				(LTE_RadioResourceConfigCommonSIB_t *)NULL,
-				UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index],
+                                (LTE_RadioResourceConfigCommonSIB_t *)NULL,
+                                UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index],
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-				(LTE_SCellToAddMod_r10_t *)NULL,
-				//struct PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10,
-#endif
-				(LTE_MeasObjectToAddMod_t **)NULL,
-				UE_rrc_inst[ctxt_pP->module_id].mac_MainConfig[eNB_index],
-				2,
-				SRB2_logicalChannelConfig,
-				UE_rrc_inst[ctxt_pP->module_id].measGapConfig[eNB_index],
-				(LTE_TDD_Config_t *)NULL,
-				(LTE_MobilityControlInfo_t *)NULL,
-				NULL,
-				NULL,
-				NULL,
-				NULL,
-				NULL,
-				NULL
+                                (LTE_SCellToAddMod_r10_t *)NULL,
+                                //struct PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10,
+#endif
+                                (LTE_MeasObjectToAddMod_t **)NULL,
+                                UE_rrc_inst[ctxt_pP->module_id].mac_MainConfig[eNB_index],
+                                2,
+                                SRB2_logicalChannelConfig,
+                                UE_rrc_inst[ctxt_pP->module_id].measGapConfig[eNB_index],
+                                (LTE_TDD_Config_t *)NULL,
+                                (LTE_MobilityControlInfo_t *)NULL,
+                                NULL,
+                                NULL,
+                                NULL,
+                                NULL,
+                                NULL,
+                                NULL
 #if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0))
-				,
-				0,
-				(LTE_MBSFN_AreaInfoList_r9_t *)NULL,
-				(LTE_PMCH_InfoList_r9_t *)NULL
-
+                                ,
+                                0,
+                                (LTE_MBSFN_AreaInfoList_r9_t *)NULL,
+                                (LTE_PMCH_InfoList_r9_t *)NULL
 #endif
 #ifdef CBA
-				,
-				0,
-				0
+                                ,
+                                0,
+                                0
 #endif
 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-           ,
-           0,
-           NULL,
-           NULL
+                                ,
+                                0,
+                                NULL,
+                                NULL
 #endif
-				);
+                               );
         }
       }
     }
@@ -1651,22 +1478,19 @@ rrc_ue_process_radioResourceConfigDedicated(
 
   // Establish DRBs if present
   if (radioResourceConfigDedicated->drb_ToAddModList) {
-
     if ( (UE_rrc_inst[ctxt_pP->module_id].defaultDRB == NULL) &&
          (radioResourceConfigDedicated->drb_ToAddModList->list.count >= 1) ) {
-        // configure the first DRB ID as the default DRB ID
-        UE_rrc_inst[ctxt_pP->module_id].defaultDRB = malloc(sizeof(rb_id_t));
-        *UE_rrc_inst[ctxt_pP->module_id].defaultDRB = radioResourceConfigDedicated->drb_ToAddModList->list.array[0]->drb_Identity;
-        LOG_I(RRC,"[UE %d] default DRB = %d\n",ctxt_pP->module_id, *UE_rrc_inst[ctxt_pP->module_id].defaultDRB);
-      }
+      // configure the first DRB ID as the default DRB ID
+      UE_rrc_inst[ctxt_pP->module_id].defaultDRB = malloc(sizeof(rb_id_t));
+      *UE_rrc_inst[ctxt_pP->module_id].defaultDRB = radioResourceConfigDedicated->drb_ToAddModList->list.array[0]->drb_Identity;
+      LOG_I(RRC,"[UE %d] default DRB = %d\n",ctxt_pP->module_id, *UE_rrc_inst[ctxt_pP->module_id].defaultDRB);
+    }
 
     uint8_t *kUPenc = NULL;
-
 #if defined(ENABLE_SECURITY)
     derive_key_up_enc(UE_rrc_inst[ctxt_pP->module_id].integrity_algorithm,
                       UE_rrc_inst[ctxt_pP->module_id].kenb, &kUPenc);
 #endif
-
     MSC_LOG_TX_MESSAGE(
       MSC_RRC_UE,
       MSC_PDCP_UE,
@@ -1677,12 +1501,11 @@ rrc_ue_process_radioResourceConfigDedicated(
       ctxt_pP->rnti,
       UE_rrc_inst[ctxt_pP->module_id].ciphering_algorithm |
       (UE_rrc_inst[ctxt_pP->module_id].integrity_algorithm << 4));
-
     // Refresh DRBs
     rrc_pdcp_config_asn1_req(ctxt_pP,
-                             (LTE_SRB_ToAddModList_t*)NULL,
+                             (LTE_SRB_ToAddModList_t *)NULL,
                              radioResourceConfigDedicated->drb_ToAddModList,
-                             (LTE_DRB_ToReleaseList_t*)NULL,
+                             (LTE_DRB_ToReleaseList_t *)NULL,
                              UE_rrc_inst[ctxt_pP->module_id].ciphering_algorithm |
                              (UE_rrc_inst[ctxt_pP->module_id].integrity_algorithm << 4),
                              NULL,
@@ -1692,12 +1515,11 @@ rrc_ue_process_radioResourceConfigDedicated(
                              ,(LTE_PMCH_InfoList_r9_t *)NULL
 #endif
                              , UE_rrc_inst[ctxt_pP->module_id].defaultDRB);
-
     // Refresh DRBs
     rrc_rlc_config_asn1_req(ctxt_pP,
-                            (LTE_SRB_ToAddModList_t*)NULL,
+                            (LTE_SRB_ToAddModList_t *)NULL,
                             radioResourceConfigDedicated->drb_ToAddModList,
-                            (LTE_DRB_ToReleaseList_t*)NULL
+                            (LTE_DRB_ToReleaseList_t *)NULL
 #if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0))
                             ,(LTE_PMCH_InfoList_r9_t *)NULL
                             , 0, 0
@@ -1721,44 +1543,43 @@ rrc_ue_process_radioResourceConfigDedicated(
               eNB_index,
               ctxt_pP->module_id);
         rrc_mac_config_req_ue(ctxt_pP->module_id,0,eNB_index,
-			      (LTE_RadioResourceConfigCommonSIB_t *)NULL,
-			      UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index],
+                              (LTE_RadioResourceConfigCommonSIB_t *)NULL,
+                              UE_rrc_inst[ctxt_pP->module_id].physicalConfigDedicated[eNB_index],
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-			      (LTE_SCellToAddMod_r10_t *)NULL,
-			      //struct PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10,
-#endif
-			      (LTE_MeasObjectToAddMod_t **)NULL,
-			      UE_rrc_inst[ctxt_pP->module_id].mac_MainConfig[eNB_index],
-			      *UE_rrc_inst[ctxt_pP->module_id].DRB_config[eNB_index][DRB_id]->logicalChannelIdentity,
-			      UE_rrc_inst[ctxt_pP->module_id].DRB_config[eNB_index][DRB_id]->logicalChannelConfig,
-			      UE_rrc_inst[ctxt_pP->module_id].measGapConfig[eNB_index],
-			      (LTE_TDD_Config_t*)NULL,
-			      (LTE_MobilityControlInfo_t *)NULL,
-			      NULL,
-			      NULL,
-			      NULL,
-			      NULL,
-			      NULL,
-			      NULL
+                              (LTE_SCellToAddMod_r10_t *)NULL,
+                              //struct PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10,
+#endif
+                              (LTE_MeasObjectToAddMod_t **)NULL,
+                              UE_rrc_inst[ctxt_pP->module_id].mac_MainConfig[eNB_index],
+                              *UE_rrc_inst[ctxt_pP->module_id].DRB_config[eNB_index][DRB_id]->logicalChannelIdentity,
+                              UE_rrc_inst[ctxt_pP->module_id].DRB_config[eNB_index][DRB_id]->logicalChannelConfig,
+                              UE_rrc_inst[ctxt_pP->module_id].measGapConfig[eNB_index],
+                              (LTE_TDD_Config_t *)NULL,
+                              (LTE_MobilityControlInfo_t *)NULL,
+                              NULL,
+                              NULL,
+                              NULL,
+                              NULL,
+                              NULL,
+                              NULL
 #if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0))
-			      ,
-			      0,
-			      (LTE_MBSFN_AreaInfoList_r9_t *)NULL,
-			      (LTE_PMCH_InfoList_r9_t *)NULL
+                              ,
+                              0,
+                              (LTE_MBSFN_AreaInfoList_r9_t *)NULL,
+                              (LTE_PMCH_InfoList_r9_t *)NULL
 #endif
 #ifdef CBA
-			      ,
-			      UE_rrc_inst[ue_mod_idP].num_active_cba_groups, //
-			      UE_rrc_inst[ue_mod_idP].cba_rnti[0]
+                              ,
+                              UE_rrc_inst[ue_mod_idP].num_active_cba_groups, //
+                              UE_rrc_inst[ue_mod_idP].cba_rnti[0]
 #endif
 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-           ,
-           0,
-           NULL,
-           NULL
+                              ,
+                              0,
+                              NULL,
+                              NULL
 #endif
-			      );
-
+                             );
       }
     }
   }
@@ -1771,86 +1592,79 @@ rrc_ue_process_radioResourceConfigDedicated(
 //-----------------------------------------------------------------------------
 void
 rrc_ue_process_securityModeCommand(
-  const protocol_ctxt_t* const ctxt_pP,
-  LTE_SecurityModeCommand_t* const securityModeCommand,
+  const protocol_ctxt_t *const ctxt_pP,
+  LTE_SecurityModeCommand_t *const securityModeCommand,
   const uint8_t                eNB_index
 )
 //-----------------------------------------------------------------------------
 {
-
   asn_enc_rval_t enc_rval;
-
   LTE_UL_DCCH_Message_t ul_dcch_msg;
   // SecurityModeCommand_t SecurityModeCommand;
   uint8_t buffer[200];
   int i, securityMode;
-
   LOG_I(RRC,"[UE %d] SFN/SF %d/%d: Receiving from SRB1 (DL-DCCH), Processing securityModeCommand (eNB %d)\n",
         ctxt_pP->module_id,ctxt_pP->frame, ctxt_pP->subframe, eNB_index);
 
   switch (securityModeCommand->criticalExtensions.choice.c1.choice.securityModeCommand_r8.securityConfigSMC.securityAlgorithmConfig.cipheringAlgorithm) {
-  case LTE_CipheringAlgorithm_r12_eea0:
-    LOG_I(RRC,"[UE %d] Security algorithm is set to eea0\n",
-          ctxt_pP->module_id);
-    securityMode= LTE_CipheringAlgorithm_r12_eea0;
-    break;
-
-  case LTE_CipheringAlgorithm_r12_eea1:
-    LOG_I(RRC,"[UE %d] Security algorithm is set to eea1\n",ctxt_pP->module_id);
-    securityMode= LTE_CipheringAlgorithm_r12_eea1;
-    break;
-
-  case LTE_CipheringAlgorithm_r12_eea2:
-    LOG_I(RRC,"[UE %d] Security algorithm is set to eea2\n",
-          ctxt_pP->module_id);
-    securityMode = LTE_CipheringAlgorithm_r12_eea2;
-    break;
-
-  default:
-    LOG_I(RRC,"[UE %d] Security algorithm is set to none\n",ctxt_pP->module_id);
-    securityMode = LTE_CipheringAlgorithm_r12_spare1;
-    break;
+    case LTE_CipheringAlgorithm_r12_eea0:
+      LOG_I(RRC,"[UE %d] Security algorithm is set to eea0\n",
+            ctxt_pP->module_id);
+      securityMode= LTE_CipheringAlgorithm_r12_eea0;
+      break;
+
+    case LTE_CipheringAlgorithm_r12_eea1:
+      LOG_I(RRC,"[UE %d] Security algorithm is set to eea1\n",ctxt_pP->module_id);
+      securityMode= LTE_CipheringAlgorithm_r12_eea1;
+      break;
+
+    case LTE_CipheringAlgorithm_r12_eea2:
+      LOG_I(RRC,"[UE %d] Security algorithm is set to eea2\n",
+            ctxt_pP->module_id);
+      securityMode = LTE_CipheringAlgorithm_r12_eea2;
+      break;
+
+    default:
+      LOG_I(RRC,"[UE %d] Security algorithm is set to none\n",ctxt_pP->module_id);
+      securityMode = LTE_CipheringAlgorithm_r12_spare1;
+      break;
   }
 
   switch (securityModeCommand->criticalExtensions.choice.c1.choice.securityModeCommand_r8.securityConfigSMC.securityAlgorithmConfig.integrityProtAlgorithm) {
-  case LTE_SecurityAlgorithmConfig__integrityProtAlgorithm_eia1:
-    LOG_I(RRC,"[UE %d] Integrity protection algorithm is set to eia1\n",ctxt_pP->module_id);
-    securityMode |= 1 << 5;
-    break;
-
-  case LTE_SecurityAlgorithmConfig__integrityProtAlgorithm_eia2:
-    LOG_I(RRC,"[UE %d] Integrity protection algorithm is set to eia2\n",ctxt_pP->module_id);
-    securityMode |= 1 << 6;
-    break;
-
-  default:
-    LOG_I(RRC,"[UE %d] Integrity protection algorithm is set to none\n",ctxt_pP->module_id);
-    securityMode |= 0x70 ;
-    break;
+    case LTE_SecurityAlgorithmConfig__integrityProtAlgorithm_eia1:
+      LOG_I(RRC,"[UE %d] Integrity protection algorithm is set to eia1\n",ctxt_pP->module_id);
+      securityMode |= 1 << 5;
+      break;
+
+    case LTE_SecurityAlgorithmConfig__integrityProtAlgorithm_eia2:
+      LOG_I(RRC,"[UE %d] Integrity protection algorithm is set to eia2\n",ctxt_pP->module_id);
+      securityMode |= 1 << 6;
+      break;
+
+    default:
+      LOG_I(RRC,"[UE %d] Integrity protection algorithm is set to none\n",ctxt_pP->module_id);
+      securityMode |= 0x70 ;
+      break;
   }
 
   LOG_D(RRC,"[UE %d] security mode is %x \n",ctxt_pP->module_id, securityMode);
-
   /* Store the parameters received */
   UE_rrc_inst[ctxt_pP->module_id].ciphering_algorithm =
     securityModeCommand->criticalExtensions.choice.c1.choice.securityModeCommand_r8.securityConfigSMC.securityAlgorithmConfig.cipheringAlgorithm;
   UE_rrc_inst[ctxt_pP->module_id].integrity_algorithm =
     securityModeCommand->criticalExtensions.choice.c1.choice.securityModeCommand_r8.securityConfigSMC.securityAlgorithmConfig.integrityProtAlgorithm;
-
   memset((void *)&ul_dcch_msg,0,sizeof(LTE_UL_DCCH_Message_t));
   //memset((void *)&SecurityModeCommand,0,sizeof(SecurityModeCommand_t));
-
   ul_dcch_msg.message.present           = LTE_UL_DCCH_MessageType_PR_c1;
 
   if (securityMode >= NO_SECURITY_MODE) {
-	  LOG_I(RRC, "rrc_ue_process_securityModeCommand, security mode complete case \n");
+    LOG_I(RRC, "rrc_ue_process_securityModeCommand, security mode complete case \n");
     ul_dcch_msg.message.choice.c1.present = LTE_UL_DCCH_MessageType__c1_PR_securityModeComplete;
   } else {
-	  LOG_I(RRC, "rrc_ue_process_securityModeCommand, security mode failure case \n");
+    LOG_I(RRC, "rrc_ue_process_securityModeCommand, security mode failure case \n");
     ul_dcch_msg.message.choice.c1.present = LTE_UL_DCCH_MessageType__c1_PR_securityModeFailure;
   }
 
-
 #if defined(ENABLE_SECURITY)
   uint8_t *kRRCenc = NULL;
   uint8_t *kUPenc = NULL;
@@ -1858,47 +1672,44 @@ rrc_ue_process_securityModeCommand(
   pdcp_t *pdcp_p = NULL;
   hash_key_t key = HASHTABLE_NOT_A_KEY_VALUE;
   hashtable_rc_t h_rc;
-
   key = PDCP_COLL_KEY_VALUE(ctxt_pP->module_id, ctxt_pP->rnti,
-      ctxt_pP->enb_flag, DCCH, SRB_FLAG_YES);
-  h_rc = hashtable_get(pdcp_coll_p, key, (void**) &pdcp_p);
+                            ctxt_pP->enb_flag, DCCH, SRB_FLAG_YES);
+  h_rc = hashtable_get(pdcp_coll_p, key, (void **) &pdcp_p);
 
   if (h_rc == HASH_TABLE_OK) {
     LOG_D(RRC, "PDCP_COLL_KEY_VALUE() returns valid key = %ld\n", key);
-
     LOG_D(RRC, "driving kRRCenc, kRRCint and kUPenc from KeNB="
-        "%02x%02x%02x%02x"
-        "%02x%02x%02x%02x"
-        "%02x%02x%02x%02x"
-        "%02x%02x%02x%02x"
-        "%02x%02x%02x%02x"
-        "%02x%02x%02x%02x"
-        "%02x%02x%02x%02x"
-        "%02x%02x%02x%02x\n",
-        UE_rrc_inst[ctxt_pP->module_id].kenb[0],  UE_rrc_inst[ctxt_pP->module_id].kenb[1],  UE_rrc_inst[ctxt_pP->module_id].kenb[2],  UE_rrc_inst[ctxt_pP->module_id].kenb[3],
-        UE_rrc_inst[ctxt_pP->module_id].kenb[4],  UE_rrc_inst[ctxt_pP->module_id].kenb[5],  UE_rrc_inst[ctxt_pP->module_id].kenb[6],  UE_rrc_inst[ctxt_pP->module_id].kenb[7],
-        UE_rrc_inst[ctxt_pP->module_id].kenb[8],  UE_rrc_inst[ctxt_pP->module_id].kenb[9],  UE_rrc_inst[ctxt_pP->module_id].kenb[10], UE_rrc_inst[ctxt_pP->module_id].kenb[11],
-        UE_rrc_inst[ctxt_pP->module_id].kenb[12], UE_rrc_inst[ctxt_pP->module_id].kenb[13], UE_rrc_inst[ctxt_pP->module_id].kenb[14], UE_rrc_inst[ctxt_pP->module_id].kenb[15],
-        UE_rrc_inst[ctxt_pP->module_id].kenb[16], UE_rrc_inst[ctxt_pP->module_id].kenb[17], UE_rrc_inst[ctxt_pP->module_id].kenb[18], UE_rrc_inst[ctxt_pP->module_id].kenb[19],
-        UE_rrc_inst[ctxt_pP->module_id].kenb[20], UE_rrc_inst[ctxt_pP->module_id].kenb[21], UE_rrc_inst[ctxt_pP->module_id].kenb[22], UE_rrc_inst[ctxt_pP->module_id].kenb[23],
-        UE_rrc_inst[ctxt_pP->module_id].kenb[24], UE_rrc_inst[ctxt_pP->module_id].kenb[25], UE_rrc_inst[ctxt_pP->module_id].kenb[26], UE_rrc_inst[ctxt_pP->module_id].kenb[27],
-        UE_rrc_inst[ctxt_pP->module_id].kenb[28], UE_rrc_inst[ctxt_pP->module_id].kenb[29], UE_rrc_inst[ctxt_pP->module_id].kenb[30], UE_rrc_inst[ctxt_pP->module_id].kenb[31]);
-
+          "%02x%02x%02x%02x"
+          "%02x%02x%02x%02x"
+          "%02x%02x%02x%02x"
+          "%02x%02x%02x%02x"
+          "%02x%02x%02x%02x"
+          "%02x%02x%02x%02x"
+          "%02x%02x%02x%02x"
+          "%02x%02x%02x%02x\n",
+          UE_rrc_inst[ctxt_pP->module_id].kenb[0],  UE_rrc_inst[ctxt_pP->module_id].kenb[1],  UE_rrc_inst[ctxt_pP->module_id].kenb[2],  UE_rrc_inst[ctxt_pP->module_id].kenb[3],
+          UE_rrc_inst[ctxt_pP->module_id].kenb[4],  UE_rrc_inst[ctxt_pP->module_id].kenb[5],  UE_rrc_inst[ctxt_pP->module_id].kenb[6],  UE_rrc_inst[ctxt_pP->module_id].kenb[7],
+          UE_rrc_inst[ctxt_pP->module_id].kenb[8],  UE_rrc_inst[ctxt_pP->module_id].kenb[9],  UE_rrc_inst[ctxt_pP->module_id].kenb[10], UE_rrc_inst[ctxt_pP->module_id].kenb[11],
+          UE_rrc_inst[ctxt_pP->module_id].kenb[12], UE_rrc_inst[ctxt_pP->module_id].kenb[13], UE_rrc_inst[ctxt_pP->module_id].kenb[14], UE_rrc_inst[ctxt_pP->module_id].kenb[15],
+          UE_rrc_inst[ctxt_pP->module_id].kenb[16], UE_rrc_inst[ctxt_pP->module_id].kenb[17], UE_rrc_inst[ctxt_pP->module_id].kenb[18], UE_rrc_inst[ctxt_pP->module_id].kenb[19],
+          UE_rrc_inst[ctxt_pP->module_id].kenb[20], UE_rrc_inst[ctxt_pP->module_id].kenb[21], UE_rrc_inst[ctxt_pP->module_id].kenb[22], UE_rrc_inst[ctxt_pP->module_id].kenb[23],
+          UE_rrc_inst[ctxt_pP->module_id].kenb[24], UE_rrc_inst[ctxt_pP->module_id].kenb[25], UE_rrc_inst[ctxt_pP->module_id].kenb[26], UE_rrc_inst[ctxt_pP->module_id].kenb[27],
+          UE_rrc_inst[ctxt_pP->module_id].kenb[28], UE_rrc_inst[ctxt_pP->module_id].kenb[29], UE_rrc_inst[ctxt_pP->module_id].kenb[30], UE_rrc_inst[ctxt_pP->module_id].kenb[31]);
     derive_key_rrc_enc(UE_rrc_inst[ctxt_pP->module_id].ciphering_algorithm,
-        UE_rrc_inst[ctxt_pP->module_id].kenb, &kRRCenc);
+                       UE_rrc_inst[ctxt_pP->module_id].kenb, &kRRCenc);
     derive_key_rrc_int(UE_rrc_inst[ctxt_pP->module_id].integrity_algorithm,
-        UE_rrc_inst[ctxt_pP->module_id].kenb, &kRRCint);
+                       UE_rrc_inst[ctxt_pP->module_id].kenb, &kRRCint);
     derive_key_up_enc(UE_rrc_inst[ctxt_pP->module_id].ciphering_algorithm,
-        UE_rrc_inst[ctxt_pP->module_id].kenb, &kUPenc);
+                      UE_rrc_inst[ctxt_pP->module_id].kenb, &kUPenc);
 
     if (securityMode != 0xff) {
       pdcp_config_set_security(ctxt_pP, pdcp_p, 0, 0,
-          UE_rrc_inst[ctxt_pP->module_id].ciphering_algorithm
-              | (UE_rrc_inst[ctxt_pP->module_id].integrity_algorithm << 4),
-          kRRCenc, kRRCint, kUPenc);
+                               UE_rrc_inst[ctxt_pP->module_id].ciphering_algorithm
+                               | (UE_rrc_inst[ctxt_pP->module_id].integrity_algorithm << 4),
+                               kRRCenc, kRRCint, kUPenc);
     } else {
       LOG_I(RRC, "skipped pdcp_config_set_security() as securityMode == 0x%02x",
-          securityMode);
+            securityMode);
     }
   } else {
     LOG_I(RRC, "Could not get PDCP instance where key=0x%ld\n", key);
@@ -1909,174 +1720,110 @@ rrc_ue_process_securityModeCommand(
   if (securityModeCommand->criticalExtensions.present == LTE_SecurityModeCommand__criticalExtensions_PR_c1) {
     if (securityModeCommand->criticalExtensions.choice.c1.present != LTE_SecurityModeCommand__criticalExtensions__c1_PR_securityModeCommand_r8)
       LOG_W(RRC,"securityModeCommand->criticalExtensions.choice.c1.present (%d) != SecurityModeCommand__criticalExtensions__c1_PR_securityModeCommand_r8\n",
-	    securityModeCommand->criticalExtensions.choice.c1.present);
-    
-    
+            securityModeCommand->criticalExtensions.choice.c1.present);
+
     ul_dcch_msg.message.choice.c1.choice.securityModeComplete.rrc_TransactionIdentifier = securityModeCommand->rrc_TransactionIdentifier;
     ul_dcch_msg.message.choice.c1.choice.securityModeComplete.criticalExtensions.present = LTE_SecurityModeCommand__criticalExtensions_PR_c1;
     ul_dcch_msg.message.choice.c1.choice.securityModeComplete.criticalExtensions.choice.securityModeComplete_r8.nonCriticalExtension =NULL;
-    
     LOG_I(RRC,"[UE %d] SFN/SF %d/%d: Receiving from SRB1 (DL-DCCH), encoding securityModeComplete (eNB %d), rrc_TransactionIdentifier: %ld\n",
-	  ctxt_pP->module_id,ctxt_pP->frame, ctxt_pP->subframe, eNB_index, securityModeCommand->rrc_TransactionIdentifier);
-    
+          ctxt_pP->module_id,ctxt_pP->frame, ctxt_pP->subframe, eNB_index, securityModeCommand->rrc_TransactionIdentifier);
     enc_rval = uper_encode_to_buffer(&asn_DEF_LTE_UL_DCCH_Message,
                                      NULL,
-				     (void*)&ul_dcch_msg,
-				     buffer,
-				     100);
+                                     (void *)&ul_dcch_msg,
+                                     buffer,
+                                     100);
     AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %jd)!\n",
-		 enc_rval.failed_type->name, enc_rval.encoded);
-    
+                 enc_rval.failed_type->name, enc_rval.encoded);
+
     if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
-       xer_fprint(stdout, &asn_DEF_LTE_UL_DCCH_Message, (void*)&ul_dcch_msg);
-    }
-    
-#if defined(ENABLE_ITTI)
-# if !defined(DISABLE_XER_SPRINT)
-    {
-      char        message_string[20000];
-      size_t      message_string_size;
-      
-      if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_LTE_UL_DCCH_Message, (void *) &ul_dcch_msg)) > 0) {
-	MessageDef *msg_p;
-	
-	msg_p = itti_alloc_new_message_sized (TASK_RRC_UE, RRC_UL_DCCH, message_string_size + sizeof (IttiMsgText));
-	msg_p->ittiMsg.rrc_ul_dcch.size = message_string_size;
-	memcpy(&msg_p->ittiMsg.rrc_ul_dcch.text, message_string, message_string_size);
-	
-	itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
-      }
+      xer_fprint(stdout, &asn_DEF_LTE_UL_DCCH_Message, (void *)&ul_dcch_msg);
     }
-# endif
-#endif
 
-      LOG_D(RRC, "securityModeComplete Encoded %zd bits (%zd bytes)\n", enc_rval.encoded, (enc_rval.encoded+7)/8);
+    LOG_D(RRC, "securityModeComplete Encoded %zd bits (%zd bytes)\n", enc_rval.encoded, (enc_rval.encoded+7)/8);
 
-      for (i = 0; i < (enc_rval.encoded + 7) / 8; i++) {
-        LOG_T(RRC, "%02x.", buffer[i]);
-      }
-
-      LOG_T(RRC, "\n");
-      rrc_data_req (
-		    ctxt_pP,
-		    DCCH,
-		    rrc_mui++,
-		    SDU_CONFIRM_NO,
-		    (enc_rval.encoded + 7) / 8,
-		    buffer,
-		    PDCP_TRANSMISSION_MODE_CONTROL);
+    for (i = 0; i < (enc_rval.encoded + 7) / 8; i++) {
+      LOG_T(RRC, "%02x.", buffer[i]);
     }
-    
-  else LOG_W(RRC,"securityModeCommand->criticalExtensions.present (%d) != SecurityModeCommand__criticalExtensions_PR_c1\n",
-	     securityModeCommand->criticalExtensions.present);
+
+    LOG_T(RRC, "\n");
+    rrc_data_req (
+      ctxt_pP,
+      DCCH,
+      rrc_mui++,
+      SDU_CONFIRM_NO,
+      (enc_rval.encoded + 7) / 8,
+      buffer,
+      PDCP_TRANSMISSION_MODE_CONTROL);
+  } else LOG_W(RRC,"securityModeCommand->criticalExtensions.present (%d) != SecurityModeCommand__criticalExtensions_PR_c1\n",
+                 securityModeCommand->criticalExtensions.present);
 }
 
 //-----------------------------------------------------------------------------
 void
 rrc_ue_process_ueCapabilityEnquiry(
-  const protocol_ctxt_t* const ctxt_pP,
-  LTE_UECapabilityEnquiry_t* UECapabilityEnquiry,
+  const protocol_ctxt_t *const ctxt_pP,
+  LTE_UECapabilityEnquiry_t *UECapabilityEnquiry,
   uint8_t eNB_index
 )
 //-----------------------------------------------------------------------------
 {
-
   asn_enc_rval_t enc_rval;
-
   LTE_UL_DCCH_Message_t ul_dcch_msg;
-
-
   LTE_UE_CapabilityRAT_Container_t ue_CapabilityRAT_Container;
-
   uint8_t buffer[200];
   int i;
-
   LOG_I(RRC,"[UE %d] Frame %d: Receiving from SRB1 (DL-DCCH), Processing UECapabilityEnquiry (eNB %d)\n",
         ctxt_pP->module_id,
         ctxt_pP->frame,
         eNB_index);
-
-
   memset((void *)&ul_dcch_msg,0,sizeof(LTE_UL_DCCH_Message_t));
   memset((void *)&ue_CapabilityRAT_Container,0,sizeof(LTE_UE_CapabilityRAT_Container_t));
-
   ul_dcch_msg.message.present           = LTE_UL_DCCH_MessageType_PR_c1;
   ul_dcch_msg.message.choice.c1.present = LTE_UL_DCCH_MessageType__c1_PR_ueCapabilityInformation;
   ul_dcch_msg.message.choice.c1.choice.ueCapabilityInformation.rrc_TransactionIdentifier = UECapabilityEnquiry->rrc_TransactionIdentifier;
-
   ue_CapabilityRAT_Container.rat_Type = LTE_RAT_Type_eutra;
   OCTET_STRING_fromBuf(&ue_CapabilityRAT_Container.ueCapabilityRAT_Container,
-                       (const char*)UE_rrc_inst[ctxt_pP->module_id].UECapability,
+                       (const char *)UE_rrc_inst[ctxt_pP->module_id].UECapability,
                        UE_rrc_inst[ctxt_pP->module_id].UECapability_size);
   //  ue_CapabilityRAT_Container.ueCapabilityRAT_Container.buf  = UE_rrc_inst[ue_mod_idP].UECapability;
   // ue_CapabilityRAT_Container.ueCapabilityRAT_Container.size = UE_rrc_inst[ue_mod_idP].UECapability_size;
-
-
   AssertFatal(UECapabilityEnquiry->criticalExtensions.present == LTE_UECapabilityEnquiry__criticalExtensions_PR_c1,
-	      "UECapabilityEnquiry->criticalExtensions.present (%d) != UECapabilityEnquiry__criticalExtensions_PR_c1 (%d)\n",
-	      UECapabilityEnquiry->criticalExtensions.present,LTE_UECapabilityEnquiry__criticalExtensions_PR_c1);
+              "UECapabilityEnquiry->criticalExtensions.present (%d) != UECapabilityEnquiry__criticalExtensions_PR_c1 (%d)\n",
+              UECapabilityEnquiry->criticalExtensions.present,LTE_UECapabilityEnquiry__criticalExtensions_PR_c1);
 
   if (UECapabilityEnquiry->criticalExtensions.choice.c1.present != LTE_UECapabilityEnquiry__criticalExtensions__c1_PR_ueCapabilityEnquiry_r8)
     LOG_I(RRC,"UECapabilityEnquiry->criticalExtensions.choice.c1.present (%d) != UECapabilityEnquiry__criticalExtensions__c1_PR_ueCapabilityEnquiry_r8)\n",
-	  UECapabilityEnquiry->criticalExtensions.choice.c1.present);
-  
+          UECapabilityEnquiry->criticalExtensions.choice.c1.present);
+
   ul_dcch_msg.message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.present           = LTE_UECapabilityInformation__criticalExtensions_PR_c1;
   ul_dcch_msg.message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.choice.c1.present =
     LTE_UECapabilityInformation__criticalExtensions__c1_PR_ueCapabilityInformation_r8;
   ul_dcch_msg.message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList.list.count
     =0;
-  
+
   for (i=0; i<UECapabilityEnquiry->criticalExtensions.choice.c1.choice.ueCapabilityEnquiry_r8.ue_CapabilityRequest.list.count; i++) {
-    
     if (*UECapabilityEnquiry->criticalExtensions.choice.c1.choice.ueCapabilityEnquiry_r8.ue_CapabilityRequest.list.array[i]
-	== LTE_RAT_Type_eutra) {
+        == LTE_RAT_Type_eutra) {
       ASN_SEQUENCE_ADD(
-		       &ul_dcch_msg.message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList.list,
-		       &ue_CapabilityRAT_Container);
-      
-      enc_rval = uper_encode_to_buffer(&asn_DEF_LTE_UL_DCCH_Message, NULL, (void*) &ul_dcch_msg, buffer, 100);
+        &ul_dcch_msg.message.choice.c1.choice.ueCapabilityInformation.criticalExtensions.choice.c1.choice.ueCapabilityInformation_r8.ue_CapabilityRAT_ContainerList.list,
+        &ue_CapabilityRAT_Container);
+      enc_rval = uper_encode_to_buffer(&asn_DEF_LTE_UL_DCCH_Message, NULL, (void *) &ul_dcch_msg, buffer, 100);
       AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %jd)!\n",
-		   enc_rval.failed_type->name, enc_rval.encoded);
-      
+                   enc_rval.failed_type->name, enc_rval.encoded);
+
       if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
-         xer_fprint(stdout, &asn_DEF_LTE_UL_DCCH_Message, (void*)&ul_dcch_msg);
-      }
-      
-#if defined(ENABLE_ITTI)
-# if !defined(DISABLE_XER_SPRINT)
-      {
-	char        message_string[20000];
-	size_t      message_string_size;
-	
-	if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_LTE_UL_DCCH_Message, (void *) &ul_dcch_msg)) > 0) {
-	  MessageDef *msg_p;
-	  
-	  msg_p = itti_alloc_new_message_sized (TASK_RRC_UE, RRC_UL_DCCH, message_string_size + sizeof (IttiMsgText));
-	  msg_p->ittiMsg.rrc_ul_dcch.size = message_string_size;
-	  memcpy(&msg_p->ittiMsg.rrc_ul_dcch.text, message_string, message_string_size);
-	  
-	  itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
-	}
+        xer_fprint(stdout, &asn_DEF_LTE_UL_DCCH_Message, (void *)&ul_dcch_msg);
       }
-# endif
-#endif
-	
-
-          LOG_I(RRC,"UECapabilityInformation Encoded %zd bits (%zd bytes)\n",enc_rval.encoded,(enc_rval.encoded+7)/8);
 
-          for (i = 0; i < (enc_rval.encoded + 7) / 8; i++) {
-            LOG_T(RRC, "%02x.", buffer[i]);
-          }
-      
-      LOG_T(RRC, "\n");
+      LOG_I(RRC,"UECapabilityInformation Encoded %zd bits (%zd bytes)\n",enc_rval.encoded,(enc_rval.encoded+7)/8);
       rrc_data_req_ue (
-		    ctxt_pP,
-		    DCCH,
-		    rrc_mui++,
-		    SDU_CONFIRM_NO,
-		    (enc_rval.encoded + 7) / 8,
-		    buffer,
-		    PDCP_TRANSMISSION_MODE_CONTROL);
+        ctxt_pP,
+        DCCH,
+        rrc_mui++,
+        SDU_CONFIRM_NO,
+        (enc_rval.encoded + 7) / 8,
+        buffer,
+        PDCP_TRANSMISSION_MODE_CONTROL);
     }
   }
 }
@@ -2085,20 +1832,19 @@ rrc_ue_process_ueCapabilityEnquiry(
 //-----------------------------------------------------------------------------
 void
 rrc_ue_process_rrcConnectionReconfiguration(
-  const protocol_ctxt_t* const       ctxt_pP,
+  const protocol_ctxt_t *const       ctxt_pP,
   LTE_RRCConnectionReconfiguration_t *rrcConnectionReconfiguration,
   uint8_t eNB_index
 )
 //-----------------------------------------------------------------------------
 {
-
   LOG_I(RRC,"[UE %d] Frame %d: Receiving from SRB1 (DL-DCCH), Processing RRCConnectionReconfiguration (eNB %d)\n",
         ctxt_pP->module_id,ctxt_pP->frame,eNB_index);
 
   if (rrcConnectionReconfiguration->criticalExtensions.present == LTE_RRCConnectionReconfiguration__criticalExtensions_PR_c1) {
     if (rrcConnectionReconfiguration->criticalExtensions.choice.c1.present ==
         LTE_RRCConnectionReconfiguration__criticalExtensions__c1_PR_rrcConnectionReconfiguration_r8) {
-      LTE_RRCConnectionReconfiguration_r8_IEs_t* rrcConnectionReconfiguration_r8 =
+      LTE_RRCConnectionReconfiguration_r8_IEs_t *rrcConnectionReconfiguration_r8 =
         &rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8;
 
       if (rrcConnectionReconfiguration_r8->mobilityControlInfo) {
@@ -2124,42 +1870,42 @@ rrc_ue_process_rrcConnectionReconfiguration(
       //TTN for D2D
       //if RRCConnectionReconfiguration message includes the sl-CommConfig
       if ((rrcConnectionReconfiguration_r8->nonCriticalExtension != NULL)
-            && (rrcConnectionReconfiguration_r8->nonCriticalExtension->nonCriticalExtension
-                  != NULL)
-                  && (rrcConnectionReconfiguration_r8->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension
-                        != NULL)
-                        && (rrcConnectionReconfiguration_r8->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension
-                              != NULL)
-                              && (rrcConnectionReconfiguration_r8->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension
-                                    != NULL)
-                                    && (rrcConnectionReconfiguration_r8->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->sl_CommConfig_r12
-                                          != NULL)) {
-         if (rrcConnectionReconfiguration_r8->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->sl_CommConfig_r12->commTxResources_r12->present != LTE_SL_CommConfig_r12__commTxResources_r12_PR_NOTHING){
-            LOG_I(RRC,"sl-CommConfig is present\n");
-            //process sl-CommConfig
-            rrc_ue_process_sidelink_radioResourceConfig(ctxt_pP->module_id,eNB_index,
-                  (LTE_SystemInformationBlockType18_r12_t *)NULL,
-                  (LTE_SystemInformationBlockType19_r12_t *)NULL,
-                  rrcConnectionReconfiguration_r8->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->sl_CommConfig_r12,
-                  (LTE_SL_DiscConfig_r12_t *)NULL
-            );
-         }
-      }
-
-/*
-      //if RRCConnectionReconfiguration message includes the sl-DiscConfig
-      if (rrcConnectionReconfiguration_r8->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->sl_DiscConfig_r12->discTxResources_r12->present != SL_DiscConfig_r12__discTxResources_r12_PR_NOTHING ){
-         LOG_I(RRC,"sl-DiscConfig is present\n");
-         //process sl-DiscConfig
-         rrc_ue_process_sidelink_radioResourceConfig(ctxt_pP->module_id,eNB_index,
-               (SystemInformationBlockType18_r12_t *)NULL,
-               (SystemInformationBlockType19_r12_t *)NULL,
-               (SL_CommConfig_r12_t* )NULL,
-               rrcConnectionReconfiguration_r8->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->sl_DiscConfig_r12
-               );
+          && (rrcConnectionReconfiguration_r8->nonCriticalExtension->nonCriticalExtension
+              != NULL)
+          && (rrcConnectionReconfiguration_r8->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension
+              != NULL)
+          && (rrcConnectionReconfiguration_r8->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension
+              != NULL)
+          && (rrcConnectionReconfiguration_r8->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension
+              != NULL)
+          && (rrcConnectionReconfiguration_r8->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->sl_CommConfig_r12
+              != NULL)) {
+        if (rrcConnectionReconfiguration_r8->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->sl_CommConfig_r12->commTxResources_r12->present !=
+            LTE_SL_CommConfig_r12__commTxResources_r12_PR_NOTHING) {
+          LOG_I(RRC,"sl-CommConfig is present\n");
+          //process sl-CommConfig
+          rrc_ue_process_sidelink_radioResourceConfig(ctxt_pP->module_id,eNB_index,
+              (LTE_SystemInformationBlockType18_r12_t *)NULL,
+              (LTE_SystemInformationBlockType19_r12_t *)NULL,
+              rrcConnectionReconfiguration_r8->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->sl_CommConfig_r12,
+              (LTE_SL_DiscConfig_r12_t *)NULL
+                                                     );
+        }
       }
-*/
 
+      /*
+            //if RRCConnectionReconfiguration message includes the sl-DiscConfig
+            if (rrcConnectionReconfiguration_r8->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->sl_DiscConfig_r12->discTxResources_r12->present != SL_DiscConfig_r12__discTxResources_r12_PR_NOTHING ){
+               LOG_I(RRC,"sl-DiscConfig is present\n");
+               //process sl-DiscConfig
+               rrc_ue_process_sidelink_radioResourceConfig(ctxt_pP->module_id,eNB_index,
+                     (SystemInformationBlockType18_r12_t *)NULL,
+                     (SystemInformationBlockType19_r12_t *)NULL,
+                     (SL_CommConfig_r12_t* )NULL,
+                     rrcConnectionReconfiguration_r8->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->sl_DiscConfig_r12
+                     );
+            }
+      */
 #if defined(ENABLE_ITTI)
 
       /* Check if there is dedicated NAS information to forward to NAS */
@@ -2172,12 +1918,10 @@ rrc_ue_process_rrcConnectionReconfiguration(
         for (list_count = 0; list_count < rrcConnectionReconfiguration_r8->dedicatedInfoNASList->list.count; list_count++) {
           pdu_length = rrcConnectionReconfiguration_r8->dedicatedInfoNASList->list.array[list_count]->size;
           pdu_buffer = rrcConnectionReconfiguration_r8->dedicatedInfoNASList->list.array[list_count]->buf;
-
           msg_p = itti_alloc_new_message(TASK_RRC_UE, NAS_CONN_ESTABLI_CNF);
           NAS_CONN_ESTABLI_CNF(msg_p).errCode = AS_SUCCESS;
           NAS_CONN_ESTABLI_CNF(msg_p).nasMsg.length = pdu_length;
           NAS_CONN_ESTABLI_CNF(msg_p).nasMsg.data = pdu_buffer;
-
           itti_send_msg_to_task(TASK_NAS_UE, ctxt_pP->instance, msg_p);
         }
 
@@ -2189,7 +1933,6 @@ rrc_ue_process_rrcConnectionReconfiguration(
         MessageDef                                 *message_ral_p = NULL;
         rrc_ral_connection_reestablishment_ind_t    connection_reestablishment_ind;
         int                                         i;
-
         message_ral_p = itti_alloc_new_message (TASK_RRC_UE, RRC_RAL_CONNECTION_REESTABLISHMENT_IND);
         memset(&connection_reestablishment_ind, 0, sizeof(rrc_ral_connection_reestablishment_ind_t));
         // TO DO ral_si_ind.plmn_id        = 0;
@@ -2214,7 +1957,6 @@ rrc_ue_process_rrcConnectionReconfiguration(
           connection_reestablishment_ind.num_srb      =
             rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->srb_ToAddModList->list.count +
             UE_rrc_inst[ctxt_pP->module_id].num_srb;
-
         } else {
           connection_reestablishment_ind.num_srb      += UE_rrc_inst[ctxt_pP->module_id].num_srb;
         }
@@ -2238,9 +1980,9 @@ rrc_ue_process_rrcConnectionReconfiguration(
 //-----------------------------------------------------------------------------
 void
 rrc_ue_process_mobilityControlInfo(
-  const protocol_ctxt_t* const       ctxt_pP,
+  const protocol_ctxt_t *const       ctxt_pP,
   const uint8_t                      eNB_index,
-  struct LTE_MobilityControlInfo* const mobilityControlInfo
+  struct LTE_MobilityControlInfo *const mobilityControlInfo
 )
 //-----------------------------------------------------------------------------
 {
@@ -2256,7 +1998,6 @@ rrc_ue_process_mobilityControlInfo(
 
   UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].T304_active = 1;
   UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].T304_cnt = T304[mobilityControlInfo->t304];
-
   /*
   drb2release_list = CALLOC (1, sizeof (*drb2release_list));
   lcid= CALLOC (1, sizeof (DRB_Identity_t)); // long
@@ -2282,22 +2023,20 @@ rrc_ue_process_mobilityControlInfo(
          NULL, // key rrc encryption
          NULL, // key rrc integrity
          NULL // key encryption
-#if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
+  #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
          ,NULL
-#endif
+  #endif
          ,NULL);
 
   rrc_rlc_config_asn1_req(NB_eNB_INST+ue_mod_idP, frameP,0,eNB_index,
         NULL,// SRB_ToAddModList
         NULL,// DRB_ToAddModList
         drb2release_list // DRB_ToReleaseList
-#if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
+  #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
         ,NULL
-#endif
+  #endif
         ,NULL);
    */
-
-
   //A little cleanup at RRC...
   //Copying current queue config to free RRC index
   /*
@@ -2319,53 +2058,49 @@ rrc_ue_process_mobilityControlInfo(
   LOG_I(RRC,
         "HO: Reset PDCP and RLC for configured RBs.. \n[FRAME %05d][RRC_UE][MOD %02d][][--- MAC_CONFIG_REQ  (SRB2 eNB %d) --->][MAC_UE][MOD %02d][]\n",
         ctxt_pP->frame, ctxt_pP->module_id, eNB_index, ctxt_pP->module_id);
-
   // Reset MAC and configure PHY
   rrc_mac_config_req_ue(ctxt_pP->module_id,
-			0,
-			eNB_index,
-			(LTE_RadioResourceConfigCommonSIB_t *)NULL,
-			(struct LTE_PhysicalConfigDedicated *)NULL,
+                        0,
+                        eNB_index,
+                        (LTE_RadioResourceConfigCommonSIB_t *)NULL,
+                        (struct LTE_PhysicalConfigDedicated *)NULL,
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-			(LTE_SCellToAddMod_r10_t *)NULL,
-			//(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
-#endif
-			(LTE_MeasObjectToAddMod_t **)NULL,
-			(LTE_MAC_MainConfig_t *)NULL,
-			0,
-			(struct LTE_LogicalChannelConfig *)NULL,
-			(LTE_MeasGapConfig_t *)NULL,
-			(LTE_TDD_Config_t *)NULL,
-			mobilityControlInfo,
-			(uint8_t *)NULL,
-			(uint16_t *)NULL,
-			NULL,
-			NULL,
-			NULL,
-			NULL
+                        (LTE_SCellToAddMod_r10_t *)NULL,
+                        //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
+#endif
+                        (LTE_MeasObjectToAddMod_t **)NULL,
+                        (LTE_MAC_MainConfig_t *)NULL,
+                        0,
+                        (struct LTE_LogicalChannelConfig *)NULL,
+                        (LTE_MeasGapConfig_t *)NULL,
+                        (LTE_TDD_Config_t *)NULL,
+                        mobilityControlInfo,
+                        (uint8_t *)NULL,
+                        (uint16_t *)NULL,
+                        NULL,
+                        NULL,
+                        NULL,
+                        NULL
 #if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0))
-			,0,
-			(LTE_MBSFN_AreaInfoList_r9_t *)NULL,
-			(LTE_PMCH_InfoList_r9_t *)NULL
+                        ,0,
+                        (LTE_MBSFN_AreaInfoList_r9_t *)NULL,
+                        (LTE_PMCH_InfoList_r9_t *)NULL
 #endif
 #ifdef CBA
-			,0,
-			0
+                        ,0,
+                        0
 #endif
 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-           ,
-           0,
-           NULL,
-           NULL
+                        ,
+                        0,
+                        NULL,
+                        NULL
 #endif
-			);
-
+                       );
   // Re-establish PDCP for all RBs that are established
   // rrc_pdcp_config_req (ue_mod_idP+NB_eNB_INST, frameP, 0, CONFIG_ACTION_ADD, ue_mod_idP+DCCH);
   // rrc_pdcp_config_req (ue_mod_idP+NB_eNB_INST, frameP, 0, CONFIG_ACTION_ADD, ue_mod_idP+DCCH1);
   // rrc_pdcp_config_req (ue_mod_idP+NB_eNB_INST, frameP, 0, CONFIG_ACTION_ADD, ue_mod_idP+DTCH);
-
-
   // Re-establish RLC for all RBs that are established
   // rrc_rlc_config_req(ue_mod_idP+NB_eNB_INST,frameP,0,CONFIG_ACTION_ADD,ue_mod_idP+DCCH,SIGNALLING_RADIO_BEARER,Rlc_info_am_config);
   // rrc_rlc_config_req(ue_mod_idP+NB_eNB_INST,frameP,0,CONFIG_ACTION_ADD,ue_mod_idP+DCCH1,SIGNALLING_RADIO_BEARER,Rlc_info_am_config);
@@ -2387,14 +2122,13 @@ rrc_detach_from_eNB(
 //-----------------------------------------------------------------------------
 void
 rrc_ue_decode_dcch(
-  const protocol_ctxt_t* const ctxt_pP,
+  const protocol_ctxt_t *const ctxt_pP,
   const rb_id_t                Srb_id,
-  const uint8_t*         const Buffer,
+  const uint8_t         *const Buffer,
   const uint8_t                eNB_indexP
 )
 //-----------------------------------------------------------------------------
 {
-
   //DL_DCCH_Message_t dldcchmsg;
   LTE_DL_DCCH_Message_t *dl_dcch_msg=NULL;//&dldcchmsg;
   //  asn_dec_rval_t dec_rval;
@@ -2410,336 +2144,296 @@ rrc_ue_decode_dcch(
     return;
   }
 
-  //memset(dl_dcch_msg,0,sizeof(DL_DCCH_Message_t));
-
-  // decode messages
-  //  LOG_D(RRC,"[UE %d] Decoding DL-DCCH message\n",ue_mod_idP);
-  /*
-  for (i=0;i<30;i++)
-    LOG_T(RRC,"%x.",Buffer[i]);
-  LOG_T(RRC, "\n");
-   */
   uper_decode(NULL,
               &asn_DEF_LTE_DL_DCCH_Message,
-              (void**)&dl_dcch_msg,
-              (uint8_t*)Buffer,
+              (void **)&dl_dcch_msg,
+              (uint8_t *)Buffer,
               RRC_BUF_SIZE,0,0);
 
   if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
-     xer_fprint(stdout,&asn_DEF_LTE_DL_DCCH_Message,(void*)dl_dcch_msg);
-  }
-
-#if defined(ENABLE_ITTI)
-# if defined(DISABLE_ITTI_XER_PRINT)
-  {
-    msg_p = itti_alloc_new_message (TASK_RRC_UE, RRC_DL_DCCH_MESSAGE);
-    memcpy (&msg_p->ittiMsg, (void *) dl_dcch_msg, sizeof(RrcDlDcchMessage));
-
-    itti_send_msg_to_task (TASK_UNKNOWN, ctxt_pP->instance, msg_p);
+    xer_fprint(stdout,&asn_DEF_LTE_DL_DCCH_Message,(void *)dl_dcch_msg);
   }
-# else
-  {
-    char        message_string[30000];
-    size_t      message_string_size;
-
-    if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_LTE_DL_DCCH_Message, (void *)dl_dcch_msg)) > 0) {
-      msg_p = itti_alloc_new_message_sized (TASK_RRC_UE, RRC_DL_DCCH, message_string_size + sizeof (IttiMsgText));
-      msg_p->ittiMsg.rrc_dl_dcch.size = message_string_size;
-      memcpy(&msg_p->ittiMsg.rrc_dl_dcch.text, message_string, message_string_size);
-
-      itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
-    }
-  }
-# endif
-#endif
 
   if (dl_dcch_msg->message.present == LTE_DL_DCCH_MessageType_PR_c1) {
-
     if (UE_rrc_inst[ctxt_pP->module_id].Info[eNB_indexP].State >= RRC_CONNECTED) {
-
       switch (dl_dcch_msg->message.choice.c1.present) {
+        case LTE_DL_DCCH_MessageType__c1_PR_NOTHING:
+          LOG_I(RRC, "[UE %d] Frame %d : Received PR_NOTHING on DL-DCCH-Message\n",
+                ctxt_pP->module_id, ctxt_pP->frame);
+          return;
 
-      case LTE_DL_DCCH_MessageType__c1_PR_NOTHING:
-        LOG_I(RRC, "[UE %d] Frame %d : Received PR_NOTHING on DL-DCCH-Message\n",
-              ctxt_pP->module_id, ctxt_pP->frame);
-        return;
-
-      case LTE_DL_DCCH_MessageType__c1_PR_csfbParametersResponseCDMA2000:
-        break;
+        case LTE_DL_DCCH_MessageType__c1_PR_csfbParametersResponseCDMA2000:
+          break;
 
-      case LTE_DL_DCCH_MessageType__c1_PR_dlInformationTransfer: {
+        case LTE_DL_DCCH_MessageType__c1_PR_dlInformationTransfer: {
 #if defined(ENABLE_ITTI)
-        LTE_DLInformationTransfer_t *dlInformationTransfer = &dl_dcch_msg->message.choice.c1.choice.dlInformationTransfer;
-
-        if ((dlInformationTransfer->criticalExtensions.present == LTE_DLInformationTransfer__criticalExtensions_PR_c1)
-            && (dlInformationTransfer->criticalExtensions.choice.c1.present
-                == LTE_DLInformationTransfer__criticalExtensions__c1_PR_dlInformationTransfer_r8)
-            && (dlInformationTransfer->criticalExtensions.choice.c1.choice.dlInformationTransfer_r8.dedicatedInfoType.present
-                == LTE_DLInformationTransfer_r8_IEs__dedicatedInfoType_PR_dedicatedInfoNAS)) {
-          /* This message hold a dedicated info NAS payload, forward it to NAS */
-          struct LTE_DLInformationTransfer_r8_IEs__dedicatedInfoType *dedicatedInfoType =
+          LTE_DLInformationTransfer_t *dlInformationTransfer = &dl_dcch_msg->message.choice.c1.choice.dlInformationTransfer;
+
+          if ((dlInformationTransfer->criticalExtensions.present == LTE_DLInformationTransfer__criticalExtensions_PR_c1)
+              && (dlInformationTransfer->criticalExtensions.choice.c1.present
+                  == LTE_DLInformationTransfer__criticalExtensions__c1_PR_dlInformationTransfer_r8)
+              && (dlInformationTransfer->criticalExtensions.choice.c1.choice.dlInformationTransfer_r8.dedicatedInfoType.present
+                  == LTE_DLInformationTransfer_r8_IEs__dedicatedInfoType_PR_dedicatedInfoNAS)) {
+            /* This message hold a dedicated info NAS payload, forward it to NAS */
+            struct LTE_DLInformationTransfer_r8_IEs__dedicatedInfoType *dedicatedInfoType =
                 &dlInformationTransfer->criticalExtensions.choice.c1.choice.dlInformationTransfer_r8.dedicatedInfoType;
-          uint32_t pdu_length;
-          uint8_t *pdu_buffer;
-          MessageDef *msg_p;
-
-          pdu_length = dedicatedInfoType->choice.dedicatedInfoNAS.size;
-          pdu_buffer = dedicatedInfoType->choice.dedicatedInfoNAS.buf;
-
-          msg_p = itti_alloc_new_message(TASK_RRC_UE, NAS_DOWNLINK_DATA_IND);
-          NAS_DOWNLINK_DATA_IND(msg_p).UEid = ctxt_pP->module_id; // TODO set the UEid to something else ?
-          NAS_DOWNLINK_DATA_IND(msg_p).nasMsg.length = pdu_length;
-          NAS_DOWNLINK_DATA_IND(msg_p).nasMsg.data = pdu_buffer;
-
-          itti_send_msg_to_task(TASK_NAS_UE, ctxt_pP->instance, msg_p);
-        }
+            uint32_t pdu_length;
+            uint8_t *pdu_buffer;
+            MessageDef *msg_p;
+            pdu_length = dedicatedInfoType->choice.dedicatedInfoNAS.size;
+            pdu_buffer = dedicatedInfoType->choice.dedicatedInfoNAS.buf;
+            msg_p = itti_alloc_new_message(TASK_RRC_UE, NAS_DOWNLINK_DATA_IND);
+            NAS_DOWNLINK_DATA_IND(msg_p).UEid = ctxt_pP->module_id; // TODO set the UEid to something else ?
+            NAS_DOWNLINK_DATA_IND(msg_p).nasMsg.length = pdu_length;
+            NAS_DOWNLINK_DATA_IND(msg_p).nasMsg.data = pdu_buffer;
+            itti_send_msg_to_task(TASK_NAS_UE, ctxt_pP->instance, msg_p);
+          }
 
 #endif
-        break;
-      }
-
-      case LTE_DL_DCCH_MessageType__c1_PR_handoverFromEUTRAPreparationRequest:
-        break;
+          break;
+        }
 
-      case LTE_DL_DCCH_MessageType__c1_PR_mobilityFromEUTRACommand:
-        break;
+        case LTE_DL_DCCH_MessageType__c1_PR_handoverFromEUTRAPreparationRequest:
+          break;
 
-      case LTE_DL_DCCH_MessageType__c1_PR_rrcConnectionReconfiguration:
+        case LTE_DL_DCCH_MessageType__c1_PR_mobilityFromEUTRACommand:
+          break;
 
-        // first check if mobilityControlInfo  is present
-        if (dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.mobilityControlInfo
-            != NULL) {
-          /* 36.331, 5.3.5.4 Reception of an RRCConnectionReconfiguration including the mobilityControlInfo by the UE (handover)*/
-          if (UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.targetCellId
-              != dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.mobilityControlInfo->targetPhysCellId) {
-            LOG_W(RRC,
-                  "[UE %d] Frame %d: Handover target (%ld) is different from RSRP measured target (%ld)..\n",
-                  ctxt_pP->module_id,
-                  ctxt_pP->frame,
-                  dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.mobilityControlInfo->targetPhysCellId,
-                  UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.targetCellId);
-            return;
-          } else if ((target_eNB_index = get_adjacent_cell_mod_id(UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.targetCellId))
-                     == 0xFF) {
-            LOG_W(RRC,
-                  "[UE %d] Frame %d: ue_mod_idP of the target eNB not found, check the network topology\n",
-                  ctxt_pP->module_id,
-                  ctxt_pP->frame);
-            return;
-          } else {
-            LOG_I(RRC,
-                  "[UE% d] Frame %d: Received rrcConnectionReconfiguration with mobilityControlInfo \n",
-                  ctxt_pP->module_id,
-                  ctxt_pP->frame);
-            UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.measFlag = 1; // Ready to send more MeasReports if required
+        case LTE_DL_DCCH_MessageType__c1_PR_rrcConnectionReconfiguration:
+
+          // first check if mobilityControlInfo  is present
+          if (dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.mobilityControlInfo
+              != NULL) {
+            /* 36.331, 5.3.5.4 Reception of an RRCConnectionReconfiguration including the mobilityControlInfo by the UE (handover)*/
+            if (UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.targetCellId
+                != dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.mobilityControlInfo->targetPhysCellId) {
+              LOG_W(RRC,
+                    "[UE %d] Frame %d: Handover target (%ld) is different from RSRP measured target (%ld)..\n",
+                    ctxt_pP->module_id,
+                    ctxt_pP->frame,
+                    dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.mobilityControlInfo->targetPhysCellId,
+                    UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.targetCellId);
+              return;
+            } else if ((target_eNB_index = get_adjacent_cell_mod_id(UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.targetCellId))
+                       == 0xFF) {
+              LOG_W(RRC,
+                    "[UE %d] Frame %d: ue_mod_idP of the target eNB not found, check the network topology\n",
+                    ctxt_pP->module_id,
+                    ctxt_pP->frame);
+              return;
+            } else {
+              LOG_I(RRC,
+                    "[UE% d] Frame %d: Received rrcConnectionReconfiguration with mobilityControlInfo \n",
+                    ctxt_pP->module_id,
+                    ctxt_pP->frame);
+              UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.measFlag = 1; // Ready to send more MeasReports if required
+            }
           }
-        }
-
-        rrc_ue_process_rrcConnectionReconfiguration(
-          ctxt_pP,
-          &dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration,
-          eNB_indexP);
 
-        if (target_eNB_index != 0xFF) {
-          rrc_ue_generate_RRCConnectionReconfigurationComplete(
+          rrc_ue_process_rrcConnectionReconfiguration(
             ctxt_pP,
-            target_eNB_index,
-            dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.rrc_TransactionIdentifier);
-          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_indexP].State = RRC_HO_EXECUTION;
-          UE_rrc_inst[ctxt_pP->module_id].Info[target_eNB_index].State = RRC_RECONFIGURED;
-          LOG_I(RRC, "[UE %d] State = RRC_RECONFIGURED during HO (eNB %d)\n",
-                ctxt_pP->module_id, target_eNB_index);
+            &dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration,
+            eNB_indexP);
+
+          if (target_eNB_index != 0xFF) {
+            rrc_ue_generate_RRCConnectionReconfigurationComplete(
+              ctxt_pP,
+              target_eNB_index,
+              dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.rrc_TransactionIdentifier);
+            UE_rrc_inst[ctxt_pP->module_id].Info[eNB_indexP].State = RRC_HO_EXECUTION;
+            UE_rrc_inst[ctxt_pP->module_id].Info[target_eNB_index].State = RRC_RECONFIGURED;
+            LOG_I(RRC, "[UE %d] State = RRC_RECONFIGURED during HO (eNB %d)\n",
+                  ctxt_pP->module_id, target_eNB_index);
 #if defined(ENABLE_ITTI)
 #if ENABLE_RAL
-          {
-            MessageDef                                 *message_ral_p = NULL;
-            rrc_ral_connection_reconfiguration_ho_ind_t connection_reconfiguration_ho_ind;
-            int                                         i;
-
-            message_ral_p = itti_alloc_new_message (TASK_RRC_UE, RRC_RAL_CONNECTION_RECONFIGURATION_HO_IND);
-            memset(&connection_reconfiguration_ho_ind, 0, sizeof(rrc_ral_connection_reconfiguration_ho_ind_t));
-            connection_reconfiguration_ho_ind.ue_id = ctxt_pP->module_id;
-
-            if (dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->drb_ToAddModList
-                != NULL) {
-              connection_reconfiguration_ho_ind.num_drb      =
-                dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->drb_ToAddModList->list.count;
-
-              for (i=0; (
-                     i<dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->drb_ToAddModList->list.count)
-                   && (i < maxDRB); i++) {
-                // why minus 1 in RRC code for drb_identity ?
-                connection_reconfiguration_ho_ind.drb_id[i]   =
-                  dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->drb_ToAddModList->list.array[i]->drb_Identity;
+            {
+              MessageDef                                 *message_ral_p = NULL;
+              rrc_ral_connection_reconfiguration_ho_ind_t connection_reconfiguration_ho_ind;
+              int                                         i;
+              message_ral_p = itti_alloc_new_message (TASK_RRC_UE, RRC_RAL_CONNECTION_RECONFIGURATION_HO_IND);
+              memset(&connection_reconfiguration_ho_ind, 0, sizeof(rrc_ral_connection_reconfiguration_ho_ind_t));
+              connection_reconfiguration_ho_ind.ue_id = ctxt_pP->module_id;
+
+              if (dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->drb_ToAddModList
+                  != NULL) {
+                connection_reconfiguration_ho_ind.num_drb      =
+                  dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->drb_ToAddModList->list.count;
+
+                for (i=0; (
+                       i<dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->drb_ToAddModList->list.count)
+                     && (i < maxDRB); i++) {
+                  // why minus 1 in RRC code for drb_identity ?
+                  connection_reconfiguration_ho_ind.drb_id[i]   =
+                    dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->drb_ToAddModList->list.array[i]->drb_Identity;
+                }
+              } else {
+                connection_reconfiguration_ho_ind.num_drb      = 0;
               }
-            } else {
-              connection_reconfiguration_ho_ind.num_drb      = 0;
-            }
 
-            if (dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->srb_ToAddModList
-                != NULL) {
-              connection_reconfiguration_ho_ind.num_srb      =
-                dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->srb_ToAddModList->list.count
-                +
-                UE_rrc_inst[ctxt_pP->module_id].num_srb;
-            } else {
-              connection_reconfiguration_ho_ind.num_srb      += UE_rrc_inst[ctxt_pP->module_id].num_srb;
-            }
+              if (dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->srb_ToAddModList
+                  != NULL) {
+                connection_reconfiguration_ho_ind.num_srb      =
+                  dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->srb_ToAddModList->list.count
+                  +
+                  UE_rrc_inst[ctxt_pP->module_id].num_srb;
+              } else {
+                connection_reconfiguration_ho_ind.num_srb      += UE_rrc_inst[ctxt_pP->module_id].num_srb;
+              }
 
-            if (connection_reconfiguration_ho_ind.num_srb > 2 ) {
-              connection_reconfiguration_ho_ind.num_srb =2;
-            }
+              if (connection_reconfiguration_ho_ind.num_srb > 2 ) {
+                connection_reconfiguration_ho_ind.num_srb =2;
+              }
 
-            memcpy (&message_ral_p->ittiMsg, (void *) &connection_reconfiguration_ho_ind, sizeof(rrc_ral_connection_reconfiguration_ho_ind_t));
-            //#warning "ue_mod_idP ? for instance ? => YES"
-            LOG_I(RRC, "Sending RRC_RAL_CONNECTION_RECONFIGURATION_HO_IND to mRAL\n");
-            itti_send_msg_to_task (TASK_RAL_UE, ctxt_pP->instance, message_ral_p);
-          }
+              memcpy (&message_ral_p->ittiMsg, (void *) &connection_reconfiguration_ho_ind, sizeof(rrc_ral_connection_reconfiguration_ho_ind_t));
+              //#warning "ue_mod_idP ? for instance ? => YES"
+              LOG_I(RRC, "Sending RRC_RAL_CONNECTION_RECONFIGURATION_HO_IND to mRAL\n");
+              itti_send_msg_to_task (TASK_RAL_UE, ctxt_pP->instance, message_ral_p);
+            }
 #endif
 #endif
-        } else {
-          rrc_ue_generate_RRCConnectionReconfigurationComplete(
-            ctxt_pP,
-            eNB_indexP,
-            dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.rrc_TransactionIdentifier);
-          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_indexP].State = RRC_RECONFIGURED;
-          LOG_I(RRC, "[UE %d] State = RRC_RECONFIGURED (eNB %d)\n",
-                ctxt_pP->module_id,
-                eNB_indexP);
+          } else {
+            rrc_ue_generate_RRCConnectionReconfigurationComplete(
+              ctxt_pP,
+              eNB_indexP,
+              dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.rrc_TransactionIdentifier);
+            UE_rrc_inst[ctxt_pP->module_id].Info[eNB_indexP].State = RRC_RECONFIGURED;
+            LOG_I(RRC, "[UE %d] State = RRC_RECONFIGURED (eNB %d)\n",
+                  ctxt_pP->module_id,
+                  eNB_indexP);
 #if defined(ENABLE_ITTI)
 #if ENABLE_RAL
-          {
-            MessageDef                                 *message_ral_p = NULL;
-            rrc_ral_connection_reconfiguration_ind_t    connection_reconfiguration_ind;
-            int                                         i;
-
-            message_ral_p = itti_alloc_new_message (TASK_RRC_UE, RRC_RAL_CONNECTION_RECONFIGURATION_IND);
-            memset(&connection_reconfiguration_ind, 0, sizeof(rrc_ral_connection_reconfiguration_ind_t));
-            connection_reconfiguration_ind.ue_id = ctxt_pP->module_id;
-
-            if (dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->drb_ToAddModList
-                != NULL) {
-              connection_reconfiguration_ind.num_drb      =
-                dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->drb_ToAddModList->list.count;
-
-              for (i=0; (
-                     i<dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->drb_ToAddModList->list.count)
-                   && (i < maxDRB); i++) {
-                // why minus 1 in RRC code for drb_identity ?
-                connection_reconfiguration_ind.drb_id[i]   =
-                  dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->drb_ToAddModList->list.array[i]->drb_Identity;
+            {
+              MessageDef                                 *message_ral_p = NULL;
+              rrc_ral_connection_reconfiguration_ind_t    connection_reconfiguration_ind;
+              int                                         i;
+              message_ral_p = itti_alloc_new_message (TASK_RRC_UE, RRC_RAL_CONNECTION_RECONFIGURATION_IND);
+              memset(&connection_reconfiguration_ind, 0, sizeof(rrc_ral_connection_reconfiguration_ind_t));
+              connection_reconfiguration_ind.ue_id = ctxt_pP->module_id;
+
+              if (dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->drb_ToAddModList
+                  != NULL) {
+                connection_reconfiguration_ind.num_drb      =
+                  dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->drb_ToAddModList->list.count;
+
+                for (i=0; (
+                       i<dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->drb_ToAddModList->list.count)
+                     && (i < maxDRB); i++) {
+                  // why minus 1 in RRC code for drb_identity ?
+                  connection_reconfiguration_ind.drb_id[i]   =
+                    dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->drb_ToAddModList->list.array[i]->drb_Identity;
+                }
+              } else {
+                connection_reconfiguration_ind.num_drb      = 0;
               }
-            } else {
-              connection_reconfiguration_ind.num_drb      = 0;
-            }
 
-            if (dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->srb_ToAddModList
-                != NULL) {
-              connection_reconfiguration_ind.num_srb      =
-                dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->srb_ToAddModList->list.count
-                +
-                UE_rrc_inst[ctxt_pP->module_id].num_srb;
-            } else {
-              connection_reconfiguration_ind.num_srb      +=UE_rrc_inst[ctxt_pP->module_id].num_srb;
-            }
+              if (dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->srb_ToAddModList
+                  != NULL) {
+                connection_reconfiguration_ind.num_srb      =
+                  dl_dcch_msg->message.choice.c1.choice.rrcConnectionReconfiguration.criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.radioResourceConfigDedicated->srb_ToAddModList->list.count
+                  +
+                  UE_rrc_inst[ctxt_pP->module_id].num_srb;
+              } else {
+                connection_reconfiguration_ind.num_srb      +=UE_rrc_inst[ctxt_pP->module_id].num_srb;
+              }
 
-            if (connection_reconfiguration_ind.num_srb > 2 ) {
-              connection_reconfiguration_ind.num_srb =2;
-            }
+              if (connection_reconfiguration_ind.num_srb > 2 ) {
+                connection_reconfiguration_ind.num_srb =2;
+              }
 
-            memcpy (&message_ral_p->ittiMsg, (void *) &connection_reconfiguration_ind, sizeof(rrc_ral_connection_reconfiguration_ind_t));
-            //#warning "ue_mod_idP ? for instance ? => YES"
-            LOG_I(RRC, "Sending RRC_RAL_CONNECTION_RECONFIGURATION_IND to mRAL\n");
-            itti_send_msg_to_task (TASK_RAL_UE, ctxt_pP->instance, message_ral_p);
-          }
+              memcpy (&message_ral_p->ittiMsg, (void *) &connection_reconfiguration_ind, sizeof(rrc_ral_connection_reconfiguration_ind_t));
+              //#warning "ue_mod_idP ? for instance ? => YES"
+              LOG_I(RRC, "Sending RRC_RAL_CONNECTION_RECONFIGURATION_IND to mRAL\n");
+              itti_send_msg_to_task (TASK_RAL_UE, ctxt_pP->instance, message_ral_p);
+            }
 #endif
 #endif
+          }
 
-        }
+          //TTN test D2D (should not be here - in reality, this message will be triggered from ProSeApp)
+          if (send_ue_information == 0) {
+            LOG_I(RRC, "TEST SidelinkUEInformation [UE %d] Received  (eNB %d)\n",
+                  ctxt_pP->module_id, eNB_indexP);
+            LTE_SL_DestinationInfoList_r12_t *destinationInfoList = CALLOC(1, sizeof(LTE_SL_DestinationInfoList_r12_t));
+            LTE_SL_DestinationIdentity_r12_t *sl_destination_identity = CALLOC(1, sizeof(LTE_SL_DestinationIdentity_r12_t));
+            sl_destination_identity->size = 3;
+            sl_destination_identity->buf = CALLOC(1,3);
+            sl_destination_identity->buf[0] = 0x00;
+            sl_destination_identity->buf[1] = 0x00;
+            sl_destination_identity->buf[2] = 0x01;
+            sl_destination_identity->bits_unused = 0;
+            ASN_SEQUENCE_ADD(&destinationInfoList->list,sl_destination_identity);
+            rrc_ue_generate_SidelinkUEInformation(ctxt_pP, eNB_indexP, destinationInfoList, NULL, SL_TRANSMIT_NON_RELAY_ONE_TO_ONE);
+            send_ue_information ++;
+          }
 
-        //TTN test D2D (should not be here - in reality, this message will be triggered from ProSeApp)
-        if (send_ue_information == 0) {
-           LOG_I(RRC, "TEST SidelinkUEInformation [UE %d] Received  (eNB %d)\n",
-                 ctxt_pP->module_id, eNB_indexP);
-           LTE_SL_DestinationInfoList_r12_t *destinationInfoList = CALLOC(1, sizeof(LTE_SL_DestinationInfoList_r12_t));
-           LTE_SL_DestinationIdentity_r12_t *sl_destination_identity = CALLOC(1, sizeof(LTE_SL_DestinationIdentity_r12_t));
-           sl_destination_identity->size = 3;
-           sl_destination_identity->buf = CALLOC(1,3);
-           sl_destination_identity->buf[0] = 0x00;
-           sl_destination_identity->buf[1] = 0x00;
-           sl_destination_identity->buf[2] = 0x01;
-           sl_destination_identity->bits_unused = 0;
-           ASN_SEQUENCE_ADD(&destinationInfoList->list,sl_destination_identity);
-           rrc_ue_generate_SidelinkUEInformation(ctxt_pP, eNB_indexP, destinationInfoList, NULL, SL_TRANSMIT_NON_RELAY_ONE_TO_ONE);
-           send_ue_information ++;
-        }
-        break;
+          break;
 
-      case LTE_DL_DCCH_MessageType__c1_PR_rrcConnectionRelease:
+        case LTE_DL_DCCH_MessageType__c1_PR_rrcConnectionRelease:
 #if defined(ENABLE_ITTI)
-        msg_p = itti_alloc_new_message(TASK_RRC_UE, NAS_CONN_RELEASE_IND);
-
-        if ((dl_dcch_msg->message.choice.c1.choice.rrcConnectionRelease.criticalExtensions.present
-             == LTE_RRCConnectionRelease__criticalExtensions_PR_c1)
-            && (dl_dcch_msg->message.choice.c1.choice.rrcConnectionRelease.criticalExtensions.choice.c1.present
-                == LTE_RRCConnectionRelease__criticalExtensions__c1_PR_rrcConnectionRelease_r8)) {
-          NAS_CONN_RELEASE_IND(msg_p).cause =
-            dl_dcch_msg->message.choice.c1.choice.rrcConnectionRelease.criticalExtensions.choice.c1.choice.rrcConnectionRelease_r8.releaseCause;
-        }
+          msg_p = itti_alloc_new_message(TASK_RRC_UE, NAS_CONN_RELEASE_IND);
+
+          if ((dl_dcch_msg->message.choice.c1.choice.rrcConnectionRelease.criticalExtensions.present
+               == LTE_RRCConnectionRelease__criticalExtensions_PR_c1)
+              && (dl_dcch_msg->message.choice.c1.choice.rrcConnectionRelease.criticalExtensions.choice.c1.present
+                  == LTE_RRCConnectionRelease__criticalExtensions__c1_PR_rrcConnectionRelease_r8)) {
+            NAS_CONN_RELEASE_IND(msg_p).cause =
+              dl_dcch_msg->message.choice.c1.choice.rrcConnectionRelease.criticalExtensions.choice.c1.choice.rrcConnectionRelease_r8.releaseCause;
+          }
 
-        itti_send_msg_to_task(TASK_NAS_UE, ctxt_pP->instance, msg_p);
+          itti_send_msg_to_task(TASK_NAS_UE, ctxt_pP->instance, msg_p);
 #if ENABLE_RAL
-        msg_p = itti_alloc_new_message(TASK_RRC_UE, RRC_RAL_CONNECTION_RELEASE_IND);
-        RRC_RAL_CONNECTION_RELEASE_IND(msg_p).ue_id = ctxt_pP->module_id;
-        itti_send_msg_to_task(TASK_RAL_UE, ctxt_pP->instance, msg_p);
+          msg_p = itti_alloc_new_message(TASK_RRC_UE, RRC_RAL_CONNECTION_RELEASE_IND);
+          RRC_RAL_CONNECTION_RELEASE_IND(msg_p).ue_id = ctxt_pP->module_id;
+          itti_send_msg_to_task(TASK_RAL_UE, ctxt_pP->instance, msg_p);
 #endif
 #endif
-        break;
-
-      case LTE_DL_DCCH_MessageType__c1_PR_securityModeCommand:
-        LOG_I(RRC, "[UE %d] Received securityModeCommand (eNB %d)\n",
-              ctxt_pP->module_id, eNB_indexP);
-        rrc_ue_process_securityModeCommand(
-          ctxt_pP,
-          &dl_dcch_msg->message.choice.c1.choice.securityModeCommand,
-          eNB_indexP);
-        break;
+          break;
 
-      case LTE_DL_DCCH_MessageType__c1_PR_ueCapabilityEnquiry:
-        LOG_I(RRC, "[UE %d] Received Capability Enquiry (eNB %d)\n",
-              ctxt_pP->module_id,
-              eNB_indexP);
-        rrc_ue_process_ueCapabilityEnquiry(
-          ctxt_pP,
-          &dl_dcch_msg->message.choice.c1.choice.ueCapabilityEnquiry,
-          eNB_indexP);
-        break;
+        case LTE_DL_DCCH_MessageType__c1_PR_securityModeCommand:
+          LOG_I(RRC, "[UE %d] Received securityModeCommand (eNB %d)\n",
+                ctxt_pP->module_id, eNB_indexP);
+          rrc_ue_process_securityModeCommand(
+            ctxt_pP,
+            &dl_dcch_msg->message.choice.c1.choice.securityModeCommand,
+            eNB_indexP);
+          break;
 
-      case LTE_DL_DCCH_MessageType__c1_PR_counterCheck:
-        break;
+        case LTE_DL_DCCH_MessageType__c1_PR_ueCapabilityEnquiry:
+          LOG_I(RRC, "[UE %d] Received Capability Enquiry (eNB %d)\n",
+                ctxt_pP->module_id,
+                eNB_indexP);
+          rrc_ue_process_ueCapabilityEnquiry(
+            ctxt_pP,
+            &dl_dcch_msg->message.choice.c1.choice.ueCapabilityEnquiry,
+            eNB_indexP);
+          break;
 
+        case LTE_DL_DCCH_MessageType__c1_PR_counterCheck:
+          break;
 #if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0))
-      case LTE_DL_DCCH_MessageType__c1_PR_ueInformationRequest_r9:
-        break;
+
+        case LTE_DL_DCCH_MessageType__c1_PR_ueInformationRequest_r9:
+          break;
 #endif
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-      case LTE_DL_DCCH_MessageType__c1_PR_loggedMeasurementConfiguration_r10:
-        break;
 
-      case LTE_DL_DCCH_MessageType__c1_PR_rnReconfiguration_r10:
-        break;
+        case LTE_DL_DCCH_MessageType__c1_PR_loggedMeasurementConfiguration_r10:
+          break;
+
+        case LTE_DL_DCCH_MessageType__c1_PR_rnReconfiguration_r10:
+          break;
 #endif
 
-      case LTE_DL_DCCH_MessageType__c1_PR_spare1:
-      case LTE_DL_DCCH_MessageType__c1_PR_spare2:
-      case LTE_DL_DCCH_MessageType__c1_PR_spare3:
+        case LTE_DL_DCCH_MessageType__c1_PR_spare1:
+        case LTE_DL_DCCH_MessageType__c1_PR_spare2:
+        case LTE_DL_DCCH_MessageType__c1_PR_spare3:
 #if (LTE_RRC_VERSION < MAKE_VERSION(14, 0, 0))
-      case LTE_DL_DCCH_MessageType__c1_PR_spare4:
+        case LTE_DL_DCCH_MessageType__c1_PR_spare4:
 #endif
-        break;
+          break;
 
-      default:
-        break;
+        default:
+          break;
       }
     }
   }
@@ -2756,8 +2450,7 @@ const char SIBType[12][6] = {"SIB3","SIB4","SIB5","SIB6","SIB7","SIB8","SIB9","S
 const char SIBPeriod[8][6]= {"rf8","rf16","rf32","rf64","rf128","rf256","rf512","ERR"};
 int siPeriod_int[7] = {80,160,320,640,1280,2560,5120};
 
-const char* SIBreserved( long value )
-{
+const char *SIBreserved( long value ) {
   if (value < 0 || value > 1)
     return "ERR";
 
@@ -2766,8 +2459,7 @@ const char* SIBreserved( long value )
 
   return "reserved";
 }
-const char* SIBbarred( long value )
-{
+const char *SIBbarred( long value ) {
   if (value < 0 || value > 1)
     return "ERR";
 
@@ -2776,8 +2468,7 @@ const char* SIBbarred( long value )
 
   return "barred";
 }
-const char* SIBallowed( long value )
-{
+const char *SIBallowed( long value ) {
   if (value < 0 || value > 1)
     return "ERR";
 
@@ -2786,23 +2477,21 @@ const char* SIBallowed( long value )
 
   return "allowed";
 }
-const char* SIB2SoundingPresent( int value )
-{
+const char *SIB2SoundingPresent( int value ) {
   switch (value) {
-  case LTE_SoundingRS_UL_ConfigCommon_PR_NOTHING:
-    return "NOTHING";
+    case LTE_SoundingRS_UL_ConfigCommon_PR_NOTHING:
+      return "NOTHING";
 
-  case LTE_SoundingRS_UL_ConfigCommon_PR_release:
-    return "release";
+    case LTE_SoundingRS_UL_ConfigCommon_PR_release:
+      return "release";
 
-  case LTE_SoundingRS_UL_ConfigCommon_PR_setup:
-    return "setup";
+    case LTE_SoundingRS_UL_ConfigCommon_PR_setup:
+      return "setup";
   }
 
   return "ERR";
 }
-const char* SIB2numberOfRA_Preambles( long value )
-{
+const char *SIB2numberOfRA_Preambles( long value ) {
   static char temp[4] = {0};
 
   if (value < 0 || value > 15)
@@ -2812,16 +2501,14 @@ const char* SIB2numberOfRA_Preambles( long value )
   temp[3] = 0; // terminate string
   return temp;
 }
-const char* SIB2powerRampingStep( long value )
-{
+const char *SIB2powerRampingStep( long value ) {
   if (value < 0 || value > 3)
     return "ERR";
 
   static const char str[4][4] = {"dB0","dB2","dB4","dB6"};
   return str[value];
 }
-const char* SIB2preambleInitialReceivedTargetPower( long value )
-{
+const char *SIB2preambleInitialReceivedTargetPower( long value ) {
   static char temp[8] = {0};
 
   if (value < 0 || value > 15)
@@ -2831,8 +2518,7 @@ const char* SIB2preambleInitialReceivedTargetPower( long value )
   temp[7] = 0; // terminate string
   return temp;
 }
-const char* SIB2preambleTransMax( long value )
-{
+const char *SIB2preambleTransMax( long value ) {
   static char temp[5] = {0};
 
   if (value < 0 || value > 10)
@@ -2844,27 +2530,26 @@ const char* SIB2preambleTransMax( long value )
   }
 
   switch (value) {
-  case 6:
-    return "n10";
+    case 6:
+      return "n10";
 
-  case 7:
-    return "n20";
+    case 7:
+      return "n20";
 
-  case 8:
-    return "n50";
+    case 8:
+      return "n50";
 
-  case 9:
-    return "n100";
+    case 9:
+      return "n100";
 
-  case 10:
-    return "n200";
+    case 10:
+      return "n200";
   }
 
   /* unreachable but gcc warns... */
   return "ERR";
 }
-const char* SIB2ra_ResponseWindowSize( long value )
-{
+const char *SIB2ra_ResponseWindowSize( long value ) {
   static char temp[4] = {0};
 
   if (value < 0 || value > 7)
@@ -2876,8 +2561,7 @@ const char* SIB2ra_ResponseWindowSize( long value )
   snprintf( temp, sizeof(temp), "sf%ld", value+2 );
   return temp;
 }
-const char* SIB2mac_ContentionResolutionTimer( long value )
-{
+const char *SIB2mac_ContentionResolutionTimer( long value ) {
   static char temp[5] = {0};
 
   if (value < 0 || value > 7)
@@ -2886,8 +2570,7 @@ const char* SIB2mac_ContentionResolutionTimer( long value )
   snprintf( temp, sizeof(temp), "sf%ld", 8 + value*8 );
   return temp;
 }
-const char* SIB2modificationPeriodCoeff( long value )
-{
+const char *SIB2modificationPeriodCoeff( long value ) {
   static char temp[32] = {0};
 
   if (value < 0 || value > 3)
@@ -2896,8 +2579,7 @@ const char* SIB2modificationPeriodCoeff( long value )
   snprintf( temp, sizeof(temp), "n%d", (int)pow(2,value+1) );
   return temp;
 }
-const char* SIB2defaultPagingCycle( long value )
-{
+const char *SIB2defaultPagingCycle( long value ) {
   static char temp[32] = {0};
 
   if (value < 0 || value > 3)
@@ -2906,8 +2588,7 @@ const char* SIB2defaultPagingCycle( long value )
   snprintf( temp, sizeof(temp), "rf%d", (int)pow(2,value+4) );
   return temp;
 }
-const char* SIB2nB( long value )
-{
+const char *SIB2nB( long value ) {
   if (value < 0 || value > 7)
     return "ERR";
 
@@ -2920,17 +2601,14 @@ const char* SIB2nB( long value )
 
 //-----------------------------------------------------------------------------
 int decode_BCCH_DLSCH_Message(
-  const protocol_ctxt_t* const ctxt_pP,
+  const protocol_ctxt_t *const ctxt_pP,
   const uint8_t                eNB_index,
-  uint8_t*               const Sdu,
+  uint8_t               *const Sdu,
   const uint8_t                Sdu_len,
   const uint8_t                rsrq,
-  const uint8_t                rsrp )
-{
+  const uint8_t                rsrp ) {
   LTE_BCCH_DL_SCH_Message_t *bcch_message = NULL;
-  LTE_SystemInformationBlockType1_t* sib1 = UE_rrc_inst[ctxt_pP->module_id].sib1[eNB_index];
-  int i;
-
+  LTE_SystemInformationBlockType1_t *sib1 = UE_rrc_inst[ctxt_pP->module_id].sib1[eNB_index];
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_UE_DECODE_BCCH, VCD_FUNCTION_IN );
 
   if (((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&1) == 1) &&  // SIB1 received
@@ -2943,6 +2621,10 @@ int decode_BCCH_DLSCH_Message(
 
   rrc_set_sub_state( ctxt_pP->module_id, RRC_SUB_STATE_IDLE_RECEIVING_SIB );
 
+  if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
+    xer_fprint(stdout, &asn_DEF_LTE_BCCH_DL_SCH_Message,(void *)bcch_message );
+  }
+
   asn_dec_rval_t dec_rval = uper_decode_complete( NULL,
                             &asn_DEF_LTE_BCCH_DL_SCH_Message,
                             (void **)&bcch_message,
@@ -2953,83 +2635,50 @@ int decode_BCCH_DLSCH_Message(
     LOG_E( RRC, "[UE %"PRIu8"] Failed to decode BCCH_DLSCH_MESSAGE (%zu bits)\n",
            ctxt_pP->module_id,
            dec_rval.consumed );
-    for (i=0;i<Sdu_len;i++)
-      printf("%02x ",Sdu[i]);
-    printf("\n");
+    log_dump(RRC, Sdu, Sdu_len, LOG_DUMP_CHAR,"   Received bytes:\n" );
     // free the memory
-    SEQUENCE_free( &asn_DEF_LTE_BCCH_DL_SCH_Message, (void*)bcch_message, 1 );
+    SEQUENCE_free( &asn_DEF_LTE_BCCH_DL_SCH_Message, (void *)bcch_message, 1 );
     VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_UE_DECODE_BCCH, VCD_FUNCTION_OUT );
     return -1;
   }
 
-#if defined(ENABLE_ITTI)
-# if defined(DISABLE_ITTI_XER_PRINT)
-  {
-    MessageDef *msg_p;
-
-    msg_p = itti_alloc_new_message (TASK_RRC_UE, RRC_DL_BCCH_MESSAGE);
-    memcpy (&msg_p->ittiMsg, (void *) bcch_message, sizeof(RrcDlBcchMessage));
-
-    itti_send_msg_to_task (TASK_UNKNOWN, ctxt_pP->instance, msg_p);
-  }
-# else
-  {
-    char        message_string[15000];
-    size_t      message_string_size;
-
-    if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_LTE_BCCH_DL_SCH_Message, (void *)bcch_message)) > 0) {
-      MessageDef *msg_p;
-
-      msg_p = itti_alloc_new_message_sized (TASK_RRC_UE, RRC_DL_BCCH, message_string_size + sizeof (IttiMsgText));
-      msg_p->ittiMsg.rrc_dl_bcch.size = message_string_size;
-      memcpy(&msg_p->ittiMsg.rrc_dl_bcch.text, message_string, message_string_size);
-
-      itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
-    }
-  }
-# endif
-#endif
-
   if (bcch_message->message.present == LTE_BCCH_DL_SCH_MessageType_PR_c1) {
     switch (bcch_message->message.choice.c1.present) {
-    case LTE_BCCH_DL_SCH_MessageType__c1_PR_systemInformationBlockType1:
-      if ((ctxt_pP->frame % 2) == 0) {
-        // even frame
-        if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&1) == 0) {
-          LTE_SystemInformationBlockType1_t* sib1 = UE_rrc_inst[ctxt_pP->module_id].sib1[eNB_index];
-          memcpy( (void*)sib1,
-                  (void*)&bcch_message->message.choice.c1.choice.systemInformationBlockType1,
-                  sizeof(LTE_SystemInformationBlockType1_t) );
-          LOG_D( RRC, "[UE %"PRIu8"] Decoding First SIB1\n", ctxt_pP->module_id );
-
-          decode_SIB1( ctxt_pP, eNB_index, rsrq, rsrp );
+      case LTE_BCCH_DL_SCH_MessageType__c1_PR_systemInformationBlockType1:
+        if ((ctxt_pP->frame % 2) == 0) {
+          // even frame
+          if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&1) == 0) {
+            LTE_SystemInformationBlockType1_t *sib1 = UE_rrc_inst[ctxt_pP->module_id].sib1[eNB_index];
+            memcpy( (void *)sib1,
+                    (void *)&bcch_message->message.choice.c1.choice.systemInformationBlockType1,
+                    sizeof(LTE_SystemInformationBlockType1_t) );
+            LOG_D( RRC, "[UE %"PRIu8"] Decoding First SIB1\n", ctxt_pP->module_id );
+            decode_SIB1( ctxt_pP, eNB_index, rsrq, rsrp );
+          }
         }
-      }
 
-      break;
+        break;
 
-    case LTE_BCCH_DL_SCH_MessageType__c1_PR_systemInformation:
-      if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&1) == 1) {
-        // SIB1 with schedulingInfoList is available
-
-        LTE_SystemInformation_t* si = UE_rrc_inst[ctxt_pP->module_id].si[eNB_index];
-        memcpy( si,
-                &bcch_message->message.choice.c1.choice.systemInformation,
-                sizeof(LTE_SystemInformation_t) );
-
-        LOG_I( RRC, "[UE %"PRIu8"] Decoding SI for frameP %"PRIu32"\n",
-               ctxt_pP->module_id,
-               ctxt_pP->frame );
-        decode_SI( ctxt_pP, eNB_index );
-        //if (nfapi_mode == 3)
-        	UE_mac_inst[ctxt_pP->module_id].SI_Decoded = 1;
-      }
+      case LTE_BCCH_DL_SCH_MessageType__c1_PR_systemInformation:
+        if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&1) == 1) {
+          // SIB1 with schedulingInfoList is available
+          LTE_SystemInformation_t *si = UE_rrc_inst[ctxt_pP->module_id].si[eNB_index];
+          memcpy( si,
+                  &bcch_message->message.choice.c1.choice.systemInformation,
+                  sizeof(LTE_SystemInformation_t) );
+          LOG_I( RRC, "[UE %"PRIu8"] Decoding SI for frameP %"PRIu32"\n",
+                 ctxt_pP->module_id,
+                 ctxt_pP->frame );
+          decode_SI( ctxt_pP, eNB_index );
+          //if (nfapi_mode == 3)
+          UE_mac_inst[ctxt_pP->module_id].SI_Decoded = 1;
+        }
 
-      break;
+        break;
 
-    case LTE_BCCH_DL_SCH_MessageType__c1_PR_NOTHING:
-    default:
-      break;
+      case LTE_BCCH_DL_SCH_MessageType__c1_PR_NOTHING:
+      default:
+        break;
     }
   }
 
@@ -3043,22 +2692,18 @@ int decode_BCCH_DLSCH_Message(
   }
 
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_UE_DECODE_BCCH, VCD_FUNCTION_OUT );
-
   return 0;
 }
 
 //-----------------------------------------------------------------------------
 int decode_PCCH_DLSCH_Message(
-  const protocol_ctxt_t* const ctxt_pP,
+  const protocol_ctxt_t *const ctxt_pP,
   const uint8_t                eNB_index,
-  uint8_t*               const Sdu,
-  const uint8_t                Sdu_len)
-{
+  uint8_t               *const Sdu,
+  const uint8_t                Sdu_len) {
   LTE_PCCH_Message_t *pcch_message = NULL;
   int i;
-
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_UE_DECODE_PCCH, VCD_FUNCTION_IN );
-
   asn_dec_rval_t dec_rval = uper_decode_complete( NULL,
                             &asn_DEF_LTE_PCCH_Message,
                             (void **)&pcch_message,
@@ -3069,11 +2714,13 @@ int decode_PCCH_DLSCH_Message(
     LOG_E( RRC, "[UE %"PRIu8"] Failed to decode PCCH_MESSAGE (%zu bits)\n",
            ctxt_pP->module_id,
            dec_rval.consumed );
-    for (i=0;i<Sdu_len;i++)
+
+    for (i=0; i<Sdu_len; i++)
       printf("%02x ",Sdu[i]);
+
     printf("\n");
     // free the memory
-    SEQUENCE_free( &asn_DEF_LTE_PCCH_Message, (void*)pcch_message, 1 );
+    SEQUENCE_free( &asn_DEF_LTE_PCCH_Message, (void *)pcch_message, 1 );
     VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_UE_DECODE_PCCH, VCD_FUNCTION_OUT );
     return -1;
   }
@@ -3082,19 +2729,13 @@ int decode_PCCH_DLSCH_Message(
 }
 
 //-----------------------------------------------------------------------------
-int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index, const uint8_t rsrq, const uint8_t rsrp )
-{
-  LTE_SystemInformationBlockType1_t* sib1 = UE_rrc_inst[ctxt_pP->module_id].sib1[eNB_index];
-
+int decode_SIB1( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index, const uint8_t rsrq, const uint8_t rsrp ) {
+  LTE_SystemInformationBlockType1_t *sib1 = UE_rrc_inst[ctxt_pP->module_id].sib1[eNB_index];
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_UE_DECODE_SIB1, VCD_FUNCTION_IN );
-
   LOG_I( RRC, "[UE %d] : Dumping SIB 1\n", ctxt_pP->module_id );
-
   LTE_PLMN_Identity_t *PLMN_identity = &sib1->cellAccessRelatedInfo.plmn_IdentityList.list.array[0]->plmn_Identity;
-
   int mccdigits = PLMN_identity->mcc->list.count;
   int mncdigits = PLMN_identity->mnc.list.count;
-
   int mcc;
 
   if (mccdigits == 2) {
@@ -3111,10 +2752,10 @@ int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index,
     mnc = *PLMN_identity->mnc.list.array[0]*100 + *PLMN_identity->mnc.list.array[1]*10 + *PLMN_identity->mnc.list.array[2];
   }
 
-  LOG_I( RRC, "PLMN MCC %0*d, MNC %0*d, TAC 0x%04x\n", mccdigits, mcc, mncdigits, mnc, 
-       ((sib1->cellAccessRelatedInfo.trackingAreaCode.size == 2)?((sib1->cellAccessRelatedInfo.trackingAreaCode.buf[0]<<8) + sib1->cellAccessRelatedInfo.trackingAreaCode.buf[1]):0));
-  LOG_I( RRC, "cellReservedForOperatorUse                 : raw:%ld decoded:%s\n", sib1->cellAccessRelatedInfo.plmn_IdentityList.list.array[0]->cellReservedForOperatorUse, SIBreserved(sib1->cellAccessRelatedInfo.plmn_IdentityList.list.array[0]->cellReservedForOperatorUse) );
-
+  LOG_I( RRC, "PLMN MCC %0*d, MNC %0*d, TAC 0x%04x\n", mccdigits, mcc, mncdigits, mnc,
+         ((sib1->cellAccessRelatedInfo.trackingAreaCode.size == 2)?((sib1->cellAccessRelatedInfo.trackingAreaCode.buf[0]<<8) + sib1->cellAccessRelatedInfo.trackingAreaCode.buf[1]):0));
+  LOG_I( RRC, "cellReservedForOperatorUse                 : raw:%ld decoded:%s\n", sib1->cellAccessRelatedInfo.plmn_IdentityList.list.array[0]->cellReservedForOperatorUse,
+         SIBreserved(sib1->cellAccessRelatedInfo.plmn_IdentityList.list.array[0]->cellReservedForOperatorUse) );
   // search internal table for provider name
   int plmn_ind = 0;
 
@@ -3137,7 +2778,6 @@ int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index,
          sib1->cellAccessRelatedInfo.cellIdentity.buf[1],
          sib1->cellAccessRelatedInfo.cellIdentity.buf[2],
          sib1->cellAccessRelatedInfo.cellIdentity.buf[3] >> sib1->cellAccessRelatedInfo.cellIdentity.bits_unused);
-
   LOG_I( RRC, "cellAccessRelatedInfo.cellBarred           : raw:%ld decoded:%s\n", sib1->cellAccessRelatedInfo.cellBarred, SIBbarred(sib1->cellAccessRelatedInfo.cellBarred) );
   LOG_I( RRC, "cellAccessRelatedInfo.intraFreqReselection : raw:%ld decoded:%s\n", sib1->cellAccessRelatedInfo.intraFreqReselection, SIBallowed(sib1->cellAccessRelatedInfo.intraFreqReselection) );
   LOG_I( RRC, "cellAccessRelatedInfo.csg_Indication       : %d\n", sib1->cellAccessRelatedInfo.csg_Indication );
@@ -3189,55 +2829,50 @@ int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index,
 
   LOG_I( RRC, "siWindowLength                             : %s\n", siWindowLength[min(sib1->si_WindowLength,7)] );
   LOG_I( RRC, "systemInfoValueTag                         : %ld\n", sib1->systemInfoValueTag );
-
   UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIperiod     = siPeriod_int[sib1->schedulingInfoList.list.array[0]->si_Periodicity];
   UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIwindowsize = siWindowLength_int[sib1->si_WindowLength];
   LOG_I( RRC, "[FRAME unknown][RRC_UE][MOD %02"PRIu8"][][--- MAC_CONFIG_REQ (SIB1 params eNB %"PRIu8") --->][MAC_UE][MOD %02"PRIu8"][]\n",
          ctxt_pP->module_id, eNB_index, ctxt_pP->module_id );
-
   rrc_mac_config_req_ue(ctxt_pP->module_id, 0, eNB_index,
-			(LTE_RadioResourceConfigCommonSIB_t *)NULL,
-			(struct LTE_PhysicalConfigDedicated *)NULL,
+                        (LTE_RadioResourceConfigCommonSIB_t *)NULL,
+                        (struct LTE_PhysicalConfigDedicated *)NULL,
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-			(LTE_SCellToAddMod_r10_t *)NULL,
-			//(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
-#endif
-			(LTE_MeasObjectToAddMod_t **)NULL,
-			(LTE_MAC_MainConfig_t *)NULL,
-			0,
-			(struct LTE_LogicalChannelConfig *)NULL,
-			(LTE_MeasGapConfig_t *)NULL,
-			UE_rrc_inst[ctxt_pP->module_id].sib1[eNB_index]->tdd_Config,
-			(LTE_MobilityControlInfo_t *) NULL,
-			&UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIwindowsize,
-			&UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIperiod,
-			NULL,
-			NULL,
-			NULL,
-			(LTE_MBSFN_SubframeConfigList_t *)NULL
+                        (LTE_SCellToAddMod_r10_t *)NULL,
+                        //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
+#endif
+                        (LTE_MeasObjectToAddMod_t **)NULL,
+                        (LTE_MAC_MainConfig_t *)NULL,
+                        0,
+                        (struct LTE_LogicalChannelConfig *)NULL,
+                        (LTE_MeasGapConfig_t *)NULL,
+                        UE_rrc_inst[ctxt_pP->module_id].sib1[eNB_index]->tdd_Config,
+                        (LTE_MobilityControlInfo_t *) NULL,
+                        &UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIwindowsize,
+                        &UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIperiod,
+                        NULL,
+                        NULL,
+                        NULL,
+                        (LTE_MBSFN_SubframeConfigList_t *)NULL
 #if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0))
-			,0,
-			(LTE_MBSFN_AreaInfoList_r9_t *)NULL,
-			(LTE_PMCH_InfoList_r9_t *)NULL
-
+                        ,0,
+                        (LTE_MBSFN_AreaInfoList_r9_t *)NULL,
+                        (LTE_PMCH_InfoList_r9_t *)NULL
 #endif
 #ifdef CBA
-			,
-			0,
-			0
+                        ,
+                        0,
+                        0
 #endif
 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-           ,
-           0,
-           NULL,
-           NULL
+                        ,
+                        0,
+                        NULL,
+                        NULL
 #endif
-			);
-
+                       );
   LOG_I(RRC,"Setting SIStatus bit 0 to 1\n");
   UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus = 1;
   UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIB1systemInfoValueTag = sib1->systemInfoValueTag;
-
 #if defined(ENABLE_ITTI) && defined(ENABLE_USE_MME)
   {
     int cell_valid = 0;
@@ -3246,13 +2881,11 @@ int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index,
       /* Cell is not barred */
       int plmn;
       int plmn_number;
-
       plmn_number = sib1->cellAccessRelatedInfo.plmn_IdentityList.list.count;
 
       /* Compare requested PLMN and PLMNs from SIB1*/
       for (plmn = 0; plmn < plmn_number; plmn++) {
         LTE_PLMN_Identity_t *plmn_Identity;
-
         plmn_Identity = &sib1->cellAccessRelatedInfo.plmn_IdentityList.list.array[plmn]->plmn_Identity;
 
         if (
@@ -3278,7 +2911,6 @@ int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index,
         ) {
           /* PLMN match, send a confirmation to NAS */
           MessageDef  *msg_p;
-
           msg_p = itti_alloc_new_message(TASK_RRC_UE, NAS_CELL_SELECTION_CNF);
           NAS_CELL_SELECTION_CNF (msg_p).errCode = AS_SUCCESS;
           NAS_CELL_SELECTION_CNF (msg_p).cellID = BIT_STRING_to_uint32(&sib1->cellAccessRelatedInfo.cellIdentity);
@@ -3286,7 +2918,6 @@ int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index,
           NAS_CELL_SELECTION_CNF (msg_p).rat = 0xFF;
           NAS_CELL_SELECTION_CNF (msg_p).rsrq = rsrq;
           NAS_CELL_SELECTION_CNF (msg_p).rsrp = rsrp;
-
           itti_send_msg_to_task(TASK_NAS_UE, ctxt_pP->instance, msg_p);
           cell_valid = 1;
           break;
@@ -3297,24 +2928,19 @@ int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index,
     if (cell_valid == 0) {
       /* Cell can not be used, ask PHY to try the next one */
       MessageDef  *msg_p;
-
       msg_p = itti_alloc_new_message(TASK_RRC_UE, PHY_FIND_NEXT_CELL_REQ);
-
       itti_send_msg_to_task(TASK_PHY_UE, ctxt_pP->instance, msg_p);
-      LOG_E(RRC, "Synched with a cell, but PLMN doesn't match our SIM, the message PHY_FIND_NEXT_CELL_REQ is sent but lost in current UE implementation! \n"); 
+      LOG_E(RRC, "Synched with a cell, but PLMN doesn't match our SIM, the message PHY_FIND_NEXT_CELL_REQ is sent but lost in current UE implementation! \n");
     }
   }
 #endif
-
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_UE_DECODE_SIB1, VCD_FUNCTION_OUT );
-
   return 0;
 }
 
 
 //-----------------------------------------------------------------------------
- void dump_sib2( LTE_SystemInformationBlockType2_t *sib2 )
-{
+void dump_sib2( LTE_SystemInformationBlockType2_t *sib2 ) {
   // ac_BarringInfo
   if (sib2->ac_BarringInfo) {
     LOG_I( RRC, "ac_BarringInfo->ac_BarringForEmergency : %d\n",
@@ -3364,7 +2990,6 @@ int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index,
   LOG_I( RRC, "radioResourceConfigCommon.rach_ConfigCommon.powerRampingParameters.preambleInitialReceivedTargetPower : raw:%ld decoded:%s\n",
          sib2->radioResourceConfigCommon.rach_ConfigCommon.powerRampingParameters.preambleInitialReceivedTargetPower,
          SIB2preambleInitialReceivedTargetPower(sib2->radioResourceConfigCommon.rach_ConfigCommon.powerRampingParameters.preambleInitialReceivedTargetPower) );
-
   LOG_I( RRC, "radioResourceConfigCommon.rach_ConfigCommon.ra_SupervisionInfo.preambleTransMax              : raw:%ld decoded:%s\n",
          sib2->radioResourceConfigCommon.rach_ConfigCommon.ra_SupervisionInfo.preambleTransMax,
          SIB2preambleTransMax(sib2->radioResourceConfigCommon.rach_ConfigCommon.ra_SupervisionInfo.preambleTransMax) );
@@ -3374,15 +2999,12 @@ int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index,
   LOG_I( RRC, "radioResourceConfigCommon.rach_ConfigCommon.ra_SupervisionInfo.mac_ContentionResolutionTimer : raw:%ld decoded:%s\n",
          sib2->radioResourceConfigCommon.rach_ConfigCommon.ra_SupervisionInfo.mac_ContentionResolutionTimer,
          SIB2mac_ContentionResolutionTimer(sib2->radioResourceConfigCommon.rach_ConfigCommon.ra_SupervisionInfo.mac_ContentionResolutionTimer) );
-
   LOG_I( RRC, "radioResourceConfigCommon.rach_ConfigCommon.maxHARQ_Msg3Tx : %ld\n",
          sib2->radioResourceConfigCommon.rach_ConfigCommon.maxHARQ_Msg3Tx );
-
   // BCCH
   LOG_I( RRC, "radioResourceConfigCommon.bcch_Config.modificationPeriodCoeff : raw:%ld decoded:%s\n",
          sib2->radioResourceConfigCommon.bcch_Config.modificationPeriodCoeff,
          SIB2modificationPeriodCoeff(sib2->radioResourceConfigCommon.bcch_Config.modificationPeriodCoeff) );
-
   // PCCH
   LOG_I( RRC, "radioResourceConfigCommon.pcch_Config.defaultPagingCycle : raw:%ld decoded:%s\n",
          sib2->radioResourceConfigCommon.pcch_Config.defaultPagingCycle,
@@ -3390,7 +3012,6 @@ int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index,
   LOG_I( RRC, "radioResourceConfigCommon.pcch_Config.nB                 : raw:%ld decoded:%s\n",
          sib2->radioResourceConfigCommon.pcch_Config.nB,
          SIB2nB(sib2->radioResourceConfigCommon.pcch_Config.nB) );
-
   // PRACH
   LOG_I( RRC, "radioResourceConfigCommon.prach_Config.rootSequenceIndex                          : %ld\n",
          sib2->radioResourceConfigCommon.prach_Config.rootSequenceIndex );
@@ -3402,13 +3023,11 @@ int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index,
          sib2->radioResourceConfigCommon.prach_Config.prach_ConfigInfo.zeroCorrelationZoneConfig );
   LOG_I( RRC, "radioResourceConfigCommon.prach_Config.prach_ConfigInfo.prach_FreqOffset          : %ld\n",
          sib2->radioResourceConfigCommon.prach_Config.prach_ConfigInfo.prach_FreqOffset );
-
   // PDSCH-Config
   LOG_I( RRC, "radioResourceConfigCommon.pdsch_ConfigCommon.referenceSignalPower : %ld\n",
          sib2->radioResourceConfigCommon.pdsch_ConfigCommon.referenceSignalPower );
   LOG_I( RRC, "radioResourceConfigCommon.pdsch_ConfigCommon.p_b                  : %ld\n",
          sib2->radioResourceConfigCommon.pdsch_ConfigCommon.p_b );
-
   // PUSCH-Config
   LOG_I( RRC, "radioResourceConfigCommon.pusch_ConfigCommon.pusch_ConfigBasic.n_SB                : %ld\n",
          sib2->radioResourceConfigCommon.pusch_ConfigCommon.pusch_ConfigBasic.n_SB );
@@ -3426,7 +3045,6 @@ int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index,
          sib2->radioResourceConfigCommon.pusch_ConfigCommon.ul_ReferenceSignalsPUSCH.sequenceHoppingEnabled );
   LOG_I( RRC, "radioResourceConfigCommon.pusch_ConfigCommon.ul_ReferenceSignalsPUSCH.cyclicShift            : %ld\n",
          sib2->radioResourceConfigCommon.pusch_ConfigCommon.ul_ReferenceSignalsPUSCH.cyclicShift );
-
   // PUCCH-Config
   LOG_I( RRC, "radioResourceConfigCommon.pucch_ConfigCommon.deltaPUCCH_Shift : %ld\n",
          sib2->radioResourceConfigCommon.pucch_ConfigCommon.deltaPUCCH_Shift );
@@ -3436,7 +3054,6 @@ int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index,
          sib2->radioResourceConfigCommon.pucch_ConfigCommon.nCS_AN );
   LOG_I( RRC, "radioResourceConfigCommon.pucch_ConfigCommon.n1PUCCH_AN       : %ld\n",
          sib2->radioResourceConfigCommon.pucch_ConfigCommon.n1PUCCH_AN );
-
   // SoundingRS_UL_Config
   LOG_I( RRC, "radioResourceConfigCommon.soundingRS_UL_ConfigCommon.present : raw:%d decoded:%s\n",
          sib2->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.present,
@@ -3450,11 +3067,10 @@ int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index,
     LOG_I( RRC, "radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.ackNackSRS_SimultaneousTransmission : %d\n",
            sib2->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.ackNackSRS_SimultaneousTransmission );
 
-    if(sib2->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.srs_MaxUpPts)
-    {
-    LOG_I( RRC, "radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.srs_MaxUpPts                        : %ld\n",
-           /* TODO: check that it's okay to access [0] */
-           sib2->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.srs_MaxUpPts[0] );
+    if(sib2->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.srs_MaxUpPts) {
+      LOG_I( RRC, "radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.srs_MaxUpPts                        : %ld\n",
+             /* TODO: check that it's okay to access [0] */
+             sib2->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.srs_MaxUpPts[0] );
     }
   }
 
@@ -3477,15 +3093,12 @@ int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index,
          sib2->radioResourceConfigCommon.uplinkPowerControlCommon.deltaFList_PUCCH.deltaF_PUCCH_Format2b );
   LOG_I( RRC, "radioResourceConfigCommon.uplinkPowerControlCommon.deltaPreambleMsg3 : %ld\n",
          sib2->radioResourceConfigCommon.uplinkPowerControlCommon.deltaPreambleMsg3 );
-
   LOG_I( RRC, "radioResourceConfigCommon.ul_CyclicPrefixLength : %ld\n",
          sib2->radioResourceConfigCommon.ul_CyclicPrefixLength );
-
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 2, 0))
   // UplinkPowerControlCommon_v1020
   // ...
 #endif
-
   LOG_I( RRC, "ue_TimersAndConstants.t300 : %ld\n", sib2->ue_TimersAndConstants.t300 );
   LOG_I( RRC, "ue_TimersAndConstants.t301 : %ld\n", sib2->ue_TimersAndConstants.t301 );
   LOG_I( RRC, "ue_TimersAndConstants.t310 : %ld\n", sib2->ue_TimersAndConstants.t310 );
@@ -3512,15 +3125,16 @@ int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index,
     LOG_I( RRC, "mbsfn_SubframeConfigList : not defined\n" );
 
   LOG_I( RRC, "timeAlignmentTimerCommon : %ld\n", sib2->timeAlignmentTimerCommon );
-
 #if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0))
+
   if (sib2->lateNonCriticalExtension) {
     LOG_I( RRC, "lateNonCriticalExtension : %p\n", sib2->lateNonCriticalExtension );
   } else
     LOG_I( RRC, "lateNonCriticalExtension : not defined\n" );
-#endif
 
+#endif
 #if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0))
+
   if (sib2->ext1 && sib2->ext1->ssac_BarringForMMTEL_Voice_r9) {
     LOG_I( RRC, "ssac_BarringForMMTEL_Voice_r9->ac_BarringFactor       : %ld\n",
            sib2->ext1->ssac_BarringForMMTEL_Voice_r9->ac_BarringFactor );
@@ -3540,9 +3154,10 @@ int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index,
            BIT_STRING_to_uint32(&sib2->ext1->ssac_BarringForMMTEL_Video_r9->ac_BarringForSpecialAC) );
   } else
     LOG_I( RRC, "ssac_BarringForMMTEL_Video_r9 : not defined\n" );
-#endif
 
+#endif
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
+
   if (sib2->ext2 && sib2->ext2->ac_BarringForCSFB_r10) {
     LOG_I( RRC, "ac_BarringForCSFB_r10->ac_BarringFactor       : %ld\n",
            sib2->ext2->ac_BarringForCSFB_r10->ac_BarringFactor );
@@ -3557,10 +3172,8 @@ int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index,
 }
 
 //-----------------------------------------------------------------------------
- void dump_sib3( LTE_SystemInformationBlockType3_t *sib3 )
-{
+void dump_sib3( LTE_SystemInformationBlockType3_t *sib3 ) {
   LOG_I( RRC, "Dumping SIB3 (see TS36.331 V8.21.0)\n" );
-
   int q_Hyst_dB = sib3->cellReselectionInfoCommon.q_Hyst; // sib3->cellReselectionInfoCommon.q_Hyst is a enumerated value
 
   if (q_Hyst_dB > 6)
@@ -3593,7 +3206,6 @@ int decode_SIB1( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index,
 
   LOG_I( RRC, "cellReselectionServingFreqInfo.threshServingLow : %ld\n", sib3->cellReselectionServingFreqInfo.threshServingLow );
   LOG_I( RRC, "cellReselectionServingFreqInfo.cellReselectionPriority : %ld\n", sib3->cellReselectionServingFreqInfo.cellReselectionPriority );
-
   LOG_I( RRC, "intraFreqCellReselectionInfo.q_RxLevMin : %ld\n", sib3->intraFreqCellReselectionInfo.q_RxLevMin );
 
   if (sib3->intraFreqCellReselectionInfo.p_Max) {
@@ -3630,7 +3242,6 @@ int Qoffsettab[31] = {-24,-22,-20,-18,-16,-14,-12,-10,-8,-6,-5,-4,-3,-2,-1,0,1,2
 int PhysCellIdRange[16] = {4,8,12,16,24,32,48,64,84,96,128,168,252,504,0,0};
 
 uint64_t arfcn_to_freq(long arfcn) {
-
   if (arfcn < 600)  // Band 1
     return((uint64_t)2110000000 + (arfcn*100000));
   else if (arfcn <1200) // Band 2
@@ -3704,86 +3315,102 @@ uint64_t arfcn_to_freq(long arfcn) {
     exit(1);
   }
 }
- void dump_sib5( LTE_SystemInformationBlockType5_t *sib5 )
-{
+void dump_sib5( LTE_SystemInformationBlockType5_t *sib5 ) {
   LTE_InterFreqCarrierFreqList_t interFreqCarrierFreqList = sib5->interFreqCarrierFreqList;
   int i,j;
   LTE_InterFreqCarrierFreqInfo_t *ifcfInfo;
-
   LOG_I( RRC, "Dumping SIB5 (see TS36.331 V8.21.0)\n" );
 
-  for (i=0;i<interFreqCarrierFreqList.list.count;i++) {
+  for (i=0; i<interFreqCarrierFreqList.list.count; i++) {
     LOG_I(RRC, "SIB5 InterFreqCarrierFreq element %d/%d\n",i,interFreqCarrierFreqList.list.count);
     ifcfInfo = interFreqCarrierFreqList.list.array[i];
     LOG_I(RRC, "   DL Carrier Frequency/ARFCN : %ld/%ld\n",
-	  arfcn_to_freq(ifcfInfo->dl_CarrierFreq),
-	  ifcfInfo->dl_CarrierFreq);
+          arfcn_to_freq(ifcfInfo->dl_CarrierFreq),
+          ifcfInfo->dl_CarrierFreq);
     LOG_I(RRC,"   Q_RXLevMin : %ld\n", ifcfInfo->q_RxLevMin);
+
     if (ifcfInfo->p_Max != NULL)
       LOG_I(RRC,"   P_max : %ld\n", *ifcfInfo->p_Max);
+
     LOG_I(RRC,"   T_ReselectionEUTRA : %ld\n",ifcfInfo->t_ReselectionEUTRA);
+
     if (ifcfInfo->t_ReselectionEUTRA_SF) {
       LOG_I(RRC,"   t_ReselectionEUTRA_SF.sf_Medium %ld, t_ReselectionEUTRA_SF.sf_High %ld",
-	    ifcfInfo->t_ReselectionEUTRA_SF->sf_Medium,
-	    ifcfInfo->t_ReselectionEUTRA_SF->sf_High);
+            ifcfInfo->t_ReselectionEUTRA_SF->sf_Medium,
+            ifcfInfo->t_ReselectionEUTRA_SF->sf_High);
     }
+
     LOG_I(RRC,"   threshX_High : %ld\n",ifcfInfo->threshX_High);
     LOG_I(RRC,"   threshX_Low : %ld\n",ifcfInfo->threshX_Low);
+
     switch(ifcfInfo->allowedMeasBandwidth) {
-    case LTE_AllowedMeasBandwidth_mbw6:
-      LOG_I(RRC,"   AllowedMeasBandwidth : 6\n");
-      break;
-    case LTE_AllowedMeasBandwidth_mbw15:
-      LOG_I(RRC,"   AllowedMeasBandwidth : 15\n");
-      break;
-    case LTE_AllowedMeasBandwidth_mbw25:
-      LOG_I(RRC,"   AllowedMeasBandwidth : 25\n");
-      break;
-    case LTE_AllowedMeasBandwidth_mbw50:
-      LOG_I(RRC,"   AllowedMeasBandwidth : 50\n");
-      break;
-    case LTE_AllowedMeasBandwidth_mbw75:
-      LOG_I(RRC,"   AllowedMeasBandwidth : 75\n");
-      break;
-    case LTE_AllowedMeasBandwidth_mbw100:
-      LOG_I(RRC,"   AllowedMeasBandwidth : 100\n");
-      break;
+      case LTE_AllowedMeasBandwidth_mbw6:
+        LOG_I(RRC,"   AllowedMeasBandwidth : 6\n");
+        break;
+
+      case LTE_AllowedMeasBandwidth_mbw15:
+        LOG_I(RRC,"   AllowedMeasBandwidth : 15\n");
+        break;
+
+      case LTE_AllowedMeasBandwidth_mbw25:
+        LOG_I(RRC,"   AllowedMeasBandwidth : 25\n");
+        break;
+
+      case LTE_AllowedMeasBandwidth_mbw50:
+        LOG_I(RRC,"   AllowedMeasBandwidth : 50\n");
+        break;
+
+      case LTE_AllowedMeasBandwidth_mbw75:
+        LOG_I(RRC,"   AllowedMeasBandwidth : 75\n");
+        break;
+
+      case LTE_AllowedMeasBandwidth_mbw100:
+        LOG_I(RRC,"   AllowedMeasBandwidth : 100\n");
+        break;
     }
+
     if (ifcfInfo->presenceAntennaPort1)
       LOG_I(RRC,"   PresenceAntennaPort1 : True\n");
     else
       LOG_I(RRC,"   PresenceAntennaPort1 : False\n");
+
     if (ifcfInfo->cellReselectionPriority) {
       LOG_I(RRC,"   CellReselectionPriority : %ld\n",
-	    *ifcfInfo->cellReselectionPriority);
+            *ifcfInfo->cellReselectionPriority);
     }
+
     LOG_I(RRC,"   NeighCellConfig  : ");
-    for (j=0;j<ifcfInfo->neighCellConfig.size;j++) {
+
+    for (j=0; j<ifcfInfo->neighCellConfig.size; j++) {
       printf("%2x ",ifcfInfo->neighCellConfig.buf[j]);
     }
+
     printf("\n");
+
     if (ifcfInfo->q_OffsetFreq)
       LOG_I(RRC,"   Q_OffsetFreq : %d\n",Qoffsettab[*ifcfInfo->q_OffsetFreq]);
-    if (ifcfInfo->interFreqNeighCellList) {
-
-      for (j=0;j<ifcfInfo->interFreqNeighCellList->list.count;j++) {
-	LOG_I(RRC,"   Cell %d\n", j);
-	LOG_I(RRC,"      PhysCellId : %ld\n",ifcfInfo->interFreqNeighCellList->list.array[j]->physCellId);
-	LOG_I(RRC,"      Q_OffsetRange : %ld\n",ifcfInfo->interFreqNeighCellList->list.array[j]->q_OffsetCell);
 
+    if (ifcfInfo->interFreqNeighCellList) {
+      for (j=0; j<ifcfInfo->interFreqNeighCellList->list.count; j++) {
+        LOG_I(RRC,"   Cell %d\n", j);
+        LOG_I(RRC,"      PhysCellId : %ld\n",ifcfInfo->interFreqNeighCellList->list.array[j]->physCellId);
+        LOG_I(RRC,"      Q_OffsetRange : %ld\n",ifcfInfo->interFreqNeighCellList->list.array[j]->q_OffsetCell);
       }
     }
+
     if (ifcfInfo->interFreqBlackCellList) {
+      for (j=0; j<ifcfInfo->interFreqBlackCellList->list.count; j++) {
+        LOG_I(RRC,"   Cell %d\n", j);
+        LOG_I(RRC,"      PhysCellId start: %ld\n",ifcfInfo->interFreqBlackCellList->list.array[j]->start);
 
-      for (j=0;j<ifcfInfo->interFreqBlackCellList->list.count;j++) {
-	LOG_I(RRC,"   Cell %d\n", j);
-	LOG_I(RRC,"      PhysCellId start: %ld\n",ifcfInfo->interFreqBlackCellList->list.array[j]->start);
-	if (ifcfInfo->interFreqBlackCellList->list.array[i]->range) {
-	  LOG_I(RRC,"      PhysCellId Range : %ld\n",*ifcfInfo->interFreqBlackCellList->list.array[j]->range);
-	}
+        if (ifcfInfo->interFreqBlackCellList->list.array[i]->range) {
+          LOG_I(RRC,"      PhysCellId Range : %ld\n",*ifcfInfo->interFreqBlackCellList->list.array[j]->range);
+        }
       }
     }
+
 #if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0))
+
     if (ifcfInfo->ext1 && ifcfInfo->ext1->q_QualMin_r9)
       LOG_I(RRC,"   Q_QualMin_r9 : %ld\n",*ifcfInfo->ext1->q_QualMin_r9);
 
@@ -3791,14 +3418,13 @@ uint64_t arfcn_to_freq(long arfcn) {
       LOG_I(RRC,"   threshX_HighQ_r9 : %ld\n",ifcfInfo->ext1->threshX_Q_r9->threshX_HighQ_r9);
       LOG_I(RRC,"   threshX_LowQ_r9: %ld\n",ifcfInfo->ext1->threshX_Q_r9->threshX_LowQ_r9);
     }
+
 #endif
   }
-
 }
 
 #if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0))
- void dump_sib13( LTE_SystemInformationBlockType13_r9_t *sib13 )
-{
+void dump_sib13( LTE_SystemInformationBlockType13_r9_t *sib13 ) {
   LOG_I( RRC, "[UE] Dumping SIB13\n" );
   LOG_I( RRC, "[UE] dumping sib13 second time\n" );
   LOG_I( RRC, "[UE] NotificationRepetitionCoeff-r9 : %ld\n", sib13->notificationConfig_r9.notificationRepetitionCoeff_r9 );
@@ -3809,72 +3435,73 @@ uint64_t arfcn_to_freq(long arfcn) {
 
 //TTN - SIB18
 //-----------------------------------------------------------------------------
- void dump_sib18(LTE_SystemInformationBlockType18_r12_t *sib18){
-   LOG_I( RRC, "[UE] Dumping SIB18\n" );
-   for (int i = 0; i < sib18->commConfig_r12->commRxPool_r12.list.count; i++) {
-       LOG_I(RRC, " Contents of SIB18 %d/%d \n", i+1, sib18->commConfig_r12->commRxPool_r12.list.count);
-       LOG_I(RRC, " SIB18 rxPool_sc_CP_Len: %ld \n", sib18->commConfig_r12->commRxPool_r12.list.array[i]->sc_CP_Len_r12);
-       LOG_I(RRC, " SIB18 sc_Period_r12: %ld \n", sib18->commConfig_r12->commRxPool_r12.list.array[i]->sc_Period_r12);
-       LOG_I(RRC, " SIB18 data_CP_Len_r12: %ld \n", sib18->commConfig_r12->commRxPool_r12.list.array[i]->data_CP_Len_r12);
-       LOG_I(RRC, " SIB18 prb_Num_r12: %ld \n", sib18->commConfig_r12->commRxPool_r12.list.array[i]->sc_TF_ResourceConfig_r12.prb_Num_r12);
-       LOG_I(RRC, " SIB18 prb_Start_r12: %ld \n", sib18->commConfig_r12->commRxPool_r12.list.array[i]->sc_TF_ResourceConfig_r12.prb_Start_r12);
-       LOG_I(RRC, " SIB18 prb_End_r12: %ld \n", sib18->commConfig_r12->commRxPool_r12.list.array[i]->sc_TF_ResourceConfig_r12.prb_End_r12);
-       //to add more log
-     }
+void dump_sib18(LTE_SystemInformationBlockType18_r12_t *sib18) {
+  LOG_I( RRC, "[UE] Dumping SIB18\n" );
+
+  for (int i = 0; i < sib18->commConfig_r12->commRxPool_r12.list.count; i++) {
+    LOG_I(RRC, " Contents of SIB18 %d/%d \n", i+1, sib18->commConfig_r12->commRxPool_r12.list.count);
+    LOG_I(RRC, " SIB18 rxPool_sc_CP_Len: %ld \n", sib18->commConfig_r12->commRxPool_r12.list.array[i]->sc_CP_Len_r12);
+    LOG_I(RRC, " SIB18 sc_Period_r12: %ld \n", sib18->commConfig_r12->commRxPool_r12.list.array[i]->sc_Period_r12);
+    LOG_I(RRC, " SIB18 data_CP_Len_r12: %ld \n", sib18->commConfig_r12->commRxPool_r12.list.array[i]->data_CP_Len_r12);
+    LOG_I(RRC, " SIB18 prb_Num_r12: %ld \n", sib18->commConfig_r12->commRxPool_r12.list.array[i]->sc_TF_ResourceConfig_r12.prb_Num_r12);
+    LOG_I(RRC, " SIB18 prb_Start_r12: %ld \n", sib18->commConfig_r12->commRxPool_r12.list.array[i]->sc_TF_ResourceConfig_r12.prb_Start_r12);
+    LOG_I(RRC, " SIB18 prb_End_r12: %ld \n", sib18->commConfig_r12->commRxPool_r12.list.array[i]->sc_TF_ResourceConfig_r12.prb_End_r12);
+    //to add more log
+  }
 }
 
 //TTN -  SIB19
 //-----------------------------------------------------------------------------
- void dump_sib19(LTE_SystemInformationBlockType19_r12_t *sib19){
-   LOG_I( RRC, "[UE] Dumping SIB19\n" );
-   for (int i = 0; i < sib19->discConfig_r12->discRxPool_r12.list.count; i++) {
-       LOG_I(RRC, " Contents of SIB19 %d/%d \n", i+1, sib19->discConfig_r12->discRxPool_r12.list.count);
-       LOG_I(RRC, " SIB19 cp_Len_r12: %ld \n", sib19->discConfig_r12->discRxPool_r12.list.array[i]->cp_Len_r12);
-       LOG_I(RRC, " SIB19 discPeriod_r12: %ld \n", sib19->discConfig_r12->discRxPool_r12.list.array[i]->discPeriod_r12);
-       LOG_I(RRC, " SIB19 numRetx_r12: %ld \n", sib19->discConfig_r12->discRxPool_r12.list.array[i]->numRetx_r12);
-       LOG_I(RRC, " SIB19 numRepetition_r12: %ld \n", sib19->discConfig_r12->discRxPool_r12.list.array[i]->numRepetition_r12);
-       LOG_I(RRC, " SIB19 prb_Num_r12: %ld \n", sib19->discConfig_r12->discRxPool_r12.list.array[i]->tf_ResourceConfig_r12.prb_Num_r12);
-       LOG_I(RRC, " SIB19 prb_Start_r12: %ld \n", sib19->discConfig_r12->discRxPool_r12.list.array[i]->tf_ResourceConfig_r12.prb_Start_r12);
-       LOG_I(RRC, " SIB19 prb_End_r12: %ld \n", sib19->discConfig_r12->discRxPool_r12.list.array[i]->tf_ResourceConfig_r12.prb_End_r12);
-       //to add more log
-     }
+void dump_sib19(LTE_SystemInformationBlockType19_r12_t *sib19) {
+  LOG_I( RRC, "[UE] Dumping SIB19\n" );
+
+  for (int i = 0; i < sib19->discConfig_r12->discRxPool_r12.list.count; i++) {
+    LOG_I(RRC, " Contents of SIB19 %d/%d \n", i+1, sib19->discConfig_r12->discRxPool_r12.list.count);
+    LOG_I(RRC, " SIB19 cp_Len_r12: %ld \n", sib19->discConfig_r12->discRxPool_r12.list.array[i]->cp_Len_r12);
+    LOG_I(RRC, " SIB19 discPeriod_r12: %ld \n", sib19->discConfig_r12->discRxPool_r12.list.array[i]->discPeriod_r12);
+    LOG_I(RRC, " SIB19 numRetx_r12: %ld \n", sib19->discConfig_r12->discRxPool_r12.list.array[i]->numRetx_r12);
+    LOG_I(RRC, " SIB19 numRepetition_r12: %ld \n", sib19->discConfig_r12->discRxPool_r12.list.array[i]->numRepetition_r12);
+    LOG_I(RRC, " SIB19 prb_Num_r12: %ld \n", sib19->discConfig_r12->discRxPool_r12.list.array[i]->tf_ResourceConfig_r12.prb_Num_r12);
+    LOG_I(RRC, " SIB19 prb_Start_r12: %ld \n", sib19->discConfig_r12->discRxPool_r12.list.array[i]->tf_ResourceConfig_r12.prb_Start_r12);
+    LOG_I(RRC, " SIB19 prb_End_r12: %ld \n", sib19->discConfig_r12->discRxPool_r12.list.array[i]->tf_ResourceConfig_r12.prb_End_r12);
+    //to add more log
+  }
 }
 
- void dump_sib21(LTE_SystemInformationBlockType21_r14_t *sib21){
-    if ((sib21->sl_V2X_ConfigCommon_r14 != NULL) && (sib21->sl_V2X_ConfigCommon_r14->v2x_CommRxPool_r14 !=NULL) ){
-       for (int i = 0; i < sib21->sl_V2X_ConfigCommon_r14->v2x_CommRxPool_r14->list.count; i++) {
-          LOG_I(RRC, " Contents of SIB21 %d/%d \n", i+1, sib21->sl_V2X_ConfigCommon_r14->v2x_CommRxPool_r14->list.count);
-          LOG_I(RRC, " SIB21 sl_Subframe_r14: %d \n", sib21->sl_V2X_ConfigCommon_r14->v2x_CommRxPool_r14->list.array[i]->sl_Subframe_r14.present);
-          LOG_I(RRC, " SIB21 adjacencyPSCCH_PSSCH_r14: %d \n", sib21->sl_V2X_ConfigCommon_r14->v2x_CommRxPool_r14->list.array[i]->adjacencyPSCCH_PSSCH_r14);
-          LOG_I(RRC, " SIB21 sizeSubchannel_r14: %ld \n", sib21->sl_V2X_ConfigCommon_r14->v2x_CommRxPool_r14->list.array[i]->sizeSubchannel_r14);
-          LOG_I(RRC, " SIB21 numSubchannel_r14: %ld \n", sib21->sl_V2X_ConfigCommon_r14->v2x_CommRxPool_r14->list.array[i]->numSubchannel_r14);
-          LOG_I(RRC, " SIB21 startRB_Subchannel_r14: %ld \n", sib21->sl_V2X_ConfigCommon_r14->v2x_CommRxPool_r14->list.array[i]->startRB_Subchannel_r14);
-          //to add more log
-       }
+void dump_sib21(LTE_SystemInformationBlockType21_r14_t *sib21) {
+  if ((sib21->sl_V2X_ConfigCommon_r14 != NULL) && (sib21->sl_V2X_ConfigCommon_r14->v2x_CommRxPool_r14 !=NULL) ) {
+    for (int i = 0; i < sib21->sl_V2X_ConfigCommon_r14->v2x_CommRxPool_r14->list.count; i++) {
+      LOG_I(RRC, " Contents of SIB21 %d/%d \n", i+1, sib21->sl_V2X_ConfigCommon_r14->v2x_CommRxPool_r14->list.count);
+      LOG_I(RRC, " SIB21 sl_Subframe_r14: %d \n", sib21->sl_V2X_ConfigCommon_r14->v2x_CommRxPool_r14->list.array[i]->sl_Subframe_r14.present);
+      LOG_I(RRC, " SIB21 adjacencyPSCCH_PSSCH_r14: %d \n", sib21->sl_V2X_ConfigCommon_r14->v2x_CommRxPool_r14->list.array[i]->adjacencyPSCCH_PSSCH_r14);
+      LOG_I(RRC, " SIB21 sizeSubchannel_r14: %ld \n", sib21->sl_V2X_ConfigCommon_r14->v2x_CommRxPool_r14->list.array[i]->sizeSubchannel_r14);
+      LOG_I(RRC, " SIB21 numSubchannel_r14: %ld \n", sib21->sl_V2X_ConfigCommon_r14->v2x_CommRxPool_r14->list.array[i]->numSubchannel_r14);
+      LOG_I(RRC, " SIB21 startRB_Subchannel_r14: %ld \n", sib21->sl_V2X_ConfigCommon_r14->v2x_CommRxPool_r14->list.array[i]->startRB_Subchannel_r14);
+      //to add more log
     }
- }
+  }
+}
 
 
 #endif
 //-----------------------------------------------------------------------------
- int decode_SI( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index )
-{
-  LTE_SystemInformation_t** si = &UE_rrc_inst[ctxt_pP->module_id].si[eNB_index];
+int decode_SI( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index ) {
+  LTE_SystemInformation_t **si = &UE_rrc_inst[ctxt_pP->module_id].si[eNB_index];
   int new_sib = 0;
-  LTE_SystemInformationBlockType1_t* sib1 = UE_rrc_inst[ctxt_pP->module_id].sib1[eNB_index];
-
+  LTE_SystemInformationBlockType1_t *sib1 = UE_rrc_inst[ctxt_pP->module_id].sib1[eNB_index];
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_UE_DECODE_SI, VCD_FUNCTION_IN );
 
   // Dump contents
   if ((*si)->criticalExtensions.present == LTE_SystemInformation__criticalExtensions_PR_systemInformation_r8 ||
 #if (LTE_RRC_VERSION >= MAKE_VERSION(15, 3, 0))
-		  (*si)->criticalExtensions.present == LTE_SystemInformation__criticalExtensions_PR_criticalExtensionsFuture_r15) {
+      (*si)->criticalExtensions.present == LTE_SystemInformation__criticalExtensions_PR_criticalExtensionsFuture_r15) {
 #else
-		  (*si)->criticalExtensions.present == LTE_SystemInformation__criticalExtensions_PR_criticalExtensionsFuture) {
+      (*si)->criticalExtensions.present == LTE_SystemInformation__criticalExtensions_PR_criticalExtensionsFuture) {
 #endif
     LOG_D( RRC, "[UE] (*si)->criticalExtensions.choice.systemInformation_r8.sib_TypeAndInfo.list.count %d\n",
            (*si)->criticalExtensions.choice.systemInformation_r8.sib_TypeAndInfo.list.count );
-  } else {
+  }
+  else {
     LOG_D( RRC, "[UE] Unknown criticalExtension version (not Rel8)\n" );
     return -1;
   }
@@ -3884,311 +3511,310 @@ uint64_t arfcn_to_freq(long arfcn) {
     typeandinfo = (*si)->criticalExtensions.choice.systemInformation_r8.sib_TypeAndInfo.list.array[i];
 
     switch(typeandinfo->present) {
-    case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib2:
-      if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&2) == 0) {
-	UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=2;
-	new_sib=1;
-	memcpy( UE_rrc_inst[ctxt_pP->module_id].sib2[eNB_index], &typeandinfo->choice.sib2, sizeof(LTE_SystemInformationBlockType2_t) );
-	LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB2 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
-	dump_sib2( UE_rrc_inst[ctxt_pP->module_id].sib2[eNB_index] );
-	LOG_I( RRC, "[FRAME %05"PRIu32"][RRC_UE][MOD %02"PRIu8"][][--- MAC_CONFIG_REQ (SIB2 params  eNB %"PRIu8") --->][MAC_UE][MOD %02"PRIu8"][]\n",
-	       ctxt_pP->frame, ctxt_pP->module_id, eNB_index, ctxt_pP->module_id );
-
-	rrc_mac_config_req_ue(ctxt_pP->module_id, 0, eNB_index,
-			      &UE_rrc_inst[ctxt_pP->module_id].sib2[eNB_index]->radioResourceConfigCommon,
-			      (struct LTE_PhysicalConfigDedicated *)NULL,
+      case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib2:
+        if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&2) == 0) {
+          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=2;
+          new_sib=1;
+          memcpy( UE_rrc_inst[ctxt_pP->module_id].sib2[eNB_index], &typeandinfo->choice.sib2, sizeof(LTE_SystemInformationBlockType2_t) );
+          LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB2 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
+          dump_sib2( UE_rrc_inst[ctxt_pP->module_id].sib2[eNB_index] );
+          LOG_I( RRC, "[FRAME %05"PRIu32"][RRC_UE][MOD %02"PRIu8"][][--- MAC_CONFIG_REQ (SIB2 params  eNB %"PRIu8") --->][MAC_UE][MOD %02"PRIu8"][]\n",
+                 ctxt_pP->frame, ctxt_pP->module_id, eNB_index, ctxt_pP->module_id );
+          rrc_mac_config_req_ue(ctxt_pP->module_id, 0, eNB_index,
+                                &UE_rrc_inst[ctxt_pP->module_id].sib2[eNB_index]->radioResourceConfigCommon,
+                                (struct LTE_PhysicalConfigDedicated *)NULL,
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-			      (LTE_SCellToAddMod_r10_t *)NULL,
-#endif
-			      (LTE_MeasObjectToAddMod_t **)NULL,
-			      (LTE_MAC_MainConfig_t *)NULL,
-			      0,
-			      (struct LTE_LogicalChannelConfig *)NULL,
-			      (LTE_MeasGapConfig_t *)NULL,
-			      (LTE_TDD_Config_t *)NULL,
-			      (LTE_MobilityControlInfo_t *)NULL,
-			      NULL,
-			      NULL,
-			      UE_rrc_inst[ctxt_pP->module_id].sib2[eNB_index]->freqInfo.ul_CarrierFreq,
-			      UE_rrc_inst[ctxt_pP->module_id].sib2[eNB_index]->freqInfo.ul_Bandwidth,
-			      &UE_rrc_inst[ctxt_pP->module_id].sib2[eNB_index]->freqInfo.additionalSpectrumEmission,
-			      UE_rrc_inst[ctxt_pP->module_id].sib2[eNB_index]->mbsfn_SubframeConfigList
+                                (LTE_SCellToAddMod_r10_t *)NULL,
+#endif
+                                (LTE_MeasObjectToAddMod_t **)NULL,
+                                (LTE_MAC_MainConfig_t *)NULL,
+                                0,
+                                (struct LTE_LogicalChannelConfig *)NULL,
+                                (LTE_MeasGapConfig_t *)NULL,
+                                (LTE_TDD_Config_t *)NULL,
+                                (LTE_MobilityControlInfo_t *)NULL,
+                                NULL,
+                                NULL,
+                                UE_rrc_inst[ctxt_pP->module_id].sib2[eNB_index]->freqInfo.ul_CarrierFreq,
+                                UE_rrc_inst[ctxt_pP->module_id].sib2[eNB_index]->freqInfo.ul_Bandwidth,
+                                &UE_rrc_inst[ctxt_pP->module_id].sib2[eNB_index]->freqInfo.additionalSpectrumEmission,
+                                UE_rrc_inst[ctxt_pP->module_id].sib2[eNB_index]->mbsfn_SubframeConfigList
 #if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0))
-			      ,0,
-			      (LTE_MBSFN_AreaInfoList_r9_t *)NULL,
-			      (LTE_PMCH_InfoList_r9_t *)NULL
-
+                                ,0,
+                                (LTE_MBSFN_AreaInfoList_r9_t *)NULL,
+                                (LTE_PMCH_InfoList_r9_t *)NULL
 #endif
 #ifdef CBA
-			      ,0,
-			      0
+                                ,0,
+                                0
 #endif
 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-           ,
-           0,
-           NULL,
-           NULL
+                                ,
+                                0,
+                                NULL,
+                                NULL
 #endif
-			      );
-	// After SI is received, prepare RRCConnectionRequest
+                               );
+          // After SI is received, prepare RRCConnectionRequest
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
 
-	if (UE_rrc_inst[ctxt_pP->module_id].MBMS_flag < 3) // see -Q option
+          if (UE_rrc_inst[ctxt_pP->module_id].MBMS_flag < 3) // see -Q option
 #endif
 #if !(defined(ENABLE_ITTI) && defined(ENABLE_USE_MME))
-	  rrc_ue_generate_RRCConnectionRequest( ctxt_pP, eNB_index );
+            rrc_ue_generate_RRCConnectionRequest( ctxt_pP, eNB_index );
 
 #endif
 
-	if (UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].State == RRC_IDLE) {
-	  LOG_I( RRC, "[UE %d] Received SIB1/SIB2/SIB3 Switching to RRC_SI_RECEIVED\n", ctxt_pP->module_id );
-	  UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].State = RRC_SI_RECEIVED;
+          if (UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].State == RRC_IDLE) {
+            LOG_I( RRC, "[UE %d] Received SIB1/SIB2/SIB3 Switching to RRC_SI_RECEIVED\n", ctxt_pP->module_id );
+            UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].State = RRC_SI_RECEIVED;
 #if ENABLE_RAL
-	  {
-	    MessageDef                            *message_ral_p = NULL;
-	    rrc_ral_system_information_ind_t       ral_si_ind;
-
-	    message_ral_p = itti_alloc_new_message (TASK_RRC_UE, RRC_RAL_SYSTEM_INFORMATION_IND);
-	    memset(&ral_si_ind, 0, sizeof(rrc_ral_system_information_ind_t));
-	    ral_si_ind.plmn_id.MCCdigit2 = '0';
-	    ral_si_ind.plmn_id.MCCdigit1 = '2';
-	    ral_si_ind.plmn_id.MNCdigit3 = '0';
-	    ral_si_ind.plmn_id.MCCdigit3 = '8';
-	    ral_si_ind.plmn_id.MNCdigit2 = '9';
-	    ral_si_ind.plmn_id.MNCdigit1 = '9';
-	    ral_si_ind.cell_id        = 1;
-	    ral_si_ind.dbm            = 0;
-	    //ral_si_ind.dbm            = fifo_dump_emos_UE.PHY_measurements->rx_rssi_dBm[eNB_index];
-	    // TO DO
-	    ral_si_ind.sinr           = 0;
-	    //ral_si_ind.sinr           = fifo_dump_emos_UE.PHY_measurements->subband_cqi_dB[eNB_index][phy_vars_ue->lte_frame_parms.nb_antennas_rx][0];
-	    // TO DO
-	    ral_si_ind.link_data_rate = 0;
-	    memcpy (&message_ral_p->ittiMsg, (void *) &ral_si_ind, sizeof(rrc_ral_system_information_ind_t));
+            {
+              MessageDef                            *message_ral_p = NULL;
+              rrc_ral_system_information_ind_t       ral_si_ind;
+              message_ral_p = itti_alloc_new_message (TASK_RRC_UE, RRC_RAL_SYSTEM_INFORMATION_IND);
+              memset(&ral_si_ind, 0, sizeof(rrc_ral_system_information_ind_t));
+              ral_si_ind.plmn_id.MCCdigit2 = '0';
+              ral_si_ind.plmn_id.MCCdigit1 = '2';
+              ral_si_ind.plmn_id.MNCdigit3 = '0';
+              ral_si_ind.plmn_id.MCCdigit3 = '8';
+              ral_si_ind.plmn_id.MNCdigit2 = '9';
+              ral_si_ind.plmn_id.MNCdigit1 = '9';
+              ral_si_ind.cell_id        = 1;
+              ral_si_ind.dbm            = 0;
+              //ral_si_ind.dbm            = fifo_dump_emos_UE.PHY_measurements->rx_rssi_dBm[eNB_index];
+              // TO DO
+              ral_si_ind.sinr           = 0;
+              //ral_si_ind.sinr           = fifo_dump_emos_UE.PHY_measurements->subband_cqi_dB[eNB_index][phy_vars_ue->lte_frame_parms.nb_antennas_rx][0];
+              // TO DO
+              ral_si_ind.link_data_rate = 0;
+              memcpy (&message_ral_p->ittiMsg, (void *) &ral_si_ind, sizeof(rrc_ral_system_information_ind_t));
 #warning "ue_mod_idP ? for instance ?"
-	    itti_send_msg_to_task (TASK_RAL_UE, UE_MODULE_ID_TO_INSTANCE(ctxt_pP->module_id), message_ral_p);
-	  }
+              itti_send_msg_to_task (TASK_RAL_UE, UE_MODULE_ID_TO_INSTANCE(ctxt_pP->module_id), message_ral_p);
+            }
 #endif
-	}
-      }
-      break; // case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib2
+          }
+        }
 
-    case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib3:
-      if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&4) == 0) {
-	UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=4;
-	new_sib=1;
-	memcpy( UE_rrc_inst[ctxt_pP->module_id].sib3[eNB_index], &typeandinfo->choice.sib3, sizeof(LTE_SystemInformationBlockType3_t) );
-	LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB3 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
-	dump_sib3( UE_rrc_inst[ctxt_pP->module_id].sib3[eNB_index] );
+        break; // case SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib2
 
-      }
-      break;
+      case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib3:
+        if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&4) == 0) {
+          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=4;
+          new_sib=1;
+          memcpy( UE_rrc_inst[ctxt_pP->module_id].sib3[eNB_index], &typeandinfo->choice.sib3, sizeof(LTE_SystemInformationBlockType3_t) );
+          LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB3 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
+          dump_sib3( UE_rrc_inst[ctxt_pP->module_id].sib3[eNB_index] );
+        }
 
-    case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib4:
-      if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&8) == 0) {
-	UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=8;
-	new_sib=1;
-	memcpy( UE_rrc_inst[ctxt_pP->module_id].sib4[eNB_index], &typeandinfo->choice.sib4, sizeof(LTE_SystemInformationBlockType4_t) );
-	LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB4 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
-      }
+        break;
 
-      break;
+      case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib4:
+        if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&8) == 0) {
+          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=8;
+          new_sib=1;
+          memcpy( UE_rrc_inst[ctxt_pP->module_id].sib4[eNB_index], &typeandinfo->choice.sib4, sizeof(LTE_SystemInformationBlockType4_t) );
+          LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB4 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
+        }
 
-    case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib5:
-      if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&16) == 0) {
-	UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=16;
-	new_sib=1;
-	memcpy( UE_rrc_inst[ctxt_pP->module_id].sib5[eNB_index], &typeandinfo->choice.sib5, sizeof(LTE_SystemInformationBlockType5_t) );
-	LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB5 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
-	dump_sib5(UE_rrc_inst[ctxt_pP->module_id].sib5[eNB_index]);
-      }
-      break;
+        break;
 
-    case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib6:
-      if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&32) == 0) {
-	UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=32;
-	new_sib=1;
+      case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib5:
+        if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&16) == 0) {
+          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=16;
+          new_sib=1;
+          memcpy( UE_rrc_inst[ctxt_pP->module_id].sib5[eNB_index], &typeandinfo->choice.sib5, sizeof(LTE_SystemInformationBlockType5_t) );
+          LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB5 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
+          dump_sib5(UE_rrc_inst[ctxt_pP->module_id].sib5[eNB_index]);
+        }
 
-	memcpy( UE_rrc_inst[ctxt_pP->module_id].sib6[eNB_index], &typeandinfo->choice.sib6, sizeof(LTE_SystemInformationBlockType6_t) );
-	LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB6 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
-      }
-      break;
+        break;
 
-    case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib7:
-      if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&64) == 0) {
-	UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=64;
-	new_sib=1;
-	memcpy( UE_rrc_inst[ctxt_pP->module_id].sib7[eNB_index], &typeandinfo->choice.sib7, sizeof(LTE_SystemInformationBlockType7_t) );
-	LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB7 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
-      }
-      break;
+      case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib6:
+        if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&32) == 0) {
+          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=32;
+          new_sib=1;
+          memcpy( UE_rrc_inst[ctxt_pP->module_id].sib6[eNB_index], &typeandinfo->choice.sib6, sizeof(LTE_SystemInformationBlockType6_t) );
+          LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB6 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
+        }
 
-    case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib8:
-      if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&128) == 0) {
-	UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=128;
-	new_sib=1;
-	memcpy( UE_rrc_inst[ctxt_pP->module_id].sib8[eNB_index], &typeandinfo->choice.sib8, sizeof(LTE_SystemInformationBlockType8_t) );
-	LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB8 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
-      }
-      break;
+        break;
 
-    case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib9:
-      if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&256) == 0) {
-	UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=256;
-	new_sib=1;
-	memcpy( UE_rrc_inst[ctxt_pP->module_id].sib9[eNB_index], &typeandinfo->choice.sib9, sizeof(LTE_SystemInformationBlockType9_t) );
-	LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB9 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
-      }
-      break;
+      case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib7:
+        if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&64) == 0) {
+          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=64;
+          new_sib=1;
+          memcpy( UE_rrc_inst[ctxt_pP->module_id].sib7[eNB_index], &typeandinfo->choice.sib7, sizeof(LTE_SystemInformationBlockType7_t) );
+          LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB7 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
+        }
 
-    case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib10:
-      if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&512) == 0) {
-	UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=512;
-	new_sib=1;
-	memcpy( UE_rrc_inst[ctxt_pP->module_id].sib10[eNB_index], &typeandinfo->choice.sib10, sizeof(LTE_SystemInformationBlockType10_t) );
-	LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB10 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
-      }
-      break;
+        break;
+
+      case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib8:
+        if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&128) == 0) {
+          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=128;
+          new_sib=1;
+          memcpy( UE_rrc_inst[ctxt_pP->module_id].sib8[eNB_index], &typeandinfo->choice.sib8, sizeof(LTE_SystemInformationBlockType8_t) );
+          LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB8 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
+        }
 
-    case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib11:
-      if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&1024) == 0) {
-	UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=1024;
-	new_sib=1;
+        break;
 
-	memcpy( UE_rrc_inst[ctxt_pP->module_id].sib11[eNB_index], &typeandinfo->choice.sib11, sizeof(LTE_SystemInformationBlockType11_t) );
-	LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB11 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
-      }
-      break;
+      case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib9:
+        if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&256) == 0) {
+          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=256;
+          new_sib=1;
+          memcpy( UE_rrc_inst[ctxt_pP->module_id].sib9[eNB_index], &typeandinfo->choice.sib9, sizeof(LTE_SystemInformationBlockType9_t) );
+          LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB9 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
+        }
+
+        break;
+
+      case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib10:
+        if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&512) == 0) {
+          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=512;
+          new_sib=1;
+          memcpy( UE_rrc_inst[ctxt_pP->module_id].sib10[eNB_index], &typeandinfo->choice.sib10, sizeof(LTE_SystemInformationBlockType10_t) );
+          LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB10 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
+        }
+
+        break;
+
+      case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib11:
+        if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&1024) == 0) {
+          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=1024;
+          new_sib=1;
+          memcpy( UE_rrc_inst[ctxt_pP->module_id].sib11[eNB_index], &typeandinfo->choice.sib11, sizeof(LTE_SystemInformationBlockType11_t) );
+          LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB11 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
+        }
 
+        break;
 #if (LTE_RRC_VERSION >= MAKE_VERSION(9, 2, 0))
 
-    case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib12_v920:
-      if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&2048) == 0) {
-	UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=2048;
-	new_sib=1;
-	memcpy( UE_rrc_inst[ctxt_pP->module_id].sib12[eNB_index], &typeandinfo->choice.sib12_v920, sizeof(LTE_SystemInformationBlockType12_r9_t) );
-	LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB12 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
-      }
-      break;
+      case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib12_v920:
+        if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&2048) == 0) {
+          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=2048;
+          new_sib=1;
+          memcpy( UE_rrc_inst[ctxt_pP->module_id].sib12[eNB_index], &typeandinfo->choice.sib12_v920, sizeof(LTE_SystemInformationBlockType12_r9_t) );
+          LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB12 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
+        }
+
+        break;
 
-    case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib13_v920:
-      if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&4096) == 0) {
-	UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=4096;
-	new_sib=1;
-
-	memcpy( UE_rrc_inst[ctxt_pP->module_id].sib13[eNB_index], &typeandinfo->choice.sib13_v920, sizeof(LTE_SystemInformationBlockType13_r9_t) );
-	LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB13 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
-	dump_sib13( UE_rrc_inst[ctxt_pP->module_id].sib13[eNB_index] );
-	// adding here function to store necessary parameters for using in decode_MCCH_Message + maybe transfer to PHY layer
-	LOG_I( RRC, "[FRAME %05"PRIu32"][RRC_UE][MOD %02"PRIu8"][][--- MAC_CONFIG_REQ (SIB13 params eNB %"PRIu8") --->][MAC_UE][MOD %02"PRIu8"][]\n",
-	       ctxt_pP->frame, ctxt_pP->module_id, eNB_index, ctxt_pP->module_id);
-	rrc_mac_config_req_ue(ctxt_pP->module_id,0,eNB_index,
-			      (LTE_RadioResourceConfigCommonSIB_t *)NULL,
-			      (struct LTE_PhysicalConfigDedicated *)NULL,
-			      (LTE_SCellToAddMod_r10_t *)NULL,
-			      (LTE_MeasObjectToAddMod_t **)NULL,
-			      (LTE_MAC_MainConfig_t *)NULL,
-			      0,
-			      (struct LTE_LogicalChannelConfig *)NULL,
-			      (LTE_MeasGapConfig_t *)NULL,
-			      (LTE_TDD_Config_t *)NULL,
-			      (LTE_MobilityControlInfo_t *)NULL,
-			      NULL,
-			      NULL,
-			      NULL,
-			      NULL,
-			      NULL,
-			      (LTE_MBSFN_SubframeConfigList_t *)NULL,
-			      0,
-			      &UE_rrc_inst[ctxt_pP->module_id].sib13[eNB_index]->mbsfn_AreaInfoList_r9,
-			      (LTE_PMCH_InfoList_r9_t *)NULL
+      case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib13_v920:
+        if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&4096) == 0) {
+          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=4096;
+          new_sib=1;
+          memcpy( UE_rrc_inst[ctxt_pP->module_id].sib13[eNB_index], &typeandinfo->choice.sib13_v920, sizeof(LTE_SystemInformationBlockType13_r9_t) );
+          LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB13 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
+          dump_sib13( UE_rrc_inst[ctxt_pP->module_id].sib13[eNB_index] );
+          // adding here function to store necessary parameters for using in decode_MCCH_Message + maybe transfer to PHY layer
+          LOG_I( RRC, "[FRAME %05"PRIu32"][RRC_UE][MOD %02"PRIu8"][][--- MAC_CONFIG_REQ (SIB13 params eNB %"PRIu8") --->][MAC_UE][MOD %02"PRIu8"][]\n",
+                 ctxt_pP->frame, ctxt_pP->module_id, eNB_index, ctxt_pP->module_id);
+          rrc_mac_config_req_ue(ctxt_pP->module_id,0,eNB_index,
+                                (LTE_RadioResourceConfigCommonSIB_t *)NULL,
+                                (struct LTE_PhysicalConfigDedicated *)NULL,
+                                (LTE_SCellToAddMod_r10_t *)NULL,
+                                (LTE_MeasObjectToAddMod_t **)NULL,
+                                (LTE_MAC_MainConfig_t *)NULL,
+                                0,
+                                (struct LTE_LogicalChannelConfig *)NULL,
+                                (LTE_MeasGapConfig_t *)NULL,
+                                (LTE_TDD_Config_t *)NULL,
+                                (LTE_MobilityControlInfo_t *)NULL,
+                                NULL,
+                                NULL,
+                                NULL,
+                                NULL,
+                                NULL,
+                                (LTE_MBSFN_SubframeConfigList_t *)NULL,
+                                0,
+                                &UE_rrc_inst[ctxt_pP->module_id].sib13[eNB_index]->mbsfn_AreaInfoList_r9,
+                                (LTE_PMCH_InfoList_r9_t *)NULL
 #ifdef CBA
-			      ,0,
-			      0
+                                ,0,
+                                0
 #endif
 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-           ,
-           0,
-           NULL,
-           NULL
-#endif
-			      );
-	break;
-      }
+                                ,
+                                0,
+                                NULL,
+                                NULL
 #endif
+                               );
+          break;
+        }
 
+#endif
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
+
       //SIB18
-    case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib18_v1250:
-       if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&8192) == 0) {
+      case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib18_v1250:
+        if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&8192) == 0) {
           UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=8192;
           new_sib=1;
-
           memcpy( UE_rrc_inst[ctxt_pP->module_id].sib18[eNB_index], &typeandinfo->choice.sib18_v1250, sizeof(LTE_SystemInformationBlockType18_r12_t) );
           LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB18 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
           dump_sib18( UE_rrc_inst[ctxt_pP->module_id].sib18[eNB_index] );
           // adding here function to store necessary parameters to transfer to PHY layer
           LOG_I( RRC, "[FRAME %05"PRIu32"][RRC_UE][MOD %02"PRIu8"][][--- MAC_CONFIG_REQ (SIB18 params eNB %"PRIu8") --->][MAC_UE][MOD %02"PRIu8"][]\n",
-                ctxt_pP->frame, ctxt_pP->module_id, eNB_index, ctxt_pP->module_id);
-
+                 ctxt_pP->frame, ctxt_pP->module_id, eNB_index, ctxt_pP->module_id);
           //process SIB18 to transfer SL-related parameters to PHY
           rrc_ue_process_sidelink_radioResourceConfig(ctxt_pP->module_id,eNB_index,
-                UE_rrc_inst[ctxt_pP->module_id].sib18[eNB_index],
-                (LTE_SystemInformationBlockType19_r12_t *)NULL,
-                (LTE_SL_CommConfig_r12_t *)NULL,
-                (LTE_SL_DiscConfig_r12_t *)NULL
-          );
+              UE_rrc_inst[ctxt_pP->module_id].sib18[eNB_index],
+              (LTE_SystemInformationBlockType19_r12_t *)NULL,
+              (LTE_SL_CommConfig_r12_t *)NULL,
+              (LTE_SL_DiscConfig_r12_t *)NULL
+                                                     );
+        }
 
-       }
-       break;
+        break;
 
-       //SIB19
-    case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib19_v1250:
-       if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&16384) == 0) {
+      //SIB19
+      case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib19_v1250:
+        if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&16384) == 0) {
           UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=16384;
           new_sib=1;
-
           memcpy( UE_rrc_inst[ctxt_pP->module_id].sib19[eNB_index], &typeandinfo->choice.sib19_v1250, sizeof(LTE_SystemInformationBlockType19_r12_t) );
           LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB19 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
           dump_sib19( UE_rrc_inst[ctxt_pP->module_id].sib19[eNB_index] );
           // adding here function to store necessary parameters to transfer to PHY layer
           LOG_I( RRC, "[FRAME %05"PRIu32"][RRC_UE][MOD %02"PRIu8"][][--- MAC_CONFIG_REQ (SIB19 params eNB %"PRIu8") --->][MAC_UE][MOD %02"PRIu8"][]\n",
-                ctxt_pP->frame, ctxt_pP->module_id, eNB_index, ctxt_pP->module_id);
+                 ctxt_pP->frame, ctxt_pP->module_id, eNB_index, ctxt_pP->module_id);
           //process SIB19 to transfer SL-related parameters to PHY
           rrc_ue_process_sidelink_radioResourceConfig(ctxt_pP->module_id,eNB_index,
-                (LTE_SystemInformationBlockType18_r12_t *)NULL,
-                UE_rrc_inst[ctxt_pP->module_id].sib19[eNB_index],
-                (LTE_SL_CommConfig_r12_t *)NULL,
-                (LTE_SL_DiscConfig_r12_t *)NULL
-          );
+              (LTE_SystemInformationBlockType18_r12_t *)NULL,
+              UE_rrc_inst[ctxt_pP->module_id].sib19[eNB_index],
+              (LTE_SL_CommConfig_r12_t *)NULL,
+              (LTE_SL_DiscConfig_r12_t *)NULL
+                                                     );
+        }
 
-       }
-       break;
+        break;
 
-       //SIB21
-    case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib21_v1430:
-       if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&32768) == 0) {
+      //SIB21
+      case LTE_SystemInformation_r8_IEs__sib_TypeAndInfo__Member_PR_sib21_v1430:
+        if ((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&32768) == 0) {
           UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus|=32768;
           new_sib=1;
-
           memcpy( UE_rrc_inst[ctxt_pP->module_id].sib21[eNB_index], &typeandinfo->choice.sib21_v1430, sizeof(LTE_SystemInformationBlockType21_r14_t) );
           LOG_I( RRC, "[UE %"PRIu8"] Frame %"PRIu32" Found SIB21 from eNB %"PRIu8"\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index );
           dump_sib21( UE_rrc_inst[ctxt_pP->module_id].sib21[eNB_index] );
           // adding here function to store necessary parameters to transfer to PHY layer
           LOG_I( RRC, "[FRAME %05"PRIu32"][RRC_UE][MOD %02"PRIu8"][][--- MAC_CONFIG_REQ (SIB21 params eNB %"PRIu8") --->][MAC_UE][MOD %02"PRIu8"][]\n",
-                ctxt_pP->frame, ctxt_pP->module_id, eNB_index, ctxt_pP->module_id);
+                 ctxt_pP->frame, ctxt_pP->module_id, eNB_index, ctxt_pP->module_id);
           //process SIB21
           //TODO
-       }
-       break;
-
+        }
 
+        break;
 #endif
-    default:
-      break;
-    }
 
+      default:
+        break;
+    }
   }
+
   if (new_sib == 1) {
     UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIcnt++;
 
@@ -4196,9 +3822,9 @@ uint64_t arfcn_to_freq(long arfcn) {
       rrc_set_sub_state( ctxt_pP->module_id, RRC_SUB_STATE_IDLE_SIB_COMPLETE );
 
     LOG_I(RRC,"SIStatus %x, SIcnt %d/%d\n",
-	  UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus,
-	  UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIcnt,
-	  sib1->schedulingInfoList.list.count);
+          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus,
+          UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIcnt,
+          sib1->schedulingInfoList.list.count);
   }
 
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_UE_DECODE_SI  , VCD_FUNCTION_OUT);
@@ -4207,8 +3833,7 @@ uint64_t arfcn_to_freq(long arfcn) {
 
 // layer 3 filtering of RSRP (EUTRA) measurements: 36.331, Sec. 5.5.3.2
 //-----------------------------------------------------------------------------
-void ue_meas_filtering( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index )
-{
+void ue_meas_filtering( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index ) {
   float a  = UE_rrc_inst[ctxt_pP->module_id].filter_coeff_rsrp; // 'a' in 36.331 Sec. 5.5.3.2
   float a1 = UE_rrc_inst[ctxt_pP->module_id].filter_coeff_rsrq;
   //float rsrp_db, rsrq_db;
@@ -4219,18 +3844,17 @@ void ue_meas_filtering( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_
       if(UE_rrc_inst[ctxt_pP->module_id].QuantityConfig[0]->quantityConfigEUTRA->filterCoefficientRSRP != NULL) {
         for (eNB_offset = 0; eNB_offset<1+get_n_adj_cells(ctxt_pP->module_id,0); eNB_offset++) {
           UE_rrc_inst[ctxt_pP->module_id].rsrp_db[eNB_offset] = get_RSRP(ctxt_pP->module_id,0,eNB_offset);
-	  /*
-	  (dB_fixed_times10(get_RSRP(ctxt_pP->module_id,0,eNB_offset))/10.0) -
-	  get_rx_total_gain_dB(ctxt_pP->module_id,0) -
-	  get_bw_gain_dB(ctxt_pP->module_id);
-	  */
+          /*
+          (dB_fixed_times10(get_RSRP(ctxt_pP->module_id,0,eNB_offset))/10.0) -
+          get_rx_total_gain_dB(ctxt_pP->module_id,0) -
+          get_bw_gain_dB(ctxt_pP->module_id);
+          */
           UE_rrc_inst[ctxt_pP->module_id].rsrp_db_filtered[eNB_offset] =
             (1.0-a)*UE_rrc_inst[ctxt_pP->module_id].rsrp_db_filtered[eNB_offset] +
             a*UE_rrc_inst[ctxt_pP->module_id].rsrp_db[eNB_offset];
-
           LOG_D(RRC,"RSRP_dBm: %3.2f \n",get_RSRP(ctxt_pP->module_id,0,eNB_offset));;
-	  /*          LOG_D(RRC,"gain_loss_dB: %d \n",get_rx_total_gain_dB(ctxt_pP->module_id,0));
-		      LOG_D(RRC,"gain_fixed_dB: %d \n",dB_fixed(frame_parms->N_RB_DL*12));*/
+          /*          LOG_D(RRC,"gain_loss_dB: %d \n",get_rx_total_gain_dB(ctxt_pP->module_id,0));
+                LOG_D(RRC,"gain_fixed_dB: %d \n",dB_fixed(frame_parms->N_RB_DL*12));*/
           LOG_D(PHY,"[UE %d] Frame %d, RRC Measurements => rssi %3.1f dBm (digital: %3.1f dB)\n",
                 ctxt_pP->module_id,
                 ctxt_pP->frame,
@@ -4268,9 +3892,7 @@ void ue_meas_filtering( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_
 
 //Below routine implements Measurement Reporting procedure from 36.331 Section 5.5.5
 //-----------------------------------------------------------------------------
- void rrc_ue_generate_MeasurementReport(protocol_ctxt_t* const ctxt_pP, uint8_t eNB_index )
-{
-
+void rrc_ue_generate_MeasurementReport(protocol_ctxt_t *const ctxt_pP, uint8_t eNB_index ) {
   uint8_t             buffer[32], size;
   uint8_t             i;
   uint8_t             target_eNB_offset;
@@ -4282,7 +3904,6 @@ void ue_meas_filtering( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_
   float            rsrp_filtered, rsrq_filtered;
   static frame_t   pframe=0;
   int              result;
-
   nElem = 98;
   nElem1 = 35;
   target_eNB_offset = UE_rrc_inst[ctxt_pP->module_id].Info[0].handoverTarget; // eNB_offset of target eNB: used to obtain the mod_id of target eNB
@@ -4290,14 +3911,11 @@ void ue_meas_filtering( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_
   for (i=0; i<MAX_MEAS_ID; i++) {
     if (UE_rrc_inst[ctxt_pP->module_id].measReportList[0][i] != NULL) {
       measId = UE_rrc_inst[ctxt_pP->module_id].measReportList[0][i]->measId;
-
       // Note: Values in the meas report have to be the mapped values...to implement binary search for LUT
       rsrp_filtered = UE_rrc_inst[ctxt_pP->module_id].rsrp_db_filtered[eNB_index];//nid_cell];
       rsrp_s = binary_search_float(RSRP_meas_mapping,nElem, rsrp_filtered);
-
       rsrq_filtered = UE_rrc_inst[ctxt_pP->module_id].rsrq_db_filtered[eNB_index];//nid_cell]; //RSRQ of serving cell
       rsrq_s = binary_search_float(RSRQ_meas_mapping,nElem1,rsrq_filtered);//mapped RSRQ of serving cell
-
       LOG_D(RRC,"[UE %d] Frame %d: source eNB %d :rsrp_s: %ld rsrq_s: %ld rsrp_filtered: %f rsrq_filtered: %f \n",
             ctxt_pP->module_id,
             ctxt_pP->frame,
@@ -4308,7 +3926,6 @@ void ue_meas_filtering( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_
             rsrq_filtered);
       rsrp_t = binary_search_float(RSRP_meas_mapping,nElem,UE_rrc_inst[ctxt_pP->module_id].rsrp_db_filtered[target_eNB_offset]); //RSRP of target cell
       rsrq_t = binary_search_float(RSRQ_meas_mapping,nElem1,UE_rrc_inst[ctxt_pP->module_id].rsrq_db_filtered[target_eNB_offset]); //RSRQ of target cell
-
       LOG_D(RRC,"[UE %d] Frame %d: target eNB %d :rsrp_t: %ld rsrq_t: %ld rsrp_filtered: %f rsrq_filtered: %f \n",
             ctxt_pP->module_id,
             ctxt_pP->frame,
@@ -4317,7 +3934,6 @@ void ue_meas_filtering( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_
             rsrq_t,
             UE_rrc_inst[ctxt_pP->module_id].rsrp_db_filtered[target_eNB_offset],
             UE_rrc_inst[ctxt_pP->module_id].rsrq_db_filtered[target_eNB_offset]);
-
       //  if (measFlag == 1) {
       targetCellId = UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.targetCellId ;//get_adjacent_cell_id(ue_mod_idP,target_eNB_offset); //PhycellId of target cell
 
@@ -4339,7 +3955,7 @@ void ue_meas_filtering( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_
 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
                                ,NULL, NULL
 #endif
-                               );
+                              );
         AssertFatal (result == TRUE, "PDCP data request failed!\n");
         //LOG_D(RRC, "[UE %d] Frame %d Sending MeasReport (%d bytes) through DCCH%d to PDCP \n",ue_mod_idP,frameP, size, DCCH);
       }
@@ -4352,8 +3968,7 @@ void ue_meas_filtering( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_
 
 // Measurement report triggering, described in 36.331 Section 5.5.4.1: called periodically
 //-----------------------------------------------------------------------------
-void ue_measurement_report_triggering(protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index )
-{
+void ue_measurement_report_triggering(protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index ) {
   uint8_t               i,j;
   LTE_Hysteresis_t     hys;
   LTE_TimeToTrigger_t  ttt_ms;
@@ -4393,65 +4008,65 @@ void ue_measurement_report_triggering(protocol_ctxt_t* const ctxt_pP, const uint
                           -1]->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.eventA3.a3_Offset;
 
               switch (UE_rrc_inst[ctxt_pP->module_id].ReportConfig[i][reportConfigId-1]->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.present) {
-              case LTE_ReportConfigEUTRA__triggerType__event__eventId_PR_eventA1:
-                LOG_D(RRC,"[UE %d] Frame %d : A1 event: check if serving becomes better than threshold\n",
-                      ctxt_pP->module_id, ctxt_pP->frame);
-                break;
-
-              case LTE_ReportConfigEUTRA__triggerType__event__eventId_PR_eventA2:
-                LOG_D(RRC,"[UE %d] Frame %d : A2 event, check if serving becomes worse than a threshold\n",
-                      ctxt_pP->module_id, ctxt_pP->frame);
-                break;
-
-              case LTE_ReportConfigEUTRA__triggerType__event__eventId_PR_eventA3:
-                LOG_D(RRC,"[UE %d] Frame %d : A3 event: check if a neighboring cell becomes offset better than serving to trigger a measurement event \n",
-                      ctxt_pP->module_id, ctxt_pP->frame);
-
-                if ((check_trigger_meas_event(
-                       ctxt_pP->module_id,
-                       ctxt_pP->frame,
-                       eNB_index,
-                       i,j,ofn,ocn,hys,ofs,ocs,a3_offset,ttt_ms)) &&
-                    (UE_rrc_inst[ctxt_pP->module_id].Info[0].State >= RRC_CONNECTED) &&
-                    (UE_rrc_inst[ctxt_pP->module_id].Info[0].T304_active == 0 )      &&
-                    (UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.measFlag == 1)) {
-                  //trigger measurement reporting procedure (36.331, section 5.5.5)
-                  if (UE_rrc_inst[ctxt_pP->module_id].measReportList[i][j] == NULL) {
-                    UE_rrc_inst[ctxt_pP->module_id].measReportList[i][j] = malloc(sizeof(MEAS_REPORT_LIST));
-                  }
-
-                  UE_rrc_inst[ctxt_pP->module_id].measReportList[i][j]->measId = UE_rrc_inst[ctxt_pP->module_id].MeasId[i][j]->measId;
-                  UE_rrc_inst[ctxt_pP->module_id].measReportList[i][j]->numberOfReportsSent = 0;
-                  rrc_ue_generate_MeasurementReport(
-                    ctxt_pP,
-                    eNB_index);
-                  UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.measFlag = 1;
-                  LOG_I(RRC,"[UE %d] Frame %d: A3 event detected, state: %d \n",
-                        ctxt_pP->module_id, ctxt_pP->frame, UE_rrc_inst[ctxt_pP->module_id].Info[0].State);
-                } else {
-                  if(UE_rrc_inst[ctxt_pP->module_id].measReportList[i][j] != NULL) {
-                    free(UE_rrc_inst[ctxt_pP->module_id].measReportList[i][j]);
+                case LTE_ReportConfigEUTRA__triggerType__event__eventId_PR_eventA1:
+                  LOG_D(RRC,"[UE %d] Frame %d : A1 event: check if serving becomes better than threshold\n",
+                        ctxt_pP->module_id, ctxt_pP->frame);
+                  break;
+
+                case LTE_ReportConfigEUTRA__triggerType__event__eventId_PR_eventA2:
+                  LOG_D(RRC,"[UE %d] Frame %d : A2 event, check if serving becomes worse than a threshold\n",
+                        ctxt_pP->module_id, ctxt_pP->frame);
+                  break;
+
+                case LTE_ReportConfigEUTRA__triggerType__event__eventId_PR_eventA3:
+                  LOG_D(RRC,"[UE %d] Frame %d : A3 event: check if a neighboring cell becomes offset better than serving to trigger a measurement event \n",
+                        ctxt_pP->module_id, ctxt_pP->frame);
+
+                  if ((check_trigger_meas_event(
+                         ctxt_pP->module_id,
+                         ctxt_pP->frame,
+                         eNB_index,
+                         i,j,ofn,ocn,hys,ofs,ocs,a3_offset,ttt_ms)) &&
+                      (UE_rrc_inst[ctxt_pP->module_id].Info[0].State >= RRC_CONNECTED) &&
+                      (UE_rrc_inst[ctxt_pP->module_id].Info[0].T304_active == 0 )      &&
+                      (UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.measFlag == 1)) {
+                    //trigger measurement reporting procedure (36.331, section 5.5.5)
+                    if (UE_rrc_inst[ctxt_pP->module_id].measReportList[i][j] == NULL) {
+                      UE_rrc_inst[ctxt_pP->module_id].measReportList[i][j] = malloc(sizeof(MEAS_REPORT_LIST));
+                    }
+
+                    UE_rrc_inst[ctxt_pP->module_id].measReportList[i][j]->measId = UE_rrc_inst[ctxt_pP->module_id].MeasId[i][j]->measId;
+                    UE_rrc_inst[ctxt_pP->module_id].measReportList[i][j]->numberOfReportsSent = 0;
+                    rrc_ue_generate_MeasurementReport(
+                      ctxt_pP,
+                      eNB_index);
+                    UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.measFlag = 1;
+                    LOG_I(RRC,"[UE %d] Frame %d: A3 event detected, state: %d \n",
+                          ctxt_pP->module_id, ctxt_pP->frame, UE_rrc_inst[ctxt_pP->module_id].Info[0].State);
+                  } else {
+                    if(UE_rrc_inst[ctxt_pP->module_id].measReportList[i][j] != NULL) {
+                      free(UE_rrc_inst[ctxt_pP->module_id].measReportList[i][j]);
+                    }
+
+                    UE_rrc_inst[ctxt_pP->module_id].measReportList[i][j] = NULL;
                   }
 
-                  UE_rrc_inst[ctxt_pP->module_id].measReportList[i][j] = NULL;
-                }
-
-                break;
+                  break;
 
-              case LTE_ReportConfigEUTRA__triggerType__event__eventId_PR_eventA4:
-                LOG_D(RRC,"[UE %d] Frame %d : received an A4 event, neighbor becomes offset better than a threshold\n",
-                      ctxt_pP->module_id, ctxt_pP->frame);
-                break;
+                case LTE_ReportConfigEUTRA__triggerType__event__eventId_PR_eventA4:
+                  LOG_D(RRC,"[UE %d] Frame %d : received an A4 event, neighbor becomes offset better than a threshold\n",
+                        ctxt_pP->module_id, ctxt_pP->frame);
+                  break;
 
-              case LTE_ReportConfigEUTRA__triggerType__event__eventId_PR_eventA5:
-                LOG_D(RRC,"[UE %d] Frame %d: received an A5 event, serving becomes worse than threshold 1 and neighbor becomes better than threshold 2\n",
-                      ctxt_pP->module_id, ctxt_pP->frame);
-                break;
+                case LTE_ReportConfigEUTRA__triggerType__event__eventId_PR_eventA5:
+                  LOG_D(RRC,"[UE %d] Frame %d: received an A5 event, serving becomes worse than threshold 1 and neighbor becomes better than threshold 2\n",
+                        ctxt_pP->module_id, ctxt_pP->frame);
+                  break;
 
-              default:
-                LOG_D(RRC,"Invalid ReportConfigEUTRA__triggerType__event__eventId: %d",
-                      UE_rrc_inst[ctxt_pP->module_id].ReportConfig[i][j]->reportConfig.choice.reportConfigEUTRA.triggerType.present);
-                break;
+                default:
+                  LOG_D(RRC,"Invalid ReportConfigEUTRA__triggerType__event__eventId: %d",
+                        UE_rrc_inst[ctxt_pP->module_id].ReportConfig[i][j]->reportConfig.choice.reportConfigEUTRA.triggerType.present);
+                  break;
               }
             }
           }
@@ -4464,7 +4079,7 @@ void ue_measurement_report_triggering(protocol_ctxt_t* const ctxt_pP, const uint
 //check_trigger_meas_event(ue_mod_idP, frameP, eNB_index, i,j,ofn,ocn,hys,ofs,ocs,a3_offset,ttt_ms)
 //-----------------------------------------------------------------------------
 
- uint8_t check_trigger_meas_event(
+uint8_t check_trigger_meas_event(
   module_id_t     ue_mod_idP,
   frame_t         frameP,
   uint8_t         eNB_index,
@@ -4476,12 +4091,10 @@ void ue_measurement_report_triggering(protocol_ctxt_t* const ctxt_pP, const uint
   LTE_Q_OffsetRange_t ofs,
   LTE_Q_OffsetRange_t ocs,
   long            a3_offset,
-  LTE_TimeToTrigger_t ttt )
-{
+  LTE_TimeToTrigger_t ttt ) {
   uint8_t eNB_offset;
   //  uint8_t currentCellIndex = frame_parms->Nid_cell;
   uint8_t tmp_offset;
-
   LOG_I(RRC,"[UE %d] ofn(%ld) ocn(%ld) hys(%ld) ofs(%ld) ocs(%ld) a3_offset(%ld) ttt(%ld) rssi %3.1f\n",
         ue_mod_idP,
         ofn,ocn,hys,ofs,ocs,a3_offset,ttt,
@@ -4511,8 +4124,8 @@ void ue_measurement_report_triggering(protocol_ctxt_t* const ctxt_pP, const uint
         LOG_D(RRC,"[UE %d] Frame %d eNB %d: Handover triggered: targetCellId: %ld currentCellId: %d eNB_offset: %d rsrp source: %3.1f rsrp target: %3.1f\n",
               ue_mod_idP, frameP, eNB_index,
               UE_rrc_inst->HandoverInfoUe.targetCellId,ue_cnx_index,eNB_offset,
-	      get_RSRP(ue_mod_idP,0,0),
-	      get_RSRP(ue_mod_idP,0,1));
+              get_RSRP(ue_mod_idP,0,0),
+              get_RSRP(ue_mod_idP,0,1));
         UE_rrc_inst->Info[0].handoverTarget = eNB_offset;
         //LOG_D(RRC,"PHY_ID: %d \n",UE_rrc_inst->HandoverInfoUe.targetCellId);
         return 1;
@@ -4529,12 +4142,9 @@ void ue_measurement_report_triggering(protocol_ctxt_t* const ctxt_pP, const uint
 
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
 //-----------------------------------------------------------------------------
-int decode_MCCH_Message( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index, const uint8_t* const Sdu, const uint8_t Sdu_len, const uint8_t mbsfn_sync_area )
-{
-
+int decode_MCCH_Message( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index, const uint8_t *const Sdu, const uint8_t Sdu_len, const uint8_t mbsfn_sync_area ) {
   LTE_MCCH_Message_t               *mcch=NULL;
-  LTE_MBSFNAreaConfiguration_r9_t** mcch_message=&UE_rrc_inst[ctxt_pP->module_id].mcch_message[eNB_index];
-
+  LTE_MBSFNAreaConfiguration_r9_t **mcch_message=&UE_rrc_inst[ctxt_pP->module_id].mcch_message[eNB_index];
   asn_dec_rval_t                dec_rval;
 
   if (UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].MCCHStatus[mbsfn_sync_area] == 1) {
@@ -4555,12 +4165,12 @@ int decode_MCCH_Message( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB
             ctxt_pP->module_id,
             dec_rval.consumed);
       //free the memory
-      SEQUENCE_free(&asn_DEF_LTE_MCCH_Message, (void*)mcch, 1);
+      SEQUENCE_free(&asn_DEF_LTE_MCCH_Message, (void *)mcch, 1);
       return -1;
     }
 
     if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
-      xer_fprint(stdout, &asn_DEF_LTE_MCCH_Message, (void*)mcch);
+      xer_fprint(stdout, &asn_DEF_LTE_MCCH_Message, (void *)mcch);
     }
 
     if (mcch->message.present == LTE_MCCH_MessageType_PR_c1) {
@@ -4582,7 +4192,6 @@ int decode_MCCH_Message( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB
           eNB_index,
           ctxt_pP->frame,
           mbsfn_sync_area);
-
       }
     }
   }
@@ -4591,16 +4200,14 @@ int decode_MCCH_Message( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB
 }
 
 //-----------------------------------------------------------------------------
- void decode_MBSFNAreaConfiguration( module_id_t ue_mod_idP, uint8_t eNB_index, frame_t frameP, uint8_t mbsfn_sync_area )
-{
+void decode_MBSFNAreaConfiguration( module_id_t ue_mod_idP, uint8_t eNB_index, frame_t frameP, uint8_t mbsfn_sync_area ) {
   uint8_t i;
   protocol_ctxt_t               ctxt;
-
   LOG_I(RRC,"[UE %d] Frame %d : Number of MCH(s) in the MBSFN Sync Area %d  is %d\n",
         ue_mod_idP, frameP, mbsfn_sync_area, UE_rrc_inst[ue_mod_idP].mcch_message[eNB_index]->pmch_InfoList_r9.list.count);
 
-  // Configure commonSF_Alloc 
-  for(i=0; i< UE_rrc_inst[ue_mod_idP].mcch_message[eNB_index]->commonSF_Alloc_r9.list.count;i++){
+  // Configure commonSF_Alloc
+  for(i=0; i< UE_rrc_inst[ue_mod_idP].mcch_message[eNB_index]->commonSF_Alloc_r9.list.count; i++) {
     LOG_W(RRC,"[UE %d] Frame %d, commonSF_Alloc_r9: radioframeAllocationPeriod(%ldn),radioframeAllocationOffset(%ld), subframeAllocation(%x,%x,%x)\n",
           ue_mod_idP, frameP,
           UE_rrc_inst[ue_mod_idP].mcch_message[eNB_index]->commonSF_Alloc_r9.list.array[i]->radioframeAllocationPeriod<<1,
@@ -4610,64 +4217,58 @@ int decode_MCCH_Message( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB
           UE_rrc_inst[ue_mod_idP].mcch_message[eNB_index]->commonSF_Alloc_r9.list.array[i]->subframeAllocation.choice.oneFrame.buf[2]);
     UE_mac_inst[ue_mod_idP].commonSF_Alloc_r9_mbsfn_SubframeConfig[i] = UE_rrc_inst[ue_mod_idP].mcch_message[eNB_index]->commonSF_Alloc_r9.list.array[i];
   }
+
   LOG_W(RRC,"[UE %d] Frame %d, commonSF_AllocPeriod_r9 %drf \n",
         ue_mod_idP, frameP,
         4<<UE_rrc_inst[ue_mod_idP].mcch_message[eNB_index]->commonSF_AllocPeriod_r9);
-
   // Configure commonSF_AllocPeriod
   UE_mac_inst[ue_mod_idP].commonSF_AllocPeriod_r9 = UE_rrc_inst[ue_mod_idP].mcch_message[eNB_index]->commonSF_AllocPeriod_r9;
-
   //  store to MAC/PHY necessary parameters for receiving MTCHs
-
   rrc_mac_config_req_ue(ue_mod_idP,0,eNB_index,
-			(LTE_RadioResourceConfigCommonSIB_t *)NULL,
-			(struct LTE_PhysicalConfigDedicated *)NULL,
+                        (LTE_RadioResourceConfigCommonSIB_t *)NULL,
+                        (struct LTE_PhysicalConfigDedicated *)NULL,
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-			(LTE_SCellToAddMod_r10_t *)NULL,
-			//(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
-#endif
-			(LTE_MeasObjectToAddMod_t **)NULL,
-			(LTE_MAC_MainConfig_t *)NULL,
-			0,
-			(struct LTE_LogicalChannelConfig *)NULL,
-			(LTE_MeasGapConfig_t *)NULL,
-			(LTE_TDD_Config_t *)NULL,
-			(LTE_MobilityControlInfo_t *)NULL,
-			NULL,
-			NULL,
-			NULL,
-			NULL,
-			NULL,
-			(LTE_MBSFN_SubframeConfigList_t *)NULL
+                        (LTE_SCellToAddMod_r10_t *)NULL,
+                        //(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
+#endif
+                        (LTE_MeasObjectToAddMod_t **)NULL,
+                        (LTE_MAC_MainConfig_t *)NULL,
+                        0,
+                        (struct LTE_LogicalChannelConfig *)NULL,
+                        (LTE_MeasGapConfig_t *)NULL,
+                        (LTE_TDD_Config_t *)NULL,
+                        (LTE_MobilityControlInfo_t *)NULL,
+                        NULL,
+                        NULL,
+                        NULL,
+                        NULL,
+                        NULL,
+                        (LTE_MBSFN_SubframeConfigList_t *)NULL
 #if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0))
-			,
-			0,
-			(LTE_MBSFN_AreaInfoList_r9_t *)NULL,
-			&UE_rrc_inst[ue_mod_idP].mcch_message[eNB_index]->pmch_InfoList_r9
-
+                        ,
+                        0,
+                        (LTE_MBSFN_AreaInfoList_r9_t *)NULL,
+                        &UE_rrc_inst[ue_mod_idP].mcch_message[eNB_index]->pmch_InfoList_r9
 #endif
 #ifdef CBA
-			,
-			0,
-			0
+                        ,
+                        0,
+                        0
 #endif
 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-           ,
-           0,
-           NULL,
-           NULL
+                        ,
+                        0,
+                        NULL,
+                        NULL
 #endif
-			);
-
+                       );
   UE_rrc_inst[ue_mod_idP].Info[eNB_index].MCCHStatus[mbsfn_sync_area] = 1;
-
   PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_idP, ENB_FLAG_NO, UE_rrc_inst[ue_mod_idP].Info[eNB_index].rnti, frameP, 0,eNB_index);
-
   // Config Radio Bearer for MBMS user data (similar way to configure for eNB side in init_MBMS function)
   rrc_pdcp_config_asn1_req(&ctxt,
                            NULL, // SRB_ToAddModList
                            NULL, // DRB_ToAddModList
-                           (LTE_DRB_ToReleaseList_t*)NULL,
+                           (LTE_DRB_ToReleaseList_t *)NULL,
                            0, // security mode
                            NULL, // key rrc encryption
                            NULL, // key rrc integrity
@@ -4676,7 +4277,6 @@ int decode_MCCH_Message( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB
                            ,&(UE_rrc_inst[ue_mod_idP].mcch_message[eNB_index]->pmch_InfoList_r9)
 #endif
                            ,NULL);
-
   rrc_rlc_config_asn1_req(&ctxt,
                           NULL,// SRB_ToAddModList
                           NULL,// DRB_ToAddModList
@@ -4687,490 +4287,433 @@ int decode_MCCH_Message( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB
 #endif
                          );
   // */
-
 }
 
 #endif // rel10
 
 #if defined(ENABLE_ITTI)
 //-----------------------------------------------------------------------------
-void *rrc_ue_task( void *args_p )
-{
+void *rrc_ue_task( void *args_p ) {
   MessageDef   *msg_p;
   instance_t    instance;
   unsigned int  ue_mod_id;
   int           result;
   SRB_INFO     *srb_info_p;
-
   protocol_ctxt_t  ctxt;
   itti_mark_task_ready (TASK_RRC_UE);
 
   while(1) {
     // Wait for a message
     itti_receive_msg (TASK_RRC_UE, &msg_p);
-
     instance = ITTI_MSG_INSTANCE (msg_p);
     ue_mod_id = UE_INSTANCE_TO_MODULE_ID(instance);
 
     switch (ITTI_MSG_ID(msg_p)) {
-    case TERMINATE_MESSAGE:
-      LOG_W(RRC, " *** Exiting RRC thread\n");
-      itti_exit_task ();
-      break;
+      case TERMINATE_MESSAGE:
+        LOG_W(RRC, " *** Exiting RRC thread\n");
+        itti_exit_task ();
+        break;
 
-    case MESSAGE_TEST:
-      break;
+      case MESSAGE_TEST:
+        break;
 
       /* MAC messages */
-    case RRC_MAC_IN_SYNC_IND:
-      LOG_D(RRC, "[UE %d] Received %s: frameP %d, eNB %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p),
-            RRC_MAC_IN_SYNC_IND (msg_p).frame, RRC_MAC_IN_SYNC_IND (msg_p).enb_index);
-
-      UE_rrc_inst[ue_mod_id].Info[RRC_MAC_IN_SYNC_IND (msg_p).enb_index].N310_cnt = 0;
-
-      if (UE_rrc_inst[ue_mod_id].Info[RRC_MAC_IN_SYNC_IND (msg_p).enb_index].T310_active == 1) {
-        UE_rrc_inst[ue_mod_id].Info[RRC_MAC_IN_SYNC_IND (msg_p).enb_index].N311_cnt++;
-      }
-
-      break;
+      case RRC_MAC_IN_SYNC_IND:
+        LOG_D(RRC, "[UE %d] Received %s: frameP %d, eNB %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p),
+              RRC_MAC_IN_SYNC_IND (msg_p).frame, RRC_MAC_IN_SYNC_IND (msg_p).enb_index);
+        UE_rrc_inst[ue_mod_id].Info[RRC_MAC_IN_SYNC_IND (msg_p).enb_index].N310_cnt = 0;
 
-    case RRC_MAC_OUT_OF_SYNC_IND:
-      LOG_D(RRC, "[UE %d] Received %s: frameP %d, eNB %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p),
-            RRC_MAC_OUT_OF_SYNC_IND (msg_p).frame, RRC_MAC_OUT_OF_SYNC_IND (msg_p).enb_index);
-
-      UE_rrc_inst[ue_mod_id].Info[RRC_MAC_OUT_OF_SYNC_IND (msg_p).enb_index].N310_cnt ++;
-      break;
+        if (UE_rrc_inst[ue_mod_id].Info[RRC_MAC_IN_SYNC_IND (msg_p).enb_index].T310_active == 1) {
+          UE_rrc_inst[ue_mod_id].Info[RRC_MAC_IN_SYNC_IND (msg_p).enb_index].N311_cnt++;
+        }
 
-    case RRC_MAC_BCCH_DATA_IND:
-      LOG_D(RRC, "[UE %d] Received %s: frameP %d, eNB %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p),
-            RRC_MAC_BCCH_DATA_IND (msg_p).frame, RRC_MAC_BCCH_DATA_IND (msg_p).enb_index);
-
-      //      PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_NO, NOT_A_RNTI, RRC_MAC_BCCH_DATA_IND (msg_p).frame, 0);
-      PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, NOT_A_RNTI, RRC_MAC_BCCH_DATA_IND (msg_p).frame, 0,RRC_MAC_BCCH_DATA_IND (msg_p).enb_index);
-      decode_BCCH_DLSCH_Message (&ctxt,
-                                 RRC_MAC_BCCH_DATA_IND (msg_p).enb_index,
-                                 RRC_MAC_BCCH_DATA_IND (msg_p).sdu,
-                                 RRC_MAC_BCCH_DATA_IND (msg_p).sdu_size,
-                                 RRC_MAC_BCCH_DATA_IND (msg_p).rsrq,
-                                 RRC_MAC_BCCH_DATA_IND (msg_p).rsrp);
-      break;
+        break;
 
-    case RRC_MAC_CCCH_DATA_CNF:
-      LOG_D(RRC, "[UE %d] Received %s: eNB %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p),
-            RRC_MAC_CCCH_DATA_CNF (msg_p).enb_index);
+      case RRC_MAC_OUT_OF_SYNC_IND:
+        LOG_D(RRC, "[UE %d] Received %s: frameP %d, eNB %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p),
+              RRC_MAC_OUT_OF_SYNC_IND (msg_p).frame, RRC_MAC_OUT_OF_SYNC_IND (msg_p).enb_index);
+        UE_rrc_inst[ue_mod_id].Info[RRC_MAC_OUT_OF_SYNC_IND (msg_p).enb_index].N310_cnt ++;
+        break;
 
-      // reset the tx buffer to indicate RRC that ccch was successfully transmitted (for example if contention resolution succeeds)
-      UE_rrc_inst[ue_mod_id].Srb0[RRC_MAC_CCCH_DATA_CNF (msg_p).enb_index].Tx_buffer.payload_size = 0;
-      break;
+      case RRC_MAC_BCCH_DATA_IND:
+        LOG_D(RRC, "[UE %d] Received %s: frameP %d, eNB %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p),
+              RRC_MAC_BCCH_DATA_IND (msg_p).frame, RRC_MAC_BCCH_DATA_IND (msg_p).enb_index);
+        //      PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_NO, NOT_A_RNTI, RRC_MAC_BCCH_DATA_IND (msg_p).frame, 0);
+        PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, NOT_A_RNTI, RRC_MAC_BCCH_DATA_IND (msg_p).frame, 0,RRC_MAC_BCCH_DATA_IND (msg_p).enb_index);
+        decode_BCCH_DLSCH_Message (&ctxt,
+                                   RRC_MAC_BCCH_DATA_IND (msg_p).enb_index,
+                                   RRC_MAC_BCCH_DATA_IND (msg_p).sdu,
+                                   RRC_MAC_BCCH_DATA_IND (msg_p).sdu_size,
+                                   RRC_MAC_BCCH_DATA_IND (msg_p).rsrq,
+                                   RRC_MAC_BCCH_DATA_IND (msg_p).rsrp);
+        break;
 
-    case RRC_MAC_CCCH_DATA_IND:
-      LOG_D(RRC, "[UE %d] RNTI %x Received %s: frameP %d, eNB %d\n",
-            ue_mod_id,
-            RRC_MAC_CCCH_DATA_IND (msg_p).rnti,
-            ITTI_MSG_NAME (msg_p),
-            RRC_MAC_CCCH_DATA_IND (msg_p).frame,
-            RRC_MAC_CCCH_DATA_IND (msg_p).enb_index);
-
-      srb_info_p = &UE_rrc_inst[ue_mod_id].Srb0[RRC_MAC_CCCH_DATA_IND (msg_p).enb_index];
-
-      memcpy (srb_info_p->Rx_buffer.Payload, RRC_MAC_CCCH_DATA_IND (msg_p).sdu,
-              RRC_MAC_CCCH_DATA_IND (msg_p).sdu_size);
-      srb_info_p->Rx_buffer.payload_size = RRC_MAC_CCCH_DATA_IND (msg_p).sdu_size;
-      //      PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_NO, RRC_MAC_CCCH_DATA_IND (msg_p).rnti, RRC_MAC_CCCH_DATA_IND (msg_p).frame, 0);
-      PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, RRC_MAC_CCCH_DATA_IND (msg_p).rnti, RRC_MAC_CCCH_DATA_IND (msg_p).frame, 0, RRC_MAC_CCCH_DATA_IND (msg_p).enb_index);
-      rrc_ue_decode_ccch (&ctxt,
-                          srb_info_p,
-                          RRC_MAC_CCCH_DATA_IND (msg_p).enb_index);
-      break;
+      case RRC_MAC_CCCH_DATA_CNF:
+        LOG_D(RRC, "[UE %d] Received %s: eNB %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p),
+              RRC_MAC_CCCH_DATA_CNF (msg_p).enb_index);
+        // reset the tx buffer to indicate RRC that ccch was successfully transmitted (for example if contention resolution succeeds)
+        UE_rrc_inst[ue_mod_id].Srb0[RRC_MAC_CCCH_DATA_CNF (msg_p).enb_index].Tx_buffer.payload_size = 0;
+        break;
 
+      case RRC_MAC_CCCH_DATA_IND:
+        LOG_D(RRC, "[UE %d] RNTI %x Received %s: frameP %d, eNB %d\n",
+              ue_mod_id,
+              RRC_MAC_CCCH_DATA_IND (msg_p).rnti,
+              ITTI_MSG_NAME (msg_p),
+              RRC_MAC_CCCH_DATA_IND (msg_p).frame,
+              RRC_MAC_CCCH_DATA_IND (msg_p).enb_index);
+        srb_info_p = &UE_rrc_inst[ue_mod_id].Srb0[RRC_MAC_CCCH_DATA_IND (msg_p).enb_index];
+        memcpy (srb_info_p->Rx_buffer.Payload, RRC_MAC_CCCH_DATA_IND (msg_p).sdu,
+                RRC_MAC_CCCH_DATA_IND (msg_p).sdu_size);
+        srb_info_p->Rx_buffer.payload_size = RRC_MAC_CCCH_DATA_IND (msg_p).sdu_size;
+        //      PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_NO, RRC_MAC_CCCH_DATA_IND (msg_p).rnti, RRC_MAC_CCCH_DATA_IND (msg_p).frame, 0);
+        PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, RRC_MAC_CCCH_DATA_IND (msg_p).rnti, RRC_MAC_CCCH_DATA_IND (msg_p).frame, 0, RRC_MAC_CCCH_DATA_IND (msg_p).enb_index);
+        rrc_ue_decode_ccch (&ctxt,
+                            srb_info_p,
+                            RRC_MAC_CCCH_DATA_IND (msg_p).enb_index);
+        break;
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
 
-    case RRC_MAC_MCCH_DATA_IND:
-      LOG_D(RRC, "[UE %d] Received %s: frameP %d, eNB %d, mbsfn SA %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p),
-            RRC_MAC_MCCH_DATA_IND (msg_p).frame, RRC_MAC_MCCH_DATA_IND (msg_p).enb_index, RRC_MAC_MCCH_DATA_IND (msg_p).mbsfn_sync_area);
-
-      //PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_NO, M_RNTI, RRC_MAC_MCCH_DATA_IND (msg_p).frame, 0);
-      PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, M_RNTI, RRC_MAC_MCCH_DATA_IND (msg_p).frame, 0,RRC_MAC_MCCH_DATA_IND (msg_p).enb_index);
-      decode_MCCH_Message (
-        &ctxt,
-        RRC_MAC_MCCH_DATA_IND (msg_p).enb_index,
-        RRC_MAC_MCCH_DATA_IND (msg_p).sdu,
-        RRC_MAC_MCCH_DATA_IND (msg_p).sdu_size,
-        RRC_MAC_MCCH_DATA_IND (msg_p).mbsfn_sync_area);
-      break;
-
-  /*  //TTN (for D2D)
-    case RRC_MAC_SL_DISCOVERY_DATA_IND:
-       LOG_D(RRC, "[UE %d] Received %s: frameP %d, eNB %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p),
-             RRC_MAC_SL_DISCOVERY_DATA_IND (msg_p).frame, RRC_MAC_SL_DISCOVERY_DATA_IND (msg_p).enb_index);
-       PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, M_RNTI, RRC_MAC_SL_DISCOVERY_DATA_IND (msg_p).frame, 0,RRC_MAC_SL_DISCOVERY_DATA_IND (msg_p).enb_index);
-       //send to ProSeApp
-       break;
-*/
+      case RRC_MAC_MCCH_DATA_IND:
+        LOG_D(RRC, "[UE %d] Received %s: frameP %d, eNB %d, mbsfn SA %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p),
+              RRC_MAC_MCCH_DATA_IND (msg_p).frame, RRC_MAC_MCCH_DATA_IND (msg_p).enb_index, RRC_MAC_MCCH_DATA_IND (msg_p).mbsfn_sync_area);
+        //PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_NO, M_RNTI, RRC_MAC_MCCH_DATA_IND (msg_p).frame, 0);
+        PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, M_RNTI, RRC_MAC_MCCH_DATA_IND (msg_p).frame, 0,RRC_MAC_MCCH_DATA_IND (msg_p).enb_index);
+        decode_MCCH_Message (
+          &ctxt,
+          RRC_MAC_MCCH_DATA_IND (msg_p).enb_index,
+          RRC_MAC_MCCH_DATA_IND (msg_p).sdu,
+          RRC_MAC_MCCH_DATA_IND (msg_p).sdu_size,
+          RRC_MAC_MCCH_DATA_IND (msg_p).mbsfn_sync_area);
+        break;
+        /*  //TTN (for D2D)
+          case RRC_MAC_SL_DISCOVERY_DATA_IND:
+             LOG_D(RRC, "[UE %d] Received %s: frameP %d, eNB %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p),
+                   RRC_MAC_SL_DISCOVERY_DATA_IND (msg_p).frame, RRC_MAC_SL_DISCOVERY_DATA_IND (msg_p).enb_index);
+             PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, M_RNTI, RRC_MAC_SL_DISCOVERY_DATA_IND (msg_p).frame, 0,RRC_MAC_SL_DISCOVERY_DATA_IND (msg_p).enb_index);
+             //send to ProSeApp
+             break;
+        */
 # endif
 
       /* PDCP messages */
-    case RRC_DCCH_DATA_IND:
-      PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, RRC_DCCH_DATA_IND (msg_p).module_id, ENB_FLAG_NO, RRC_DCCH_DATA_IND (msg_p).rnti, RRC_DCCH_DATA_IND (msg_p).frame, 0,RRC_DCCH_DATA_IND (msg_p).eNB_index);
-      LOG_D(RRC, "[UE %d] Received %s: frameP %d, DCCH %d, eNB %d\n",
-            RRC_DCCH_DATA_IND (msg_p).module_id,
-            ITTI_MSG_NAME (msg_p),
-            RRC_DCCH_DATA_IND (msg_p).frame,
-            RRC_DCCH_DATA_IND (msg_p).dcch_index,
-            RRC_DCCH_DATA_IND (msg_p).eNB_index);
-
-      LOG_D(RRC, PROTOCOL_RRC_CTXT_UE_FMT"Received %s DCCH %d, eNB %d\n",
-            PROTOCOL_RRC_CTXT_UE_ARGS(&ctxt),
-            ITTI_MSG_NAME (msg_p),
-            RRC_DCCH_DATA_IND (msg_p).dcch_index,
-            RRC_DCCH_DATA_IND (msg_p).eNB_index);
-      rrc_ue_decode_dcch (
-        &ctxt,
-        RRC_DCCH_DATA_IND (msg_p).dcch_index,
-        RRC_DCCH_DATA_IND (msg_p).sdu_p,
-        RRC_DCCH_DATA_IND (msg_p).eNB_index);
-      // Message buffer has been processed, free it now.
-      result = itti_free (ITTI_MSG_ORIGIN_ID(msg_p), RRC_DCCH_DATA_IND (msg_p).sdu_p);
-      AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
-      break;
-
+      case RRC_DCCH_DATA_IND:
+        PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, RRC_DCCH_DATA_IND (msg_p).module_id, ENB_FLAG_NO, RRC_DCCH_DATA_IND (msg_p).rnti, RRC_DCCH_DATA_IND (msg_p).frame, 0,RRC_DCCH_DATA_IND (msg_p).eNB_index);
+        LOG_D(RRC, "[UE %d] Received %s: frameP %d, DCCH %d, eNB %d\n",
+              RRC_DCCH_DATA_IND (msg_p).module_id,
+              ITTI_MSG_NAME (msg_p),
+              RRC_DCCH_DATA_IND (msg_p).frame,
+              RRC_DCCH_DATA_IND (msg_p).dcch_index,
+              RRC_DCCH_DATA_IND (msg_p).eNB_index);
+        LOG_D(RRC, PROTOCOL_RRC_CTXT_UE_FMT"Received %s DCCH %d, eNB %d\n",
+              PROTOCOL_RRC_CTXT_UE_ARGS(&ctxt),
+              ITTI_MSG_NAME (msg_p),
+              RRC_DCCH_DATA_IND (msg_p).dcch_index,
+              RRC_DCCH_DATA_IND (msg_p).eNB_index);
+        rrc_ue_decode_dcch (
+          &ctxt,
+          RRC_DCCH_DATA_IND (msg_p).dcch_index,
+          RRC_DCCH_DATA_IND (msg_p).sdu_p,
+          RRC_DCCH_DATA_IND (msg_p).eNB_index);
+        // Message buffer has been processed, free it now.
+        result = itti_free (ITTI_MSG_ORIGIN_ID(msg_p), RRC_DCCH_DATA_IND (msg_p).sdu_p);
+        AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
+        break;
 # if defined(ENABLE_USE_MME)
 
-    case NAS_KENB_REFRESH_REQ:
-        memcpy((void*)UE_rrc_inst[ue_mod_id].kenb, (void*)NAS_KENB_REFRESH_REQ(msg_p).kenb, sizeof(UE_rrc_inst[ue_mod_id].kenb));
-
+      case NAS_KENB_REFRESH_REQ:
+        memcpy((void *)UE_rrc_inst[ue_mod_id].kenb, (void *)NAS_KENB_REFRESH_REQ(msg_p).kenb, sizeof(UE_rrc_inst[ue_mod_id].kenb));
         LOG_D(RRC, "[UE %d] Received %s: refreshed RRC::KeNB = "
-            "%02x%02x%02x%02x"
-            "%02x%02x%02x%02x"
-            "%02x%02x%02x%02x"
-            "%02x%02x%02x%02x"
-            "%02x%02x%02x%02x"
-            "%02x%02x%02x%02x"
-            "%02x%02x%02x%02x"
-            "%02x%02x%02x%02x\n",
-            ue_mod_id, ITTI_MSG_NAME (msg_p),
-            UE_rrc_inst[ue_mod_id].kenb[0],  UE_rrc_inst[ue_mod_id].kenb[1],  UE_rrc_inst[ue_mod_id].kenb[2],  UE_rrc_inst[ue_mod_id].kenb[3],
-            UE_rrc_inst[ue_mod_id].kenb[4],  UE_rrc_inst[ue_mod_id].kenb[5],  UE_rrc_inst[ue_mod_id].kenb[6],  UE_rrc_inst[ue_mod_id].kenb[7],
-            UE_rrc_inst[ue_mod_id].kenb[8],  UE_rrc_inst[ue_mod_id].kenb[9],  UE_rrc_inst[ue_mod_id].kenb[10], UE_rrc_inst[ue_mod_id].kenb[11],
-            UE_rrc_inst[ue_mod_id].kenb[12], UE_rrc_inst[ue_mod_id].kenb[13], UE_rrc_inst[ue_mod_id].kenb[14], UE_rrc_inst[ue_mod_id].kenb[15],
-            UE_rrc_inst[ue_mod_id].kenb[16], UE_rrc_inst[ue_mod_id].kenb[17], UE_rrc_inst[ue_mod_id].kenb[18], UE_rrc_inst[ue_mod_id].kenb[19],
-            UE_rrc_inst[ue_mod_id].kenb[20], UE_rrc_inst[ue_mod_id].kenb[21], UE_rrc_inst[ue_mod_id].kenb[22], UE_rrc_inst[ue_mod_id].kenb[23],
-            UE_rrc_inst[ue_mod_id].kenb[24], UE_rrc_inst[ue_mod_id].kenb[25], UE_rrc_inst[ue_mod_id].kenb[26], UE_rrc_inst[ue_mod_id].kenb[27],
-            UE_rrc_inst[ue_mod_id].kenb[28], UE_rrc_inst[ue_mod_id].kenb[29], UE_rrc_inst[ue_mod_id].kenb[30], UE_rrc_inst[ue_mod_id].kenb[31]);
-
-      break;
+              "%02x%02x%02x%02x"
+              "%02x%02x%02x%02x"
+              "%02x%02x%02x%02x"
+              "%02x%02x%02x%02x"
+              "%02x%02x%02x%02x"
+              "%02x%02x%02x%02x"
+              "%02x%02x%02x%02x"
+              "%02x%02x%02x%02x\n",
+              ue_mod_id, ITTI_MSG_NAME (msg_p),
+              UE_rrc_inst[ue_mod_id].kenb[0],  UE_rrc_inst[ue_mod_id].kenb[1],  UE_rrc_inst[ue_mod_id].kenb[2],  UE_rrc_inst[ue_mod_id].kenb[3],
+              UE_rrc_inst[ue_mod_id].kenb[4],  UE_rrc_inst[ue_mod_id].kenb[5],  UE_rrc_inst[ue_mod_id].kenb[6],  UE_rrc_inst[ue_mod_id].kenb[7],
+              UE_rrc_inst[ue_mod_id].kenb[8],  UE_rrc_inst[ue_mod_id].kenb[9],  UE_rrc_inst[ue_mod_id].kenb[10], UE_rrc_inst[ue_mod_id].kenb[11],
+              UE_rrc_inst[ue_mod_id].kenb[12], UE_rrc_inst[ue_mod_id].kenb[13], UE_rrc_inst[ue_mod_id].kenb[14], UE_rrc_inst[ue_mod_id].kenb[15],
+              UE_rrc_inst[ue_mod_id].kenb[16], UE_rrc_inst[ue_mod_id].kenb[17], UE_rrc_inst[ue_mod_id].kenb[18], UE_rrc_inst[ue_mod_id].kenb[19],
+              UE_rrc_inst[ue_mod_id].kenb[20], UE_rrc_inst[ue_mod_id].kenb[21], UE_rrc_inst[ue_mod_id].kenb[22], UE_rrc_inst[ue_mod_id].kenb[23],
+              UE_rrc_inst[ue_mod_id].kenb[24], UE_rrc_inst[ue_mod_id].kenb[25], UE_rrc_inst[ue_mod_id].kenb[26], UE_rrc_inst[ue_mod_id].kenb[27],
+              UE_rrc_inst[ue_mod_id].kenb[28], UE_rrc_inst[ue_mod_id].kenb[29], UE_rrc_inst[ue_mod_id].kenb[30], UE_rrc_inst[ue_mod_id].kenb[31]);
+        break;
 
       /* NAS messages */
-    case NAS_CELL_SELECTION_REQ:
-
-      LOG_D(RRC, "[UE %d] Received %s: state %d, plmnID (%d%d%d.%d%d%d), rat %x\n", ue_mod_id, ITTI_MSG_NAME (msg_p), rrc_get_state(ue_mod_id),
-            NAS_CELL_SELECTION_REQ (msg_p).plmnID.MCCdigit1,
-            NAS_CELL_SELECTION_REQ (msg_p).plmnID.MCCdigit2,
-            NAS_CELL_SELECTION_REQ (msg_p).plmnID.MCCdigit3,
-            NAS_CELL_SELECTION_REQ (msg_p).plmnID.MNCdigit1,
-            NAS_CELL_SELECTION_REQ (msg_p).plmnID.MNCdigit2,
-            NAS_CELL_SELECTION_REQ (msg_p).plmnID.MNCdigit3,
-            NAS_CELL_SELECTION_REQ (msg_p).rat);
-
-      if (rrc_get_state(ue_mod_id) == RRC_STATE_INACTIVE) {
-        // have a look at MAC/main.c void dl_phy_sync_success(...)
-        openair_rrc_ue_init(ue_mod_id,0);
-      }
+      case NAS_CELL_SELECTION_REQ:
+        LOG_D(RRC, "[UE %d] Received %s: state %d, plmnID (%d%d%d.%d%d%d), rat %x\n", ue_mod_id, ITTI_MSG_NAME (msg_p), rrc_get_state(ue_mod_id),
+              NAS_CELL_SELECTION_REQ (msg_p).plmnID.MCCdigit1,
+              NAS_CELL_SELECTION_REQ (msg_p).plmnID.MCCdigit2,
+              NAS_CELL_SELECTION_REQ (msg_p).plmnID.MCCdigit3,
+              NAS_CELL_SELECTION_REQ (msg_p).plmnID.MNCdigit1,
+              NAS_CELL_SELECTION_REQ (msg_p).plmnID.MNCdigit2,
+              NAS_CELL_SELECTION_REQ (msg_p).plmnID.MNCdigit3,
+              NAS_CELL_SELECTION_REQ (msg_p).rat);
+
+        if (rrc_get_state(ue_mod_id) == RRC_STATE_INACTIVE) {
+          // have a look at MAC/main.c void dl_phy_sync_success(...)
+          openair_rrc_ue_init(ue_mod_id,0);
+        }
 
-      /* Save cell selection criterion */
-      {
-        UE_rrc_inst[ue_mod_id].plmnID = NAS_CELL_SELECTION_REQ (msg_p).plmnID;
-        UE_rrc_inst[ue_mod_id].rat = NAS_CELL_SELECTION_REQ (msg_p).rat;
-        LOG_D(RRC, "[UE %d] Save cell selection criterion MCC %X%X%X MNC %X%X%X\n",
-              ue_mod_id,
-              UE_rrc_inst[ue_mod_id].plmnID.MCCdigit1,
-              UE_rrc_inst[ue_mod_id].plmnID.MCCdigit2,
-              UE_rrc_inst[ue_mod_id].plmnID.MCCdigit3,
-              UE_rrc_inst[ue_mod_id].plmnID.MNCdigit1,
-              UE_rrc_inst[ue_mod_id].plmnID.MNCdigit2,
-              UE_rrc_inst[ue_mod_id].plmnID.MNCdigit3);
+        /* Save cell selection criterion */
+        {
+          UE_rrc_inst[ue_mod_id].plmnID = NAS_CELL_SELECTION_REQ (msg_p).plmnID;
+          UE_rrc_inst[ue_mod_id].rat = NAS_CELL_SELECTION_REQ (msg_p).rat;
+          LOG_D(RRC, "[UE %d] Save cell selection criterion MCC %X%X%X MNC %X%X%X\n",
+                ue_mod_id,
+                UE_rrc_inst[ue_mod_id].plmnID.MCCdigit1,
+                UE_rrc_inst[ue_mod_id].plmnID.MCCdigit2,
+                UE_rrc_inst[ue_mod_id].plmnID.MCCdigit3,
+                UE_rrc_inst[ue_mod_id].plmnID.MNCdigit1,
+                UE_rrc_inst[ue_mod_id].plmnID.MNCdigit2,
+                UE_rrc_inst[ue_mod_id].plmnID.MNCdigit3);
+        }
 
-      }
+        switch (rrc_get_state(ue_mod_id)) {
+          case RRC_STATE_INACTIVE: {
+            rrc_set_state (ue_mod_id, RRC_STATE_IDLE);
+            /* Fall through to next case */
+          }
 
-      switch (rrc_get_state(ue_mod_id)) {
-      case RRC_STATE_INACTIVE: {
-        /* Need to first activate lower layers */
-        MessageDef *message_p;
+          case RRC_STATE_IDLE: {
+            /* Ask to layer 1 to find a cell matching the criterion */
+            MessageDef *message_p;
+            message_p = itti_alloc_new_message(TASK_RRC_UE, PHY_FIND_CELL_REQ);
+            PHY_FIND_CELL_REQ (message_p).earfcn_start = 1;
+            PHY_FIND_CELL_REQ (message_p).earfcn_end = 1;
+            itti_send_msg_to_task(TASK_PHY_UE, UE_MODULE_ID_TO_INSTANCE(ue_mod_id), message_p);
+            rrc_set_sub_state (ue_mod_id, RRC_SUB_STATE_IDLE_SEARCHING);
+            break;
+          }
 
-        message_p = itti_alloc_new_message(TASK_RRC_UE, ACTIVATE_MESSAGE);
+          case RRC_STATE_CONNECTED:
+            /* should not happen */
+            LOG_E(RRC, "[UE %d] request %s in RRC state %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p), rrc_get_state(ue_mod_id));
+            break;
 
-        itti_send_msg_to_task(TASK_L2L1, UE_MODULE_ID_TO_INSTANCE(ue_mod_id), message_p);
+          default:
+            LOG_E(RRC, "[UE %d] Invalid RRC state %d\n", ue_mod_id, rrc_get_state(ue_mod_id));
+            break;
+        }
 
-        rrc_set_state (ue_mod_id, RRC_STATE_IDLE);
-        /* Fall through to next case */
-      }
+        break;
 
-      case RRC_STATE_IDLE: {
-        /* Ask to layer 1 to find a cell matching the criterion */
-        MessageDef *message_p;
+      case NAS_CONN_ESTABLI_REQ:
+        LOG_D(RRC, "[UE %d] Received %s: cause %d, type %d, s_tmsi (mme code %"PRIu8", m-tmsi %"PRIu32"), plmnID (%d%d%d.%d%d%d)\n", ue_mod_id, ITTI_MSG_NAME (msg_p), NAS_CONN_ESTABLI_REQ (msg_p).cause,
+              NAS_CONN_ESTABLI_REQ (msg_p).type,
+              NAS_CONN_ESTABLI_REQ (msg_p).s_tmsi.MMEcode,
+              NAS_CONN_ESTABLI_REQ (msg_p).s_tmsi.m_tmsi,
+              NAS_CONN_ESTABLI_REQ (msg_p).plmnID.MCCdigit1,
+              NAS_CONN_ESTABLI_REQ (msg_p).plmnID.MCCdigit2,
+              NAS_CONN_ESTABLI_REQ (msg_p).plmnID.MCCdigit3,
+              NAS_CONN_ESTABLI_REQ (msg_p).plmnID.MNCdigit1,
+              NAS_CONN_ESTABLI_REQ (msg_p).plmnID.MNCdigit2,
+              NAS_CONN_ESTABLI_REQ (msg_p).plmnID.MNCdigit3);
+        //PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_NO, NOT_A_RNTI, 0, 0);
+        PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, NOT_A_RNTI, 0, 0, 0);
+        UE_rrc_inst[ue_mod_id].initialNasMsg = NAS_CONN_ESTABLI_REQ (msg_p).initialNasMsg;
+
+        switch (rrc_get_state(ue_mod_id)) {
+          case RRC_STATE_IDLE: {
+            if (rrc_get_sub_state(ue_mod_id) == RRC_SUB_STATE_IDLE_SIB_COMPLETE) {
+              rrc_ue_generate_RRCConnectionRequest(&ctxt, 0);
+              LOG_D(RRC, "not sending connection request\n");
+              rrc_set_sub_state (ue_mod_id, RRC_SUB_STATE_IDLE_CONNECTING);
+            }
 
-        message_p = itti_alloc_new_message(TASK_RRC_UE, PHY_FIND_CELL_REQ);
-
-        PHY_FIND_CELL_REQ (message_p).earfcn_start = 1;
-        PHY_FIND_CELL_REQ (message_p).earfcn_end = 1;
-
-        itti_send_msg_to_task(TASK_PHY_UE, UE_MODULE_ID_TO_INSTANCE(ue_mod_id), message_p);
-        rrc_set_sub_state (ue_mod_id, RRC_SUB_STATE_IDLE_SEARCHING);
-
-        break;
-      }
-
-      case RRC_STATE_CONNECTED:
-        /* should not happen */
-        LOG_E(RRC, "[UE %d] request %s in RRC state %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p), rrc_get_state(ue_mod_id));
-        break;
-
-      default:
-        LOG_E(RRC, "[UE %d] Invalid RRC state %d\n", ue_mod_id, rrc_get_state(ue_mod_id));
-        break;
-      }
+            break;
+          }
 
-      break;
+          case RRC_STATE_INACTIVE:
+          case RRC_STATE_CONNECTED:
+            /* should not happen */
+            LOG_E(RRC, "[UE %d] request %s in RRC state %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p), rrc_get_state(ue_mod_id));
+            break;
 
-    case NAS_CONN_ESTABLI_REQ:
-      LOG_D(RRC, "[UE %d] Received %s: cause %d, type %d, s_tmsi (mme code %"PRIu8", m-tmsi %"PRIu32"), plmnID (%d%d%d.%d%d%d)\n", ue_mod_id, ITTI_MSG_NAME (msg_p), NAS_CONN_ESTABLI_REQ (msg_p).cause,
-            NAS_CONN_ESTABLI_REQ (msg_p).type,
-            NAS_CONN_ESTABLI_REQ (msg_p).s_tmsi.MMEcode,
-            NAS_CONN_ESTABLI_REQ (msg_p).s_tmsi.m_tmsi,
-            NAS_CONN_ESTABLI_REQ (msg_p).plmnID.MCCdigit1,
-            NAS_CONN_ESTABLI_REQ (msg_p).plmnID.MCCdigit2,
-            NAS_CONN_ESTABLI_REQ (msg_p).plmnID.MCCdigit3,
-            NAS_CONN_ESTABLI_REQ (msg_p).plmnID.MNCdigit1,
-            NAS_CONN_ESTABLI_REQ (msg_p).plmnID.MNCdigit2,
-            NAS_CONN_ESTABLI_REQ (msg_p).plmnID.MNCdigit3);
-
-      //PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt, instance, ENB_FLAG_NO, NOT_A_RNTI, 0, 0);
-      PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, NOT_A_RNTI, 0, 0, 0);
-
-      UE_rrc_inst[ue_mod_id].initialNasMsg = NAS_CONN_ESTABLI_REQ (msg_p).initialNasMsg;
-
-      switch (rrc_get_state(ue_mod_id)) {
-      case RRC_STATE_IDLE: {
-        if (rrc_get_sub_state(ue_mod_id) == RRC_SUB_STATE_IDLE_SIB_COMPLETE) {
-          rrc_ue_generate_RRCConnectionRequest(&ctxt, 0);
-          LOG_D(RRC, "not sending connection request\n");
-
-          rrc_set_sub_state (ue_mod_id, RRC_SUB_STATE_IDLE_CONNECTING);
+          default:
+            LOG_E(RRC, "[UE %d] Invalid RRC state %d\n", ue_mod_id, rrc_get_state(ue_mod_id));
+            break;
         }
 
         break;
-      }
-
-      case RRC_STATE_INACTIVE:
-      case RRC_STATE_CONNECTED:
-        /* should not happen */
-        LOG_E(RRC, "[UE %d] request %s in RRC state %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p), rrc_get_state(ue_mod_id));
-        break;
-
-      default:
-        LOG_E(RRC, "[UE %d] Invalid RRC state %d\n", ue_mod_id, rrc_get_state(ue_mod_id));
-        break;
-      }
 
-      break;
-
-    case NAS_UPLINK_DATA_REQ: {
-      uint32_t length;
-      uint8_t *buffer;
-
-      LOG_D(RRC, "[UE %d] Received %s: UEid %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p), NAS_UPLINK_DATA_REQ (msg_p).UEid);
-
-      /* Create message for PDCP (ULInformationTransfer_t) */
-      length = do_ULInformationTransfer(&buffer, NAS_UPLINK_DATA_REQ (msg_p).nasMsg.length, NAS_UPLINK_DATA_REQ (msg_p).nasMsg.data);
-
-      /* Transfer data to PDCP */
-      PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, UE_rrc_inst[ue_mod_id].Info[0].rnti, 0, 0,0);
-
-      // check if SRB2 is created, if yes request data_req on DCCH1 (SRB2)
-      if(UE_rrc_inst[ue_mod_id].SRB2_config[0] == NULL)
-      {
+      case NAS_UPLINK_DATA_REQ: {
+        uint32_t length;
+        uint8_t *buffer;
+        LOG_D(RRC, "[UE %d] Received %s: UEid %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p), NAS_UPLINK_DATA_REQ (msg_p).UEid);
+        /* Create message for PDCP (ULInformationTransfer_t) */
+        length = do_ULInformationTransfer(&buffer, NAS_UPLINK_DATA_REQ (msg_p).nasMsg.length, NAS_UPLINK_DATA_REQ (msg_p).nasMsg.data);
+        /* Transfer data to PDCP */
+        PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, UE_rrc_inst[ue_mod_id].Info[0].rnti, 0, 0,0);
+
+        // check if SRB2 is created, if yes request data_req on DCCH1 (SRB2)
+        if(UE_rrc_inst[ue_mod_id].SRB2_config[0] == NULL) {
           rrc_data_req_ue (&ctxt,
-                  DCCH,
-                  rrc_mui++,
-                  SDU_CONFIRM_NO,
-                  length, buffer,
-                  PDCP_TRANSMISSION_MODE_CONTROL);
-      }
-      else
-      {
+                           DCCH,
+                           rrc_mui++,
+                           SDU_CONFIRM_NO,
+                           length, buffer,
+                           PDCP_TRANSMISSION_MODE_CONTROL);
+        } else {
           rrc_data_req_ue (&ctxt,
-                  DCCH1,
-                  rrc_mui++,
-                  SDU_CONFIRM_NO,
-                  length, buffer,
-                  PDCP_TRANSMISSION_MODE_CONTROL);
+                           DCCH1,
+                           rrc_mui++,
+                           SDU_CONFIRM_NO,
+                           length, buffer,
+                           PDCP_TRANSMISSION_MODE_CONTROL);
+        }
+
+        break;
       }
-      break;
-    }
 
 # endif
-
 # if ENABLE_RAL
 
-    case RRC_RAL_SCAN_REQ:
-      LOG_D(RRC, "[UE %d] Received %s: state %d\n", ue_mod_id,ITTI_MSG_NAME (msg_p) );
-
-      switch (rrc_get_state(ue_mod_id)) {
-      case RRC_STATE_INACTIVE: {
-        /* Need to first activate lower layers */
-        MessageDef *message_p;
-
-        message_p = itti_alloc_new_message(TASK_RRC_UE, ACTIVATE_MESSAGE);
-
-        itti_send_msg_to_task(TASK_L2L1, instance, message_p);
-
-        rrc_set_state (ue_mod_id, RRC_STATE_IDLE);
-        /* Fall through to next case */
-      }
+      case RRC_RAL_SCAN_REQ:
+        LOG_D(RRC, "[UE %d] Received %s: state %d\n", ue_mod_id,ITTI_MSG_NAME (msg_p) );
 
-      case RRC_STATE_IDLE: {
-        if (rrc_get_sub_state(ue_mod_id) != RRC_SUB_STATE_IDLE_SEARCHING) {
-          /* Ask to layer 1 to find a cell matching the criterion */
-          MessageDef *message_p;
+        switch (rrc_get_state(ue_mod_id)) {
+          case RRC_STATE_INACTIVE: {
+            rrc_set_state (ue_mod_id, RRC_STATE_IDLE);
+            /* Fall through to next case */
+          }
 
-          message_p = itti_alloc_new_message(TASK_RRC_UE, PHY_FIND_CELL_REQ);
+          case RRC_STATE_IDLE: {
+            if (rrc_get_sub_state(ue_mod_id) != RRC_SUB_STATE_IDLE_SEARCHING) {
+              /* Ask to layer 1 to find a cell matching the criterion */
+              MessageDef *message_p;
+              message_p = itti_alloc_new_message(TASK_RRC_UE, PHY_FIND_CELL_REQ);
+              rrc_set_sub_state (ue_mod_id, RRC_SUB_STATE_IDLE_SEARCHING);
+              PHY_FIND_CELL_REQ (message_p).transaction_id = RRC_RAL_SCAN_REQ (msg_p).transaction_id;
+              PHY_FIND_CELL_REQ (message_p).earfcn_start   = 1;
+              PHY_FIND_CELL_REQ (message_p).earfcn_end     = 1; //44
+              itti_send_msg_to_task(TASK_PHY_UE, instance, message_p);
+            }
 
-          rrc_set_sub_state (ue_mod_id, RRC_SUB_STATE_IDLE_SEARCHING);
+            break;
+          }
 
-          PHY_FIND_CELL_REQ (message_p).transaction_id = RRC_RAL_SCAN_REQ (msg_p).transaction_id;
-          PHY_FIND_CELL_REQ (message_p).earfcn_start   = 1;
-          PHY_FIND_CELL_REQ (message_p).earfcn_end     = 1; //44
+          case RRC_STATE_CONNECTED:
+            /* should not happen */
+            LOG_E(RRC, "[UE %d] request %s in RRC state %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p), rrc_get_state(ue_mod_id));
+            break;
 
-          itti_send_msg_to_task(TASK_PHY_UE, instance, message_p);
+          default:
+            LOG_E(RRC, "[UE %d] Invalid RRC state %d\n", ue_mod_id, rrc_get_state(ue_mod_id));
+            break;
         }
 
         break;
-      }
-
-      case RRC_STATE_CONNECTED:
-        /* should not happen */
-        LOG_E(RRC, "[UE %d] request %s in RRC state %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p), rrc_get_state(ue_mod_id));
-        break;
-
-      default:
-        LOG_E(RRC, "[UE %d] Invalid RRC state %d\n", ue_mod_id, rrc_get_state(ue_mod_id));
-        break;
-      }
-
-      break;
-
-    case PHY_FIND_CELL_IND:
-      LOG_D(RRC, "[UE %d] Received %s: state %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p), rrc_get_state(ue_mod_id));
-
-      switch (rrc_get_state(ue_mod_id)) {
-      case RRC_STATE_IDLE:
-        switch (rrc_get_sub_state(ue_mod_id)) {
-        case RRC_SUB_STATE_IDLE_SEARCHING: {
-          MessageDef *message_p;
-          int         i;
 
-          message_p = itti_alloc_new_message(TASK_RRC_UE, RRC_RAL_SCAN_CONF);
-
-          RRC_RAL_SCAN_CONF (message_p).transaction_id = PHY_FIND_CELL_IND(msg_p).transaction_id;
-          RRC_RAL_SCAN_CONF (message_p).num_scan_resp  = PHY_FIND_CELL_IND(msg_p).cell_nb;
+      case PHY_FIND_CELL_IND:
+        LOG_D(RRC, "[UE %d] Received %s: state %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p), rrc_get_state(ue_mod_id));
+
+        switch (rrc_get_state(ue_mod_id)) {
+          case RRC_STATE_IDLE:
+            switch (rrc_get_sub_state(ue_mod_id)) {
+              case RRC_SUB_STATE_IDLE_SEARCHING: {
+                MessageDef *message_p;
+                int         i;
+                message_p = itti_alloc_new_message(TASK_RRC_UE, RRC_RAL_SCAN_CONF);
+                RRC_RAL_SCAN_CONF (message_p).transaction_id = PHY_FIND_CELL_IND(msg_p).transaction_id;
+                RRC_RAL_SCAN_CONF (message_p).num_scan_resp  = PHY_FIND_CELL_IND(msg_p).cell_nb;
+
+                for (i = 0 ; i < PHY_FIND_CELL_IND(msg_p).cell_nb; i++) {
+                  // TO DO
+                  memset(&RRC_RAL_SCAN_CONF (message_p).link_scan_resp[i].link_addr,  0, sizeof(ral_link_addr_t));
+                  // TO DO
+                  memset(&RRC_RAL_SCAN_CONF (message_p).link_scan_resp[i].network_id, 0, sizeof(ral_network_id_t));
+                  RRC_RAL_SCAN_CONF (message_p).link_scan_resp[i].sig_strength.choice     = RAL_SIG_STRENGTH_CHOICE_DBM;
+                  RRC_RAL_SCAN_CONF (message_p).link_scan_resp[i].sig_strength._union.dbm = PHY_FIND_CELL_IND(msg_p).cells[i].rsrp;
+                }
 
-          for (i = 0 ; i < PHY_FIND_CELL_IND(msg_p).cell_nb; i++) {
-            // TO DO
-            memset(&RRC_RAL_SCAN_CONF (message_p).link_scan_resp[i].link_addr,  0, sizeof(ral_link_addr_t));
-            // TO DO
-            memset(&RRC_RAL_SCAN_CONF (message_p).link_scan_resp[i].network_id, 0, sizeof(ral_network_id_t));
+                rrc_set_sub_state (ue_mod_id, RRC_SUB_STATE_IDLE);
+                itti_send_msg_to_task(TASK_RAL_UE, instance, message_p);
+                break;
+              }
 
-            RRC_RAL_SCAN_CONF (message_p).link_scan_resp[i].sig_strength.choice     = RAL_SIG_STRENGTH_CHOICE_DBM;
-            RRC_RAL_SCAN_CONF (message_p).link_scan_resp[i].sig_strength._union.dbm = PHY_FIND_CELL_IND(msg_p).cells[i].rsrp;
-          }
+              default:
+                LOG_E(RRC, "[UE %d] Invalid RRC state %d substate %d\n",
+                      ue_mod_id,
+                      rrc_get_state(ue_mod_id),
+                      rrc_get_sub_state(ue_mod_id));
+            }
 
-          rrc_set_sub_state (ue_mod_id, RRC_SUB_STATE_IDLE);
+            break;
 
-          itti_send_msg_to_task(TASK_RAL_UE, instance, message_p);
-          break;
-        }
+          case RRC_STATE_INACTIVE:
+          case RRC_STATE_CONNECTED:
+            /* should not happen */
+            LOG_E(RRC, "[UE %d] indication %s in RRC state %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p), rrc_get_state(ue_mod_id));
+            break;
 
-        default:
-          LOG_E(RRC, "[UE %d] Invalid RRC state %d substate %d\n",
-                ue_mod_id,
-                rrc_get_state(ue_mod_id),
-                rrc_get_sub_state(ue_mod_id));
+          default:
+            LOG_E(RRC, "[UE %d] Invalid RRC state %d\n", ue_mod_id, rrc_get_state(ue_mod_id));
+            break;
         }
 
-        break;
-
-      case RRC_STATE_INACTIVE:
-      case RRC_STATE_CONNECTED:
-        /* should not happen */
-        LOG_E(RRC, "[UE %d] indication %s in RRC state %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p), rrc_get_state(ue_mod_id));
-        break;
+        break; // PHY_FIND_CELL_IND
 
-      default:
-        LOG_E(RRC, "[UE %d] Invalid RRC state %d\n", ue_mod_id, rrc_get_state(ue_mod_id));
+      case PHY_MEAS_REPORT_IND: {
+        LOG_D(RRC, "[UE %d] Received %s\n", ue_mod_id, ITTI_MSG_NAME (msg_p));
+        MessageDef *message_p;
+        message_p = itti_alloc_new_message(TASK_RRC_UE, RRC_RAL_MEASUREMENT_REPORT_IND);
+        memcpy(&RRC_RAL_MEASUREMENT_REPORT_IND (message_p).threshold,
+               &PHY_MEAS_REPORT_IND(msg_p).threshold,
+               sizeof(RRC_RAL_MEASUREMENT_REPORT_IND (message_p).threshold));
+        memcpy(&RRC_RAL_MEASUREMENT_REPORT_IND (message_p).link_param,
+               &PHY_MEAS_REPORT_IND(msg_p).link_param,
+               sizeof(RRC_RAL_MEASUREMENT_REPORT_IND (message_p).link_param));
+        LOG_D(RRC, "[UE %d] PHY_MEAS_REPORT_IN: sending msg %s to %s \n", ue_mod_id, "RRC_RAL_MEASUREMENT_REPORT_IND", "TASK_RAL_UE");
+        itti_send_msg_to_task(TASK_RAL_UE, instance, message_p);
         break;
       }
 
-      break; // PHY_FIND_CELL_IND
-
-    case PHY_MEAS_REPORT_IND: {
-      LOG_D(RRC, "[UE %d] Received %s\n", ue_mod_id, ITTI_MSG_NAME (msg_p));
-      MessageDef *message_p;
-      message_p = itti_alloc_new_message(TASK_RRC_UE, RRC_RAL_MEASUREMENT_REPORT_IND);
-
-      memcpy(&RRC_RAL_MEASUREMENT_REPORT_IND (message_p).threshold,
-             &PHY_MEAS_REPORT_IND(msg_p).threshold,
-             sizeof(RRC_RAL_MEASUREMENT_REPORT_IND (message_p).threshold));
+      case RRC_RAL_CONFIGURE_THRESHOLD_REQ:
+        LOG_D(RRC, "[UE %d] Received %s\n", ue_mod_id, ITTI_MSG_NAME (msg_p));
+        rrc_ue_ral_handle_configure_threshold_request(ue_mod_id, msg_p);
+        break;
 
-      memcpy(&RRC_RAL_MEASUREMENT_REPORT_IND (message_p).link_param,
-             &PHY_MEAS_REPORT_IND(msg_p).link_param,
-             sizeof(RRC_RAL_MEASUREMENT_REPORT_IND (message_p).link_param));
+      case RRC_RAL_CONNECTION_ESTABLISHMENT_REQ:
+        LOG_D(RRC, "[UE %d] Received %s\n", ue_mod_id, ITTI_MSG_NAME (msg_p));
 
-      LOG_D(RRC, "[UE %d] PHY_MEAS_REPORT_IN: sending msg %s to %s \n", ue_mod_id, "RRC_RAL_MEASUREMENT_REPORT_IND", "TASK_RAL_UE");
-      itti_send_msg_to_task(TASK_RAL_UE, instance, message_p);
-      break;
-    }
+        switch (rrc_get_state(ue_mod_id)) {
+          case RRC_STATE_IDLE: {
+            if (rrc_get_sub_state(ue_mod_id) == RRC_SUB_STATE_IDLE_SIB_COMPLETE) {
+              PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, UE_rrc_inst[ue_mod_id].Info[0].rnti, 0, 0, 0);
+              rrc_ue_generate_RRCConnectionRequest(&ctxt, 0);
+              LOG_D(RRC, "not sending connection request\n");
+              rrc_set_sub_state (ue_mod_id, RRC_SUB_STATE_IDLE_CONNECTING);
+            }
 
-    case RRC_RAL_CONFIGURE_THRESHOLD_REQ:
-      LOG_D(RRC, "[UE %d] Received %s\n", ue_mod_id, ITTI_MSG_NAME (msg_p));
-      rrc_ue_ral_handle_configure_threshold_request(ue_mod_id, msg_p);
-      break;
+            break;
+          }
 
-    case RRC_RAL_CONNECTION_ESTABLISHMENT_REQ:
-      LOG_D(RRC, "[UE %d] Received %s\n", ue_mod_id, ITTI_MSG_NAME (msg_p));
+          case RRC_STATE_INACTIVE:
+          case RRC_STATE_CONNECTED:
+            /* should not happen */
+            LOG_E(RRC, "[UE %d] request %s in RRC state %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p), rrc_get_state(ue_mod_id));
+            break;
 
-      switch (rrc_get_state(ue_mod_id)) {
-      case RRC_STATE_IDLE: {
-        if (rrc_get_sub_state(ue_mod_id) == RRC_SUB_STATE_IDLE_SIB_COMPLETE) {
-          PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, UE_rrc_inst[ue_mod_id].Info[0].rnti, 0, 0, 0);
-          rrc_ue_generate_RRCConnectionRequest(&ctxt, 0);
-          LOG_D(RRC, "not sending connection request\n");
-          rrc_set_sub_state (ue_mod_id, RRC_SUB_STATE_IDLE_CONNECTING);
+          default:
+            LOG_E(RRC, "[UE %d] Invalid RRC state %d\n", ue_mod_id, rrc_get_state(ue_mod_id));
+            break;
         }
 
         break;
-      }
 
-      case RRC_STATE_INACTIVE:
-      case RRC_STATE_CONNECTED:
-        /* should not happen */
-        LOG_E(RRC, "[UE %d] request %s in RRC state %d\n", ue_mod_id, ITTI_MSG_NAME (msg_p), rrc_get_state(ue_mod_id));
+      case RRC_RAL_CONNECTION_RELEASE_REQ:
+        LOG_D(RRC, "[UE %d] Received %s\n", ue_mod_id, ITTI_MSG_NAME (msg_p));
         break;
+#endif
 
       default:
-        LOG_E(RRC, "[UE %d] Invalid RRC state %d\n", ue_mod_id, rrc_get_state(ue_mod_id));
+        LOG_E(RRC, "[UE %d] Received unexpected message %s\n", ue_mod_id, ITTI_MSG_NAME (msg_p));
         break;
-      }
-
-      break;
-
-    case RRC_RAL_CONNECTION_RELEASE_REQ:
-      LOG_D(RRC, "[UE %d] Received %s\n", ue_mod_id, ITTI_MSG_NAME (msg_p));
-      break;
-#endif
-
-    default:
-      LOG_E(RRC, "[UE %d] Received unexpected message %s\n", ue_mod_id, ITTI_MSG_NAME (msg_p));
-      break;
     }
 
     result = itti_free (ITTI_MSG_ORIGIN_ID(msg_p), msg_p);
@@ -5186,28 +4729,24 @@ void *rrc_ue_task( void *args_p )
 /*------------------------------------------------------------------------------*/
 void
 openair_rrc_top_init_ue(
-			int eMBMS_active,
-			char* uecap_xer,
-			uint8_t cba_group_active,
-			uint8_t HO_active
+  int eMBMS_active,
+  char *uecap_xer,
+  uint8_t cba_group_active,
+  uint8_t HO_active
 )
 //-----------------------------------------------------------------------------
 {
-
   module_id_t         module_id;
   OAI_UECapability_t *UECap     = NULL;
   int                 CC_id;
-
   /* for no gcc warnings */
   (void)CC_id;
-
   LOG_D(RRC, "[OPENAIR][INIT] Init function start: NB_UE_INST=%d, NB_eNB_INST=%d\n", NB_UE_INST, NB_eNB_INST);
 
   if (NB_UE_INST > 0) {
-    UE_rrc_inst = (UE_RRC_INST*) malloc16(NB_UE_INST*sizeof(UE_RRC_INST));
+    UE_rrc_inst = (UE_RRC_INST *) malloc16(NB_UE_INST*sizeof(UE_RRC_INST));
     memset (UE_rrc_inst, 0, NB_UE_INST * sizeof(UE_RRC_INST));
     LOG_D(RRC, "ALLOCATE %d Bytes for UE_RRC_INST @ %p\n", (unsigned int)(NB_UE_INST*sizeof(UE_RRC_INST)), UE_rrc_inst);
-
     // fill UE capability
     UECap = fill_ue_capability (uecap_xer);
 
@@ -5225,18 +4764,15 @@ openair_rrc_top_init_ue(
     }
 
 #endif
-
 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-  /* TODO: this is disabled for the moment because the standard UE
-   * crashes when calling this function.
-   */
-  //init_SL_preconfig(&UE_rrc_inst[module_id],0);
+    /* TODO: this is disabled for the moment because the standard UE
+     * crashes when calling this function.
+     */
+    //init_SL_preconfig(&UE_rrc_inst[module_id],0);
 #endif
-
   } else {
     UE_rrc_inst = NULL;
   }
-
 }
 
 //-----------------------------------------------------------------------------
@@ -5246,1086 +4782,1028 @@ rrc_top_cleanup_ue(
 )
 //-----------------------------------------------------------------------------
 {
-
   if (NB_UE_INST > 0) free (UE_rrc_inst);
-
-
 }
 
 
 //-----------------------------------------------------------------------------
-uint8_t rrc_ue_generate_SidelinkUEInformation( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index,LTE_SL_DestinationInfoList_r12_t  *destinationInfoList, long *discTxResourceReq, SL_TRIGGER_t mode)
-{
-   uint8_t    size=0;
-   uint8_t buffer[100];
-
-   //Generate SidelinkUEInformation
-   if (((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&8192) > 0) && (destinationInfoList != NULL)) {//if SIB18 is available
-      size = do_SidelinkUEInformation(ctxt_pP->module_id, buffer, destinationInfoList, NULL, mode);
-      LOG_I(RRC,"[UE %d][RRC_UE] Frame %d : Logical Channel UL-DCCH, Generating SidelinkUEInformation (bytes%d, eNB %d)\n",
-            ctxt_pP->module_id,ctxt_pP->frame, size, eNB_index);
-      //return size;
-   }
-   if (((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&16384) > 0) && (discTxResourceReq != NULL)) {//if SIB19 is available
-      size = do_SidelinkUEInformation(ctxt_pP->module_id, buffer, NULL, discTxResourceReq, mode);
-      LOG_I(RRC,"[UE %d][RRC_UE] Frame %d : Logical Channel UL-DCCH, Generating SidelinkUEInformation (bytes%d, eNB %d)\n",
-            ctxt_pP->module_id,ctxt_pP->frame, size, eNB_index);
-     //return size;
-   }
-
-   rrc_data_req_ue (
-       ctxt_pP,
-       DCCH,
-       rrc_mui++,
-       SDU_CONFIRM_NO,
-       size,
-       buffer,
-       PDCP_TRANSMISSION_MODE_CONTROL);
-   return size;
+uint8_t rrc_ue_generate_SidelinkUEInformation( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index,LTE_SL_DestinationInfoList_r12_t  *destinationInfoList, long *discTxResourceReq,
+    SL_TRIGGER_t mode) {
+  uint8_t    size=0;
+  uint8_t buffer[100];
+
+  //Generate SidelinkUEInformation
+  if (((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&8192) > 0) && (destinationInfoList != NULL)) {//if SIB18 is available
+    size = do_SidelinkUEInformation(ctxt_pP->module_id, buffer, destinationInfoList, NULL, mode);
+    LOG_I(RRC,"[UE %d][RRC_UE] Frame %d : Logical Channel UL-DCCH, Generating SidelinkUEInformation (bytes%d, eNB %d)\n",
+          ctxt_pP->module_id,ctxt_pP->frame, size, eNB_index);
+    //return size;
+  }
+
+  if (((UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].SIStatus&16384) > 0) && (discTxResourceReq != NULL)) {//if SIB19 is available
+    size = do_SidelinkUEInformation(ctxt_pP->module_id, buffer, NULL, discTxResourceReq, mode);
+    LOG_I(RRC,"[UE %d][RRC_UE] Frame %d : Logical Channel UL-DCCH, Generating SidelinkUEInformation (bytes%d, eNB %d)\n",
+          ctxt_pP->module_id,ctxt_pP->frame, size, eNB_index);
+    //return size;
+  }
+
+  rrc_data_req_ue (
+    ctxt_pP,
+    DCCH,
+    rrc_mui++,
+    SDU_CONFIRM_NO,
+    size,
+    buffer,
+    PDCP_TRANSMISSION_MODE_CONTROL);
+  return size;
 }
 
 
 // 3GPP 36.331 (Section 5.10.7.3)
-uint8_t fill_SLSS(const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index, LTE_SLSSID_r12_t *slss_id, uint8_t *subframe, uint8_t mode)
-{
-   long syncOffsetIndicator = 0;
-   switch(mode) {
-   case 1: //if triggered by SL discovery announcement and in-coverage
+uint8_t fill_SLSS(const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index, LTE_SLSSID_r12_t *slss_id, uint8_t *subframe, uint8_t mode) {
+  long syncOffsetIndicator = 0;
+
+  switch(mode) {
+    case 1: //if triggered by SL discovery announcement and in-coverage
       //discSyncConfig_r12 contains only one element
       *slss_id = UE_rrc_inst[ctxt_pP->module_id].sib19[eNB_index]->discConfig_r12->discSyncConfig_r12->list.array[0]->slssid_r12;
       syncOffsetIndicator = UE_rrc_inst[ctxt_pP->module_id].sib19[eNB_index]->discConfig_r12->discSyncConfig_r12->list.array[0]->syncOffsetIndicator_r12;
       //select subframe for SLSS
       break;
-   case 2: //if triggered by SL communication and in-coverage
 
+    case 2: //if triggered by SL communication and in-coverage
       if (UE_rrc_inst[ctxt_pP->module_id].sib18[eNB_index]->commConfig_r12->commSyncConfig_r12->list.array[0]->txParameters_r12) {
-         *slss_id = UE_rrc_inst[ctxt_pP->module_id].sib18[eNB_index]->commConfig_r12->commSyncConfig_r12->list.array[0]->slssid_r12;
-         syncOffsetIndicator = UE_rrc_inst[ctxt_pP->module_id].sib18[eNB_index]->commConfig_r12->commSyncConfig_r12->list.array[0]->syncOffsetIndicator_r12;
-
-         //if RRC_CONNECTED (Todo: and if networkControlledSyncTx (RRCConnectionReconfiguration) is configured and set to On)
-         if (UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].State == RRC_CONNECTED){
-            //select subframe(s) indicated by syncOffsetIndicator
-            *subframe = syncOffsetIndicator;
-         } else {
-            //select subframe(s) indicated by syncOffsetIndicator within SC period
-         }
-         break;
-   case 3: //if triggered by V2X communication and in coverage
+        *slss_id = UE_rrc_inst[ctxt_pP->module_id].sib18[eNB_index]->commConfig_r12->commSyncConfig_r12->list.array[0]->slssid_r12;
+        syncOffsetIndicator = UE_rrc_inst[ctxt_pP->module_id].sib18[eNB_index]->commConfig_r12->commSyncConfig_r12->list.array[0]->syncOffsetIndicator_r12;
 
-      break;
-   case 4: //if triggered by V2X communication and out-of-coverage
+        //if RRC_CONNECTED (Todo: and if networkControlledSyncTx (RRCConnectionReconfiguration) is configured and set to On)
+        if (UE_rrc_inst[ctxt_pP->module_id].Info[eNB_index].State == RRC_CONNECTED) {
+          //select subframe(s) indicated by syncOffsetIndicator
+          *subframe = syncOffsetIndicator;
+        } else {
+          //select subframe(s) indicated by syncOffsetIndicator within SC period
+        }
 
-      break;
-   case 5: //if triggered by V2X communication and UE has GNSS as the synchronization reference
+        break;
 
-   default:
-      //if UE has a selected SyncRefUE
-      //TODO
-      //else (no SyncRefUE Selected)
-      //Todo  if trigger by V2X
-      //else randomly select an SLSSID from the set defined for out-of-coverage
-      *slss_id = 170;//hardcoded
-      //select the subframe according to syncOffsetIndicator1/2 from the preconfigured parameters
-      break;
+      case 3: //if triggered by V2X communication and in coverage
+        break;
+
+      case 4: //if triggered by V2X communication and out-of-coverage
+        break;
+
+      case 5: //if triggered by V2X communication and UE has GNSS as the synchronization reference
+      default:
+        //if UE has a selected SyncRefUE
+        //TODO
+        //else (no SyncRefUE Selected)
+        //Todo  if trigger by V2X
+        //else randomly select an SLSSID from the set defined for out-of-coverage
+        *slss_id = 170;//hardcoded
+        //select the subframe according to syncOffsetIndicator1/2 from the preconfigured parameters
+        break;
       }
-   }
-   return 0;
+  }
+
+  return 0;
 }
 
 
 //-----------------------------------------------------------------------------
 void
 rrc_ue_process_sidelink_radioResourceConfig(
-      module_id_t                      Mod_idP,
-      uint8_t                          eNB_index,
-      LTE_SystemInformationBlockType18_r12_t     *sib18,
-      LTE_SystemInformationBlockType19_r12_t     *sib19,
-      LTE_SL_CommConfig_r12_t* sl_CommConfig,
-      LTE_SL_DiscConfig_r12_t* sl_DiscConfig
+  module_id_t                      Mod_idP,
+  uint8_t                          eNB_index,
+  LTE_SystemInformationBlockType18_r12_t     *sib18,
+  LTE_SystemInformationBlockType19_r12_t     *sib19,
+  LTE_SL_CommConfig_r12_t *sl_CommConfig,
+  LTE_SL_DiscConfig_r12_t *sl_DiscConfig
 )
 //-----------------------------------------------------------------------------
 {
-   //process SIB18, configure MAC/PHY for receiving SL communication (RRC_IDLE and RRC_CONNECTED), for transmitting SL communication (RRC_IDLE)
-   if (sib18 != NULL) {
-      if (sib18->commConfig_r12 != NULL) {
-         //do not consider commTXPoolExceptional for the moment
-         //configure PHY/MAC to receive SL communication by using the RPs indicated by commRxPool
-         //sib18->commConfig_r12->commRxPool_r12
-         //TODO
-
-         if (sib18->commConfig_r12->commTxPoolNormalCommon_r12 !=NULL) { //commTxPoolNormalCommon - to transmit SL communication in RRC_IDLE
-            //maybe we don't consider this case for the moment since UE will immediately establish a RRC connection after receiving SIB messages
-            //configure PHY/MAC to transmit SL communication using the RPs indicated by the first entry in commTxPoolNormalCommon
-            //SL_CommResourcePool_r12_t sl_CommResourcePool = sib18->commConfig_r12->commTxPoolNormalCommon_r12->list.array[0];
-         }
+  //process SIB18, configure MAC/PHY for receiving SL communication (RRC_IDLE and RRC_CONNECTED), for transmitting SL communication (RRC_IDLE)
+  if (sib18 != NULL) {
+    if (sib18->commConfig_r12 != NULL) {
+      //do not consider commTXPoolExceptional for the moment
+      //configure PHY/MAC to receive SL communication by using the RPs indicated by commRxPool
+      //sib18->commConfig_r12->commRxPool_r12
+      //TODO
+      if (sib18->commConfig_r12->commTxPoolNormalCommon_r12 !=NULL) { //commTxPoolNormalCommon - to transmit SL communication in RRC_IDLE
+        //maybe we don't consider this case for the moment since UE will immediately establish a RRC connection after receiving SIB messages
+        //configure PHY/MAC to transmit SL communication using the RPs indicated by the first entry in commTxPoolNormalCommon
+        //SL_CommResourcePool_r12_t sl_CommResourcePool = sib18->commConfig_r12->commTxPoolNormalCommon_r12->list.array[0];
       }
-   }
-
-   //process SIB19, configure MAC/PHY for receiving SL discovery (RRC_IDLE and RRC_CONNECTED), for transmitting SL discovery (RRC_IDLE)
-   if (sib19 != NULL) {
-      //to receive non-PS related discovery announcements (discRxPool)
-      //sib19->discConfig_r12->discRxPool_r12;
-
-      //to receive PS related discovery announcements (discRxPoolPS)
-      //sib19->ext1->discConfigPS_13->discRxPoolPS_r13;
-
-      //to transmit non-PS related discovery in RRC_IDLE
-      //sib19->discConfig_r12->discTxPoolCommon_r12;
-
-      //to transmit PS related discovery in RRC_IDLE
-      //sib19->ext1->discConfigPS_13->discTxPoolPS_Common_r13;
-   }
-
-   //process sl_CommConfig, configure MAC/PHY for transmitting SL communication (RRC_CONNECTED)
-   if (sl_CommConfig != NULL) {
-
-      if (sl_CommConfig->commTxResources_r12 != NULL) {
-         switch (sl_CommConfig->commTxResources_r12->present){
-         case LTE_SL_CommConfig_r12__commTxResources_r12_PR_setup:
-            if (sl_CommConfig->commTxResources_r12->choice.setup.present == LTE_SL_CommConfig_r12__commTxResources_r12__setup_PR_scheduled_r12 ){
-
-               LOG_I(RRC,"[UE %d][RRC_UE] scheduled resource for SL, sl_RNTI size %lu  \n",
-                     Mod_idP, sl_CommConfig->commTxResources_r12->choice.setup.choice.scheduled_r12.sl_RNTI_r12.size );
-               LOG_I(RRC,"[UE %d][RRC_UE] scheduled resource for SL, sl_RNTI buf 0x%p \n",
-                     Mod_idP, sl_CommConfig->commTxResources_r12->choice.setup.choice.scheduled_r12.sl_RNTI_r12.buf );
-               LOG_I(RRC,"[UE %d][RRC_UE] scheduled resource for SL, Mac_MainConfig_r12.retx_BSR_TimerSL %ld \n",
-                     Mod_idP, sl_CommConfig->commTxResources_r12->choice.setup.choice.scheduled_r12.mac_MainConfig_r12.retx_BSR_TimerSL );
-               LOG_I(RRC,"[UE %d][RRC_UE] scheduled resource for SL, sc_CommTxConfig %ld \n",
-                     Mod_idP, sl_CommConfig->commTxResources_r12->choice.setup.choice.scheduled_r12.mac_MainConfig_r12.retx_BSR_TimerSL );
-               //configure scheduled resource for SL
-               //TODO
-            } else if (sl_CommConfig->commTxResources_r12->choice.setup.present == LTE_SL_CommConfig_r12__commTxResources_r12__setup_PR_ue_Selected_r12){
-               //configure dedicated resources (commTxPoolNormalDedicated) for SL from which UE can autonomously select
-               //sl_CommConfig->commTxResources_r12->choice.setup.choice.ue_Selected_r12.commTxPoolNormalDedicated_r12;
-
-               //for the moment, only pass the first entry (e.g., do not consider priorityList in commTxPoolNormalDedicated (3GPP 36.331 Section 5.10.4 1>2>3>4))
-               //sl_CommConfig->commTxResources_r12->choice.setup.choice.ue_Selected_r12.commTxPoolNormalDedicated_r12.poolToAddModList_r12->list.array[0];
-            } else {
-               //SL_CommConfig_r12__commTxResources_r12__setup_PR_NOTHING /* No components present */
-            }
-            break;
+    }
+  }
 
-         case LTE_SL_CommConfig_r12__commTxResources_r12_PR_release:
-            //release dedicated resources for SL communication
-            break;
+  //process SIB19, configure MAC/PHY for receiving SL discovery (RRC_IDLE and RRC_CONNECTED), for transmitting SL discovery (RRC_IDLE)
+  if (sib19 != NULL) {
+    //to receive non-PS related discovery announcements (discRxPool)
+    //sib19->discConfig_r12->discRxPool_r12;
+    //to receive PS related discovery announcements (discRxPoolPS)
+    //sib19->ext1->discConfigPS_13->discRxPoolPS_r13;
+    //to transmit non-PS related discovery in RRC_IDLE
+    //sib19->discConfig_r12->discTxPoolCommon_r12;
+    //to transmit PS related discovery in RRC_IDLE
+    //sib19->ext1->discConfigPS_13->discTxPoolPS_Common_r13;
+  }
 
-         case LTE_SL_CommConfig_r12__commTxResources_r12_PR_NOTHING: /* No components present */
-            break;
+  //process sl_CommConfig, configure MAC/PHY for transmitting SL communication (RRC_CONNECTED)
+  if (sl_CommConfig != NULL) {
+    if (sl_CommConfig->commTxResources_r12 != NULL) {
+      switch (sl_CommConfig->commTxResources_r12->present) {
+        case LTE_SL_CommConfig_r12__commTxResources_r12_PR_setup:
+          if (sl_CommConfig->commTxResources_r12->choice.setup.present == LTE_SL_CommConfig_r12__commTxResources_r12__setup_PR_scheduled_r12 ) {
+            LOG_I(RRC,"[UE %d][RRC_UE] scheduled resource for SL, sl_RNTI size %lu  \n",
+                  Mod_idP, sl_CommConfig->commTxResources_r12->choice.setup.choice.scheduled_r12.sl_RNTI_r12.size );
+            LOG_I(RRC,"[UE %d][RRC_UE] scheduled resource for SL, sl_RNTI buf 0x%p \n",
+                  Mod_idP, sl_CommConfig->commTxResources_r12->choice.setup.choice.scheduled_r12.sl_RNTI_r12.buf );
+            LOG_I(RRC,"[UE %d][RRC_UE] scheduled resource for SL, Mac_MainConfig_r12.retx_BSR_TimerSL %ld \n",
+                  Mod_idP, sl_CommConfig->commTxResources_r12->choice.setup.choice.scheduled_r12.mac_MainConfig_r12.retx_BSR_TimerSL );
+            LOG_I(RRC,"[UE %d][RRC_UE] scheduled resource for SL, sc_CommTxConfig %ld \n",
+                  Mod_idP, sl_CommConfig->commTxResources_r12->choice.setup.choice.scheduled_r12.mac_MainConfig_r12.retx_BSR_TimerSL );
+            //configure scheduled resource for SL
+            //TODO
+          } else if (sl_CommConfig->commTxResources_r12->choice.setup.present == LTE_SL_CommConfig_r12__commTxResources_r12__setup_PR_ue_Selected_r12) {
+            //configure dedicated resources (commTxPoolNormalDedicated) for SL from which UE can autonomously select
+            //sl_CommConfig->commTxResources_r12->choice.setup.choice.ue_Selected_r12.commTxPoolNormalDedicated_r12;
+            //for the moment, only pass the first entry (e.g., do not consider priorityList in commTxPoolNormalDedicated (3GPP 36.331 Section 5.10.4 1>2>3>4))
+            //sl_CommConfig->commTxResources_r12->choice.setup.choice.ue_Selected_r12.commTxPoolNormalDedicated_r12.poolToAddModList_r12->list.array[0];
+          } else {
+            //SL_CommConfig_r12__commTxResources_r12__setup_PR_NOTHING /* No components present */
+          }
 
-         default:
-            break;
-         }
+          break;
+
+        case LTE_SL_CommConfig_r12__commTxResources_r12_PR_release:
+          //release dedicated resources for SL communication
+          break;
+
+        case LTE_SL_CommConfig_r12__commTxResources_r12_PR_NOTHING: /* No components present */
+          break;
+
+        default:
+          break;
       }
+    }
+  }
 
-   }
-
-   //process sl_DiscConfig, configure MAC/PHY for transmitting SL discovery announcements (RRC_CONNECTED)
-   if (sl_DiscConfig != NULL) {
-      //dedicated resources for transmitting non-PS related discovery
-      if (sl_DiscConfig->discTxResources_r12 != NULL) {
-
-         switch (sl_DiscConfig->discTxResources_r12->present) {
-         case LTE_SL_DiscConfig_r12__discTxResources_r12_PR_setup:
-            if (sl_DiscConfig->discTxResources_r12->choice.setup.present == LTE_SL_DiscConfig_r12__discTxResources_r12__setup_PR_scheduled_r12) {
-               //sl_DiscConfig->discTxResources_r12->choice.setup.choice.scheduled_r12.discHoppingConfig_r12;
-               //sl_DiscConfig->discTxResources_r12->choice.setup.choice.scheduled_r12.discTF_IndexList_r12;
-               //sl_DiscConfig->discTxResources_r12->choice.setup.choice.scheduled_r12.discTxConfig_r12;
-            } else if (sl_DiscConfig->discTxResources_r12->choice.setup.present == LTE_SL_DiscConfig_r12__discTxResources_r12__setup_PR_ue_Selected_r12) {
-               //sl_DiscConfig->discTxResources_r12->choice.setup.choice.ue_Selected_r12.discTxPoolDedicated_r12;
-            } else {
-               //SL_DiscConfig_r12__discTxResources_r12__setup_PR_NOTHING,   /* No components present */
-            }
-            break;
-         case LTE_SL_DiscConfig_r12__discTxResources_r12_PR_release:
-            //release dedicated resources for SL discovery
-            break;
-         case LTE_SL_DiscConfig_r12__discTxResources_r12_PR_NOTHING: /* No components present */
-            break;
-         default:
-            break;
-         }
+  //process sl_DiscConfig, configure MAC/PHY for transmitting SL discovery announcements (RRC_CONNECTED)
+  if (sl_DiscConfig != NULL) {
+    //dedicated resources for transmitting non-PS related discovery
+    if (sl_DiscConfig->discTxResources_r12 != NULL) {
+      switch (sl_DiscConfig->discTxResources_r12->present) {
+        case LTE_SL_DiscConfig_r12__discTxResources_r12_PR_setup:
+          if (sl_DiscConfig->discTxResources_r12->choice.setup.present == LTE_SL_DiscConfig_r12__discTxResources_r12__setup_PR_scheduled_r12) {
+            //sl_DiscConfig->discTxResources_r12->choice.setup.choice.scheduled_r12.discHoppingConfig_r12;
+            //sl_DiscConfig->discTxResources_r12->choice.setup.choice.scheduled_r12.discTF_IndexList_r12;
+            //sl_DiscConfig->discTxResources_r12->choice.setup.choice.scheduled_r12.discTxConfig_r12;
+          } else if (sl_DiscConfig->discTxResources_r12->choice.setup.present == LTE_SL_DiscConfig_r12__discTxResources_r12__setup_PR_ue_Selected_r12) {
+            //sl_DiscConfig->discTxResources_r12->choice.setup.choice.ue_Selected_r12.discTxPoolDedicated_r12;
+          } else {
+            //SL_DiscConfig_r12__discTxResources_r12__setup_PR_NOTHING,   /* No components present */
+          }
+
+          break;
 
+        case LTE_SL_DiscConfig_r12__discTxResources_r12_PR_release:
+          //release dedicated resources for SL discovery
+          break;
+
+        case LTE_SL_DiscConfig_r12__discTxResources_r12_PR_NOTHING: /* No components present */
+          break;
+
+        default:
+          break;
       }
-      //dedicated resources for transmitting PS related discovery
-      if (sl_DiscConfig->ext2->discTxResourcesPS_r13 != NULL){
-         switch (sl_DiscConfig->ext2->discTxResourcesPS_r13->present) {
-         case LTE_SL_DiscConfig_r12__ext2__discTxResourcesPS_r13_PR_setup:
-            if (sl_DiscConfig->ext2->discTxResourcesPS_r13->choice.setup.present == LTE_SL_DiscConfig_r12__ext2__discTxResourcesPS_r13__setup_PR_scheduled_r13) {
-               //sl_DiscConfig->ext2->discTxResourcesPS_r13->choice.setup.choice.scheduled_r13.discHoppingConfig_r13;
-               //sl_DiscConfig->ext2->discTxResourcesPS_r13->choice.setup.choice.scheduled_r13.discTxConfig_r13
-            } else if (sl_DiscConfig->ext2->discTxResourcesPS_r13->choice.setup.present == LTE_SL_DiscConfig_r12__ext2__discTxResourcesPS_r13__setup_PR_ue_Selected_r13) {
-               //sl_DiscConfig->ext2->discTxResourcesPS_r13->choice.setup.choice.ue_Selected_r13.discTxPoolPS_Dedicated_r13;
-            } else {
-               //SL_DiscConfig_r12__ext2__discTxResourcesPS_r13__setup_PR_NOTHING, /* No components present */
-            }
+    }
 
-            break;
-         case LTE_SL_DiscConfig_r12__ext2__discTxResourcesPS_r13_PR_release:
-            break;
-         case LTE_SL_DiscConfig_r12__ext2__discTxResourcesPS_r13_PR_NOTHING:
-            /* No components present */
-            break;
-         default:
-            break;
-         }
+    //dedicated resources for transmitting PS related discovery
+    if (sl_DiscConfig->ext2->discTxResourcesPS_r13 != NULL) {
+      switch (sl_DiscConfig->ext2->discTxResourcesPS_r13->present) {
+        case LTE_SL_DiscConfig_r12__ext2__discTxResourcesPS_r13_PR_setup:
+          if (sl_DiscConfig->ext2->discTxResourcesPS_r13->choice.setup.present == LTE_SL_DiscConfig_r12__ext2__discTxResourcesPS_r13__setup_PR_scheduled_r13) {
+            //sl_DiscConfig->ext2->discTxResourcesPS_r13->choice.setup.choice.scheduled_r13.discHoppingConfig_r13;
+            //sl_DiscConfig->ext2->discTxResourcesPS_r13->choice.setup.choice.scheduled_r13.discTxConfig_r13
+          } else if (sl_DiscConfig->ext2->discTxResourcesPS_r13->choice.setup.present == LTE_SL_DiscConfig_r12__ext2__discTxResourcesPS_r13__setup_PR_ue_Selected_r13) {
+            //sl_DiscConfig->ext2->discTxResourcesPS_r13->choice.setup.choice.ue_Selected_r13.discTxPoolPS_Dedicated_r13;
+          } else {
+            //SL_DiscConfig_r12__ext2__discTxResourcesPS_r13__setup_PR_NOTHING, /* No components present */
+          }
+
+          break;
+
+        case LTE_SL_DiscConfig_r12__ext2__discTxResourcesPS_r13_PR_release:
+          break;
+
+        case LTE_SL_DiscConfig_r12__ext2__discTxResourcesPS_r13_PR_NOTHING:
+          /* No components present */
+          break;
+
+        default:
+          break;
       }
-   }
+    }
+  }
 }
 
 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
 //-----------------------------------------------------------
 void
-rrc_control_socket_init(){
-
-   struct sockaddr_in rrc_ctrl_socket_addr;
-   pthread_attr_t     attr;
-   struct sched_param sched_param;
-   int optval; // flag value for setsockopt
-   //int n; // message byte size
+rrc_control_socket_init() {
+  struct sockaddr_in rrc_ctrl_socket_addr;
+  pthread_attr_t     attr;
+  struct sched_param sched_param;
+  int optval; // flag value for setsockopt
+  //int n; // message byte size
+  // create the control socket
+  ctrl_sock_fd = socket(AF_INET, SOCK_DGRAM, 0);
+
+  if (ctrl_sock_fd == -1) {
+    LOG_E(RRC,"[rrc_control_socket_init] :Error opening socket %d (%d:%s)\n",ctrl_sock_fd,errno, strerror(errno));
+    exit(EXIT_FAILURE);
+  }
 
+  //   if (ctrl_sock_fd < 0)
+  //      error("ERROR: Failed on opening socket");
+  optval = 1;
+  setsockopt(ctrl_sock_fd, SOL_SOCKET, SO_REUSEADDR,
+             (const void *)&optval , sizeof(int));
+  //build the server's  address
+  bzero((char *) &rrc_ctrl_socket_addr, sizeof(rrc_ctrl_socket_addr));
+  rrc_ctrl_socket_addr.sin_family = AF_INET;
+  rrc_ctrl_socket_addr.sin_addr.s_addr = htonl(INADDR_ANY);
+  rrc_ctrl_socket_addr.sin_port = htons(CONTROL_SOCKET_PORT_NO);
+
+  // associate the parent socket with a port
+  if (bind(ctrl_sock_fd, (struct sockaddr *) &rrc_ctrl_socket_addr,
+           sizeof(rrc_ctrl_socket_addr)) < 0) {
+    LOG_E(RRC,"[rrc_control_socket_init] ERROR: Failed on binding the socket\n");
+    exit(1);
+  }
 
-   // create the control socket
-   ctrl_sock_fd = socket(AF_INET, SOCK_DGRAM, 0);
-   if (ctrl_sock_fd == -1) {
-      LOG_E(RRC,"[rrc_control_socket_init] :Error opening socket %d (%d:%s)\n",ctrl_sock_fd,errno, strerror(errno));
-      exit(EXIT_FAILURE);
-   }
-   //   if (ctrl_sock_fd < 0)
-   //      error("ERROR: Failed on opening socket");
-   optval = 1;
-   setsockopt(ctrl_sock_fd, SOL_SOCKET, SO_REUSEADDR,
-         (const void *)&optval , sizeof(int));
-
-   //build the server's  address
-   bzero((char *) &rrc_ctrl_socket_addr, sizeof(rrc_ctrl_socket_addr));
-   rrc_ctrl_socket_addr.sin_family = AF_INET;
-   rrc_ctrl_socket_addr.sin_addr.s_addr = htonl(INADDR_ANY);
-   rrc_ctrl_socket_addr.sin_port = htons(CONTROL_SOCKET_PORT_NO);
-   // associate the parent socket with a port
-   if (bind(ctrl_sock_fd, (struct sockaddr *) &rrc_ctrl_socket_addr,
-         sizeof(rrc_ctrl_socket_addr)) < 0) {
-      LOG_E(RRC,"[rrc_control_socket_init] ERROR: Failed on binding the socket\n");
-      exit(1);
-   }
-   //create thread to listen to incoming packets
-   if (pthread_attr_init(&attr) != 0) {
-      LOG_E(RRC, "[rrc_control_socket_init]Failed to initialize pthread attribute for ProSe -> RRC communication (%d:%s)\n",
-            errno, strerror(errno));
-      exit(EXIT_FAILURE);
-   }
+  //create thread to listen to incoming packets
+  if (pthread_attr_init(&attr) != 0) {
+    LOG_E(RRC, "[rrc_control_socket_init]Failed to initialize pthread attribute for ProSe -> RRC communication (%d:%s)\n",
+          errno, strerror(errno));
+    exit(EXIT_FAILURE);
+  }
 
-   sched_param.sched_priority = 10;
+  sched_param.sched_priority = 10;
+  pthread_attr_setschedpolicy(&attr, SCHED_RR);
+  pthread_attr_setschedparam(&attr, &sched_param);
+  pthread_t rrc_control_socket_thread;
 
-   pthread_attr_setschedpolicy(&attr, SCHED_RR);
-   pthread_attr_setschedparam(&attr, &sched_param);
+  if (pthread_create(&rrc_control_socket_thread, &attr, rrc_control_socket_thread_fct, NULL) != 0) {
+    LOG_E(RRC, "[rrc_control_socket_init]Failed to create new thread for RRC/ProSeApp communication (%d:%s)\n",
+          errno, strerror(errno));
+    exit(EXIT_FAILURE);
+  }
 
-   pthread_t rrc_control_socket_thread;
+  pthread_setname_np( rrc_control_socket_thread, "RRC Control Socket" );
+}
 
-   if (pthread_create(&rrc_control_socket_thread, &attr, rrc_control_socket_thread_fct, NULL) != 0) {
-      LOG_E(RRC, "[rrc_control_socket_init]Failed to create new thread for RRC/ProSeApp communication (%d:%s)\n",
-            errno, strerror(errno));
+//--------------------------------------------------------
+void *rrc_control_socket_thread_fct(void *arg) {
+  int prose_addr_len;
+  char send_buf[BUFSIZE];
+  char receive_buf[BUFSIZE];
+  //int optval;
+  int n;
+  struct sidelink_ctrl_element *sl_ctrl_msg_recv = NULL;
+  struct sidelink_ctrl_element *sl_ctrl_msg_send = NULL;
+  uint32_t sourceL2Id, groupL2Id, destinationL2Id;
+  module_id_t         module_id = 0; //hardcoded for testing only
+  uint8_t type;
+  UE_RRC_INST *UE  = NULL;
+  protocol_ctxt_t ctxt;
+  struct LTE_RLC_Config                  *DRB_rlc_config                   = NULL;
+  struct LTE_PDCP_Config                 *DRB_pdcp_config                  = NULL;
+  struct LTE_PDCP_Config__rlc_UM         *PDCP_rlc_UM                      = NULL;
+  struct LTE_LogicalChannelConfig        *DRB_lchan_config                 = NULL;
+  struct LTE_LogicalChannelConfig__ul_SpecificParameters  *DRB_ul_SpecificParameters = NULL;
+  long                               *logicalchannelgroup_drb          = NULL;
+  int j = 0;
+  int i = 0;
+  //from the main program, listen for the incoming messages from control socket (ProSe App)
+  prose_addr_len = sizeof(prose_app_addr);
+
+  //int enable_notification = 1;
+  while (1) {
+    LOG_I(RRC,"Listening to incoming connection from ProSe App \n");
+    // receive a message from ProSe App
+    memset(receive_buf, 0, BUFSIZE);
+    n = recvfrom(ctrl_sock_fd, receive_buf, BUFSIZE, 0,
+                 (struct sockaddr *) &prose_app_addr, (socklen_t *)&prose_addr_len);
+
+    if (n < 0) {
+      LOG_E(RRC, "ERROR: Failed to receive from ProSe App\n");
       exit(EXIT_FAILURE);
-   }
-
-   pthread_setname_np( rrc_control_socket_thread, "RRC Control Socket" );
+    }
 
-}
+    //TODO: should store the address of ProSeApp [UE_rrc_inst] to be able to send UE state notification to the App
+    //sl_ctrl_msg_recv = (struct sidelink_ctrl_element *) receive_buf;
+    sl_ctrl_msg_recv = calloc(1, sizeof(struct sidelink_ctrl_element));
+    memcpy((void *)sl_ctrl_msg_recv, (void *)receive_buf, sizeof(struct sidelink_ctrl_element));
 
-//--------------------------------------------------------
-void *rrc_control_socket_thread_fct(void *arg)
-{
+    //process the message
+    switch (sl_ctrl_msg_recv->type) {
+      case SESSION_INIT_REQ:
+        if (LOG_DEBUGFLAG(DEBUG_CTRLSOCKET)) {
+          LOG_UI(RRC,"Received SessionInitializationRequest on socket from ProSe App (msg type: %d)\n", sl_ctrl_msg_recv->type);
+        }
 
-   int prose_addr_len;
-   char send_buf[BUFSIZE];
-   char receive_buf[BUFSIZE];
-   //int optval;
-   int n;
-   struct sidelink_ctrl_element *sl_ctrl_msg_recv = NULL;
-   struct sidelink_ctrl_element *sl_ctrl_msg_send = NULL;
-   uint32_t sourceL2Id, groupL2Id, destinationL2Id;
-   module_id_t         module_id = 0; //hardcoded for testing only
-   uint8_t type;
-   UE_RRC_INST *UE  = NULL;
-   protocol_ctxt_t ctxt;
-   struct LTE_RLC_Config                  *DRB_rlc_config                   = NULL;
-   struct LTE_PDCP_Config                 *DRB_pdcp_config                  = NULL;
-   struct LTE_PDCP_Config__rlc_UM         *PDCP_rlc_UM                      = NULL;
-   struct LTE_LogicalChannelConfig        *DRB_lchan_config                 = NULL;
-   struct LTE_LogicalChannelConfig__ul_SpecificParameters  *DRB_ul_SpecificParameters = NULL;
-   long                               *logicalchannelgroup_drb          = NULL;
-   int j = 0;
-   int i = 0;
-
-   //from the main program, listen for the incoming messages from control socket (ProSe App)
-   prose_addr_len = sizeof(prose_app_addr);
-   //int enable_notification = 1;
-   while (1) {
-      LOG_I(RRC,"Listening to incoming connection from ProSe App \n");
-      // receive a message from ProSe App
-      memset(receive_buf, 0, BUFSIZE);
-      n = recvfrom(ctrl_sock_fd, receive_buf, BUFSIZE, 0,
-            (struct sockaddr *) &prose_app_addr, (socklen_t *)&prose_addr_len);
-      if (n < 0){
-         LOG_E(RRC, "ERROR: Failed to receive from ProSe App\n");
-         exit(EXIT_FAILURE);
-      }
-      //TODO: should store the address of ProSeApp [UE_rrc_inst] to be able to send UE state notification to the App
+        //TODO: get SL_UE_STATE from lower layer
+        LOG_I(RRC,"Send UEStateInformation to ProSe App \n");
+        memset(send_buf, 0, BUFSIZE);
+        sl_ctrl_msg_send = calloc(1, sizeof(struct sidelink_ctrl_element));
+        sl_ctrl_msg_send->type = UE_STATUS_INFO;
+        sl_ctrl_msg_send->sidelinkPrimitive.ue_state = UE_STATE_OFF_NETWORK; //off-network
+        memcpy((void *)send_buf, (void *)sl_ctrl_msg_send, sizeof(struct sidelink_ctrl_element));
+        free(sl_ctrl_msg_send);
+        prose_addr_len = sizeof(prose_app_addr);
+        n = sendto(ctrl_sock_fd, (char *)send_buf, sizeof(struct sidelink_ctrl_element), 0, (struct sockaddr *)&prose_app_addr, prose_addr_len);
+
+        if (n < 0) {
+          LOG_E(RRC, "ERROR: Failed to send to ProSe App\n");
+          exit(EXIT_FAILURE);
+        }
 
-      //sl_ctrl_msg_recv = (struct sidelink_ctrl_element *) receive_buf;
-      sl_ctrl_msg_recv = calloc(1, sizeof(struct sidelink_ctrl_element));
-      memcpy((void *)sl_ctrl_msg_recv, (void *)receive_buf, sizeof(struct sidelink_ctrl_element));
+        if (LOG_DEBUGFLAG(DEBUG_CTRLSOCKET)) {
+          struct sidelink_ctrl_element *ptr_ctrl_msg = NULL;
+          ptr_ctrl_msg = (struct sidelink_ctrl_element *) send_buf;
+          LOG_UI(RRC,"[UEStateInformation] msg type: %d\n",ptr_ctrl_msg->type);
+          LOG_UI(RRC,"[UEStateInformation] UE state: %d\n",ptr_ctrl_msg->sidelinkPrimitive.ue_state);
+        }
 
-      //process the message
-      switch (sl_ctrl_msg_recv->type) {
-      case SESSION_INIT_REQ:
-         if (LOG_DEBUGFLAG(DEBUG_CTRLSOCKET)){
-           LOG_UI(RRC,"Received SessionInitializationRequest on socket from ProSe App (msg type: %d)\n", sl_ctrl_msg_recv->type);
-         }
-         //TODO: get SL_UE_STATE from lower layer
-
-         LOG_I(RRC,"Send UEStateInformation to ProSe App \n");
-         memset(send_buf, 0, BUFSIZE);
-
-         sl_ctrl_msg_send = calloc(1, sizeof(struct sidelink_ctrl_element));
-         sl_ctrl_msg_send->type = UE_STATUS_INFO;
-         sl_ctrl_msg_send->sidelinkPrimitive.ue_state = UE_STATE_OFF_NETWORK; //off-network
-         memcpy((void *)send_buf, (void *)sl_ctrl_msg_send, sizeof(struct sidelink_ctrl_element));
-         free(sl_ctrl_msg_send);
-
-         prose_addr_len = sizeof(prose_app_addr);
-         n = sendto(ctrl_sock_fd, (char *)send_buf, sizeof(struct sidelink_ctrl_element), 0, (struct sockaddr *)&prose_app_addr, prose_addr_len);
-         if (n < 0) {
-            LOG_E(RRC, "ERROR: Failed to send to ProSe App\n");
-            exit(EXIT_FAILURE);
-         }
-
-         if (LOG_DEBUGFLAG(DEBUG_CTRLSOCKET)){
-           struct sidelink_ctrl_element *ptr_ctrl_msg = NULL;
-           ptr_ctrl_msg = (struct sidelink_ctrl_element *) send_buf;
-           LOG_UI(RRC,"[UEStateInformation] msg type: %d\n",ptr_ctrl_msg->type);
-           LOG_UI(RRC,"[UEStateInformation] UE state: %d\n",ptr_ctrl_msg->sidelinkPrimitive.ue_state);
-         }
-         /*  if (enable_notification > 0) {
-              //create thread to send status notification (for testing purpose, status notification will be sent e.g., every 20 seconds)
-              pthread_t notification_thread;
-              if( pthread_create( &notification_thread , NULL ,  send_UE_status_notification , (void*) &sockfd) < 0)
-                 error("ERROR: could not create thread");
-           }
-           enable_notification = 0;
-          */
-         break;
+        /*  if (enable_notification > 0) {
+             //create thread to send status notification (for testing purpose, status notification will be sent e.g., every 20 seconds)
+             pthread_t notification_thread;
+             if( pthread_create( &notification_thread , NULL ,  send_UE_status_notification , (void*) &sockfd) < 0)
+                error("ERROR: could not create thread");
+          }
+          enable_notification = 0;
+         */
+        break;
 
       case GROUP_COMMUNICATION_ESTABLISH_REQ:
-         sourceL2Id = sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.sourceL2Id;
-         groupL2Id = sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.groupL2Id;
-
-         if (LOG_DEBUGFLAG(DEBUG_CTRLSOCKET)){
-           LOG_UI(RRC,"[GroupCommunicationEstablishReq] Received on socket from ProSe App (msg type: %d)\n",sl_ctrl_msg_recv->type);
-           LOG_UI(RRC,"[GroupCommunicationEstablishReq] source Id: 0x%08x\n",sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.sourceL2Id);
-           LOG_UI(RRC,"[GroupCommunicationEstablishReq] group Id: 0x%08x\n",sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.groupL2Id);
-           LOG_UI(RRC,"[GroupCommunicationEstablishReq] group IP Address: " IPV4_ADDR "\n",IPV4_ADDR_FORMAT(sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.groupIpAddress));
-         }
-
-         //store sourceL2Id/groupL2Id
-         UE_rrc_inst[module_id].sourceL2Id = sourceL2Id;
-         UE_rrc_inst[module_id].groupL2Id = groupL2Id;
-         j = 0;
-         i = 0;
-         for (i=0; i< MAX_NUM_DEST; i++) {
-            if ((UE_rrc_inst[module_id].destinationList[i] == 0) && (j == 0)) j = i+1;
-            if (UE_rrc_inst[module_id].destinationList[i] == groupL2Id) break; //group already exists!
-         }
-         if ((i == MAX_NUM_DEST) && (j > 0))  UE_mac_inst[module_id].destinationList[j-1] = groupL2Id;
-
-         // configure lower layers PDCP/MAC/PHY for this communication
-         //Establish a new RBID/LCID for this communication
-         // Establish a SLRB (using DRB 3 for now)
-         UE  = &UE_rrc_inst[module_id];
-         PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, 0, ENB_FLAG_NO, 0x1234, 0, 0,0);
-
-         UE->DRB_config[0][0] = CALLOC(1,sizeof(struct LTE_DRB_ToAddMod));
-         UE->DRB_config[0][0]->eps_BearerIdentity = CALLOC(1, sizeof(long));
-         UE->DRB_config[0][0]->drb_Identity =  3;
-         UE->DRB_config[0][0]->eps_BearerIdentity = CALLOC(1, sizeof(long));
-         // allowed value 5..15, value : x+4
-         *(UE->DRB_config[0][0]->eps_BearerIdentity) = 3;
-         UE->DRB_config[0][0]->logicalChannelIdentity = CALLOC(1, sizeof(long));
-         *(UE->DRB_config[0][0]->logicalChannelIdentity) = UE->DRB_config[0][0]->drb_Identity; //(long) (ue_context_pP->ue_context.e_rab[i].param.e_rab_id + 2); // value : x+2
-
-         DRB_rlc_config                   = CALLOC(1,sizeof(struct LTE_RLC_Config));
-         DRB_pdcp_config                  = CALLOC(1,sizeof(struct LTE_PDCP_Config));
-         PDCP_rlc_UM                      = CALLOC(1,sizeof(struct LTE_PDCP_Config__rlc_UM));
-         DRB_lchan_config                 = CALLOC(1,sizeof(struct LTE_LogicalChannelConfig));
-         DRB_ul_SpecificParameters                                         = CALLOC(1, sizeof(struct LTE_LogicalChannelConfig__ul_SpecificParameters));
-         logicalchannelgroup_drb          = CALLOC(1, sizeof(long));
-
-         DRB_rlc_config->present = LTE_RLC_Config_PR_um_Bi_Directional;
-         DRB_rlc_config->choice.um_Bi_Directional.ul_UM_RLC.sn_FieldLength = LTE_SN_FieldLength_size10;
-         DRB_rlc_config->choice.um_Bi_Directional.dl_UM_RLC.sn_FieldLength = LTE_SN_FieldLength_size10;
-         DRB_rlc_config->choice.um_Bi_Directional.dl_UM_RLC.t_Reordering = LTE_T_Reordering_ms35;
-         UE->DRB_config[0][0]->rlc_Config = DRB_rlc_config;
-
-         DRB_pdcp_config = CALLOC(1, sizeof(*DRB_pdcp_config));
-         UE->DRB_config[0][0]->pdcp_Config = DRB_pdcp_config;
-         DRB_pdcp_config->discardTimer = CALLOC(1, sizeof(long));
-         *DRB_pdcp_config->discardTimer = LTE_PDCP_Config__discardTimer_infinity;
-         DRB_pdcp_config->rlc_AM = NULL;
-         DRB_pdcp_config->rlc_UM = NULL;
-
-         /* avoid gcc warnings */
-         (void)PDCP_rlc_UM;
-
-         DRB_pdcp_config->rlc_UM = PDCP_rlc_UM;
-         PDCP_rlc_UM->pdcp_SN_Size = LTE_PDCP_Config__rlc_UM__pdcp_SN_Size_len12bits;
-         DRB_pdcp_config->headerCompression.present = LTE_PDCP_Config__headerCompression_PR_notUsed;
-
-         UE->DRB_config[0][0]->logicalChannelConfig = DRB_lchan_config;
-         DRB_ul_SpecificParameters = CALLOC(1, sizeof(*DRB_ul_SpecificParameters));
-         DRB_lchan_config->ul_SpecificParameters = DRB_ul_SpecificParameters;
-
-         DRB_ul_SpecificParameters->priority = 12;    // lower priority than srb1, srb2 and other dedicated bearer
-         DRB_ul_SpecificParameters->prioritisedBitRate =LTE_LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_kBps8 ;
-         //LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity;
-         DRB_ul_SpecificParameters->bucketSizeDuration =
-               LTE_LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms50;
-
-         // LCG for DTCH can take the value from 1 to 3 as defined in 36331: normally controlled by upper layers (like RRM)
-
-         *logicalchannelgroup_drb = 1;
-         DRB_ul_SpecificParameters->logicalChannelGroup = logicalchannelgroup_drb;
-
-         UE->DRB_configList = CALLOC(1,sizeof(LTE_DRB_ToAddModList_t));
-         ASN_SEQUENCE_ADD(&UE->DRB_configList->list,UE->DRB_config[0][0]);
-
-         rrc_pdcp_config_asn1_req(&ctxt,
-               (LTE_SRB_ToAddModList_t *) NULL,
-               UE->DRB_configList,
-               (LTE_DRB_ToReleaseList_t*) NULL,
-               0xff, NULL, NULL, NULL
-#if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-               , (LTE_PMCH_InfoList_r9_t *) NULL
-#endif
-               ,NULL);
+        sourceL2Id = sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.sourceL2Id;
+        groupL2Id = sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.groupL2Id;
+
+        if (LOG_DEBUGFLAG(DEBUG_CTRLSOCKET)) {
+          LOG_UI(RRC,"[GroupCommunicationEstablishReq] Received on socket from ProSe App (msg type: %d)\n",sl_ctrl_msg_recv->type);
+          LOG_UI(RRC,"[GroupCommunicationEstablishReq] source Id: 0x%08x\n",sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.sourceL2Id);
+          LOG_UI(RRC,"[GroupCommunicationEstablishReq] group Id: 0x%08x\n",sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.groupL2Id);
+          LOG_UI(RRC,"[GroupCommunicationEstablishReq] group IP Address: " IPV4_ADDR "\n",IPV4_ADDR_FORMAT(sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.groupIpAddress));
+        }
+
+        //store sourceL2Id/groupL2Id
+        UE_rrc_inst[module_id].sourceL2Id = sourceL2Id;
+        UE_rrc_inst[module_id].groupL2Id = groupL2Id;
+        j = 0;
+        i = 0;
 
+        for (i=0; i< MAX_NUM_DEST; i++) {
+          if ((UE_rrc_inst[module_id].destinationList[i] == 0) && (j == 0)) j = i+1;
 
-         rrc_rlc_config_asn1_req(&ctxt,
-               (LTE_SRB_ToAddModList_t*)NULL,
-               UE->DRB_configList,
-               (LTE_DRB_ToReleaseList_t*)NULL
+          if (UE_rrc_inst[module_id].destinationList[i] == groupL2Id) break; //group already exists!
+        }
+
+        if ((i == MAX_NUM_DEST) && (j > 0))  UE_mac_inst[module_id].destinationList[j-1] = groupL2Id;
+
+        // configure lower layers PDCP/MAC/PHY for this communication
+        //Establish a new RBID/LCID for this communication
+        // Establish a SLRB (using DRB 3 for now)
+        UE  = &UE_rrc_inst[module_id];
+        PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, 0, ENB_FLAG_NO, 0x1234, 0, 0,0);
+        UE->DRB_config[0][0] = CALLOC(1,sizeof(struct LTE_DRB_ToAddMod));
+        UE->DRB_config[0][0]->eps_BearerIdentity = CALLOC(1, sizeof(long));
+        UE->DRB_config[0][0]->drb_Identity =  3;
+        UE->DRB_config[0][0]->eps_BearerIdentity = CALLOC(1, sizeof(long));
+        // allowed value 5..15, value : x+4
+        *(UE->DRB_config[0][0]->eps_BearerIdentity) = 3;
+        UE->DRB_config[0][0]->logicalChannelIdentity = CALLOC(1, sizeof(long));
+        *(UE->DRB_config[0][0]->logicalChannelIdentity) = UE->DRB_config[0][0]->drb_Identity; //(long) (ue_context_pP->ue_context.e_rab[i].param.e_rab_id + 2); // value : x+2
+        DRB_rlc_config                   = CALLOC(1,sizeof(struct LTE_RLC_Config));
+        DRB_pdcp_config                  = CALLOC(1,sizeof(struct LTE_PDCP_Config));
+        PDCP_rlc_UM                      = CALLOC(1,sizeof(struct LTE_PDCP_Config__rlc_UM));
+        DRB_lchan_config                 = CALLOC(1,sizeof(struct LTE_LogicalChannelConfig));
+        DRB_ul_SpecificParameters                                         = CALLOC(1, sizeof(struct LTE_LogicalChannelConfig__ul_SpecificParameters));
+        logicalchannelgroup_drb          = CALLOC(1, sizeof(long));
+        DRB_rlc_config->present = LTE_RLC_Config_PR_um_Bi_Directional;
+        DRB_rlc_config->choice.um_Bi_Directional.ul_UM_RLC.sn_FieldLength = LTE_SN_FieldLength_size10;
+        DRB_rlc_config->choice.um_Bi_Directional.dl_UM_RLC.sn_FieldLength = LTE_SN_FieldLength_size10;
+        DRB_rlc_config->choice.um_Bi_Directional.dl_UM_RLC.t_Reordering = LTE_T_Reordering_ms35;
+        UE->DRB_config[0][0]->rlc_Config = DRB_rlc_config;
+        DRB_pdcp_config = CALLOC(1, sizeof(*DRB_pdcp_config));
+        UE->DRB_config[0][0]->pdcp_Config = DRB_pdcp_config;
+        DRB_pdcp_config->discardTimer = CALLOC(1, sizeof(long));
+        *DRB_pdcp_config->discardTimer = LTE_PDCP_Config__discardTimer_infinity;
+        DRB_pdcp_config->rlc_AM = NULL;
+        DRB_pdcp_config->rlc_UM = NULL;
+        /* avoid gcc warnings */
+        (void)PDCP_rlc_UM;
+        DRB_pdcp_config->rlc_UM = PDCP_rlc_UM;
+        PDCP_rlc_UM->pdcp_SN_Size = LTE_PDCP_Config__rlc_UM__pdcp_SN_Size_len12bits;
+        DRB_pdcp_config->headerCompression.present = LTE_PDCP_Config__headerCompression_PR_notUsed;
+        UE->DRB_config[0][0]->logicalChannelConfig = DRB_lchan_config;
+        DRB_ul_SpecificParameters = CALLOC(1, sizeof(*DRB_ul_SpecificParameters));
+        DRB_lchan_config->ul_SpecificParameters = DRB_ul_SpecificParameters;
+        DRB_ul_SpecificParameters->priority = 12;    // lower priority than srb1, srb2 and other dedicated bearer
+        DRB_ul_SpecificParameters->prioritisedBitRate =LTE_LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_kBps8 ;
+        //LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity;
+        DRB_ul_SpecificParameters->bucketSizeDuration =
+          LTE_LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms50;
+        // LCG for DTCH can take the value from 1 to 3 as defined in 36331: normally controlled by upper layers (like RRM)
+        *logicalchannelgroup_drb = 1;
+        DRB_ul_SpecificParameters->logicalChannelGroup = logicalchannelgroup_drb;
+        UE->DRB_configList = CALLOC(1,sizeof(LTE_DRB_ToAddModList_t));
+        ASN_SEQUENCE_ADD(&UE->DRB_configList->list,UE->DRB_config[0][0]);
+        rrc_pdcp_config_asn1_req(&ctxt,
+                                 (LTE_SRB_ToAddModList_t *) NULL,
+                                 UE->DRB_configList,
+                                 (LTE_DRB_ToReleaseList_t *) NULL,
+                                 0xff, NULL, NULL, NULL
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-               ,(LTE_PMCH_InfoList_r9_t *)NULL
-               , 0, 0
+                                 , (LTE_PMCH_InfoList_r9_t *) NULL
 #endif
-         );
-
-         rrc_rlc_config_asn1_req(&ctxt,
-               (LTE_SRB_ToAddModList_t*)NULL,
-               UE->DRB_configList,
-               (LTE_DRB_ToReleaseList_t*)NULL
+                                 ,NULL);
+        rrc_rlc_config_asn1_req(&ctxt,
+                                (LTE_SRB_ToAddModList_t *)NULL,
+                                UE->DRB_configList,
+                                (LTE_DRB_ToReleaseList_t *)NULL
+#if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
+                                ,(LTE_PMCH_InfoList_r9_t *)NULL
+                                , 0, 0
+#endif
+                               );
+        rrc_rlc_config_asn1_req(&ctxt,
+                                (LTE_SRB_ToAddModList_t *)NULL,
+                                UE->DRB_configList,
+                                (LTE_DRB_ToReleaseList_t *)NULL
 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-               ,(LTE_PMCH_InfoList_r9_t *)NULL
-               , sourceL2Id, groupL2Id
+                                ,(LTE_PMCH_InfoList_r9_t *)NULL
+                                , sourceL2Id, groupL2Id
 #endif
-         );
-
-
-         //configure MAC with sourceL2Id/groupL2ID
-         rrc_mac_config_req_ue(module_id,0,0, //eNB_index =0
-               (LTE_RadioResourceConfigCommonSIB_t *)NULL,
-               (struct LTE_PhysicalConfigDedicated *)NULL,
+                               );
+        //configure MAC with sourceL2Id/groupL2ID
+        rrc_mac_config_req_ue(module_id,0,0, //eNB_index =0
+                              (LTE_RadioResourceConfigCommonSIB_t *)NULL,
+                              (struct LTE_PhysicalConfigDedicated *)NULL,
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-               (LTE_SCellToAddMod_r10_t *)NULL,
-               //struct PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10,
-#endif
-               (LTE_MeasObjectToAddMod_t **)NULL,
-               (LTE_MAC_MainConfig_t *)NULL,
-               3, //LCID
-               (struct LTE_LogicalChannelConfig *)NULL,
-               (LTE_MeasGapConfig_t *)NULL,
-               (LTE_TDD_Config_t *)NULL,
-               (LTE_MobilityControlInfo_t *)NULL,
-               NULL,
-               NULL,
-               NULL,
-               NULL,
-               NULL,
-               NULL
+                              (LTE_SCellToAddMod_r10_t *)NULL,
+                              //struct PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10,
+#endif
+                              (LTE_MeasObjectToAddMod_t **)NULL,
+                              (LTE_MAC_MainConfig_t *)NULL,
+                              3, //LCID
+                              (struct LTE_LogicalChannelConfig *)NULL,
+                              (LTE_MeasGapConfig_t *)NULL,
+                              (LTE_TDD_Config_t *)NULL,
+                              (LTE_MobilityControlInfo_t *)NULL,
+                              NULL,
+                              NULL,
+                              NULL,
+                              NULL,
+                              NULL,
+                              NULL
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-               ,0,
-               (LTE_MBSFN_AreaInfoList_r9_t *)NULL,
-               (LTE_PMCH_InfoList_r9_t *)NULL
-
+                              ,0,
+                              (LTE_MBSFN_AreaInfoList_r9_t *)NULL,
+                              (LTE_PMCH_InfoList_r9_t *)NULL
 #endif
 #ifdef CBA
-               ,
-               0,
-               0
+                              ,
+                              0,
+                              0
 #endif
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-               ,CONFIG_ACTION_ADD,
-               &sourceL2Id,
-               &groupL2Id
-#endif
-         );
-
-         LOG_I(RRC,"Send GroupCommunicationEstablishResp to ProSe App\n");
-         memset(send_buf, 0, BUFSIZE);
-         sl_ctrl_msg_send = calloc(1, sizeof(struct sidelink_ctrl_element));
-         sl_ctrl_msg_send->type = GROUP_COMMUNICATION_ESTABLISH_RSP;
-         sl_ctrl_msg_send->sidelinkPrimitive.slrb_id = 3; //slrb_id
-
-         memcpy((void *)send_buf, (void *)sl_ctrl_msg_send, sizeof(struct sidelink_ctrl_element));
-         free(sl_ctrl_msg_send);
-
-         prose_addr_len = sizeof(prose_app_addr);
-         n = sendto(ctrl_sock_fd, (char *)send_buf, sizeof(struct sidelink_ctrl_element), 0, (struct sockaddr *)&prose_app_addr, prose_addr_len);
-         if (n < 0){
-            LOG_E(RRC, "ERROR: Failed to send to ProSe App\n");
-            exit(EXIT_FAILURE);
-         }
-
-         if (LOG_DEBUGFLAG(DEBUG_CTRLSOCKET)){
-           struct sidelink_ctrl_element *ptr_ctrl_msg = NULL;
-           ptr_ctrl_msg = (struct sidelink_ctrl_element *) send_buf;
-           LOG_UI(RRC,"[GroupCommunicationEstablishResponse]  msg type: %d\n",ptr_ctrl_msg->type);
-           LOG_UI(RRC,"[GroupCommunicationEstablishResponse]  slrb_id: %d\n",ptr_ctrl_msg->sidelinkPrimitive.slrb_id);
-         }
-         break;
+                              ,CONFIG_ACTION_ADD,
+                              &sourceL2Id,
+                              &groupL2Id
+#endif
+                             );
+        LOG_I(RRC,"Send GroupCommunicationEstablishResp to ProSe App\n");
+        memset(send_buf, 0, BUFSIZE);
+        sl_ctrl_msg_send = calloc(1, sizeof(struct sidelink_ctrl_element));
+        sl_ctrl_msg_send->type = GROUP_COMMUNICATION_ESTABLISH_RSP;
+        sl_ctrl_msg_send->sidelinkPrimitive.slrb_id = 3; //slrb_id
+        memcpy((void *)send_buf, (void *)sl_ctrl_msg_send, sizeof(struct sidelink_ctrl_element));
+        free(sl_ctrl_msg_send);
+        prose_addr_len = sizeof(prose_app_addr);
+        n = sendto(ctrl_sock_fd, (char *)send_buf, sizeof(struct sidelink_ctrl_element), 0, (struct sockaddr *)&prose_app_addr, prose_addr_len);
+
+        if (n < 0) {
+          LOG_E(RRC, "ERROR: Failed to send to ProSe App\n");
+          exit(EXIT_FAILURE);
+        }
+
+        if (LOG_DEBUGFLAG(DEBUG_CTRLSOCKET)) {
+          struct sidelink_ctrl_element *ptr_ctrl_msg = NULL;
+          ptr_ctrl_msg = (struct sidelink_ctrl_element *) send_buf;
+          LOG_UI(RRC,"[GroupCommunicationEstablishResponse]  msg type: %d\n",ptr_ctrl_msg->type);
+          LOG_UI(RRC,"[GroupCommunicationEstablishResponse]  slrb_id: %d\n",ptr_ctrl_msg->sidelinkPrimitive.slrb_id);
+        }
+
+        break;
 
       case GROUP_COMMUNICATION_RELEASE_REQ:
-         printf("-----------------------------------\n");
-         if (LOG_DEBUGFLAG(DEBUG_CTRLSOCKET)){
-           LOG_UI(RRC,"[GroupCommunicationReleaseRequest] Received on socket from ProSe App (msg type: %d)\n",sl_ctrl_msg_recv->type);
-           LOG_UI(RRC,"[GroupCommunicationReleaseRequest] Slrb Id: %i\n",sl_ctrl_msg_recv->sidelinkPrimitive.slrb_id);
-         }
-         //reset groupL2ID from MAC LAYER
-         UE_rrc_inst[module_id].groupL2Id = 0x00000000;
-         sourceL2Id = UE_rrc_inst[module_id].sourceL2Id;
-
-         rrc_mac_config_req_ue(module_id,0,0, //eNB_index =0
-                    (LTE_RadioResourceConfigCommonSIB_t *)NULL,
-                    (struct LTE_PhysicalConfigDedicated *)NULL,
-         #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-                    (LTE_SCellToAddMod_r10_t *)NULL,
-                    //struct PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10,
-         #endif
-                    (LTE_MeasObjectToAddMod_t **)NULL,
-                    (LTE_MAC_MainConfig_t *)NULL,
-                    0,
-                    (struct LTE_LogicalChannelConfig *)NULL,
-                    (LTE_MeasGapConfig_t *)NULL,
-                    (LTE_TDD_Config_t *)NULL,
-                    (LTE_MobilityControlInfo_t *)NULL,
-                    NULL,
-                    NULL,
-                    NULL,
-                    NULL,
-                    NULL,
-                    NULL
-         #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-                    ,0,
-                    (LTE_MBSFN_AreaInfoList_r9_t *)NULL,
-                    (LTE_PMCH_InfoList_r9_t *)NULL
-
-         #endif
-         #ifdef CBA
-                    ,
-                    0,
-                    0
-         #endif
-         #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-                    ,CONFIG_ACTION_REMOVE,
-                    &sourceL2Id,
-                    &destinationL2Id
-         #endif
-                    );
-
-
-         LOG_I(RRC,"Send GroupCommunicationReleaseResponse to ProSe App \n");
-         memset(send_buf, 0, BUFSIZE);
-
-         sl_ctrl_msg_send = calloc(1, sizeof(struct sidelink_ctrl_element));
-         sl_ctrl_msg_send->type = GROUP_COMMUNICATION_RELEASE_RSP;
-         //if the requested id exists -> release this ID
-         if (sl_ctrl_msg_recv->sidelinkPrimitive.slrb_id == slrb_id) {
-            sl_ctrl_msg_send->sidelinkPrimitive.group_comm_release_rsp = GROUP_COMMUNICATION_RELEASE_OK;
-            slrb_id = 0; //Reset slrb_id
-         } else {
-            sl_ctrl_msg_send->sidelinkPrimitive.group_comm_release_rsp = GROUP_COMMUNICATION_RELEASE_FAILURE;
-         }
-         memcpy((void *)send_buf, (void *)sl_ctrl_msg_send, sizeof(struct sidelink_ctrl_element));
-         free(sl_ctrl_msg_send);
-
-         prose_addr_len = sizeof(prose_app_addr);
-         n = sendto(ctrl_sock_fd, (char *)send_buf, sizeof(struct sidelink_ctrl_element), 0, (struct sockaddr *)&prose_app_addr, prose_addr_len);
-         if (n < 0){
-            LOG_E(RRC, "ERROR: Failed to send to ProSe App\n");
-            exit(EXIT_FAILURE);
-         }
-         break;
+        printf("-----------------------------------\n");
 
+        if (LOG_DEBUGFLAG(DEBUG_CTRLSOCKET)) {
+          LOG_UI(RRC,"[GroupCommunicationReleaseRequest] Received on socket from ProSe App (msg type: %d)\n",sl_ctrl_msg_recv->type);
+          LOG_UI(RRC,"[GroupCommunicationReleaseRequest] Slrb Id: %i\n",sl_ctrl_msg_recv->sidelinkPrimitive.slrb_id);
+        }
 
-      case DIRECT_COMMUNICATION_ESTABLISH_REQ:
-         sourceL2Id = sl_ctrl_msg_recv->sidelinkPrimitive.direct_comm_establish_req.sourceL2Id;
-         destinationL2Id = sl_ctrl_msg_recv->sidelinkPrimitive.direct_comm_establish_req.destinationL2Id;
-
-         if (LOG_DEBUGFLAG(DEBUG_CTRLSOCKET)){
-           LOG_UI(RRC,"[DirectCommunicationEstablishReq] Received on socket from ProSe App (msg type: %d)\n",sl_ctrl_msg_recv->type);
-           LOG_UI(RRC,"[DirectCommunicationEstablishReq] source Id: 0x%08x\n",sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.sourceL2Id);
-           LOG_UI(RRC,"[DirectCommunicationEstablishReq] destination Id: 0x%08x\n",sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.groupL2Id);
-         }
-
-         //store sourceL2Id/destinationL2Id
-         UE_rrc_inst[module_id].sourceL2Id = sourceL2Id;
-         i = 0;
-         j = 0;
-         for (i=0; i< MAX_NUM_DEST; i++) {
-            if ((UE_rrc_inst[module_id].destinationList[i] == 0) && (j == 0)) j = i+1;
-            if (UE_rrc_inst[module_id].destinationList[i] == destinationL2Id) break; //destination already exists!
-         }
-         if ((i == MAX_NUM_DEST) && (j > 0))  UE_mac_inst[module_id].destinationList[j-1] = destinationL2Id;
-
-         // configure lower layers PDCP/MAC/PHY for this communication
-         //Establish a new RBID/LCID for this communication
-         // Establish a SLRB (using DRB 3 for now)
-         UE  = &UE_rrc_inst[module_id];
-         PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, 0, ENB_FLAG_NO, 0x1234, 0, 0,0);
-
-         UE->DRB_config[0][0] = CALLOC(1,sizeof(struct LTE_DRB_ToAddMod));
-         UE->DRB_config[0][0]->eps_BearerIdentity = CALLOC(1, sizeof(long));
-         UE->DRB_config[0][0]->drb_Identity =  3;
-         UE->DRB_config[0][0]->eps_BearerIdentity = CALLOC(1, sizeof(long));
-         // allowed value 5..15, value : x+4
-         *(UE->DRB_config[0][0]->eps_BearerIdentity) = 3;
-         UE->DRB_config[0][0]->logicalChannelIdentity = CALLOC(1, sizeof(long));
-         *(UE->DRB_config[0][0]->logicalChannelIdentity) = UE->DRB_config[0][0]->drb_Identity; //(long) (ue_context_pP->ue_context.e_rab[i].param.e_rab_id + 2); // value : x+2
-
-         DRB_rlc_config                   = CALLOC(1,sizeof(struct LTE_RLC_Config));
-         DRB_pdcp_config                  = CALLOC(1,sizeof(struct LTE_PDCP_Config));
-         PDCP_rlc_UM                      = CALLOC(1,sizeof(struct LTE_PDCP_Config__rlc_UM));
-         DRB_lchan_config                 = CALLOC(1,sizeof(struct LTE_LogicalChannelConfig));
-         DRB_ul_SpecificParameters                                         = CALLOC(1, sizeof(struct LTE_LogicalChannelConfig__ul_SpecificParameters));
-         logicalchannelgroup_drb          = CALLOC(1, sizeof(long));
-
-         DRB_rlc_config->present = LTE_RLC_Config_PR_um_Bi_Directional;
-         DRB_rlc_config->choice.um_Bi_Directional.ul_UM_RLC.sn_FieldLength = LTE_SN_FieldLength_size10;
-         DRB_rlc_config->choice.um_Bi_Directional.dl_UM_RLC.sn_FieldLength = LTE_SN_FieldLength_size10;
-         DRB_rlc_config->choice.um_Bi_Directional.dl_UM_RLC.t_Reordering = LTE_T_Reordering_ms35;
-         UE->DRB_config[0][0]->rlc_Config = DRB_rlc_config;
-
-         DRB_pdcp_config = CALLOC(1, sizeof(*DRB_pdcp_config));
-         UE->DRB_config[0][0]->pdcp_Config = DRB_pdcp_config;
-         DRB_pdcp_config->discardTimer = CALLOC(1, sizeof(long));
-         *DRB_pdcp_config->discardTimer = LTE_PDCP_Config__discardTimer_infinity;
-         DRB_pdcp_config->rlc_AM = NULL;
-         DRB_pdcp_config->rlc_UM = NULL;
-
-         /* avoid gcc warnings */
-         (void)PDCP_rlc_UM;
-
-         DRB_pdcp_config->rlc_UM = PDCP_rlc_UM;
-         PDCP_rlc_UM->pdcp_SN_Size = LTE_PDCP_Config__rlc_UM__pdcp_SN_Size_len12bits;
-         DRB_pdcp_config->headerCompression.present = LTE_PDCP_Config__headerCompression_PR_notUsed;
-
-         UE->DRB_config[0][0]->logicalChannelConfig = DRB_lchan_config;
-         DRB_ul_SpecificParameters = CALLOC(1, sizeof(*DRB_ul_SpecificParameters));
-         DRB_lchan_config->ul_SpecificParameters = DRB_ul_SpecificParameters;
-
-         DRB_ul_SpecificParameters->priority = 12;    // lower priority than srb1, srb2 and other dedicated bearer
-         DRB_ul_SpecificParameters->prioritisedBitRate =LTE_LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_kBps8 ;
-         //LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity;
-         DRB_ul_SpecificParameters->bucketSizeDuration =
-               LTE_LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms50;
-
-         // LCG for DTCH can take the value from 1 to 3 as defined in 36331: normally controlled by upper layers (like RRM)
-
-         *logicalchannelgroup_drb = 1;
-         DRB_ul_SpecificParameters->logicalChannelGroup = logicalchannelgroup_drb;
-
-         UE->DRB_configList = CALLOC(1,sizeof(LTE_DRB_ToAddModList_t));
-         ASN_SEQUENCE_ADD(&UE->DRB_configList->list,UE->DRB_config[0][0]);
-
-         rrc_pdcp_config_asn1_req(&ctxt,
-               (LTE_SRB_ToAddModList_t *) NULL,
-               UE->DRB_configList,
-               (LTE_DRB_ToReleaseList_t*) NULL,
-               0xff, NULL, NULL, NULL
+        //reset groupL2ID from MAC LAYER
+        UE_rrc_inst[module_id].groupL2Id = 0x00000000;
+        sourceL2Id = UE_rrc_inst[module_id].sourceL2Id;
+        rrc_mac_config_req_ue(module_id,0,0, //eNB_index =0
+                              (LTE_RadioResourceConfigCommonSIB_t *)NULL,
+                              (struct LTE_PhysicalConfigDedicated *)NULL,
+#if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
+                              (LTE_SCellToAddMod_r10_t *)NULL,
+                              //struct PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10,
+#endif
+                              (LTE_MeasObjectToAddMod_t **)NULL,
+                              (LTE_MAC_MainConfig_t *)NULL,
+                              0,
+                              (struct LTE_LogicalChannelConfig *)NULL,
+                              (LTE_MeasGapConfig_t *)NULL,
+                              (LTE_TDD_Config_t *)NULL,
+                              (LTE_MobilityControlInfo_t *)NULL,
+                              NULL,
+                              NULL,
+                              NULL,
+                              NULL,
+                              NULL,
+                              NULL
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-               , (LTE_PMCH_InfoList_r9_t *) NULL
+                              ,0,
+                              (LTE_MBSFN_AreaInfoList_r9_t *)NULL,
+                              (LTE_PMCH_InfoList_r9_t *)NULL
 #endif
-               ,NULL);
+#ifdef CBA
+                              ,
+                              0,
+                              0
+#endif
+#if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
+                              ,CONFIG_ACTION_REMOVE,
+                              &sourceL2Id,
+                              &destinationL2Id
+#endif
+                             );
+        LOG_I(RRC,"Send GroupCommunicationReleaseResponse to ProSe App \n");
+        memset(send_buf, 0, BUFSIZE);
+        sl_ctrl_msg_send = calloc(1, sizeof(struct sidelink_ctrl_element));
+        sl_ctrl_msg_send->type = GROUP_COMMUNICATION_RELEASE_RSP;
+
+        //if the requested id exists -> release this ID
+        if (sl_ctrl_msg_recv->sidelinkPrimitive.slrb_id == slrb_id) {
+          sl_ctrl_msg_send->sidelinkPrimitive.group_comm_release_rsp = GROUP_COMMUNICATION_RELEASE_OK;
+          slrb_id = 0; //Reset slrb_id
+        } else {
+          sl_ctrl_msg_send->sidelinkPrimitive.group_comm_release_rsp = GROUP_COMMUNICATION_RELEASE_FAILURE;
+        }
+
+        memcpy((void *)send_buf, (void *)sl_ctrl_msg_send, sizeof(struct sidelink_ctrl_element));
+        free(sl_ctrl_msg_send);
+        prose_addr_len = sizeof(prose_app_addr);
+        n = sendto(ctrl_sock_fd, (char *)send_buf, sizeof(struct sidelink_ctrl_element), 0, (struct sockaddr *)&prose_app_addr, prose_addr_len);
+
+        if (n < 0) {
+          LOG_E(RRC, "ERROR: Failed to send to ProSe App\n");
+          exit(EXIT_FAILURE);
+        }
+
+        break;
+
+      case DIRECT_COMMUNICATION_ESTABLISH_REQ:
+        sourceL2Id = sl_ctrl_msg_recv->sidelinkPrimitive.direct_comm_establish_req.sourceL2Id;
+        destinationL2Id = sl_ctrl_msg_recv->sidelinkPrimitive.direct_comm_establish_req.destinationL2Id;
+
+        if (LOG_DEBUGFLAG(DEBUG_CTRLSOCKET)) {
+          LOG_UI(RRC,"[DirectCommunicationEstablishReq] Received on socket from ProSe App (msg type: %d)\n",sl_ctrl_msg_recv->type);
+          LOG_UI(RRC,"[DirectCommunicationEstablishReq] source Id: 0x%08x\n",sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.sourceL2Id);
+          LOG_UI(RRC,"[DirectCommunicationEstablishReq] destination Id: 0x%08x\n",sl_ctrl_msg_recv->sidelinkPrimitive.group_comm_establish_req.groupL2Id);
+        }
 
+        //store sourceL2Id/destinationL2Id
+        UE_rrc_inst[module_id].sourceL2Id = sourceL2Id;
+        i = 0;
+        j = 0;
+
+        for (i=0; i< MAX_NUM_DEST; i++) {
+          if ((UE_rrc_inst[module_id].destinationList[i] == 0) && (j == 0)) j = i+1;
+
+          if (UE_rrc_inst[module_id].destinationList[i] == destinationL2Id) break; //destination already exists!
+        }
 
-         rrc_rlc_config_asn1_req(&ctxt,
-               (LTE_SRB_ToAddModList_t*)NULL,
-               UE->DRB_configList,
-               (LTE_DRB_ToReleaseList_t*)NULL
+        if ((i == MAX_NUM_DEST) && (j > 0))  UE_mac_inst[module_id].destinationList[j-1] = destinationL2Id;
+
+        // configure lower layers PDCP/MAC/PHY for this communication
+        //Establish a new RBID/LCID for this communication
+        // Establish a SLRB (using DRB 3 for now)
+        UE  = &UE_rrc_inst[module_id];
+        PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, 0, ENB_FLAG_NO, 0x1234, 0, 0,0);
+        UE->DRB_config[0][0] = CALLOC(1,sizeof(struct LTE_DRB_ToAddMod));
+        UE->DRB_config[0][0]->eps_BearerIdentity = CALLOC(1, sizeof(long));
+        UE->DRB_config[0][0]->drb_Identity =  3;
+        UE->DRB_config[0][0]->eps_BearerIdentity = CALLOC(1, sizeof(long));
+        // allowed value 5..15, value : x+4
+        *(UE->DRB_config[0][0]->eps_BearerIdentity) = 3;
+        UE->DRB_config[0][0]->logicalChannelIdentity = CALLOC(1, sizeof(long));
+        *(UE->DRB_config[0][0]->logicalChannelIdentity) = UE->DRB_config[0][0]->drb_Identity; //(long) (ue_context_pP->ue_context.e_rab[i].param.e_rab_id + 2); // value : x+2
+        DRB_rlc_config                   = CALLOC(1,sizeof(struct LTE_RLC_Config));
+        DRB_pdcp_config                  = CALLOC(1,sizeof(struct LTE_PDCP_Config));
+        PDCP_rlc_UM                      = CALLOC(1,sizeof(struct LTE_PDCP_Config__rlc_UM));
+        DRB_lchan_config                 = CALLOC(1,sizeof(struct LTE_LogicalChannelConfig));
+        DRB_ul_SpecificParameters                                         = CALLOC(1, sizeof(struct LTE_LogicalChannelConfig__ul_SpecificParameters));
+        logicalchannelgroup_drb          = CALLOC(1, sizeof(long));
+        DRB_rlc_config->present = LTE_RLC_Config_PR_um_Bi_Directional;
+        DRB_rlc_config->choice.um_Bi_Directional.ul_UM_RLC.sn_FieldLength = LTE_SN_FieldLength_size10;
+        DRB_rlc_config->choice.um_Bi_Directional.dl_UM_RLC.sn_FieldLength = LTE_SN_FieldLength_size10;
+        DRB_rlc_config->choice.um_Bi_Directional.dl_UM_RLC.t_Reordering = LTE_T_Reordering_ms35;
+        UE->DRB_config[0][0]->rlc_Config = DRB_rlc_config;
+        DRB_pdcp_config = CALLOC(1, sizeof(*DRB_pdcp_config));
+        UE->DRB_config[0][0]->pdcp_Config = DRB_pdcp_config;
+        DRB_pdcp_config->discardTimer = CALLOC(1, sizeof(long));
+        *DRB_pdcp_config->discardTimer = LTE_PDCP_Config__discardTimer_infinity;
+        DRB_pdcp_config->rlc_AM = NULL;
+        DRB_pdcp_config->rlc_UM = NULL;
+        /* avoid gcc warnings */
+        (void)PDCP_rlc_UM;
+        DRB_pdcp_config->rlc_UM = PDCP_rlc_UM;
+        PDCP_rlc_UM->pdcp_SN_Size = LTE_PDCP_Config__rlc_UM__pdcp_SN_Size_len12bits;
+        DRB_pdcp_config->headerCompression.present = LTE_PDCP_Config__headerCompression_PR_notUsed;
+        UE->DRB_config[0][0]->logicalChannelConfig = DRB_lchan_config;
+        DRB_ul_SpecificParameters = CALLOC(1, sizeof(*DRB_ul_SpecificParameters));
+        DRB_lchan_config->ul_SpecificParameters = DRB_ul_SpecificParameters;
+        DRB_ul_SpecificParameters->priority = 12;    // lower priority than srb1, srb2 and other dedicated bearer
+        DRB_ul_SpecificParameters->prioritisedBitRate =LTE_LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_kBps8 ;
+        //LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity;
+        DRB_ul_SpecificParameters->bucketSizeDuration =
+          LTE_LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms50;
+        // LCG for DTCH can take the value from 1 to 3 as defined in 36331: normally controlled by upper layers (like RRM)
+        *logicalchannelgroup_drb = 1;
+        DRB_ul_SpecificParameters->logicalChannelGroup = logicalchannelgroup_drb;
+        UE->DRB_configList = CALLOC(1,sizeof(LTE_DRB_ToAddModList_t));
+        ASN_SEQUENCE_ADD(&UE->DRB_configList->list,UE->DRB_config[0][0]);
+        rrc_pdcp_config_asn1_req(&ctxt,
+                                 (LTE_SRB_ToAddModList_t *) NULL,
+                                 UE->DRB_configList,
+                                 (LTE_DRB_ToReleaseList_t *) NULL,
+                                 0xff, NULL, NULL, NULL
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-               ,(LTE_PMCH_InfoList_r9_t *)NULL
-               , 0, 0
+                                 , (LTE_PMCH_InfoList_r9_t *) NULL
 #endif
-         );
-
-         rrc_rlc_config_asn1_req(&ctxt,
-               (LTE_SRB_ToAddModList_t*)NULL,
-               UE->DRB_configList,
-               (LTE_DRB_ToReleaseList_t*)NULL
+                                 ,NULL);
+        rrc_rlc_config_asn1_req(&ctxt,
+                                (LTE_SRB_ToAddModList_t *)NULL,
+                                UE->DRB_configList,
+                                (LTE_DRB_ToReleaseList_t *)NULL
+#if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
+                                ,(LTE_PMCH_InfoList_r9_t *)NULL
+                                , 0, 0
+#endif
+                               );
+        rrc_rlc_config_asn1_req(&ctxt,
+                                (LTE_SRB_ToAddModList_t *)NULL,
+                                UE->DRB_configList,
+                                (LTE_DRB_ToReleaseList_t *)NULL
 #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-               ,(LTE_PMCH_InfoList_r9_t *)NULL
-               , sourceL2Id, destinationL2Id
+                                ,(LTE_PMCH_InfoList_r9_t *)NULL
+                                , sourceL2Id, destinationL2Id
 #endif
-         );
-
-
-         //configure MAC with sourceL2Id/destinationL2Id
-         rrc_mac_config_req_ue(module_id,0,0, //eNB_index =0
-               (LTE_RadioResourceConfigCommonSIB_t *)NULL,
-               (struct LTE_PhysicalConfigDedicated *)NULL,
+                               );
+        //configure MAC with sourceL2Id/destinationL2Id
+        rrc_mac_config_req_ue(module_id,0,0, //eNB_index =0
+                              (LTE_RadioResourceConfigCommonSIB_t *)NULL,
+                              (struct LTE_PhysicalConfigDedicated *)NULL,
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-               (LTE_SCellToAddMod_r10_t *)NULL,
-               //struct PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10,
-#endif
-               (LTE_MeasObjectToAddMod_t **)NULL,
-               (LTE_MAC_MainConfig_t *)NULL,
-               3, //LCID
-               (struct LTE_LogicalChannelConfig *)NULL,
-               (LTE_MeasGapConfig_t *)NULL,
-               (LTE_TDD_Config_t *)NULL,
-               (LTE_MobilityControlInfo_t *)NULL,
-               NULL,
-               NULL,
-               NULL,
-               NULL,
-               NULL,
-               NULL
+                              (LTE_SCellToAddMod_r10_t *)NULL,
+                              //struct PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10,
+#endif
+                              (LTE_MeasObjectToAddMod_t **)NULL,
+                              (LTE_MAC_MainConfig_t *)NULL,
+                              3, //LCID
+                              (struct LTE_LogicalChannelConfig *)NULL,
+                              (LTE_MeasGapConfig_t *)NULL,
+                              (LTE_TDD_Config_t *)NULL,
+                              (LTE_MobilityControlInfo_t *)NULL,
+                              NULL,
+                              NULL,
+                              NULL,
+                              NULL,
+                              NULL,
+                              NULL
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-               ,0,
-               (LTE_MBSFN_AreaInfoList_r9_t *)NULL,
-               (LTE_PMCH_InfoList_r9_t *)NULL
-
+                              ,0,
+                              (LTE_MBSFN_AreaInfoList_r9_t *)NULL,
+                              (LTE_PMCH_InfoList_r9_t *)NULL
 #endif
 #ifdef CBA
-               ,
-               0,
-               0
+                              ,
+                              0,
+                              0
 #endif
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-               ,CONFIG_ACTION_ADD,
-               &sourceL2Id,
-               &destinationL2Id
-#endif
-         );
+                              ,CONFIG_ACTION_ADD,
+                              &sourceL2Id,
+                              &destinationL2Id
+#endif
+                             );
+        LOG_I(RRC,"Send DirectCommunicationEstablishResp to ProSe App\n");
+        memset(send_buf, 0, BUFSIZE);
+        sl_ctrl_msg_send = calloc(1, sizeof(struct sidelink_ctrl_element));
+        sl_ctrl_msg_send->type = DIRECT_COMMUNICATION_ESTABLISH_RSP;
+        sl_ctrl_msg_send->sidelinkPrimitive.slrb_id = 3; //slrb_id
+        memcpy((void *)send_buf, (void *)sl_ctrl_msg_send, sizeof(struct sidelink_ctrl_element));
+        free(sl_ctrl_msg_send);
+        prose_addr_len = sizeof(prose_app_addr);
+        n = sendto(ctrl_sock_fd, (char *)send_buf, sizeof(struct sidelink_ctrl_element), 0, (struct sockaddr *)&prose_app_addr, prose_addr_len);
+
+        if (n < 0) {
+          LOG_E(RRC, "ERROR: Failed to send to ProSe App\n");
+          exit(EXIT_FAILURE);
+        }
 
-         LOG_I(RRC,"Send DirectCommunicationEstablishResp to ProSe App\n");
-         memset(send_buf, 0, BUFSIZE);
-         sl_ctrl_msg_send = calloc(1, sizeof(struct sidelink_ctrl_element));
-         sl_ctrl_msg_send->type = DIRECT_COMMUNICATION_ESTABLISH_RSP;
-         sl_ctrl_msg_send->sidelinkPrimitive.slrb_id = 3; //slrb_id
+        if (LOG_DEBUGFLAG(DEBUG_CTRLSOCKET)) {
+          struct sidelink_ctrl_element *ptr_ctrl_msg = NULL;
+          ptr_ctrl_msg = (struct sidelink_ctrl_element *) send_buf;
+          LOG_UI(RRC,"[DirectCommunicationEstablishResponse]  msg type: %d\n",ptr_ctrl_msg->type);
+          LOG_UI(RRC,"[DirectCommunicationEstablishResponse]  slrb_id: %d\n",ptr_ctrl_msg->sidelinkPrimitive.slrb_id);
+        }
 
-         memcpy((void *)send_buf, (void *)sl_ctrl_msg_send, sizeof(struct sidelink_ctrl_element));
-         free(sl_ctrl_msg_send);
+        break;
 
-         prose_addr_len = sizeof(prose_app_addr);
-         n = sendto(ctrl_sock_fd, (char *)send_buf, sizeof(struct sidelink_ctrl_element), 0, (struct sockaddr *)&prose_app_addr, prose_addr_len);
-         if (n < 0){
-            LOG_E(RRC, "ERROR: Failed to send to ProSe App\n");
-            exit(EXIT_FAILURE);
-         }
+      case PC5S_ESTABLISH_REQ:
+        type =  sl_ctrl_msg_recv->sidelinkPrimitive.pc5s_establish_req.type;
+        sourceL2Id = sl_ctrl_msg_recv->sidelinkPrimitive.pc5s_establish_req.sourceL2Id;
 
+        if (LOG_DEBUGFLAG(DEBUG_CTRLSOCKET)) {
+          LOG_UI(RRC,"[PC5EstablishReq] Received on socket from ProSe App (msg type: %d)\n",sl_ctrl_msg_recv->type);
+          LOG_UI(RRC,"[PC5EstablishReq] type: %d\n",sl_ctrl_msg_recv->sidelinkPrimitive.pc5s_establish_req.type); //RX/TX
+          LOG_UI(RRC,"[PC5EstablishReq] source Id: 0x%08x \n",sl_ctrl_msg_recv->sidelinkPrimitive.pc5s_establish_req.sourceL2Id);
+        }
 
-         if (LOG_DEBUGFLAG(DEBUG_CTRLSOCKET)){
-           struct sidelink_ctrl_element *ptr_ctrl_msg = NULL;
-           ptr_ctrl_msg = (struct sidelink_ctrl_element *) send_buf;
-           LOG_UI(RRC,"[DirectCommunicationEstablishResponse]  msg type: %d\n",ptr_ctrl_msg->type);
-           LOG_UI(RRC,"[DirectCommunicationEstablishResponse]  slrb_id: %d\n",ptr_ctrl_msg->sidelinkPrimitive.slrb_id);
-         }
-         break;
+        if (type > 0) {
+          destinationL2Id = sl_ctrl_msg_recv->sidelinkPrimitive.pc5s_establish_req.destinationL2Id;
 
-      case PC5S_ESTABLISH_REQ:
-           type =  sl_ctrl_msg_recv->sidelinkPrimitive.pc5s_establish_req.type;
-           sourceL2Id = sl_ctrl_msg_recv->sidelinkPrimitive.pc5s_establish_req.sourceL2Id;
-           if (LOG_DEBUGFLAG(DEBUG_CTRLSOCKET)){
-             LOG_UI(RRC,"[PC5EstablishReq] Received on socket from ProSe App (msg type: %d)\n",sl_ctrl_msg_recv->type);
-             LOG_UI(RRC,"[PC5EstablishReq] type: %d\n",sl_ctrl_msg_recv->sidelinkPrimitive.pc5s_establish_req.type); //RX/TX
-             LOG_UI(RRC,"[PC5EstablishReq] source Id: 0x%08x \n",sl_ctrl_msg_recv->sidelinkPrimitive.pc5s_establish_req.sourceL2Id);
-           }
-         if (type > 0) {
-            destinationL2Id = sl_ctrl_msg_recv->sidelinkPrimitive.pc5s_establish_req.destinationL2Id;
-            if (LOG_DEBUGFLAG(DEBUG_CTRLSOCKET)){
-              LOG_UI(RRC,"[PC5EstablishReq] destination Id: 0x%08x \n",sl_ctrl_msg_recv->sidelinkPrimitive.pc5s_establish_req.destinationL2Id);
-            }
-         }
-
-         //store sourceL2Id/destinationL2Id
-         if (type > 0) { //TX
-            UE_rrc_inst[module_id].sourceL2Id = sourceL2Id;
-            j = 0;
-            i = 0;
-            for (i=0; i< MAX_NUM_DEST; i++) {
-               if ((UE_rrc_inst[module_id].destinationList[i] == 0) && (j == 0)) j = i+1;
-               if (UE_rrc_inst[module_id].destinationList[i] == destinationL2Id) break; //group already exists!
-            }
-            if ((i == MAX_NUM_DEST) && (j > 0))  UE_mac_inst[module_id].destinationList[j-1] = destinationL2Id;
-         } else {//RX
-            UE_rrc_inst[module_id].sourceL2Id = sourceL2Id;
-         }
-
-         // configure lower layers PDCP/MAC/PHY for this communication
-         //Establish a new RBID/LCID for this communication
-         // Establish a SLRB (using DRB 10 for now)
-         UE  = &UE_rrc_inst[module_id];
-         PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, 0, ENB_FLAG_NO, 0x1234, 0, 0,0);
-
-         UE->DRB_config[0][0] = CALLOC(1,sizeof(struct LTE_DRB_ToAddMod));
-         UE->DRB_config[0][0]->eps_BearerIdentity = CALLOC(1, sizeof(long));
-         UE->DRB_config[0][0]->drb_Identity =  10;
-         UE->DRB_config[0][0]->eps_BearerIdentity = CALLOC(1, sizeof(long));
-         // allowed value 5..15, value : x+4
-         *(UE->DRB_config[0][0]->eps_BearerIdentity) = 10;
-         UE->DRB_config[0][0]->logicalChannelIdentity = CALLOC(1, sizeof(long));
-         *(UE->DRB_config[0][0]->logicalChannelIdentity) = UE->DRB_config[0][0]->drb_Identity; //(long) (ue_context_pP->ue_context.e_rab[i].param.e_rab_id + 2); // value : x+2
-
-         DRB_rlc_config                   = CALLOC(1,sizeof(struct LTE_RLC_Config));
-         DRB_pdcp_config                  = CALLOC(1,sizeof(struct LTE_PDCP_Config));
-         PDCP_rlc_UM                      = CALLOC(1,sizeof(struct LTE_PDCP_Config__rlc_UM));
-         DRB_lchan_config                 = CALLOC(1,sizeof(struct LTE_LogicalChannelConfig));
-         DRB_ul_SpecificParameters                                         = CALLOC(1, sizeof(struct LTE_LogicalChannelConfig__ul_SpecificParameters));
-         logicalchannelgroup_drb          = CALLOC(1, sizeof(long));
-
-         DRB_rlc_config->present = LTE_RLC_Config_PR_um_Bi_Directional;
-         DRB_rlc_config->choice.um_Bi_Directional.ul_UM_RLC.sn_FieldLength = LTE_SN_FieldLength_size10;
-         DRB_rlc_config->choice.um_Bi_Directional.dl_UM_RLC.sn_FieldLength = LTE_SN_FieldLength_size10;
-         DRB_rlc_config->choice.um_Bi_Directional.dl_UM_RLC.t_Reordering = LTE_T_Reordering_ms35;
-         UE->DRB_config[0][0]->rlc_Config = DRB_rlc_config;
-
-         DRB_pdcp_config = CALLOC(1, sizeof(*DRB_pdcp_config));
-         UE->DRB_config[0][0]->pdcp_Config = DRB_pdcp_config;
-         DRB_pdcp_config->discardTimer = CALLOC(1, sizeof(long));
-         *DRB_pdcp_config->discardTimer = LTE_PDCP_Config__discardTimer_infinity;
-         DRB_pdcp_config->rlc_AM = NULL;
-         DRB_pdcp_config->rlc_UM = NULL;
-
-         /* avoid gcc warnings */
-         (void)PDCP_rlc_UM;
-
-         DRB_pdcp_config->rlc_UM = PDCP_rlc_UM;
-         PDCP_rlc_UM->pdcp_SN_Size = LTE_PDCP_Config__rlc_UM__pdcp_SN_Size_len12bits;
-         DRB_pdcp_config->headerCompression.present = LTE_PDCP_Config__headerCompression_PR_notUsed;
-
-         UE->DRB_config[0][0]->logicalChannelConfig = DRB_lchan_config;
-         DRB_ul_SpecificParameters = CALLOC(1, sizeof(*DRB_ul_SpecificParameters));
-         DRB_lchan_config->ul_SpecificParameters = DRB_ul_SpecificParameters;
-
-         DRB_ul_SpecificParameters->priority = 12;    // lower priority than srb1, srb2 and other dedicated bearer
-         DRB_ul_SpecificParameters->prioritisedBitRate = LTE_LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_kBps8 ;
-         //LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity;
-         DRB_ul_SpecificParameters->bucketSizeDuration =
-               LTE_LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms50;
-
-         // LCG for DTCH can take the value from 1 to 3 as defined in 36331: normally controlled by upper layers (like RRM)
-
-         *logicalchannelgroup_drb = 1;
-         DRB_ul_SpecificParameters->logicalChannelGroup = logicalchannelgroup_drb;
-
-         UE->DRB_configList = CALLOC(1,sizeof(LTE_DRB_ToAddModList_t));
-         ASN_SEQUENCE_ADD(&UE->DRB_configList->list,UE->DRB_config[0][0]);
-
-         rrc_pdcp_config_asn1_req(&ctxt,
-               (LTE_SRB_ToAddModList_t *) NULL,
-               UE->DRB_configList,
-               (LTE_DRB_ToReleaseList_t*) NULL,
-               0xff, NULL, NULL, NULL
-#if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-               , (LTE_PMCH_InfoList_r9_t *) NULL
-#endif
-               ,NULL);
+          if (LOG_DEBUGFLAG(DEBUG_CTRLSOCKET)) {
+            LOG_UI(RRC,"[PC5EstablishReq] destination Id: 0x%08x \n",sl_ctrl_msg_recv->sidelinkPrimitive.pc5s_establish_req.destinationL2Id);
+          }
+        }
+
+        //store sourceL2Id/destinationL2Id
+        if (type > 0) { //TX
+          UE_rrc_inst[module_id].sourceL2Id = sourceL2Id;
+          j = 0;
+          i = 0;
 
+          for (i=0; i< MAX_NUM_DEST; i++) {
+            if ((UE_rrc_inst[module_id].destinationList[i] == 0) && (j == 0)) j = i+1;
+
+            if (UE_rrc_inst[module_id].destinationList[i] == destinationL2Id) break; //group already exists!
+          }
+
+          if ((i == MAX_NUM_DEST) && (j > 0))  UE_mac_inst[module_id].destinationList[j-1] = destinationL2Id;
+        } else {//RX
+          UE_rrc_inst[module_id].sourceL2Id = sourceL2Id;
+        }
 
-         rrc_rlc_config_asn1_req(&ctxt,
-               (LTE_SRB_ToAddModList_t*)NULL,
-               UE->DRB_configList,
-               (LTE_DRB_ToReleaseList_t*)NULL
+        // configure lower layers PDCP/MAC/PHY for this communication
+        //Establish a new RBID/LCID for this communication
+        // Establish a SLRB (using DRB 10 for now)
+        UE  = &UE_rrc_inst[module_id];
+        PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, 0, ENB_FLAG_NO, 0x1234, 0, 0,0);
+        UE->DRB_config[0][0] = CALLOC(1,sizeof(struct LTE_DRB_ToAddMod));
+        UE->DRB_config[0][0]->eps_BearerIdentity = CALLOC(1, sizeof(long));
+        UE->DRB_config[0][0]->drb_Identity =  10;
+        UE->DRB_config[0][0]->eps_BearerIdentity = CALLOC(1, sizeof(long));
+        // allowed value 5..15, value : x+4
+        *(UE->DRB_config[0][0]->eps_BearerIdentity) = 10;
+        UE->DRB_config[0][0]->logicalChannelIdentity = CALLOC(1, sizeof(long));
+        *(UE->DRB_config[0][0]->logicalChannelIdentity) = UE->DRB_config[0][0]->drb_Identity; //(long) (ue_context_pP->ue_context.e_rab[i].param.e_rab_id + 2); // value : x+2
+        DRB_rlc_config                   = CALLOC(1,sizeof(struct LTE_RLC_Config));
+        DRB_pdcp_config                  = CALLOC(1,sizeof(struct LTE_PDCP_Config));
+        PDCP_rlc_UM                      = CALLOC(1,sizeof(struct LTE_PDCP_Config__rlc_UM));
+        DRB_lchan_config                 = CALLOC(1,sizeof(struct LTE_LogicalChannelConfig));
+        DRB_ul_SpecificParameters                                         = CALLOC(1, sizeof(struct LTE_LogicalChannelConfig__ul_SpecificParameters));
+        logicalchannelgroup_drb          = CALLOC(1, sizeof(long));
+        DRB_rlc_config->present = LTE_RLC_Config_PR_um_Bi_Directional;
+        DRB_rlc_config->choice.um_Bi_Directional.ul_UM_RLC.sn_FieldLength = LTE_SN_FieldLength_size10;
+        DRB_rlc_config->choice.um_Bi_Directional.dl_UM_RLC.sn_FieldLength = LTE_SN_FieldLength_size10;
+        DRB_rlc_config->choice.um_Bi_Directional.dl_UM_RLC.t_Reordering = LTE_T_Reordering_ms35;
+        UE->DRB_config[0][0]->rlc_Config = DRB_rlc_config;
+        DRB_pdcp_config = CALLOC(1, sizeof(*DRB_pdcp_config));
+        UE->DRB_config[0][0]->pdcp_Config = DRB_pdcp_config;
+        DRB_pdcp_config->discardTimer = CALLOC(1, sizeof(long));
+        *DRB_pdcp_config->discardTimer = LTE_PDCP_Config__discardTimer_infinity;
+        DRB_pdcp_config->rlc_AM = NULL;
+        DRB_pdcp_config->rlc_UM = NULL;
+        /* avoid gcc warnings */
+        (void)PDCP_rlc_UM;
+        DRB_pdcp_config->rlc_UM = PDCP_rlc_UM;
+        PDCP_rlc_UM->pdcp_SN_Size = LTE_PDCP_Config__rlc_UM__pdcp_SN_Size_len12bits;
+        DRB_pdcp_config->headerCompression.present = LTE_PDCP_Config__headerCompression_PR_notUsed;
+        UE->DRB_config[0][0]->logicalChannelConfig = DRB_lchan_config;
+        DRB_ul_SpecificParameters = CALLOC(1, sizeof(*DRB_ul_SpecificParameters));
+        DRB_lchan_config->ul_SpecificParameters = DRB_ul_SpecificParameters;
+        DRB_ul_SpecificParameters->priority = 12;    // lower priority than srb1, srb2 and other dedicated bearer
+        DRB_ul_SpecificParameters->prioritisedBitRate = LTE_LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_kBps8 ;
+        //LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity;
+        DRB_ul_SpecificParameters->bucketSizeDuration =
+          LTE_LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms50;
+        // LCG for DTCH can take the value from 1 to 3 as defined in 36331: normally controlled by upper layers (like RRM)
+        *logicalchannelgroup_drb = 1;
+        DRB_ul_SpecificParameters->logicalChannelGroup = logicalchannelgroup_drb;
+        UE->DRB_configList = CALLOC(1,sizeof(LTE_DRB_ToAddModList_t));
+        ASN_SEQUENCE_ADD(&UE->DRB_configList->list,UE->DRB_config[0][0]);
+        rrc_pdcp_config_asn1_req(&ctxt,
+                                 (LTE_SRB_ToAddModList_t *) NULL,
+                                 UE->DRB_configList,
+                                 (LTE_DRB_ToReleaseList_t *) NULL,
+                                 0xff, NULL, NULL, NULL
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-               ,(LTE_PMCH_InfoList_r9_t *)NULL
-               , 0, 0
+                                 , (LTE_PMCH_InfoList_r9_t *) NULL
 #endif
-         );
-
-         //TX
-         if (type > 0) {
-            rrc_rlc_config_asn1_req(&ctxt,
-                  (LTE_SRB_ToAddModList_t*)NULL,
-                  UE->DRB_configList,
-                  (LTE_DRB_ToReleaseList_t*)NULL
-#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
-                  ,(LTE_PMCH_InfoList_r9_t *)NULL
-                  , sourceL2Id, destinationL2Id
+                                 ,NULL);
+        rrc_rlc_config_asn1_req(&ctxt,
+                                (LTE_SRB_ToAddModList_t *)NULL,
+                                UE->DRB_configList,
+                                (LTE_DRB_ToReleaseList_t *)NULL
+#if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
+                                ,(LTE_PMCH_InfoList_r9_t *)NULL
+                                , 0, 0
 #endif
-            );
+                               );
 
-            //configure MAC with sourceL2Id/groupL2ID
-            rrc_mac_config_req_ue(module_id,0,0, //eNB_index =0
-                  (LTE_RadioResourceConfigCommonSIB_t *)NULL,
-                  (struct LTE_PhysicalConfigDedicated *)NULL,
+        //TX
+        if (type > 0) {
+          rrc_rlc_config_asn1_req(&ctxt,
+                                  (LTE_SRB_ToAddModList_t *)NULL,
+                                  UE->DRB_configList,
+                                  (LTE_DRB_ToReleaseList_t *)NULL
+#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
+                                  ,(LTE_PMCH_InfoList_r9_t *)NULL
+                                  , sourceL2Id, destinationL2Id
+#endif
+                                 );
+          //configure MAC with sourceL2Id/groupL2ID
+          rrc_mac_config_req_ue(module_id,0,0, //eNB_index =0
+                                (LTE_RadioResourceConfigCommonSIB_t *)NULL,
+                                (struct LTE_PhysicalConfigDedicated *)NULL,
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-                  (LTE_SCellToAddMod_r10_t *)NULL,
-                  //struct PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10,
-#endif
-                  (LTE_MeasObjectToAddMod_t **)NULL,
-                  (LTE_MAC_MainConfig_t *)NULL,
-                  10, //LCID
-                  (struct LTE_LogicalChannelConfig *)NULL,
-                  (LTE_MeasGapConfig_t *)NULL,
-                  (LTE_TDD_Config_t *)NULL,
-                  (LTE_MobilityControlInfo_t *)NULL,
-                  NULL,
-                  NULL,
-                  NULL,
-                  NULL,
-                  NULL,
-                  NULL
+                                (LTE_SCellToAddMod_r10_t *)NULL,
+                                //struct PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10,
+#endif
+                                (LTE_MeasObjectToAddMod_t **)NULL,
+                                (LTE_MAC_MainConfig_t *)NULL,
+                                10, //LCID
+                                (struct LTE_LogicalChannelConfig *)NULL,
+                                (LTE_MeasGapConfig_t *)NULL,
+                                (LTE_TDD_Config_t *)NULL,
+                                (LTE_MobilityControlInfo_t *)NULL,
+                                NULL,
+                                NULL,
+                                NULL,
+                                NULL,
+                                NULL,
+                                NULL
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-                  ,0,
-                  (LTE_MBSFN_AreaInfoList_r9_t *)NULL,
-                  (LTE_PMCH_InfoList_r9_t *)NULL
-
+                                ,0,
+                                (LTE_MBSFN_AreaInfoList_r9_t *)NULL,
+                                (LTE_PMCH_InfoList_r9_t *)NULL
 #endif
 #ifdef CBA
-                  ,
-                  0,
-                  0
+                                ,
+                                0,
+                                0
 #endif
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-                  ,CONFIG_ACTION_ADD,
-                  &sourceL2Id,
-                  &destinationL2Id
-#endif
-            );
-         } else {//RX
-            //configure MAC with sourceL2Id/groupL2ID
-            rrc_mac_config_req_ue(module_id,0,0, //eNB_index =0
-                  (LTE_RadioResourceConfigCommonSIB_t *)NULL,
-                  (struct LTE_PhysicalConfigDedicated *)NULL,
+                                ,CONFIG_ACTION_ADD,
+                                &sourceL2Id,
+                                &destinationL2Id
+#endif
+                               );
+        } else {//RX
+          //configure MAC with sourceL2Id/groupL2ID
+          rrc_mac_config_req_ue(module_id,0,0, //eNB_index =0
+                                (LTE_RadioResourceConfigCommonSIB_t *)NULL,
+                                (struct LTE_PhysicalConfigDedicated *)NULL,
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-                  (LTE_SCellToAddMod_r10_t *)NULL,
-                  //struct PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10,
-#endif
-                  (LTE_MeasObjectToAddMod_t **)NULL,
-                  (LTE_MAC_MainConfig_t *)NULL,
-                  10, //LCID
-                  (struct LTE_LogicalChannelConfig *)NULL,
-                  (LTE_MeasGapConfig_t *)NULL,
-                  (LTE_TDD_Config_t *)NULL,
-                  (LTE_MobilityControlInfo_t *)NULL,
-                  NULL,
-                  NULL,
-                  NULL,
-                  NULL,
-                  NULL,
-                  NULL
+                                (LTE_SCellToAddMod_r10_t *)NULL,
+                                //struct PhysicalConfigDedicatedSCell_r10 *physicalConfigDedicatedSCell_r10,
+#endif
+                                (LTE_MeasObjectToAddMod_t **)NULL,
+                                (LTE_MAC_MainConfig_t *)NULL,
+                                10, //LCID
+                                (struct LTE_LogicalChannelConfig *)NULL,
+                                (LTE_MeasGapConfig_t *)NULL,
+                                (LTE_TDD_Config_t *)NULL,
+                                (LTE_MobilityControlInfo_t *)NULL,
+                                NULL,
+                                NULL,
+                                NULL,
+                                NULL,
+                                NULL,
+                                NULL
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-                  ,0,
-                  (LTE_MBSFN_AreaInfoList_r9_t *)NULL,
-                  (LTE_PMCH_InfoList_r9_t *)NULL
-
+                                ,0,
+                                (LTE_MBSFN_AreaInfoList_r9_t *)NULL,
+                                (LTE_PMCH_InfoList_r9_t *)NULL
 #endif
 #ifdef CBA
-                  ,
-                  0,
-                  0
+                                ,
+                                0,
+                                0
 #endif
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-                  ,CONFIG_ACTION_ADD,
-                  &sourceL2Id,
-                  NULL
+                                ,CONFIG_ACTION_ADD,
+                                &sourceL2Id,
+                                NULL
 #endif
-            );
-
-         }
-
-         LOG_I(RRC,"Send PC5EstablishRsp to ProSe App\n");
-         memset(send_buf, 0, BUFSIZE);
-         sl_ctrl_msg_send = calloc(1, sizeof(struct sidelink_ctrl_element));
-         sl_ctrl_msg_send->type = PC5S_ESTABLISH_RSP;
-         sl_ctrl_msg_send->sidelinkPrimitive.pc5s_establish_rsp.slrbid_lcid28 = 10;
-         sl_ctrl_msg_send->sidelinkPrimitive.pc5s_establish_rsp.slrbid_lcid29 = 10;
-         sl_ctrl_msg_send->sidelinkPrimitive.pc5s_establish_rsp.slrbid_lcid30 = 10;
-         memcpy((void *)send_buf, (void *)sl_ctrl_msg_send, sizeof(struct sidelink_ctrl_element));
+                               );
+        }
 
-         prose_addr_len = sizeof(prose_app_addr);
-         n = sendto(ctrl_sock_fd, (char *)send_buf, sizeof(struct sidelink_ctrl_element), 0, (struct sockaddr *)&prose_app_addr, prose_addr_len);
-//         free(sl_ctrl_msg_send);
-         if (n < 0){
-            LOG_E(RRC, "ERROR: Failed to send to ProSe App\n");
-            exit(EXIT_FAILURE);
-         }
-         break;
+        LOG_I(RRC,"Send PC5EstablishRsp to ProSe App\n");
+        memset(send_buf, 0, BUFSIZE);
+        sl_ctrl_msg_send = calloc(1, sizeof(struct sidelink_ctrl_element));
+        sl_ctrl_msg_send->type = PC5S_ESTABLISH_RSP;
+        sl_ctrl_msg_send->sidelinkPrimitive.pc5s_establish_rsp.slrbid_lcid28 = 10;
+        sl_ctrl_msg_send->sidelinkPrimitive.pc5s_establish_rsp.slrbid_lcid29 = 10;
+        sl_ctrl_msg_send->sidelinkPrimitive.pc5s_establish_rsp.slrbid_lcid30 = 10;
+        memcpy((void *)send_buf, (void *)sl_ctrl_msg_send, sizeof(struct sidelink_ctrl_element));
+        prose_addr_len = sizeof(prose_app_addr);
+        n = sendto(ctrl_sock_fd, (char *)send_buf, sizeof(struct sidelink_ctrl_element), 0, (struct sockaddr *)&prose_app_addr, prose_addr_len);
+
+        //         free(sl_ctrl_msg_send);
+        if (n < 0) {
+          LOG_E(RRC, "ERROR: Failed to send to ProSe App\n");
+          exit(EXIT_FAILURE);
+        }
 
+        break;
 
       case PC5_DISCOVERY_MESSAGE:
+        if (LOG_DEBUGFLAG(DEBUG_CTRLSOCKET)) {
+          LOG_UI(RRC,"[PC5DiscoveryMessage] Received on socket from ProSe App (msg type: %d)\n",sl_ctrl_msg_recv->type);
+        }
 
-         if (LOG_DEBUGFLAG(DEBUG_CTRLSOCKET)){
-           LOG_UI(RRC,"[PC5DiscoveryMessage] Received on socket from ProSe App (msg type: %d)\n",sl_ctrl_msg_recv->type);
-         }
         //prepare SL_Discovery buffer
-         if (UE_rrc_inst) {
-           memcpy((void*)&UE_rrc_inst[module_id].SL_Discovery[0].Tx_buffer.Payload[0], (void*)&sl_ctrl_msg_recv->sidelinkPrimitive.pc5_discovery_message.payload[0], PC5_DISCOVERY_PAYLOAD_SIZE);
-           UE_rrc_inst[module_id].SL_Discovery[0].Tx_buffer.payload_size = PC5_DISCOVERY_PAYLOAD_SIZE;
-           LOG_I(RRC,"[PC5DiscoveryMessage] Copied %d bytes\n",PC5_DISCOVERY_PAYLOAD_SIZE);
-         }
-         break;
+        if (UE_rrc_inst) {
+          memcpy((void *)&UE_rrc_inst[module_id].SL_Discovery[0].Tx_buffer.Payload[0], (void *)&sl_ctrl_msg_recv->sidelinkPrimitive.pc5_discovery_message.payload[0], PC5_DISCOVERY_PAYLOAD_SIZE);
+          UE_rrc_inst[module_id].SL_Discovery[0].Tx_buffer.payload_size = PC5_DISCOVERY_PAYLOAD_SIZE;
+          LOG_I(RRC,"[PC5DiscoveryMessage] Copied %d bytes\n",PC5_DISCOVERY_PAYLOAD_SIZE);
+        }
+
+        break;
+
       default:
-         break;
-      }
-   }
-   free (sl_ctrl_msg_recv);
-   return 0;
+        break;
+    }
+  }
+
+  free (sl_ctrl_msg_recv);
+  return 0;
 }
 
 
 //-----------------------------------------------------------------------------
 int decode_SL_Discovery_Message(
-  const protocol_ctxt_t* const ctxt_pP,
+  const protocol_ctxt_t *const ctxt_pP,
   const uint8_t                eNB_index,
-  const uint8_t*               Sdu,
-  const uint8_t                Sdu_len)
-{
-
-   int prose_addr_len;
-   char send_buf[BUFSIZE];
-   int n;
-   struct sidelink_ctrl_element *sl_ctrl_msg_send = NULL;
-
-   //from the main program, listen for the incoming messages from control socket (ProSe App)
-   prose_addr_len = sizeof(prose_app_addr);
-
-   //Store in Rx_buffer
-   memcpy((void*)&UE_rrc_inst[ctxt_pP->module_id].SL_Discovery[0].Rx_buffer.Payload[0], (void*)Sdu, Sdu_len);
-   UE_rrc_inst[ctxt_pP->module_id].SL_Discovery[0].Rx_buffer.payload_size = Sdu_len;
-
-   memset(send_buf, 0, BUFSIZE);
-   //send to ProSeApp
-   memcpy((void *)send_buf, (void*)Sdu, Sdu_len);
-   prose_addr_len = sizeof(prose_app_addr);
-
-   sl_ctrl_msg_send = calloc(1, sizeof(struct sidelink_ctrl_element));
-   sl_ctrl_msg_send->type = PC5_DISCOVERY_MESSAGE;
-   // TODO:  Add a check for the SDU size.
-   memcpy((void*)&sl_ctrl_msg_send->sidelinkPrimitive.pc5_discovery_message.payload[0], (void*) Sdu,  PC5_DISCOVERY_PAYLOAD_SIZE);
-
-   memcpy((void *)send_buf, (void *)sl_ctrl_msg_send, sizeof(struct sidelink_ctrl_element));
-   free(sl_ctrl_msg_send);
-
-   prose_addr_len = sizeof(prose_app_addr);
-
-   n = sendto(ctrl_sock_fd, (char *)send_buf, sizeof(struct sidelink_ctrl_element), 0, (struct sockaddr *)&prose_app_addr, prose_addr_len);
-   if (n < 0){
-      // TODO:  We should not just exit if the Prose App has not yet attached.  It creates a race condition.
-      LOG_I(RRC, "ERROR: Failed to send to ProSe App\n");
-      //exit(EXIT_FAILURE);
-   }
-
-
+  const uint8_t               *Sdu,
+  const uint8_t                Sdu_len) {
+  int prose_addr_len;
+  char send_buf[BUFSIZE];
+  int n;
+  struct sidelink_ctrl_element *sl_ctrl_msg_send = NULL;
+  //from the main program, listen for the incoming messages from control socket (ProSe App)
+  prose_addr_len = sizeof(prose_app_addr);
+  //Store in Rx_buffer
+  memcpy((void *)&UE_rrc_inst[ctxt_pP->module_id].SL_Discovery[0].Rx_buffer.Payload[0], (void *)Sdu, Sdu_len);
+  UE_rrc_inst[ctxt_pP->module_id].SL_Discovery[0].Rx_buffer.payload_size = Sdu_len;
+  memset(send_buf, 0, BUFSIZE);
+  //send to ProSeApp
+  memcpy((void *)send_buf, (void *)Sdu, Sdu_len);
+  prose_addr_len = sizeof(prose_app_addr);
+  sl_ctrl_msg_send = calloc(1, sizeof(struct sidelink_ctrl_element));
+  sl_ctrl_msg_send->type = PC5_DISCOVERY_MESSAGE;
+  // TODO:  Add a check for the SDU size.
+  memcpy((void *)&sl_ctrl_msg_send->sidelinkPrimitive.pc5_discovery_message.payload[0], (void *) Sdu,  PC5_DISCOVERY_PAYLOAD_SIZE);
+  memcpy((void *)send_buf, (void *)sl_ctrl_msg_send, sizeof(struct sidelink_ctrl_element));
+  free(sl_ctrl_msg_send);
+  prose_addr_len = sizeof(prose_app_addr);
+  n = sendto(ctrl_sock_fd, (char *)send_buf, sizeof(struct sidelink_ctrl_element), 0, (struct sockaddr *)&prose_app_addr, prose_addr_len);
+
+  if (n < 0) {
+    // TODO:  We should not just exit if the Prose App has not yet attached.  It creates a race condition.
+    LOG_I(RRC, "ERROR: Failed to send to ProSe App\n");
+    //exit(EXIT_FAILURE);
+  }
 
   return(0);
 }
@@ -6335,112 +5813,111 @@ int decode_SL_Discovery_Message(
 //-----------------------------------------------------------------------------
 RRC_status_t
 rrc_rx_tx_ue(
-  protocol_ctxt_t* const ctxt_pP,
+  protocol_ctxt_t *const ctxt_pP,
   const uint8_t      enb_indexP,
   const int          CC_id
 )
 //-----------------------------------------------------------------------------
 {
-
 #ifdef LOCALIZATION
   double                         estimated_distance;
   protocol_ctxt_t                ctxt;
 #endif
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_RX_TX,VCD_FUNCTION_IN);
 
-    // check timers
-
-    if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T300_active == 1) {
-      if ((UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T300_cnt % 10) == 0)
-        LOG_D(RRC,
-              "[UE %d][RAPROC] Frame %d T300 Count %d ms\n", ctxt_pP->module_id, ctxt_pP->frame, UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T300_cnt);
-
-      if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T300_cnt
-          == T300[UE_rrc_inst[ctxt_pP->module_id].sib2[enb_indexP]->ue_TimersAndConstants.t300]) {
-        UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T300_active = 0;
-        // ALLOW CCCH to be used
-        UE_rrc_inst[ctxt_pP->module_id].Srb0[enb_indexP].Tx_buffer.payload_size = 0;
-        rrc_ue_generate_RRCConnectionRequest (ctxt_pP, enb_indexP);
-        VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_RX_TX,VCD_FUNCTION_OUT);
-        return (RRC_ConnSetup_failed);
-      }
+  // check timers
 
-      UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T300_cnt++;
-    }
+  if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T300_active == 1) {
+    if ((UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T300_cnt % 10) == 0)
+      LOG_D(RRC,
+            "[UE %d][RAPROC] Frame %d T300 Count %d ms\n", ctxt_pP->module_id, ctxt_pP->frame, UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T300_cnt);
 
-    if ((UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].SIStatus&2)>0) {
-      if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].N310_cnt
-          == N310[UE_rrc_inst[ctxt_pP->module_id].sib2[enb_indexP]->ue_TimersAndConstants.n310]) {
-	LOG_I(RRC,"Activating T310\n");
-        UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T310_active = 1;
-      }
-    } else { // in case we have not received SIB2 yet
-      /*      if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].N310_cnt == 100) {
-        UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].N310_cnt = 0;
-
-	}*/
+    if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T300_cnt
+        == T300[UE_rrc_inst[ctxt_pP->module_id].sib2[enb_indexP]->ue_TimersAndConstants.t300]) {
+      UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T300_active = 0;
+      // ALLOW CCCH to be used
+      UE_rrc_inst[ctxt_pP->module_id].Srb0[enb_indexP].Tx_buffer.payload_size = 0;
+      rrc_ue_generate_RRCConnectionRequest (ctxt_pP, enb_indexP);
       VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_RX_TX,VCD_FUNCTION_OUT);
-      return RRC_OK;
+      return (RRC_ConnSetup_failed);
     }
 
-    if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T310_active == 1) {
-      if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].N311_cnt
-          == N311[UE_rrc_inst[ctxt_pP->module_id].sib2[enb_indexP]->ue_TimersAndConstants.n311]) {
-        UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T310_active = 0;
-        UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].N311_cnt = 0;
-      }
-
-      if ((UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T310_cnt % 10) == 0) {
-        LOG_D(RRC, "[UE %d] Frame %d T310 Count %d ms\n", ctxt_pP->module_id, ctxt_pP->frame, UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T310_cnt);
-      }
-
-      if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T310_cnt    == T310[UE_rrc_inst[ctxt_pP->module_id].sib2[enb_indexP]->ue_TimersAndConstants.t310]) {
-        UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T310_active = 0;
-        rrc_t310_expiration (ctxt_pP, enb_indexP);
-        VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_RX_TX,VCD_FUNCTION_OUT);
-	LOG_I(RRC,"Returning RRC_PHY_RESYNCH: T310 expired\n"); 
-        return RRC_PHY_RESYNCH;
-      }
+    UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T300_cnt++;
+  }
 
-      UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T310_cnt++;
+  if ((UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].SIStatus&2)>0) {
+    if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].N310_cnt
+        == N310[UE_rrc_inst[ctxt_pP->module_id].sib2[enb_indexP]->ue_TimersAndConstants.n310]) {
+      LOG_I(RRC,"Activating T310\n");
+      UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T310_active = 1;
     }
+  } else { // in case we have not received SIB2 yet
+    /*      if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].N310_cnt == 100) {
+      UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].N310_cnt = 0;
 
-    if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T304_active==1) {
-      if ((UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T304_cnt % 10) == 0)
-        LOG_D(RRC,"[UE %d][RAPROC] Frame %d T304 Count %d ms\n",ctxt_pP->module_id,ctxt_pP->frame,
-              UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T304_cnt);
+    }*/
+    VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_RX_TX,VCD_FUNCTION_OUT);
+    return RRC_OK;
+  }
 
-      if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T304_cnt == 0) {
-        UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T304_active = 0;
-        UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.measFlag = 1;
-        LOG_E(RRC,"[UE %d] Handover failure..initiating connection re-establishment procedure... \n",
-              ctxt_pP->module_id);
-        //Implement 36.331, section 5.3.5.6 here
-        VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_RX_TX,VCD_FUNCTION_OUT);
-        return(RRC_Handover_failed);
-      }
+  if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T310_active == 1) {
+    if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].N311_cnt
+        == N311[UE_rrc_inst[ctxt_pP->module_id].sib2[enb_indexP]->ue_TimersAndConstants.n311]) {
+      UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T310_active = 0;
+      UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].N311_cnt = 0;
+    }
 
-      UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T304_cnt--;
+    if ((UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T310_cnt % 10) == 0) {
+      LOG_D(RRC, "[UE %d] Frame %d T310 Count %d ms\n", ctxt_pP->module_id, ctxt_pP->frame, UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T310_cnt);
     }
 
-    // Layer 3 filtering of RRC measurements
-    if (UE_rrc_inst[ctxt_pP->module_id].QuantityConfig[0] != NULL) {
-      ue_meas_filtering(ctxt_pP,enb_indexP);
+    if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T310_cnt    == T310[UE_rrc_inst[ctxt_pP->module_id].sib2[enb_indexP]->ue_TimersAndConstants.t310]) {
+      UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T310_active = 0;
+      rrc_t310_expiration (ctxt_pP, enb_indexP);
+      VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_RX_TX,VCD_FUNCTION_OUT);
+      LOG_I(RRC,"Returning RRC_PHY_RESYNCH: T310 expired\n");
+      return RRC_PHY_RESYNCH;
     }
 
-    ue_measurement_report_triggering(ctxt_pP,enb_indexP);
+    UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T310_cnt++;
+  }
 
-    if (UE_rrc_inst[ctxt_pP->module_id].Info[0].handoverTarget > 0) {
-      LOG_I(RRC,"[UE %d] Frame %d : RRC handover initiated\n", ctxt_pP->module_id, ctxt_pP->frame);
-    }
+  if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T304_active==1) {
+    if ((UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T304_cnt % 10) == 0)
+      LOG_D(RRC,"[UE %d][RAPROC] Frame %d T304 Count %d ms\n",ctxt_pP->module_id,ctxt_pP->frame,
+            UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T304_cnt);
 
-    if((UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].State == RRC_HO_EXECUTION)   &&
-        (UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.targetCellId != 0xFF)) {
-      UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].State= RRC_IDLE;
+    if (UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T304_cnt == 0) {
+      UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T304_active = 0;
+      UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.measFlag = 1;
+      LOG_E(RRC,"[UE %d] Handover failure..initiating connection re-establishment procedure... \n",
+            ctxt_pP->module_id);
+      //Implement 36.331, section 5.3.5.6 here
       VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_RX_TX,VCD_FUNCTION_OUT);
-      return(RRC_HO_STARTED);
+      return(RRC_Handover_failed);
     }
 
+    UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].T304_cnt--;
+  }
+
+  // Layer 3 filtering of RRC measurements
+  if (UE_rrc_inst[ctxt_pP->module_id].QuantityConfig[0] != NULL) {
+    ue_meas_filtering(ctxt_pP,enb_indexP);
+  }
+
+  ue_measurement_report_triggering(ctxt_pP,enb_indexP);
+
+  if (UE_rrc_inst[ctxt_pP->module_id].Info[0].handoverTarget > 0) {
+    LOG_I(RRC,"[UE %d] Frame %d : RRC handover initiated\n", ctxt_pP->module_id, ctxt_pP->frame);
+  }
+
+  if((UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].State == RRC_HO_EXECUTION)   &&
+      (UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.targetCellId != 0xFF)) {
+    UE_rrc_inst[ctxt_pP->module_id].Info[enb_indexP].State= RRC_IDLE;
+    VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_RX_TX,VCD_FUNCTION_OUT);
+    return(RRC_HO_STARTED);
+  }
+
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_RRC_RX_TX,VCD_FUNCTION_OUT);
   return (RRC_OK);
 }
diff --git a/openair2/RRC/LTE/rrc_eNB.c b/openair2/RRC/LTE/rrc_eNB.c
index f27882cc1e8457049ec92b55dd6fb010a1dca440..792299f4ae47d7f5fdbb03bbf9f30bf889955672 100644
--- a/openair2/RRC/LTE/rrc_eNB.c
+++ b/openair2/RRC/LTE/rrc_eNB.c
@@ -5587,37 +5587,6 @@ rrc_eNB_decode_ccch(
                0,
                0);
 
-  /*
-  #if defined(ENABLE_ITTI)
-  #   if defined(DISABLE_ITTI_XER_PRINT)
-  {
-    MessageDef                         *message_p;
-
-    message_p = itti_alloc_new_message(TASK_RRC_ENB, RRC_UL_CCCH_MESSAGE);
-    memcpy(&message_p->ittiMsg, (void *)ul_ccch_msg, sizeof(RrcUlCcchMessage));
-
-    itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, message_p);
-  }
-  #   else
-  {
-    char                                message_string[10000];
-    size_t                              message_string_size;
-
-    if ((message_string_size =
-           xer_sprint(message_string, sizeof(message_string), &asn_DEF_LTE_UL_CCCH_Message, (void *)ul_ccch_msg)) > 0) {
-      MessageDef                         *msg_p;
-
-      msg_p = itti_alloc_new_message_sized(TASK_RRC_ENB, RRC_UL_CCCH, message_string_size + sizeof(IttiMsgText));
-      msg_p->ittiMsg.rrc_ul_ccch.size = message_string_size;
-      memcpy(&msg_p->ittiMsg.rrc_ul_ccch.text, message_string, message_string_size);
-
-      itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
-    }
-  }
-  #   endif
-  #endif
-  */
-
   for (i = 0; i < 8; i++) {
     LOG_T(RRC, "%x.", ((uint8_t *) & ul_ccch_msg)[i]);
   }
@@ -6105,12 +6074,8 @@ rrc_eNB_decode_dcch(
   LTE_UL_DCCH_Message_t               *ul_dcch_msg = NULL; //&uldcchmsg;
   int i;
   struct rrc_eNB_ue_context_s        *ue_context_p = NULL;
-#if defined(ENABLE_ITTI)
-#   if defined(ENABLE_USE_MME)
   MessageDef                         *msg_delete_tunnels_p = NULL;
   uint8_t                             xid;
-#endif
-#endif
   int dedicated_DRB=0;
   T(T_ENB_RRC_UL_DCCH_DATA_IN, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
     T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
diff --git a/openair2/RRC/LTE/rrc_extern.h b/openair2/RRC/LTE/rrc_extern.h
index 624a7efb75aaca1a7ec5ffa7de6c79e565c3a2b8..e3b9ecb00be2dd745c31ad0d1beb468c99c55fad 100644
--- a/openair2/RRC/LTE/rrc_extern.h
+++ b/openair2/RRC/LTE/rrc_extern.h
@@ -51,7 +51,7 @@ extern LTE_LogicalChannelConfig_t SRB2_logicalChannelConfig_defaultValue;
 extern unsigned char NB_INST;
 #endif
 extern unsigned char NB_eNB_INST;
-extern unsigned char NB_UE_INST;
+extern uint16_t NB_UE_INST;
 extern unsigned short NODE_ID[1];
 #endif
 
diff --git a/openair2/RRC/LTE/rrc_vars.h b/openair2/RRC/LTE/rrc_vars.h
index e328ce13599597bbfdd2774822c9078d0a47f205..512d421168d80c2808726eff0c8129c88fbfaaae 100644
--- a/openair2/RRC/LTE/rrc_vars.h
+++ b/openair2/RRC/LTE/rrc_vars.h
@@ -38,7 +38,7 @@
 
 UE_PF_PO_t UE_PF_PO[NFAPI_CC_MAX][MAX_MOBILES_PER_ENB];
 pthread_mutex_t ue_pf_po_mutex;
-UE_RRC_INST *UE_rrc_inst;
+UE_RRC_INST *UE_rrc_inst = NULL;
 #include "LAYER2/MAC/mac_extern.h"
 #define MAX_U32 0xFFFFFFFF
 
diff --git a/openair2/UTIL/OPT/opt.h b/openair2/UTIL/OPT/opt.h
index b4ff3b5006bbf4b5ad9b1d4bdc4ac7c731a9ae1a..5ae19f9b552e1f08d3206b81ac5196c4e17f7310 100644
--- a/openair2/UTIL/OPT/opt.h
+++ b/openair2/UTIL/OPT/opt.h
@@ -33,26 +33,23 @@ This header file must be included */
 #define OPT_H_
 
 #ifndef sys_include
-#define sys_include
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <unistd.h>
-#include <time.h>
+  #define sys_include
+  #include <sys/types.h>
+  #include <sys/socket.h>
+  #include <netinet/in.h>
+  #include <arpa/inet.h>
+  #include <netdb.h>
+  #include <stdio.h>
+  #include <stdlib.h>
+  #include <string.h>
+  #include <errno.h>
+  #include <unistd.h>
+  #include <time.h>
 #endif
 #ifndef project_include
-#define project_include
-#include "common/utils/LOG/log_if.h"
-// #include "UTIL/LOG/log_extern.h"
-//#include "PHY/defs.h"
-//#include "PHY/extern.h"
-#include "PHY/impl_defs_lte.h"
+  #define project_include
+  #include "common/utils/LOG/log_if.h"
+  #include "PHY/impl_defs_lte.h"
 #endif
 
 #define PACKET_MAC_LTE_DEFAULT_UDP_PORT (9999)
@@ -65,6 +62,32 @@ typedef guint8   gboolean;
 #include "packet-mac-lte.h"
 #include "mac_pcap.h"
 
+/* OPT parameters definitions */
+#define OPT_CONFIGPREFIX "opt"
+
+#define CONFIG_HLP_TYPEMON       "Type of L2 monitoring messages: none,pcap,wireshark  \n"
+#define CONFIG_HLP_L2MONIP       "ip address for wireshark messages \n"
+#define CONFIG_HLP_L2MONPATH     "file path for pcap  messages on localhost \n"
+/*-----------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
+/*                                            command line parameters for LOG utility                                                                                    */
+/*   optname                     helpstr                paramflags                      XXXptr                  defXXXval                            type       numelt   */
+/*-----------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
+#define OPT_PARAMS_DESC {  \
+    {"type" ,                    CONFIG_HLP_TYPEMON,     0,                      strptr:&in_type,                  defstrval:"none",               TYPE_STRING,    0},       \
+    {"ip" ,                      CONFIG_HLP_L2MONIP,     0,                      strptr:&in_ip,                    defstrval:"127.0.0.1",          TYPE_STRING,    0},       \
+    {"path" ,                    CONFIG_HLP_L2MONPATH,   0,                      strptr:&in_path,                  defstrval:"/tmp/oai_opt.pcap",  TYPE_STRING,    0},       \
+  }
+
+#define OPTTYPE_IDX 0
+/* check function for opt parameters */
+#define OPTTYPE_OKSTRINGS {"none","pcap","wireshark"}
+#define OPTTYPE_VALUES    {OPT_NONE,OPT_PCAP,OPT_WIRESHARK}
+#define OPTPARAMS_CHECK_DESC { \
+    { .s3a= { config_checkstr_assign_integer,  OPTTYPE_OKSTRINGS,OPTTYPE_VALUES ,3}} ,\
+    { .s5= {NULL }} ,                   \
+    { .s5= {NULL }} ,                   \
+  }
+
 #ifdef OCP_FRAMEWORK
 #include <enums.h>
 #else
@@ -82,9 +105,7 @@ typedef enum radio_type_e {
   RADIO_TYPE_MAX
 } radio_type_t;
 
-extern trace_mode_t opt_type;
-extern char in_ip[40];
-extern char in_path[FILENAME_MAX];
+
 
 /**
  * function def
@@ -94,7 +115,7 @@ void trace_pdu(int direction, uint8_t *pdu_buffer, unsigned int pdu_buffer_size,
                int ueid, int rntiType, int rnti, uint16_t sysFrame, uint8_t subframe,
                int oob_event, int oob_event_value);
 
-int init_opt(char *path, char *ip);
+int init_opt(void);
 
 void terminate_opt(void);
 
diff --git a/openair2/UTIL/OPT/probe.c b/openair2/UTIL/OPT/probe.c
index a1e53671682a10f0f984cbcd831b98c0116378e2..b032784028ee4dc7f2349e615cc7bbef5a6cbc6d 100644
--- a/openair2/UTIL/OPT/probe.c
+++ b/openair2/UTIL/OPT/probe.c
@@ -90,7 +90,7 @@ what about the implementation
 
 #include <pthread.h>
 #include <stdint.h>
-
+#include "common/config/config_userapi.h"
 #include "opt.h"
 
 int opt_enabled=0;
@@ -98,8 +98,8 @@ int opt_enabled=0;
 //static unsigned char g_PDUBuffer[1600];
 //static unsigned int g_PDUOffset;
 
-char in_ip[40];
-char in_path[FILENAME_MAX];
+static char *in_ip;
+static char *in_path;
 FILE *file_fd = NULL;
 pcap_hdr_t file_header = {
   0xa1b2c3d4,   /* magic number */
@@ -133,17 +133,15 @@ static void SendFrame(guint8 radioType, guint8 direction, guint8 rntiType,
 static int MAC_LTE_PCAP_WritePDU(MAC_Context_Info_t *context,
                                  const unsigned char *PDU, unsigned int length);
 
-static void *opt_listener_thread(void *arg)
-{
+static void *opt_listener_thread(void *arg) {
   ssize_t ret;
   struct sockaddr_in from_address;
   socklen_t socklen = sizeof(from_address);
-
   memset(&from_address, 0, sizeof(from_address));
 
   while(1) {
     /* Simply drop packets */
-    ret = recvfrom(opt_listener.sd, NULL, 0, 0, (struct sockaddr*)&from_address,
+    ret = recvfrom(opt_listener.sd, NULL, 0, 0, (struct sockaddr *)&from_address,
                    &socklen);
 
     if (ret == 0) {
@@ -165,17 +163,13 @@ static void *opt_listener_thread(void *arg)
 }
 
 static
-int opt_create_listener_socket(char *ip_address, uint16_t port)
-{
+int opt_create_listener_socket(char *ip_address, uint16_t port) {
   /* Create an UDP socket and listen on it.
    * Silently discard PDU received.
    */
-
   int sd = -1;
   int ret = -1;
-
   memset(&opt_listener, 0, sizeof(opt_listener_t));
-
   sd = socket(AF_INET, SOCK_DGRAM, 0);
 
   if (sd < 0) {
@@ -190,8 +184,7 @@ int opt_create_listener_socket(char *ip_address, uint16_t port)
   /* Listening only on provided IP address */
   opt_listener.address.sin_addr.s_addr = inet_addr(ip_address);
   opt_listener.address.sin_port = htons(port);
-
-  ret = bind(opt_listener.sd, (struct sockaddr*) &opt_listener.address, sizeof(opt_listener.address));
+  ret = bind(opt_listener.sd, (struct sockaddr *) &opt_listener.address, sizeof(opt_listener.address));
 
   if (ret != 0) {
     LOG_E(OPT, "Failed to bind socket to (%s:%u): %s\n",
@@ -231,49 +224,39 @@ static void SendFrame(guint8 radioType, guint8 direction, guint8 rntiType,
                       guint16 rnti, guint16 ueid, guint16 sfnSf,
                       guint8 isPredefinedData, guint8 retx, guint8 crcStatus,
                       guint8 oob_event, guint8 oob_event_value,
-                      uint8_t *pdu_buffer, unsigned int pdu_buffer_size)
-{
+                      uint8_t *pdu_buffer, unsigned int pdu_buffer_size) {
   unsigned char frameBuffer[9000];
   unsigned int frameOffset;
-
   ssize_t bytesSent;
   frameOffset = 0;
   uint16_t tmp16;
-
   memcpy(frameBuffer+frameOffset, MAC_LTE_START_STRING,
          strlen(MAC_LTE_START_STRING));
   frameOffset += strlen(MAC_LTE_START_STRING);
-
   /******************************************************************************/
   /* Now write out fixed fields (the mandatory elements of struct mac_lte_info) */
   frameBuffer[frameOffset++] = radioType;
   frameBuffer[frameOffset++] = direction;
   frameBuffer[frameOffset++] = rntiType;
-
   /*************************************/
   /* Now optional fields               */
-
   /* RNTI */
   frameBuffer[frameOffset++] = MAC_LTE_RNTI_TAG;
   tmp16 = htons(rnti);
   memcpy(frameBuffer+frameOffset, &tmp16, 2);
   frameOffset += 2;
-
   /* UEId */
   frameBuffer[frameOffset++] = MAC_LTE_UEID_TAG;
   tmp16 = htons(ueid);
   memcpy(frameBuffer+frameOffset, &tmp16, 2);
   frameOffset += 2;
-
   /* Subframe number */
   frameBuffer[frameOffset++] = MAC_LTE_FRAME_SUBFRAME_TAG;
   tmp16 = htons(sfnSf); // frame counter : this will give an expert info as wireshark expects SF and not F
   memcpy(frameBuffer+frameOffset, &tmp16, 2);
   frameOffset += 2;
-
   frameBuffer[frameOffset++] = MAC_LTE_CRC_STATUS_TAG;
   frameBuffer[frameOffset++] = crcStatus;
-  
 #ifdef WIRESHARK_DEV
   frameOffset += 2;
   tmp16 = htons(sfnSf); // subframe
@@ -293,55 +276,55 @@ static void SendFrame(guint8 radioType, guint8 direction, guint8 rntiType,
     frameBuffer[frameOffset++] = retx;
   }
 
-//#ifdef WIRESHARK_DEV
+  //#ifdef WIRESHARK_DEV
 
   /* Relating to out-of-band events */
   /* N.B. dissector will only look to these fields if length is 0... */
   if (pdu_buffer_size==0) {
     switch (oob_event) {
-    case ltemac_send_preamble :
-      LOG_D(OPT,"ltemac_send_preamble event %02x."
-          //"%02x."
-          "%02x.%02x\n",
-          MAC_LTE_SEND_PREAMBLE_TAG,
-          //ltemac_send_preamble,
-          rnti,
-          oob_event_value);
-      //frameBuffer[frameOffset++]=0;
-      //frameBuffer[frameOffset++]=0;
-      //frameBuffer[frameOffset++]=0;
-      frameBuffer[frameOffset++] = MAC_LTE_SEND_PREAMBLE_TAG;
-      //frameBuffer[frameOffset++]=ltemac_send_preamble;
-      frameBuffer[frameOffset++]=rnti; // is the preamble
-      frameBuffer[frameOffset++]=oob_event_value;
-      break;
-
-    case ltemac_send_sr:
-      frameBuffer[frameOffset++]=MAC_LTE_SR_TAG ;
-      frameOffset+=2;
-      frameBuffer[frameOffset++]=rnti;
-      frameOffset++;
-      frameBuffer[frameOffset++]=oob_event_value;
-      frameOffset++;
-      break;
-
-    case ltemac_sr_failure:
-    default:
-      LOG_W(OPT,"not implemeneted yet\n");
-      break;
+      case ltemac_send_preamble :
+        LOG_D(OPT,"ltemac_send_preamble event %02x."
+              //"%02x."
+              "%02x.%02x\n",
+              MAC_LTE_SEND_PREAMBLE_TAG,
+              //ltemac_send_preamble,
+              rnti,
+              oob_event_value);
+        //frameBuffer[frameOffset++]=0;
+        //frameBuffer[frameOffset++]=0;
+        //frameBuffer[frameOffset++]=0;
+        frameBuffer[frameOffset++] = MAC_LTE_SEND_PREAMBLE_TAG;
+        //frameBuffer[frameOffset++]=ltemac_send_preamble;
+        frameBuffer[frameOffset++]=rnti; // is the preamble
+        frameBuffer[frameOffset++]=oob_event_value;
+        break;
+
+      case ltemac_send_sr:
+        frameBuffer[frameOffset++]=MAC_LTE_SR_TAG ;
+        frameOffset+=2;
+        frameBuffer[frameOffset++]=rnti;
+        frameOffset++;
+        frameBuffer[frameOffset++]=oob_event_value;
+        frameOffset++;
+        break;
+
+      case ltemac_sr_failure:
+      default:
+        LOG_W(OPT,"not implemeneted yet\n");
+        break;
     }
   }
 
-//#endif
+  //#endif
   /***************************************/
   /* Now write the MAC PDU               */
   frameBuffer[frameOffset++] = MAC_LTE_PAYLOAD_TAG;
-  
+
   /* Append actual PDU  */
   //memcpy(frameBuffer+frameOffset, g_PDUBuffer, g_PDUOffset);
   //frameOffset += g_PDUOffset;
   if (pdu_buffer != NULL) {
-    memcpy(frameBuffer+frameOffset, (void*)pdu_buffer, pdu_buffer_size);
+    memcpy(frameBuffer+frameOffset, (void *)pdu_buffer, pdu_buffer_size);
     frameOffset += pdu_buffer_size;
   }
 
@@ -358,44 +341,36 @@ static void SendFrame(guint8 radioType, guint8 direction, guint8 rntiType,
 
 /* Write an individual PDU (PCAP packet header + mac-context + mac-pdu) */
 static int MAC_LTE_PCAP_WritePDU(MAC_Context_Info_t *context,
-                                 const uint8_t *PDU, unsigned int length)
-{
+                                 const uint8_t *PDU, unsigned int length) {
   pcaprec_hdr_t packet_header;
   uint8_t context_header[256];
   int offset = 0;
   unsigned short tmp16;
-
   /*****************************************************************/
   /* Context information (same as written by UDP heuristic clients */
   context_header[offset++] = context->radioType;
   context_header[offset++] = context->direction;
   context_header[offset++] = context->rntiType;
-
   /* RNTI */
   context_header[offset++] = MAC_LTE_RNTI_TAG;
   tmp16 = htons(context->rnti);
   memcpy(context_header+offset, &tmp16, 2);
   offset += 2;
-
   /* UEId */
   context_header[offset++] = MAC_LTE_UEID_TAG;
   tmp16 = htons(context->ueid);
   memcpy(context_header+offset, &tmp16, 2);
   offset += 2;
-
   /* Subframe number */
   context_header[offset++] = MAC_LTE_FRAME_SUBFRAME_TAG;
   tmp16 = htons(context->subFrameNumber);
   memcpy(context_header+offset, &tmp16, 2);
   offset += 2;
-
   /* CRC Status */
   context_header[offset++] = MAC_LTE_CRC_STATUS_TAG;
   context_header[offset++] = context->crcStatusOK;
-
   /* Data tag immediately preceding PDU */
   context_header[offset++] = MAC_LTE_PAYLOAD_TAG;
-
   /****************************************************************/
   /* PCAP Header                                                  */
   /* TODO: Timestamp might want to be relative to a more sensible
@@ -404,13 +379,11 @@ static int MAC_LTE_PCAP_WritePDU(MAC_Context_Info_t *context,
   packet_header.ts_usec = (context->subframesSinceCaptureStart % 1000) * 1000;
   packet_header.incl_len = offset + length;
   packet_header.orig_len = offset + length;
-
   /***************************************************************/
   /* Now write everything to the file                            */
   fwrite(&packet_header, sizeof(pcaprec_hdr_t), 1, file_fd);
   fwrite(context_header, 1, offset, file_fd);
   fwrite(PDU, 1, length, file_fd);
-
   return 1;
 }
 #include <common/ran_context.h>
@@ -419,117 +392,129 @@ extern RAN_CONTEXT_t RC;
 /* Remote serveraddress (where Wireshark is running) */
 void trace_pdu(int direction, uint8_t *pdu_buffer, unsigned int pdu_buffer_size,
                int ueid, int rntiType, int rnti, uint16_t sysFrameNumber, uint8_t subFrameNumber, int oob_event,
-               int oob_event_value)
-{
+               int oob_event_value) {
   MAC_Context_Info_t pdu_context;
   int radioType=FDD_RADIO;
+
   if (RC.eNB[0][0]!=NULL)
     radioType=RC.eNB[0][0]->frame_parms.frame_type== FDD ? FDD_RADIO:TDD_RADIO;
+
   if (PHY_vars_UE_g[0][0] != NULL)
     radioType=PHY_vars_UE_g[0][0]->frame_parms.frame_type== FDD ? FDD_RADIO:TDD_RADIO;
+
   switch (opt_type) {
-  case OPT_WIRESHARK :
-    if (g_socksd == -1) {
-      return;
-    }
+    case OPT_WIRESHARK :
+      if (g_socksd == -1) {
+        return;
+      }
+
+      SendFrame( radioType,
+                 (direction == DIRECTION_DOWNLINK) ? DIRECTION_DOWNLINK : DIRECTION_UPLINK,
+                 rntiType, rnti, ueid, (sysFrameNumber<<4) + subFrameNumber,
+                 1, 0, 1,  //guint8 isPredefinedData, guint8 retx, guint8 crcStatus
+                 oob_event,oob_event_value,
+                 pdu_buffer, pdu_buffer_size);
+      break;
 
-    SendFrame( radioType,
-              (direction == DIRECTION_DOWNLINK) ? DIRECTION_DOWNLINK : DIRECTION_UPLINK,
-              rntiType, rnti, ueid, (sysFrameNumber<<4) + subFrameNumber,
-              1, 0, 1,  //guint8 isPredefinedData, guint8 retx, guint8 crcStatus
-              oob_event,oob_event_value,
-              pdu_buffer, pdu_buffer_size);
-    break;
-
-  case OPT_PCAP:
-    if (file_fd == NULL) {
-      return;
-    }
+    case OPT_PCAP:
+      if (file_fd == NULL) {
+        return;
+      }
+
+      pdu_context.radioType =  radioType;
+      pdu_context.direction = (direction == DIRECTION_DOWNLINK) ? DIRECTION_DOWNLINK
+                              : DIRECTION_UPLINK;
+      pdu_context.rntiType = rntiType;
+      pdu_context.rnti = rnti;
+      pdu_context.ueid = ueid;
+      pdu_context.isRetx = 0;
+      pdu_context.crcStatusOK =1;
+      pdu_context.sysFrameNumber = sysFrameNumber;
+      pdu_context.subFrameNumber = subFrameNumber;
+      pdu_context.subframesSinceCaptureStart = subframesSinceCaptureStart++;
+      MAC_LTE_PCAP_WritePDU( &pdu_context, pdu_buffer, pdu_buffer_size);
+      break;
 
-    pdu_context.radioType =  radioType;
-    pdu_context.direction = (direction == DIRECTION_DOWNLINK) ? DIRECTION_DOWNLINK
-                            : DIRECTION_UPLINK;
-    pdu_context.rntiType = rntiType;
-    pdu_context.rnti = rnti;
-    pdu_context.ueid = ueid;
-    pdu_context.isRetx = 0;
-    pdu_context.crcStatusOK =1;
-    pdu_context.sysFrameNumber = sysFrameNumber;
-    pdu_context.subFrameNumber = subFrameNumber;
-    pdu_context.subframesSinceCaptureStart = subframesSinceCaptureStart++;
-    MAC_LTE_PCAP_WritePDU( &pdu_context, pdu_buffer, pdu_buffer_size);
-    break;
-
-  case OPT_TSHARK:
-  default:
-    break;
+    case OPT_TSHARK:
+    default:
+      break;
   }
 }
 /*---------------------------------------------------*/
-int init_opt(char *path, char *ip)
-{
+int init_opt(void) {
+  char *in_type=NULL;
+  paramdef_t opt_params[]          = OPT_PARAMS_DESC ;
+  checkedparam_t opt_checkParams[] = OPTPARAMS_CHECK_DESC;
   uint16_t in_port;
+  config_set_checkfunctions(opt_params, opt_checkParams,
+                            sizeof(opt_params)/sizeof(paramdef_t));
+  config_get( opt_params,sizeof(opt_params)/sizeof(paramdef_t),OPT_CONFIGPREFIX);
   subframesSinceCaptureStart = 0;
-
-  if (path != NULL) {
-    strncpy( in_path, path, sizeof(in_path) );
-    in_path[sizeof(in_path) - 1] = 0; // terminate string
+  int tmptype = config_get_processedint( &(opt_params[OPTTYPE_IDX]));
+
+  if (tmptype == OPT_NONE) {
+    opt_enabled=0;
+    LOG_I(OPT,"OPT disabled\n");
+    return 0;
+  } else if (tmptype == OPT_PCAP && strlen(in_path) > 0) {
+    opt_type = OPT_PCAP;
+    opt_enabled=1;
+    LOG_I(OPT,"Enabling OPT for PCAP  with the following file %s \n",in_path);
+  } else if (tmptype == OPT_WIRESHARK && strlen(in_ip) > 0) {
+    opt_enabled=1;
+    opt_type = OPT_WIRESHARK;
+    LOG_I(OPT,"Enabling OPT for wireshark for local interface %s\n",in_ip);
   } else {
-    strcpy( in_path, "/tmp/opt.pcap" );
-  }
-
-  if (ip != NULL) {
-    strncpy( in_ip, ip, sizeof(in_ip) );
-    in_ip[sizeof(in_ip) - 1] = 0; // terminate string
-  } else {
-    strcpy( in_ip, "127.0.0.1" );
+    LOG_E(OPT,"Invalid OPT configuration\n");
+    config_printhelp(opt_params,sizeof(opt_params)/sizeof(paramdef_t),OPT_CONFIGPREFIX);
   }
 
   in_port = PACKET_MAC_LTE_DEFAULT_UDP_PORT;
 
   // trace_mode
   switch (opt_type) {
-  case OPT_WIRESHARK:
+    case OPT_WIRESHARK:
 
-    /* Create local server socket only if using localhost address */
-    if (strcmp(in_ip, "127.0.0.1") == 0) {
-      opt_create_listener_socket(in_ip, in_port);
-    }
+      /* Create local server socket only if using localhost address */
+      if (strcmp(in_ip, "127.0.0.1") == 0) {
+        opt_create_listener_socket(in_ip, in_port);
+      }
 
-    g_socksd = socket(AF_INET, SOCK_DGRAM, 0);
+      g_socksd = socket(AF_INET, SOCK_DGRAM, 0);
 
-    if (g_socksd == -1) {
-      LOG_E(OPT, "Error trying to create socket (errno=%d)\n", errno);
-      LOG_E(OPT, "CREATING SOCKET FAILED\n");
-      return (-1);
-    }
+      if (g_socksd == -1) {
+        LOG_E(OPT, "Error trying to create socket (errno=%d)\n", errno);
+        LOG_E(OPT, "CREATING SOCKET FAILED\n");
+        return (-1);
+      }
 
-    /* Get remote IP address from the function argument */
-    g_serv_addr.sin_family = AF_INET;
-    g_serv_addr.sin_port = htons(in_port);
-    g_serv_addr.sin_addr.s_addr = inet_addr(in_ip);
-    break;
+      /* Get remote IP address from the function argument */
+      g_serv_addr.sin_family = AF_INET;
+      g_serv_addr.sin_port = htons(in_port);
+      g_serv_addr.sin_addr.s_addr = inet_addr(in_ip);
+      break;
 
-  case OPT_PCAP:
-    file_fd = fopen(in_path, "w");
+    case OPT_PCAP:
+      file_fd = fopen(in_path, "w");
 
-    if (file_fd == NULL) {
-      LOG_D(OPT, "Failed to open file \"%s\" for writing\n", in_path);
-      return (-1);
-    }
-    /* Write the file header */
-    fwrite(&file_header, sizeof(pcap_hdr_t), 1, file_fd);
-    break;
+      if (file_fd == NULL) {
+        LOG_D(OPT, "Failed to open file \"%s\" for writing\n", in_path);
+        return (-1);
+      }
 
-  case OPT_TSHARK:
-    LOG_W(OPT, "Tshark is currently not supported\n");
-    opt_type = OPT_NONE;
-    break;
+      /* Write the file header */
+      fwrite(&file_header, sizeof(pcap_hdr_t), 1, file_fd);
+      break;
 
-  default:
-    opt_type = OPT_NONE;
-    LOG_W(OPT, "supported Option\n");
-    break;
+    case OPT_TSHARK:
+      LOG_W(OPT, "Tshark is currently not supported\n");
+      opt_type = OPT_NONE;
+      break;
+
+    default:
+      opt_type = OPT_NONE;
+      LOG_W(OPT, "supported Option\n");
+      break;
   }
 
   if ( opt_type == OPT_WIRESHARK )
@@ -543,8 +528,7 @@ int init_opt(char *path, char *ip)
   // memset(mac_info, 0, sizeof(mac_lte_info)+pdu_buffer_size + 8);
   return (1);
 }
-void terminate_opt(void)
-{
+void terminate_opt(void) {
   /* Close local socket */
   //  free(mac_info);
   if (opt_type != OPT_NONE) {
@@ -552,18 +536,18 @@ void terminate_opt(void)
   }
 
   switch (opt_type) {
-  case OPT_WIRESHARK:
-    close(g_socksd);
-    g_socksd = -1;
-    break;
-
-  case OPT_PCAP:
-    fclose (file_fd);
-    file_fd = NULL;
-    break;
-
-  default:
-    break;
+    case OPT_WIRESHARK:
+      close(g_socksd);
+      g_socksd = -1;
+      break;
+
+    case OPT_PCAP:
+      fclose (file_fd);
+      file_fd = NULL;
+      break;
+
+    default:
+      break;
   }
 }
 
diff --git a/openair2/X2AP/x2ap_eNB.c b/openair2/X2AP/x2ap_eNB.c
index d12dfa881979b9a3841471ed236b64ff4475c621..13f6989f1cbe9749f3c5b727e3f20ecb4acc0409 100644
--- a/openair2/X2AP/x2ap_eNB.c
+++ b/openair2/X2AP/x2ap_eNB.c
@@ -67,30 +67,21 @@ void x2ap_eNB_register_eNB(x2ap_eNB_instance_t *instance_p,
 
 static
 void x2ap_eNB_handle_sctp_data_ind(instance_t instance, sctp_data_ind_t *sctp_data_ind) {
-
   int result;
-
   DevAssert(sctp_data_ind != NULL);
-
   x2ap_eNB_handle_message(instance, sctp_data_ind->assoc_id, sctp_data_ind->stream,
                           sctp_data_ind->buffer, sctp_data_ind->buffer_length);
-
   result = itti_free(TASK_UNKNOWN, sctp_data_ind->buffer);
   AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
-
 }
 
 static
-void x2ap_eNB_handle_sctp_association_resp(instance_t instance, sctp_new_association_resp_t *sctp_new_association_resp)
-{
+void x2ap_eNB_handle_sctp_association_resp(instance_t instance, sctp_new_association_resp_t *sctp_new_association_resp) {
   x2ap_eNB_instance_t *instance_p;
   x2ap_eNB_data_t *x2ap_enb_data_p;
-
   DevAssert(sctp_new_association_resp != NULL);
-
-printf("x2ap_eNB_handle_sctp_association_resp at 1\n");
-dump_trees();
-
+  printf("x2ap_eNB_handle_sctp_association_resp at 1\n");
+  dump_trees();
   instance_p = x2ap_eNB_get_instance(instance);
   DevAssert(instance_p != NULL);
 
@@ -99,13 +90,15 @@ dump_trees();
    */
   if (sctp_new_association_resp->assoc_id != -1) {
     x2ap_enb_data_p = x2ap_get_eNB(instance_p, sctp_new_association_resp->assoc_id,
-                                       sctp_new_association_resp->ulp_cnx_id);
+                                   sctp_new_association_resp->ulp_cnx_id);
+
     if (x2ap_enb_data_p != NULL) {
       /* some sanity check - to be refined at some point */
       if (sctp_new_association_resp->sctp_state != SCTP_STATE_ESTABLISHED) {
         X2AP_ERROR("x2ap_enb_data_p not NULL and sctp state not SCTP_STATE_ESTABLISHED, what to do?\n");
         abort();
       }
+
       x2ap_enb_data_p->in_streams  = sctp_new_association_resp->in_streams;
       x2ap_enb_data_p->out_streams = sctp_new_association_resp->out_streams;
       return;
@@ -113,70 +106,60 @@ dump_trees();
   }
 
   x2ap_enb_data_p = x2ap_get_eNB(instance_p, -1,
-                                     sctp_new_association_resp->ulp_cnx_id);
+                                 sctp_new_association_resp->ulp_cnx_id);
   DevAssert(x2ap_enb_data_p != NULL);
-
-printf("x2ap_eNB_handle_sctp_association_resp at 2\n");
-dump_trees();
+  printf("x2ap_eNB_handle_sctp_association_resp at 2\n");
+  dump_trees();
 
   if (sctp_new_association_resp->sctp_state != SCTP_STATE_ESTABLISHED) {
     X2AP_WARN("Received unsuccessful result for SCTP association (%u), instance %d, cnx_id %u\n",
               sctp_new_association_resp->sctp_state,
               instance,
               sctp_new_association_resp->ulp_cnx_id);
-
     x2ap_handle_x2_setup_message(x2ap_enb_data_p,
-				 sctp_new_association_resp->sctp_state == SCTP_STATE_SHUTDOWN);
-
+                                 sctp_new_association_resp->sctp_state == SCTP_STATE_SHUTDOWN);
     return;
   }
 
-printf("x2ap_eNB_handle_sctp_association_resp at 3\n");
-dump_trees();
-
+  printf("x2ap_eNB_handle_sctp_association_resp at 3\n");
+  dump_trees();
   /* Update parameters */
   x2ap_enb_data_p->assoc_id    = sctp_new_association_resp->assoc_id;
   x2ap_enb_data_p->in_streams  = sctp_new_association_resp->in_streams;
   x2ap_enb_data_p->out_streams = sctp_new_association_resp->out_streams;
-
-printf("x2ap_eNB_handle_sctp_association_resp at 4\n");
-dump_trees();
-
+  printf("x2ap_eNB_handle_sctp_association_resp at 4\n");
+  dump_trees();
   /* Prepare new x2 Setup Request */
   x2ap_eNB_generate_x2_setup_request(instance_p, x2ap_enb_data_p);
 }
 
 static
-void x2ap_eNB_handle_sctp_association_ind(instance_t instance, sctp_new_association_ind_t *sctp_new_association_ind)
-{
+void x2ap_eNB_handle_sctp_association_ind(instance_t instance, sctp_new_association_ind_t *sctp_new_association_ind) {
   x2ap_eNB_instance_t *instance_p;
   x2ap_eNB_data_t *x2ap_enb_data_p;
-
-printf("x2ap_eNB_handle_sctp_association_ind at 1 (called for instance %d)\n", instance);
-dump_trees();
+  printf("x2ap_eNB_handle_sctp_association_ind at 1 (called for instance %d)\n", instance);
+  dump_trees();
   DevAssert(sctp_new_association_ind != NULL);
-
   instance_p = x2ap_eNB_get_instance(instance);
   DevAssert(instance_p != NULL);
-
   x2ap_enb_data_p = x2ap_get_eNB(instance_p, sctp_new_association_ind->assoc_id, -1);
+
   if (x2ap_enb_data_p != NULL) abort();
-//  DevAssert(x2ap_enb_data_p != NULL);
+
+  //  DevAssert(x2ap_enb_data_p != NULL);
   if (x2ap_enb_data_p == NULL) {
     /* Create new eNB descriptor */
     x2ap_enb_data_p = calloc(1, sizeof(*x2ap_enb_data_p));
     DevAssert(x2ap_enb_data_p != NULL);
-
     x2ap_enb_data_p->cnx_id                = x2ap_eNB_fetch_add_global_cnx_id();
-
     x2ap_enb_data_p->x2ap_eNB_instance = instance_p;
-
     /* Insert the new descriptor in list of known eNB
      * but not yet associated.
      */
     RB_INSERT(x2ap_enb_map, &instance_p->x2ap_enb_head, x2ap_enb_data_p);
     x2ap_enb_data_p->state = X2AP_ENB_STATE_CONNECTED;
     instance_p->x2_target_enb_nb++;
+
     if (instance_p->x2_target_enb_pending_nb > 0) {
       instance_p->x2_target_enb_pending_nb--;
     }
@@ -184,37 +167,31 @@ dump_trees();
     X2AP_WARN("x2ap_enb_data_p already exists\n");
   }
 
-printf("x2ap_eNB_handle_sctp_association_ind at 2\n");
-dump_trees();
+  printf("x2ap_eNB_handle_sctp_association_ind at 2\n");
+  dump_trees();
   /* Update parameters */
   x2ap_enb_data_p->assoc_id    = sctp_new_association_ind->assoc_id;
   x2ap_enb_data_p->in_streams  = sctp_new_association_ind->in_streams;
   x2ap_enb_data_p->out_streams = sctp_new_association_ind->out_streams;
-
-printf("x2ap_eNB_handle_sctp_association_ind at 3\n");
-dump_trees();
+  printf("x2ap_eNB_handle_sctp_association_ind at 3\n");
+  dump_trees();
 }
 
 int x2ap_eNB_init_sctp (x2ap_eNB_instance_t *instance_p,
-			net_ip_address_t    *local_ip_addr,
-			uint32_t enb_port_for_X2C)
-{
+                        net_ip_address_t    *local_ip_addr,
+                        uint32_t enb_port_for_X2C) {
   // Create and alloc new message
   MessageDef                             *message;
   sctp_init_t                            *sctp_init  = NULL;
-
   DevAssert(instance_p != NULL);
   DevAssert(local_ip_addr != NULL);
-
   message = itti_alloc_new_message (TASK_X2AP, SCTP_INIT_MSG_MULTI_REQ);
   sctp_init = &message->ittiMsg.sctp_init_multi;
-
   sctp_init->port = enb_port_for_X2C;
   sctp_init->ppid = X2AP_SCTP_PPID;
   sctp_init->ipv4 = 1;
   sctp_init->ipv6 = 0;
   sctp_init->nb_ipv4_addr = 1;
-
 #if 0
   memcpy(&sctp_init->ipv4_address,
          local_ip_addr,
@@ -227,9 +204,7 @@ int x2ap_eNB_init_sctp (x2ap_eNB_instance_t *instance_p,
    */
   sctp_init->nb_ipv6_addr = 0;
   sctp_init->ipv6_address[0] = "0:0:0:0:0:0:0:1";
-
   return itti_send_msg_to_task (TASK_SCTP, instance_p->instance, message);
-
 }
 
 static void x2ap_eNB_register_eNB(x2ap_eNB_instance_t *instance_p,
@@ -237,47 +212,33 @@ static void x2ap_eNB_register_eNB(x2ap_eNB_instance_t *instance_p,
                                   net_ip_address_t    *local_ip_addr,
                                   uint16_t             in_streams,
                                   uint16_t             out_streams,
-				  uint32_t	       enb_port_for_X2C,
-                                  int                  multi_sd)
-{
-
+                                  uint32_t         enb_port_for_X2C,
+                                  int                  multi_sd) {
   MessageDef                       *message                   = NULL;
   sctp_new_association_req_multi_t *sctp_new_association_req  = NULL;
   x2ap_eNB_data_t                  *x2ap_enb_data             = NULL;
-
   DevAssert(instance_p != NULL);
   DevAssert(target_eNB_ip_address != NULL);
-
   message = itti_alloc_new_message(TASK_X2AP, SCTP_NEW_ASSOCIATION_REQ_MULTI);
-
   sctp_new_association_req = &message->ittiMsg.sctp_new_association_req_multi;
-
   sctp_new_association_req->port = enb_port_for_X2C;
   sctp_new_association_req->ppid = X2AP_SCTP_PPID;
-
   sctp_new_association_req->in_streams  = in_streams;
   sctp_new_association_req->out_streams = out_streams;
-
   sctp_new_association_req->multi_sd = multi_sd;
-
   memcpy(&sctp_new_association_req->remote_address,
          target_eNB_ip_address,
          sizeof(*target_eNB_ip_address));
-
   memcpy(&sctp_new_association_req->local_address,
          local_ip_addr,
          sizeof(*local_ip_addr));
-
   /* Create new eNB descriptor */
   x2ap_enb_data = calloc(1, sizeof(*x2ap_enb_data));
   DevAssert(x2ap_enb_data != NULL);
-
   x2ap_enb_data->cnx_id                = x2ap_eNB_fetch_add_global_cnx_id();
   sctp_new_association_req->ulp_cnx_id = x2ap_enb_data->cnx_id;
-
   x2ap_enb_data->assoc_id          = -1;
   x2ap_enb_data->x2ap_eNB_instance = instance_p;
-
   /* Insert the new descriptor in list of known eNB
    * but not yet associated.
    */
@@ -285,18 +246,14 @@ static void x2ap_eNB_register_eNB(x2ap_eNB_instance_t *instance_p,
   x2ap_enb_data->state = X2AP_ENB_STATE_WAITING;
   instance_p->x2_target_enb_nb ++;
   instance_p->x2_target_enb_pending_nb ++;
-
   itti_send_msg_to_task(TASK_SCTP, instance_p->instance, message);
 }
 
 static
 void x2ap_eNB_handle_register_eNB(instance_t instance,
-				  x2ap_register_enb_req_t *x2ap_register_eNB)
-{
+                                  x2ap_register_enb_req_t *x2ap_register_eNB) {
   x2ap_eNB_instance_t *new_instance;
-
   DevAssert(x2ap_register_eNB != NULL);
-
   /* Look if the provided instance already exists */
   new_instance = x2ap_eNB_get_instance(instance);
 
@@ -308,13 +265,10 @@ void x2ap_eNB_handle_register_eNB(instance_t instance,
     DevCheck(new_instance->mcc == x2ap_register_eNB->mcc, new_instance->mcc, x2ap_register_eNB->mcc, 0);
     DevCheck(new_instance->mnc == x2ap_register_eNB->mnc, new_instance->mnc, x2ap_register_eNB->mnc, 0);
     X2AP_WARN("eNB[%d] already registered\n", instance);
-  }
-  else {
+  } else {
     new_instance = calloc(1, sizeof(x2ap_eNB_instance_t));
     DevAssert(new_instance != NULL);
-
     RB_INIT(&new_instance->x2ap_enb_head);
-
     /* Copy usefull parameters */
     new_instance->instance         = instance;
     new_instance->eNB_name         = x2ap_register_eNB->eNB_name;
@@ -324,10 +278,9 @@ void x2ap_eNB_handle_register_eNB(instance_t instance,
     new_instance->mcc              = x2ap_register_eNB->mcc;
     new_instance->mnc              = x2ap_register_eNB->mnc;
     new_instance->mnc_digit_length = x2ap_register_eNB->mnc_digit_length;
-
     new_instance->num_cc           = x2ap_register_eNB->num_cc;
 
-    for (int i = 0; i< x2ap_register_eNB->num_cc; i++){
+    for (int i = 0; i< x2ap_register_eNB->num_cc; i++) {
       new_instance->eutra_band[i]              = x2ap_register_eNB->eutra_band[i];
       new_instance->downlink_frequency[i]      = x2ap_register_eNB->downlink_frequency[i];
       new_instance->uplink_frequency_offset[i] = x2ap_register_eNB->uplink_frequency_offset[i];
@@ -343,44 +296,40 @@ void x2ap_eNB_handle_register_eNB(instance_t instance,
     memcpy(new_instance->target_enb_x2_ip_address,
            x2ap_register_eNB->target_enb_x2_ip_address,
            x2ap_register_eNB->nb_x2 * sizeof(net_ip_address_t));
-
     new_instance->nb_x2             = x2ap_register_eNB->nb_x2;
     new_instance->enb_x2_ip_address = x2ap_register_eNB->enb_x2_ip_address;
     new_instance->sctp_in_streams   = x2ap_register_eNB->sctp_in_streams;
     new_instance->sctp_out_streams  = x2ap_register_eNB->sctp_out_streams;
     new_instance->enb_port_for_X2C  = x2ap_register_eNB->enb_port_for_X2C;
-
     /* Add the new instance to the list of eNB (meaningfull in virtual mode) */
     x2ap_eNB_insert_new_instance(new_instance);
-
     X2AP_INFO("Registered new eNB[%d] and %s eNB id %u\n",
-               instance,
-               x2ap_register_eNB->cell_type == CELL_MACRO_ENB ? "macro" : "home",
-               x2ap_register_eNB->eNB_id);
+              instance,
+              x2ap_register_eNB->cell_type == CELL_MACRO_ENB ? "macro" : "home",
+              x2ap_register_eNB->eNB_id);
+
     /* initiate the SCTP listener */
     if (x2ap_eNB_init_sctp(new_instance,&x2ap_register_eNB->enb_x2_ip_address,x2ap_register_eNB->enb_port_for_X2C) <  0 ) {
-          X2AP_ERROR ("Error while sending SCTP_INIT_MSG to SCTP \n");
-          return;
+      X2AP_ERROR ("Error while sending SCTP_INIT_MSG to SCTP \n");
+      return;
     }
-      X2AP_INFO("eNB[%d] eNB id %u acting as a listner (server)\n",
-                instance, x2ap_register_eNB->eNB_id);
+
+    X2AP_INFO("eNB[%d] eNB id %u acting as a listner (server)\n",
+              instance, x2ap_register_eNB->eNB_id);
   }
 }
 
 static
 void x2ap_eNB_handle_sctp_init_msg_multi_cnf(
-        instance_t instance_id,
-        sctp_init_msg_multi_cnf_t *m)
-{
+  instance_t instance_id,
+  sctp_init_msg_multi_cnf_t *m) {
   x2ap_eNB_instance_t *instance;
   int index;
-
   DevAssert(m != NULL);
-
   instance = x2ap_eNB_get_instance(instance_id);
   DevAssert(instance != NULL);
-
   instance->multi_sd = m->multi_sd;
+
   /* Exit if CNF message reports failure.
    * Failure means multi_sd < 0.
    */
@@ -392,72 +341,67 @@ void x2ap_eNB_handle_sctp_init_msg_multi_cnf(
   /* Trying to connect to the provided list of eNB ip address */
 
   for (index = 0; index < instance->nb_x2; index++) {
-
-      X2AP_INFO("eNB[%d] eNB id %u acting as an initiator (client)\n",
-                instance_id, instance->eNB_id);
-      x2ap_eNB_register_eNB(instance,
-                            &instance->target_enb_x2_ip_address[index],
-                            &instance->enb_x2_ip_address,
-                            instance->sctp_in_streams,
-                            instance->sctp_out_streams,
-                            instance->enb_port_for_X2C,
-                            instance->multi_sd);
+    X2AP_INFO("eNB[%d] eNB id %u acting as an initiator (client)\n",
+              instance_id, instance->eNB_id);
+    x2ap_eNB_register_eNB(instance,
+                          &instance->target_enb_x2_ip_address[index],
+                          &instance->enb_x2_ip_address,
+                          instance->sctp_in_streams,
+                          instance->sctp_out_streams,
+                          instance->enb_port_for_X2C,
+                          instance->multi_sd);
   }
 }
 
-void *x2ap_task(void *arg)
-{
+void *x2ap_task(void *arg) {
   MessageDef *received_msg = NULL;
   int         result;
-
   X2AP_DEBUG("Starting X2AP layer\n");
-
   x2ap_eNB_prepare_internal_data();
-
   itti_mark_task_ready(TASK_X2AP);
 
   while (1) {
     itti_receive_msg(TASK_X2AP, &received_msg);
+
     switch (ITTI_MSG_ID(received_msg)) {
-    case TERMINATE_MESSAGE:
-      X2AP_WARN(" *** Exiting X2AP thread\n");
-      itti_exit_task();
-      break;
-
-    case X2AP_REGISTER_ENB_REQ:
-      x2ap_eNB_handle_register_eNB(ITTI_MESSAGE_GET_INSTANCE(received_msg),
-                                   &X2AP_REGISTER_ENB_REQ(received_msg));
-      break;
-
-    case SCTP_INIT_MSG_MULTI_CNF:
-      x2ap_eNB_handle_sctp_init_msg_multi_cnf(ITTI_MESSAGE_GET_INSTANCE(received_msg),
-                                              &received_msg->ittiMsg.sctp_init_msg_multi_cnf);
-      break;
-
-    case SCTP_NEW_ASSOCIATION_RESP:
-      x2ap_eNB_handle_sctp_association_resp(ITTI_MESSAGE_GET_INSTANCE(received_msg),
-					    &received_msg->ittiMsg.sctp_new_association_resp);
-      break;
-
-    case SCTP_NEW_ASSOCIATION_IND:
-      x2ap_eNB_handle_sctp_association_ind(ITTI_MESSAGE_GET_INSTANCE(received_msg),
-					   &received_msg->ittiMsg.sctp_new_association_ind);
-      break;
-
-    case SCTP_DATA_IND:
-      x2ap_eNB_handle_sctp_data_ind(ITTI_MESSAGE_GET_INSTANCE(received_msg),
-                                           &received_msg->ittiMsg.sctp_data_ind);
-      break;
-
-    default:
-      X2AP_ERROR("Received unhandled message: %d:%s\n",
-                 ITTI_MSG_ID(received_msg), ITTI_MSG_NAME(received_msg));
-      break;
+      case TERMINATE_MESSAGE:
+        X2AP_WARN(" *** Exiting X2AP thread\n");
+        itti_exit_task();
+        break;
+
+      case X2AP_REGISTER_ENB_REQ:
+        x2ap_eNB_handle_register_eNB(ITTI_MESSAGE_GET_INSTANCE(received_msg),
+                                     &X2AP_REGISTER_ENB_REQ(received_msg));
+        break;
+
+      case SCTP_INIT_MSG_MULTI_CNF:
+        x2ap_eNB_handle_sctp_init_msg_multi_cnf(ITTI_MESSAGE_GET_INSTANCE(received_msg),
+                                                &received_msg->ittiMsg.sctp_init_msg_multi_cnf);
+        break;
+
+      case SCTP_NEW_ASSOCIATION_RESP:
+        x2ap_eNB_handle_sctp_association_resp(ITTI_MESSAGE_GET_INSTANCE(received_msg),
+                                              &received_msg->ittiMsg.sctp_new_association_resp);
+        break;
+
+      case SCTP_NEW_ASSOCIATION_IND:
+        x2ap_eNB_handle_sctp_association_ind(ITTI_MESSAGE_GET_INSTANCE(received_msg),
+                                             &received_msg->ittiMsg.sctp_new_association_ind);
+        break;
+
+      case SCTP_DATA_IND:
+        x2ap_eNB_handle_sctp_data_ind(ITTI_MESSAGE_GET_INSTANCE(received_msg),
+                                      &received_msg->ittiMsg.sctp_data_ind);
+        break;
+
+      default:
+        X2AP_ERROR("Received unhandled message: %d:%s\n",
+                   ITTI_MSG_ID(received_msg), ITTI_MSG_NAME(received_msg));
+        break;
     }
 
     result = itti_free (ITTI_MSG_ORIGIN_ID(received_msg), received_msg);
     AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
-
     received_msg = NULL;
   }
 
diff --git a/openair3/NAS/UE/ESM/esm_ebr_context.c b/openair3/NAS/UE/ESM/esm_ebr_context.c
index e2a327f4886c1fd4cf84c78d7901a1bb5bfcc307..7404cd8b8a83a751e21fad46eca07033e41afcac 100644
--- a/openair3/NAS/UE/ESM/esm_ebr_context.c
+++ b/openair3/NAS/UE/ESM/esm_ebr_context.c
@@ -57,7 +57,13 @@ Description Defines functions used to handle EPS bearer contexts.
 #include <sys/socket.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
-
+#ifdef PDCP_USE_NETLINK
+#ifdef UESIM_EXPANSION
+  #include "openairinterface5g_limits.h"
+  extern uint16_t inst_pdcp_list[NUMBER_OF_UE_MAX];
+#endif
+#endif
+extern uint8_t  nfapi_mode;
 
 /****************************************************************************/
 /****************  E X T E R N A L    D E F I N I T I O N S  ****************/
@@ -208,7 +214,7 @@ int esm_ebr_context_create(
            char           broadcast[INET_ADDRSTRLEN];
            struct in_addr in_addr;
            char           command_line[500];
-           int            res;
+           int            res = -1;
 
            switch (pdn->type) {
            case NET_PDN_TYPE_IPV4V6:
@@ -272,7 +278,38 @@ int esm_ebr_context_create(
                strcpy(broadcast, ipv4_addr);
              }
 
-             res = sprintf(command_line,
+             if(nfapi_mode ==3){
+                // this is for L2 FAPI simulator.
+                // change for multiple UE's like 256UEs.
+                // if it's made too many tables , OS may crush so we use one table.
+#ifdef PDCP_USE_NETLINK
+#ifdef UESIM_EXPANSION
+                uint16_t inst_nic = (pdn->ip_addr[3] & 0x000000FF) - 2;
+                res = sprintf(command_line,
+                           "ifconfig oip%d %s netmask %s broadcast %s up && "
+                           "ip rule add from %s/24 table %d && "
+                           "ip rule add to %s/24 table %d && "
+                           "ip route add default dev oip%d table %d",
+                           inst_nic + 1, ipv4_addr, netmask, broadcast,
+                           ipv4_addr, 201,
+                           ipv4_addr, 201,
+                           inst_nic + 1, 201);
+
+               inst_pdcp_list[inst_nic] = ueid;
+#else
+               res = sprintf(command_line,
+                          "ifconfig oip%d %s netmask %s broadcast %s up && "
+                          "ip rule add from %s/32 table %d && "
+                          "ip rule add to %s/32 table %d && "
+                          "ip route add default dev oip%d table %d",
+                          ueid + 1, ipv4_addr, netmask, broadcast,
+                          ipv4_addr, ueid + 201,
+                          ipv4_addr, ueid + 201,
+                          ueid + 1, ueid + 201);
+#endif
+#endif
+             } else {
+               res = sprintf(command_line,
                            "ifconfig oip%d %s netmask %s broadcast %s up && "
                            "ip rule add from %s/32 table %d && "
                            "ip rule add to %s/32 table %d && "
@@ -281,6 +318,7 @@ int esm_ebr_context_create(
                            ipv4_addr, ueid + 201,
                            ipv4_addr, ueid + 201,
                            ueid + 1, ueid + 201);
+             }
              if ( res<0 ) {
                 LOG_TRACE(WARNING, "ESM-PROC  - Failed to system command string");
              }
diff --git a/openair3/NAS/UE/nas_itti_messaging.c b/openair3/NAS/UE/nas_itti_messaging.c
index 0389106ec35e5a705a27352c4de8838efb74557a..0c5a2fec1fa67f828a1b13292d0d1473f1352e33 100644
--- a/openair3/NAS/UE/nas_itti_messaging.c
+++ b/openair3/NAS/UE/nas_itti_messaging.c
@@ -85,94 +85,13 @@ static const uint8_t esm_message_ids[] = {
   ESM_STATUS,
 };
 
-static int _nas_find_message_index(const uint8_t message_id, const uint8_t *message_ids, const int ids_number)
-{
-  int i;
 
-  for(i = 0; i < ids_number; i ++) {
-    if (message_id == message_ids[i]) {
-      return (2 + i);
-    }
-  }
-
-  return (1);
-}
-
-int nas_itti_plain_msg(const char *buffer, const nas_message_t *msg, const int length, const int down_link)
-{
-  MessageDef *message_p;
-  int data_length = length < NAS_DATA_LENGHT_MAX ? length : NAS_DATA_LENGHT_MAX;
-  int message_type = -1;
-  MessagesIds messageId_raw = -1;
-  MessagesIds messageId_plain = -1;
-
-  /* Define message ids */
-  if (msg->header.protocol_discriminator == EPS_MOBILITY_MANAGEMENT_MESSAGE) {
-    message_type    = 0;
-    messageId_raw   = down_link ? NAS_DL_EMM_RAW_MSG : NAS_UL_EMM_RAW_MSG;
-    messageId_plain = down_link ? NAS_DL_EMM_PLAIN_MSG : NAS_UL_EMM_PLAIN_MSG;
-  } else {
-    if (msg->header.protocol_discriminator == EPS_SESSION_MANAGEMENT_MESSAGE) {
-      message_type    = 1;
-      messageId_raw   = down_link ? NAS_DL_ESM_RAW_MSG : NAS_UL_ESM_RAW_MSG;
-      messageId_plain = down_link ? NAS_DL_ESM_PLAIN_MSG : NAS_UL_ESM_PLAIN_MSG;
-    }
-  }
-
-  if (message_type >= 0) {
-    /* Create and send the RAW message */
-    message_p = itti_alloc_new_message(TASK_ORIGIN, messageId_raw);
-
-    NAS_DL_EMM_RAW_MSG(message_p).lenght = length;
-    memset ((void *) &(NAS_DL_EMM_RAW_MSG(message_p).data), 0, NAS_DATA_LENGHT_MAX);
-    memcpy ((void *) &(NAS_DL_EMM_RAW_MSG(message_p).data), buffer, data_length);
-
-    itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
-
-    /* Create and send the plain message */
-    if (message_type == 0) {
-      message_p = itti_alloc_new_message(TASK_ORIGIN, messageId_plain);
-
-      NAS_DL_EMM_PLAIN_MSG(message_p).present = _nas_find_message_index(msg->plain.emm.header.message_type, emm_message_ids, sizeof(emm_message_ids) / sizeof(emm_message_ids[0]));
-      memcpy ((void *) &(NAS_DL_EMM_PLAIN_MSG(message_p).choice), &msg->plain.emm, sizeof (EMM_msg));
-    } else {
-      message_p = itti_alloc_new_message(TASK_ORIGIN, messageId_plain);
-
-      NAS_DL_ESM_PLAIN_MSG(message_p).present = _nas_find_message_index(msg->plain.esm.header.message_type, esm_message_ids, sizeof(esm_message_ids) / sizeof(esm_message_ids[0]));
-      memcpy ((void *) &(NAS_DL_ESM_PLAIN_MSG(message_p).choice), &msg->plain.esm, sizeof (ESM_msg));
-    }
-
-    return itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
-  }
-
-  return EXIT_FAILURE;
+int nas_itti_plain_msg(const char *buffer, const nas_message_t *msg, const int length, const int down_link) {
+  return 0;
 }
 
-int nas_itti_protected_msg(const char *buffer, const nas_message_t *msg, const int length, const int down_link)
-{
-  MessageDef *message_p = NULL;
-
-  if (msg->header.protocol_discriminator == EPS_MOBILITY_MANAGEMENT_MESSAGE) {
-    message_p = itti_alloc_new_message(TASK_ORIGIN, down_link ? NAS_DL_EMM_PROTECTED_MSG : NAS_UL_EMM_PROTECTED_MSG);
-
-    memcpy ((void *) &(NAS_DL_EMM_PROTECTED_MSG(message_p).header), &msg->header, sizeof (nas_message_security_header_t));
-    NAS_DL_EMM_PROTECTED_MSG(message_p).present = _nas_find_message_index(msg->security_protected.plain.emm.header.message_type, emm_message_ids, sizeof(emm_message_ids) / sizeof(emm_message_ids[0]));
-    memcpy ((void *) &(NAS_DL_EMM_PROTECTED_MSG(message_p).choice), &msg->security_protected.plain.emm, sizeof (EMM_msg));
-  } else {
-    if (msg->header.protocol_discriminator == EPS_SESSION_MANAGEMENT_MESSAGE) {
-      message_p = itti_alloc_new_message(TASK_ORIGIN, down_link ? NAS_DL_ESM_PROTECTED_MSG : NAS_UL_ESM_PROTECTED_MSG);
-
-      memcpy ((void *) &(NAS_DL_ESM_PROTECTED_MSG(message_p).header), &msg->header, sizeof (nas_message_security_header_t));
-      NAS_DL_ESM_PROTECTED_MSG(message_p).present =  _nas_find_message_index(msg->security_protected.plain.esm.header.message_type, esm_message_ids, sizeof(esm_message_ids) / sizeof(esm_message_ids[0]));
-      memcpy ((void *) &(NAS_DL_ESM_PROTECTED_MSG(message_p).choice), &msg->security_protected.plain.esm, sizeof (ESM_msg));
-    }
-  }
-
-  if (message_p != NULL) {
-    return itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
-  }
-
-  return EXIT_FAILURE;
+int nas_itti_protected_msg(const char *buffer, const nas_message_t *msg, const int length, const int down_link) {
+  return 0;
 }
 #endif
 
@@ -180,112 +99,89 @@ int nas_itti_protected_msg(const char *buffer, const nas_message_t *msg, const i
 
 extern unsigned char NB_eNB_INST;
 
-int nas_itti_kenb_refresh_req(const Byte_t kenb[32])
-{
+int nas_itti_kenb_refresh_req(const Byte_t kenb[32]) {
   MessageDef *message_p;
-
   message_p = itti_alloc_new_message(TASK_NAS_UE, NAS_KENB_REFRESH_REQ);
-
   memcpy(NAS_KENB_REFRESH_REQ(message_p).kenb, kenb, sizeof(NAS_KENB_REFRESH_REQ(message_p).kenb));
-
   MSC_LOG_TX_MESSAGE(
-      MSC_NAS_UE,
-      MSC_RRC_UE,
-      NULL,0,
-      "0 NAS_KENB_REFRESH_REQ KeNB "
-      "%02x%02x%02x%02x"
-      "%02x%02x%02x%02x"
-      "%02x%02x%02x%02x"
-      "%02x%02x%02x%02x"
-      "%02x%02x%02x%02x"
-      "%02x%02x%02x%02x"
-      "%02x%02x%02x%02x"
-      "%02x%02x%02x%02x",
-      kenb[0],  kenb[1],  kenb[2],  kenb[3],
-      kenb[4],  kenb[5],  kenb[6],  kenb[7],
-      kenb[8],  kenb[9],  kenb[10], kenb[11],
-      kenb[12], kenb[13], kenb[14], kenb[15],
-      kenb[16], kenb[17], kenb[18], kenb[19],
-      kenb[20], kenb[21], kenb[22], kenb[23],
-      kenb[24], kenb[25], kenb[26], kenb[27],
-      kenb[28], kenb[29], kenb[30], kenb[31]);
-
+    MSC_NAS_UE,
+    MSC_RRC_UE,
+    NULL,0,
+    "0 NAS_KENB_REFRESH_REQ KeNB "
+    "%02x%02x%02x%02x"
+    "%02x%02x%02x%02x"
+    "%02x%02x%02x%02x"
+    "%02x%02x%02x%02x"
+    "%02x%02x%02x%02x"
+    "%02x%02x%02x%02x"
+    "%02x%02x%02x%02x"
+    "%02x%02x%02x%02x",
+    kenb[0],  kenb[1],  kenb[2],  kenb[3],
+    kenb[4],  kenb[5],  kenb[6],  kenb[7],
+    kenb[8],  kenb[9],  kenb[10], kenb[11],
+    kenb[12], kenb[13], kenb[14], kenb[15],
+    kenb[16], kenb[17], kenb[18], kenb[19],
+    kenb[20], kenb[21], kenb[22], kenb[23],
+    kenb[24], kenb[25], kenb[26], kenb[27],
+    kenb[28], kenb[29], kenb[30], kenb[31]);
   return itti_send_msg_to_task(TASK_RRC_UE, NB_eNB_INST + 0 /* TODO to be virtualized */, message_p);
 }
 
-int nas_itti_cell_info_req(const plmn_t plmnID, const Byte_t rat, int user_id)
-{
+int nas_itti_cell_info_req(const plmn_t plmnID, const Byte_t rat, int user_id) {
   MessageDef *message_p;
-
   message_p = itti_alloc_new_message(TASK_NAS_UE, NAS_CELL_SELECTION_REQ);
-
   NAS_CELL_SELECTION_REQ(message_p).plmnID    = plmnID;
   NAS_CELL_SELECTION_REQ(message_p).rat       = rat;
-
   MSC_LOG_TX_MESSAGE(
-  	  MSC_NAS_UE,
-  	  MSC_RRC_UE,
-  	  NULL,0,
-  	  "0 NAS_CELL_SELECTION_REQ PLMN %X%X%X.%X%X%X",
-  	  plmnID.MCCdigit1, plmnID.MCCdigit2, plmnID.MCCdigit3,
-  	  plmnID.MNCdigit1, plmnID.MNCdigit2, plmnID.MNCdigit3);
-
+    MSC_NAS_UE,
+    MSC_RRC_UE,
+    NULL,0,
+    "0 NAS_CELL_SELECTION_REQ PLMN %X%X%X.%X%X%X",
+    plmnID.MCCdigit1, plmnID.MCCdigit2, plmnID.MCCdigit3,
+    plmnID.MNCdigit1, plmnID.MNCdigit2, plmnID.MNCdigit3);
   return itti_send_msg_to_task(TASK_RRC_UE, NB_eNB_INST + user_id, message_p);
 }
 
-int nas_itti_nas_establish_req(as_cause_t cause, as_call_type_t type, as_stmsi_t s_tmsi, plmn_t plmnID, Byte_t *data, uint32_t length, int user_id)
-{
+int nas_itti_nas_establish_req(as_cause_t cause, as_call_type_t type, as_stmsi_t s_tmsi, plmn_t plmnID, Byte_t *data, uint32_t length, int user_id) {
   MessageDef *message_p;
-
   message_p = itti_alloc_new_message(TASK_NAS_UE, NAS_CONN_ESTABLI_REQ);
-
   NAS_CONN_ESTABLI_REQ(message_p).cause                       = cause;
   NAS_CONN_ESTABLI_REQ(message_p).type                        = type;
   NAS_CONN_ESTABLI_REQ(message_p).s_tmsi                      = s_tmsi;
   NAS_CONN_ESTABLI_REQ(message_p).plmnID                      = plmnID;
   NAS_CONN_ESTABLI_REQ(message_p).initialNasMsg.data          = data;
   NAS_CONN_ESTABLI_REQ(message_p).initialNasMsg.length        = length;
-
   MSC_LOG_TX_MESSAGE(
-		  MSC_NAS_UE,
-		  MSC_RRC_UE,
-  	      NULL,0,
-  	     "0 NAS_CONN_ESTABLI_REQ MME code %u m-TMSI %u PLMN %X%X%X.%X%X%X",
-  	     s_tmsi.MMEcode, s_tmsi.m_tmsi,
-  	     plmnID.MCCdigit1, plmnID.MCCdigit2, plmnID.MCCdigit3,
-  	     plmnID.MNCdigit1, plmnID.MNCdigit2, plmnID.MNCdigit3);
-
+    MSC_NAS_UE,
+    MSC_RRC_UE,
+    NULL,0,
+    "0 NAS_CONN_ESTABLI_REQ MME code %u m-TMSI %u PLMN %X%X%X.%X%X%X",
+    s_tmsi.MMEcode, s_tmsi.m_tmsi,
+    plmnID.MCCdigit1, plmnID.MCCdigit2, plmnID.MCCdigit3,
+    plmnID.MNCdigit1, plmnID.MNCdigit2, plmnID.MNCdigit3);
   return itti_send_msg_to_task(TASK_RRC_UE, NB_eNB_INST + user_id, message_p);
 }
 
-int nas_itti_ul_data_req(const uint32_t ue_id, void *const data, const uint32_t length, int user_id)
-{
+int nas_itti_ul_data_req(const uint32_t ue_id, void *const data, const uint32_t length, int user_id) {
   MessageDef *message_p;
-
   message_p = itti_alloc_new_message(TASK_NAS_UE, NAS_UPLINK_DATA_REQ);
-
   NAS_UPLINK_DATA_REQ(message_p).UEid          = ue_id;
   NAS_UPLINK_DATA_REQ(message_p).nasMsg.data   = data;
   NAS_UPLINK_DATA_REQ(message_p).nasMsg.length = length;
-
   return itti_send_msg_to_task(TASK_RRC_UE, NB_eNB_INST + user_id, message_p);
 }
 
-int nas_itti_rab_establish_rsp(const as_stmsi_t s_tmsi, const as_rab_id_t rabID, const nas_error_code_t errCode, int user_id)
-{
+int nas_itti_rab_establish_rsp(const as_stmsi_t s_tmsi, const as_rab_id_t rabID, const nas_error_code_t errCode, int user_id) {
   MessageDef *message_p;
-
   message_p = itti_alloc_new_message(TASK_NAS_UE, NAS_RAB_ESTABLI_RSP);
-
   NAS_RAB_ESTABLI_RSP(message_p).s_tmsi       = s_tmsi;
   NAS_RAB_ESTABLI_RSP(message_p).rabID        = rabID;
   NAS_RAB_ESTABLI_RSP(message_p).errCode      = errCode;
-
   MSC_LOG_TX_MESSAGE(
-		  MSC_NAS_UE,
-		  MSC_RRC_UE,
-  	      NULL,0,
-  	     "0 NAS_RAB_ESTABLI_RSP MME code %u m-TMSI %u rb id %u status %u",
-  	     s_tmsi.MMEcode, s_tmsi.m_tmsi,rabID, errCode );
+    MSC_NAS_UE,
+    MSC_RRC_UE,
+    NULL,0,
+    "0 NAS_RAB_ESTABLI_RSP MME code %u m-TMSI %u rb id %u status %u",
+    s_tmsi.MMEcode, s_tmsi.m_tmsi,rabID, errCode );
   return itti_send_msg_to_task(TASK_RRC_UE, NB_eNB_INST + user_id, message_p);
 }
diff --git a/openair3/NAS/UE/nas_ue_task.c b/openair3/NAS/UE/nas_ue_task.c
index 529ac5e602b79a342932af73d3ec45a12cae06ab..6df66666389ce1c3f7f36163f51cccf0205b5249 100644
--- a/openair3/NAS/UE/nas_ue_task.c
+++ b/openair3/NAS/UE/nas_ue_task.c
@@ -40,7 +40,7 @@
 
 // FIXME review these externs
 extern unsigned char NB_eNB_INST;
-extern unsigned char NB_UE_INST;
+extern uint16_t NB_UE_INST;
 
 char *make_port_str_from_ueid(const char *base_port_str, int ueid);
 
diff --git a/openair3/S1AP/s1ap_eNB_decoder.c b/openair3/S1AP/s1ap_eNB_decoder.c
index c12374f7586397c832725dab601e09e027fb48e3..dd1dfadc23fecb583509b5275f4db15f36d06617 100644
--- a/openair3/S1AP/s1ap_eNB_decoder.c
+++ b/openair3/S1AP/s1ap_eNB_decoder.c
@@ -36,103 +36,52 @@
 #include "s1ap_common.h"
 #include "s1ap_eNB_decoder.h"
 
-static int s1ap_eNB_decode_initiating_message(S1AP_S1AP_PDU_t *pdu)
-{
-  MessageDef *message_p;
-  MessagesIds message_id;
+static int s1ap_eNB_decode_initiating_message(S1AP_S1AP_PDU_t *pdu) {
   asn_encode_to_new_buffer_result_t res = { NULL, {0, NULL, NULL} };
   DevAssert(pdu != NULL);
 
   switch(pdu->choice.initiatingMessage.procedureCode) {
     case S1AP_ProcedureCode_id_downlinkNASTransport:
       res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
-      message_id = S1AP_DOWNLINK_NAS_LOG;
-      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id,
-                  res.result.encoded + sizeof (IttiMsgText));
-      message_p->ittiMsg.s1ap_downlink_nas_log.size = res.result.encoded;
-      memcpy(&message_p->ittiMsg.s1ap_downlink_nas_log.text, res.buffer, res.result.encoded);
-      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
       free(res.buffer);
       break;
 
     case S1AP_ProcedureCode_id_InitialContextSetup:
       res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
-      message_id = S1AP_INITIAL_CONTEXT_SETUP_LOG;
-      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id,
-                  res.result.encoded + sizeof (IttiMsgText));
-      message_p->ittiMsg.s1ap_initial_context_setup_log.size = res.result.encoded;
-      memcpy(&message_p->ittiMsg.s1ap_initial_context_setup_log.text, res.buffer, res.result.encoded);
-      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
       free(res.buffer);
       break;
 
     case S1AP_ProcedureCode_id_UEContextRelease:
       res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
-      message_id = S1AP_UE_CONTEXT_RELEASE_COMMAND_LOG;
-      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id,
-                  res.result.encoded + sizeof (IttiMsgText));
-      message_p->ittiMsg.s1ap_ue_context_release_command_log.size = res.result.encoded;
-      memcpy(&message_p->ittiMsg.s1ap_ue_context_release_command_log.text, res.buffer, res.result.encoded);
-      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
       free(res.buffer);
       break;
 
     case S1AP_ProcedureCode_id_Paging:
       res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
-      message_id = S1AP_PAGING_LOG;
-      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id,
-                  res.result.encoded + sizeof (IttiMsgText));
-      message_p->ittiMsg.s1ap_paging_log.size = res.result.encoded;
-      memcpy(&message_p->ittiMsg.s1ap_paging_log.text, res.buffer, res.result.encoded);
-      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
       S1AP_INFO("Paging initiating message\n");
       free(res.buffer);
       break;
 
     case S1AP_ProcedureCode_id_E_RABSetup:
       res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
-      message_id = S1AP_E_RAB_SETUP_REQUEST_LOG;
-      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id,
-                  res.result.encoded + sizeof (IttiMsgText));
-      message_p->ittiMsg.s1ap_e_rab_setup_request_log.size = res.result.encoded;
-      memcpy(&message_p->ittiMsg.s1ap_e_rab_setup_request_log.text, res.buffer, res.result.encoded);
-      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
       free(res.buffer);
       S1AP_INFO("E_RABSetup initiating message\n");
       break;
 
     case S1AP_ProcedureCode_id_E_RABModify:
       res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
-      message_id = S1AP_E_RAB_MODIFY_REQUEST_LOG;
-      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id,
-                  res.result.encoded + sizeof (IttiMsgText));
-      message_p->ittiMsg.s1ap_e_rab_modify_request_log.size = res.result.encoded;
-      memcpy(&message_p->ittiMsg.s1ap_e_rab_modify_request_log.text, res.buffer, res.result.encoded);
-      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
       free(res.buffer);
       S1AP_INFO("E_RABModify initiating message\n");
       break;
 
     case S1AP_ProcedureCode_id_E_RABRelease:
       res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
-      message_id = S1AP_E_RAB_RELEASE_REQUEST_LOG;
-      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id,
-                  res.result.encoded + sizeof (IttiMsgText));
-      message_p->ittiMsg.s1ap_e_rab_release_request_log.size = res.result.encoded;
-      memcpy(&message_p->ittiMsg.s1ap_e_rab_release_request_log.text, res.buffer, res.result.encoded);
-      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
       free(res.buffer);
       S1AP_INFO("TODO E_RABRelease initiating message\n");
       break;
 
     case S1AP_ProcedureCode_id_ErrorIndication:
       res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
-      message_id = S1AP_ERROR_INDICATION_LOG;
-      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id,
-                  res.result.encoded + sizeof (IttiMsgText));
-      message_p->ittiMsg.s1ap_error_indication_log.size = res.result.encoded;
-      memcpy(&message_p->ittiMsg.s1ap_error_indication_log.text, res.buffer, res.result.encoded);
-      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
       free(res.buffer);
       S1AP_INFO("TODO ErrorIndication initiating message\n");
       break;
@@ -148,21 +97,13 @@ static int s1ap_eNB_decode_initiating_message(S1AP_S1AP_PDU_t *pdu)
   return 0;
 }
 
-static int s1ap_eNB_decode_successful_outcome(S1AP_S1AP_PDU_t *pdu)
-{
-  MessageDef *message_p;
-  MessagesIds message_id;
+static int s1ap_eNB_decode_successful_outcome(S1AP_S1AP_PDU_t *pdu) {
   asn_encode_to_new_buffer_result_t res = { NULL, {0, NULL, NULL} };
   DevAssert(pdu != NULL);
 
   switch(pdu->choice.successfulOutcome.procedureCode) {
     case S1AP_ProcedureCode_id_S1Setup:
       res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
-      message_id = S1AP_S1_SETUP_LOG;
-      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, res.result.encoded + sizeof (IttiMsgText));
-      message_p->ittiMsg.s1ap_s1_setup_log.size = res.result.encoded;
-      memcpy(&message_p->ittiMsg.s1ap_s1_setup_log.text, res.buffer, res.result.encoded);
-      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
       free(res.buffer);
       break;
 
@@ -175,21 +116,13 @@ static int s1ap_eNB_decode_successful_outcome(S1AP_S1AP_PDU_t *pdu)
   return 0;
 }
 
-static int s1ap_eNB_decode_unsuccessful_outcome(S1AP_S1AP_PDU_t *pdu)
-{
-  MessageDef *message_p;
-  MessagesIds message_id;
+static int s1ap_eNB_decode_unsuccessful_outcome(S1AP_S1AP_PDU_t *pdu) {
   asn_encode_to_new_buffer_result_t res = { NULL, {0, NULL, NULL} };
   DevAssert(pdu != NULL);
 
   switch(pdu->choice.unsuccessfulOutcome.procedureCode) {
     case S1AP_ProcedureCode_id_S1Setup:
       res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
-      message_id = S1AP_S1_SETUP_LOG;
-      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, res.result.encoded + sizeof (IttiMsgText));
-      message_p->ittiMsg.s1ap_s1_setup_log.size = res.result.encoded;
-      memcpy(&message_p->ittiMsg.s1ap_s1_setup_log.text, res.buffer, res.result.encoded);
-      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
       free(res.buffer);
       break;
 
@@ -203,13 +136,10 @@ static int s1ap_eNB_decode_unsuccessful_outcome(S1AP_S1AP_PDU_t *pdu)
 }
 
 int s1ap_eNB_decode_pdu(S1AP_S1AP_PDU_t *pdu, const uint8_t *const buffer,
-                        const uint32_t length)
-{
+                        const uint32_t length) {
   asn_dec_rval_t dec_ret;
-
   DevAssert(pdu != NULL);
   DevAssert(buffer != NULL);
-
   dec_ret = aper_decode(NULL,
                         &asn_DEF_S1AP_S1AP_PDU,
                         (void **)&pdu,
diff --git a/openair3/S1AP/s1ap_eNB_encoder.c b/openair3/S1AP/s1ap_eNB_encoder.c
index bc0c69792def7fec332f0723ed6e5e9a9d7fb640..e282d1dd78227f3104b92fd95a89d0d5128060c3 100644
--- a/openair3/S1AP/s1ap_eNB_encoder.c
+++ b/openair3/S1AP/s1ap_eNB_encoder.c
@@ -47,8 +47,7 @@ static inline int s1ap_eNB_encode_successfull_outcome(S1AP_S1AP_PDU_t *pdu,
 static inline int s1ap_eNB_encode_unsuccessfull_outcome(S1AP_S1AP_PDU_t *pdu,
     uint8_t **buffer, uint32_t *len);
 
-int s1ap_eNB_encode_pdu(S1AP_S1AP_PDU_t *pdu, uint8_t **buffer, uint32_t *len)
-{
+int s1ap_eNB_encode_pdu(S1AP_S1AP_PDU_t *pdu, uint8_t **buffer, uint32_t *len) {
   int ret = -1;
   DevAssert(pdu != NULL);
   DevAssert(buffer != NULL);
@@ -79,71 +78,38 @@ int s1ap_eNB_encode_pdu(S1AP_S1AP_PDU_t *pdu, uint8_t **buffer, uint32_t *len)
 
 static inline
 int s1ap_eNB_encode_initiating(S1AP_S1AP_PDU_t *pdu,
-                               uint8_t **buffer, uint32_t *len)
-{
-  MessageDef *message_p;
-  MessagesIds message_id;
+                               uint8_t **buffer, uint32_t *len) {
   asn_encode_to_new_buffer_result_t res = { NULL, {0, NULL, NULL} };
   DevAssert(pdu != NULL);
 
   switch(pdu->choice.initiatingMessage.procedureCode) {
     case S1AP_ProcedureCode_id_S1Setup:
       res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
-      message_id = S1AP_S1_SETUP_LOG;
-      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, res.result.encoded + sizeof (IttiMsgText));
-      message_p->ittiMsg.s1ap_s1_setup_log.size = res.result.encoded;
-      memcpy(&message_p->ittiMsg.s1ap_s1_setup_log.text, res.buffer, res.result.encoded);
-      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
       free(res.buffer);
       break;
 
     case S1AP_ProcedureCode_id_uplinkNASTransport:
       res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
-      message_id = S1AP_UPLINK_NAS_LOG;
-      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, res.result.encoded + sizeof (IttiMsgText));
-      message_p->ittiMsg.s1ap_uplink_nas_log.size = res.result.encoded;
-      memcpy(&message_p->ittiMsg.s1ap_uplink_nas_log.text, res.buffer, res.result.encoded);
-      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
       free(res.buffer);
       break;
 
     case S1AP_ProcedureCode_id_UECapabilityInfoIndication:
       res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
-      message_id = S1AP_UE_CAPABILITY_IND_LOG;
-      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, res.result.encoded + sizeof (IttiMsgText));
-      message_p->ittiMsg.s1ap_ue_capability_ind_log.size = res.result.encoded;
-      memcpy(&message_p->ittiMsg.s1ap_ue_capability_ind_log.text, res.buffer, res.result.encoded);
-      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
       free(res.buffer);
       break;
 
     case S1AP_ProcedureCode_id_initialUEMessage:
       res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
-      message_id = S1AP_INITIAL_UE_MESSAGE_LOG;
-      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, res.result.encoded + sizeof (IttiMsgText));
-      message_p->ittiMsg.s1ap_initial_ue_message_log.size = res.result.encoded;
-      memcpy(&message_p->ittiMsg.s1ap_initial_ue_message_log.text, res.buffer, res.result.encoded);
-      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
       free(res.buffer);
       break;
 
     case S1AP_ProcedureCode_id_NASNonDeliveryIndication:
       res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
-      message_id = S1AP_NAS_NON_DELIVERY_IND_LOG;
-      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, res.result.encoded + sizeof (IttiMsgText));
-      message_p->ittiMsg.s1ap_nas_non_delivery_ind_log.size = res.result.encoded;
-      memcpy(&message_p->ittiMsg.s1ap_nas_non_delivery_ind_log.text, res.buffer, res.result.encoded);
-      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
       free(res.buffer);
       break;
 
     case S1AP_ProcedureCode_id_UEContextReleaseRequest:
       res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
-      message_id = S1AP_UE_CONTEXT_RELEASE_REQ_LOG;
-      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, res.result.encoded + sizeof (IttiMsgText));
-      message_p->ittiMsg.s1ap_ue_context_release_req_log.size = res.result.encoded;
-      memcpy(&message_p->ittiMsg.s1ap_ue_context_release_req_log.text, res.buffer, res.result.encoded);
-      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
       free(res.buffer);
       break;
 
@@ -166,63 +132,35 @@ int s1ap_eNB_encode_initiating(S1AP_S1AP_PDU_t *pdu,
 
 static inline
 int s1ap_eNB_encode_successfull_outcome(S1AP_S1AP_PDU_t *pdu,
-                                        uint8_t **buffer, uint32_t *len)
-{
-  MessageDef *message_p;
-  MessagesIds message_id;
+                                        uint8_t **buffer, uint32_t *len) {
   asn_encode_to_new_buffer_result_t res = { NULL, {0, NULL, NULL} };
   DevAssert(pdu != NULL);
 
   switch(pdu->choice.successfulOutcome.procedureCode) {
     case S1AP_ProcedureCode_id_InitialContextSetup:
       res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
-      message_id = S1AP_INITIAL_CONTEXT_SETUP_LOG;
-      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, res.result.encoded + sizeof (IttiMsgText));
-      message_p->ittiMsg.s1ap_initial_context_setup_log.size = res.result.encoded;
-      memcpy(&message_p->ittiMsg.s1ap_initial_context_setup_log.text, res.buffer, res.result.encoded);
-      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
       free(res.buffer);
       break;
 
     case S1AP_ProcedureCode_id_UEContextRelease:
       res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
-      message_id = S1AP_UE_CONTEXT_RELEASE_COMPLETE_LOG;
-      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, res.result.encoded + sizeof (IttiMsgText));
-      message_p->ittiMsg.s1ap_ue_context_release_complete_log.size = res.result.encoded;
-      memcpy(&message_p->ittiMsg.s1ap_ue_context_release_complete_log.text, res.buffer, res.result.encoded);
-      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
       free(res.buffer);
       break;
 
     case S1AP_ProcedureCode_id_E_RABSetup:
       res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
-      message_id = S1AP_E_RAB_SETUP_RESPONSE_LOG;
-      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, res.result.encoded + sizeof (IttiMsgText));
-      message_p->ittiMsg.s1ap_e_rab_setup_response_log.size = res.result.encoded;
-      memcpy(&message_p->ittiMsg.s1ap_e_rab_setup_response_log.text, res.buffer, res.result.encoded);
-      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
       free(res.buffer);
       S1AP_INFO("E_RABSetup successful message\n");
       break;
 
     case S1AP_ProcedureCode_id_E_RABModify:
       res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
-      message_id = S1AP_E_RAB_MODIFY_RESPONSE_LOG;
-      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, res.result.encoded + sizeof (IttiMsgText));
-      message_p->ittiMsg.s1ap_e_rab_modify_response_log.size = res.result.encoded;
-      memcpy(&message_p->ittiMsg.s1ap_e_rab_modify_response_log.text, res.buffer, res.result.encoded);
-      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
       free(res.buffer);
       S1AP_INFO("E_RABModify successful message\n");
       break;
 
     case S1AP_ProcedureCode_id_E_RABRelease:
       res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
-      message_id = S1AP_E_RAB_RELEASE_RESPONSE_LOG;
-      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, res.result.encoded + sizeof (IttiMsgText));
-      message_p->ittiMsg.s1ap_e_rab_release_response_log.size = res.result.encoded;
-      memcpy(&message_p->ittiMsg.s1ap_e_rab_release_response_log.text, res.buffer, res.result.encoded);
-      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
       free(res.buffer);
       S1AP_INFO("E_RAB Release successful message\n");
       break;
@@ -246,21 +184,13 @@ int s1ap_eNB_encode_successfull_outcome(S1AP_S1AP_PDU_t *pdu,
 
 static inline
 int s1ap_eNB_encode_unsuccessfull_outcome(S1AP_S1AP_PDU_t *pdu,
-    uint8_t **buffer, uint32_t *len)
-{
-  MessageDef *message_p;
-  MessagesIds message_id;
+    uint8_t **buffer, uint32_t *len) {
   asn_encode_to_new_buffer_result_t res = { NULL, {0, NULL, NULL} };
   DevAssert(pdu != NULL);
 
   switch(pdu->choice.unsuccessfulOutcome.procedureCode) {
     case S1AP_ProcedureCode_id_InitialContextSetup:
       res = asn_encode_to_new_buffer(NULL, ATS_CANONICAL_XER, &asn_DEF_S1AP_S1AP_PDU, pdu);
-      message_id = S1AP_INITIAL_CONTEXT_SETUP_LOG;
-      message_p = itti_alloc_new_message_sized(TASK_S1AP, message_id, res.result.encoded + sizeof (IttiMsgText));
-      message_p->ittiMsg.s1ap_initial_context_setup_log.size = res.result.encoded;
-      memcpy(&message_p->ittiMsg.s1ap_initial_context_setup_log.text, res.buffer, res.result.encoded);
-      itti_send_msg_to_task(TASK_UNKNOWN, INSTANCE_DEFAULT, message_p);
       free(res.buffer);
       break;
 
diff --git a/targets/COMMON/create_tasks.c b/targets/COMMON/create_tasks.c
index 2c27cc29e8bb542f7d41ef2c30eba9a3c55d68a2..3cb7d23467c3622617799de692350efe2eaddde4 100644
--- a/targets/COMMON/create_tasks.c
+++ b/targets/COMMON/create_tasks.c
@@ -25,40 +25,34 @@
 # include "common/utils/LOG/log.h"
 # include "targets/RT/USER/lte-softmodem.h"
 
-# ifdef OPENAIR2
-#   if defined(ENABLE_USE_MME)
-#     include "sctp_eNB_task.h"
-#     include "x2ap_eNB.h"
-#     include "s1ap_eNB.h"
-#     include "nas_ue_task.h"
-#     include "udp_eNB_task.h"
-#     include "gtpv1u_eNB_task.h"
-/* temporary warning removale while implementing noS1 */
-/* as config option                                   */
-#   else
-#     ifdef EPC_MODE_ENABLED
-#       undef  EPC_MODE_ENABLED
-#     endif
-#     define EPC_MODE_ENABLED 0
-#   endif
-#   if ENABLE_RAL
-#     include "lteRALue.h"
-#     include "lteRALenb.h"
-#   endif
-#   include "RRC/LTE/rrc_defs.h"
-# endif
+#ifdef OPENAIR2
+  #if defined(ENABLE_USE_MME)
+    #include "sctp_eNB_task.h"
+    #include "x2ap_eNB.h"
+    #include "s1ap_eNB.h"
+    #include "nas_ue_task.h"
+    #include "udp_eNB_task.h"
+    #include "gtpv1u_eNB_task.h"
+    /* temporary warning removale while implementing noS1 */
+    /* as config option                                   */
+  #else
+    #ifdef EPC_MODE_ENABLED
+      #undef  EPC_MODE_ENABLED
+    #endif
+    #define EPC_MODE_ENABLED 0
+  #endif
+  #if ENABLE_RAL
+    #include "lteRALue.h"
+    #include "lteRALenb.h"
+  #endif
+  #include "RRC/LTE/rrc_defs.h"
+#endif
 # include "enb_app.h"
 
 
-int create_tasks(uint32_t enb_nb)
-{
+int create_tasks(uint32_t enb_nb) {
   LOG_D(ENB_APP, "%s(enb_nb:%d\n", __FUNCTION__, enb_nb);
-
   itti_wait_ready(1);
-  if (itti_create_task (TASK_L2L1, l2l1_task, NULL) < 0) {
-    LOG_E(PDCP, "Create task for L2L1 failed\n");
-    return -1;
-  }
 
   if (enb_nb > 0) {
     /* Last task to create, others task must be ready before its start */
@@ -67,50 +61,52 @@ int create_tasks(uint32_t enb_nb)
       return -1;
     }
   }
+
 # if defined(ENABLE_USE_MME)
+
   if (EPC_MODE_ENABLED) {
-      if (enb_nb > 0) {
-        if (itti_create_task (TASK_X2AP, x2ap_task, NULL) < 0) {
-          LOG_E(X2AP, "Create task for X2AP failed\n");
-          return -1;
-        }
+    if (enb_nb > 0) {
+      if (itti_create_task (TASK_X2AP, x2ap_task, NULL) < 0) {
+        LOG_E(X2AP, "Create task for X2AP failed\n");
+        return -1;
+      }
 
-        if (itti_create_task (TASK_SCTP, sctp_eNB_task, NULL) < 0) {
-          LOG_E(SCTP, "Create task for SCTP failed\n");
-          return -1;
-        }
+      if (itti_create_task (TASK_SCTP, sctp_eNB_task, NULL) < 0) {
+        LOG_E(SCTP, "Create task for SCTP failed\n");
+        return -1;
+      }
 
-        if (itti_create_task (TASK_S1AP, s1ap_eNB_task, NULL) < 0) {
-          LOG_E(S1AP, "Create task for S1AP failed\n");
-          return -1;
-        }
-        if(!(get_softmodem_params()->emulate_rf)){
-          if (itti_create_task (TASK_UDP, udp_eNB_task, NULL) < 0) {
-            LOG_E(UDP_, "Create task for UDP failed\n");
-            return -1;
-          }
-        }
+      if (itti_create_task (TASK_S1AP, s1ap_eNB_task, NULL) < 0) {
+        LOG_E(S1AP, "Create task for S1AP failed\n");
+        return -1;
+      }
 
-        if (itti_create_task (TASK_GTPV1_U, &gtpv1u_eNB_task, NULL) < 0) {
-          LOG_E(GTPU, "Create task for GTPV1U failed\n");
+      if(!(get_softmodem_params()->emulate_rf)) {
+        if (itti_create_task (TASK_UDP, udp_eNB_task, NULL) < 0) {
+          LOG_E(UDP_, "Create task for UDP failed\n");
           return -1;
         }
       }
 
-  } /* if (EPC_MODE_ENABLED) */
-#endif
-    if (enb_nb > 0) {
-      LOG_I(RRC,"Creating RRC eNB Task\n");
-
-      if (itti_create_task (TASK_RRC_ENB, rrc_enb_task, NULL) < 0) {
-        LOG_E(RRC, "Create task for RRC eNB failed\n");
+      if (itti_create_task (TASK_GTPV1_U, &gtpv1u_eNB_task, NULL) < 0) {
+        LOG_E(GTPU, "Create task for GTPV1U failed\n");
         return -1;
       }
     }
+  } /* if (EPC_MODE_ENABLED) */
 
+#endif
 
-  itti_wait_ready(0);
+  if (enb_nb > 0) {
+    LOG_I(RRC,"Creating RRC eNB Task\n");
+
+    if (itti_create_task (TASK_RRC_ENB, rrc_enb_task, NULL) < 0) {
+      LOG_E(RRC, "Create task for RRC eNB failed\n");
+      return -1;
+    }
+  }
 
+  itti_wait_ready(0);
   return 0;
 }
 #endif
diff --git a/targets/COMMON/create_tasks_ue.c b/targets/COMMON/create_tasks_ue.c
index 20b5979f31ee1c5829aee774739c4095afe50a49..601b342ee88f9d5fec96182c4658fb735eaa9d5a 100644
--- a/targets/COMMON/create_tasks_ue.c
+++ b/targets/COMMON/create_tasks_ue.c
@@ -24,57 +24,52 @@
 # include "create_tasks.h"
 # include "common/utils/LOG/log.h"
 
-# ifdef OPENAIR2
-#   if defined(ENABLE_USE_MME)
-#     include "sctp_eNB_task.h"
-#     include "s1ap_eNB.h"
-#     include "nas_ue_task.h"
-#     include "udp_eNB_task.h"
-#     include "gtpv1u_eNB_task.h"
-#   endif
-#   if ENABLE_RAL
-#     include "lteRALue.h"
-#     include "lteRALenb.h"
-#   endif
-#   include "RRC/LTE/rrc_defs.h"
-# endif
+#ifdef OPENAIR2
+  #if defined(ENABLE_USE_MME)
+    #include "sctp_eNB_task.h"
+    #include "s1ap_eNB.h"
+    #include "nas_ue_task.h"
+    #include "udp_eNB_task.h"
+    #include "gtpv1u_eNB_task.h"
+  #endif
+  #if ENABLE_RAL
+    #include "lteRALue.h"
+    #include "lteRALenb.h"
+  #endif
+  #include "RRC/LTE/rrc_defs.h"
+#endif
 # include "enb_app.h"
 
-int create_tasks_ue(uint32_t ue_nb)
-{
+int create_tasks_ue(uint32_t ue_nb) {
   LOG_D(ENB_APP, "%s(ue_nb:%d)\n", __FUNCTION__, ue_nb);
-
   itti_wait_ready(1);
-  if (itti_create_task (TASK_L2L1, l2l1_task, NULL) < 0) {
-    LOG_E(PDCP, "Create task for L2L1 failed\n");
-    return -1;
-  }
-
 #      if defined(ENABLE_USE_MME)
 #      if defined(NAS_BUILT_IN_UE)
-      if (ue_nb > 0) {
-        nas_user_container_t *users = calloc(1, sizeof(*users));
-        if (users == NULL) abort();
-        users->count = ue_nb;
-        if (itti_create_task (TASK_NAS_UE, nas_ue_task, users) < 0) {
-          LOG_E(NAS, "Create task for NAS UE failed\n");
-          return -1;
-        }
-      }
-#      endif
-#      endif
 
-    if (ue_nb > 0) {
-      if (itti_create_task (TASK_RRC_UE, rrc_ue_task, NULL) < 0) {
-        LOG_E(RRC, "Create task for RRC UE failed\n");
-        return -1;
-      }
+  if (ue_nb > 0) {
+    nas_user_container_t *users = calloc(1, sizeof(*users));
+
+    if (users == NULL) abort();
+
+    users->count = ue_nb;
 
+    if (itti_create_task (TASK_NAS_UE, nas_ue_task, users) < 0) {
+      LOG_E(NAS, "Create task for NAS UE failed\n");
+      return -1;
     }
+  }
 
+#      endif
+#      endif
 
-  itti_wait_ready(0);
+  if (ue_nb > 0) {
+    if (itti_create_task (TASK_RRC_UE, rrc_ue_task, NULL) < 0) {
+      LOG_E(RRC, "Create task for RRC UE failed\n");
+      return -1;
+    }
+  }
 
+  itti_wait_ready(0);
   return 0;
 }
 #endif
diff --git a/targets/COMMON/openairinterface5g_limits.h b/targets/COMMON/openairinterface5g_limits.h
index 1c27f655851f12b0d58eab503ca6e4e52346fc4a..644952ca794a041a046d86efdf054ccaff1b7c39 100644
--- a/targets/COMMON/openairinterface5g_limits.h
+++ b/targets/COMMON/openairinterface5g_limits.h
@@ -5,8 +5,18 @@
 #        define NUMBER_OF_eNB_MAX 1
 #        define NUMBER_OF_RU_MAX 2
 #        ifndef UE_EXPANSION
+// TODO:L2 FAPI simulator.
+// UESIM_EXPANSION is used to be same value of NUMBER_OF_UE_MAX
+// in eNB and UE.
+// now , if we use --mu option in UE, compiling error will occur.
+// This problem will be fixed in the future.
+#            ifndef UESIM_EXPANSION
 #                define NUMBER_OF_UE_MAX 16
 #                define NUMBER_OF_CONNECTED_eNB_MAX 3
+#            else
+#                define NUMBER_OF_UE_MAX 256
+#                define NUMBER_OF_CONNECTED_eNB_MAX 1
+#            endif
 #        else
 #                define NUMBER_OF_UE_MAX 256
 #                define NUMBER_OF_CONNECTED_eNB_MAX 1
@@ -15,8 +25,18 @@
 #        define NUMBER_OF_eNB_MAX 7
 #        define NUMBER_OF_RU_MAX 32
 #        ifndef UE_EXPANSION
-#                define NUMBER_OF_UE_MAX 20
+/* if the value of MAX_MOBILES_PER_ENB and NUMBER_OF_UE_MAX is different,
+eNB process will exit because unexpected access happens.
+Now some parts are using NUMBER_OF_UE_MAX
+and the other are using MAX_MOBILES_PER_ENB in for-loop.
+*/
+#            ifndef UESIM_EXPANSION
+#                define NUMBER_OF_UE_MAX 16
 #                define NUMBER_OF_CONNECTED_eNB_MAX 3
+#            else
+#                define NUMBER_OF_UE_MAX 256
+#                define NUMBER_OF_CONNECTED_eNB_MAX 1
+#            endif
 #        else
 #                define NUMBER_OF_UE_MAX 256
 #                define NUMBER_OF_CONNECTED_eNB_MAX 1
diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rcc.band7.tm1.50PRB.nfapi.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rcc.band7.tm1.50PRB.nfapi.conf
index ced031163d242aef51b065bf8a73cdc5142547cc..472d84c7e2319d84d3436081f91839cd44b72160 100644
--- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rcc.band7.tm1.50PRB.nfapi.conf
+++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/rcc.band7.tm1.50PRB.nfapi.conf
@@ -172,7 +172,7 @@ eNBs =
 
 
     ////////// MME parameters:
-    mme_ip_address      = ( { ipv4       = "127.0.0.3";
+    mme_ip_address      = ( { ipv4       = "192.168.12.26";
                               ipv6       = "192:168:30::17";
                               active     = "yes";
                               preference = "ipv4";
@@ -181,14 +181,24 @@ eNBs =
 
     NETWORK_INTERFACES :
     {
-        ENB_INTERFACE_NAME_FOR_S1_MME            = "lo";
-        ENB_IPV4_ADDRESS_FOR_S1_MME              = "127.0.0.2/24";
-        ENB_INTERFACE_NAME_FOR_S1U               = "lo";
-        ENB_IPV4_ADDRESS_FOR_S1U                 = "127.0.0.5/24";
+        #ENB_INTERFACE_NAME_FOR_S1_MME            = "lo";
+        #ENB_IPV4_ADDRESS_FOR_S1_MME              = "127.0.0.2/24";
+        #ENB_INTERFACE_NAME_FOR_S1U               = "lo";
+        #ENB_IPV4_ADDRESS_FOR_S1U                 = "127.0.0.5/24";
+        #ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
+
+        #ENB_IPV4_ADDRESS_FOR_X2C                 = "127.0.0.2/24";
+        #ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
+        
+        ENB_INTERFACE_NAME_FOR_S1_MME            = "enp0s31f6";
+        ENB_IPV4_ADDRESS_FOR_S1_MME              = "192.168.12.188/24";
+        ENB_INTERFACE_NAME_FOR_S1U               = "enp0s31f6";
+        ENB_IPV4_ADDRESS_FOR_S1U                 = "192.168.12.188/24";
         ENB_PORT_FOR_S1U                         = 2152; # Spec 2152
-
-        ENB_IPV4_ADDRESS_FOR_X2C                 = "127.0.0.2/24";
+        
+        ENB_IPV4_ADDRESS_FOR_X2C                 = "192.168.12.188/24";
         ENB_PORT_FOR_X2C                         = 36422; # Spec 36422
+        
     };
   }
 );
@@ -196,7 +206,7 @@ eNBs =
 MACRLCs = (
 	{
 	num_cc = 1;
-      	local_s_if_name  = "lo";			  
+      	local_s_if_name  = "lo:";			  
       	remote_s_address = "127.0.0.1";
     	local_s_address  = "127.0.0.2"; 
     	local_s_portc    = 50001;	
diff --git a/targets/RT/USER/lte-enb.c b/targets/RT/USER/lte-enb.c
index cc25ca088535774423a57d2f57bbe069f52bf740..9db1684bd27b7c351d7459d0319d6ab649f3608d 100644
--- a/targets/RT/USER/lte-enb.c
+++ b/targets/RT/USER/lte-enb.c
@@ -164,6 +164,10 @@ static inline int rxtx(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc, char *thread_name
 
   // *******************************************************************
 
+#if defined(PRE_SCD_THREAD)
+    RU_t *ru = RC.ru[0];
+#endif
+
   if (nfapi_mode == 1) {
     // I am a PNF and I need to let nFAPI know that we have a (sub)frame tick
     uint16_t frame = proc->frame_rx;
@@ -218,6 +222,40 @@ static inline int rxtx(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc, char *thread_name
 
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ULSCH_SCHEDULER, 1 );
 
+#if defined(PRE_SCD_THREAD)
+    if (nfapi_mode == 2){
+      new_dlsch_ue_select_tbl_in_use = dlsch_ue_select_tbl_in_use;
+      dlsch_ue_select_tbl_in_use = !dlsch_ue_select_tbl_in_use;
+
+// L2-emulator can work only one eNB.
+//      memcpy(&pre_scd_eNB_UE_stats,&RC.mac[ru->eNB_list[0]->Mod_id]->UE_list.eNB_UE_stats, sizeof(eNB_UE_STATS)*MAX_NUM_CCs*NUMBER_OF_UE_MAX);
+//      memcpy(&pre_scd_activeUE, &RC.mac[ru->eNB_list[0]->Mod_id]->UE_list.active, sizeof(boolean_t)*NUMBER_OF_UE_MAX);
+      memcpy(&pre_scd_eNB_UE_stats,&RC.mac[0]->UE_list.eNB_UE_stats, sizeof(eNB_UE_STATS)*MAX_NUM_CCs*NUMBER_OF_UE_MAX);
+      memcpy(&pre_scd_activeUE, &RC.mac[0]->UE_list.active, sizeof(boolean_t)*NUMBER_OF_UE_MAX);
+
+      if (pthread_mutex_lock(&ru->proc.mutex_pre_scd)!= 0) {
+          LOG_E( PHY, "[eNB] error locking proc mutex for eNB pre scd\n");
+          exit_fun("error locking mutex_time");
+      }
+
+      ru->proc.instance_pre_scd++;
+
+      if (ru->proc.instance_pre_scd == 0) {
+          if (pthread_cond_signal(&ru->proc.cond_pre_scd) != 0) {
+              LOG_E( PHY, "[eNB] ERROR pthread_cond_signal for eNB pre scd\n" );
+              exit_fun( "ERROR pthread_cond_signal cond_pre_scd" );
+          }
+      }else{
+          LOG_E( PHY, "[eNB] frame %d subframe %d rxtx busy instance_pre_scd %d\n",
+                 proc->frame_rx,proc->subframe_rx,ru->proc.instance_pre_scd );
+      }
+
+      if (pthread_mutex_unlock(&ru->proc.mutex_pre_scd)!= 0) {
+          LOG_E( PHY, "[eNB] error unlocking mutex_pre_scd mutex for eNB pre scd\n");
+          exit_fun("error unlocking mutex_pre_scd");
+      }
+    }
+#endif
 
   pthread_mutex_lock(&eNB->UL_INFO_mutex);
   eNB->UL_INFO.frame     = proc->frame_rx;
@@ -906,6 +944,12 @@ void init_eNB_proc(int inst) {
     if ((get_thread_parallel_conf() == PARALLEL_RU_L1_SPLIT || get_thread_parallel_conf() == PARALLEL_RU_L1_TRX_SPLIT) && nfapi_mode!=2) {
       pthread_create( &L1_proc->pthread, attr0, L1_thread, proc );
       pthread_create( &L1_proc_tx->pthread, attr1, L1_thread_tx, proc);
+    } else if (nfapi_mode == 2) { // this is neccesary in VNF or L2 FAPI simulator.
+      // Original Code from Fujitsu w/ old structure/field name
+      //pthread_create( &proc_rxtx[0].pthread_rxtx, attr0, eNB_thread_rxtx, &proc_rxtx[0] );
+      //pthread_create( &proc_rxtx[1].pthread_rxtx, attr1, eNB_thread_rxtx, &proc_rxtx[1] );
+      pthread_create( &L1_proc->pthread, attr0, L1_thread, L1_proc );
+      pthread_create( &L1_proc_tx->pthread, attr1, L1_thread, L1_proc_tx);
     }
 
     pthread_create( &proc->pthread_prach, attr_prach, eNB_thread_prach, eNB );
diff --git a/targets/RT/USER/lte-ru.c b/targets/RT/USER/lte-ru.c
index 1ad543d152513145a1c8206f3ce5fe34e2de1494..0583c689e66c85ab1e48ce0fe9cb2c6184e46eac 100644
--- a/targets/RT/USER/lte-ru.c
+++ b/targets/RT/USER/lte-ru.c
@@ -118,7 +118,11 @@ static int DEFENBS[] = {0};
 #include "pdcp.h"
 
 extern volatile int                    oai_exit;
-
+extern int emulate_rf;
+extern int numerology;
+extern clock_source_t clock_source;
+extern uint8_t dlsch_ue_select_tbl_in_use;
+extern uint8_t nfapi_mode;
 
 extern PARALLEL_CONF_t get_thread_parallel_conf(void);
 extern WORKER_CONF_t   get_thread_worker_conf(void);
@@ -141,6 +145,11 @@ int connect_rau(RU_t *ru);
 
 extern uint16_t sf_ahead;
 
+#if defined(PRE_SCD_THREAD)
+void init_ru_vnf(void);
+#endif
+
+
 /*************************************************************/
 /* Functions to attach and configure RRU                     */
 
@@ -1943,7 +1952,12 @@ void* pre_scd_thread( void* param ){
     int                     CC_id;
     int                     Mod_id;
     RU_t               *ru      = (RU_t*)param;
-    Mod_id = ru->eNB_list[0]->Mod_id;
+
+    // L2-emulator can work only one eNB
+    if( nfapi_mode == 2)
+       Mod_id = 0;
+    else 
+       Mod_id = ru->eNB_list[0]->Mod_id;
 
     frame = 0;
     subframe = 4;
@@ -2823,6 +2837,114 @@ void stop_RU(int nb_ru)
   }
 }
 
+//Some of the member of ru pointer is used in pre_scd.
+//This funtion is for initializing ru pointer for L2 FAPI simulator.
+#if defined(PRE_SCD_THREAD)
+void init_ru_vnf(void) {
+  
+  int ru_id;
+  RU_t *ru;
+  RU_proc_t *proc;
+//  PHY_VARS_eNB *eNB0= (PHY_VARS_eNB *)NULL;
+  int i;
+  int CC_id;
+
+
+  dlsch_ue_select_tbl_in_use = 1;
+
+
+  // create status mask
+  RC.ru_mask = 0;
+  pthread_mutex_init(&RC.ru_mutex,NULL);
+  pthread_cond_init(&RC.ru_cond,NULL);
+
+  // read in configuration file)
+  printf("configuring RU from file\n");
+  RCconfig_RU();
+  LOG_I(PHY,"number of L1 instances %d, number of RU %d, number of CPU cores %d\n",RC.nb_L1_inst,RC.nb_RU,get_nprocs());
+
+  if (RC.nb_CC != 0)
+    for (i=0;i<RC.nb_L1_inst;i++) 
+      for (CC_id=0;CC_id<RC.nb_CC[i];CC_id++) RC.eNB[i][CC_id]->num_RU=0;
+
+  LOG_D(PHY,"Process RUs RC.nb_RU:%d\n",RC.nb_RU);
+  for (ru_id=0;ru_id<RC.nb_RU;ru_id++) {
+    LOG_D(PHY,"Process RC.ru[%d]\n",ru_id);
+    ru               = RC.ru[ru_id];
+//    ru->rf_config_file = rf_config_file;
+    ru->idx          = ru_id;              
+    ru->ts_offset    = 0;
+    // use eNB_list[0] as a reference for RU frame parameters
+    // NOTE: multiple CC_id are not handled here yet!
+
+    if (ru->num_eNB > 0) {
+//      LOG_D(PHY, "%s() RC.ru[%d].num_eNB:%d ru->eNB_list[0]:%p RC.eNB[0][0]:%p rf_config_file:%s\n", __FUNCTION__, ru_id, ru->num_eNB, ru->eNB_list[0], RC.eNB[0][0], ru->rf_config_file);
+
+      if (ru->eNB_list[0] == 0)
+      {
+        LOG_E(PHY,"%s() DJP - ru->eNB_list ru->num_eNB are not initialized - so do it manually\n", __FUNCTION__);
+        ru->eNB_list[0] = RC.eNB[0][0];
+        ru->num_eNB=1;
+      //
+      // DJP - feptx_prec() / feptx_ofdm() parses the eNB_list (based on num_eNB) and copies the txdata_F to txdata in RU
+      //
+      }
+      else
+      {
+        LOG_E(PHY,"DJP - delete code above this %s:%d\n", __FILE__, __LINE__);
+      }
+    }
+
+// frame_parms is not used in L2 FAPI simulator
+/*
+    eNB0             = ru->eNB_list[0];
+    LOG_D(PHY, "RU FUnction:%d ru->if_south:%d\n", ru->function, ru->if_south);
+    LOG_D(PHY, "eNB0:%p\n", eNB0);
+    if (eNB0)
+    {
+      if ((ru->function != NGFI_RRU_IF5) && (ru->function != NGFI_RRU_IF4p5))
+        AssertFatal(eNB0!=NULL,"eNB0 is null!\n");
+
+      if (eNB0) {
+        LOG_I(PHY,"Copying frame parms from eNB %d to ru %d\n",eNB0->Mod_id,ru->idx);
+        memcpy((void*)&ru->frame_parms,(void*)&eNB0->frame_parms,sizeof(LTE_DL_FRAME_PARMS));
+
+        // attach all RU to all eNBs in its list/
+        LOG_D(PHY,"ru->num_eNB:%d eNB0->num_RU:%d\n", ru->num_eNB, eNB0->num_RU);
+        for (i=0;i<ru->num_eNB;i++) {
+          eNB0 = ru->eNB_list[i];
+          eNB0->RU_list[eNB0->num_RU++] = ru;
+        }
+      }
+    }
+*/
+    LOG_I(PHY,"Initializing RRU descriptor %d : (%s,%s,%d)\n",ru_id,ru_if_types[ru->if_south],eNB_timing[ru->if_timing],ru->function);
+
+//    set_function_spec_param(ru);
+    LOG_I(PHY,"Starting ru_thread %d\n",ru_id);
+
+//    init_RU_proc(ru);
+  
+    proc = &ru->proc;
+    memset((void*)proc,0,sizeof(RU_proc_t));
+
+    proc->instance_pre_scd = -1;
+    pthread_mutex_init( &proc->mutex_pre_scd, NULL);
+    pthread_cond_init( &proc->cond_pre_scd, NULL);
+    pthread_create(&proc->pthread_pre_scd, NULL, pre_scd_thread, (void*)ru);
+    pthread_setname_np(proc->pthread_pre_scd, "pre_scd_thread");
+
+  } // for ru_id
+  
+
+
+  //  sleep(1);
+  LOG_D(HW,"[lte-softmodem.c] RU threads created\n");
+  
+
+}
+#endif
+
 
 /* --------------------------------------------------------*/
 /* from here function to use configuration module          */
diff --git a/targets/RT/USER/lte-softmodem-common.c b/targets/RT/USER/lte-softmodem-common.c
index 7e1235b3103b8e4b35cd6d62ca2aa386c61dc694..814800ccfcb6bb1572197d856fba2cd79cc841d6 100644
--- a/targets/RT/USER/lte-softmodem-common.c
+++ b/targets/RT/USER/lte-softmodem-common.c
@@ -39,67 +39,58 @@ char *parallel_config=NULL;
 char *worker_config=NULL;
 
 uint64_t get_softmodem_optmask(void) {
-     return softmodem_params.optmask;
+  return softmodem_params.optmask;
 }
 
 uint64_t set_softmodem_optmask(uint64_t bitmask) {
-     softmodem_params.optmask = softmodem_params.optmask | bitmask;
-     return softmodem_params.optmask;
+  softmodem_params.optmask = softmodem_params.optmask | bitmask;
+  return softmodem_params.optmask;
 }
 
-softmodem_params_t* get_softmodem_params(void) {
-     return &softmodem_params;
+softmodem_params_t *get_softmodem_params(void) {
+  return &softmodem_params;
 }
 
-void get_common_options(void)
-{
-
-
-uint32_t online_log_messages;
-uint32_t glog_level ;
-uint32_t start_telnetsrv;
-uint32_t noS1;
-uint32_t nokrnmod;
-uint32_t nonbiot;
-paramdef_t cmdline_params[] =CMDLINE_PARAMS_DESC ;
-paramdef_t cmdline_logparams[] =CMDLINE_LOGPARAMS_DESC ;
-
-
-
-  config_process_cmdline( cmdline_params,sizeof(cmdline_params)/sizeof(paramdef_t),NULL); 
-
-  if (strlen(in_path) > 0) {
-      opt_type = OPT_PCAP;
-      opt_enabled=1;
-      printf("Enabling OPT for PCAP  with the following file %s \n",in_path);
-  }
-  if (strlen(in_ip) > 0) {
-      opt_enabled=1;
-      opt_type = OPT_WIRESHARK;
-      printf("Enabling OPT for wireshark for local interface");
-  }
-
-  config_process_cmdline( cmdline_logparams,sizeof(cmdline_logparams)/sizeof(paramdef_t),NULL);
+void get_common_options(void) {
+  uint32_t online_log_messages;
+  uint32_t glog_level ;
+  uint32_t start_telnetsrv;
+  uint32_t noS1;
+  uint32_t nokrnmod;
+  uint32_t nonbiot;
+  paramdef_t cmdline_params[] =CMDLINE_PARAMS_DESC ;
+  paramdef_t cmdline_logparams[] =CMDLINE_LOGPARAMS_DESC ;
+  checkedparam_t cmdline_log_CheckParams[] = CMDLINE_LOGPARAMS_CHECK_DESC;
+  config_get( cmdline_params,sizeof(cmdline_params)/sizeof(paramdef_t),NULL);
+  config_set_checkfunctions(cmdline_logparams, cmdline_log_CheckParams,
+                            sizeof(cmdline_logparams)/sizeof(paramdef_t));
+  config_get( cmdline_logparams,sizeof(cmdline_logparams)/sizeof(paramdef_t),NULL);
 
   if(config_isparamset(cmdline_logparams,CMDLINE_ONLINELOG_IDX)) {
-      set_glog_onlinelog(online_log_messages);
+    set_glog_onlinelog(online_log_messages);
   }
+
   if(config_isparamset(cmdline_logparams,CMDLINE_GLOGLEVEL_IDX)) {
-      set_glog(glog_level);
+    set_glog(glog_level);
   }
+
   if (start_telnetsrv) {
-     load_module_shlib("telnetsrv",NULL,0,NULL);
+    load_module_shlib("telnetsrv",NULL,0,NULL);
   }
 
   if (noS1) {
-     set_softmodem_optmask(SOFTMODEM_NOS1_BIT);
+    set_softmodem_optmask(SOFTMODEM_NOS1_BIT);
   }
+
   if (nokrnmod) {
-     set_softmodem_optmask(SOFTMODEM_NOKRNMOD_BIT);
-  } 
+    set_softmodem_optmask(SOFTMODEM_NOKRNMOD_BIT);
+  }
+
   if (nonbiot) {
-     set_softmodem_optmask(SOFTMODEM_NONBIOT_BIT);
-  } 
+    set_softmodem_optmask(SOFTMODEM_NONBIOT_BIT);
+  }
+
   if(parallel_config != NULL) set_parallel_conf(parallel_config);
+
   if(worker_config != NULL)   set_worker_conf(worker_config);
 }
diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c
index 2ded10d3b05cf5f4cade0dce818c4c484a1d1f1a..b349b06a06b3cfae572bd77bfaa53344f3d6ed45 100644
--- a/targets/RT/USER/lte-softmodem.c
+++ b/targets/RT/USER/lte-softmodem.c
@@ -127,10 +127,7 @@ int config_sync_var=-1;
 uint16_t runtime_phy_rx[29][6]; // SISO [MCS 0-28][RBs 0-5 : 6, 15, 25, 50, 75, 100]
 uint16_t runtime_phy_tx[29][6]; // SISO [MCS 0-28][RBs 0-5 : 6, 15, 25, 50, 75, 100]
 
-#if defined(ENABLE_ITTI)
-  volatile int             start_eNB = 0;
-  volatile int             start_UE = 0;
-#endif
+
 volatile int             oai_exit = 0;
 
 uint32_t                 downlink_frequency[MAX_NUM_CCs][4];
@@ -305,9 +302,6 @@ void exit_function(const char *file, const char *function, const int line, const
   }
 
   sleep(1); //allow lte-softmodem threads to exit first
-#if defined(ENABLE_ITTI)
-  itti_terminate_tasks (TASK_UNKNOWN);
-#endif
   exit(1);
 }
 
@@ -382,61 +376,6 @@ static void *scope_thread(void *arg) {
 #endif
 
 
-
-
-#if defined(ENABLE_ITTI)
-void *l2l1_task(void *arg) {
-  MessageDef *message_p = NULL;
-  int         result;
-  itti_set_task_real_time(TASK_L2L1);
-  itti_mark_task_ready(TASK_L2L1);
-  /* Wait for the initialize message */
-  printf("Wait for the ITTI initialize message\n");
-
-  while (1) {
-    itti_receive_msg (TASK_L2L1, &message_p);
-
-    switch (ITTI_MSG_ID(message_p)) {
-      case INITIALIZE_MESSAGE:
-        /* Start eNB thread */
-        LOG_D(PHY, "L2L1 TASK received %s\n", ITTI_MSG_NAME(message_p));
-        start_eNB = 1;
-        break;
-
-      case TERMINATE_MESSAGE:
-        LOG_W(PHY, " *** Exiting L2L1 thread\n");
-        oai_exit=1;
-        start_eNB = 0;
-        itti_exit_task ();
-        break;
-
-      case ACTIVATE_MESSAGE:
-        start_UE = 1;
-        break;
-
-      case DEACTIVATE_MESSAGE:
-        start_UE = 0;
-        break;
-
-      case MESSAGE_TEST:
-        printf("Received %s\n", ITTI_MSG_NAME(message_p));
-        break;
-
-      default:
-        printf("Received unexpected message %s\n", ITTI_MSG_NAME(message_p));
-        break;
-    }
-
-    result = itti_free (ITTI_MSG_ORIGIN_ID(message_p), message_p);
-    AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
-    message_p = NULL;
-  };
-
-  return NULL;
-}
-#endif
-
-
 static void get_options(void) {
   CONFIG_SETRTFLAG(CONFIG_NOEXITONHELP);
   get_common_options();
@@ -449,7 +388,7 @@ static void get_options(void) {
     NB_eNB_INST = RC.nb_inst;
     printf("Configuration: nb_rrc_inst %d, nb_L1_inst %d, nb_ru %d\n",NB_eNB_INST,RC.nb_L1_inst,RC.nb_RU);
 
-    if (!SOFTMODEM_NONBIOT) {
+    if (!IS_SOFTMODEM_NONBIOT) {
       load_NB_IoT();
       printf("               nb_nbiot_rrc_inst %d, nb_nbiot_L1_inst %d, nb_nbiot_macrlc_inst %d\n",
              RC.nb_nb_iot_rrc_inst, RC.nb_nb_iot_L1_inst, RC.nb_nb_iot_macrlc_inst);
@@ -505,7 +444,8 @@ void set_default_frame_parms(LTE_DL_FRAME_PARMS *frame_parms[MAX_NUM_CCs]) {
 }
 
 void wait_RUs(void) {
-  LOG_I(PHY,"Waiting for RUs to be configured ... RC.ru_mask:%02lx\n", RC.ru_mask);
+  /* do not modify the following LOG_UI message, which is used by CI */
+  LOG_UI(ENB_APP,"Waiting for RUs to be configured ... RC.ru_mask:%02lx\n", RC.ru_mask);
   // wait for all RUs to be configured over fronthaul
   pthread_mutex_lock(&RC.ru_mutex);
 
@@ -567,7 +507,6 @@ int stop_L1L2(module_id_t enb_id) {
 
   /* these tasks need to pick up new configuration */
   terminate_task(enb_id, TASK_ENB_APP, TASK_RRC_ENB);
-  terminate_task(enb_id, TASK_ENB_APP, TASK_L2L1);
   oai_exit = 1;
   LOG_I(ENB_APP, "calling kill_RU_proc() for instance %d\n", enb_id);
   kill_RU_proc(RC.ru[enb_id]);
@@ -619,13 +558,6 @@ int restart_L1L2(module_id_t enb_id) {
     LOG_I(RRC, "Re-created task for RRC eNB successfully\n");
   }
 
-  if (itti_create_task (TASK_L2L1, l2l1_task, NULL) < 0) {
-    LOG_E(PDCP, "Create task for L2L1 failed\n");
-    return -1;
-  } else {
-    LOG_I(PDCP, "Re-created task for L2L1 successfully\n");
-  }
-
   /* pass a reconfiguration request which will configure everything down to
    * RC.eNB[i][j]->frame_parms, too */
   msg_p = itti_alloc_new_message(TASK_ENB_APP, RRC_CONFIGURATION_REQ);
@@ -678,7 +610,6 @@ int main( int argc, char **argv ) {
   set_latency_target();
   logInit();
   printf("Reading in command-line options\n");
-  CONFIG_SETRTFLAG(CONFIG_NOCHECKUNKOPT);
   get_options ();
 
   if (CONFIG_ISFLAGSET(CONFIG_ABORT) ) {
@@ -689,14 +620,6 @@ int main( int argc, char **argv ) {
 #if T_TRACER
   T_Config_Init();
 #endif
-  ret=config_check_unknown_cmdlineopt(NULL);
-
-  if (ret != 0) {
-    LOG_E(ENB_APP, "%i unknown options in command line\n",ret);
-    exit_fun("");
-  }
-
-  CONFIG_CLEARRTFLAG(CONFIG_NOCHECKUNKOPT);
   //randominit (0);
   set_taus_seed (0);
   printf("configuring for RAU/RRU\n");
@@ -717,12 +640,7 @@ int main( int argc, char **argv ) {
 
   MSC_INIT(MSC_E_UTRAN, THREAD_MAX+TASK_MAX);
 #endif
-
-  if (opt_type != OPT_NONE) {
-    if (init_opt(in_path, in_ip) == -1)
-      LOG_E(OPT,"failed to run OPT \n");
-  }
-
+  init_opt();
 #ifdef PDCP_USE_NETLINK
   printf("PDCP netlink\n");
   netlink_init();
@@ -879,8 +797,14 @@ int main( int argc, char **argv ) {
 
   printf("NFAPI MODE:%s\n", nfapi_mode_str);
 
-  if (nfapi_mode==2) // VNF
+
+if (nfapi_mode==2) {// VNF
+#if defined(PRE_SCD_THREAD)
+    init_ru_vnf();  // ru pointer is necessary for pre_scd.
+#endif
     wait_nfapi_init("main?");
+  }
+
 
   printf("START MAIN THREADS\n");
   // start the main threads
@@ -896,13 +820,16 @@ int main( int argc, char **argv ) {
 
   printf("wait_eNBs()\n");
   wait_eNBs();
+
   printf("About to Init RU threads RC.nb_RU:%d\n", RC.nb_RU);
 
-  if (RC.nb_RU >0) {
+  // RU thread and some L1 procedure aren't necessary in VNF or L2 FAPI simulator.
+  // but RU thread deals with pre_scd and this is necessary in VNF and simulator.
+  // some initialization is necessary and init_ru_vnf do this.
+  if (RC.nb_RU >0 && nfapi_mode != 2) {
     printf("Initializing RU threads\n");
     init_RU(get_softmodem_params()->rf_config_file);
-
-    for (ru_id=0; ru_id<RC.nb_RU; ru_id++) {
+    for (ru_id=0;ru_id<RC.nb_RU;ru_id++) {
       RC.ru[ru_id]->rf_map.card=0;
       RC.ru[ru_id]->rf_map.chain=CC_id+(get_softmodem_params()->chain_offset);
     }
@@ -938,13 +865,7 @@ int main( int argc, char **argv ) {
   sync_var=0;
   pthread_cond_broadcast(&sync_cond);
   pthread_mutex_unlock(&sync_mutex);
-  ret=config_check_unknown_cmdlineopt(CONFIG_CHECKALLSECTIONS);
-
-  if (ret != 0) {
-    LOG_E(ENB_APP, "%i unknown options in command line (invalid section name)\n",ret);
-    exit_fun("");
-  }
-
+  config_check_unknown_cmdlineopt(CONFIG_CHECKALLSECTIONS);
   // wait for end of program
   printf("TYPE <CTRL-C> TO TERMINATE\n");
   //getchar();
@@ -999,9 +920,7 @@ int main( int argc, char **argv ) {
   }
 
   free_lte_top();
-  printf("About to call end_configmodule() from %s() %s:%d\n", __FUNCTION__, __FILE__, __LINE__);
   end_configmodule();
-  printf("Called end_configmodule() from %s() %s:%d\n", __FUNCTION__, __FILE__, __LINE__);
   pthread_cond_destroy(&sync_cond);
   pthread_mutex_destroy(&sync_mutex);
   pthread_cond_destroy(&nfapi_sync_cond);
@@ -1020,9 +939,7 @@ int main( int argc, char **argv ) {
     }
   }
 
-  if (opt_enabled == 1)
-    terminate_opt();
-
+  terminate_opt();
   logClean();
   printf("Bye.\n");
   return 0;
diff --git a/targets/RT/USER/lte-softmodem.h b/targets/RT/USER/lte-softmodem.h
index 6d182b16cfd9e3513dc8301d49ae8ceaeb7e0174..85ee4765f09b283577845ec4e9a7e6a0355d263c 100644
--- a/targets/RT/USER/lte-softmodem.h
+++ b/targets/RT/USER/lte-softmodem.h
@@ -35,12 +35,12 @@
 #include "flexran_agent.h"
 
 #if defined(ENABLE_ITTI)
-#if defined(ENABLE_USE_MME)
-#include "s1ap_eNB.h"
-#ifdef PDCP_USE_NETLINK
-#include "SIMULATION/ETH_TRANSPORT/proto.h"
-#endif
-#endif
+  #if defined(ENABLE_USE_MME)
+    #include "s1ap_eNB.h"
+    #ifdef PDCP_USE_NETLINK
+      #include "SIMULATION/ETH_TRANSPORT/proto.h"
+    #endif
+  #endif
 #endif
 
 /* help strings definition for command line options, used in CMDLINE_XXX_DESC macros and printed when -h option is used */
@@ -60,14 +60,14 @@
 #define CONFIG_HLP_UENANTR       "set UE number of rx antennas\n"
 #define CONFIG_HLP_UENANTT       "set UE number of tx antennas\n"
 #define CONFIG_HLP_UESCAN        "set UE to scan around carrier\n"
-#define CONFIG_HLP_DUMPFRAME     "dump UE received frame to rxsig_frame0.dat and exit\n" 
+#define CONFIG_HLP_DUMPFRAME     "dump UE received frame to rxsig_frame0.dat and exit\n"
 #define CONFIG_HLP_DLSHIFT       "dynamic shift for LLR compuation for TM3/4 (default 0)\n"
 #define CONFIG_HLP_UELOOP        "get softmodem (UE) to loop through memory instead of acquiring from HW\n"
 #define CONFIG_HLP_PHYTST        "test UE phy layer, mac disabled\n"
-#define CONFIG_HLP_DMAMAP        "sets flag for improved EXMIMO UE performance\n"  
+#define CONFIG_HLP_DMAMAP        "sets flag for improved EXMIMO UE performance\n"
 #define CONFIG_HLP_CLK           "tells hardware to use a clock reference (0:internal, 1:external, 2:gpsdo)\n"
-#define CONFIG_HLP_USIM          "use XOR autentication algo in case of test usim mode\n" 
-#define CONFIG_HLP_NOSNGLT       "Disables single-thread mode in lte-softmodem\n" 
+#define CONFIG_HLP_USIM          "use XOR autentication algo in case of test usim mode\n"
+#define CONFIG_HLP_NOSNGLT       "Disables single-thread mode in lte-softmodem\n"
 #define CONFIG_HLP_TADV          "Set timing_advance\n"
 #define CONFIG_HLP_DLF           "Set the downlink frequency for all component carriers\n"
 #define CONFIG_HLP_CHOFF         "Channel id offset\n"
@@ -76,16 +76,14 @@
 #define CONFIG_HLP_ITTIL         "Generate ITTI analyzser logs (similar to wireshark logs but with more details)\n"
 #define CONFIG_HLP_DLMCS         "Set the maximum downlink MCS\n"
 #define CONFIG_HLP_STMON         "Enable processing timing measurement of lte softmodem on per subframe basis \n"
-#define CONFIG_HLP_PRB           "Set the PRB, valid values: 6, 25, 50, 100  \n"    
+#define CONFIG_HLP_PRB           "Set the PRB, valid values: 6, 25, 50, 100  \n"
 #define CONFIG_HLP_EMULIFACE     "Set the interface name for the multicast transport for emulation mode (e.g. eth0, lo, etc.)  \n"
-//#define CONFIG_HLP_NUMUES		 "Set the number of UEs for the emulation"
-#define CONFIG_HLP_MSLOTS        "Skip the missed slots/subframes \n"    
+//#define CONFIG_HLP_NUMUES    "Set the number of UEs for the emulation"
+#define CONFIG_HLP_MSLOTS        "Skip the missed slots/subframes \n"
 #define CONFIG_HLP_ULMCS         "Set the maximum uplink MCS\n"
 #define CONFIG_HLP_TDD           "Set hardware to TDD mode (default: FDD). Used only with -U (otherwise set in config file).\n"
 #define CONFIG_HLP_SNR           "Set average SNR in dB (for --siml1 option)\n"
 #define CONFIG_HLP_UE            "Set the lte softmodem as a UE\n"
-#define CONFIG_HLP_L2MONW        "Enable L2 wireshark messages on localhost \n"
-#define CONFIG_HLP_L2MONP        "Enable L2 pcap  messages on localhost \n"
 #define CONFIG_HLP_TQFS          "Apply three-quarter of sampling frequency, 23.04 Msps to reduce the data rate on USB/PCIe transfers (only valid for 20 MHz)\n"
 #define CONFIG_HLP_TPORT         "tracer port\n"
 #define CONFIG_HLP_NOTWAIT       "don't wait for tracer, start immediately\n"
@@ -103,7 +101,7 @@
 #define CONFIG_HLP_USRP_CLK_SRC              "USRP clock source: 'internal' or 'external'\n"
 
 /***************************************************************************************************************************************/
-/* command line options definitions, CMDLINE_XXXX_DESC macros are used to initialize paramdef_t arrays which are then used as argument 
+/* command line options definitions, CMDLINE_XXXX_DESC macros are used to initialize paramdef_t arrays which are then used as argument
    when calling config_get or config_getlist functions                                                                                 */
 
 
@@ -112,15 +110,15 @@
 /*   optname                     helpstr                paramflags                      XXXptr        defXXXval         type       numelt   */
 /*------------------------------------------------------------------------------------------------------------------------------------------*/
 #define CMDLINE_UEMODEPARAMS_DESC {  \
-{"calib-ue-rx",                 CONFIG_HLP_CALUER,     0,		 iptr:&rx_input_level_dBm,   defintval:0,	 TYPE_INT,   0},    \
-{"calib-ue-rx-med",             CONFIG_HLP_CALUERM,    0,		 iptr:&rx_input_level_dBm,   defintval:0,	 TYPE_INT,   0},    \
-{"calib-ue-rx-byp",             CONFIG_HLP_CALUERB,    0,		 iptr:&rx_input_level_dBm,   defintval:0,	 TYPE_INT,   0},    \
-{"debug-ue-prach",              CONFIG_HLP_DBGUEPR,    PARAMFLAG_BOOL,   uptr:NULL,		     defuintval:1,	 TYPE_INT,   0},    \
-{"no-L2-connect",               CONFIG_HLP_NOL2CN,     PARAMFLAG_BOOL,   uptr:NULL,		     defuintval:1,	 TYPE_INT,   0},    \
-{"calib-prach-tx",              CONFIG_HLP_CALPRACH,   PARAMFLAG_BOOL,   uptr:NULL,		     defuintval:1,	 TYPE_INT,   0},    \
-{"loop-memory",                 CONFIG_HLP_UELOOP,     0,		 strptr:&loopfile,	     defstrval:"iqs.in", TYPE_STRING,0},    \
-{"ue-dump-frame",               CONFIG_HLP_DUMPFRAME,  PARAMFLAG_BOOL,   iptr:&dumpframe,	     defintval:0,	 TYPE_INT,   0},    \
-}  
+    {"calib-ue-rx",                 CONFIG_HLP_CALUER,     0,    iptr:&rx_input_level_dBm,   defintval:0,  TYPE_INT,   0},    \
+    {"calib-ue-rx-med",             CONFIG_HLP_CALUERM,    0,    iptr:&rx_input_level_dBm,   defintval:0,  TYPE_INT,   0},    \
+    {"calib-ue-rx-byp",             CONFIG_HLP_CALUERB,    0,    iptr:&rx_input_level_dBm,   defintval:0,  TYPE_INT,   0},    \
+    {"debug-ue-prach",              CONFIG_HLP_DBGUEPR,    PARAMFLAG_BOOL,   uptr:NULL,        defuintval:1,   TYPE_INT,   0},    \
+    {"no-L2-connect",               CONFIG_HLP_NOL2CN,     PARAMFLAG_BOOL,   uptr:NULL,        defuintval:1,   TYPE_INT,   0},    \
+    {"calib-prach-tx",              CONFIG_HLP_CALPRACH,   PARAMFLAG_BOOL,   uptr:NULL,        defuintval:1,   TYPE_INT,   0},    \
+    {"loop-memory",                 CONFIG_HLP_UELOOP,     0,    strptr:&loopfile,       defstrval:"iqs.in", TYPE_STRING,0},    \
+    {"ue-dump-frame",               CONFIG_HLP_DUMPFRAME,  PARAMFLAG_BOOL,   iptr:&dumpframe,      defintval:0,  TYPE_INT,   0},    \
+  }
 #define CMDLINE_CALIBUERX_IDX                   0
 #define CMDLINE_CALIBUERXMED_IDX                1
 #define CMDLINE_CALIBUERXBYP_IDX                2
@@ -138,41 +136,42 @@
 /*-------------------------------------------------------------------------------------------------------------------------------------------------------*/
 
 #define CMDLINE_UEPARAMS_DESC {  \
-{"siml1",                      CONFIG_HLP_SIML1,       PARAMFLAG_BOOL,  iptr:&simL1flag,                    defintval:0,          TYPE_INT,      0},   \
-{"U",			       CONFIG_HLP_NUMUE,       0,               u8ptr:&NB_UE_INST,                  defuintval:1,         TYPE_UINT,     0},   \
-{"ue-rxgain",        	       CONFIG_HLP_UERXG,       0,		dblptr:&(rx_gain[0][0]),	    defdblval:130,        TYPE_DOUBLE,   0},   \
-{"ue-rxgain-off",    	       CONFIG_HLP_UERXGOFF,    0,		dblptr:&rx_gain_off,		    defdblval:0,          TYPE_DOUBLE,   0},   \
-{"ue-txgain",        	       CONFIG_HLP_UETXG,       0,		dblptr:&(tx_gain[0][0]),	    defdblval:0,          TYPE_DOUBLE,   0},   \
-{"ue-nb-ant-rx",     	       CONFIG_HLP_UENANTR,     0,		u8ptr:&nb_antenna_rx,		    defuintval:1,         TYPE_UINT8,    0},   \
-{"ue-nb-ant-tx",     	       CONFIG_HLP_UENANTT,     0,		u8ptr:&nb_antenna_tx,		    defuintval:1,         TYPE_UINT8,    0},   \
-{"ue-scan-carrier",  	       CONFIG_HLP_UESCAN,      PARAMFLAG_BOOL,	iptr:&UE_scan_carrier,  	    defintval:0,          TYPE_INT,	 0},   \
-{"ue-max-power",     	       NULL,		       0,		iptr:&(tx_max_power[0]),	    defintval:23,         TYPE_INT,	 0},   \
-{"emul-iface",                 CONFIG_HLP_EMULIFACE,   0,               strptr:&emul_iface,		    defstrval:"lo",       TYPE_STRING,   100}, \
-{"L2-emul",                    NULL,  		       0,               u8ptr:&nfapi_mode,		    defuintval:3,         TYPE_UINT8,	 0},   \
-{"num-ues",     	       NULL,                   0,               u8ptr:&(NB_UE_INST),		    defuintval:1,         TYPE_UINT8,	 0},   \
-{"r"  ,                        CONFIG_HLP_PRB,         0,               u8ptr:&(frame_parms[0]->N_RB_DL),   defintval:25,         TYPE_UINT8,    0},   \
-{"dlsch-demod-shift",          CONFIG_HLP_DLSHIFT,     0,		iptr:(int32_t *)&dlsch_demod_shift, defintval:0,          TYPE_INT,	 0},   \
-{"usrp-args",                  CONFIG_HLP_USRP_ARGS,   0,               strptr:(char **)&usrp_args,         defstrval:"type=b200",TYPE_STRING,   0},   \
-{"usrp-clksrc",                CONFIG_HLP_USRP_CLK_SRC,0,               strptr:(char **)&usrp_clksrc,       defstrval:"internal", TYPE_STRING,   0},   \
-{"mmapped-dma",                CONFIG_HLP_DMAMAP,      PARAMFLAG_BOOL,  uptr:&mmapped_dma,                  defintval:0,          TYPE_INT,      0},   \
-{"clock",                      CONFIG_HLP_CLK,         0,               uptr:&clock_source,                 defintval:0,          TYPE_UINT,     0},   \
-{"s" ,                         CONFIG_HLP_SNR,         0,               iptr:&snr_dB,                       defintval:25,         TYPE_INT,      0},   \
-{"T" ,                         CONFIG_HLP_TDD,         PARAMFLAG_BOOL,  iptr:&tddflag,                      defintval:0,          TYPE_INT,      0},   \
-{"A",                          CONFIG_HLP_TADV,        0,               iptr:&(timingadv),                    defintval:0,          TYPE_INT,      0}    \
-}
+    {"siml1",                      CONFIG_HLP_SIML1,       PARAMFLAG_BOOL,  iptr:&simL1flag,                    defintval:0,          TYPE_INT,      0},   \
+    {"U",            CONFIG_HLP_NUMUE,       0,               u16ptr:&NB_UE_INST,                  defuintval:1,         TYPE_UINT16,     0},   \
+    {"ue-rxgain",                CONFIG_HLP_UERXG,       0,   dblptr:&(rx_gain[0][0]),      defdblval:130,        TYPE_DOUBLE,   0},   \
+    {"ue-rxgain-off",            CONFIG_HLP_UERXGOFF,    0,   dblptr:&rx_gain_off,        defdblval:0,          TYPE_DOUBLE,   0},   \
+    {"ue-txgain",                CONFIG_HLP_UETXG,       0,   dblptr:&(tx_gain[0][0]),      defdblval:0,          TYPE_DOUBLE,   0},   \
+    {"ue-nb-ant-rx",             CONFIG_HLP_UENANTR,     0,   u8ptr:&nb_antenna_rx,       defuintval:1,         TYPE_UINT8,    0},   \
+    {"ue-nb-ant-tx",             CONFIG_HLP_UENANTT,     0,   u8ptr:&nb_antenna_tx,       defuintval:1,         TYPE_UINT8,    0},   \
+    {"ue-scan-carrier",          CONFIG_HLP_UESCAN,      PARAMFLAG_BOOL,  iptr:&UE_scan_carrier,        defintval:0,          TYPE_INT,  0},   \
+    {"ue-max-power",             NULL,           0,   iptr:&(tx_max_power[0]),      defintval:23,         TYPE_INT,  0},   \
+    {"emul-iface",                 CONFIG_HLP_EMULIFACE,   0,               strptr:&emul_iface,       defstrval:"lo",       TYPE_STRING,   100}, \
+    {"L2-emul",                    NULL,             0,               u8ptr:&nfapi_mode,        defuintval:3,         TYPE_UINT8,  0},   \
+    {"num-ues",              NULL,                   0,               u16ptr:&(NB_UE_INST),        defuintval:1,         TYPE_UINT16,  0},   \
+    {"nums_ue_thread",             NULL,                   0,               u16ptr:&(NB_THREAD_INST),           defuintval:1,         TYPE_UINT16,   0},   \
+    {"r"  ,                        CONFIG_HLP_PRB,         0,               u8ptr:&(frame_parms[0]->N_RB_DL),   defintval:25,         TYPE_UINT8,    0},   \
+    {"dlsch-demod-shift",          CONFIG_HLP_DLSHIFT,     0,   iptr:(int32_t *)&dlsch_demod_shift, defintval:0,          TYPE_INT,  0},   \
+    {"usrp-args",                  CONFIG_HLP_USRP_ARGS,   0,               strptr:(char **)&usrp_args,         defstrval:"type=b200",TYPE_STRING,   0},   \
+    {"usrp-clksrc",                CONFIG_HLP_USRP_CLK_SRC,0,               strptr:(char **)&usrp_clksrc,       defstrval:"internal", TYPE_STRING,   0},   \
+    {"mmapped-dma",                CONFIG_HLP_DMAMAP,      PARAMFLAG_BOOL,  uptr:&mmapped_dma,                  defintval:0,          TYPE_INT,      0},   \
+    {"clock",                      CONFIG_HLP_CLK,         0,               uptr:&clock_source,                 defintval:0,          TYPE_UINT,     0},   \
+    {"s" ,                         CONFIG_HLP_SNR,         0,               iptr:&snr_dB,                       defintval:25,         TYPE_INT,      0},   \
+    {"T" ,                         CONFIG_HLP_TDD,         PARAMFLAG_BOOL,  iptr:&tddflag,                      defintval:0,          TYPE_INT,      0},   \
+    {"A",                          CONFIG_HLP_TADV,        0,               iptr:&(timingadv),                  defintval:0,          TYPE_INT,      0}    \
+  }
 
 /*-------------------------------------------------------------------------------------------------------------------------------------------------------*/
 /*                                            command line parameters specific to UE threads                                                             */
 /*   optname                     helpstr             paramflags                      XXXptr                  defXXXval            type          numelt   */
 /*-------------------------------------------------------------------------------------------------------------------------------------------------------*/
 #define CMDLINE_UETHREADSPARAMS_DESC {  \
-{"threadIQ",                NULL,                   0,                      iptr:&(threads.iq),                 defintval:1,                    TYPE_INT,       0},                     \
-{"threadOneSubframe",       NULL,                   0,                      iptr:&(threads.one),                defintval:1,                    TYPE_INT,       0},                     \
-{"threadTwoSubframe",       NULL,                   0,                      iptr:&(threads.two),                defintval:1,                    TYPE_INT,       0},                     \
-{"threadThreeSubframe",     NULL,                   0,                      iptr:&(threads.three),              defintval:1,                    TYPE_INT,       0},                     \
-{"threadSlot1ProcOne",      NULL,                   0,                      iptr:&(threads.slot1_proc_one),     defintval:1,                    TYPE_INT,       0},                     \
-{"threadSlot1ProcTwo",      NULL,                   0,                      iptr:&(threads.slot1_proc_two),     defintval:1,                    TYPE_INT,       0},                     \
-}
+    {"threadIQ",                NULL,                   0,                      iptr:&(threads.iq),                 defintval:1,                    TYPE_INT,       0},                     \
+    {"threadOneSubframe",       NULL,                   0,                      iptr:&(threads.one),                defintval:1,                    TYPE_INT,       0},                     \
+    {"threadTwoSubframe",       NULL,                   0,                      iptr:&(threads.two),                defintval:1,                    TYPE_INT,       0},                     \
+    {"threadThreeSubframe",     NULL,                   0,                      iptr:&(threads.three),              defintval:1,                    TYPE_INT,       0},                     \
+    {"threadSlot1ProcOne",      NULL,                   0,                      iptr:&(threads.slot1_proc_one),     defintval:1,                    TYPE_INT,       0},                     \
+    {"threadSlot1ProcTwo",      NULL,                   0,                      iptr:&(threads.slot1_proc_two),     defintval:1,                    TYPE_INT,       0},                     \
+  }
 
 #define DEFAULT_DLF 2680000000
 
@@ -191,28 +190,26 @@
 #define CLOCK_SOURCE        softmodem_params.clock_source
 #define USIM_TEST           softmodem_params.usim_test
 #define CMDLINE_PARAMS_DESC {  \
-{"rf-config-file",          CONFIG_HLP_RFCFGF,      0,                      strptr:(char **)&RF_CONFIG_FILE,    defstrval:NULL,                 TYPE_STRING,    sizeof(RF_CONFIG_FILE)}, \
-{"ulsch-max-errors",        CONFIG_HLP_ULMAXE,      0,                      uptr:&ULSCH_max_consecutive_errors, defuintval:0,                   TYPE_UINT,      0},                     \
-{"phy-test",                CONFIG_HLP_PHYTST,      PARAMFLAG_BOOL,         iptr:&PHY_TEST,                     defintval:0,                    TYPE_INT,       0},                     \
-{"usim-test",               CONFIG_HLP_USIM,        PARAMFLAG_BOOL,         u8ptr:&USIM_TEST,                   defintval:0,                    TYPE_UINT8,     0},                     \
-{"emulate-rf" ,             CONFIG_HLP_EMULATE_RF,  PARAMFLAG_BOOL,         iptr:&EMULATE_RF,                   defintval:0,                    TYPE_INT,       0},                     \
-{"clock",                   CONFIG_HLP_CLK,         0,                      uptr:&CLOCK_SOURCE,                 defintval:0,                    TYPE_UINT,      0},                     \
-{"wait-for-sync",           NULL,                   PARAMFLAG_BOOL,         iptr:&WAIT_FOR_SYNC,                defintval:0,                    TYPE_INT,       0},                     \
-{"single-thread-enable",    CONFIG_HLP_NOSNGLT,     PARAMFLAG_BOOL,         iptr:&SINGLE_THREAD_FLAG,           defintval:0,                    TYPE_INT,       0},                     \
-{"C" ,                      CONFIG_HLP_DLF,         0,                      uptr:&(downlink_frequency[0][0]),   defuintval:2680000000,          TYPE_UINT,      0},                     \
-{"a" ,                      CONFIG_HLP_CHOFF,       0,                      iptr:&CHAIN_OFFSET,                 defintval:0,                    TYPE_INT,       0},                     \
-{"d" ,                      CONFIG_HLP_SOFTS,       PARAMFLAG_BOOL,         uptr:(uint32_t *)&DO_FORMS,         defintval:0,                    TYPE_INT8,      0},                     \
-{"W" ,                      CONFIG_HLP_L2MONW,      0,                      strptr:(char **)&in_ip,             defstrval:"127.0.0.1",          TYPE_STRING,    sizeof(in_ip)},         \
-{"P" ,                      CONFIG_HLP_L2MONP,      0,                      strptr:(char **)&in_path,           defstrval:"/tmp/oai_opt.pcap",  TYPE_STRING,    sizeof(in_path)},       \
-{"q" ,                      CONFIG_HLP_STMON,       PARAMFLAG_BOOL,         iptr:&opp_enabled,                  defintval:0,                    TYPE_INT,       0},                     \
-{"S" ,                      CONFIG_HLP_MSLOTS,      PARAMFLAG_BOOL,         u8ptr:&exit_missed_slots,           defintval:1,                    TYPE_UINT8,     0},                     \
-{"numerology" ,             CONFIG_HLP_NUMEROLOGY,  PARAMFLAG_BOOL,         iptr:&NUMEROLOGY,                   defintval:0,                    TYPE_INT,       0},                     \
-{"parallel-config",         CONFIG_HLP_PARALLEL_CMD,0,                      strptr:(char **)&parallel_config,   defstrval:NULL,                 TYPE_STRING,    0},                     \
-{"worker-config",           CONFIG_HLP_WORKER_CMD,  0,                      strptr:(char **)&worker_config,     defstrval:NULL,                 TYPE_STRING,    0},                     \
-{"noS1",                    CONFIG_HLP_NOS1,        PARAMFLAG_BOOL,         uptr:&noS1,			        defintval:0,			TYPE_INT,	0},                     \
-{"nokrnmod",                CONFIG_HLP_NOKRNMOD,    PARAMFLAG_BOOL,         uptr:&nokrnmod,			defintval:0,			TYPE_INT,	0},                     \
-{"nbiot-disable",           CONFIG_HLP_DISABLNBIOT, PARAMFLAG_BOOL,         uptr:&nonbiot,			defuintval:0,                   TYPE_INT,       0},                     \
-}
+    {"rf-config-file",          CONFIG_HLP_RFCFGF,      0,                      strptr:(char **)&RF_CONFIG_FILE,    defstrval:NULL,                 TYPE_STRING,    sizeof(RF_CONFIG_FILE)}, \
+    {"ulsch-max-errors",        CONFIG_HLP_ULMAXE,      0,                      uptr:&ULSCH_max_consecutive_errors, defuintval:0,                   TYPE_UINT,      0},                     \
+    {"phy-test",                CONFIG_HLP_PHYTST,      PARAMFLAG_BOOL,         iptr:&PHY_TEST,                     defintval:0,                    TYPE_INT,       0},                     \
+    {"usim-test",               CONFIG_HLP_USIM,        PARAMFLAG_BOOL,         u8ptr:&USIM_TEST,                   defintval:0,                    TYPE_UINT8,     0},                     \
+    {"emulate-rf" ,             CONFIG_HLP_EMULATE_RF,  PARAMFLAG_BOOL,         iptr:&EMULATE_RF,                   defintval:0,                    TYPE_INT,       0},                     \
+    {"clock",                   CONFIG_HLP_CLK,         0,                      uptr:&CLOCK_SOURCE,                 defintval:0,                    TYPE_UINT,      0},                     \
+    {"wait-for-sync",           NULL,                   PARAMFLAG_BOOL,         iptr:&WAIT_FOR_SYNC,                defintval:0,                    TYPE_INT,       0},                     \
+    {"single-thread-enable",    CONFIG_HLP_NOSNGLT,     PARAMFLAG_BOOL,         iptr:&SINGLE_THREAD_FLAG,           defintval:0,                    TYPE_INT,       0},                     \
+    {"C" ,                      CONFIG_HLP_DLF,         0,                      uptr:&(downlink_frequency[0][0]),   defuintval:2680000000,          TYPE_UINT,      0},                     \
+    {"a" ,                      CONFIG_HLP_CHOFF,       0,                      iptr:&CHAIN_OFFSET,                 defintval:0,                    TYPE_INT,       0},                     \
+    {"d" ,                      CONFIG_HLP_SOFTS,       PARAMFLAG_BOOL,         uptr:(uint32_t *)&DO_FORMS,         defintval:0,                    TYPE_INT8,      0},                     \
+    {"q" ,                      CONFIG_HLP_STMON,       PARAMFLAG_BOOL,         iptr:&opp_enabled,                  defintval:0,                    TYPE_INT,       0},                     \
+    {"S" ,                      CONFIG_HLP_MSLOTS,      PARAMFLAG_BOOL,         u8ptr:&exit_missed_slots,           defintval:1,                    TYPE_UINT8,     0},                     \
+    {"numerology" ,             CONFIG_HLP_NUMEROLOGY,  PARAMFLAG_BOOL,         iptr:&NUMEROLOGY,                   defintval:0,                    TYPE_INT,       0},                     \
+    {"parallel-config",         CONFIG_HLP_PARALLEL_CMD,0,                      strptr:(char **)&parallel_config,   defstrval:NULL,                 TYPE_STRING,    0},                     \
+    {"worker-config",           CONFIG_HLP_WORKER_CMD,  0,                      strptr:(char **)&worker_config,     defstrval:NULL,                 TYPE_STRING,    0},                     \
+    {"noS1",                    CONFIG_HLP_NOS1,        PARAMFLAG_BOOL,         uptr:&noS1,             defintval:0,      TYPE_INT, 0},                     \
+    {"nokrnmod",                CONFIG_HLP_NOKRNMOD,    PARAMFLAG_BOOL,         uptr:&nokrnmod,     defintval:0,      TYPE_INT, 0},                     \
+    {"nbiot-disable",           CONFIG_HLP_DISABLNBIOT, PARAMFLAG_BOOL,         uptr:&nonbiot,      defuintval:0,                   TYPE_INT,       0},                     \
+  }
 
 #define CONFIG_HLP_FLOG          "Enable online log \n"
 #define CONFIG_HLP_LOGL          "Set the global log level, valide options: (4:trace, 3:debug, 2:info, 1:warn, (0:error))\n"
@@ -224,17 +221,24 @@
 /*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
 #define START_MSC          softmodem_params.start_msc
 #define CMDLINE_LOGPARAMS_DESC {  \
-{"R" ,  		  	 CONFIG_HLP_FLOG,	0,                uptr:&online_log_messages,		defintval:1,			   TYPE_INT,	  0},			   \
-{"g" ,  		  	 CONFIG_HLP_LOGL,	0,		  uptr:&glog_level,			defintval:0,			   TYPE_UINT,     0},			   \
-{"telnetsrv",    		 CONFIG_HLP_TELN,	PARAMFLAG_BOOL,	  uptr:&start_telnetsrv,		defintval:0,			   TYPE_UINT,     0},			   \
-{"msc",    		         CONFIG_HLP_MSC,	PARAMFLAG_BOOL,	  uptr:&START_MSC,		        defintval:0,			   TYPE_UINT,     0},	                   \
-}
-#define CMDLINE_ONLINELOG_IDX     0 
+    {"R" ,           CONFIG_HLP_FLOG, 0,                uptr:&online_log_messages,    defintval:1,         TYPE_INT,    0},        \
+    {"g" ,           CONFIG_HLP_LOGL, 0,      uptr:&glog_level,     defintval:0,         TYPE_UINT,     0},        \
+    {"telnetsrv",        CONFIG_HLP_TELN, PARAMFLAG_BOOL,   uptr:&start_telnetsrv,    defintval:0,         TYPE_UINT,     0},        \
+    {"msc",                CONFIG_HLP_MSC,  PARAMFLAG_BOOL,   uptr:&START_MSC,            defintval:0,         TYPE_UINT,     0},                    \
+  }
+#define CMDLINE_ONLINELOG_IDX     0
 #define CMDLINE_GLOGLEVEL_IDX     1
 #define CMDLINE_STARTTELN_IDX     2
 
+/* check function for global log level */
+#define CMDLINE_LOGPARAMS_CHECK_DESC { \
+    { .s5= {NULL }} ,                                                 \
+    { .s2=  { config_check_intrange,           {0,4}}},               \
+    { .s5= {NULL }} ,                   \
+    { .s5= {NULL }} ,                   \
+  }
 
-/***************************************************************************************************************************************/  
+/***************************************************************************************************************************************/
 /*  */
 #include "threads_t.h"
 
@@ -242,30 +246,29 @@
 #define SOFTMODEM_NOKRNMOD_BIT        (1<<1)
 #define SOFTMODEM_NONBIOT_BIT         (1<<2)
 typedef struct {
-   uint64_t       optmask;
-   THREAD_STRUCT  thread_struct;
-   char           rf_config_file[1024];
-   int            phy_test;
-   uint8_t        usim_test;
-   int            emulate_rf;
-   int            wait_for_sync; //eNodeB only
-   int            single_thread_flag; //eNodeB only
-   int            chain_offset;
-   uint32_t       do_forms;
-   int            numerology;
-   unsigned int   start_msc;
-   int            nonbiotflag;
-   uint32_t       clock_source;
-   int            hw_timing_advance;
+  uint64_t       optmask;
+  THREAD_STRUCT  thread_struct;
+  char           rf_config_file[1024];
+  int            phy_test;
+  uint8_t        usim_test;
+  int            emulate_rf;
+  int            wait_for_sync; //eNodeB only
+  int            single_thread_flag; //eNodeB only
+  int            chain_offset;
+  uint32_t       do_forms;
+  int            numerology;
+  unsigned int   start_msc;
+  uint32_t       clock_source;
+  int            hw_timing_advance;
 } softmodem_params_t;
 
-#define SOFTMODEM_NOS1            ( get_softmodem_optmask() & SOFTMODEM_NOS1_BIT)
-#define SOFTMODEM_NOKRNMOD        ( get_softmodem_optmask() & SOFTMODEM_NOKRNMOD_BIT)
-#define SOFTMODEM_NONBIOT         ( get_softmodem_optmask() & SOFTMODEM_NONBIOT_BIT)
+#define IS_SOFTMODEM_NOS1            ( get_softmodem_optmask() & SOFTMODEM_NOS1_BIT)
+#define IS_SOFTMODEM_NOKRNMOD        ( get_softmodem_optmask() & SOFTMODEM_NOKRNMOD_BIT)
+#define IS_SOFTMODEM_NONBIOT         ( get_softmodem_optmask() & SOFTMODEM_NONBIOT_BIT)
 extern uint64_t get_softmodem_optmask(void);
 extern uint64_t set_softmodem_optmask(uint64_t bitmask);
 extern void get_common_options(void);
-extern softmodem_params_t* get_softmodem_params(void);
+extern softmodem_params_t *get_softmodem_params(void);
 
 uint64_t get_pdcp_optmask(void);
 extern pthread_cond_t sync_cond;
@@ -290,22 +293,15 @@ extern int sync_var;
 extern int transmission_mode;
 extern double cpuf;
 
-#if defined(ENABLE_ITTI)
-extern volatile int             start_eNB;
-extern volatile int             start_UE;
-#endif
-
-
-
-
 // In lte-enb.c
 extern void init_eNB(int single_thread_flag,int wait_for_sync);
 extern void stop_eNB(int);
 extern void kill_eNB_proc(int inst);
 
 // In lte-ru.c
-extern void init_RU(char*);
+extern void init_RU(char *);
 extern void stop_ru(RU_t *ru);
+extern void init_ru_vnf(void);
 extern void init_RU_proc(RU_t *ru);
 extern void stop_RU(int nb_ru);
 extern void kill_RU_proc(RU_t *ru);
@@ -315,8 +311,9 @@ extern void set_function_spec_param(RU_t *ru);
 extern int setup_ue_buffers(PHY_VARS_UE **phy_vars_ue, openair0_config_t *openair0_cfg);
 extern void fill_ue_band_info(void);
 
-extern void init_UE(int nb_inst,int eMBMS_active, int uecap_xer_in, int timing_correction, int phy_test, int UE_scan, int UE_scan_carrier, runmode_t mode,int rxgain,int txpowermax, LTE_DL_FRAME_PARMS *fp);
-extern void init_thread(int sched_runtime, int sched_deadline, int sched_fifo, cpu_set_t *cpuset, char * name);
+extern void init_UE(int nb_inst,int eMBMS_active, int uecap_xer_in, int timing_correction, int phy_test, int UE_scan, int UE_scan_carrier, runmode_t mode,int rxgain,int txpowermax,
+                    LTE_DL_FRAME_PARMS *fp);
+extern void init_thread(int sched_runtime, int sched_deadline, int sched_fifo, cpu_set_t *cpuset, char *name);
 
 extern void reset_opp_meas(void);
 extern void print_opp_meas(void);
@@ -331,7 +328,7 @@ extern void RCConfig_sim(void);
 extern void init_ocm(double,double);
 extern void init_ue_devices(PHY_VARS_UE *);
 
-PHY_VARS_UE* init_ue_vars(LTE_DL_FRAME_PARMS *frame_parms,
+PHY_VARS_UE *init_ue_vars(LTE_DL_FRAME_PARMS *frame_parms,
                           uint8_t UE_id,
                           uint8_t abstraction_flag);
 void init_eNB_afterRU(void);
@@ -346,8 +343,8 @@ extern int restart_L1L2(module_id_t enb_id);
 
 extern void init_UE_stub_single_thread(int nb_inst,int eMBMS_active, int uecap_xer_in, char *emul_iface);
 
-extern PHY_VARS_UE* init_ue_vars(LTE_DL_FRAME_PARMS *frame_parms,
-                          uint8_t UE_id,
-                          uint8_t abstraction_flag);
+extern PHY_VARS_UE *init_ue_vars(LTE_DL_FRAME_PARMS *frame_parms,
+                                 uint8_t UE_id,
+                                 uint8_t abstraction_flag);
 
 #endif
diff --git a/targets/RT/USER/lte-ue.c b/targets/RT/USER/lte-ue.c
index 784c14fa4d53a8b58324f656e35bdf37f1271690..1fe1d4c06b1feeec523976666c80c5f58dad5cb7 100644
--- a/targets/RT/USER/lte-ue.c
+++ b/targets/RT/USER/lte-ue.c
@@ -94,7 +94,7 @@ extern int oai_nfapi_rx_ind(nfapi_rx_indication_t *ind);
 extern int multicast_link_write_sock(int groupP, char *dataP, uint32_t sizeP);
 
 extern int simL1flag;
-
+extern uint16_t sf_ahead;
 //extern int tx_req_UE_MAC1();
 
 void ue_stub_rx_handler(unsigned int, char *);
@@ -102,9 +102,11 @@ void ue_stub_rx_handler(unsigned int, char *);
 int32_t **rxdata;
 int32_t **txdata;
 
-int timer_subframe;
-int timer_frame;
-SF_ticking *phy_stub_ticking;
+int timer_subframe = 0;
+int timer_frame = 0;
+SF_ticking *phy_stub_ticking = NULL;
+int next_ra_frame = 0;
+module_id_t next_Mod_id = 0;
 
 #define KHz (1000UL)
 #define MHz (1000*KHz)
@@ -386,7 +388,7 @@ void init_UE_stub_single_thread(int nb_inst,int eMBMS_active, int uecap_xer_in,
   for (inst=0;inst<nb_inst;inst++) {
 
     LOG_I(PHY,"Initializing memory for UE instance %d (%p)\n",inst,PHY_vars_UE_g[inst]);
-    PHY_vars_UE_g[inst][0] = init_ue_vars(NULL,inst,0);
+    // PHY_vars_UE_g[inst][0] = init_ue_vars(NULL,inst,0);
   }
   init_timer_thread();
   init_UE_single_thread_stub(nb_inst);
@@ -963,31 +965,57 @@ static void *UE_phy_stub_single_thread_rxn_txnp4(void *arg) {
 
 	thread_top_init("UE_phy_stub_thread_rxn_txnp4",1,870000L,1000000L,1000000L);
 
-	module_id_t Mod_id = 0;
+	// for multipule UE's L2-emulator
+	//module_id_t Mod_id = 0;
+
 	//int init_ra_UE = -1; // This counter is used to initiate the RA of each UE in different SFrames
   static __thread int UE_thread_rxtx_retval;
   struct rx_tx_thread_data *rtd = arg;
   UE_rxtx_proc_t *proc = rtd->proc;
 
-  // Initializations for nfapi-L2-emulator mode
-  dl_config_req = NULL;
-  ul_config_req = NULL;
-  hi_dci0_req	= NULL;
-  tx_request_pdu_list = NULL;
-
-  PHY_VARS_UE    *UE;   //= rtd->UE;
+  // settings for nfapi-L2-emulator mode
+  module_id_t ue_thread_id = rtd->ue_thread_id;
+  uint16_t     ue_index = 0;
+  uint16_t     ue_num = NB_UE_INST/NB_THREAD_INST+((NB_UE_INST%NB_THREAD_INST > ue_thread_id) ? 1 :0);
+  module_id_t ue_Mod_id;
+  PHY_VARS_UE    *UE = NULL;
   int ret;
+  uint8_t   end_flag;
+  proc = &PHY_vars_UE_g[0][0]->proc.proc_rxtx[0];
+  phy_stub_ticking->num_single_thread[ue_thread_id] = -1;
 
+  if (rtd != NULL) {
+    UE = rtd->UE;
+  }
 
-  phy_stub_ticking->ticking_var = -1;
-  proc->subframe_rx=proc->sub_frame_start;
+  if(ue_thread_id == 0){
+    phy_stub_ticking->ticking_var = -1;
+    proc->subframe_rx=proc->sub_frame_start;
+    // Initializations for nfapi-L2-emulator mode
+    dl_config_req = NULL;
+    ul_config_req = NULL;
+    hi_dci0_req        = NULL;
+    tx_request_pdu_list = NULL;
+
+    // waiting for all UE's threads set phy_stub_ticking->num_single_thread[ue_thread_id] = -1.
+    do{
+      end_flag = 1;
+      for(uint16_t i = 0;i< NB_THREAD_INST;i++){
+        if(phy_stub_ticking->num_single_thread[i] == 0){
+          end_flag = 0;
+        }
+      }
+   }while(end_flag == 0);
+
+    sync_var=0;
+  }
 
 
   //PANOS: CAREFUL HERE!
   wait_sync("UE_phy_stub_single_thread_rxn_txnp4");
 
   while (!oai_exit) {
-
+    if(ue_thread_id == 0){
     if (pthread_mutex_lock(&phy_stub_ticking->mutex_ticking) != 0) {
       LOG_E( MAC, "[SCHED][UE] error locking mutex for UE RXTX\n" );
       exit_fun("nothing to add");
@@ -1006,12 +1034,24 @@ static void *UE_phy_stub_single_thread_rxn_txnp4(void *arg) {
 
     proc->subframe_rx=timer_subframe;
     proc->frame_rx = timer_frame;
-    proc->subframe_tx=(timer_subframe+4)%10;
-    proc->frame_tx = proc->frame_rx + (proc->subframe_rx>5?1:0);
+    
+    // FDD and TDD tx timing settings.
+    // XXX:It is the result of timing adjustment in debug.
+    // It is necessary to investigate why this will work in the future.
+    proc->subframe_tx=(timer_subframe+sf_ahead)%10;
+    proc->frame_tx = proc->frame_rx + (proc->subframe_rx>(9-sf_ahead)?1:0);
     //oai_subframe_ind(proc->frame_rx, proc->subframe_rx);
 
-
-    oai_subframe_ind(timer_frame, timer_subframe);
+    if (UE != NULL) {
+      if (UE->frame_parms.frame_type == FDD) {
+        oai_subframe_ind(proc->frame_rx, proc->subframe_rx);
+      } else {
+        oai_subframe_ind(proc->frame_tx, proc->subframe_tx);
+      }
+    } else {
+      // Default will be FDD
+      oai_subframe_ind(proc->frame_rx, proc->subframe_rx);
+    }
 
     //Guessing that the next 4 lines are not needed for the phy_stub mode.
     /*initRefTimes(t2);
@@ -1035,14 +1075,45 @@ static void *UE_phy_stub_single_thread_rxn_txnp4(void *arg) {
     	UL_INFO->harq_ind.harq_indication_body.number_of_harqs = 0;
 
     	UL_INFO->sr_ind.sr_indication_body.sr_pdu_list = (nfapi_sr_indication_pdu_t*)malloc(NB_UE_INST*sizeof(nfapi_sr_indication_pdu_t));
-    	UL_INFO->sr_ind.sr_indication_body.number_of_srs = 0;
-
-
-
+     	UL_INFO->sr_ind.sr_indication_body.number_of_srs = 0;
+
+        UL_INFO->cqi_ind.cqi_pdu_list =  (nfapi_cqi_indication_pdu_t*)malloc(NB_UE_INST*sizeof(nfapi_cqi_indication_pdu_t));
+        UL_INFO->cqi_ind.cqi_raw_pdu_list = (nfapi_cqi_indication_raw_pdu_t*)malloc(NB_UE_INST*sizeof(nfapi_cqi_indication_raw_pdu_t));
+        UL_INFO->cqi_ind.number_of_cqis = 0;
+
+        if (pthread_mutex_lock(&phy_stub_ticking->mutex_single_thread) != 0) {
+          LOG_E( MAC, "[SCHED][UE] error locking mutex for ue_thread_id %d (mutex_single_thread)\n",ue_thread_id);
+          exit_fun("nothing to add");
+        }
+        memset(&phy_stub_ticking->num_single_thread[0],0,sizeof(int)*NB_THREAD_INST);
+        pthread_cond_broadcast(&phy_stub_ticking->cond_single_thread);
+
+        if (pthread_mutex_unlock(&phy_stub_ticking->mutex_single_thread) != 0) {
+          LOG_E( MAC, "[SCHED][UE] error unlocking mutex for ue_thread_id %d (mutex_single_thread)\n",ue_thread_id);
+          exit_fun("nothing to add");
+        }
+    }else{
+        if (pthread_mutex_lock(&phy_stub_ticking->mutex_single_thread) != 0) {
+          LOG_E( MAC, "[SCHED][UE] error locking mutex for ue_thread_id %d (mutex_single_thread)\n",ue_thread_id);
+           exit_fun("nothing to add");
+        }
+        while (phy_stub_ticking->num_single_thread[ue_thread_id] < 0) {
+          // most of the time, the thread is waiting here
+          LOG_D(MAC,"Waiting for single_thread (ue_thread_id %d)\n",ue_thread_id);
+          pthread_cond_wait( &phy_stub_ticking->cond_single_thread, &phy_stub_ticking->mutex_single_thread);
+        }
+        if (pthread_mutex_unlock(&phy_stub_ticking->mutex_single_thread) != 0) {
+          LOG_E( MAC, "[SCHED][UE] error unlocking mutex for ue_thread_id %d (mutex_single_thread)\n",ue_thread_id);
+          exit_fun("nothing to add");
+        }
+    }
 
-    for (Mod_id=0; Mod_id<NB_UE_INST; Mod_id++) {
-    	//LOG_D(MAC, "UE_phy_stub_single_thread_rxn_txnp4, NB_UE_INST:%d, Mod_id:%d \n", NB_UE_INST, Mod_id);
-    	UE = PHY_vars_UE_g[Mod_id][0];
+    //for (Mod_id=0; Mod_id<NB_UE_INST; Mod_id++) {
+    for (ue_index=0; ue_index < ue_num; ue_index++) {
+    ue_Mod_id = ue_thread_id + NB_THREAD_INST*ue_index;
+    UE = PHY_vars_UE_g[ue_Mod_id][0];
+    //LOG_D(MAC, "UE_phy_stub_single_thread_rxn_txnp4, NB_UE_INST:%d, Mod_id:%d \n", NB_UE_INST, Mod_id);
+    //UE = PHY_vars_UE_g[Mod_id][0];
     lte_subframe_t sf_type = subframe_select( &UE->frame_parms, proc->subframe_rx);
     if ((sf_type == SF_DL) ||
 	(UE->frame_parms.frame_type == FDD) ||
@@ -1068,12 +1139,12 @@ static void *UE_phy_stub_single_thread_rxn_txnp4(void *arg) {
 
       if (dl_config_req!=NULL && tx_request_pdu_list!=NULL){
     	  //if(dl_config_req!= NULL) {
-    	  dl_config_req_UE_MAC(dl_config_req, Mod_id);
+    	  dl_config_req_UE_MAC(dl_config_req, ue_Mod_id);
 
       }
 
       if (hi_dci0_req!=NULL && hi_dci0_req->hi_dci0_request_body.hi_dci0_pdu_list!=NULL){
-    	  hi_dci0_req_UE_MAC(hi_dci0_req, Mod_id);
+    	  hi_dci0_req_UE_MAC(hi_dci0_req, ue_Mod_id);
       }
 
       if(nfapi_mode!=3)
@@ -1087,7 +1158,7 @@ static void *UE_phy_stub_single_thread_rxn_txnp4(void *arg) {
 
     if (UE->mac_enabled==1) {
 
-      ret = ue_scheduler(UE->Mod_id,
+      ret = ue_scheduler(ue_Mod_id,
 			 proc->frame_rx,
 			 proc->subframe_rx,
 			 proc->frame_tx,
@@ -1113,34 +1184,37 @@ static void *UE_phy_stub_single_thread_rxn_txnp4(void *arg) {
 
     // We make the start of RA between consecutive UEs differ by 20 frames
 	//if ((UE_mac_inst[Mod_id].UE_mode[0] == PRACH  && Mod_id == 0) || (UE_mac_inst[Mod_id].UE_mode[0] == PRACH && Mod_id>0 && proc->frame_rx >= UE_mac_inst[Mod_id-1].ra_frame + 20) ) {
-	if (UE_mac_inst[Mod_id].UE_mode[0] == PRACH  && Mod_id == next_Mod_id && proc->frame_rx >= next_ra_frame) {
-
+	if (UE_mac_inst[ue_Mod_id].UE_mode[0] == PRACH  && ue_Mod_id == next_Mod_id) {
+          next_ra_frame++;
+          if(next_ra_frame > 200){
 	  // check if we have PRACH opportunity
 
-	  if (is_prach_subframe(&UE->frame_parms,proc->frame_tx, proc->subframe_tx) &&  UE_mac_inst[Mod_id].SI_Decoded == 1) {
+	  if (is_prach_subframe(&UE->frame_parms,proc->frame_tx, proc->subframe_tx) &&  UE_mac_inst[ue_Mod_id].SI_Decoded == 1) {
 
 	  // The one working strangely...
       //if (is_prach_subframe(&UE->frame_parms,proc->frame_tx, proc->subframe_tx && Mod_id == (module_id_t) init_ra_UE) ) {
 
-	    PRACH_RESOURCES_t *prach_resources = ue_get_rach(Mod_id, 0, proc->frame_tx, 0, proc->subframe_tx);
+	    PRACH_RESOURCES_t *prach_resources = ue_get_rach(ue_Mod_id, 0, proc->frame_tx, 0, proc->subframe_tx);
 	    if(prach_resources!=NULL ) {
-	    	UE_mac_inst[Mod_id].ra_frame = proc->frame_rx;
-	      LOG_D(MAC, "UE_phy_stub_thread_rxn_txnp4 before RACH, Mod_id: %d \n", Mod_id );
-	      fill_rach_indication_UE_MAC(Mod_id, proc->frame_tx ,proc->subframe_tx, UL_INFO, prach_resources->ra_PreambleIndex, prach_resources->ra_RNTI);
-	      Msg1_transmitted(Mod_id, 0, proc->frame_tx, 0);
-	      UE_mac_inst[Mod_id].UE_mode[0] = RA_RESPONSE;
-	      next_Mod_id = Mod_id + 1;
-	      next_ra_frame = (proc->frame_rx + 20)%1000;
+	    	UE_mac_inst[ue_Mod_id].ra_frame = proc->frame_rx;
+	      LOG_D(MAC, "UE_phy_stub_thread_rxn_txnp4 before RACH, Mod_id: %d frame %d subframe %d\n", ue_Mod_id ,proc->frame_tx, proc->subframe_tx);
+	      fill_rach_indication_UE_MAC(ue_Mod_id, proc->frame_tx ,proc->subframe_tx, UL_INFO, prach_resources->ra_PreambleIndex, prach_resources->ra_RNTI);
+	      Msg1_transmitted(ue_Mod_id, 0, proc->frame_tx, 0);
+	      UE_mac_inst[ue_Mod_id].UE_mode[0] = RA_RESPONSE;
+	      next_Mod_id = ue_Mod_id + 1;
+	      //next_ra_frame = (proc->frame_rx + 20)%1000;
+              next_ra_frame = 0;
 	    }
 
 	    //ue_prach_procedures(ue,proc,eNB_id,abstraction_flag,mode);
 	  }
+          }
 	} // mode is PRACH
 	// Substitute call to phy_procedures Tx with call to phy_stub functions in order to trigger
 	// UE Tx procedures directly at the MAC layer, based on the received ul_config requests from the vnf (eNB).
 	// Generate UL_indications which correspond to UL traffic.
 	if(ul_config_req!=NULL){ //&& UE_mac_inst[Mod_id].ul_config_req->ul_config_request_body.ul_config_pdu_list != NULL){
-		ul_config_req_UE_MAC(ul_config_req, timer_frame, timer_subframe, Mod_id);
+		ul_config_req_UE_MAC(ul_config_req, timer_frame, timer_subframe, ue_Mod_id);
 	}
       }
 
@@ -1149,6 +1223,19 @@ static void *UE_phy_stub_single_thread_rxn_txnp4(void *arg) {
 
     } //for (Mod_id=0; Mod_id<NB_UE_INST; Mod_id++)
 
+    phy_stub_ticking->num_single_thread[ue_thread_id] = -1;
+
+    // waiting for all UE's threads set phy_stub_ticking->num_single_thread[ue_thread_id] = -1.
+    if(ue_thread_id == 0){
+      do{
+        end_flag = 1;
+        for(uint16_t i = 0;i< NB_THREAD_INST;i++){
+          if(phy_stub_ticking->num_single_thread[i] == 0){
+             end_flag = 0;
+          }
+        }
+      }while(end_flag == 0);
+
 
     if (UL_INFO->crc_ind.crc_indication_body.number_of_crcs>0)
       {
@@ -1163,6 +1250,9 @@ static void *UE_phy_stub_single_thread_rxn_txnp4(void *arg) {
     	  //LOG_D(PHY,"UL_info->rx_ind.number_of_pdus:%d RX_IND:SFN/SF:%d\n", UL_info->rx_ind.rx_indication_body.number_of_pdus, NFAPI_SFNSF2DEC(UL_info->rx_ind.sfn_sf));
     	  //LOG_I(MAC, "ul_config_req_UE_MAC 2.3, SFN/SF of PNF counter:%d.%d, number_of_pdus: %d \n", timer_frame, timer_subframe, UL_INFO->rx_ind.rx_indication_body.number_of_pdus);
     	  oai_nfapi_rx_ind(&UL_INFO->rx_ind);
+          for(uint8_t num_pdu = 0;num_pdu < UL_INFO->rx_ind.rx_indication_body.number_of_pdus;num_pdu++){
+            free(UL_INFO->rx_ind.rx_indication_body.rx_pdu_list[num_pdu].data);
+          }
     	  //LOG_I(MAC, "ul_config_req_UE_MAC 2.31 \n");
     	  UL_INFO->rx_ind.rx_indication_body.number_of_pdus = 0;
       }
@@ -1199,14 +1289,19 @@ static void *UE_phy_stub_single_thread_rxn_txnp4(void *arg) {
     	  free(UL_INFO->sr_ind.sr_indication_body.sr_pdu_list);
     	  UL_INFO->sr_ind.sr_indication_body.sr_pdu_list = NULL;
       //}
-
+      free(UL_INFO->cqi_ind.cqi_pdu_list);
+      UL_INFO->cqi_ind.cqi_pdu_list = NULL;
+      free(UL_INFO->cqi_ind.cqi_raw_pdu_list);
+      UL_INFO->cqi_ind.cqi_raw_pdu_list = NULL;
       free(UL_INFO);
       UL_INFO = NULL;
 
       // De-allocate memory of nfapi requests copies before next subframe round
       if(dl_config_req!=NULL){
-    	  if(dl_config_req->vendor_extension)
-    		  free(dl_config_req->vendor_extension);
+    	  if(dl_config_req->vendor_extension!=NULL){
+            free(dl_config_req->vendor_extension);
+            dl_config_req->vendor_extension = NULL;
+          }
     	  if(dl_config_req->dl_config_request_body.dl_config_pdu_list!=NULL){
     		  free(dl_config_req->dl_config_request_body.dl_config_pdu_list);
     		  dl_config_req->dl_config_request_body.dl_config_pdu_list = NULL;
@@ -1236,7 +1331,7 @@ static void *UE_phy_stub_single_thread_rxn_txnp4(void *arg) {
     	  hi_dci0_req = NULL;
       }
 
-
+    }
 
   }
   // thread finished
@@ -1780,6 +1875,13 @@ void init_UE_single_thread_stub(int nb_inst) {
 	  AssertFatal(PHY_vars_UE_g!=NULL,"PHY_vars_UE_g is NULL\n");
 	  AssertFatal(PHY_vars_UE_g[i]!=NULL,"PHY_vars_UE_g[inst] is NULL\n");
 	  AssertFatal(PHY_vars_UE_g[i][0]!=NULL,"PHY_vars_UE_g[inst][0] is NULL\n");
+	  if(nfapi_mode == 3){
+#ifdef NAS_UE
+          MessageDef *message_p;
+          message_p = itti_alloc_new_message(TASK_NAS_UE, INITIALIZE_MESSAGE);
+         itti_send_msg_to_task (TASK_NAS_UE, i + NB_eNB_INST, message_p);
+#endif
+	  }
   }
   UE = PHY_vars_UE_g[0][0];
 
@@ -1794,19 +1896,22 @@ void init_UE_single_thread_stub(int nb_inst) {
   // In phy_stub_UE mode due to less heavy processing operations we don't need two threads
   //int nb_threads=RX_NB_TH;
   int nb_threads=1;
-  for (int i=0; i<nb_threads; i++) {
-    rtd = calloc(1, sizeof(struct rx_tx_thread_data));
-    if (rtd == NULL) abort();
-    rtd->UE = UE;
-    rtd->proc = &UE->proc.proc_rxtx[i];
-
-    pthread_mutex_init(&UE->proc.proc_rxtx[i].mutex_rxtx,NULL);
-    pthread_cond_init(&UE->proc.proc_rxtx[i].cond_rxtx,NULL);
-    UE->proc.proc_rxtx[i].sub_frame_start=i;
-    UE->proc.proc_rxtx[i].sub_frame_step=nb_threads;
-    printf("Init_UE_threads rtd %d proc %d nb_threads %d i %d\n",rtd->proc->sub_frame_start, UE->proc.proc_rxtx[i].sub_frame_start,nb_threads, i);
-    pthread_create(&UE->proc.proc_rxtx[i].pthread_rxtx, NULL, UE_phy_stub_single_thread_rxn_txnp4, rtd);
-
+  for(uint16_t ue_thread_id = 0;ue_thread_id < NB_THREAD_INST;ue_thread_id++){
+    UE = PHY_vars_UE_g[ue_thread_id][0];
+    for (int i=0; i<nb_threads; i++) {
+      rtd = calloc(1, sizeof(struct rx_tx_thread_data));
+      if (rtd == NULL) abort();
+      rtd->UE = UE;
+      rtd->proc = &UE->proc.proc_rxtx[i];
+      rtd->ue_thread_id = ue_thread_id;
+
+      pthread_mutex_init(&UE->proc.proc_rxtx[i].mutex_rxtx,NULL);
+      pthread_cond_init(&UE->proc.proc_rxtx[i].cond_rxtx,NULL);
+      UE->proc.proc_rxtx[i].sub_frame_start=i;
+      UE->proc.proc_rxtx[i].sub_frame_step=nb_threads;
+      printf("Init_UE_threads rtd %d proc %d nb_threads %d i %d\n",rtd->proc->sub_frame_start, UE->proc.proc_rxtx[i].sub_frame_start,nb_threads, i);
+      pthread_create(&UE->proc.proc_rxtx[i].pthread_rxtx, NULL, UE_phy_stub_single_thread_rxn_txnp4, rtd);
+    }
   }
   // Remove thread for UE_sync in phy_stub_UE mode.
   //pthread_create(&UE->proc.pthread_synch,NULL,UE_thread_synch,(void*)UE);
@@ -2076,8 +2181,11 @@ int init_timer_thread(void) {
   pthread_mutex_init(&UE->timer_mutex,NULL);
   pthread_cond_init(&UE->timer_cond,NULL);
   UE->instance_cnt_timer = -1;
+  memset(&phy_stub_ticking->num_single_thread[0],0,sizeof(int)*NB_THREAD_INST);
   pthread_mutex_init(&phy_stub_ticking->mutex_ticking,NULL);
   pthread_cond_init(&phy_stub_ticking->cond_ticking,NULL);
+  pthread_mutex_init(&phy_stub_ticking->mutex_single_thread,NULL);
+  pthread_cond_init(&phy_stub_ticking->cond_single_thread,NULL);
   pthread_create(&phy_stub_ticking->pthread_timer, NULL, &timer_thread, NULL);
   return 0;
 }
diff --git a/targets/RT/USER/lte-uesoftmodem.c b/targets/RT/USER/lte-uesoftmodem.c
index 38937226e528a9459b7e1ca006a00e996665048a..a3aa0036628cdda51be0b0014de6fa5aedee89fa 100644
--- a/targets/RT/USER/lte-uesoftmodem.c
+++ b/targets/RT/USER/lte-uesoftmodem.c
@@ -110,9 +110,13 @@ pthread_mutex_t nfapi_sync_mutex;
 int nfapi_sync_var=-1; //!< protected by mutex \ref nfapi_sync_mutex
 
 uint8_t nfapi_mode = 0;
-
+#ifdef PDCP_USE_NETLINK
+#ifdef UESIM_EXPANSION
+uint16_t inst_pdcp_list[NUMBER_OF_UE_MAX];
+#endif
+#endif
 uint16_t sf_ahead=2;
-
+int tddflag;
 char *emul_iface;
 
 
@@ -124,10 +128,6 @@ int config_sync_var=-1;
 uint16_t runtime_phy_rx[29][6]; // SISO [MCS 0-28][RBs 0-5 : 6, 15, 25, 50, 75, 100]
 uint16_t runtime_phy_tx[29][6]; // SISO [MCS 0-28][RBs 0-5 : 6, 15, 25, 50, 75, 100]
 
-#if defined(ENABLE_ITTI)
-  volatile int             start_eNB = 0;
-  volatile int             start_UE = 0;
-#endif
 volatile int             oai_exit = 0;
 
 clock_source_t clock_source = internal;
@@ -398,48 +398,6 @@ static void *scope_thread(void *arg) {
 
 
 
-#if defined(ENABLE_ITTI)
-void *l2l1_task(void *arg) {
-  MessageDef *message_p = NULL;
-  int         result;
-  itti_set_task_real_time(TASK_L2L1);
-  itti_mark_task_ready(TASK_L2L1);
-
-  do {
-    // Wait for a message
-    itti_receive_msg (TASK_L2L1, &message_p);
-
-    switch (ITTI_MSG_ID(message_p)) {
-      case TERMINATE_MESSAGE:
-        oai_exit=1;
-        itti_exit_task ();
-        break;
-
-      case ACTIVATE_MESSAGE:
-        start_UE = 1;
-        break;
-
-      case DEACTIVATE_MESSAGE:
-        start_UE = 0;
-        break;
-
-      case MESSAGE_TEST:
-        LOG_I(SIM, "Received %s\n", ITTI_MSG_NAME(message_p));
-        break;
-
-      default:
-        LOG_E(SIM, "Received unexpected message %s\n", ITTI_MSG_NAME(message_p));
-        break;
-    }
-
-    result = itti_free (ITTI_MSG_ORIGIN_ID(message_p), message_p);
-    AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
-  } while(!oai_exit);
-
-  return NULL;
-}
-#endif
-
 extern int16_t dlsch_demod_shift;
 
 static void get_options(void) {
@@ -452,7 +410,6 @@ static void get_options(void) {
   CONFIG_SETRTFLAG(CONFIG_NOEXITONHELP);
   /* unknown parameters on command line will be checked in main
      after all init have been performed                         */
-  CONFIG_SETRTFLAG(CONFIG_NOCHECKUNKOPT);
   get_common_options();
   get_uethreads_params();
   paramdef_t cmdline_uemodeparams[] =CMDLINE_UEMODEPARAMS_DESC;
@@ -491,10 +448,12 @@ static void get_options(void) {
   }
 
   UE_scan=0;
-
+   
   if (tddflag > 0) {
-    for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++)
+    for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
       frame_parms[CC_id]->frame_type = TDD;
+      frame_parms[CC_id]->tdd_config = tddflag;
+    }
   }
 
   if (frame_parms[0]->N_RB_DL !=0) {
@@ -722,9 +681,15 @@ int main( int argc, char **argv ) {
 #endif
   int CC_id;
   uint8_t  abstraction_flag=0;
+#ifdef PDCP_USE_NETLINK
+#ifdef UESIM_EXPANSION
+  memset(inst_pdcp_list, 0, sizeof(inst_pdcp_list));
+#endif
+#endif
   // Default value for the number of UEs. It will hold,
   // if not changed from the command line option --num-ues
   NB_UE_INST=1;
+  NB_THREAD_INST=1;
 #if defined (XFORMS)
   int ret;
 #endif
@@ -742,20 +707,42 @@ int main( int argc, char **argv ) {
 
   for (int i=0; i<MAX_NUM_CCs; i++) tx_max_power[i]=23;
 
-  CONFIG_SETRTFLAG(CONFIG_NOCHECKUNKOPT);
   get_options ();
   printf("Running with %d UE instances\n",NB_UE_INST);
 
-  if (NB_UE_INST > 1 && simL1flag != 1) {
+  if (NB_UE_INST > 1 && simL1flag != 1 && nfapi_mode != 3) {
     printf("Running with more than 1 UE instance and simL1 is not active, this will result in undefined behaviour for now, exiting.\n");
     abort();
   }
 
   printf("NFAPI_MODE value: %d \n", nfapi_mode);
+
+  // Checking option of nums_ue_thread.
+  if(NB_THREAD_INST < 1){
+    printf("Running with 0 UE rxtx thread, exiting.\n");
+    abort();
+  }
+  // Checking option's relation between nums_ue_thread and num-ues
+  if(NB_UE_INST <NB_THREAD_INST ){
+    printf("Number of UEs < number of UE rxtx threads, exiting.\n");
+    abort();
+  }
+  // Not sure if the following is needed here
+  /*if (CONFIG_ISFLAGSET(CONFIG_ABORT)) {
+      if (UE_flag == 0) {
+        fprintf(stderr,"Getting configuration failed\n");
+        exit(-1);
+      }
+      else {
+        printf("Setting nfapi mode to UE_STUB_OFFNET\n");
+        nfapi_mode = 4;
+      }
+    }*/
+
+
 #if T_TRACER
   T_Config_Init();
 #endif
-  CONFIG_CLEARRTFLAG(CONFIG_NOCHECKUNKOPT);
   //randominit (0);
   set_taus_seed (0);
   cpuf=get_cpu_freq_GHz();
@@ -772,12 +759,7 @@ int main( int argc, char **argv ) {
 
   MSC_INIT(MSC_E_UTRAN, THREAD_MAX+TASK_MAX);
 #endif
-
-  if (opt_type != OPT_NONE) {
-    if (init_opt(in_path, in_ip) == -1)
-      LOG_E(OPT,"failed to run OPT \n");
-  }
-
+  init_opt();
 #ifdef PDCP_USE_NETLINK
   printf("PDCP netlink\n");
   netlink_init();
@@ -834,6 +816,8 @@ int main( int argc, char **argv ) {
     RCConfig_sim();
   }
 
+// source code written in below moved to later to avoid keeping waiting for nfapi_sync_cond in wait_nfapi_init.
+/*
   // start the main UE threads
   int eMBMS_active = 0;
 
@@ -862,7 +846,8 @@ int main( int argc, char **argv ) {
       PHY_vars_UE_g[0][CC_id]->rf_map.chain=CC_id+(get_softmodem_params()->chain_offset);
     }
   }
-
+*/
+  
   cpuf=get_cpu_freq_GHz();
 #ifndef DEADLINE_SCHEDULER
   printf("NO deadline scheduler\n");
@@ -907,8 +892,7 @@ int main( int argc, char **argv ) {
   LOG_I(HW, "CPU Affinity of main() function is... %s\n", cpu_affinity);
 #endif
 #if defined(ENABLE_ITTI)
-
-  if (create_tasks_ue(1) < 0) {
+  if (create_tasks_ue(NB_UE_INST) < 0) {
     printf("cannot create ITTI tasks\n");
     exit(-1); // need a softer mode
   }
@@ -922,6 +906,8 @@ int main( int argc, char **argv ) {
   mlockall(MCL_CURRENT | MCL_FUTURE);
   rt_sleep_ns(10*100000000ULL);
   const char *nfapi_mode_str = "<UNKNOWN>";
+  // start the main UE threads
+  int eMBMS_active = 0;
 
   switch(nfapi_mode) {
     case 0:
@@ -951,6 +937,33 @@ int main( int argc, char **argv ) {
 
   printf("NFAPI MODE:%s\n", nfapi_mode_str);
 
+  if (nfapi_mode==3) // UE-STUB-PNF
+  {
+      config_sync_var=0;
+      wait_nfapi_init("main?");
+      //Panos: Temporarily we will be using single set of threads for multiple UEs.
+      //init_UE_stub(1,eMBMS_active,uecap_xer_in,emul_iface);
+      init_UE_stub_single_thread(NB_UE_INST,eMBMS_active,uecap_xer_in,emul_iface);
+  }
+  else {
+      init_UE(NB_UE_INST,eMBMS_active,uecap_xer_in,0,get_softmodem_params()->phy_test,UE_scan,UE_scan_carrier,mode,(int)rx_gain[0][0],tx_max_power[0],
+              frame_parms[0]);
+  }
+
+
+  if (get_softmodem_params()->phy_test==0) {
+    printf("Filling UE band info\n");
+    fill_ue_band_info();
+    dl_phy_sync_success (0, 0, 0, 1);
+  }
+
+  if (nfapi_mode!=3){
+      number_of_cards = 1;
+      for(CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
+              PHY_vars_UE_g[0][CC_id]->rf_map.card=0;
+              PHY_vars_UE_g[0][CC_id]->rf_map.chain=CC_id+(get_softmodem_params()->chain_offset);
+      }
+  }
   // connect the TX/RX buffers
 
   /*
@@ -1010,13 +1023,7 @@ int main( int argc, char **argv ) {
   }
 
 #endif
-  ret=config_check_unknown_cmdlineopt(CONFIG_CHECKALLSECTIONS);
-
-  if (ret != 0) {
-    LOG_E(ENB_APP, "%i unknown options in command line (invalid section name)\n",ret);
-    exit_fun("");
-  }
-
+  config_check_unknown_cmdlineopt(CONFIG_CHECKALLSECTIONS);
   printf("Sending sync to all threads (%p,%p,%p)\n",&sync_var,&sync_cond,&sync_mutex);
   pthread_mutex_lock(&sync_mutex);
   sync_var=0;
@@ -1067,9 +1074,7 @@ int main( int argc, char **argv ) {
   if (PHY_vars_UE_g[0][0]->rfdevice.trx_end_func)
     PHY_vars_UE_g[0][0]->rfdevice.trx_end_func(&PHY_vars_UE_g[0][0]->rfdevice);
 
-  if (opt_enabled == 1)
-    terminate_opt();
-
+  terminate_opt();
   logClean();
   printf("Bye.\n");
   return 0;