Skip to content

Commit e4b3ddd

Browse files
andrepuschmanncodebot
authored andcommitted
cu_cp,f1ap: implicitly allocate CU UE F1AP ID when handling UE context setup request
1 parent d7bbf47 commit e4b3ddd

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

lib/f1ap/cu_cp/f1ap_cu_impl.cpp

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,10 +125,36 @@ void f1ap_cu_impl::handle_dl_rrc_message_transfer(const f1ap_dl_rrc_message& msg
125125
pdu_notifier.on_new_message(f1ap_dl_rrc_msg);
126126
}
127127

128+
gnb_cu_ue_f1ap_id_t f1ap_cu_impl::allocate_f1ap_id(ue_index_t ue_index)
129+
{
130+
// Only create F1AP UE context.
131+
gnb_cu_ue_f1ap_id_t cu_ue_f1ap_id = ue_ctxt_list.next_gnb_cu_ue_f1ap_id();
132+
if (cu_ue_f1ap_id == gnb_cu_ue_f1ap_id_t::invalid) {
133+
return cu_ue_f1ap_id;
134+
}
135+
136+
// Create UE context and store it (DU F1AP UE ID and SRBs are not available/created yet).
137+
ue_ctxt_list.add_ue(ue_index, cu_ue_f1ap_id);
138+
f1ap_ue_context& ue_ctxt = ue_ctxt_list[cu_ue_f1ap_id];
139+
140+
logger.debug("ue={} Added UE (cu_ue_f1ap_id={}, du_ue_f1ap_id=<na>)", ue_ctxt.ue_index, cu_ue_f1ap_id);
141+
142+
return cu_ue_f1ap_id;
143+
}
144+
128145
async_task<f1ap_ue_context_setup_response>
129146
f1ap_cu_impl::handle_ue_context_setup_request(const f1ap_ue_context_setup_request& request)
130147
{
131-
srsran_assert(ue_ctxt_list.contains(request.ue_index), "ue={} No F1AP UE context available.", request.ue_index);
148+
if (not ue_ctxt_list.contains(request.ue_index)) {
149+
if (allocate_f1ap_id(request.ue_index) == gnb_cu_ue_f1ap_id_t::invalid) {
150+
logger.error("ue={} Failed to allocate CU UE F1AP ID.", request.ue_index);
151+
return launch_async([](coro_context<async_task<f1ap_ue_context_setup_response>>& ctx) mutable {
152+
CORO_BEGIN(ctx);
153+
CORO_RETURN(f1ap_ue_context_setup_response{});
154+
});
155+
}
156+
}
157+
132158
return launch_async<ue_context_setup_procedure>(request, ue_ctxt_list[request.ue_index], pdu_notifier, logger);
133159
}
134160

lib/f1ap/cu_cp/f1ap_cu_impl.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,8 @@ class f1ap_cu_impl final : public f1ap_cu
107107
/// \param[in] msg The UE Context Release Request message.
108108
void handle_ue_context_release_request(const asn1::f1ap::ue_context_release_request_s& msg);
109109

110+
gnb_cu_ue_f1ap_id_t allocate_f1ap_id(ue_index_t ue_index);
111+
110112
srslog::basic_logger& logger;
111113

112114
// TODO: Share timer manager with the rest of the CU.

0 commit comments

Comments
 (0)