Only add SRS TDA if SRS is activated
Since the parent commit, the TDA for UL scheduling is dynamically selected, instead of being hardcoded to specific indices. We can thus also omit the SRS TDA if no SRS is configured. Also add SRS-specific TDAs if we schedule further into the future.
This commit is contained in:
@@ -1165,7 +1165,7 @@ bool is_pattern2_config(paramdef_t *param)
|
||||
return true;
|
||||
}
|
||||
|
||||
static NR_ServingCellConfigCommon_t *get_scc_config(configmodule_interface_t *cfg, int minRXTXTIME)
|
||||
static NR_ServingCellConfigCommon_t *get_scc_config(configmodule_interface_t *cfg, int minRXTXTIME, int do_SRS)
|
||||
{
|
||||
NR_ServingCellConfigCommon_t *scc = calloc_or_fail(1, sizeof(*scc));
|
||||
uint64_t ssb_bitmap=0xff;
|
||||
@@ -1231,7 +1231,7 @@ static NR_ServingCellConfigCommon_t *get_scc_config(configmodule_interface_t *cf
|
||||
check_ssb_raster(ssb_freq, *frequencyInfoDL->frequencyBandList.list.array[0], *scc->ssbSubcarrierSpacing);
|
||||
fix_scc(scc, ssb_bitmap);
|
||||
}
|
||||
nr_rrc_config_ul_tda(scc, minRXTXTIME);
|
||||
nr_rrc_config_ul_tda(scc, minRXTXTIME, do_SRS);
|
||||
|
||||
// the gNB uses the servingCellConfigCommon everywhere, even when it should use the servingCellConfigCommonSIB.
|
||||
// previously (before this commit), the following fields were indirectly populated through get_SIB1_NR().
|
||||
@@ -1695,7 +1695,7 @@ void RCconfig_nr_macrlc(configmodule_interface_t *cfg)
|
||||
config.num_agg_level_candidates[PDCCH_AGG_LEVEL8],
|
||||
config.num_agg_level_candidates[PDCCH_AGG_LEVEL16]);
|
||||
|
||||
NR_ServingCellConfigCommon_t *scc = get_scc_config(cfg, config.minRXTXTIME);
|
||||
NR_ServingCellConfigCommon_t *scc = get_scc_config(cfg, config.minRXTXTIME, config.do_SRS);
|
||||
//xer_fprint(stdout, &asn_DEF_NR_ServingCellConfigCommon, scc);
|
||||
NR_ServingCellConfig_t *scd = get_scd_config(cfg);
|
||||
|
||||
|
||||
@@ -1081,7 +1081,7 @@ static int tda_cmp(const void *tda_a, const void *tda_b)
|
||||
/* \brief Set up a list of time domain allocations as suitable for the TDD
|
||||
* pattern. This will be used by get_num_ul_tda(), which requires a specific
|
||||
* ordering, hence we qsort() the list at the end according to tda_cmp(). */
|
||||
void nr_rrc_config_ul_tda(NR_ServingCellConfigCommon_t *scc, int min_fb_delay)
|
||||
void nr_rrc_config_ul_tda(NR_ServingCellConfigCommon_t *scc, int min_fb_delay, int do_SRS)
|
||||
{
|
||||
NR_PUSCH_TimeDomainResourceAllocationList_t *tda_list =
|
||||
scc->uplinkConfigCommon->initialUplinkBWP->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList;
|
||||
@@ -1096,8 +1096,10 @@ void nr_rrc_config_ul_tda(NR_ServingCellConfigCommon_t *scc, int min_fb_delay)
|
||||
asn1cSeqAdd(&tda_list->list, tda);
|
||||
|
||||
// UL TDA index 1 in case of SRS
|
||||
tda = set_TimeDomainResourceAllocation(k2, get_SLIV(0, 12));
|
||||
asn1cSeqAdd(&tda_list->list, tda);
|
||||
if (do_SRS) {
|
||||
tda = set_TimeDomainResourceAllocation(k2, get_SLIV(0, 12));
|
||||
asn1cSeqAdd(&tda_list->list, tda);
|
||||
}
|
||||
|
||||
if (scc->tdd_UL_DL_ConfigurationCommon) {
|
||||
int ul_symb = 0;
|
||||
@@ -1141,6 +1143,10 @@ void nr_rrc_config_ul_tda(NR_ServingCellConfigCommon_t *scc, int min_fb_delay)
|
||||
for (int i = k2 + 1; i <= N_ul; ++i) {
|
||||
tda = set_TimeDomainResourceAllocation(i, get_SLIV(0, 13));
|
||||
asn1cSeqAdd(&tda_list->list, tda);
|
||||
if (do_SRS) {
|
||||
tda = set_TimeDomainResourceAllocation(k2, get_SLIV(0, 12));
|
||||
asn1cSeqAdd(&tda_list->list, tda);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ void nr_rrc_config_dl_tda(struct NR_PDSCH_TimeDomainResourceAllocationList *pdsc
|
||||
frame_type_t frame_type,
|
||||
NR_TDD_UL_DL_ConfigCommon_t *tdd_UL_DL_ConfigurationCommon,
|
||||
int curr_bwp);
|
||||
void nr_rrc_config_ul_tda(NR_ServingCellConfigCommon_t *scc, int min_fb_delay);
|
||||
void nr_rrc_config_ul_tda(NR_ServingCellConfigCommon_t *scc, int min_fb_delay, int do_SRS);
|
||||
NR_SearchSpace_t *rrc_searchspace_config(bool is_common,
|
||||
int searchspaceid,
|
||||
int coresetid,
|
||||
|
||||
Reference in New Issue
Block a user