diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c index 1d0983f2887fec06fcb0cdbc52bee94bb3a1a670..9f46939d2e8fd77b716573477a1931fa8a9ca0ea 100755 --- a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c +++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c @@ -1394,10 +1394,9 @@ pdcp_config_req_asn1 ( case CONFIG_ACTION_ADD: DevAssert(pdcp_pP != NULL); if (ctxt_pP->enb_flag == ENB_FLAG_YES) { -#warning "TODO pdcp_module_id_to_rnti" pdcp_pP->is_ue = FALSE; - //pdcp_eNB_module_id_to_rnti[ctxt_pP.module_id][] = ctxt_pP->rnti; - + pdcp_eNB_UE_instance_to_rnti[pdcp_eNB_UE_instance_to_rnti_index] = ctxt_pP->rnti; + pdcp_eNB_UE_instance_to_rnti_index = (pdcp_eNB_UE_instance_to_rnti_index + 1) % NUMBER_OF_UE_MAX; } else { pdcp_pP->is_ue = TRUE; pdcp_UE_UE_module_id_to_rnti[ctxt_pP->module_id] = ctxt_pP->rnti; @@ -1845,10 +1844,12 @@ void pdcp_layer_init(void) memset(&pdcp_mbms_array_ue[instance][service_id][session_id], 0, sizeof(pdcp_mbms_t)); } } - #endif + pdcp_eNB_UE_instance_to_rnti[instance] = NOT_A_RNTI; } + pdcp_eNB_UE_instance_to_rnti_index = 0; + for (instance = 0; instance < NUMBER_OF_eNB_MAX; instance++) { #if defined(Rel10) diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp.h b/openair2/LAYER2/PDCP_v10.1.0/pdcp.h index 98f1062501cd9cf34120823ff72725e81d1d78b2..7b3febfd3bddadc65d40b8e70e85736404b6ed39 100755 --- a/openair2/LAYER2/PDCP_v10.1.0/pdcp.h +++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp.h @@ -447,6 +447,8 @@ public_pdcp(pdcp_stats_t eNB_pdcp_stats[NUMBER_OF_eNB_MAX];) // for UE code conly protected_pdcp(rnti_t pdcp_UE_UE_module_id_to_rnti[NUMBER_OF_UE_MAX];) +protected_pdcp(rnti_t pdcp_eNB_UE_instance_to_rnti[NUMBER_OF_UE_MAX];) // for noS1 mode +protected_pdcp(unsigned int pdcp_eNB_UE_instance_to_rnti_index;) #if defined(Rel10) public_pdcp(pdcp_mbms_t pdcp_mbms_array_ue[NUMBER_OF_UE_MAX][maxServiceCount][maxSessionPerPMCH];) // some constants from openair2/RRC/LITE/MESSAGES/asn1_constants.h public_pdcp(pdcp_mbms_t pdcp_mbms_array_eNB[NUMBER_OF_eNB_MAX][maxServiceCount][maxSessionPerPMCH];) // some constants from openair2/RRC/LITE/MESSAGES/asn1_constants.h diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c index ef18798dce9bcdcb12917274f7be12a4ee4a64ad..d09111e2f44357239c815813be729f1528fe158d 100755 --- a/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c +++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c @@ -308,7 +308,7 @@ int pdcp_fifo_flush_sdus(const protocol_ctxt_t* const ctxt_pP) int pdcp_fifo_read_input_sdus (const protocol_ctxt_t* const ctxt_pP) { #ifdef PDCP_USE_NETLINK - protocol_ctxt_t ctxt_cpy; + protocol_ctxt_t ctxt_cpy = *ctxt_pP; protocol_ctxt_t ctxt; hash_key_t key = HASHTABLE_NOT_A_KEY_VALUE; hashtable_rc_t h_rc; @@ -321,8 +321,6 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t* const ctxt_pP) pdcp_transmission_mode_t pdcp_mode = PDCP_TRANSMISSION_MODE_UNKNOWN; - ctxt_cpy = *ctxt_pP; - while (pdcp_netlink_dequeue_element(ctxt_pP, &data_p) != 0) { DevAssert(data_p != NULL); rab_id = data_p->pdcp_read_header.rb_id % maxDRB; @@ -505,6 +503,7 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t* const ctxt_pP) ctxt.module_id = 0; rab_id = pdcp_read_header_g.rb_id % maxDRB; } + ctxt.rnti = pdcp_eNB_UE_instance_to_rnti[ctxt.module_id]; #endif