diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt index f52a3c465f6b7c75e2237e40c188425abcde4a33..7907d68f45030445bb7bef6d53bfc334b69e1876 100644 --- a/cmake_targets/CMakeLists.txt +++ b/cmake_targets/CMakeLists.txt @@ -940,8 +940,8 @@ set (ENB_APP_SRC add_library(L2 ${L2_SRC} ${MAC_SRC} - ${ENB_APP_SRC} - ${OPENAIR2_DIR}/RRC/L2_INTERFACE/openair_rrc_L2_interface.c) + ${ENB_APP_SRC}) +# ${OPENAIR2_DIR}/RRC/L2_INTERFACE/openair_rrc_L2_interface.c) # L3 Libs ########################## diff --git a/openair1/SCHED/phy_procedures_lte_eNb.c b/openair1/SCHED/phy_procedures_lte_eNb.c index d54e6856f3a43e2f7d794d7cf817ddc263359a10..a7796a9b6925b68b3710ea2c50c9e7ce633050c6 100755 --- a/openair1/SCHED/phy_procedures_lte_eNb.c +++ b/openair1/SCHED/phy_procedures_lte_eNb.c @@ -1342,13 +1342,21 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e // If we've dropped the UE, go back to PRACH mode for this UE //#if !defined(EXMIMO_IOT) if (phy_vars_eNB->eNB_UE_stats[i].ulsch_consecutive_errors == ULSCH_max_consecutive_errors) { - LOG_W(PHY,"[eNB %d, CC %d] frame %d, subframe %d, UE %d: ULSCH consecutive error count reached %u, removing UE\n", + LOG_W(PHY,"[eNB %d, CC %d] frame %d, subframe %d, UE %d: ULSCH consecutive error count reached %u, triggering UL Failure\n", phy_vars_eNB->Mod_id,phy_vars_eNB->CC_id,frame,subframe, i, phy_vars_eNB->eNB_UE_stats[i].ulsch_consecutive_errors); + /* phy_vars_eNB->eNB_UE_stats[i].mode = PRACH; remove_ue(phy_vars_eNB->eNB_UE_stats[i].crnti,phy_vars_eNB,abstraction_flag); + */ phy_vars_eNB->eNB_UE_stats[i].ulsch_consecutive_errors=0; + mac_xface->UL_failure_indication(phy_vars_eNB->Mod_id, + phy_vars_eNB->CC_id, + frame, + phy_vars_eNB->eNB_UE_stats[i].crnti, + subframe); + } - + //#endif } diff --git a/openair1/SCHED/phy_procedures_lte_ue.c b/openair1/SCHED/phy_procedures_lte_ue.c index bc84beae43afce5eea9d3990609f4cac4b71e06a..ef93068fb45d3563f3248212a106e433bd386fbd 100755 --- a/openair1/SCHED/phy_procedures_lte_ue.c +++ b/openair1/SCHED/phy_procedures_lte_ue.c @@ -2676,7 +2676,7 @@ int phy_procedures_UE_RX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstrac if (ret == (1+phy_vars_ue->dlsch_ue[eNB_id][0]->max_turbo_iterations)) { phy_vars_ue->dlsch_errors[eNB_id]++; - //#ifdef DEBUG_PHY_PROC +#ifdef DEBUG_PHY_PROC LOG_D(PHY,"[UE %d][PDSCH %x/%d] Frame %d subframe %d DLSCH in error (rv %d,mcs %d,TBS %d)\n", phy_vars_ue->Mod_id,phy_vars_ue->dlsch_ue[eNB_id][0]->rnti, harq_pid,frame_rx,subframe_prev, @@ -2686,8 +2686,8 @@ int phy_procedures_UE_RX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstrac // if (abstraction_flag ==0 ) dump_dlsch(phy_vars_ue,eNB_id,subframe_prev,harq_pid); - mac_xface->macphy_exit(""); - //#endif + mac_xface->macphy_exit("DLSCH in error"); +#endif } else { LOG_D(PHY,"[UE %d][PDSCH %x/%d] Frame %d subframe %d (slot_rx %d): Received DLSCH (rv %d,mcs %d,TBS %d)\n", phy_vars_ue->Mod_id,phy_vars_ue->dlsch_ue[eNB_id][0]->rnti, diff --git a/openair2/LAYER2/MAC/defs.h b/openair2/LAYER2/MAC/defs.h index 7a48413b7a8034b49dc5cc9de3b51b0724ab9c20..493ecece78faff56f6fabdc47fed611b72d46c3f 100644 --- a/openair2/LAYER2/MAC/defs.h +++ b/openair2/LAYER2/MAC/defs.h @@ -740,6 +740,8 @@ typedef struct { int16_t ta_update; int32_t context_active_timer; int32_t ul_inactivity_timer; + int32_t ul_failure_timer; + int32_t ra_pdcch_order_sent; } UE_sched_ctrl; /*! \brief eNB template for the Random access information */ typedef struct { diff --git a/openair2/LAYER2/MAC/eNB_scheduler.c b/openair2/LAYER2/MAC/eNB_scheduler.c index d603ad42376050a184f119db8f068cae2ecc0e4a..d5de3bbae65805f5b4e506f82c2d328491678a5e 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler.c +++ b/openair2/LAYER2/MAC/eNB_scheduler.c @@ -90,7 +90,7 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag, #endif #if defined(ENABLE_ITTI) MessageDef *msg_p; - const char *msg_name; + const char *msg_name; instance_t instance; int result; #endif @@ -98,6 +98,9 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag, int CC_id,i,next_i; UE_list_t *UE_list=&eNB_mac_inst[module_idP].UE_list; rnti_t rnti; + int ra_pdcch_sent=0; + void *DLSCH_dci=NULL; + int size_bits,size_bytes; LOG_D(MAC,"[eNB %d] Frame %d, Subframe %d, entering MAC scheduler (UE_list->head %d)\n",module_idP, frameP, subframeP,UE_list->head); @@ -129,6 +132,101 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag, if (mac_xface->get_eNB_UE_stats(module_idP, CC_id, rnti)==NULL) { mac_remove_ue(module_idP, i, frameP, subframeP); } + else { + // check uplink failure + if (UE_list->UE_sched_ctrl[i].ul_failure_timer>0) { + LOG_I(MAC,"UE %d rnti %x: UL Failure timer %d \n",i,rnti,UE_list->UE_sched_ctrl[i].ul_failure_timer); + if (UE_list->UE_sched_ctrl[i].ra_pdcch_order_sent == 0) { + if (ra_pdcch_sent==0) { + UE_list->UE_sched_ctrl[i].ra_pdcch_order_sent=1; + ra_pdcch_sent=1; + + // add a format 1A dci for this UE to request an RA procedure (only one UE per subframe) + LOG_I(MAC,"UE %d rnti %x: sending PDCCH order for RAPROC \n",i,rnti,UE_list->UE_sched_ctrl[i].ul_failure_timer); + DLSCH_dci = (void *)UE_list->UE_template[CC_id][i].DLSCH_DCI[0]; + *(uint32_t*)DLSCH_dci = 0; + if (PHY_vars_eNB_g[module_idP][CC_id]->lte_frame_parms.frame_type == TDD) { + switch (PHY_vars_eNB_g[module_idP][CC_id]->lte_frame_parms.N_RB_DL) { + case 6: + ((DCI1A_1_5MHz_TDD_1_6_t*)DLSCH_dci)->type = 1; + ((DCI1A_1_5MHz_TDD_1_6_t*)DLSCH_dci)->rballoc = 31; + size_bytes = sizeof(DCI1A_1_5MHz_TDD_1_6_t); + size_bits = sizeof_DCI1A_1_5MHz_TDD_1_6_t; + break; + case 25: + ((DCI1A_5MHz_TDD_1_6_t*)DLSCH_dci)->type = 1; + ((DCI1A_5MHz_TDD_1_6_t*)DLSCH_dci)->rballoc = 511; + size_bytes = sizeof(DCI1A_5MHz_TDD_1_6_t); + size_bits = sizeof_DCI1A_5MHz_TDD_1_6_t; + break; + case 50: + ((DCI1A_10MHz_TDD_1_6_t*)DLSCH_dci)->type = 1; + ((DCI1A_10MHz_TDD_1_6_t*)DLSCH_dci)->rballoc = 2047; + size_bytes = sizeof(DCI1A_10MHz_TDD_1_6_t); + size_bits = sizeof_DCI1A_10MHz_TDD_1_6_t; + break; + case 100: + ((DCI1A_20MHz_TDD_1_6_t*)DLSCH_dci)->type = 1; + ((DCI1A_20MHz_TDD_1_6_t*)DLSCH_dci)->rballoc = 8191; + size_bytes = sizeof(DCI1A_20MHz_TDD_1_6_t); + size_bits = sizeof_DCI1A_20MHz_TDD_1_6_t; + break; + } + } + else { // FDD + switch (PHY_vars_eNB_g[module_idP][CC_id]->lte_frame_parms.N_RB_DL) { + case 6: + ((DCI1A_1_5MHz_FDD_t*)DLSCH_dci)->type = 1; + ((DCI1A_1_5MHz_FDD_t*)DLSCH_dci)->rballoc = 31; + size_bytes = sizeof(DCI1A_1_5MHz_FDD_t); + size_bits = sizeof_DCI1A_1_5MHz_FDD_t; + break; + case 25: + ((DCI1A_5MHz_FDD_t*)DLSCH_dci)->type = 1; + ((DCI1A_5MHz_FDD_t*)DLSCH_dci)->rballoc = 511; + size_bytes = sizeof(DCI1A_5MHz_FDD_t); + size_bits = sizeof_DCI1A_5MHz_FDD_t; + break; + case 50: + ((DCI1A_10MHz_FDD_t*)DLSCH_dci)->type = 1; + ((DCI1A_10MHz_FDD_t*)DLSCH_dci)->rballoc = 2047; + size_bytes = sizeof(DCI1A_10MHz_FDD_t); + size_bits = sizeof_DCI1A_10MHz_FDD_t; + break; + case 100: + ((DCI1A_20MHz_FDD_t*)DLSCH_dci)->type = 1; + ((DCI1A_20MHz_FDD_t*)DLSCH_dci)->rballoc = 8191; + size_bytes = sizeof(DCI1A_20MHz_FDD_t); + size_bits = sizeof_DCI1A_20MHz_FDD_t; + break; + } + } + + add_ue_spec_dci(DCI_pdu[CC_id], + DLSCH_dci, + rnti, + size_bytes, + process_ue_cqi (module_idP,i),//aggregation, + size_bits, + format1A, + 0); + } + else { // ra_pdcch_sent==1 + if ((UE_list->UE_sched_ctrl[i].ul_failure_timer % 40) == 0) + UE_list->UE_sched_ctrl[i].ra_pdcch_order_sent=0; // resend every 4 frames + } + } + UE_list->UE_sched_ctrl[i].ul_failure_timer++; + // check threshold + if (UE_list->UE_sched_ctrl[i].ul_failure_timer > 200) { + // inform RRC of failure and clear timer + LOG_I(MAC,"UE %d rnti %x: UL Failure Triggering RRC \n",i,rnti,UE_list->UE_sched_ctrl[i].ul_failure_timer); + mac_eNB_rrc_ul_failure(module_idP,CC_id,frameP,subframeP,rnti); + UE_list->UE_sched_ctrl[i].ul_failure_timer=0; + } + } // ul_failure_timer>0 + + } i = next_i; } diff --git a/openair2/LAYER2/MAC/eNB_scheduler_primitives.c b/openair2/LAYER2/MAC/eNB_scheduler_primitives.c index 35ffe3b561b683fc104fdb2a10e9180edea9ed2e..8c8eeff148cf1718c52777a92485df77d32aab30 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler_primitives.c +++ b/openair2/LAYER2/MAC/eNB_scheduler_primitives.c @@ -530,22 +530,9 @@ void swap_UEs(UE_list_t *listP,int nodeiP, int nodejP, int ul_flag) dump_ue_list(listP,ul_flag); } -void SR_indication(module_id_t mod_idP, int cc_idP, frame_t frameP, rnti_t rntiP, sub_frame_t subframeP) -{ - int UE_id = find_UE_id(mod_idP, rntiP); - UE_list_t *UE_list = &eNB_mac_inst[mod_idP].UE_list; - if (UE_id != -1) { - LOG_D(MAC,"[eNB %d][SR %x] Frame %d subframeP %d Signaling SR for UE %d on CC_id %d\n",mod_idP,rntiP,frameP,subframeP, UE_id,cc_idP); - UE_list->UE_template[cc_idP][UE_id].ul_SR = 1; - UE_list->UE_template[cc_idP][UE_id].ul_active = TRUE; - } else { - // AssertFatal(0, "find_UE_id(%u,rnti %d) not found", enb_mod_idP, rntiP); - // AssertError(0, 0, "Frame %d: find_UE_id(%u,rnti %d) not found\n", frameP, enb_mod_idP, rntiP); - LOG_D(MAC,"[eNB %d][SR %x] Frame %d subframeP %d Signaling SR for UE %d (unknown UEid) on CC_id %d\n",mod_idP,rntiP,frameP,subframeP, UE_id,cc_idP); - } -} + @@ -1108,3 +1095,35 @@ boolean_t CCE_allocation_infeasible(int module_idP, return(res); } +void SR_indication(module_id_t mod_idP, int cc_idP, frame_t frameP, rnti_t rntiP, sub_frame_t subframeP) +{ + + int UE_id = find_UE_id(mod_idP, rntiP); + UE_list_t *UE_list = &eNB_mac_inst[mod_idP].UE_list; + + if (UE_id != -1) { + LOG_D(MAC,"[eNB %d][SR %x] Frame %d subframeP %d Signaling SR for UE %d on CC_id %d\n",mod_idP,rntiP,frameP,subframeP, UE_id,cc_idP); + UE_list->UE_template[cc_idP][UE_id].ul_SR = 1; + UE_list->UE_template[cc_idP][UE_id].ul_active = TRUE; + } else { + // AssertFatal(0, "find_UE_id(%u,rnti %d) not found", enb_mod_idP, rntiP); + // AssertError(0, 0, "Frame %d: find_UE_id(%u,rnti %d) not found\n", frameP, enb_mod_idP, rntiP); + LOG_D(MAC,"[eNB %d][SR %x] Frame %d subframeP %d Signaling SR for UE %d (unknown UEid) on CC_id %d\n",mod_idP,rntiP,frameP,subframeP, UE_id,cc_idP); + } +} + +void UL_failure_indication(module_id_t mod_idP, int cc_idP, frame_t frameP, rnti_t rntiP, sub_frame_t subframeP) +{ + + int UE_id = find_UE_id(mod_idP, rntiP); + UE_list_t *UE_list = &eNB_mac_inst[mod_idP].UE_list; + + if (UE_id != -1) { + LOG_I(MAC,"[eNB %d][SR %x] Frame %d subframeP %d Signaling UL Failure for UE %d on CC_id %d\n",mod_idP,rntiP,frameP,subframeP, UE_id,cc_idP); + UE_list->UE_sched_ctrl[UE_id].ul_failure_timer=1; + } else { + // AssertFatal(0, "find_UE_id(%u,rnti %d) not found", enb_mod_idP, rntiP); + // AssertError(0, 0, "Frame %d: find_UE_id(%u,rnti %d) not found\n", frameP, enb_mod_idP, rntiP); + LOG_W(MAC,"[eNB %d][SR %x] Frame %d subframeP %d Signaling UL Failure for UE %d (unknown UEid) on CC_id %d\n",mod_idP,rntiP,frameP,subframeP, UE_id,cc_idP); + } +} diff --git a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c index b929c71ff435b7b62d985b44322e0fdce7b6ff02..42f19cc2ae9cdda09a5ce54e6b23932a12ddb8fb 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c +++ b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c @@ -106,9 +106,10 @@ void rx_sdu( LOG_D(MAC,"[eNB %d] CC_id %d Received ULSCH sdu from PHY (rnti %x, UE_id %d), parsing header\n",enb_mod_idP,CC_idP,rntiP,UE_id); - if (UE_id!=-1) + if (UE_id!=-1) { UE_list->UE_sched_ctrl[UE_id].ul_inactivity_timer=0; - + UE_list->UE_sched_ctrl[UE_id].ul_failure_timer=0; + } payload_ptr = parse_ulsch_header(sduP,&num_ce,&num_sdu,rx_ces,rx_lcids,rx_lengths,sdu_lenP); eNB->eNB_stats[CC_idP].ulsch_bytes_rx=sdu_lenP; diff --git a/openair2/LAYER2/MAC/main.c b/openair2/LAYER2/MAC/main.c index 0e8a65cf017cf1af7fa6e4158ecd4a47f53e9a27..32cb3b17384110d771f81495328e06fbe62c2d2f 100644 --- a/openair2/LAYER2/MAC/main.c +++ b/openair2/LAYER2/MAC/main.c @@ -84,7 +84,7 @@ void dl_phy_sync_success(module_id_t module_idP, } else #endif { - mac_in_sync_ind(module_idP,frameP,eNB_index); + rrc_in_sync_ind(module_idP,frameP,eNB_index); } } @@ -382,7 +382,7 @@ int mac_init_global_param(void) // mac_xface->macphy_data_ind=macphy_data_ind; mac_xface->mrbch_phy_sync_failure=mrbch_phy_sync_failure; mac_xface->dl_phy_sync_success=dl_phy_sync_success; - mac_xface->out_of_sync_ind=mac_out_of_sync_ind; + mac_xface->out_of_sync_ind=rrc_out_of_sync_ind; // Mac_rlc_xface->macphy_exit= mac_xface->macphy_exit; // Mac_rlc_xface->frame = 0; @@ -462,6 +462,7 @@ int l2_init(LTE_DL_FRAME_PARMS *frame_parms,int eMBMS_active, char *uecap_xer,ui mac_xface->initiate_ra_proc = initiate_ra_proc; mac_xface->cancel_ra_proc = cancel_ra_proc; mac_xface->SR_indication = SR_indication; + mac_xface->UL_failure_indication = UL_failure_indication; mac_xface->rx_sdu = rx_sdu; mac_xface->get_dlsch_sdu = get_dlsch_sdu; mac_xface->get_eNB_UE_stats = get_eNB_UE_stats; diff --git a/openair2/LAYER2/MAC/proto.h b/openair2/LAYER2/MAC/proto.h index 9afe098d77fe64df1abc7e66caffb3d762bb5ac4..632d8c836025abb1fd907d034a2cbca297918b1e 100644 --- a/openair2/LAYER2/MAC/proto.h +++ b/openair2/LAYER2/MAC/proto.h @@ -269,6 +269,15 @@ void rx_sdu(const module_id_t module_idP, const int CC_id,const frame_t frameP, */ void SR_indication(module_id_t module_idP,int CC_id,frame_t frameP,rnti_t rnti, sub_frame_t subframe); +/* \brief Function to indicate a UL failure was detected by eNB PHY. +@param Mod_id Instance ID of eNB +@param CC_id Component carrier +@param frameP Frame index +@param rnti RNTI of UE transmitting the SR +@param subframe Index of subframe where SR was received +*/ +void UL_failure_indication(module_id_t Mod_id,int CC_id,frame_t frameP,rnti_t rnti,sub_frame_t subframe); + uint8_t *get_dlsch_sdu(module_id_t module_idP,int CC_id,frame_t frameP,rnti_t rnti,uint8_t TBindex); /* \brief Function to retrieve MCH transport block and MCS used for MCH in this MBSFN subframe. Returns null if no MCH is to be transmitted diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c index f25e921570a7638d34fef297b60e7f8579d103ff..a612733e672b1460901db2a7809d702703ac37de 100755 --- a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c +++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c @@ -636,10 +636,10 @@ pdcp_data_ind( PROTOCOL_PDCP_CTXT_FMT" DATA-IND len %u", PROTOCOL_PDCP_CTXT_ARGS(ctxt_pP, pdcp_p), sdu_buffer_sizeP - pdcp_header_len - pdcp_tailer_len); - pdcp_rrc_data_ind(ctxt_pP, - rb_id, - sdu_buffer_sizeP - pdcp_header_len - pdcp_tailer_len, - (uint8_t*)&sdu_buffer_pP->data[pdcp_header_len]); + rrc_data_ind(ctxt_pP, + rb_id, + sdu_buffer_sizeP - pdcp_header_len - pdcp_tailer_len, + (uint8_t*)&sdu_buffer_pP->data[pdcp_header_len]); free_mem_block(sdu_buffer_pP); // free_mem_block(new_sdu); diff --git a/openair2/PHY_INTERFACE/defs.h b/openair2/PHY_INTERFACE/defs.h index 7b0367f53791c0481d7af34aca2ce86c1b1e7ca4..194b0851186e4cdc484d338158376dd700c8870e 100755 --- a/openair2/PHY_INTERFACE/defs.h +++ b/openair2/PHY_INTERFACE/defs.h @@ -94,7 +94,8 @@ typedef struct { /// Indicate Scheduling Request from UE void (*SR_indication)(module_id_t Mod_id,int CC_id,frame_t frameP,rnti_t rnti,sub_frame_t subframe); - + /// Indicate UL Failure to eNodeB MAC + void (*UL_failure_indication)(module_id_t Mod_id,int CC_id,frame_t frameP,rnti_t rnti,sub_frame_t subframe); /// Configure Common PHY parameters from SIB1 void (*phy_config_sib1_eNB)(module_id_t Mod_id,int CC_id, TDD_Config_t *tdd_config, diff --git a/openair2/RRC/L2_INTERFACE/openair_rrc_L2_interface.c b/openair2/RRC/L2_INTERFACE/openair_rrc_L2_interface.c index 732d2aa54adff971b7b52948d378ef2cdda8eeb1..702433744d23e2003db7395bedb240cfc57e5ba3 100644 --- a/openair2/RRC/L2_INTERFACE/openair_rrc_L2_interface.c +++ b/openair2/RRC/L2_INTERFACE/openair_rrc_L2_interface.c @@ -155,10 +155,10 @@ rlcrrc_data_ind( ) //------------------------------------------------------------------------------ { - rrc_lite_data_ind(ctxt_pP, - srb_idP, - sdu_lenP, - buffer_pP); + rrc_data_ind(ctxt_pP, + srb_idP, + sdu_lenP, + buffer_pP); } //------------------------------------------------------------------------------ diff --git a/openair2/RRC/LITE/L2_interface.c b/openair2/RRC/LITE/L2_interface.c index 6a64095e92a48020d95612add215cde07d726e81..cea9640275b6db1f68333534b0906d10e6320eec 100644 --- a/openair2/RRC/LITE/L2_interface.c +++ b/openair2/RRC/LITE/L2_interface.c @@ -67,7 +67,7 @@ mui_t mui=0; //------------------------------------------------------------------------------ int8_t -mac_rrc_lite_data_req( +mac_rrc_data_req( const module_id_t Mod_idP, const int CC_id, const frame_t frameP, @@ -98,7 +98,7 @@ mac_rrc_lite_data_req( // All even frames transmit SIB in SF 5 if (eNB_rrc_inst[Mod_idP].carrier[CC_id].sizeof_SIB1 == 255) { LOG_E(RRC,"[eNB %d] MAC Request for SIB1 and SIB1 not initialized\n",Mod_idP); - mac_xface->macphy_exit("mac_rrc_lite_data_req: MAC Request for SIB1 and SIB1 not initialized"); + mac_xface->macphy_exit("mac_rrc_data_req: MAC Request for SIB1 and SIB1 not initialized"); } if ((frameP%2) == 0) { @@ -337,7 +337,7 @@ mac_rrc_lite_data_req( //------------------------------------------------------------------------------ int8_t -mac_rrc_lite_data_ind( +mac_rrc_data_ind( const module_id_t module_idP, const int CC_id, const frame_t frameP, @@ -505,14 +505,14 @@ mac_rrc_lite_data_ind( //-------------------------------------------------------------------------------------------// // this function is Not USED anymore -void mac_lite_sync_ind(module_id_t Mod_idP,uint8_t Status) +void mac_sync_ind(module_id_t Mod_idP,uint8_t Status) { //-------------------------------------------------------------------------------------------// } //------------------------------------------------------------------------------ uint8_t -rrc_lite_data_req( +rrc_data_req( const protocol_ctxt_t* const ctxt_pP, const rb_id_t rb_idP, const mui_t muiP, @@ -582,7 +582,7 @@ rrc_lite_data_req( //------------------------------------------------------------------------------ void -rrc_lite_data_ind( +rrc_data_ind( const protocol_ctxt_t* const ctxt_pP, const rb_id_t Srb_id, const sdu_size_t sdu_sizeP, @@ -646,7 +646,7 @@ rrc_lite_data_ind( } //-------------------------------------------------------------------------------------------// -void rrc_lite_in_sync_ind(module_id_t Mod_idP, frame_t frameP, uint16_t eNB_index) +void rrc_in_sync_ind(module_id_t Mod_idP, frame_t frameP, uint16_t eNB_index) { //-------------------------------------------------------------------------------------------// #if defined(ENABLE_ITTI) @@ -670,7 +670,7 @@ void rrc_lite_in_sync_ind(module_id_t Mod_idP, frame_t frameP, uint16_t eNB_inde } //-------------------------------------------------------------------------------------------// -void rrc_lite_out_of_sync_ind(module_id_t Mod_idP, frame_t frameP, uint16_t eNB_index) +void rrc_out_of_sync_ind(module_id_t Mod_idP, frame_t frameP, uint16_t eNB_index) { //-------------------------------------------------------------------------------------------// LOG_I(RRC,"[UE %d] Frame %d: OUT OF SYNC FROM eNB %d (T310 active %d : T310 %d, N310 %d, N311 %d)\n ", @@ -697,7 +697,7 @@ void rrc_lite_out_of_sync_ind(module_id_t Mod_idP, frame_t frameP, uint16_t eNB_ //------------------------------------------------------------------------------ int -mac_eNB_get_rrc_lite_status( +mac_eNB_get_rrc_status( const module_id_t Mod_idP, const rnti_t rntiP ) @@ -715,10 +715,17 @@ mac_eNB_get_rrc_lite_status( } } +void mac_eNB_rrc_ul_failure(const module_id_t Mod_instP, + const int CC_id, + const frame_t frameP, + const sub_frame_t subframeP, + const rnti_t rnti) { + return; +} //------------------------------------------------------------------------------ int -mac_UE_get_rrc_lite_status( +mac_UE_get_rrc_status( const module_id_t Mod_idP, const uint8_t indexP ) diff --git a/openair2/RRC/LITE/proto.h b/openair2/RRC/LITE/proto.h index 5d77698c8e4a5b3a5465f50c2c91d7b0c3780687..cde0643ee1100c8d5678c91a1b22073261598f40 100644 --- a/openair2/RRC/LITE/proto.h +++ b/openair2/RRC/LITE/proto.h @@ -44,15 +44,15 @@ int L3_xface_init(void); void openair_rrc_top_init(int eMBMS_active, char *uecap_xer, uint8_t cba_group_active,uint8_t HO_enabled); #if defined(ENABLE_ITTI) char -openair_rrc_lite_eNB_configuration( +openair_rrc_eNB_configuration( const module_id_t enb_mod_idP, RrcConfigurationReq* configuration ); #endif -char openair_rrc_lite_eNB_init( +char openair_rrc_eNB_init( const module_id_t module_idP); -char openair_rrc_lite_ue_init( +char openair_rrc_ue_init( const module_id_t module_idP, const uint8_t CH_IDX); void rrc_config_buffer(SRB_INFO *srb_info, uint8_t Lchan_type, uint8_t Role); @@ -281,7 +281,7 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover( //L2_interface.c int8_t -mac_rrc_lite_data_req( +mac_rrc_data_req( const module_id_t Mod_idP, const int CC_id, const frame_t frameP, @@ -294,7 +294,7 @@ mac_rrc_lite_data_req( ); int8_t -mac_rrc_lite_data_ind( +mac_rrc_data_ind( const module_id_t module_idP, const int CC_id, const frame_t frameP, @@ -310,8 +310,14 @@ mac_rrc_lite_data_ind( void mac_sync_ind( module_id_t Mod_instP, uint8_t status); +void mac_eNB_rrc_ul_failure(const module_id_t Mod_instP, + const int CC_id, + const frame_t frameP, + const sub_frame_t subframeP, + const rnti_t rnti); + uint8_t -rrc_lite_data_req( +rrc_data_req( const protocol_ctxt_t* const ctxt_pP, const rb_id_t rb_idP, const mui_t muiP, @@ -322,16 +328,16 @@ rrc_lite_data_req( ); void -rrc_lite_data_ind( +rrc_data_ind( const protocol_ctxt_t* const ctxt_pP, const rb_id_t Srb_id, const sdu_size_t sdu_sizeP, const uint8_t* const buffer_pP ); -void rrc_lite_in_sync_ind(module_id_t module_idP, frame_t frameP, uint16_t eNB_index); +void rrc_in_sync_ind(module_id_t module_idP, frame_t frameP, uint16_t eNB_index); -void rrc_lite_out_of_sync_ind(module_id_t module_idP, frame_t frameP, unsigned short eNB_index); +void rrc_out_of_sync_ind(module_id_t module_idP, frame_t frameP, unsigned short eNB_index); int decode_MCCH_Message( const protocol_ctxt_t* const ctxt_pP, const uint8_t eNB_index, const uint8_t* const Sdu, const uint8_t Sdu_len, const uint8_t mbsfn_sync_area ); @@ -356,13 +362,13 @@ ue_measurement_report_triggering( ); int -mac_eNB_get_rrc_lite_status( +mac_eNB_get_rrc_status( const module_id_t Mod_idP, const rnti_t rntiP ); int -mac_UE_get_rrc_lite_status( +mac_UE_get_rrc_status( const module_id_t Mod_idP, const uint8_t indexP ); diff --git a/openair2/RRC/LITE/rrc_UE.c b/openair2/RRC/LITE/rrc_UE.c index a919a055f287ef9b7916c92759c475e9e2dc4aec..8410c4c719b54015446f3cca00b4ff41cc3c95fe 100644 --- a/openair2/RRC/LITE/rrc_UE.c +++ b/openair2/RRC/LITE/rrc_UE.c @@ -276,7 +276,7 @@ static void init_MCCH_UE(module_id_t ue_mod_idP, uint8_t eNB_index) #endif //----------------------------------------------------------------------------- -static void openair_rrc_lite_ue_init_security( const protocol_ctxt_t* const ctxt_pP ) +static void openair_rrc_ue_init_security( const protocol_ctxt_t* const ctxt_pP ) { #if defined(ENABLE_SECURITY) // uint8_t *kRRCenc; @@ -297,7 +297,7 @@ static void openair_rrc_lite_ue_init_security( const protocol_ctxt_t* const ctxt } //----------------------------------------------------------------------------- -char openair_rrc_lite_ue_init( const module_id_t ue_mod_idP, const unsigned char eNB_index ) +char openair_rrc_ue_init( const module_id_t ue_mod_idP, const unsigned char eNB_index ) { protocol_ctxt_t ctxt; PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_idP, ENB_FLAG_NO, NOT_A_RNTI, 0, 0,eNB_index); @@ -324,7 +324,7 @@ char openair_rrc_lite_ue_init( const module_id_t ue_mod_idP, const unsigned char UE_rrc_inst[ctxt.module_id].integrity_algorithm = SecurityAlgorithmConfig__integrityProtAlgorithm_reserved; #endif - openair_rrc_lite_ue_init_security(&ctxt); + openair_rrc_ue_init_security(&ctxt); init_SI_UE(&ctxt,eNB_index); LOG_D(RRC,PROTOCOL_RRC_CTXT_FMT" INIT: phy_sync_2_ch_ind\n", PROTOCOL_RRC_CTXT_ARGS(&ctxt)); @@ -445,14 +445,14 @@ static void rrc_ue_generate_RRCConnectionSetupComplete( const protocol_ctxt_t* c LOG_D(RLC, "[FRAME %05d][RRC_UE][MOD %02d][][--- PDCP_DATA_REQ/%d Bytes (RRCConnectionSetupComplete to eNB %d MUI %d) --->][PDCP][MOD %02d][RB %02d]\n", ctxt_pP->frame, ctxt_pP->module_id+NB_eNB_INST, size, eNB_index, rrc_mui, ctxt_pP->module_id+NB_eNB_INST, DCCH); - pdcp_rrc_data_req ( - ctxt_pP, - DCCH, - rrc_mui++, - SDU_CONFIRM_NO, - size, - buffer, - PDCP_TRANSMISSION_MODE_CONTROL); + rrc_data_req ( + ctxt_pP, + DCCH, + rrc_mui++, + SDU_CONFIRM_NO, + size, + buffer, + PDCP_TRANSMISSION_MODE_CONTROL); } //----------------------------------------------------------------------------- @@ -472,14 +472,14 @@ static void rrc_ue_generate_RRCConnectionReconfigurationComplete( const protocol rrc_mui, UE_MODULE_ID_TO_INSTANCE(ctxt_pP->module_id), DCCH); - pdcp_rrc_data_req ( - ctxt_pP, - DCCH, - rrc_mui++, - SDU_CONFIRM_NO, - size, - buffer, - PDCP_TRANSMISSION_MODE_CONTROL); + rrc_data_req ( + ctxt_pP, + DCCH, + rrc_mui++, + SDU_CONFIRM_NO, + size, + buffer, + PDCP_TRANSMISSION_MODE_CONTROL); } @@ -1430,14 +1430,14 @@ rrc_ue_process_securityModeCommand( } LOG_T(RRC, "\n"); - pdcp_rrc_data_req ( - ctxt_pP, - DCCH, - rrc_mui++, - SDU_CONFIRM_NO, - (enc_rval.encoded + 7) / 8, - buffer, - PDCP_TRANSMISSION_MODE_CONTROL); + rrc_data_req ( + ctxt_pP, + DCCH, + rrc_mui++, + SDU_CONFIRM_NO, + (enc_rval.encoded + 7) / 8, + buffer, + PDCP_TRANSMISSION_MODE_CONTROL); } } } @@ -1535,14 +1535,14 @@ rrc_ue_process_ueCapabilityEnquiry( } LOG_T(RRC, "\n"); - pdcp_rrc_data_req ( - ctxt_pP, - DCCH, - rrc_mui++, - SDU_CONFIRM_NO, - (enc_rval.encoded + 7) / 8, - buffer, - PDCP_TRANSMISSION_MODE_CONTROL); + rrc_data_req ( + ctxt_pP, + DCCH, + rrc_mui++, + SDU_CONFIRM_NO, + (enc_rval.encoded + 7) / 8, + buffer, + PDCP_TRANSMISSION_MODE_CONTROL); } } } @@ -4160,15 +4160,15 @@ void *rrc_ue_task( void *args_p ) /* Transfer data to PDCP */ PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, ue_mod_id, ENB_FLAG_NO, UE_rrc_inst[ue_mod_id].Info[0].rnti, 0, 0,0); - pdcp_rrc_data_req (&ctxt, - DCCH, - rrc_mui++, - SDU_CONFIRM_NO, - length, buffer, - PDCP_TRANSMISSION_MODE_CONTROL); + rrc_data_req (&ctxt, + DCCH, + rrc_mui++, + SDU_CONFIRM_NO, + length, buffer, + PDCP_TRANSMISSION_MODE_CONTROL); break; } - + # endif # if ENABLE_RAL diff --git a/openair2/RRC/LITE/rrc_common.c b/openair2/RRC/LITE/rrc_common.c index e2d8a6c69b2a00b7b894c43706fef230bed9e2e3..a27199bdab4a39150e3fffab044821b93f490f80 100644 --- a/openair2/RRC/LITE/rrc_common.c +++ b/openair2/RRC/LITE/rrc_common.c @@ -132,7 +132,7 @@ rrc_init_global_param( return -1; } */ - rrc_rlc_register_rrc (rlcrrc_data_ind, NULL); //register with rlc + rrc_rlc_register_rrc (rrc_data_ind, NULL); //register with rlc DCCH_LCHAN_DESC.transport_block_size = 4; DCCH_LCHAN_DESC.max_transport_blocks = 16; diff --git a/openair2/RRC/LITE/rrc_eNB.c b/openair2/RRC/LITE/rrc_eNB.c index c7cb18eab03c4f42000277ddeaa01065d9ec31ef..da1b07e25b1038a772e6343fddab985de72d674d 100644 --- a/openair2/RRC/LITE/rrc_eNB.c +++ b/openair2/RRC/LITE/rrc_eNB.c @@ -920,14 +920,14 @@ rrc_eNB_generate_SecurityModeCommand( rrc_eNB_mui, size); - pdcp_rrc_data_req( - ctxt_pP, - DCCH, - rrc_eNB_mui++, - SDU_CONFIRM_NO, - size, - buffer, - PDCP_TRANSMISSION_MODE_CONTROL); + rrc_data_req( + ctxt_pP, + DCCH, + rrc_eNB_mui++, + SDU_CONFIRM_NO, + size, + buffer, + PDCP_TRANSMISSION_MODE_CONTROL); } @@ -971,14 +971,14 @@ rrc_eNB_generate_UECapabilityEnquiry( rrc_eNB_mui, size); - pdcp_rrc_data_req( - ctxt_pP, - DCCH, - rrc_eNB_mui++, - SDU_CONFIRM_NO, - size, - buffer, - PDCP_TRANSMISSION_MODE_CONTROL); + rrc_data_req( + ctxt_pP, + DCCH, + rrc_eNB_mui++, + SDU_CONFIRM_NO, + size, + buffer, + PDCP_TRANSMISSION_MODE_CONTROL); } @@ -1107,14 +1107,14 @@ rrc_eNB_generate_RRCConnectionRelease( rrc_eNB_mui, size); - pdcp_rrc_data_req( - ctxt_pP, - DCCH, - rrc_eNB_mui++, - SDU_CONFIRM_NO, - size, - buffer, - PDCP_TRANSMISSION_MODE_CONTROL); + rrc_data_req( + ctxt_pP, + DCCH, + rrc_eNB_mui++, + SDU_CONFIRM_NO, + size, + buffer, + PDCP_TRANSMISSION_MODE_CONTROL); } //----------------------------------------------------------------------------- @@ -1728,14 +1728,14 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration( rrc_eNB_mui, size); - pdcp_rrc_data_req( - ctxt_pP, - DCCH, - rrc_eNB_mui++, - SDU_CONFIRM_NO, - size, - buffer, - PDCP_TRANSMISSION_MODE_CONTROL); + rrc_data_req( + ctxt_pP, + DCCH, + rrc_eNB_mui++, + SDU_CONFIRM_NO, + size, + buffer, + PDCP_TRANSMISSION_MODE_CONTROL); } @@ -1805,14 +1805,14 @@ rrc_eNB_generate_RRCConnectionReconfiguration_SCell( rrc_eNB_mui, size); - pdcp_rrc_data_req( - ctxt_pP, - DCCH, - rrc_eNB_mui++, - SDU_CONFIRM_NO, - size, - buffer, - PDCP_TRANSMISSION_MODE_CONTROL); + rrc_data_req( + ctxt_pP, + DCCH, + rrc_eNB_mui++, + SDU_CONFIRM_NO, + size, + buffer, + PDCP_TRANSMISSION_MODE_CONTROL); return(0); } @@ -3369,7 +3369,7 @@ rrc_eNB_generate_RRCConnectionSetup( #if defined(ENABLE_ITTI) char //----------------------------------------------------------------------------- -openair_rrc_lite_eNB_init( +openair_rrc_eNB_init( const module_id_t enb_mod_idP ) //----------------------------------------------------------------------------- @@ -3382,13 +3382,13 @@ openair_rrc_lite_eNB_init( #if defined(ENABLE_ITTI) //----------------------------------------------------------------------------- char -openair_rrc_lite_eNB_configuration( +openair_rrc_eNB_configuration( const module_id_t enb_mod_idP, RrcConfigurationReq* configuration ) #else char -openair_rrc_lite_eNB_init( +openair_rrc_eNB_init( const module_id_t enb_mod_idP ) #endif @@ -3417,7 +3417,7 @@ openair_rrc_lite_eNB_init( // for (j = 0; j < NUMBER_OF_UE_MAX; j++) { // eNB_rrc_inst[ctxt.module_id].ciphering_algorithm[j] = SecurityAlgorithmConfig__cipheringAlgorithm_eea0; // eNB_rrc_inst[ctxt.module_id].integrity_algorithm[j] = SecurityAlgorithmConfig__integrityProtAlgorithm_eia2; - // rrc_lite_eNB_init_security(enb_mod_idP, j); + // rrc_eNB_init_security(enb_mod_idP, j); // } // } eNB_rrc_inst[ctxt.module_id].Nb_ue = 0; @@ -4434,7 +4434,7 @@ rrc_enb_task( /* Messages from eNB app */ case RRC_CONFIGURATION_REQ: LOG_I(RRC, "[eNB %d] Received %s\n", instance, msg_name_p); - openair_rrc_lite_eNB_configuration(ENB_INSTANCE_TO_MODULE_ID(instance), &RRC_CONFIGURATION_REQ(msg_p)); + openair_rrc_eNB_configuration(ENB_INSTANCE_TO_MODULE_ID(instance), &RRC_CONFIGURATION_REQ(msg_p)); break; # if ENABLE_RAL diff --git a/openair2/RRC/LITE/rrc_eNB_S1AP.c b/openair2/RRC/LITE/rrc_eNB_S1AP.c index d93b8eea2fd39d62c0705915eb565acc3b3134db..6598e722734d500100e4dd2a81ea5463a9f0181f 100644 --- a/openair2/RRC/LITE/rrc_eNB_S1AP.c +++ b/openair2/RRC/LITE/rrc_eNB_S1AP.c @@ -840,15 +840,15 @@ rrc_eNB_process_S1AP_DOWNLINK_NAS( LOG_F(RRC,"\n"); #endif /* Transfer data to PDCP */ - pdcp_rrc_data_req ( - &ctxt, - DCCH, - *rrc_eNB_mui++, - SDU_CONFIRM_NO, - length, - buffer, - PDCP_TRANSMISSION_MODE_CONTROL); - + rrc_data_req ( + &ctxt, + DCCH, + *rrc_eNB_mui++, + SDU_CONFIRM_NO, + length, + buffer, + PDCP_TRANSMISSION_MODE_CONTROL); + return (0); } }