target-CU-CP: Add RRC handler NG DL RAN Status Transfer
This commit is contained in:
@@ -2854,6 +2854,10 @@ void *rrc_gnb_task(void *args_p) {
|
|||||||
rrc_gNB_process_NGAP_PDUSESSION_RELEASE_COMMAND(msg_p, instance);
|
rrc_gNB_process_NGAP_PDUSESSION_RELEASE_COMMAND(msg_p, instance);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case NGAP_DL_RAN_STATUS_TRANSFER:
|
||||||
|
rrc_gNB_process_NGAP_DL_RAN_STATUS_TRANSFER(msg_p, instance);
|
||||||
|
break;
|
||||||
|
|
||||||
/* Messages from F1AP task */
|
/* Messages from F1AP task */
|
||||||
case F1AP_SETUP_REQ:
|
case F1AP_SETUP_REQ:
|
||||||
AssertFatal(!NODE_IS_DU(RC.nrrrc[instance]->node_type), "should not receive F1AP_SETUP_REQUEST in DU!\n");
|
AssertFatal(!NODE_IS_DU(RC.nrrrc[instance]->node_type), "should not receive F1AP_SETUP_REQUEST in DU!\n");
|
||||||
|
|||||||
@@ -1605,3 +1605,51 @@ void rrc_gNB_send_NGAP_HANDOVER_REQUIRED(gNB_RRC_INST *rrc,
|
|||||||
NGAP_HANDOVER_REQUIRED(msg_p) = msg;
|
NGAP_HANDOVER_REQUIRED(msg_p) = msg;
|
||||||
itti_send_msg_to_task(TASK_NGAP, rrc->module_id, msg_p);
|
itti_send_msg_to_task(TASK_NGAP, rrc->module_id, msg_p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int rrc_gNB_process_NGAP_DL_RAN_STATUS_TRANSFER(MessageDef *msg_p, instance_t instance)
|
||||||
|
{
|
||||||
|
const ngap_ran_status_transfer_t *cmd = &NGAP_DL_RAN_STATUS_TRANSFER(msg_p);
|
||||||
|
gNB_RRC_INST *rrc = RC.nrrrc[instance];
|
||||||
|
rrc_gNB_ue_context_t *ue_context_p = rrc_gNB_get_ue_context(rrc, cmd->gnb_ue_ngap_id);
|
||||||
|
|
||||||
|
if (!ue_context_p) {
|
||||||
|
LOG_E(NR_RRC, "[gNB %ld] No UE context for gNB_ue_ngap_id %u\n", instance, cmd->gnb_ue_ngap_id);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
gNB_RRC_UE_t *UE = &ue_context_p->ue_context;
|
||||||
|
LOG_I(NR_RRC,
|
||||||
|
"[gNB %ld] DL RAN Status Transfer for gNB_ue_ngap_id %u AMF_UE_NGAP_ID %lu\n",
|
||||||
|
instance,
|
||||||
|
cmd->gnb_ue_ngap_id,
|
||||||
|
cmd->amf_ue_ngap_id);
|
||||||
|
|
||||||
|
for (int i = 0; i < cmd->ran_status.nb_drb; ++i) {
|
||||||
|
const ngap_drb_status_t *s = &cmd->ran_status.drb_status_list[i];
|
||||||
|
LOG_I(NR_RRC,
|
||||||
|
"DL RAN Status Transfer - DRB ID %d:\n"
|
||||||
|
" UL COUNT: PDCP SN = %u, HFN = %u (%s)\n"
|
||||||
|
" DL COUNT: PDCP SN = %u, HFN = %u (%s)\n",
|
||||||
|
s->drb_id,
|
||||||
|
s->ul_count.pdcp_sn,
|
||||||
|
s->ul_count.hfn,
|
||||||
|
s->ul_count.sn_len == NGAP_SN_LENGTH_18 ? "18-bit" : "12-bit",
|
||||||
|
s->dl_count.pdcp_sn,
|
||||||
|
s->dl_count.hfn,
|
||||||
|
s->dl_count.sn_len == NGAP_SN_LENGTH_18 ? "18-bit" : "12-bit");
|
||||||
|
|
||||||
|
// Send to PDCP layer
|
||||||
|
for (int j = 0; j < MAX_DRBS_PER_UE; j++) {
|
||||||
|
if (UE->established_drbs[j].drb_id == s->drb_id)
|
||||||
|
nr_pdcp_update_ran_status(UE->rrc_ue_id,
|
||||||
|
s->drb_id,
|
||||||
|
s->ul_count.pdcp_sn,
|
||||||
|
s->ul_count.hfn,
|
||||||
|
s->dl_count.pdcp_sn,
|
||||||
|
s->dl_count.hfn,
|
||||||
|
s->dl_count.sn_len == NGAP_SN_LENGTH_18);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|||||||
@@ -108,4 +108,6 @@ void rrc_gNB_send_NGAP_HANDOVER_NOTIFY(gNB_RRC_INST *rrc, gNB_RRC_UE_t *UE);
|
|||||||
|
|
||||||
int rrc_gNB_send_NGAP_ul_ran_status_transfer(gNB_RRC_INST *rrc, gNB_RRC_UE_t *UE, const int n_to_mod, const e1_pdcp_status_info_t *pdcp_status);
|
int rrc_gNB_send_NGAP_ul_ran_status_transfer(gNB_RRC_INST *rrc, gNB_RRC_UE_t *UE, const int n_to_mod, const e1_pdcp_status_info_t *pdcp_status);
|
||||||
|
|
||||||
|
int rrc_gNB_process_NGAP_DL_RAN_STATUS_TRANSFER(MessageDef *msg_p, instance_t instance);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user