Commit 9b691b3e authored by Laurent THOMAS's avatar Laurent THOMAS

fix old code errors, add CU to DU, 4G F1-U

parent 686e5856
...@@ -2968,9 +2968,8 @@ if (NOT ${NOS1}) ...@@ -2968,9 +2968,8 @@ if (NOT ${NOS1})
endif() endif()
target_link_libraries (lte-uesoftmodem target_link_libraries (lte-uesoftmodem
-Wl,--start-group -Wl,--start-group
RRC_LIB NR_RRC_LIB S1AP_LIB S1AP_ENB X2AP_LIB X2AP_ENB M2AP_LIB M2AP_ENB M3AP_LIB M3AP_ENB F1AP F1AP_LIB RRC_LIB NR_RRC_LIB S1AP_LIB S1AP_ENB X2AP_LIB X2AP_ENB M2AP_LIB M2AP_ENB M3AP_LIB M3AP_ENB
SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT MME_APP UDP SCHED_RU_LIB SCHED_UE_LIB PHY_COMMON
GTPV1U_OCP SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT MME_APP UDP SCHED_RU_LIB SCHED_UE_LIB PHY_COMMON
PHY_UE PHY_RU LFDS L2_UE L2_LTE LFDS7 SIMU_COMMON SIMU NFAPI_COMMON_LIB NFAPI_LIB NFAPI_PNF_LIB NFAPI_USER_LIB MISC_NFAPI_LTE_LIB PHY_UE PHY_RU LFDS L2_UE L2_LTE LFDS7 SIMU_COMMON SIMU NFAPI_COMMON_LIB NFAPI_LIB NFAPI_PNF_LIB NFAPI_USER_LIB MISC_NFAPI_LTE_LIB
${MSC_LIB} ${RAL_LIB} ${NAS_UE_LIB} ITTI ${FLPT_MSG_LIB} ${ASYNC_IF_LIB} ${ATLAS_LIBRARIES} ${MSC_LIB} ${RAL_LIB} ${NAS_UE_LIB} ITTI ${FLPT_MSG_LIB} ${ASYNC_IF_LIB} ${ATLAS_LIBRARIES}
-Wl,--end-group z dl) -Wl,--end-group z dl)
......
...@@ -1046,13 +1046,13 @@ void init_pdcp(void) { ...@@ -1046,13 +1046,13 @@ void init_pdcp(void) {
pdcp_module_init(pdcp_initmask); pdcp_module_init(pdcp_initmask);
if (NODE_IS_CU(RC.rrc[0]->node_type)) { if (NODE_IS_CU(RC.rrc[0]->node_type)) {
//pdcp_set_rlc_data_req_func((send_rlc_data_req_func_t)proto_agent_send_rlc_data_req); //pdcp_set_rlc_data_req_func(proto_agent_send_rlc_data_req);
} else { } else {
pdcp_set_rlc_data_req_func((send_rlc_data_req_func_t) rlc_data_req); pdcp_set_rlc_data_req_func(rlc_data_req);
pdcp_set_pdcp_data_ind_func((pdcp_data_ind_func_t) pdcp_data_ind); pdcp_set_pdcp_data_ind_func(pdcp_data_ind);
} }
} else { } else {
//pdcp_set_pdcp_data_ind_func((pdcp_data_ind_func_t) proto_agent_send_pdcp_data_ind); //pdcp_set_pdcp_data_ind_func(proto_agent_send_pdcp_data_ind);
} }
} }
......
...@@ -610,15 +610,15 @@ void init_pdcp(void) { ...@@ -610,15 +610,15 @@ void init_pdcp(void) {
if (NODE_IS_CU(RC.nrrrc[0]->node_type)) { if (NODE_IS_CU(RC.nrrrc[0]->node_type)) {
LOG_I(PDCP, "node is CU, pdcp send rlc_data_req by proto_agent \n"); LOG_I(PDCP, "node is CU, pdcp send rlc_data_req by proto_agent \n");
pdcp_set_rlc_data_req_func((send_rlc_data_req_func_t)proto_agent_send_rlc_data_req); pdcp_set_rlc_data_req_func(proto_agent_send_rlc_data_req);
} else { } else {
LOG_I(PDCP, "node is gNB \n"); LOG_I(PDCP, "node is gNB \n");
pdcp_set_rlc_data_req_func((send_rlc_data_req_func_t) rlc_data_req); pdcp_set_rlc_data_req_func(rlc_data_req);
pdcp_set_pdcp_data_ind_func((pdcp_data_ind_func_t) pdcp_data_ind); pdcp_set_pdcp_data_ind_func(pdcp_data_ind);
} }
} else { } else {
LOG_I(PDCP, "node is DU, rlc send pdcp_data_ind by proto_agent \n"); LOG_I(PDCP, "node is DU, rlc send pdcp_data_ind by proto_agent \n");
pdcp_set_pdcp_data_ind_func((pdcp_data_ind_func_t) proto_agent_send_pdcp_data_ind); pdcp_set_pdcp_data_ind_func(proto_agent_send_pdcp_data_ind);
} }
} }
......
...@@ -397,8 +397,8 @@ static void init_pdcp(void) { ...@@ -397,8 +397,8 @@ static void init_pdcp(void) {
nr_DRB_preconfiguration();*/ nr_DRB_preconfiguration();*/
pdcp_layer_init(); pdcp_layer_init();
pdcp_module_init(pdcp_initmask); pdcp_module_init(pdcp_initmask);
pdcp_set_rlc_data_req_func((send_rlc_data_req_func_t) rlc_data_req); pdcp_set_rlc_data_req_func(rlc_data_req);
pdcp_set_pdcp_data_ind_func((pdcp_data_ind_func_t) pdcp_data_ind); pdcp_set_pdcp_data_ind_func(pdcp_data_ind);
} }
// Stupid function addition because UE itti messages queues definition is common with eNB // Stupid function addition because UE itti messages queues definition is common with eNB
......
...@@ -329,8 +329,8 @@ static void init_pdcp(void) { ...@@ -329,8 +329,8 @@ static void init_pdcp(void) {
} }
pdcp_module_init(pdcp_initmask); pdcp_module_init(pdcp_initmask);
pdcp_set_rlc_data_req_func((send_rlc_data_req_func_t) rlc_data_req); pdcp_set_rlc_data_req_func(rlc_data_req);
pdcp_set_pdcp_data_ind_func((pdcp_data_ind_func_t) pdcp_data_ind); pdcp_set_pdcp_data_ind_func(pdcp_data_ind);
} }
void init_main_gNB(void) { void init_main_gNB(void) {
......
...@@ -326,6 +326,6 @@ int CU_handle_UL_RRC_MESSAGE_TRANSFER(instance_t instance, ...@@ -326,6 +326,6 @@ int CU_handle_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
0, // embms_flag 0, // embms_flag
srb_id, srb_id,
ie->value.choice.RRCContainer.size, ie->value.choice.RRCContainer.size,
mb); mb, NULL, NULL);
return 0; return 0;
} }
...@@ -522,8 +522,8 @@ int CU_send_UE_CONTEXT_SETUP_REQUEST(instance_t instance, ...@@ -522,8 +522,8 @@ int CU_send_UE_CONTEXT_SETUP_REQUEST(instance_t instance,
f1ap_ue_context_setup_req->drbs_to_be_setup[i].up_ul_tnl[j].teid= f1ap_ue_context_setup_req->drbs_to_be_setup[i].up_ul_tnl[j].teid=
newGtpuCreateTunnel(getCxt(CUtype, instance)->gtpInst, newGtpuCreateTunnel(getCxt(CUtype, instance)->gtpInst,
f1ap_ue_context_setup_req->rnti, f1ap_ue_context_setup_req->rnti,
f1ap_ue_context_setup_req->drbs_to_be_setup[i].drb_id, f1ap_ue_context_setup_req->drbs_to_be_setup[i].drb_id-4,
f1ap_ue_context_setup_req->drbs_to_be_setup[i].drb_id, f1ap_ue_context_setup_req->drbs_to_be_setup[i].drb_id-4,
0xFFFF, // We will set the right value from DU answer 0xFFFF, // We will set the right value from DU answer
addr, addr,
f1ap_ue_context_setup_req->drbs_to_be_setup[i].up_dl_tnl[0].port, f1ap_ue_context_setup_req->drbs_to_be_setup[i].up_dl_tnl[0].port,
......
...@@ -148,15 +148,15 @@ static void init_pdcp(void) { ...@@ -148,15 +148,15 @@ static void init_pdcp(void) {
if (NODE_IS_CU(RC.nrrrc[0]->node_type)) { if (NODE_IS_CU(RC.nrrrc[0]->node_type)) {
LOG_I(PDCP, "node is CU, pdcp send rlc_data_req by proto_agent \n"); LOG_I(PDCP, "node is CU, pdcp send rlc_data_req by proto_agent \n");
pdcp_set_rlc_data_req_func((send_rlc_data_req_func_t)proto_agent_send_rlc_data_req); pdcp_set_rlc_data_req_func(proto_agent_send_rlc_data_req);
} else { } else {
LOG_I(PDCP, "node is gNB \n"); LOG_I(PDCP, "node is gNB \n");
pdcp_set_rlc_data_req_func((send_rlc_data_req_func_t) rlc_data_req); pdcp_set_rlc_data_req_func(rlc_data_req);
pdcp_set_pdcp_data_ind_func((pdcp_data_ind_func_t) pdcp_data_ind); pdcp_set_pdcp_data_ind_func(pdcp_data_ind);
} }
} else { } else {
LOG_I(PDCP, "node is DU, rlc send pdcp_data_ind by proto_agent \n"); LOG_I(PDCP, "node is DU, rlc send pdcp_data_ind by proto_agent \n");
pdcp_set_pdcp_data_ind_func((pdcp_data_ind_func_t) proto_agent_send_pdcp_data_ind); pdcp_set_pdcp_data_ind_func(proto_agent_send_pdcp_data_ind);
} }
} }
......
...@@ -152,16 +152,14 @@ boolean_t cu_f1u_data_req( ...@@ -152,16 +152,14 @@ boolean_t cu_f1u_data_req(
const pdcp_transmission_mode_t mode, const pdcp_transmission_mode_t mode,
const uint32_t *const sourceL2Id, const uint32_t *const sourceL2Id,
const uint32_t *const destinationL2Id const uint32_t *const destinationL2Id
) ) {
{
mem_block_t *memblock = get_free_mem_block(sdu_buffer_size, __func__); mem_block_t *memblock = get_free_mem_block(sdu_buffer_size, __func__);
if (memblock == NULL) { if (memblock == NULL) {
LOG_E(RLC, "%s:%d:%s: ERROR: get_free_mem_block failed\n", __FILE__, __LINE__, __FUNCTION__); LOG_E(RLC, "%s:%d:%s: ERROR: get_free_mem_block failed\n", __FILE__, __LINE__, __FUNCTION__);
exit(1); exit(1);
} }
memcpy(memblock->data,sdu_buffer, sdu_buffer_size); memcpy(memblock->data,sdu_buffer, sdu_buffer_size);
// These -4 are boring int ret=pdcp_data_ind(ctxt_pP,srb_flagP, false, rb_id, sdu_buffer_size, memblock, NULL, NULL);
int ret=pdcp_data_ind(ctxt_pP,srb_flagP, false, rb_id-4, sdu_buffer_size, memblock);
if (!ret) { if (!ret) {
LOG_E(RLC, "%s:%d:%s: ERROR: pdcp_data_ind failed\n", __FILE__, __LINE__, __FUNCTION__); LOG_E(RLC, "%s:%d:%s: ERROR: pdcp_data_ind failed\n", __FILE__, __LINE__, __FUNCTION__);
/* what to do in case of failure? for the moment: nothing */ /* what to do in case of failure? for the moment: nothing */
...@@ -204,6 +202,33 @@ void *pdcp_stats_thread(void *param) { ...@@ -204,6 +202,33 @@ void *pdcp_stats_thread(void *param) {
uint64_t get_pdcp_optmask(void) { uint64_t get_pdcp_optmask(void) {
return pdcp_params.optmask; return pdcp_params.optmask;
} }
rlc_op_status_t cu_send_to_du(const protocol_ctxt_t *const ctxt,
const srb_flag_t srb_flag, const MBMS_flag_t MBMS_flag,
const rb_id_t rb_id, const mui_t mui,
confirm_t confirm, sdu_size_t size, mem_block_t *sdu,
const uint32_t *const sourceID, const uint32_t *const destID) {
uint8_t *gtpu_buffer_p = itti_malloc(TASK_PDCP_ENB, TASK_GTPV1_U,
size + GTPU_HEADER_OVERHEAD_MAX);
AssertFatal(gtpu_buffer_p != NULL, "OUT OF MEMORY");
memcpy(gtpu_buffer_p+GTPU_HEADER_OVERHEAD_MAX,
sdu->data,
size );
MessageDef *message_p = itti_alloc_new_message(TASK_PDCP_ENB, 0, GTPV1U_ENB_TUNNEL_DATA_REQ);
AssertFatal(message_p != NULL, "OUT OF MEMORY");
gtpv1u_enb_tunnel_data_req_t *req=&GTPV1U_ENB_TUNNEL_DATA_REQ(message_p);
req->buffer = gtpu_buffer_p;
req->length = size;
req->offset = GTPU_HEADER_OVERHEAD_MAX;
req->rnti = ctxt->rnti;
req->rab_id = rb_id;
LOG_D(PDCP, "%s() (drb %ld) sending message to gtp size %d\n",
__func__, rb_id, size);
extern instance_t CUuniqInstance;
itti_send_msg_to_task(TASK_VARIABLE, CUuniqInstance, message_p);
return TRUE;
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
/* /*
* If PDCP_UNIT_TEST is set here then data flow between PDCP and RLC is broken * If PDCP_UNIT_TEST is set here then data flow between PDCP and RLC is broken
...@@ -599,7 +624,9 @@ pdcp_data_ind( ...@@ -599,7 +624,9 @@ pdcp_data_ind(
const MBMS_flag_t MBMS_flagP, const MBMS_flag_t MBMS_flagP,
const rb_id_t rb_idP, const rb_id_t rb_idP,
const sdu_size_t sdu_buffer_sizeP, const sdu_size_t sdu_buffer_sizeP,
mem_block_t *const sdu_buffer_pP mem_block_t *const sdu_buffer_pP,
const uint32_t *const srcID,
const uint32_t *const dstID
) )
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
{ {
......
...@@ -47,12 +47,14 @@ ...@@ -47,12 +47,14 @@
typedef rlc_op_status_t (*send_rlc_data_req_func_t)(const protocol_ctxt_t *const, typedef rlc_op_status_t (*send_rlc_data_req_func_t)(const protocol_ctxt_t *const,
const srb_flag_t, const MBMS_flag_t, const srb_flag_t, const MBMS_flag_t,
const rb_id_t, const mui_t, const rb_id_t, const mui_t,
confirm_t, sdu_size_t, mem_block_t *,const uint32_t *const, const uint32_t *const); confirm_t, sdu_size_t, mem_block_t *,const uint32_t *const, const uint32_t *const);
typedef boolean_t (*pdcp_data_ind_func_t)( const protocol_ctxt_t *, const srb_flag_t,
const MBMS_flag_t, const rb_id_t, const sdu_size_t, typedef boolean_t (pdcp_data_ind_t)( const protocol_ctxt_t *, const srb_flag_t,
mem_block_t *,const uint32_t *const, const uint32_t *const); const MBMS_flag_t, const rb_id_t, const sdu_size_t,
mem_block_t *,const uint32_t *const, const uint32_t *const);
typedef pdcp_data_ind_t* pdcp_data_ind_func_t;
#define ENB_NAS_USE_TUN_W_MBMS_BIT (1<< 10) #define ENB_NAS_USE_TUN_W_MBMS_BIT (1<< 10)
#define PDCP_USE_NETLINK_BIT (1<< 11) #define PDCP_USE_NETLINK_BIT (1<< 11)
...@@ -282,13 +284,7 @@ boolean_t cu_f1u_data_req( ...@@ -282,13 +284,7 @@ boolean_t cu_f1u_data_req(
* \note None * \note None
* @ingroup _pdcp * @ingroup _pdcp
*/ */
boolean_t pdcp_data_ind( pdcp_data_ind_t pdcp_data_ind;
const protocol_ctxt_t *const ctxt_pP,
const srb_flag_t srb_flagP,
const MBMS_flag_t MBMS_flagP,
const rb_id_t rb_id,
const sdu_size_t sdu_buffer_size,
mem_block_t *const sdu_buffer);
/*! \fn void rrc_pdcp_config_req(const protocol_ctxt_t* const ,uint32_t,rb_id_t,uint8_t) /*! \fn void rrc_pdcp_config_req(const protocol_ctxt_t* const ,uint32_t,rb_id_t,uint8_t)
* \brief This functions initializes relevant PDCP entity * \brief This functions initializes relevant PDCP entity
...@@ -434,7 +430,10 @@ pdcp_data_ind_func_t get_pdcp_data_ind_func(void); ...@@ -434,7 +430,10 @@ pdcp_data_ind_func_t get_pdcp_data_ind_func(void);
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
int pdcp_fifo_flush_mbms_sdus ( const protocol_ctxt_t *const ctxt_pP); int pdcp_fifo_flush_mbms_sdus ( const protocol_ctxt_t *const ctxt_pP);
int pdcp_fifo_read_input_mbms_sdus_fromtun ( const protocol_ctxt_t *const ctxt_pP); int pdcp_fifo_read_input_mbms_sdus_fromtun ( const protocol_ctxt_t *const ctxt_pP);
rlc_op_status_t cu_send_to_du(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 mui_t muiP,
confirm_t confirmP, sdu_size_t sdu_sizeP, mem_block_t *sdu_pP, const uint32_t *const, const uint32_t *const);
/* /*
* Following two types are utilized between NAS driver and PDCP * Following two types are utilized between NAS driver and PDCP
......
...@@ -157,7 +157,7 @@ void proto_agent_stop(mod_id_t mod_id) { ...@@ -157,7 +157,7 @@ void proto_agent_stop(mod_id_t mod_id) {
rlc_op_status_t proto_agent_send_rlc_data_req(const protocol_ctxt_t *const ctxt_pP, rlc_op_status_t proto_agent_send_rlc_data_req(const protocol_ctxt_t *const ctxt_pP,
const srb_flag_t srb_flagP, const MBMS_flag_t MBMS_flagP, const srb_flag_t srb_flagP, const MBMS_flag_t MBMS_flagP,
const rb_id_t rb_idP, const mui_t muiP, const rb_id_t rb_idP, const mui_t muiP,
confirm_t confirmP, sdu_size_t sdu_sizeP, mem_block_t *sdu_pP) { confirm_t confirmP, sdu_size_t sdu_sizeP, mem_block_t *sdu_pP,const uint32_t *const SrcID, const uint32_t *const DstID) {
uint8_t *msg = NULL; uint8_t *msg = NULL;
Protocol__FlexsplitMessage *init_msg=NULL; Protocol__FlexsplitMessage *init_msg=NULL;
int msg_flag = 0; int msg_flag = 0;
...@@ -191,10 +191,10 @@ error: ...@@ -191,10 +191,10 @@ error:
} }
boolean_t boolean_t proto_agent_send_pdcp_data_ind(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,
proto_agent_send_pdcp_data_ind(const protocol_ctxt_t *const ctxt_pP, const srb_flag_t srb_flagP, sdu_size_t sdu_sizeP, mem_block_t *sdu_pP,
const MBMS_flag_t MBMS_flagP, const rb_id_t rb_idP, sdu_size_t sdu_sizeP, mem_block_t *sdu_pP) { const uint32_t *const SrcID, const uint32_t *const DstID) {
uint8_t *msg = NULL; uint8_t *msg = NULL;
Protocol__FlexsplitMessage *init_msg = NULL; Protocol__FlexsplitMessage *init_msg = NULL;
int msg_flag = 0; int msg_flag = 0;
......
...@@ -42,10 +42,8 @@ void proto_agent_stop(mod_id_t mod_id); ...@@ -42,10 +42,8 @@ void proto_agent_stop(mod_id_t mod_id);
rlc_op_status_t proto_agent_send_rlc_data_req( const protocol_ctxt_t *const ctxt_pP, rlc_op_status_t proto_agent_send_rlc_data_req( const protocol_ctxt_t *const ctxt_pP,
const srb_flag_t srb_flagP, const MBMS_flag_t MBMS_flagP, const srb_flag_t srb_flagP, const MBMS_flag_t MBMS_flagP,
const rb_id_t rb_idP, const mui_t muiP, confirm_t confirmP, const rb_id_t rb_idP, const mui_t muiP, confirm_t confirmP,
sdu_size_t sdu_sizeP, mem_block_t *sdu_pP); sdu_size_t sdu_sizeP, mem_block_t *sdu_pP,const uint32_t *const SrcID, const uint32_t *const DstID);
boolean_t proto_agent_send_pdcp_data_ind(const protocol_ctxt_t *const ctxt_pP, pdcp_data_ind_t proto_agent_send_pdcp_data_ind;
const srb_flag_t srb_flagP, const MBMS_flag_t MBMS_flagP,
const rb_id_t rb_idP, sdu_size_t sdu_sizeP, mem_block_t *sdu_pP);
#endif #endif
...@@ -496,14 +496,6 @@ error: ...@@ -496,14 +496,6 @@ error:
return -1; return -1;
} }
boolean_t pdcp_data_ind(
const protocol_ctxt_t *const ctxt_pP,
const srb_flag_t srb_flagP,
const MBMS_flag_t MBMS_flagP,
const rb_id_t rb_id,
const sdu_size_t sdu_buffer_size,
mem_block_t *const sdu_buffer);
int proto_agent_pdcp_data_ind_process(mod_id_t mod_id, const void *params, Protocol__FlexsplitMessage **msg) { int proto_agent_pdcp_data_ind_process(mod_id_t mod_id, const void *params, Protocol__FlexsplitMessage **msg) {
boolean_t result = 0; boolean_t result = 0;
Protocol__FlexsplitMessage *input = (Protocol__FlexsplitMessage *)params; Protocol__FlexsplitMessage *input = (Protocol__FlexsplitMessage *)params;
...@@ -545,7 +537,7 @@ int proto_agent_pdcp_data_ind_process(mod_id_t mod_id, const void *params, Proto ...@@ -545,7 +537,7 @@ int proto_agent_pdcp_data_ind_process(mod_id_t mod_id, const void *params, Proto
flag_MBMS, flag_MBMS,
rb_idP, rb_idP,
pdcp_pdu_size, pdcp_pdu_size,
pdcp_pdu_p); pdcp_pdu_p, NULL, NULL);
return result; return result;
error: error:
......
...@@ -463,7 +463,8 @@ static void deliver_sdu_drb(void *_ue, nr_pdcp_entity_t *entity, ...@@ -463,7 +463,8 @@ static void deliver_sdu_drb(void *_ue, nr_pdcp_entity_t *entity,
rb_found: rb_found:
{ {
int offset=0; int offset=0;
if (entity->has_sdap == 1 && entity->has_sdapULheader == 1) offset = 1; // this is the offset of the SDAP header in bytes if (entity->has_sdap == 1 && entity->has_sdapULheader == 1)
offset = 1; // this is the offset of the SDAP header in bytes
message_p = itti_alloc_new_message_sized(TASK_PDCP_ENB, 0, message_p = itti_alloc_new_message_sized(TASK_PDCP_ENB, 0,
GTPV1U_GNB_TUNNEL_DATA_REQ, GTPV1U_GNB_TUNNEL_DATA_REQ,
...@@ -654,7 +655,9 @@ boolean_t pdcp_data_ind( ...@@ -654,7 +655,9 @@ boolean_t pdcp_data_ind(
const MBMS_flag_t MBMS_flagP, const MBMS_flag_t MBMS_flagP,
const rb_id_t rb_id, const rb_id_t rb_id,
const sdu_size_t sdu_buffer_size, const sdu_size_t sdu_buffer_size,
mem_block_t *const sdu_buffer) mem_block_t *const sdu_buffer,
const uint32_t *const sourceL2Id,
const uint32_t *const destinationL2Id)
{ {
nr_pdcp_ue_t *ue; nr_pdcp_ue_t *ue;
nr_pdcp_entity_t *rb; nr_pdcp_entity_t *rb;
...@@ -1234,10 +1237,8 @@ boolean_t cu_f1u_data_req( ...@@ -1234,10 +1237,8 @@ boolean_t cu_f1u_data_req(
const sdu_size_t sdu_buffer_size, const sdu_size_t sdu_buffer_size,
unsigned char *const sdu_buffer, unsigned char *const sdu_buffer,
const pdcp_transmission_mode_t mode const pdcp_transmission_mode_t mode
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
,const uint32_t *const sourceL2Id ,const uint32_t *const sourceL2Id
,const uint32_t *const destinationL2Id ,const uint32_t *const destinationL2Id
#endif
) { ) {
//Force instance id to 0, OAI incoherent instance management //Force instance id to 0, OAI incoherent instance management
...@@ -1248,7 +1249,7 @@ boolean_t cu_f1u_data_req( ...@@ -1248,7 +1249,7 @@ boolean_t cu_f1u_data_req(
exit(1); exit(1);
} }
memcpy(memblock->data,sdu_buffer, sdu_buffer_size); memcpy(memblock->data,sdu_buffer, sdu_buffer_size);
int ret=pdcp_data_ind(ctxt_pP,srb_flagP, false, rb_id, sdu_buffer_size, memblock); int ret=pdcp_data_ind(ctxt_pP,srb_flagP, false, rb_id, sdu_buffer_size, memblock, NULL, NULL);
if (!ret) { if (!ret) {
LOG_E(RLC, "%s:%d:%s: ERROR: pdcp_data_ind failed\n", __FILE__, __LINE__, __FUNCTION__); LOG_E(RLC, "%s:%d:%s: ERROR: pdcp_data_ind failed\n", __FILE__, __LINE__, __FUNCTION__);
/* what to do in case of failure? for the moment: nothing */ /* what to do in case of failure? for the moment: nothing */
...@@ -1265,10 +1266,8 @@ boolean_t pdcp_data_req( ...@@ -1265,10 +1266,8 @@ boolean_t pdcp_data_req(
const sdu_size_t sdu_buffer_size, const sdu_size_t sdu_buffer_size,
unsigned char *const sdu_buffer, unsigned char *const sdu_buffer,
const pdcp_transmission_mode_t mode const pdcp_transmission_mode_t mode
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
,const uint32_t *const sourceL2Id ,const uint32_t *const sourceL2Id
,const uint32_t *const destinationL2Id ,const uint32_t *const destinationL2Id
#endif
) )
{ {
if (srb_flagP) { if (srb_flagP) {
......
...@@ -344,16 +344,16 @@ rlc_buffer_occupancy_t mac_rlc_get_buffer_occupancy_ind( ...@@ -344,16 +344,16 @@ rlc_buffer_occupancy_t mac_rlc_get_buffer_occupancy_ind(
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 srb_flag_t srb_flagP,
const MBMS_flag_t MBMS_flagP, const MBMS_flag_t MBMS_flagP,
const rb_id_t rb_idP, const rb_id_t rb_idP,
const mui_t muiP, const mui_t muiP,
confirm_t confirmP, confirm_t confirmP,
sdu_size_t sdu_sizeP, sdu_size_t sdu_sizeP,
mem_block_t *sdu_pP, mem_block_t *sdu_pP,
const uint32_t *const sourceL2Id, const uint32_t *const sourceL2Id,
const uint32_t *const destinationL2Id const uint32_t *const destinationL2Id
) )
{ {
int rnti = ctxt_pP->rnti; int rnti = ctxt_pP->rnti;
nr_rlc_ue_t *ue; nr_rlc_ue_t *ue;
...@@ -521,7 +521,7 @@ rb_found: ...@@ -521,7 +521,7 @@ rb_found:
exit(1); exit(1);
} }
memcpy(memblock->data, buf, size); memcpy(memblock->data, buf, size);
if (!pdcp_data_ind(&ctx, is_srb, 0, rb_id, size, memblock)) { if (!pdcp_data_ind(&ctx, is_srb, 0, rb_id, size, memblock, NULL, NULL)) {
LOG_E(RLC, "%s:%d:%s: ERROR: pdcp_data_ind failed\n", __FILE__, __LINE__, __FUNCTION__); LOG_E(RLC, "%s:%d:%s: ERROR: pdcp_data_ind failed\n", __FILE__, __LINE__, __FUNCTION__);
/* what to do in case of failure? for the moment: nothing */ /* what to do in case of failure? for the moment: nothing */
} }
......
...@@ -400,8 +400,8 @@ statis void init_pdcp(void) { ...@@ -400,8 +400,8 @@ statis void init_pdcp(void) {
pdcp_module_init(pdcp_initmask); pdcp_module_init(pdcp_initmask);
pdcp_set_rlc_data_req_func((send_rlc_data_req_func_t) rlc_data_req); pdcp_set_rlc_data_req_func(rlc_data_req);
pdcp_set_pdcp_data_ind_func((pdcp_data_ind_func_t) pdcp_data_ind); pdcp_set_pdcp_data_ind_func(pdcp_data_ind);
} }
......
#ifndef __GTPUNEW_ITF_H__ #ifndef __GTPUNEW_ITF_H__
#define __GTPUNEW_ITF_H__ #define __GTPUNEW_ITF_H__
#define GTPNOK -1 #define GTPNOK -1
# define GTPU_HEADER_OVERHEAD_MAX 64 # define GTPU_HEADER_OVERHEAD_MAX 64
...@@ -31,7 +32,7 @@ typedef boolean_t (*gtpCallback)( ...@@ -31,7 +32,7 @@ typedef boolean_t (*gtpCallback)(
const pdcp_transmission_mode_t modeP, const pdcp_transmission_mode_t modeP,
const uint32_t *sourceL2Id, const uint32_t *sourceL2Id,
const uint32_t *destinationL2Id); const uint32_t *destinationL2Id);
typedef struct openAddr_s { typedef struct openAddr_s {
char originHost[HOST_NAME_MAX]; char originHost[HOST_NAME_MAX];
char originService[HOST_NAME_MAX]; char originService[HOST_NAME_MAX];
......
...@@ -496,13 +496,13 @@ static void init_pdcp(void) { ...@@ -496,13 +496,13 @@ static void init_pdcp(void) {
pdcp_module_init(pdcp_initmask); pdcp_module_init(pdcp_initmask);
if (NODE_IS_CU(RC.rrc[0]->node_type)) { if (NODE_IS_CU(RC.rrc[0]->node_type)) {
pdcp_set_rlc_data_req_func((send_rlc_data_req_func_t)proto_agent_send_rlc_data_req); pdcp_set_rlc_data_req_func(cu_send_to_du);
} else { } else {
pdcp_set_rlc_data_req_func((send_rlc_data_req_func_t) rlc_data_req); pdcp_set_rlc_data_req_func(rlc_data_req);
pdcp_set_pdcp_data_ind_func((pdcp_data_ind_func_t) pdcp_data_ind); pdcp_set_pdcp_data_ind_func(pdcp_data_ind);
} }
} else { } else {
pdcp_set_pdcp_data_ind_func((pdcp_data_ind_func_t) proto_agent_send_pdcp_data_ind); pdcp_set_pdcp_data_ind_func(proto_agent_send_pdcp_data_ind);
} }
} }
......
...@@ -194,7 +194,7 @@ uint8_t abstraction_flag=0; ...@@ -194,7 +194,7 @@ uint8_t abstraction_flag=0;
// needed for pdcp.c // needed for pdcp.c
RAN_CONTEXT_t RC; RAN_CONTEXT_t RC;
instance_t CUuniqInstance=0;
/* forward declarations */ /* forward declarations */
void set_default_frame_parms(LTE_DL_FRAME_PARMS *frame_parms[MAX_NUM_CCs]); void set_default_frame_parms(LTE_DL_FRAME_PARMS *frame_parms[MAX_NUM_CCs]);
...@@ -535,8 +535,8 @@ static void init_pdcp(void) { ...@@ -535,8 +535,8 @@ static void init_pdcp(void) {
pdcp_initmask = pdcp_initmask | UE_NAS_USE_TUN_BIT; pdcp_initmask = pdcp_initmask | UE_NAS_USE_TUN_BIT;
pdcp_module_init(pdcp_initmask); pdcp_module_init(pdcp_initmask);
pdcp_set_rlc_data_req_func((send_rlc_data_req_func_t) rlc_data_req); pdcp_set_rlc_data_req_func(rlc_data_req);
pdcp_set_pdcp_data_ind_func((pdcp_data_ind_func_t) pdcp_data_ind); pdcp_set_pdcp_data_ind_func(pdcp_data_ind);
} }
// Stupid function addition because UE itti messages queues definition is common with eNB // Stupid function addition because UE itti messages queues definition is common with eNB
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment