From 1c248bcf499c426b2364c46c5aef1e93d554ed29 Mon Sep 17 00:00:00 2001
From: Melissa Elkadi <melissa@episci.com>
Date: Tue, 31 Aug 2021 15:53:14 -0700
Subject: [PATCH] Successfully writing to TUN if and removed usleep

---
 openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c | 17 ++++++++++++-----
 openair2/RRC/LTE/rrc_UE.c                 |  2 --
 2 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c b/openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c
index a8f3390cde..6e167bd10b 100644
--- a/openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c
+++ b/openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c
@@ -450,14 +450,21 @@ static void deliver_sdu_drb(void *_ue, nr_pdcp_entity_t *entity,
   uint8_t     *gtpu_buffer_p;
   int rb_id;
   int i;
-  LOG_I(PDCP, "Melissa Elkadi we got here %s\n", __FUNCTION__);
 
-  if(IS_SOFTMODEM_NOS1 || UE_NAS_USE_TUN){
+  if (IS_SOFTMODEM_NOS1 || UE_NAS_USE_TUN) {
     LOG_D(PDCP, "IP packet received, to be sent to TUN interface");
-    len = write(nas_sock_fd[0], buf, size);
-    LOG_D(PDCP, "Writing %d bytes to tunnel interface\n", len);
+
+    /* We are removing the instance ID from the buffer. TUN interfaces
+       care about the actual data we are sending. If we do not remove
+       the instance ID from the buffer, it will start with 00, and the
+       write will fail with errno = 22 (EINVAL) */
+    char *data_buffer = buf + 1;
+    int size_to_write = size - 1;
+
+    len = write(nas_sock_fd[0], data_buffer, size_to_write);
+    LOG_D(PDCP, "len = %d bytes to tunnel interface %d\n", len, nas_sock_fd[0]);
     if (len != size) {
-      LOG_E(PDCP, "%s:%d:%s: fatal\n", __FILE__, __LINE__, __FUNCTION__);
+      LOG_E(PDCP, "%s:%d:%s: fatal error %d: %s\n", __FILE__, __LINE__, __FUNCTION__, errno, strerror(errno));
     }
   }
   else{
diff --git a/openair2/RRC/LTE/rrc_UE.c b/openair2/RRC/LTE/rrc_UE.c
index fb363aa097..bb6364dfbd 100644
--- a/openair2/RRC/LTE/rrc_UE.c
+++ b/openair2/RRC/LTE/rrc_UE.c
@@ -4627,8 +4627,6 @@ void ue_measurement_report_triggering(protocol_ctxt_t *const ctxt_pP, const uint
             if (is_state_connected && is_t304_inactive && have_meas_flag) {
               LOG_I(RRC,"[UE %d] Frame %d: Triggering generation of Meas Report for NR_r15. count = %d\n",
                     ctxt_pP->module_id, ctxt_pP->frame, ue->subframeCount);
-              if (!SOFTMODEM_NOS1_BIT)
-                usleep(200000); //Melissa Elkadi come back for EPC
               if (ue->measReportList[i][j] == NULL) {
                 ue->measReportList[i][j] = malloc(sizeof(MEAS_REPORT_LIST));
               }
-- 
2.26.2