Skip to content

Commit b2f59f8

Browse files
committed
sched: use SS used for RA, Paging and SIB1 in case of retransmission of HARQ scheduled using fallback DCI format scrambled with C-RNTI
1 parent ef8a12b commit b2f59f8

File tree

3 files changed

+37
-4
lines changed

3 files changed

+37
-4
lines changed

lib/scheduler/ue_scheduling/ue_cell.cpp

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -189,12 +189,28 @@ void ue_cell::handle_csi_report(const csi_report_data& csi_report)
189189
}
190190
}
191191

192-
template <typename FilterSearchSpace>
192+
template <typename FilterSearchSpace, typename DciRntiType>
193193
static static_vector<const search_space_info*, MAX_NOF_SEARCH_SPACE_PER_BWP>
194-
get_prioritized_search_spaces(const ue_cell& ue_cc, FilterSearchSpace filter, bool is_dl)
194+
get_prioritized_search_spaces(const ue_cell& ue_cc,
195+
FilterSearchSpace filter,
196+
bool is_dl,
197+
optional<DciRntiType> dci_type)
195198
{
196199
static_vector<const search_space_info*, MAX_NOF_SEARCH_SPACE_PER_BWP> active_search_spaces;
197200

201+
// Case of retransmission of HARQ scheduled using fallback DCI format.
202+
// As per TS 38.213, the UE monitors PDCCH candidates for DCI format 0_0 and DCI format 1_0 with CRC scrambled by the
203+
// C-RNTI, the MCS-C-RNTI, or the CS-RNTI in the one or more search space sets in a slot where the UE monitors PDCCH
204+
// candidates for at least a DCI format 0_0 or a DCI format 1_0 with CRC scrambled by SI-RNTI, RA-RNTI or P-RNTI.
205+
if (dci_type.has_value() and
206+
((is_dl and static_cast<dci_dl_rnti_config_type>(dci_type.value()) == dci_dl_rnti_config_type::c_rnti_f1_0) or
207+
(not is_dl and
208+
static_cast<dci_ul_rnti_config_type>(dci_type.value()) == dci_ul_rnti_config_type::c_rnti_f0_0))) {
209+
for (const auto ss_id : ue_cc.cfg().get_sib1_other_si_ra_pg_ss_ids()) {
210+
active_search_spaces.push_back(&ue_cc.cfg().search_space(ss_id));
211+
}
212+
}
213+
198214
// Get all Search Spaces configured in PDCCH-Config for active BWP.
199215
// See TS 38.213, A UE monitors PDCCH candidates in one or more of the following search spaces sets:
200216
// - a Type3-PDCCH CSS set configured by SearchSpace in PDCCH-Config with searchSpaceType = common for DCI formats
@@ -259,7 +275,7 @@ ue_cell::get_active_dl_search_spaces(slot_point pdcch_slo
259275
}
260276
return true;
261277
};
262-
return get_prioritized_search_spaces(*this, filter_ss, true);
278+
return get_prioritized_search_spaces(*this, filter_ss, true, required_dci_rnti_type);
263279
}
264280

265281
static_vector<const search_space_info*, MAX_NOF_SEARCH_SPACE_PER_BWP>
@@ -290,7 +306,7 @@ ue_cell::get_active_ul_search_spaces(slot_point pdcch_slo
290306
? dci_ul_rnti_config_type::c_rnti_f0_0
291307
: dci_ul_rnti_config_type::c_rnti_f0_1));
292308
};
293-
return get_prioritized_search_spaces(*this, filter_ss, false);
309+
return get_prioritized_search_spaces(*this, filter_ss, false, required_dci_rnti_type);
294310
}
295311

296312
/// \brief Get recommended aggregation level for PDCCH given reported CQI.

lib/scheduler/ue_scheduling/ue_configuration.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -573,6 +573,14 @@ ue_cell_configuration::ue_cell_configuration(rnti_t crnti_,
573573
{
574574
// Apply UE-dedicated Config.
575575
reconfigure(serv_cell_cfg_);
576+
577+
std::set<search_space_id> ss_id_set;
578+
ss_id_set.emplace(cell_cfg_common.dl_cfg_common.init_dl_bwp.pdcch_common.sib1_search_space_id);
579+
ss_id_set.emplace(cell_cfg_common.dl_cfg_common.init_dl_bwp.pdcch_common.ra_search_space_id);
580+
if (cell_cfg_common.dl_cfg_common.init_dl_bwp.pdcch_common.paging_search_space_id.has_value()) {
581+
ss_id_set.emplace(cell_cfg_common.dl_cfg_common.init_dl_bwp.pdcch_common.paging_search_space_id.value());
582+
}
583+
sib1_other_si_ra_pg_ss_ids.assign(ss_id_set.begin(), ss_id_set.end());
576584
}
577585

578586
void ue_cell_configuration::reconfigure(const serving_cell_config& cell_cfg_ded_req)

lib/scheduler/ue_scheduling/ue_configuration.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include "srsran/ran/pdcch/cce_to_prb_mapping.h"
1818
#include "srsran/ran/pdcch/pdcch_candidates.h"
1919
#include "srsran/scheduler/config/bwp_configuration.h"
20+
#include <set>
2021

2122
namespace srsran {
2223

@@ -138,6 +139,10 @@ class ue_cell_configuration
138139
/// Get the number of active DL ports for this UE.
139140
unsigned get_nof_dl_ports() const { return nof_dl_ports; }
140141

142+
/// Get the ids of search space sets where the UE monitors PDCCH candidates for DCI with CRC scrambled by SI-RNTI,
143+
/// RA-RNTI and P-RNTI.
144+
span<const search_space_id> get_sib1_other_si_ra_pg_ss_ids() const { return sib1_other_si_ra_pg_ss_ids; }
145+
141146
private:
142147
void configure_bwp_common_cfg(bwp_id_t bwpid, const bwp_downlink_common& bwp_dl_common);
143148
void configure_bwp_common_cfg(bwp_id_t bwpid, const bwp_uplink_common& bwp_ul_common);
@@ -163,6 +168,10 @@ class ue_cell_configuration
163168

164169
/// Number of DL ports for this UE.
165170
unsigned nof_dl_ports = 1;
171+
172+
/// Ids of search space sets where the UE monitors PDCCH candidates for DCI with CRC scrambled by SI-RNTI, RA-RNTI and
173+
/// P-RNTI.
174+
std::vector<search_space_id> sib1_other_si_ra_pg_ss_ids;
166175
};
167176

168177
} // namespace srsran

0 commit comments

Comments
 (0)