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