Skip to content

Commit cf793bf

Browse files
frankistcodebot
authored andcommitted
du_manager: avoid sending spCellConfig if no changes are detected
1 parent 6dca7a1 commit cf793bf

File tree

1 file changed

+38
-28
lines changed

1 file changed

+38
-28
lines changed

lib/du_manager/converters/asn1_rrc_config_helpers.cpp

Lines changed: 38 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -887,9 +887,9 @@ void calculate_pdsch_config_diff(asn1::rrc_nr::pdsch_cfg_s& out, const pdsch_con
887887
// TODO: Remaining.
888888
}
889889

890-
void calculate_bwp_dl_dedicated_diff(asn1::rrc_nr::bwp_dl_ded_s& out,
891-
const bwp_downlink_dedicated& src,
892-
const bwp_downlink_dedicated& dest)
890+
static bool calculate_bwp_dl_dedicated_diff(asn1::rrc_nr::bwp_dl_ded_s& out,
891+
const bwp_downlink_dedicated& src,
892+
const bwp_downlink_dedicated& dest)
893893
{
894894
if ((dest.pdcch_cfg.has_value() && not src.pdcch_cfg.has_value()) ||
895895
(dest.pdcch_cfg.has_value() && src.pdcch_cfg.has_value() && dest.pdcch_cfg != src.pdcch_cfg)) {
@@ -913,6 +913,8 @@ void calculate_bwp_dl_dedicated_diff(asn1::rrc_nr::bwp_dl_ded_s& out,
913913
out.pdsch_cfg.set_release();
914914
}
915915
// TODO: sps-Config and radioLinkMonitoringConfig.
916+
917+
return out.pdcch_cfg_present || out.pdsch_cfg_present;
916918
}
917919

918920
asn1::rrc_nr::pucch_res_set_s srsran::srs_du::make_asn1_rrc_pucch_resource_set(const pucch_resource_set& cfg)
@@ -2071,9 +2073,9 @@ void calculate_srs_config_diff(asn1::rrc_nr::srs_cfg_s& out, const srs_config& s
20712073
}
20722074
}
20732075

2074-
void calculate_bwp_ul_dedicated_diff(asn1::rrc_nr::bwp_ul_ded_s& out,
2075-
const bwp_uplink_dedicated& src,
2076-
const bwp_uplink_dedicated& dest)
2076+
static bool calculate_bwp_ul_dedicated_diff(asn1::rrc_nr::bwp_ul_ded_s& out,
2077+
const bwp_uplink_dedicated& src,
2078+
const bwp_uplink_dedicated& dest)
20772079
{
20782080
if ((dest.pucch_cfg.has_value() && not src.pucch_cfg.has_value()) ||
20792081
(dest.pucch_cfg.has_value() && src.pucch_cfg.has_value() && dest.pucch_cfg != src.pucch_cfg)) {
@@ -2107,14 +2109,18 @@ void calculate_bwp_ul_dedicated_diff(asn1::rrc_nr::bwp_ul_ded_s& out,
21072109
out.srs_cfg.set_release();
21082110
}
21092111
// TODO: Remaining.
2112+
2113+
return out.pucch_cfg_present || out.pusch_cfg_present || out.srs_cfg_present;
21102114
}
21112115

2112-
void calculate_uplink_config_diff(asn1::rrc_nr::ul_cfg_s& out, const uplink_config& src, const uplink_config& dest)
2116+
static bool
2117+
calculate_uplink_config_diff(asn1::rrc_nr::ul_cfg_s& out, const uplink_config& src, const uplink_config& dest)
21132118
{
2114-
out.init_ul_bwp_present = true;
2115-
calculate_bwp_ul_dedicated_diff(out.init_ul_bwp, src.init_ul_bwp, dest.init_ul_bwp);
2119+
out.init_ul_bwp_present = calculate_bwp_ul_dedicated_diff(out.init_ul_bwp, src.init_ul_bwp, dest.init_ul_bwp);
21162120

21172121
// TODO: Remaining.
2122+
2123+
return out.init_ul_bwp_present;
21182124
}
21192125

21202126
void calculate_pdsch_serving_cell_cfg_diff(asn1::rrc_nr::pdsch_serving_cell_cfg_s& out,
@@ -2211,17 +2217,15 @@ void calculate_pdsch_serving_cell_cfg_diff(asn1::rrc_nr::pdsch_serving_cell_cfg_
22112217
}
22122218
}
22132219

2214-
void calculate_serving_cell_config_diff(asn1::rrc_nr::serving_cell_cfg_s& out,
2215-
const serving_cell_config& src,
2216-
const serving_cell_config& dest)
2220+
static bool calculate_serving_cell_config_diff(asn1::rrc_nr::serving_cell_cfg_s& out,
2221+
const serving_cell_config& src,
2222+
const serving_cell_config& dest)
22172223
{
2218-
out.init_dl_bwp_present = true;
2219-
calculate_bwp_dl_dedicated_diff(out.init_dl_bwp, src.init_dl_bwp, dest.init_dl_bwp);
2224+
out.init_dl_bwp_present = calculate_bwp_dl_dedicated_diff(out.init_dl_bwp, src.init_dl_bwp, dest.init_dl_bwp);
22202225

22212226
// UplinkConfig.
22222227
if (dest.ul_config.has_value()) {
2223-
out.ul_cfg_present = true;
2224-
calculate_uplink_config_diff(
2228+
out.ul_cfg_present = calculate_uplink_config_diff(
22252229
out.ul_cfg, src.ul_config.has_value() ? src.ul_config.value() : uplink_config{}, dest.ul_config.value());
22262230
}
22272231

@@ -2253,6 +2257,9 @@ void calculate_serving_cell_config_diff(asn1::rrc_nr::serving_cell_cfg_s& out,
22532257

22542258
// TAG-ID.
22552259
out.tag_id = dest.tag_id;
2260+
2261+
return out.init_dl_bwp_present || out.ul_cfg_present || out.pdsch_serving_cell_cfg_present ||
2262+
out.csi_meas_cfg_present;
22562263
}
22572264

22582265
asn1::rrc_nr::sched_request_to_add_mod_s
@@ -2568,9 +2575,9 @@ void make_asn1_rrc_phr_config(asn1::rrc_nr::phr_cfg_s& out, const phr_config& cf
25682575
}
25692576
}
25702577

2571-
void calculate_mac_cell_group_config_diff(asn1::rrc_nr::mac_cell_group_cfg_s& out,
2572-
const mac_cell_group_config& src,
2573-
const mac_cell_group_config& dest)
2578+
static bool calculate_mac_cell_group_config_diff(asn1::rrc_nr::mac_cell_group_cfg_s& out,
2579+
const mac_cell_group_config& src,
2580+
const mac_cell_group_config& dest)
25742581
{
25752582
calculate_addmodremlist_diff(
25762583
out.sched_request_cfg.sched_request_to_add_mod_list,
@@ -2610,6 +2617,8 @@ void calculate_mac_cell_group_config_diff(asn1::rrc_nr::mac_cell_group_cfg_s& ou
26102617
}
26112618

26122619
out.skip_ul_tx_dyn = dest.skip_uplink_tx_dynamic;
2620+
2621+
return out.sched_request_cfg_present || out.bsr_cfg_present || out.tag_cfg_present || out.phr_cfg_present;
26132622
}
26142623

26152624
void srsran::srs_du::calculate_cell_group_config_diff(asn1::rrc_nr::cell_group_cfg_s& out,
@@ -2624,18 +2633,19 @@ void srsran::srs_du::calculate_cell_group_config_diff(asn1::rrc_nr::cell_group_c
26242633
[](const rlc_bearer_config& b) { return make_asn1_rrc_rlc_bearer(b); },
26252634
[](const rlc_bearer_config& b) { return (uint8_t)b.lcid; });
26262635

2627-
out.sp_cell_cfg_present = true;
2628-
out.sp_cell_cfg.serv_cell_idx_present = false;
26292636
if (dest.cells.contains(0)) {
2630-
out.sp_cell_cfg.serv_cell_idx = dest.cells[0].serv_cell_idx;
2631-
out.sp_cell_cfg.sp_cell_cfg_ded_present = true;
2632-
calculate_serving_cell_config_diff(out.sp_cell_cfg.sp_cell_cfg_ded,
2633-
src.cells.contains(0) ? src.cells[0].serv_cell_cfg : serving_cell_config{},
2634-
dest.cells[0].serv_cell_cfg);
2637+
out.sp_cell_cfg.serv_cell_idx_present = true;
2638+
out.sp_cell_cfg.serv_cell_idx = dest.cells[0].serv_cell_idx;
2639+
out.sp_cell_cfg.sp_cell_cfg_ded_present =
2640+
calculate_serving_cell_config_diff(out.sp_cell_cfg.sp_cell_cfg_ded,
2641+
src.cells.contains(0) ? src.cells[0].serv_cell_cfg : serving_cell_config{},
2642+
dest.cells[0].serv_cell_cfg);
2643+
2644+
out.sp_cell_cfg_present = out.sp_cell_cfg.sp_cell_cfg_ded_present;
26352645
}
26362646

2637-
out.mac_cell_group_cfg_present = true;
2638-
calculate_mac_cell_group_config_diff(out.mac_cell_group_cfg, src.mcg_cfg, dest.mcg_cfg);
2647+
out.mac_cell_group_cfg_present =
2648+
calculate_mac_cell_group_config_diff(out.mac_cell_group_cfg, src.mcg_cfg, dest.mcg_cfg);
26392649

26402650
out.phys_cell_group_cfg_present = true;
26412651
if (dest.pcg_cfg.p_nr_fr1.has_value()) {

0 commit comments

Comments
 (0)