diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c
index 4aa42d298baceacf7a9be460ac8d79887a7627fb..6926e8cbd2bb98bdc6de839fcfe8c991260d7d06 100755
--- a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c
+++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c
@@ -475,7 +475,6 @@ boolean_t pdcp_data_ind(
 
   sdu_list_p = &pdcp_sdu_list;
 
-
   if (sdu_buffer_sizeP == 0) {
       LOG_W(PDCP, "SDU buffer size is zero! Ignoring this chunk!\n");
       if (enb_flagP)
@@ -486,18 +485,34 @@ boolean_t pdcp_data_ind(
   }
 
   /*
-   * Check if incoming SDU is long enough to carry a PDU header
+   * Parse the PDU placed at the beginning of SDU to check
+   * if incoming SN is in line with RX window
    */
+  
   if (MBMS_flagP == 0 ) {
-      if (srb_flagP) {
-          pdcp_header_len = PDCP_CONTROL_PLANE_DATA_PDU_SN_SIZE;
-          pdcp_tailer_len = PDCP_CONTROL_PLANE_DATA_PDU_MAC_I_SIZE;
+    if (srb_flagP) { //SRB1/2
+      pdcp_header_len = PDCP_CONTROL_PLANE_DATA_PDU_SN_SIZE;
+      pdcp_tailer_len = PDCP_CONTROL_PLANE_DATA_PDU_MAC_I_SIZE;
+      sequence_number =   pdcp_get_sequence_number_of_pdu_with_SRB_sn((unsigned char*)sdu_buffer_pP->data);
+    } else { // DRB
+      pdcp_tailer_len = 0;
+      if (pdcp_p->seq_num_size == PDCP_SN_7BIT){
+	pdcp_header_len = PDCP_USER_PLANE_DATA_PDU_SHORT_SN_HEADER_SIZE;
+	sequence_number =     pdcp_get_sequence_number_of_pdu_with_short_sn((unsigned char*)sdu_buffer_pP->data);
+      }else if (pdcp_p->seq_num_size == PDCP_SN_12BIT){
+	pdcp_header_len = PDCP_USER_PLANE_DATA_PDU_LONG_SN_HEADER_SIZE;
+	sequence_number =     pdcp_get_sequence_number_of_pdu_with_long_sn((unsigned char*)sdu_buffer_pP->data);
       } else {
-          pdcp_header_len = PDCP_USER_PLANE_DATA_PDU_LONG_SN_HEADER_SIZE;
-          pdcp_tailer_len = 0;
+	//sequence_number = 4095;
+	LOG_E(PDCP,"wrong sequence number  (%d) for this pdcp entity \n", pdcp_p->seq_num_size);
       }
-
-      if (sdu_buffer_sizeP < pdcp_header_len + pdcp_tailer_len ) {
+      //uint8_t dc = pdcp_get_dc_filed((unsigned char*)sdu_buffer_pP->data);
+    }
+    
+    /*
+     * Check if incoming SDU is long enough to carry a PDU header
+     */
+    if (sdu_buffer_sizeP < pdcp_header_len + pdcp_tailer_len ) {
           LOG_W(PDCP, "Incoming (from RLC) SDU is short of size (size:%d)! Ignoring...\n", sdu_buffer_sizeP);
           free_mem_block(sdu_buffer_pP);
           if (enb_flagP)
@@ -506,96 +521,96 @@ boolean_t pdcp_data_ind(
             stop_meas(&UE_pdcp_stats[ue_mod_idP].data_ind);
           return FALSE;
       }
-
+  
+    if (pdcp_is_rx_seq_number_valid(sequence_number, pdcp_p, srb_flagP) == TRUE) {
+      LOG_D(PDCP, "Incoming PDU has a sequence number (%d) in accordance with RX window\n", sequence_number);
+      /* if (dc == PDCP_DATA_PDU )
+	 LOG_D(PDCP, "Passing piggybacked SDU to NAS driver...\n");
+	 else
+	 LOG_D(PDCP, "Passing piggybacked SDU to RRC ...\n");*/
+    } else {
+      LOG_W(PDCP, "Incoming PDU has an unexpected sequence number (%d), RX window snychronisation have probably been lost!\n", sequence_number);
       /*
-       * Parse the PDU placed at the beginning of SDU to check
-       * if incoming SN is in line with RX window
+       * XXX Till we implement in-sequence delivery and duplicate discarding
+       * mechanism all out-of-order packets will be delivered to RRC/IP
        */
-      if (MBMS_flagP == 0 ) {
-	if (srb_flagP) { //SRB1/2
-	  sequence_number =   pdcp_get_sequence_number_of_pdu_with_SRB_sn((unsigned char*)sdu_buffer_pP->data);
-	} else { // DRB
-	   if (pdcp_p->seq_num_size == PDCP_SN_7BIT){
-	    sequence_number =     pdcp_get_sequence_number_of_pdu_with_short_sn((unsigned char*)sdu_buffer_pP->data);
-	   }else if (pdcp_p->seq_num_size == PDCP_SN_12BIT){
-	    sequence_number =     pdcp_get_sequence_number_of_pdu_with_long_sn((unsigned char*)sdu_buffer_pP->data);
-	  } else {
-	    //sequence_number = 4095;
-	    LOG_E(PDCP,"wrong sequence number  (%d) for this pdcp entity \n", pdcp_p->seq_num_size);
-	  }
-	  //uint8_t dc = pdcp_get_dc_filed((unsigned char*)sdu_buffer_pP->data);
-	}
-      }
-      if (pdcp_is_rx_seq_number_valid(sequence_number, pdcp_p, srb_flagP) == TRUE) {
-          LOG_D(PDCP, "Incoming PDU has a sequence number (%d) in accordance with RX window\n", sequence_number);
-          /* if (dc == PDCP_DATA_PDU )
-	   LOG_D(PDCP, "Passing piggybacked SDU to NAS driver...\n");
-	   else
-	   LOG_D(PDCP, "Passing piggybacked SDU to RRC ...\n");*/
-      } else {
-          LOG_W(PDCP, "Incoming PDU has an unexpected sequence number (%d), RX window snychronisation have probably been lost!\n", sequence_number);
-          /*
-           * XXX Till we implement in-sequence delivery and duplicate discarding
-           * mechanism all out-of-order packets will be delivered to RRC/IP
-           */
 #if 0
-          LOG_D(PDCP, "Ignoring PDU...\n");
-          free_mem_block(sdu_buffer);
-          return FALSE;
+      LOG_D(PDCP, "Ignoring PDU...\n");
+      free_mem_block(sdu_buffer);
+      return FALSE;
 #else
-          LOG_W(PDCP, "Delivering out-of-order SDU to upper layer...\n");
+      LOG_W(PDCP, "Delivering out-of-order SDU to upper layer...\n");
 #endif
-      }
+    }
       // SRB1/2: control-plane data
-      if (srb_flagP){
-#if defined(ENABLE_SECURITY)
-          if (pdcp_p->security_activated == 1) {
-              if (enb_flagP == ENB_FLAG_NO)
-                start_meas(&eNB_pdcp_stats[enb_mod_idP].validate_security);
-              else
-                start_meas(&UE_pdcp_stats[ue_mod_idP].validate_security);
-
-	  pdcp_validate_security(pdcp_p, 
-				 srb_flagP,
-				 rb_idP, 
-				 pdcp_header_len,
-				 sequence_number, 
-				 sdu_buffer_pP->data,
-				 sdu_buffer_sizeP - pdcp_tailer_len);
-	  if (enb_flagP == ENB_FLAG_NO)
-	    stop_meas(&eNB_pdcp_stats[enb_mod_idP].validate_security);
-	  else
-	    stop_meas(&UE_pdcp_stats[ue_mod_idP].validate_security);
-
-	  }
-#endif
-//rrc_lite_data_ind(module_id, //Modified MW - L2 Interface
-          pdcp_rrc_data_ind(enb_mod_idP,
-              ue_mod_idP,
-              frameP,
-              enb_flagP,
-              rb_id,
-              sdu_buffer_sizeP - pdcp_header_len - pdcp_tailer_len,
-              (uint8_t*)&sdu_buffer_pP->data[pdcp_header_len]);
-          free_mem_block(sdu_buffer_pP);
-          // free_mem_block(new_sdu);
-          if (enb_flagP)
-            stop_meas(&eNB_pdcp_stats[enb_mod_idP].data_ind);
-          else
-            stop_meas(&UE_pdcp_stats[ue_mod_idP].data_ind);
-          return TRUE;
-      }
-      payload_offset=PDCP_USER_PLANE_DATA_PDU_LONG_SN_HEADER_SIZE;
+    if (srb_flagP){
 #if defined(ENABLE_SECURITY)
       if (pdcp_p->security_activated == 1) {
-          pdcp_validate_security(pdcp_p, rb_idP % maxDRB, pdcp_header_len,
-              sequence_number, sdu_buffer_pP->data,
-              sdu_buffer_sizeP - pdcp_tailer_len);
+	if (enb_flagP == ENB_FLAG_NO)
+	  start_meas(&eNB_pdcp_stats[enb_mod_idP].validate_security);
+	else
+	  start_meas(&UE_pdcp_stats[ue_mod_idP].validate_security);
+	
+	pdcp_validate_security(pdcp_p, 
+			       srb_flagP,
+			       rb_idP, 
+			       pdcp_header_len,
+			       sequence_number, 
+			       sdu_buffer_pP->data,
+			       sdu_buffer_sizeP - pdcp_tailer_len);
+	if (enb_flagP == ENB_FLAG_NO)
+	  stop_meas(&eNB_pdcp_stats[enb_mod_idP].validate_security);
+	else
+	  stop_meas(&UE_pdcp_stats[ue_mod_idP].validate_security);
+	
       }
+#endif
+      //rrc_lite_data_ind(module_id, //Modified MW - L2 Interface
+      pdcp_rrc_data_ind(enb_mod_idP,
+			ue_mod_idP,
+			frameP,
+			enb_flagP,
+			rb_id,
+			sdu_buffer_sizeP - pdcp_header_len - pdcp_tailer_len,
+			(uint8_t*)&sdu_buffer_pP->data[pdcp_header_len]);
+      free_mem_block(sdu_buffer_pP);
+      // free_mem_block(new_sdu);
+      if (enb_flagP)
+	stop_meas(&eNB_pdcp_stats[enb_mod_idP].data_ind);
+      else
+	stop_meas(&UE_pdcp_stats[ue_mod_idP].data_ind);
+      return TRUE;
+    }
+  /*
+   * DRBs 
+   */
+    payload_offset=pdcp_header_len;// PDCP_USER_PLANE_DATA_PDU_LONG_SN_HEADER_SIZE;
+#if defined(ENABLE_SECURITY)
+    if (pdcp_p->security_activated == 1) {
+      if (enb_flagP == ENB_FLAG_NO)
+	start_meas(&eNB_pdcp_stats[enb_mod_idP].validate_security);
+      else
+	start_meas(&UE_pdcp_stats[ue_mod_idP].validate_security);
+      
+      pdcp_validate_security(pdcp_p, 
+			     srb_flagP,
+			     rb_idP, 
+			     pdcp_header_len,
+			     sequence_number, 
+			     sdu_buffer_pP->data,
+			     sdu_buffer_sizeP - pdcp_tailer_len);
+      if (enb_flagP == ENB_FLAG_NO)
+	stop_meas(&eNB_pdcp_stats[enb_mod_idP].validate_security);
+      else
+	stop_meas(&UE_pdcp_stats[ue_mod_idP].validate_security);
+      
+    }
+    
 #endif
   } else {
       payload_offset=0;
   }
+  
 #if defined(USER_MODE) && defined(OAI_EMU)
   if (oai_emulation.info.otg_enabled == 1) {
       module_id_t src_id, dst_id;
diff --git a/targets/RTAI/USER/Makefile b/targets/RTAI/USER/Makefile
index 00f2f8aa89344261432f5f3c49df855098e7e73e..4317eec1af647747288d5f734cf1630ed4b6b562 100644
--- a/targets/RTAI/USER/Makefile
+++ b/targets/RTAI/USER/Makefile
@@ -124,7 +124,7 @@ CFLAGS += -DEXMIMO_IOT
 endif
 
 ifdef RRC_MSG_PRINT
-CFLAG += ENABLE_RRG_MSG
+CFLAG += -DRRC_MSG_PRINT
 endif
 
 CFLAGS += $(L2_incl) $(ENB_APP_incl) $(UTIL_incl) $(UTILS_incl)
diff --git a/targets/RTAI/USER/lte-softmodem.c b/targets/RTAI/USER/lte-softmodem.c
index 1df2cb3ebb3474fa23ee63185d6b85c2c0ae47f2..21c668eeb614f89ee831bbb7410e9c648b8fecaa 100644
--- a/targets/RTAI/USER/lte-softmodem.c
+++ b/targets/RTAI/USER/lte-softmodem.c
@@ -238,6 +238,7 @@ static uint32_t                      txgain[4] =         {20,20,20,20};
 
 static runmode_t                mode;
 static int                      rx_input_level_dBm;
+static int                      log_messages=0;
 #ifdef XFORMS
 extern int                      otg_enabled;
 static char                     do_forms=0;
@@ -1119,7 +1120,7 @@ static void get_options (int argc, char **argv)
     {"no-L2-connect",   no_argument,        NULL, LONG_OPTION_NO_L2_CONNECT},
     {NULL, 0, NULL, 0}};
 
-  while ((c = getopt_long (argc, argv, "C:dF:K:qO:ST:UV",long_options,NULL)) != -1)
+  while ((c = getopt_long (argc, argv, "C:dF:K:qO:ST:UVR",long_options,NULL)) != -1)
     {
       switch (c)
         {
@@ -1255,10 +1256,12 @@ static void get_options (int argc, char **argv)
         case 'V':
           ouput_vcd = 1;
           break;
-	  /*	case  'q': 
+	case  'q': 
 	  opp_enabled = 1;
 	  break;
-	  */
+	case  'R' :
+	  log_messages =1;
+	  break;
         default:
           break;
         }
@@ -1382,7 +1385,9 @@ int main(int argc, char **argv) {
     set_comp_log(OSA,    LOG_DEBUG,   LOG_HIGH, 1);
 #endif
 #endif
-    set_comp_log(ENB_APP, LOG_INFO, LOG_HIGH, 1);;
+    set_comp_log(ENB_APP, LOG_INFO, LOG_HIGH, 1);
+    if (log_messages == 1) 
+      set_component_filelog(RRC);
   }
 
   if (ouput_vcd) {