Skip to content

Commit 1b787f6

Browse files
FabianEckermanncodebot
authored andcommitted
cu_cp,rrc: Request ue release when reconfiguration fails
1 parent c72cb4e commit 1b787f6

File tree

3 files changed

+18
-2
lines changed

3 files changed

+18
-2
lines changed

lib/rrc/ue/procedures/rrc_reconfiguration_procedure.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include "rrc_reconfiguration_procedure.h"
1212
#include "../rrc_asn1_helpers.h"
1313
#include "srsran/cu_cp/du_processor.h"
14+
#include "srsran/ran/cause.h"
1415

1516
using namespace srsran;
1617
using namespace srsran::srs_cu_cp;
@@ -19,12 +20,14 @@ using namespace asn1::rrc_nr;
1920
rrc_reconfiguration_procedure::rrc_reconfiguration_procedure(rrc_ue_context_t& context_,
2021
const rrc_reconfiguration_procedure_request& args_,
2122
rrc_ue_reconfiguration_proc_notifier& rrc_ue_notifier_,
23+
rrc_ue_control_notifier& ngap_ctrl_notifier_,
2224
rrc_ue_event_manager& event_mng_,
2325
rrc_ue_srb_handler& srb_notifier_,
2426
rrc_ue_logger& logger_) :
2527
context(context_),
2628
args(args_),
2729
rrc_ue(rrc_ue_notifier_),
30+
ngap_ctrl_notifier(ngap_ctrl_notifier_),
2831
event_mng(event_mng_),
2932
srb_notifier(srb_notifier_),
3033
logger(logger_)
@@ -62,6 +65,7 @@ void rrc_reconfiguration_procedure::operator()(coro_context<async_task<bool>>& c
6265
procedure_result = true;
6366
} else {
6467
logger.log_warning("\"{}\" timed out after {}ms", name(), context.cfg.rrc_procedure_timeout_ms);
68+
send_ue_context_release_request();
6569
}
6670

6771
logger.log_debug("\"{}\" finalized", name());
@@ -76,3 +80,10 @@ void rrc_reconfiguration_procedure::send_rrc_reconfiguration()
7680
fill_asn1_rrc_reconfiguration_msg(rrc_reconfig, transaction.id(), args);
7781
rrc_ue.on_new_dl_dcch(srb_id_t::srb1, dl_dcch_msg);
7882
}
83+
84+
void rrc_reconfiguration_procedure::send_ue_context_release_request()
85+
{
86+
cu_cp_ue_context_release_request ue_context_release_request{
87+
context.ue_index, {}, cause_radio_network_t::release_due_to_ngran_generated_reason};
88+
ngap_ctrl_notifier.on_ue_context_release_request(ue_context_release_request);
89+
}

lib/rrc/ue/procedures/rrc_reconfiguration_procedure.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ class rrc_reconfiguration_procedure
3131
rrc_reconfiguration_procedure(rrc_ue_context_t& context_,
3232
const rrc_reconfiguration_procedure_request& args_,
3333
rrc_ue_reconfiguration_proc_notifier& rrc_ue_notifier_,
34+
rrc_ue_control_notifier& ngap_ctrl_notifier_,
3435
rrc_ue_event_manager& ev_mng_,
3536
rrc_ue_srb_handler& srb_notifier_,
3637
rrc_ue_logger& logger_);
@@ -43,10 +44,13 @@ class rrc_reconfiguration_procedure
4344
/// \remark Send RRC Reconfiguration, see section 5.3.5 in TS 38.331
4445
void send_rrc_reconfiguration();
4546

47+
void send_ue_context_release_request();
48+
4649
rrc_ue_context_t& context;
4750
const rrc_reconfiguration_procedure_request args;
4851

49-
rrc_ue_reconfiguration_proc_notifier& rrc_ue; // handler to the parent RRC UE object
52+
rrc_ue_reconfiguration_proc_notifier& rrc_ue; // handler to the parent RRC UE object
53+
rrc_ue_control_notifier& ngap_ctrl_notifier;
5054
rrc_ue_event_manager& event_mng; // event manager for the RRC UE entity
5155
rrc_ue_srb_handler& srb_notifier; // For creating SRBs
5256
rrc_ue_logger& logger;

lib/rrc/ue/rrc_ue_message_handlers.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,8 @@ void rrc_ue_impl::handle_rrc_transaction_complete(const ul_dcch_msg_s& msg, uint
239239

240240
async_task<bool> rrc_ue_impl::handle_rrc_reconfiguration_request(const rrc_reconfiguration_procedure_request& msg)
241241
{
242-
return launch_async<rrc_reconfiguration_procedure>(context, msg, *this, *event_mng, get_rrc_ue_srb_handler(), logger);
242+
return launch_async<rrc_reconfiguration_procedure>(
243+
context, msg, *this, ngap_ctrl_notifier, *event_mng, get_rrc_ue_srb_handler(), logger);
243244
}
244245

245246
uint8_t rrc_ue_impl::handle_handover_reconfiguration_request(const rrc_reconfiguration_procedure_request& msg)

0 commit comments

Comments
 (0)