added UL failure indication to PHY/MAC/RRC eNodeB procedures.
This commit is contained in:
@@ -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
|
||||
##########################
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
+17
-11
@@ -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
|
||||
);
|
||||
|
||||
+42
-42
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
+45
-45
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user