diff --git a/openair2/COMMON/platform_types.h b/openair2/COMMON/platform_types.h index 709ecfd9b2260a9ec3458a664448e2c27b14df36..670b191c0ba7b10a8d1d690c302bfbce5ab4e8fd 100755 --- a/openair2/COMMON/platform_types.h +++ b/openair2/COMMON/platform_types.h @@ -68,7 +68,6 @@ typedef uint32_t frame_t; typedef int32_t sframe_t; typedef uint32_t sub_frame_t; typedef uint8_t module_id_t; -typedef uint8_t configured_t; typedef uint8_t eNB_index_t; typedef uint16_t ue_id_t; typedef int16_t smodule_id_t; @@ -216,7 +215,7 @@ typedef struct protocol_ctxt_s { frame_t frame; /*!< \brief LTE frame number.*/ sub_frame_t subframe; /*!< \brief LTE sub frame number.*/ eNB_index_t eNB_index; /*!< \brief valid for UE indicating the index of connected eNB(s) */ - configured_t configured; /*!< \brief flag indicating whether the instance is configured or not */ + boolean_t configured; /*!< \brief flag indicating whether the instance is configured or not */ } protocol_ctxt_t; // warning time hardcoded #define PROTOCOL_CTXT_TIME_MILLI_SECONDS(CtXt_h) ((CtXt_h)->frame*10+(CtXt_h)->subframe) diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c index e0b993891feb2d21b8c32def213ff1a914381cf9..3779adbbc99adbd6a142f35f0635e4bfd29259de 100755 --- a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c +++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c @@ -147,16 +147,15 @@ boolean_t pdcp_data_req( if (h_rc != HASH_TABLE_OK) { if (modeP != PDCP_TRANSMISSION_MODE_TRANSPARENT) { - if ((ctxt_pP->configured == 0) && (ctxt_pP->frame%10 == 0)) - LOG_W(PDCP, PROTOCOL_CTXT_FMT" Instance is not configured for rb_id %d Ignoring SDU...\n", - PROTOCOL_CTXT_ARGS(ctxt_pP), - rb_idP); - ctxt_pP->configured=0; + LOG_W(PDCP, PROTOCOL_CTXT_FMT" Instance is not configured for rb_id %d Ignoring SDU...\n", + PROTOCOL_CTXT_ARGS(ctxt_pP), + rb_idP); + ctxt_pP->configured=FALSE; return FALSE; } }else{ // instance for a given RB is configured - ctxt_pP->configured=1; + ctxt_pP->configured=TRUE; } if (ctxt_pP->enb_flag == ENB_FLAG_NO) { diff --git a/openair3/GTPV1-U/gtpv1u_eNB.c b/openair3/GTPV1-U/gtpv1u_eNB.c index 9f2475ef37b204abb3f215d4778bf816b29cdd2c..2a5a12477588820d3f7bf281df31746695a7e276 100644 --- a/openair3/GTPV1-U/gtpv1u_eNB.c +++ b/openair3/GTPV1-U/gtpv1u_eNB.c @@ -28,7 +28,7 @@ *******************************************************************************/ /*! \file gtpv1u_eNB.c * \brief - * \author Sebastien ROUX, Lionel GAUTHIER + * \author Sebastien ROUX, Lionel GAUTHIER, Navid Nikaein * \version 1.0 * \company Eurecom * \email: lionel.gauthier@eurecom.fr @@ -289,7 +289,7 @@ NwGtpv1uRcT gtpv1u_eNB_process_stack_req( NwGtpv1uUlpHandleT hUlp, NwGtpv1uUlpApiT *pUlpApi) { - int result = 0; + boolean_t result = FALSE; teid_t teid = 0; hashtable_rc_t hash_rc = HASH_TABLE_KEY_NOT_EXISTS; gtpv1u_teid_data_t *gtpv1u_teid_data_p = NULL; @@ -335,38 +335,51 @@ NwGtpv1uRcT gtpv1u_eNB_process_stack_req( //#warning "LG eps bearer mapping to DRB id to do (offset -4)" PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, gtpv1u_teid_data_p->enb_id, ENB_FLAG_YES, gtpv1u_teid_data_p->ue_id, 0, 0,gtpv1u_teid_data_p->enb_id); - - MSC_LOG_TX_MESSAGE( - MSC_GTPU_ENB, - MSC_PDCP_ENB, - NULL,0, - MSC_AS_TIME_FMT" DATA-REQ rb %u size %u", - 0,0, - (gtpv1u_teid_data_p->eps_bearer_id) ? gtpv1u_teid_data_p->eps_bearer_id - 4: 5-4, - buffer_len); - - result = pdcp_data_req( - &ctxt, - SRB_FLAG_NO, - (gtpv1u_teid_data_p->eps_bearer_id) ? gtpv1u_teid_data_p->eps_bearer_id - 4: 5-4, - 0, // mui - SDU_CONFIRM_NO, // confirm - buffer_len, - buffer, - PDCP_TRANSMISSION_MODE_DATA); - AssertError (result == TRUE, return NW_GTPV1U_FAILURE ,"PDCP data request failed!\n"); + if (ctxt.configured == TRUE ) { + + MSC_LOG_TX_MESSAGE( + MSC_GTPU_ENB, + MSC_PDCP_ENB, + NULL,0, + MSC_AS_TIME_FMT" DATA-REQ rb %u size %u", + 0,0, + (gtpv1u_teid_data_p->eps_bearer_id) ? gtpv1u_teid_data_p->eps_bearer_id - 4: 5-4, + buffer_len); + + result = pdcp_data_req( + &ctxt, + SRB_FLAG_NO, + (gtpv1u_teid_data_p->eps_bearer_id) ? gtpv1u_teid_data_p->eps_bearer_id - 4: 5-4, + 0, // mui + SDU_CONFIRM_NO, // confirm + buffer_len, + buffer, + PDCP_TRANSMISSION_MODE_DATA); + } + + if ( result == FALSE ) { + + if (ctxt.configured == FALSE ) + LOG_W(GTPU, "PDCP data request failed, cause: RB is not configured!\n") ; + else + LOG_W(GTPU, "PDCP data request failed\n"); + + return NW_GTPV1U_FAILURE; + } + } else { - LOG_E(GTPU, "Received T-PDU from gtpv1u stack teid %u unknown size %u", teid, buffer_len); + LOG_W(GTPU, "Received T-PDU from gtpv1u stack teid %u unknown size %u", teid, buffer_len); } } - break; - + break; + default: { LOG_E(GTPU, "Received undefined UlpApi (%02x) from gtpv1u stack!\n", pUlpApi->apiType); } - } - + + } // end of switch + return NW_GTPV1U_OK; }