Skip to content

Commit b1cd9ca

Browse files
committed
e2sm_rc: handling rc parameter value structures correctly
1 parent 53ba64c commit b1cd9ca

File tree

10 files changed

+166
-50
lines changed

10 files changed

+166
-50
lines changed

include/srsran/du_manager/du_configurator.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@
1111
#pragma once
1212

1313
#include "srsran/adt/optional.h"
14+
#include "srsran/ran/rrm.h"
1415
#include "srsran/support/async/async_task.h"
1516

1617
namespace srsran {
1718

1819
struct control_config_params {
19-
optional<unsigned> num_harq_processes;
20-
optional<unsigned> num_harq_retransmissions;
21-
optional<unsigned> min_prb_alloc;
22-
optional<unsigned> max_prb_alloc;
20+
optional<unsigned> num_harq_processes;
21+
optional<unsigned> num_harq_retransmissions;
22+
optional<RRM_policy_ratio_group> rrm_policy_ratio_group;
2323
};
2424

2525
struct du_mac_sched_control_config {

include/srsran/ran/rrm.h

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/*
2+
*
3+
* Copyright 2021-2024 Software Radio Systems Limited
4+
*
5+
* By using this file, you agree to the terms and conditions set
6+
* forth in the LICENSE file which can be found at the top level of
7+
* the distribution.
8+
*
9+
*/
10+
11+
#pragma once
12+
13+
#include "srsran/ran/s_nssai.h"
14+
15+
namespace srsran {
16+
17+
struct RRM_policy_member {
18+
std::string plmn_id;
19+
s_nssai_t s_nssai;
20+
};
21+
22+
struct RRM_policy_ratio_group {
23+
RRM_policy_member pol_member;
24+
int min_PRB_policy_ratio;
25+
int max_PRB_policy_ratio;
26+
int ded_PRB_policy_ratio;
27+
};
28+
29+
} // namespace srsran

include/srsran/scheduler/scheduler_configurator.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#include "srsran/ran/qos/qos_info.h"
2323
#include "srsran/ran/rnti.h"
2424
#include "srsran/ran/s_nssai.h"
25+
#include "srsran/ran/rrm.h"
2526
#include "srsran/ran/sib/sib_configuration.h"
2627
#include "srsran/ran/slot_pdu_capacity_constants.h"
2728
#include "srsran/ran/slot_point.h"
@@ -107,6 +108,8 @@ struct sched_ue_resource_alloc_config {
107108
unsigned max_pdsch_harq_retxs = 4;
108109
/// Maximum PUSCH HARQ retransmissions.
109110
unsigned max_pusch_harq_retxs = 4;
111+
// RRM policy for the UE.
112+
RRM_policy_ratio_group rrm_policy_ratio_group;
110113
};
111114

112115
/// QoS and slicing information associated with a DRB provided to the scheduler.

lib/du_manager/procedures/du_ue_ric_configuration_procedure.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,9 @@ async_task<mac_ue_reconfiguration_response> du_ue_ric_configuration_procedure::h
7676
auto& res_alloc_cfg = mac_request.sched_cfg.res_alloc_cfg.value();
7777
// for now take first parameter set, in future we will have to support multiple parameter sets for different slices.
7878
control_config_params req = request.param_list[0];
79-
res_alloc_cfg.pdsch_grant_size_limits = {req.min_prb_alloc.has_value() ? req.min_prb_alloc.value() : 0,
80-
req.max_prb_alloc.has_value() ? req.max_prb_alloc.value() : MAX_NOF_PRBS};
79+
RRM_policy_ratio_group dummy = {};
80+
res_alloc_cfg.rrm_policy_ratio_group =
81+
req.rrm_policy_ratio_group.has_value() ? req.rrm_policy_ratio_group.value() : dummy;
8182
res_alloc_cfg.max_pdsch_harq_retxs = req.num_harq_retransmissions.has_value()
8283
? req.num_harq_retransmissions.value()
8384
: du_params.mac.sched_cfg.ue.max_nof_harq_retxs;

lib/du_manager/procedures/du_ue_ric_configuration_procedure.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include "../du_ue/du_ue_manager_repository.h"
1414
#include "procedure_logger.h"
1515
#include "srsran/du_manager/du_configurator.h"
16+
#include "srsran/ran/rrm.h"
1617
#include "srsran/support/async/manual_event.h"
1718

1819
namespace srsran {

lib/e2/e2sm/e2sm_rc/e2sm_rc_control_action_du_executor.cpp

Lines changed: 96 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
#include "e2sm_rc_control_action_du_executor.h"
1212
#include <future>
13-
13+
#define USING_FLEXRIC
1414
using namespace asn1::e2ap;
1515
using namespace asn1::e2sm;
1616
using namespace srsran;
@@ -53,24 +53,6 @@ e2sm_rc_control_action_du_executor_base::return_ctrl_failure(const e2sm_ric_cont
5353
});
5454
}
5555

56-
void e2sm_rc_control_action_du_executor_base::parse_ran_parameter_value_false(
57-
const ran_param_value_type_choice_elem_false_s& ran_p,
58-
uint64_t ran_param_id,
59-
uint64_t ue_id,
60-
du_mac_sched_control_config& ctrl_cfg)
61-
{
62-
control_config_params cfg;
63-
if (ran_param_id == 11) {
64-
cfg.min_prb_alloc = ran_p.ran_param_value.value_int();
65-
} else if (ran_param_id == 12) {
66-
cfg.max_prb_alloc = ran_p.ran_param_value.value_int();
67-
} else {
68-
logger.error("Unknown RAN parameter ID %d", ran_param_id);
69-
return;
70-
}
71-
ctrl_cfg.param_list.push_back(cfg);
72-
}
73-
7456
void e2sm_rc_control_action_du_executor_base::parse_ran_parameter_value(const ran_param_value_type_c& ran_param,
7557
uint64_t ran_param_id,
7658
uint64_t ue_id,
@@ -91,7 +73,7 @@ void e2sm_rc_control_action_du_executor_base::parse_ran_parameter_value(const ra
9173
}
9274
}
9375
} else if (ran_param.type() == ran_param_value_type_c::types_opts::ran_p_choice_elem_false) {
94-
parse_ran_parameter_value_false(ran_param.ran_p_choice_elem_false(), ran_param_id, ue_id, ctrl_cfg);
76+
parse_action_ran_parameter_value(ran_param, ran_param_id, ue_id, ctrl_cfg);
9577
}
9678
}
9779

@@ -101,6 +83,20 @@ e2sm_rc_control_action_2_6_du_executor::e2sm_rc_control_action_2_6_du_executor(d
10183
// Control Action description:
10284
// To control the radio resource management policy for slice-specific PRB quota allocation
10385
action_name = "Slice-level PRB quota";
86+
#ifdef USING_FLEXRIC
87+
action_params.insert({1, "RRM Policy Ratio List"});
88+
action_params.insert({2, "RRM Policy Ratio Group"});
89+
action_params.insert({3, "RRM Policy"});
90+
action_params.insert({4, "RRM Policy Member List"});
91+
action_params.insert({5, "RRM Policy Member"});
92+
action_params.insert({6, "PLMN Identity"});
93+
action_params.insert({7, "S-NSSAI"});
94+
action_params.insert({8, "SST"});
95+
action_params.insert({9, "SD"});
96+
action_params.insert({10, "Min PRB Policy Ratio"});
97+
action_params.insert({11, "Max PRB Policy Ratio"});
98+
action_params.insert({12, "Dedicated PRB Policy Ratio"});
99+
#else
104100
action_params.insert({1, "RRM Policy Ratio List"});
105101
action_params.insert({2, "RRM Policy Ratio Group"});
106102
action_params.insert({3, "RRM Policy"});
@@ -114,8 +110,84 @@ e2sm_rc_control_action_2_6_du_executor::e2sm_rc_control_action_2_6_du_executor(d
114110
action_params.insert({11, "Min PRB Policy Ratio"});
115111
action_params.insert({12, "Max PRB Policy Ratio"});
116112
action_params.insert({13, "Dedicated PRB Policy Ratio"});
113+
#endif
117114
};
118115

116+
void e2sm_rc_control_action_2_6_du_executor::parse_action_ran_parameter_value(const ran_param_value_type_c& ran_param,
117+
uint64_t ran_param_id,
118+
uint64_t ue_id,
119+
du_mac_sched_control_config& ctrl_cfg)
120+
{
121+
if (ran_param_id == 6) {
122+
control_config_params cur_control_params = {};
123+
cur_control_params.rrm_policy_ratio_group.emplace();
124+
cur_control_params.rrm_policy_ratio_group.value().pol_member.plmn_id.append(
125+
ran_param.ran_p_choice_elem_false().ran_param_value.value_oct_s().to_string());
126+
ctrl_cfg.param_list.push_back(cur_control_params);
127+
} else if (ran_param_id == 8) {
128+
if (ctrl_cfg.param_list.size()) {
129+
if (ctrl_cfg.param_list.back().rrm_policy_ratio_group.value().pol_member.s_nssai.sst) {
130+
control_config_params cur_control_params = {};
131+
cur_control_params.rrm_policy_ratio_group.emplace();
132+
cur_control_params = ctrl_cfg.param_list.back();
133+
cur_control_params.rrm_policy_ratio_group.value().pol_member.s_nssai.sst =
134+
ran_param.ran_p_choice_elem_false().ran_param_value.value_oct_s().to_number();
135+
ctrl_cfg.param_list.push_back(cur_control_params);
136+
} else {
137+
ctrl_cfg.param_list.back().rrm_policy_ratio_group.value().pol_member.s_nssai.sst =
138+
ran_param.ran_p_choice_elem_false().ran_param_value.value_oct_s().to_number();
139+
}
140+
}
141+
} else if (ran_param_id == 9) {
142+
if (ctrl_cfg.param_list.size()) {
143+
if (ctrl_cfg.param_list.back().rrm_policy_ratio_group.value().pol_member.s_nssai.sd.has_value()) {
144+
control_config_params cur_control_params = {};
145+
cur_control_params.rrm_policy_ratio_group.emplace();
146+
cur_control_params = ctrl_cfg.param_list.back();
147+
cur_control_params.rrm_policy_ratio_group.value().pol_member.s_nssai.sd.emplace();
148+
cur_control_params.rrm_policy_ratio_group.value().pol_member.s_nssai.sd =
149+
ran_param.ran_p_choice_elem_false().ran_param_value.value_oct_s().to_number();
150+
ctrl_cfg.param_list.push_back(cur_control_params);
151+
} else {
152+
ctrl_cfg.param_list.back().rrm_policy_ratio_group.value().pol_member.s_nssai.sd.emplace();
153+
ctrl_cfg.param_list.back().rrm_policy_ratio_group.value().pol_member.s_nssai.sd =
154+
ran_param.ran_p_choice_elem_false().ran_param_value.value_oct_s().to_number();
155+
}
156+
}
157+
} else if (ran_param_id == 10) {
158+
if (ctrl_cfg.param_list.size()) {
159+
if (!ctrl_cfg.param_list.back().rrm_policy_ratio_group.has_value()) {
160+
ctrl_cfg.param_list.back().rrm_policy_ratio_group.emplace();
161+
}
162+
ctrl_cfg.param_list.back().rrm_policy_ratio_group.value().min_PRB_policy_ratio =
163+
ran_param.ran_p_choice_elem_false().ran_param_value.value_int();
164+
} else {
165+
control_config_params cur_control_params = {};
166+
cur_control_params.rrm_policy_ratio_group.emplace();
167+
cur_control_params.rrm_policy_ratio_group.value().min_PRB_policy_ratio =
168+
ran_param.ran_p_choice_elem_false().ran_param_value.value_int();
169+
ctrl_cfg.param_list.push_back(cur_control_params);
170+
}
171+
} else if (ran_param_id == 11) {
172+
if (ctrl_cfg.param_list.size()) {
173+
if (!ctrl_cfg.param_list.back().rrm_policy_ratio_group.has_value()) {
174+
ctrl_cfg.param_list.back().rrm_policy_ratio_group.emplace();
175+
}
176+
ctrl_cfg.param_list.back().rrm_policy_ratio_group.value().max_PRB_policy_ratio =
177+
ran_param.ran_p_choice_elem_false().ran_param_value.value_int();
178+
} else {
179+
control_config_params cur_control_params = {};
180+
cur_control_params.rrm_policy_ratio_group.emplace();
181+
cur_control_params.rrm_policy_ratio_group.value().max_PRB_policy_ratio =
182+
ran_param.ran_p_choice_elem_false().ran_param_value.value_int();
183+
ctrl_cfg.param_list.push_back(cur_control_params);
184+
}
185+
} else {
186+
logger.error("Unknown RAN parameter ID %d", ran_param_id);
187+
return;
188+
}
189+
}
190+
119191
bool e2sm_rc_control_action_2_6_du_executor::ric_control_action_supported(const e2sm_ric_control_request& req)
120192
{
121193
const e2sm_rc_ctrl_msg_format1_s& ctrl_msg =
@@ -192,17 +264,17 @@ e2sm_ric_control_response e2sm_rc_control_action_2_6_du_executor::convert_to_e2s
192264

193265
// TODO: fill outcome properly
194266
control_config_params req = du_config_req_.param_list[0];
195-
if (req.min_prb_alloc.has_value()) {
267+
if (req.rrm_policy_ratio_group.has_value()) {
196268
e2sm_rc_ctrl_outcome_format1_item_s min_prb_outcome;
197269
min_prb_outcome.ran_param_id = 11;
198-
min_prb_outcome.ran_param_value.set_value_int() = req.min_prb_alloc.value();
270+
min_prb_outcome.ran_param_value.set_value_int() = req.rrm_policy_ratio_group.value().min_PRB_policy_ratio;
199271
ctrl_outcome.ran_p_list.push_back(min_prb_outcome);
200272
}
201273

202-
if (req.max_prb_alloc.has_value()) {
274+
if (req.rrm_policy_ratio_group.has_value()) {
203275
e2sm_rc_ctrl_outcome_format1_item_s max_prb_outcome;
204276
max_prb_outcome.ran_param_id = 12;
205-
max_prb_outcome.ran_param_value.set_value_int() = req.max_prb_alloc.value();
277+
max_prb_outcome.ran_param_value.set_value_int() = req.rrm_policy_ratio_group.value().min_PRB_policy_ratio;
206278
ctrl_outcome.ran_p_list.push_back(max_prb_outcome);
207279
}
208280

lib/e2/e2sm/e2sm_rc/e2sm_rc_control_action_du_executor.h

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,14 @@ class e2sm_rc_control_action_du_executor_base : public e2sm_control_action_execu
3232
uint32_t get_action_id() override;
3333
bool ric_control_action_supported(const e2sm_ric_control_request& req) override = 0;
3434
async_task<e2sm_ric_control_response> execute_ric_control_action(const e2sm_ric_control_request& req) override = 0;
35-
void parse_ran_parameter_value_false(const asn1::e2sm::ran_param_value_type_choice_elem_false_s& ran_p,
36-
uint64_t ran_param_id,
37-
uint64_t ue_id,
38-
du_mac_sched_control_config& ctrl_cfg);
39-
void parse_ran_parameter_value(const asn1::e2sm::ran_param_value_type_c& ran_p,
40-
uint64_t ran_param_id,
41-
uint64_t ue_id,
42-
du_mac_sched_control_config& ctrl_cfg);
35+
virtual void parse_action_ran_parameter_value(const asn1::e2sm::ran_param_value_type_c& ran_p,
36+
uint64_t ran_param_id,
37+
uint64_t ue_id,
38+
du_mac_sched_control_config& ctrl_cfg) = 0;
39+
void parse_ran_parameter_value(const asn1::e2sm::ran_param_value_type_c& ran_p,
40+
uint64_t ran_param_id,
41+
uint64_t ue_id,
42+
du_mac_sched_control_config& ctrl_cfg);
4343
async_task<e2sm_ric_control_response> return_ctrl_failure(const e2sm_ric_control_request& req);
4444

4545
protected:
@@ -59,6 +59,10 @@ class e2sm_rc_control_action_2_6_du_executor : public e2sm_rc_control_action_du_
5959
/// e2sm_control_request_executor functions.
6060
bool ric_control_action_supported(const e2sm_ric_control_request& req) override;
6161
async_task<e2sm_ric_control_response> execute_ric_control_action(const e2sm_ric_control_request& req) override;
62+
void parse_action_ran_parameter_value(const asn1::e2sm::ran_param_value_type_c& ran_p,
63+
uint64_t ran_param_id,
64+
uint64_t ue_id,
65+
du_mac_sched_control_config& ctrl_cfg) override;
6266

6367
private:
6468
du_mac_sched_control_config convert_to_du_config_request(const e2sm_ric_control_request& e2sm_req_);

tests/unittests/du_manager/procedures/du_ue_ric_configuration_procedure_test.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ TEST_F(du_ue_ric_config_tester,
4646
when_new_ric_config_is_started_then_du_manager_starts_mac_config_and_waits_for_mac_response)
4747
{
4848
std::vector<control_config_params> param_list;
49-
param_list.emplace_back(control_config_params{nullopt, nullopt, 5, 10});
49+
RRM_policy_ratio_group pol;
50+
param_list.emplace_back(control_config_params{nullopt, nullopt, pol});
5051
start_procedure(du_mac_sched_control_config{(uint64_t)test_ue->f1ap_ue_id, param_list});
5152

5253
ASSERT_TRUE(mac.last_ue_reconf_msg.has_value()) << "MAC should have received new configuration";
@@ -63,7 +64,8 @@ TEST_F(du_ue_ric_config_tester,
6364
TEST_F(du_ue_ric_config_tester, when_mac_finished_configuration_then_procedure_finishes)
6465
{
6566
std::vector<control_config_params> param_list;
66-
param_list.emplace_back(control_config_params{nullopt, nullopt, 5, 10});
67+
RRM_policy_ratio_group pol;
68+
param_list.emplace_back(control_config_params{nullopt, nullopt, pol});
6769
start_procedure(du_mac_sched_control_config{(uint64_t)test_ue->f1ap_ue_id, param_list});
6870

6971
ASSERT_FALSE(proc_result().has_value()) << "The procedure should wait for MAC response";
@@ -88,7 +90,8 @@ TEST_F(du_ue_ric_config_tester,
8890

8991
// Start RIC UE config.
9092
std::vector<control_config_params> param_list;
91-
param_list.emplace_back(control_config_params{nullopt, nullopt, 5, 10});
93+
RRM_policy_ratio_group pol;
94+
param_list.emplace_back(control_config_params{nullopt, nullopt, pol});
9295
start_procedure(du_mac_sched_control_config{(uint64_t)test_ue->f1ap_ue_id, param_list});
9396

9497
// Status: RIC config procedure is waiting for previous procedure.

tests/unittests/e2/e2_ric_control_procedure_test.cpp

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ TEST_F(e2_test_setup, ric_control_procedure_setup)
3535

3636
TEST_F(e2_test_setup, ric_control_procedure_setup2)
3737
{
38-
e2_message request_msg = generate_ric_control_request(test_logger, 2, 6, 12, 12);
38+
e2_message request_msg = generate_ric_control_request(test_logger, 2, 6, 11, 12);
3939
e2->handle_message(request_msg);
4040
asn1::cbit_ref bref(gw->last_pdu);
4141
e2_message msg = {};
@@ -68,13 +68,16 @@ TEST_F(e2_test_setup, ric_control_procedure_fail)
6868
TEST_F(e2_test_setup, ric_control_procedure_packed)
6969
{
7070
uint8_t e2ap_ctrl_req[] = {
71-
0x00, 0x04, 0x00, 0x76, 0x00, 0x00, 0x05, 0x00, 0x1d, 0x00, 0x05, 0x00, 0x03, 0xfd, 0x00, 0x00, 0x00, 0x05,
72-
0x00, 0x02, 0x00, 0x03, 0x00, 0x16, 0x00, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x10, 0x00,
73-
0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x05, 0x00, 0x17, 0x00, 0x46, 0x45, 0x00, 0x00, 0x01, 0x00, 0x00, 0x60,
74-
0x00, 0x00, 0x40, 0x00, 0x03, 0x00, 0x02, 0x44, 0x00, 0x00, 0x00, 0x04, 0x60, 0x00, 0x00, 0x40, 0x00, 0x01,
75-
0x00, 0x06, 0x2a, 0x00, 0x05, 0x30, 0x30, 0x31, 0x30, 0x31, 0x00, 0x07, 0x44, 0x00, 0x01, 0x00, 0x08, 0x2a,
76-
0x00, 0x01, 0x31, 0x00, 0x09, 0x2a, 0x00, 0x01, 0x30, 0x00, 0x0a, 0x28, 0x80, 0x01, 0x05, 0x00, 0x0b, 0x28,
77-
0x80, 0x01, 0x19, 0x00, 0x0c, 0x28, 0x80, 0x01, 0x64, 0x00, 0x15, 0x00, 0x01, 0x40};
71+
0x00, 0x04, 0x00, 0x80, 0xb5, 0x00, 0x00, 0x05, 0x00, 0x1d, 0x00, 0x05, 0x00, 0x03, 0xfd, 0x00, 0x00, 0x00, 0x05,
72+
0x00, 0x02, 0x00, 0x03, 0x00, 0x16, 0x00, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x10, 0x00, 0x00,
73+
0x00, 0x01, 0x02, 0x00, 0x00, 0x05, 0x00, 0x17, 0x00, 0x80, 0x84, 0x80, 0x82, 0x00, 0x00, 0x01, 0x00, 0x00, 0x60,
74+
0x00, 0x01, 0x40, 0x00, 0x03, 0x00, 0x02, 0x44, 0x00, 0x00, 0x00, 0x03, 0x60, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00,
75+
0x05, 0x2a, 0x00, 0x05, 0x35, 0x30, 0x35, 0x30, 0x31, 0x00, 0x06, 0x44, 0x00, 0x01, 0x00, 0x07, 0x2a, 0x00, 0x01,
76+
0x31, 0x00, 0x08, 0x2a, 0x00, 0x01, 0x30, 0x00, 0x09, 0x28, 0x80, 0x01, 0x05, 0x00, 0x0a, 0x28, 0x80, 0x01, 0x33,
77+
0x00, 0x0b, 0x28, 0x80, 0x01, 0x46, 0x40, 0x00, 0x03, 0x00, 0x02, 0x44, 0x00, 0x00, 0x00, 0x03, 0x60, 0x00, 0x00,
78+
0x40, 0x00, 0x01, 0x00, 0x05, 0x2a, 0x00, 0x05, 0x35, 0x30, 0x35, 0x30, 0x31, 0x00, 0x06, 0x44, 0x00, 0x01, 0x00,
79+
0x07, 0x2a, 0x00, 0x01, 0x31, 0x00, 0x08, 0x2a, 0x00, 0x01, 0x35, 0x00, 0x09, 0x28, 0x80, 0x01, 0x05, 0x00, 0x0a,
80+
0x28, 0x80, 0x01, 0x33, 0x00, 0x0b, 0x28, 0x80, 0x01, 0x1e, 0x00, 0x15, 0x00, 0x01, 0x40};
7881
byte_buffer e2ap_ctrl_req_buf = byte_buffer::create(e2ap_ctrl_req, e2ap_ctrl_req + sizeof(e2ap_ctrl_req)).value();
7982
packer->handle_packed_pdu(std::move(e2ap_ctrl_req_buf));
8083

tests/unittests/e2/e2_setup_procedure_test.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ TEST_F(e2_test_setup, e2_sends_correct_rc_ran_function_definition)
201201
.ric_ctrl_action_list[0]
202202
.ran_ctrl_action_params_list[9]
203203
.ran_param_id,
204-
11);
204+
10);
205205
ASSERT_EQ(ran_func_def.ran_function_definition_ctrl.ric_ctrl_style_list[0]
206206
.ric_ctrl_action_list[0]
207207
.ran_ctrl_action_params_list[9]

0 commit comments

Comments
 (0)