UE: signal RLF to RRC
This commit is contained in:
committed by
francescomani
parent
f380a48a3b
commit
eee4a0c652
@@ -85,3 +85,6 @@ MESSAGE_DEF(NRRRC_FRAME_PROCESS, MESSAGE_PRIORITY_MED, NRRrcFramePr
|
|||||||
// eNB: RLC -> RRC messages
|
// eNB: RLC -> RRC messages
|
||||||
MESSAGE_DEF(RLC_SDU_INDICATION, MESSAGE_PRIORITY_MED, RlcSduIndication, rlc_sdu_indication)
|
MESSAGE_DEF(RLC_SDU_INDICATION, MESSAGE_PRIORITY_MED, RlcSduIndication, rlc_sdu_indication)
|
||||||
MESSAGE_DEF(NAS_PDU_SESSION_REQ, MESSAGE_PRIORITY_MED, nas_pdu_session_req_t, nas_pdu_session_req)
|
MESSAGE_DEF(NAS_PDU_SESSION_REQ, MESSAGE_PRIORITY_MED, nas_pdu_session_req_t, nas_pdu_session_req)
|
||||||
|
|
||||||
|
// UE: RLC -> RRC messages
|
||||||
|
MESSAGE_DEF(NR_RRC_RLC_MAXRTX, MESSAGE_PRIORITY_MED, RlcMaxRtxIndication, nr_rlc_maxrtx_indication)
|
||||||
|
|||||||
@@ -97,6 +97,8 @@
|
|||||||
#define NAS_OAI_TUN_NSA(mSGpTR) (mSGpTR)->ittiMsg.nas_oai_tun_nsa
|
#define NAS_OAI_TUN_NSA(mSGpTR) (mSGpTR)->ittiMsg.nas_oai_tun_nsa
|
||||||
#define NAS_PDU_SESSION_REQ(mSGpTR) (mSGpTR)->ittiMsg.nas_pdu_session_req
|
#define NAS_PDU_SESSION_REQ(mSGpTR) (mSGpTR)->ittiMsg.nas_pdu_session_req
|
||||||
|
|
||||||
|
#define NR_RRC_RLC_MAXRTX(mSGpTR) (mSGpTR)->ittiMsg.nr_rlc_maxrtx_indication
|
||||||
|
|
||||||
//-------------------------------------------------------------------------------------------//
|
//-------------------------------------------------------------------------------------------//
|
||||||
typedef struct RrcStateInd_s {
|
typedef struct RrcStateInd_s {
|
||||||
Rrc_State_t state;
|
Rrc_State_t state;
|
||||||
@@ -453,4 +455,8 @@ typedef struct rlc_sdu_indication_s {
|
|||||||
int message_id;
|
int message_id;
|
||||||
} RlcSduIndication;
|
} RlcSduIndication;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
int ue_id;
|
||||||
|
} RlcMaxRtxIndication;
|
||||||
|
|
||||||
#endif /* RRC_MESSAGES_TYPES_H_ */
|
#endif /* RRC_MESSAGES_TYPES_H_ */
|
||||||
|
|||||||
@@ -873,6 +873,13 @@ static int8_t nr_rrc_ue_decode_NR_BCCH_DL_SCH_Message(NR_UE_RRC_INST_t *rrc,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void nr_rrc_signal_maxrtxindication(int ue_id)
|
||||||
|
{
|
||||||
|
MessageDef *msg = itti_alloc_new_message(TASK_RLC_UE, ue_id, NR_RRC_RLC_MAXRTX);
|
||||||
|
NR_RRC_RLC_MAXRTX(msg).ue_id = ue_id;
|
||||||
|
itti_send_msg_to_task(TASK_RRC_NRUE, ue_id, msg);
|
||||||
|
}
|
||||||
|
|
||||||
static void nr_rrc_manage_rlc_bearers(NR_UE_RRC_INST_t *rrc,
|
static void nr_rrc_manage_rlc_bearers(NR_UE_RRC_INST_t *rrc,
|
||||||
const NR_CellGroupConfig_t *cellGroupConfig)
|
const NR_CellGroupConfig_t *cellGroupConfig)
|
||||||
{
|
{
|
||||||
@@ -901,9 +908,11 @@ static void nr_rrc_manage_rlc_bearers(NR_UE_RRC_INST_t *rrc,
|
|||||||
if (rlc_bearer->servedRadioBearer->present == NR_RLC_BearerConfig__servedRadioBearer_PR_srb_Identity) {
|
if (rlc_bearer->servedRadioBearer->present == NR_RLC_BearerConfig__servedRadioBearer_PR_srb_Identity) {
|
||||||
NR_SRB_Identity_t srb_id = rlc_bearer->servedRadioBearer->choice.srb_Identity;
|
NR_SRB_Identity_t srb_id = rlc_bearer->servedRadioBearer->choice.srb_Identity;
|
||||||
nr_rlc_add_srb(rrc->ue_id, srb_id, rlc_bearer);
|
nr_rlc_add_srb(rrc->ue_id, srb_id, rlc_bearer);
|
||||||
|
nr_rlc_set_rlf_handler(rrc->ue_id, nr_rrc_signal_maxrtxindication);
|
||||||
} else { // DRB
|
} else { // DRB
|
||||||
NR_DRB_Identity_t drb_id = rlc_bearer->servedRadioBearer->choice.drb_Identity;
|
NR_DRB_Identity_t drb_id = rlc_bearer->servedRadioBearer->choice.drb_Identity;
|
||||||
nr_rlc_add_drb(rrc->ue_id, drb_id, rlc_bearer);
|
nr_rlc_add_drb(rrc->ue_id, drb_id, rlc_bearer);
|
||||||
|
nr_rlc_set_rlf_handler(rrc->ue_id, nr_rrc_signal_maxrtxindication);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1843,6 +1852,15 @@ void *rrc_nrue(void *notUsed)
|
|||||||
nr_rrc_going_to_IDLE(rrc, release_cause, NULL);
|
nr_rrc_going_to_IDLE(rrc, release_cause, NULL);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case NR_RRC_RLC_MAXRTX:
|
||||||
|
// detection of RLF upon indication from RLC that the maximum number of retransmissions has been reached
|
||||||
|
LOG_W(NR_RRC,
|
||||||
|
"[UE %ld ID %d] Received indication that RLC reached max retransmissions\n",
|
||||||
|
instance,
|
||||||
|
NR_RRC_RLC_MAXRTX(msg_p).ue_id);
|
||||||
|
handle_rlf_detection(rrc);
|
||||||
|
break;
|
||||||
|
|
||||||
case NR_RRC_MAC_MSG3_IND:
|
case NR_RRC_MAC_MSG3_IND:
|
||||||
nr_rrc_handle_msg3_indication(rrc, NR_RRC_MAC_MSG3_IND(msg_p).rnti);
|
nr_rrc_handle_msg3_indication(rrc, NR_RRC_MAC_MSG3_IND(msg_p).rnti);
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user