possible fix in type setting of Y for coreset
This commit is contained in:
@@ -544,8 +544,8 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB,
|
||||
gNB->nr_gold_pdsch_dmrs = (uint32_t ****)malloc16(fp->slots_per_frame*sizeof(uint32_t ***));
|
||||
uint32_t ****pdsch_dmrs = gNB->nr_gold_pdsch_dmrs;
|
||||
|
||||
// ceil(((NB_RB*6(k)*2(QPSK)/32) // 3 RE *2(QPSK)
|
||||
int pdsch_dmrs_init_length = ((fp->N_RB_DL*12)>>5)+1;
|
||||
// ceil(((NB_RB*12(k)*2(QPSK)/32) // 3 RE *2(QPSK)
|
||||
int pdsch_dmrs_init_length = ((fp->N_RB_DL*24)>>5)+1;
|
||||
for (int slot=0; slot<fp->slots_per_frame; slot++) {
|
||||
pdsch_dmrs[slot] = (uint32_t ***)malloc16(fp->symbols_per_slot*sizeof(uint32_t **));
|
||||
AssertFatal(pdsch_dmrs[slot]!=NULL, "NR init: pdsch_dmrs for slot %d - malloc failed\n", slot);
|
||||
|
||||
@@ -282,7 +282,7 @@ void nr_dlsim_preprocessor(module_id_t module_id,
|
||||
sched_ctrl->search_space,4);
|
||||
|
||||
sched_ctrl->coreset = get_coreset(RC.nrmac[module_id], scc, sched_ctrl->active_bwp->bwp_Dedicated, sched_ctrl->search_space, target_ss);
|
||||
int Y = get_Y((*sched_ctrl->search_space->controlResourceSetId)%3, slot, UE_info->rnti[0]);
|
||||
uint32_t Y = get_Y(sched_ctrl->search_space, slot, UE_info->rnti[0]);
|
||||
int CCEIndex = find_pdcch_candidate(RC.nrmac[module_id],
|
||||
/* CC_id = */ 0,
|
||||
sched_ctrl->aggregation_level,
|
||||
|
||||
@@ -3498,14 +3498,17 @@ void csi_period_offset(NR_CSI_ReportConfig_t *csirep,
|
||||
}
|
||||
}
|
||||
|
||||
uint16_t get_Y(int cid, int slot, rnti_t rnti) {
|
||||
uint32_t get_Y(NR_SearchSpace_t *ss, int slot, rnti_t rnti) {
|
||||
|
||||
const int A[3] = {39827, 39829, 39839};
|
||||
const int D = 65537;
|
||||
int Y;
|
||||
if(ss->searchSpaceType->present == NR_SearchSpace__searchSpaceType_PR_common)
|
||||
return 0;
|
||||
|
||||
const int cid = *ss->controlResourceSetId%3;
|
||||
const uint32_t A[3] = {39827, 39829, 39839};
|
||||
const uint32_t D = 65537;
|
||||
uint32_t Y;
|
||||
|
||||
Y = (A[cid] * rnti) % D;
|
||||
|
||||
for (int s = 0; s < slot; s++)
|
||||
Y = (A[cid] * Y) % D;
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
#include "nr_mac.h"
|
||||
#include "openair1/PHY/impl_defs_nr.h"
|
||||
|
||||
uint16_t get_Y(int cid, int slot, rnti_t rnti);
|
||||
uint32_t get_Y(NR_SearchSpace_t *ss, int slot, rnti_t rnti);
|
||||
|
||||
uint64_t from_nrarfcn(int nr_bandP, uint8_t scs_index, uint32_t dl_nrarfcn);
|
||||
|
||||
|
||||
@@ -59,9 +59,9 @@ void fill_dci_search_candidates(NR_SearchSpace_t *ss,
|
||||
uint8_t number_of_candidates=0;
|
||||
rel15->number_of_candidates=0;
|
||||
int i=0;
|
||||
int Y = 0;
|
||||
uint32_t Y = 0;
|
||||
if (slot >= 0)
|
||||
Y = get_Y((*ss->controlResourceSetId)%3, slot, rnti);
|
||||
Y = get_Y(ss, slot, rnti);
|
||||
for (int maxL=16;maxL>0;maxL>>=1) {
|
||||
find_aggregation_candidates(&aggregation,
|
||||
&number_of_candidates,
|
||||
|
||||
@@ -489,8 +489,8 @@ bool allocate_dl_retransmission(module_id_t module_id,
|
||||
}
|
||||
|
||||
/* Find a free CCE */
|
||||
const int cid = sched_ctrl->coreset->controlResourceSetId;
|
||||
const uint16_t Y = get_Y(cid%3, slot, UE->rnti);
|
||||
|
||||
const uint32_t Y = get_Y(sched_ctrl->search_space, slot, UE->rnti);
|
||||
uint8_t nr_of_candidates;
|
||||
|
||||
for (int i=0; i<5; i++) {
|
||||
@@ -690,8 +690,7 @@ void pf_dl(module_id_t module_id,
|
||||
}
|
||||
|
||||
/* Find a free CCE */
|
||||
const int cid = sched_ctrl->coreset->controlResourceSetId;
|
||||
const uint16_t Y = get_Y(cid%3, slot, iterator->UE->rnti);
|
||||
const uint32_t Y = get_Y(sched_ctrl->search_space, slot, iterator->UE->rnti);
|
||||
uint8_t nr_of_candidates;
|
||||
|
||||
for (int i=0; i<5; i++) {
|
||||
|
||||
@@ -262,8 +262,7 @@ void nr_preprocessor_phytest(module_id_t module_id,
|
||||
}
|
||||
AssertFatal(nr_of_candidates>0,"nr_of_candidates is 0\n");
|
||||
|
||||
const int cid = sched_ctrl->coreset->controlResourceSetId;
|
||||
const uint16_t Y = get_Y(cid%3, slot, UE->rnti);
|
||||
const uint32_t Y = get_Y(sched_ctrl->search_space, slot, UE->rnti);
|
||||
|
||||
int CCEIndex = find_pdcch_candidate(RC.nrmac[module_id],
|
||||
CC_id,
|
||||
@@ -437,8 +436,7 @@ bool nr_ul_preprocessor_phytest(module_id_t module_id, frame_t frame, sub_frame_
|
||||
}
|
||||
AssertFatal(nr_of_candidates>0,"nr_of_candidates is 0\n");
|
||||
|
||||
const int cid = sched_ctrl->coreset->controlResourceSetId;
|
||||
const uint16_t Y = get_Y(cid%3, slot, UE->rnti);
|
||||
const uint32_t Y = get_Y(sched_ctrl->search_space, slot, UE->rnti);
|
||||
|
||||
int CCEIndex = find_pdcch_candidate(nr_mac,
|
||||
CC_id,
|
||||
|
||||
@@ -446,7 +446,7 @@ int find_pdcch_candidate(gNB_MAC_INST *mac,
|
||||
int nr_of_candidates,
|
||||
NR_sched_pdcch_t *pdcch,
|
||||
NR_ControlResourceSet_t *coreset,
|
||||
uint16_t Y){
|
||||
uint32_t Y){
|
||||
|
||||
uint16_t *vrb_map = mac->common_channels[cc_id].vrb_map;
|
||||
const int N_ci = 0;
|
||||
|
||||
@@ -934,8 +934,7 @@ static bool allocate_ul_retransmission(gNB_MAC_INST *nrmac,
|
||||
}
|
||||
|
||||
/* Find a free CCE */
|
||||
const int cid = sched_ctrl->coreset->controlResourceSetId;
|
||||
const uint16_t Y = get_Y(cid%3, slot, UE->rnti);
|
||||
const uint32_t Y = get_Y(sched_ctrl->search_space, slot, UE->rnti);
|
||||
uint8_t nr_of_candidates;
|
||||
for (int i=0; i<5; i++) {
|
||||
// for now taking the lowest value among the available aggregation levels
|
||||
@@ -1102,8 +1101,7 @@ void pf_ul(module_id_t module_id,
|
||||
if (B == 0 && do_sched) {
|
||||
/* if no data, pre-allocate 5RB */
|
||||
/* Find a free CCE */
|
||||
const int cid = sched_ctrl->coreset->controlResourceSetId;
|
||||
const uint16_t Y = get_Y(cid%3, slot, UE->rnti);
|
||||
const uint32_t Y = get_Y(sched_ctrl->search_space, slot, UE->rnti);
|
||||
uint8_t nr_of_candidates;
|
||||
for (int i=0; i<5; i++) {
|
||||
// for now taking the lowest value among the available aggregation levels
|
||||
@@ -1217,8 +1215,7 @@ void pf_ul(module_id_t module_id,
|
||||
|
||||
NR_UE_sched_ctrl_t *sched_ctrl = &iterator->UE->UE_sched_ctrl;
|
||||
|
||||
const int cid = sched_ctrl->coreset->controlResourceSetId;
|
||||
const uint16_t Y = get_Y(cid%3, slot, iterator->UE->rnti);
|
||||
const uint32_t Y = get_Y(sched_ctrl->search_space, slot, iterator->UE->rnti);
|
||||
uint8_t nr_of_candidates;
|
||||
for (int i=0; i<5; i++) {
|
||||
// for now taking the lowest value among the available aggregation levels
|
||||
|
||||
@@ -290,7 +290,7 @@ int find_pdcch_candidate(gNB_MAC_INST *mac,
|
||||
int nr_of_candidates,
|
||||
NR_sched_pdcch_t *pdcch,
|
||||
NR_ControlResourceSet_t *coreset,
|
||||
uint16_t Y);
|
||||
uint32_t Y);
|
||||
|
||||
void fill_pdcch_vrb_map(gNB_MAC_INST *mac,
|
||||
int CC_id,
|
||||
@@ -410,14 +410,6 @@ void mac_remove_nr_ue(gNB_MAC_INST *nr_mac, rnti_t rnti);
|
||||
|
||||
void nr_mac_remove_ra_rnti(module_id_t mod_id, rnti_t rnti);
|
||||
|
||||
int allocate_nr_CCEs(gNB_MAC_INST *nr_mac,
|
||||
NR_BWP_Downlink_t *bwp,
|
||||
NR_ControlResourceSet_t *coreset,
|
||||
int aggregation,
|
||||
uint16_t Y,
|
||||
int m,
|
||||
int nr_of_candidates);
|
||||
|
||||
int nr_get_default_pucch_res(int pucch_ResourceCommon);
|
||||
|
||||
void compute_csi_bitlen(NR_CSI_MeasConfig_t *csi_MeasConfig, NR_UE_info_t *UE);
|
||||
|
||||
Reference in New Issue
Block a user