Skip to content

Commit aadc9d2

Browse files
author
codebot
committed
Update main
2 parents a83bd10 + 9fa997b commit aadc9d2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+382
-232
lines changed

include/srsran/cu_cp/cu_cp_types.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,7 @@ struct cu_cp_associated_qos_flow {
291291
};
292292
struct cu_cp_qos_flow_with_cause_item {
293293
qos_flow_id_t qos_flow_id = qos_flow_id_t::invalid;
294-
cause_t cause = cause_t::nulltype;
294+
cause_t cause;
295295
};
296296

297297
using cu_cp_qos_flow_failed_to_setup_item = cu_cp_qos_flow_with_cause_item;
@@ -315,7 +315,7 @@ struct cu_cp_pdu_session_res_setup_response_item {
315315
};
316316

317317
struct cu_cp_pdu_session_resource_setup_unsuccessful_transfer {
318-
cause_t cause = cause_t::nulltype;
318+
cause_t cause;
319319
optional<crit_diagnostics_t> crit_diagnostics;
320320
};
321321

@@ -331,7 +331,7 @@ struct cu_cp_pdu_session_resource_setup_response {
331331
};
332332

333333
struct cu_cp_pdu_session_res_release_cmd_transfer {
334-
cause_t cause = cause_t::nulltype;
334+
cause_t cause;
335335
};
336336

337337
struct cu_cp_pdu_session_res_to_release_item_rel_cmd {
@@ -443,13 +443,13 @@ struct cu_cp_pdu_session_resource_modify_response {
443443

444444
struct cu_cp_ngap_ue_context_release_command {
445445
ue_index_t ue_index = ue_index_t::invalid;
446-
cause_t cause = cause_t::nulltype;
446+
cause_t cause;
447447
};
448448

449449
struct cu_cp_ue_context_release_request {
450450
ue_index_t ue_index = ue_index_t::invalid;
451451
std::vector<pdu_session_id_t> pdu_session_res_list_cxt_rel_req;
452-
cause_t cause = cause_t::nulltype;
452+
cause_t cause;
453453
};
454454

455455
struct cu_cp_recommended_cell_item {

include/srsran/ngap/ngap_handover.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ struct ngap_handover_resource_allocation_response {
162162
ngap_target_ngran_node_to_source_ngran_node_transparent_container target_to_source_transparent_container;
163163

164164
// handover request failure
165-
cause_t cause = cause_t::nulltype;
165+
cause_t cause;
166166

167167
// common
168168
optional<crit_diagnostics_t> crit_diagnostics;

include/srsran/ran/cause.h

Lines changed: 73 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,81 @@
2222

2323
#pragma once
2424

25+
#include "srsran/adt/variant.h"
26+
2527
namespace srsran {
2628

27-
enum class cause_t : uint8_t {
28-
radio_network = 0,
29-
transport = 1,
30-
nas = 2,
31-
protocol = 3,
32-
misc = 4,
33-
choice_exts = 5,
34-
nulltype = 6
29+
enum class cause_radio_network_t : uint8_t {
30+
unspecified = 0,
31+
txnrelocoverall_expiry,
32+
successful_ho,
33+
release_due_to_ngran_generated_reason,
34+
release_due_to_5gc_generated_reason,
35+
ho_cancelled,
36+
partial_ho,
37+
ho_fail_in_target_5_gc_ngran_node_or_target_sys,
38+
ho_target_not_allowed,
39+
tngrelocoverall_expiry,
40+
tngrelocprep_expiry,
41+
cell_not_available,
42+
unknown_target_id,
43+
no_radio_res_available_in_target_cell,
44+
unknown_local_ue_ngap_id,
45+
inconsistent_remote_ue_ngap_id,
46+
ho_desirable_for_radio_reason,
47+
time_crit_ho,
48+
res_optim_ho,
49+
reduce_load_in_serving_cell,
50+
user_inactivity,
51+
radio_conn_with_ue_lost,
52+
radio_res_not_available,
53+
invalid_qos_combination,
54+
fail_in_radio_interface_proc,
55+
interaction_with_other_proc,
56+
unknown_pdu_session_id,
57+
unkown_qos_flow_id,
58+
multiple_pdu_session_id_instances,
59+
multiple_qos_flow_id_instances,
60+
encryption_and_or_integrity_protection_algorithms_not_supported,
61+
ng_intra_sys_ho_triggered,
62+
ng_inter_sys_ho_triggered,
63+
xn_ho_triggered,
64+
not_supported_5qi_value,
65+
ue_context_transfer,
66+
ims_voice_eps_fallback_or_rat_fallback_triggered,
67+
up_integrity_protection_not_possible,
68+
up_confidentiality_protection_not_possible,
69+
slice_not_supported,
70+
ue_in_rrc_inactive_state_not_reachable,
71+
redirection,
72+
res_not_available_for_the_slice,
73+
ue_max_integrity_protected_data_rate_reason,
74+
release_due_to_cn_detected_mob
75+
};
76+
77+
enum class cause_transport_t : uint8_t { transport_res_unavailable = 0, unspecified };
78+
79+
enum class cause_nas_t : uint8_t { normal_release = 0, authentication_fail, deregister, unspecified };
80+
81+
enum class cause_protocol_t : uint8_t {
82+
transfer_syntax_error = 0,
83+
abstract_syntax_error_reject,
84+
abstract_syntax_error_ignore_and_notify,
85+
msg_not_compatible_with_receiver_state,
86+
semantic_error,
87+
abstract_syntax_error_falsely_constructed_msg,
88+
unspecified
89+
};
90+
91+
enum class cause_misc_t : uint8_t {
92+
ctrl_processing_overload = 0,
93+
not_enough_user_plane_processing_res,
94+
hardware_fail,
95+
om_intervention,
96+
unknown_plmn_or_sn_pn,
97+
unspecified
3598
};
3699

100+
using cause_t = variant<cause_radio_network_t, cause_transport_t, cause_nas_t, cause_protocol_t, cause_misc_t>;
101+
37102
} // namespace srsran

include/srsran/rrc/rrc_ue.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ class rrc_ue_reestablishment_proc_notifier
155155

156156
struct rrc_ue_context_release_command {
157157
ue_index_t ue_index = ue_index_t::invalid;
158-
cause_t cause = cause_t::nulltype;
158+
cause_t cause;
159159
byte_buffer rrc_release_pdu;
160160
optional<srb_id_t> srb_id;
161161
};

lib/cu_cp/du_processor/du_processor_impl.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ void du_processor_impl::handle_f1_setup_request(const f1ap_f1_setup_request& req
8989
// Reject request without served cells
9090
if (request.gnb_du_served_cells_list.size() == 0) {
9191
logger.error("Not handling F1 setup without served cells");
92-
send_f1_setup_failure(cause_t::radio_network);
92+
send_f1_setup_failure(cause_radio_network_t::unspecified);
9393
return;
9494
}
9595

@@ -102,7 +102,7 @@ void du_processor_impl::handle_f1_setup_request(const f1ap_f1_setup_request& req
102102
// Forward serving cell list to RRC DU
103103
// TODO: How to handle missing optional freq and timing in meas timing config?
104104
if (!rrc_du_adapter.on_new_served_cell_list(request.gnb_du_served_cells_list)) {
105-
send_f1_setup_failure(cause_t::protocol);
105+
send_f1_setup_failure(cause_protocol_t::unspecified);
106106
return;
107107
}
108108

@@ -113,35 +113,35 @@ void du_processor_impl::handle_f1_setup_request(const f1ap_f1_setup_request& req
113113

114114
if (du_cell.cell_index == du_cell_index_t::invalid) {
115115
logger.error("Not handling F1 setup, maximum number of DU cells reached");
116-
send_f1_setup_failure(cause_t::radio_network);
116+
send_f1_setup_failure(cause_radio_network_t::unspecified);
117117
return;
118118
}
119119

120120
du_cell.cgi = served_cell.served_cell_info.nr_cgi;
121121
if (not srsran::config_helpers::is_valid(du_cell.cgi)) {
122122
logger.error("Not handling F1 setup, invalid CGI for cell {}", du_cell.cell_index);
123-
send_f1_setup_failure(cause_t::radio_network);
123+
send_f1_setup_failure(cause_radio_network_t::unspecified);
124124
return;
125125
}
126126

127127
du_cell.pci = served_cell.served_cell_info.nr_pci;
128128
if (not srsran::config_helpers::is_valid(du_cell.pci)) {
129129
logger.error("Not handling F1 setup, invalid PCI for cell {}", du_cell.pci);
130-
send_f1_setup_failure(cause_t::radio_network);
130+
send_f1_setup_failure(cause_radio_network_t::unspecified);
131131
return;
132132
}
133133

134134
if (not served_cell.served_cell_info.five_gs_tac.has_value()) {
135135
logger.error("Not handling F1 setup, missing TAC for cell {}", du_cell.cell_index);
136-
send_f1_setup_failure(cause_t::radio_network);
136+
send_f1_setup_failure(cause_radio_network_t::unspecified);
137137
return;
138138
} else {
139139
du_cell.tac = served_cell.served_cell_info.five_gs_tac.value();
140140
}
141141

142142
if (not served_cell.gnb_du_sys_info.has_value()) {
143143
logger.error("Not handling served cells without system information");
144-
send_f1_setup_failure(cause_t::radio_network);
144+
send_f1_setup_failure(cause_radio_network_t::unspecified);
145145
return;
146146
} else {
147147
// Store and unpack system information
@@ -551,7 +551,7 @@ void du_processor_impl::handle_inactivity_notification(const cu_cp_inactivity_no
551551
if (msg.ue_inactive) {
552552
cu_cp_ue_context_release_request req;
553553
req.ue_index = msg.ue_index;
554-
req.cause = cause_t::radio_network;
554+
req.cause = cause_radio_network_t::unspecified;
555555

556556
// Add PDU Session IDs
557557
auto& up_resource_manager = ue->get_up_resource_manager();

lib/cu_cp/routines/mobility/inter_cu_handover_target_routine.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include "inter_cu_handover_target_routine.h"
2424
#include "../pdu_session_routine_helpers.h"
2525
#include "srsran/ngap/ngap_handover.h"
26+
#include "srsran/ran/cause.h"
2627

2728
using namespace srsran;
2829
using namespace srs_cu_cp;
@@ -350,7 +351,7 @@ inter_cu_handover_target_routine::generate_handover_resource_allocation_response
350351

351352
// ngap_ho_res_alloc_unsuccessful_transfer
352353
// cause
353-
failed_item.unsuccessful_transfer.cause = cause_t::protocol;
354+
failed_item.unsuccessful_transfer.cause = cause_protocol_t::unspecified;
354355

355356
response.pdu_session_res_failed_to_setup_list_ho_ack.emplace(failed_item.pdu_session_id, failed_item);
356357
}
@@ -359,7 +360,7 @@ inter_cu_handover_target_routine::generate_handover_resource_allocation_response
359360
} else {
360361
response.success = false;
361362
response.ue_index = request.ue_index;
362-
response.cause = cause_t::protocol;
363+
response.cause = cause_protocol_t::unspecified;
363364
}
364365

365366
return response;

lib/cu_cp/routines/mobility/inter_du_handover_routine.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ void inter_du_handover_routine::operator()(coro_context<async_task<cu_cp_inter_d
121121

122122
{
123123
ue_context_release_cmd.ue_index = target_ue_context_setup_response.ue_index;
124-
ue_context_release_cmd.cause = cause_t::radio_network;
124+
ue_context_release_cmd.cause = cause_radio_network_t::unspecified;
125125
CORO_AWAIT_VALUE(ue_context_release_result,
126126
target_du_f1ap_ue_ctxt_notifier.on_ue_context_release_command(ue_context_release_cmd));
127127

@@ -167,7 +167,7 @@ void inter_du_handover_routine::operator()(coro_context<async_task<cu_cp_inter_d
167167
// Remove UE context in source DU.
168168
{
169169
ue_context_release_cmd.ue_index = source_ue->get_ue_index();
170-
ue_context_release_cmd.cause = cause_t::radio_network;
170+
ue_context_release_cmd.cause = cause_radio_network_t::unspecified;
171171
CORO_AWAIT_VALUE(ue_context_release_result,
172172
source_du_f1ap_ue_ctxt_notifier.on_ue_context_release_command(ue_context_release_cmd));
173173

lib/cu_cp/routines/pdu_session_resource_modification_routine.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ void fill_modify_failed_list(cu_cp_pdu_session_resource_modify_response& re
147147
for (const auto& item : modify_request.pdu_session_res_modify_items) {
148148
cu_cp_pdu_session_resource_failed_to_modify_item failed_item;
149149
failed_item.pdu_session_id = item.pdu_session_id;
150-
failed_item.unsuccessful_transfer.cause = cause_t::misc;
150+
failed_item.unsuccessful_transfer.cause = cause_misc_t::unspecified;
151151
response_msg.pdu_session_res_failed_to_modify_list.emplace(failed_item.pdu_session_id, failed_item);
152152
}
153153
}
@@ -284,7 +284,7 @@ void mark_all_sessions_as_failed(cu_cp_pdu_session_resource_modify_response&
284284
for (const auto& modify_item : modify_request.pdu_session_res_modify_items) {
285285
cu_cp_pdu_session_resource_failed_to_modify_item failed_item;
286286
failed_item.pdu_session_id = modify_item.pdu_session_id;
287-
failed_item.unsuccessful_transfer.cause = cause_t::radio_network;
287+
failed_item.unsuccessful_transfer.cause = cause_radio_network_t::unspecified;
288288
response_msg.pdu_session_res_failed_to_modify_list.emplace(failed_item.pdu_session_id, failed_item);
289289
}
290290
}
@@ -305,7 +305,7 @@ pdu_session_resource_modification_routine::generate_pdu_session_resource_modify_
305305
for (const auto& psi : next_config.pdu_sessions_failed_to_modify_list) {
306306
cu_cp_pdu_session_resource_failed_to_modify_item failed_item;
307307
failed_item.pdu_session_id = psi;
308-
failed_item.unsuccessful_transfer.cause = cause_t::radio_network;
308+
failed_item.unsuccessful_transfer.cause = cause_radio_network_t::unspecified;
309309
response_msg.pdu_session_res_failed_to_modify_list.emplace(failed_item.pdu_session_id, failed_item);
310310
}
311311
} else {

lib/cu_cp/routines/pdu_session_resource_release_routine.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ void pdu_session_resource_release_routine::operator()(
8383
if (next_config.context_removal_required) {
8484
// Remove bearer context.
8585
bearer_context_release_command.ue_index = release_cmd.ue_index;
86-
bearer_context_release_command.cause = cause_t::radio_network;
86+
bearer_context_release_command.cause = cause_radio_network_t::unspecified;
8787

8888
CORO_AWAIT(e1ap_ctrl_notifier.on_bearer_context_release_command(bearer_context_release_command));
8989

@@ -120,7 +120,7 @@ async_task<void> pdu_session_resource_release_routine::request_context_release()
120120

121121
cu_cp_ue_context_release_request ue_context_release_request;
122122
ue_context_release_request.ue_index = release_cmd.ue_index;
123-
ue_context_release_request.cause = cause_t::radio_network;
123+
ue_context_release_request.cause = cause_radio_network_t::unknown_pdu_session_id;
124124
ngap_ctrl_notifier.on_ue_context_release_request(ue_context_release_request);
125125

126126
CORO_RETURN();

lib/cu_cp/routines/pdu_session_resource_setup_routine.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ void fill_setup_failed_list(cu_cp_pdu_session_resource_setup_response& resp
313313
for (const auto& item : setup_msg.pdu_session_res_setup_items) {
314314
cu_cp_pdu_session_res_setup_failed_item failed_item;
315315
failed_item.pdu_session_id = item.pdu_session_id;
316-
failed_item.unsuccessful_transfer.cause = cause_t::misc;
316+
failed_item.unsuccessful_transfer.cause = cause_misc_t::unspecified;
317317
response_msg.pdu_session_res_failed_to_setup_items.emplace(failed_item.pdu_session_id, failed_item);
318318
}
319319
}
@@ -395,7 +395,7 @@ pdu_session_resource_setup_routine::handle_pdu_session_resource_setup_result(boo
395395
} else {
396396
logger.error("ue={}: \"{}\" failed.", setup_msg.ue_index, name());
397397

398-
mark_all_sessions_as_failed(response_msg, setup_msg, cause_t::radio_network);
398+
mark_all_sessions_as_failed(response_msg, setup_msg, cause_radio_network_t::unspecified);
399399
}
400400

401401
return response_msg;

0 commit comments

Comments
 (0)