Skip to content

Commit 465eb00

Browse files
committed
du_mgr: return empty cellGroupConfig if no SCells, DRBs or SRBs to setup or release
1 parent 0ce6984 commit 465eb00

File tree

3 files changed

+22
-5
lines changed

3 files changed

+22
-5
lines changed

lib/du_manager/procedures/ue_configuration_procedure.cpp

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,9 @@ void ue_configuration_procedure::operator()(coro_context<async_task<f1ap_ue_cont
3838

3939
if (request.drbs_to_setup.empty() and request.srbs_to_setup.empty() and request.drbs_to_rem.empty() and
4040
request.scells_to_setup.empty() and request.scells_to_rem.empty()) {
41-
proc_logger.log_proc_failure("No SCells, DRBs or SRBs to setup or release");
42-
CORO_EARLY_RETURN(make_ue_config_failure());
41+
// No SCells, DRBs or SRBs to setup or release so nothing to do.
42+
proc_logger.log_proc_completed();
43+
CORO_EARLY_RETURN(make_empty_ue_config_response());
4344
}
4445

4546
prev_cell_group = ue->resources.value();
@@ -340,3 +341,18 @@ f1ap_ue_context_update_response ue_configuration_procedure::make_ue_config_failu
340341
resp.result = false;
341342
return resp;
342343
}
344+
345+
f1ap_ue_context_update_response ue_configuration_procedure::make_empty_ue_config_response()
346+
{
347+
f1ap_ue_context_update_response resp;
348+
resp.result = true;
349+
// > Calculate ASN.1 CellGroupConfig to be sent in DU-to-CU container.
350+
asn1::rrc_nr::cell_group_cfg_s asn1_cell_group;
351+
// Pack cellGroupConfig.
352+
{
353+
asn1::bit_ref bref{resp.du_to_cu_rrc_container};
354+
asn1::SRSASN_CODE code = asn1_cell_group.pack(bref);
355+
srsran_assert(code == asn1::SRSASN_SUCCESS, "Invalid cellGroupConfig");
356+
}
357+
return resp;
358+
}

lib/du_manager/procedures/ue_configuration_procedure.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ class ue_configuration_procedure
4040
async_task<mac_ue_reconfiguration_response> update_mac_mux_and_demux();
4141

4242
f1ap_ue_context_update_response make_ue_config_response();
43+
f1ap_ue_context_update_response make_empty_ue_config_response();
4344
f1ap_ue_context_update_response make_ue_config_failure();
4445

4546
const f1ap_ue_context_update_request request;

tests/unittests/du_manager/procedures/ue_configuration_test.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,7 @@ TEST_F(ue_config_tester, when_config_is_invalid_of_drb_to_create_then_drb_is_inc
322322
ASSERT_EQ(resp.drbs_failed_to_setup[0], drb_id_t::drb1);
323323
}
324324

325-
TEST_F(ue_config_tester, when_config_is_empty_then_procedure_avoids_configuring_other_layers_and_returns_failure)
325+
TEST_F(ue_config_tester, when_config_is_empty_then_procedure_avoids_configuring_other_layers_and_returns_success)
326326
{
327327
// Start Procedure.
328328
f1ap_ue_context_update_request req = create_f1ap_ue_context_update_request(test_ue->ue_index, {}, {});
@@ -335,8 +335,8 @@ TEST_F(ue_config_tester, when_config_is_empty_then_procedure_avoids_configuring_
335335
// Procedure completes with failure.
336336
ASSERT_TRUE(proc.ready());
337337
f1ap_ue_context_update_response resp = proc.get();
338-
ASSERT_FALSE(resp.result);
339-
ASSERT_TRUE(resp.du_to_cu_rrc_container.empty());
338+
ASSERT_TRUE(resp.result);
339+
ASSERT_FALSE(resp.du_to_cu_rrc_container.empty());
340340
ASSERT_TRUE(resp.drbs_setup.empty());
341341
ASSERT_TRUE(resp.drbs_failed_to_setup.empty());
342342
}

0 commit comments

Comments
 (0)