type int for aggregation level and candidates
This commit is contained in:
@@ -198,16 +198,12 @@ void nr_dlsim_preprocessor(gNB_MAC_INST *nr_mac, post_process_pdsch_t *pp_pdsch)
|
|||||||
NR_UE_DL_BWP_t *current_BWP = &UE_info->current_DL_BWP;
|
NR_UE_DL_BWP_t *current_BWP = &UE_info->current_DL_BWP;
|
||||||
NR_ServingCellConfigCommon_t *scc = nr_mac->common_channels[0].ServingCellConfigCommon;
|
NR_ServingCellConfigCommon_t *scc = nr_mac->common_channels[0].ServingCellConfigCommon;
|
||||||
|
|
||||||
uint8_t nr_of_candidates = 0;
|
int nr_of_candidates = 0;
|
||||||
if (g_mcsIndex < 4) {
|
if (g_mcsIndex < 4) {
|
||||||
find_aggregation_candidates(&sched_ctrl->aggregation_level,
|
find_aggregation_candidates(&sched_ctrl->aggregation_level, &nr_of_candidates, sched_ctrl->search_space, 8);
|
||||||
&nr_of_candidates,
|
|
||||||
sched_ctrl->search_space,8);
|
|
||||||
}
|
}
|
||||||
if (nr_of_candidates == 0) {
|
if (nr_of_candidates == 0) {
|
||||||
find_aggregation_candidates(&sched_ctrl->aggregation_level,
|
find_aggregation_candidates(&sched_ctrl->aggregation_level, &nr_of_candidates, sched_ctrl->search_space, 4);
|
||||||
&nr_of_candidates,
|
|
||||||
sched_ctrl->search_space,4);
|
|
||||||
}
|
}
|
||||||
uint32_t Y = get_Y(sched_ctrl->search_space, pp_pdsch->slot, UE_info->rnti);
|
uint32_t Y = get_Y(sched_ctrl->search_space, pp_pdsch->slot, UE_info->rnti);
|
||||||
int CCEIndex = find_pdcch_candidate(nr_mac,
|
int CCEIndex = find_pdcch_candidate(nr_mac,
|
||||||
|
|||||||
@@ -1463,14 +1463,11 @@ int get_format0(uint8_t index, uint8_t unpaired, frequency_range_t frequency_ran
|
|||||||
return format;
|
return format;
|
||||||
}
|
}
|
||||||
|
|
||||||
void find_aggregation_candidates(uint8_t *aggregation_level,
|
void find_aggregation_candidates(int *aggregation_level, int *nr_of_candidates, const NR_SearchSpace_t *ss, int L)
|
||||||
uint8_t *nr_of_candidates,
|
|
||||||
const NR_SearchSpace_t *ss,
|
|
||||||
int L)
|
|
||||||
{
|
{
|
||||||
AssertFatal(L>=1 && L<=16,"L %d not ok\n", L);
|
AssertFatal(L >= 1 && L <= 16,"L %d not ok\n", L);
|
||||||
*nr_of_candidates = 0;
|
*nr_of_candidates = 0;
|
||||||
switch(L) {
|
switch (L) {
|
||||||
case 1:
|
case 1:
|
||||||
if (ss->nrofCandidates->aggregationLevel1 != NR_SearchSpace__nrofCandidates__aggregationLevel1_n0) {
|
if (ss->nrofCandidates->aggregationLevel1 != NR_SearchSpace__nrofCandidates__aggregationLevel1_n0) {
|
||||||
*aggregation_level = 1;
|
*aggregation_level = 1;
|
||||||
|
|||||||
@@ -171,10 +171,7 @@ uint16_t get_rb_bwp_dci(nr_dci_format_t format,
|
|||||||
uint16_t initial_ul_bwp_size,
|
uint16_t initial_ul_bwp_size,
|
||||||
uint16_t initial_dl_bwp_size);
|
uint16_t initial_dl_bwp_size);
|
||||||
|
|
||||||
void find_aggregation_candidates(uint8_t *aggregation_level,
|
void find_aggregation_candidates(int *aggregation_level, int *nr_of_candidates, const NR_SearchSpace_t *ss, int L);
|
||||||
uint8_t *nr_of_candidates,
|
|
||||||
const NR_SearchSpace_t *ss,
|
|
||||||
int maxL);
|
|
||||||
|
|
||||||
bool get_nr_prach_sched_from_info(nr_prach_info_t info,
|
bool get_nr_prach_sched_from_info(nr_prach_info_t info,
|
||||||
int config_index,
|
int config_index,
|
||||||
|
|||||||
@@ -44,11 +44,8 @@ static void fill_dci_search_candidates(const NR_SearchSpace_t *ss, fapi_nr_dl_co
|
|||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (int maxL = 16; maxL > 0; maxL >>= 1) {
|
for (int maxL = 16; maxL > 0; maxL >>= 1) {
|
||||||
uint8_t aggregation, max_number_of_candidates;
|
int aggregation, max_number_of_candidates;
|
||||||
find_aggregation_candidates(&aggregation,
|
find_aggregation_candidates(&aggregation, &max_number_of_candidates, ss, maxL);
|
||||||
&max_number_of_candidates,
|
|
||||||
ss,
|
|
||||||
maxL);
|
|
||||||
if (max_number_of_candidates == 0)
|
if (max_number_of_candidates == 0)
|
||||||
continue;
|
continue;
|
||||||
LOG_T(NR_MAC_DCI, "L %d, max number of candidates %d, aggregation %d\n", maxL, max_number_of_candidates, aggregation);
|
LOG_T(NR_MAC_DCI, "L %d, max number of candidates %d, aggregation %d\n", maxL, max_number_of_candidates, aggregation);
|
||||||
|
|||||||
@@ -918,7 +918,7 @@ static void nr_generate_Msg3_retransmission(module_id_t module_idP,
|
|||||||
nr_mac->pdcch_pdu_idx[CC_id][coresetid] = pdcch_pdu_rel15;
|
nr_mac->pdcch_pdu_idx[CC_id][coresetid] = pdcch_pdu_rel15;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t aggregation_level;
|
int aggregation_level;
|
||||||
int CCEIndex = get_cce_index(nr_mac,
|
int CCEIndex = get_cce_index(nr_mac,
|
||||||
CC_id, slot, 0,
|
CC_id, slot, 0,
|
||||||
&aggregation_level,
|
&aggregation_level,
|
||||||
@@ -1517,7 +1517,7 @@ static void nr_generate_Msg2(module_id_t module_idP,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t aggregation_level;
|
int aggregation_level;
|
||||||
int CCEIndex = get_cce_index(nr_mac, CC_id, slotP, 0, &aggregation_level, beam.idx, ss, coreset, &sched_ctrl->sched_pdcch, 0);
|
int CCEIndex = get_cce_index(nr_mac, CC_id, slotP, 0, &aggregation_level, beam.idx, ss, coreset, &sched_ctrl->sched_pdcch, 0);
|
||||||
|
|
||||||
if (CCEIndex < 0) {
|
if (CCEIndex < 0) {
|
||||||
@@ -1716,7 +1716,7 @@ static void nr_generate_Msg4_MsgB(module_id_t module_idP,
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
// get CCEindex, needed also for PUCCH and then later for PDCCH
|
// get CCEindex, needed also for PUCCH and then later for PDCCH
|
||||||
uint8_t aggregation_level;
|
int aggregation_level;
|
||||||
int CCEIndex = get_cce_index(nr_mac,
|
int CCEIndex = get_cce_index(nr_mac,
|
||||||
CC_id, slotP, 0,
|
CC_id, slotP, 0,
|
||||||
&aggregation_level,
|
&aggregation_level,
|
||||||
|
|||||||
@@ -562,8 +562,7 @@ void schedule_nr_sib1(module_id_t module_idP,
|
|||||||
NULL,
|
NULL,
|
||||||
type0_PDCCH_CSS_config);
|
type0_PDCCH_CSS_config);
|
||||||
|
|
||||||
|
int nr_of_candidates, aggregation_level;
|
||||||
uint8_t nr_of_candidates, aggregation_level;
|
|
||||||
for (int c = 0; c < 3; c++) {
|
for (int c = 0; c < 3; c++) {
|
||||||
find_aggregation_candidates(&aggregation_level,
|
find_aggregation_candidates(&aggregation_level,
|
||||||
&nr_of_candidates,
|
&nr_of_candidates,
|
||||||
@@ -690,8 +689,8 @@ static void other_sib_sched_control(module_id_t module_idP,
|
|||||||
|
|
||||||
NR_pdsch_dmrs_t dmrs_parms = get_dl_dmrs_params(scc, NULL, &tda_info, 1);
|
NR_pdsch_dmrs_t dmrs_parms = get_dl_dmrs_params(scc, NULL, &tda_info, 1);
|
||||||
|
|
||||||
uint8_t aggregation_level = 0;
|
int aggregation_level = 0;
|
||||||
uint8_t nr_of_candidates = 0;
|
int nr_of_candidates = 0;
|
||||||
for (int i = 0; i < 5; i++) {
|
for (int i = 0; i < 5; i++) {
|
||||||
find_aggregation_candidates(&aggregation_level, &nr_of_candidates, ss, 16 >> i);
|
find_aggregation_candidates(&aggregation_level, &nr_of_candidates, ss, 16 >> i);
|
||||||
if (nr_of_candidates > 0)
|
if (nr_of_candidates > 0)
|
||||||
|
|||||||
@@ -592,7 +592,7 @@ int get_cce_index(const gNB_MAC_INST *nrmac,
|
|||||||
const int CC_id,
|
const int CC_id,
|
||||||
const int slot,
|
const int slot,
|
||||||
const rnti_t rnti,
|
const rnti_t rnti,
|
||||||
uint8_t *aggregation_level,
|
int *aggregation_level,
|
||||||
int beam_idx,
|
int beam_idx,
|
||||||
const NR_SearchSpace_t *ss,
|
const NR_SearchSpace_t *ss,
|
||||||
const NR_ControlResourceSet_t *coreset,
|
const NR_ControlResourceSet_t *coreset,
|
||||||
@@ -600,11 +600,9 @@ int get_cce_index(const gNB_MAC_INST *nrmac,
|
|||||||
float pdcch_cl_adjust)
|
float pdcch_cl_adjust)
|
||||||
{
|
{
|
||||||
const uint32_t Y = get_Y(ss, slot, rnti);
|
const uint32_t Y = get_Y(ss, slot, rnti);
|
||||||
uint8_t nr_of_candidates;
|
|
||||||
|
|
||||||
int agg_level_search_order[NUM_PDCCH_AGG_LEVELS];
|
int agg_level_search_order[NUM_PDCCH_AGG_LEVELS];
|
||||||
determine_aggregation_level_search_order(agg_level_search_order, pdcch_cl_adjust);
|
determine_aggregation_level_search_order(agg_level_search_order, pdcch_cl_adjust);
|
||||||
|
int nr_of_candidates;
|
||||||
for (int i = 0; i < NUM_PDCCH_AGG_LEVELS; i++) {
|
for (int i = 0; i < NUM_PDCCH_AGG_LEVELS; i++) {
|
||||||
find_aggregation_candidates(aggregation_level, &nr_of_candidates, ss, 1 << agg_level_search_order[i]);
|
find_aggregation_candidates(aggregation_level, &nr_of_candidates, ss, 1 << agg_level_search_order[i]);
|
||||||
if (nr_of_candidates > 0)
|
if (nr_of_candidates > 0)
|
||||||
|
|||||||
@@ -420,7 +420,7 @@ int get_cce_index(const gNB_MAC_INST *nrmac,
|
|||||||
const int CC_id,
|
const int CC_id,
|
||||||
const int slot,
|
const int slot,
|
||||||
const rnti_t rnti,
|
const rnti_t rnti,
|
||||||
uint8_t *aggregation_level,
|
int *aggregation_level,
|
||||||
int beam_idx,
|
int beam_idx,
|
||||||
const NR_SearchSpace_t *ss,
|
const NR_SearchSpace_t *ss,
|
||||||
const NR_ControlResourceSet_t *coreset,
|
const NR_ControlResourceSet_t *coreset,
|
||||||
|
|||||||
@@ -620,7 +620,7 @@ typedef struct {
|
|||||||
/// CCE index and Aggr. Level are shared for PUSCH/PDSCH allocation decisions
|
/// CCE index and Aggr. Level are shared for PUSCH/PDSCH allocation decisions
|
||||||
/// corresponding to the sched_pusch/sched_pdsch structures below
|
/// corresponding to the sched_pusch/sched_pdsch structures below
|
||||||
int cce_index;
|
int cce_index;
|
||||||
uint8_t aggregation_level;
|
int aggregation_level;
|
||||||
uint32_t dl_cce_fail, ul_cce_fail;
|
uint32_t dl_cce_fail, ul_cce_fail;
|
||||||
|
|
||||||
/// Array of PUCCH scheduling information
|
/// Array of PUCCH scheduling information
|
||||||
|
|||||||
Reference in New Issue
Block a user