function to create dl harq lists
This commit is contained in:
@@ -613,19 +613,16 @@ int rrc_mac_config_req_gNB(module_id_t Mod_idP,
|
|||||||
const NR_ServingCellConfig_t *servingCellConfig = CellGroup ? CellGroup->spCellConfig->spCellConfigDedicated : NULL;
|
const NR_ServingCellConfig_t *servingCellConfig = CellGroup ? CellGroup->spCellConfig->spCellConfigDedicated : NULL;
|
||||||
NR_UE_sched_ctrl_t *sched_ctrl = &UE_info->UE_sched_ctrl[UE_id];
|
NR_UE_sched_ctrl_t *sched_ctrl = &UE_info->UE_sched_ctrl[UE_id];
|
||||||
const NR_PDSCH_ServingCellConfig_t *pdsch = servingCellConfig ? servingCellConfig->pdsch_ServingCellConfig->choice.setup : NULL;
|
const NR_PDSCH_ServingCellConfig_t *pdsch = servingCellConfig ? servingCellConfig->pdsch_ServingCellConfig->choice.setup : NULL;
|
||||||
const int nrofHARQ = pdsch ? (pdsch->nrofHARQ_ProcessesForPDSCH ?
|
|
||||||
get_nrofHARQ_ProcessesForPDSCH(*pdsch->nrofHARQ_ProcessesForPDSCH) : 8) : 8;
|
|
||||||
if (sched_ctrl->available_dl_harq.len == 0) {
|
if (sched_ctrl->available_dl_harq.len == 0) {
|
||||||
// add all available DL HARQ processes for this UE
|
// add all available DL HARQ processes for this UE in SA
|
||||||
create_nr_list(&sched_ctrl->available_dl_harq, nrofHARQ);
|
create_dl_harq_list(sched_ctrl, pdsch);
|
||||||
for (int harq = 0; harq < nrofHARQ; harq++)
|
|
||||||
add_tail_nr_list(&sched_ctrl->available_dl_harq, harq);
|
|
||||||
create_nr_list(&sched_ctrl->feedback_dl_harq, nrofHARQ);
|
|
||||||
create_nr_list(&sched_ctrl->retrans_dl_harq, nrofHARQ);
|
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
|
const int nrofHARQ = pdsch && pdsch->nrofHARQ_ProcessesForPDSCH ?
|
||||||
|
get_nrofHARQ_ProcessesForPDSCH(*pdsch->nrofHARQ_ProcessesForPDSCH) : 8;
|
||||||
AssertFatal(sched_ctrl->available_dl_harq.len==nrofHARQ,
|
AssertFatal(sched_ctrl->available_dl_harq.len==nrofHARQ,
|
||||||
"Nr of harq processes reconfiguration not yet supported\n");
|
"Reconfiguration of available harq processes not yet supported\n");
|
||||||
|
}
|
||||||
// update coreset/searchspace
|
// update coreset/searchspace
|
||||||
void *bwpd = NULL;
|
void *bwpd = NULL;
|
||||||
target_ss = NR_SearchSpace__searchSpaceType_PR_common;
|
target_ss = NR_SearchSpace__searchSpaceType_PR_common;
|
||||||
|
|||||||
@@ -1992,17 +1992,12 @@ int add_new_nr_ue(module_id_t mod_idP, rnti_t rntiP, NR_CellGroupConfig_t *CellG
|
|||||||
"no pdsch-ServingCellConfig found for UE %d\n",
|
"no pdsch-ServingCellConfig found for UE %d\n",
|
||||||
UE_id);
|
UE_id);
|
||||||
const NR_PDSCH_ServingCellConfig_t *pdsch = servingCellConfig ? servingCellConfig->pdsch_ServingCellConfig->choice.setup : NULL;
|
const NR_PDSCH_ServingCellConfig_t *pdsch = servingCellConfig ? servingCellConfig->pdsch_ServingCellConfig->choice.setup : NULL;
|
||||||
if (pdsch) {
|
// add DL HARQ processes for this UE only in NSA
|
||||||
const int nrofHARQ = pdsch->nrofHARQ_ProcessesForPDSCH ?
|
// (SA still doesn't have information on nrofHARQ_ProcessesForPDSCH at this stage)
|
||||||
get_nrofHARQ_ProcessesForPDSCH(*pdsch->nrofHARQ_ProcessesForPDSCH) : 8;
|
if (!get_softmodem_params()->sa)
|
||||||
// add all available DL HARQ processes for this UE
|
create_dl_harq_list(sched_ctrl,pdsch);
|
||||||
create_nr_list(&sched_ctrl->available_dl_harq, nrofHARQ);
|
|
||||||
for (int harq = 0; harq < nrofHARQ; harq++)
|
|
||||||
add_tail_nr_list(&sched_ctrl->available_dl_harq, harq);
|
|
||||||
create_nr_list(&sched_ctrl->feedback_dl_harq, nrofHARQ);
|
|
||||||
create_nr_list(&sched_ctrl->retrans_dl_harq, nrofHARQ);
|
|
||||||
}
|
|
||||||
// add all available UL HARQ processes for this UE
|
// add all available UL HARQ processes for this UE
|
||||||
|
// nb of ul harq processes not configurable
|
||||||
create_nr_list(&sched_ctrl->available_ul_harq, 16);
|
create_nr_list(&sched_ctrl->available_ul_harq, 16);
|
||||||
for (int harq = 0; harq < 16; harq++)
|
for (int harq = 0; harq < 16; harq++)
|
||||||
add_tail_nr_list(&sched_ctrl->available_ul_harq, harq);
|
add_tail_nr_list(&sched_ctrl->available_ul_harq, harq);
|
||||||
@@ -2022,6 +2017,19 @@ int add_new_nr_ue(module_id_t mod_idP, rnti_t rntiP, NR_CellGroupConfig_t *CellG
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void create_dl_harq_list(NR_UE_sched_ctrl_t *sched_ctrl,
|
||||||
|
const NR_PDSCH_ServingCellConfig_t *pdsch) {
|
||||||
|
const int nrofHARQ = pdsch && pdsch->nrofHARQ_ProcessesForPDSCH ?
|
||||||
|
get_nrofHARQ_ProcessesForPDSCH(*pdsch->nrofHARQ_ProcessesForPDSCH) : 8;
|
||||||
|
// add all available DL HARQ processes for this UE
|
||||||
|
create_nr_list(&sched_ctrl->available_dl_harq, nrofHARQ);
|
||||||
|
for (int harq = 0; harq < nrofHARQ; harq++)
|
||||||
|
add_tail_nr_list(&sched_ctrl->available_dl_harq, harq);
|
||||||
|
create_nr_list(&sched_ctrl->feedback_dl_harq, nrofHARQ);
|
||||||
|
create_nr_list(&sched_ctrl->retrans_dl_harq, nrofHARQ);
|
||||||
|
}
|
||||||
|
|
||||||
/* hack data to remove UE in the phy */
|
/* hack data to remove UE in the phy */
|
||||||
int rnti_to_remove[10];
|
int rnti_to_remove[10];
|
||||||
volatile int rnti_to_remove_count;
|
volatile int rnti_to_remove_count;
|
||||||
|
|||||||
@@ -411,6 +411,9 @@ void nr_rx_sdu(const module_id_t gnb_mod_idP,
|
|||||||
const uint8_t ul_cqi,
|
const uint8_t ul_cqi,
|
||||||
const uint16_t rssi);
|
const uint16_t rssi);
|
||||||
|
|
||||||
|
void create_dl_harq_list(NR_UE_sched_ctrl_t *sched_ctrl,
|
||||||
|
const NR_PDSCH_ServingCellConfig_t *pdsch);
|
||||||
|
|
||||||
void handle_nr_ul_harq(const int CC_idP,
|
void handle_nr_ul_harq(const int CC_idP,
|
||||||
module_id_t mod_id,
|
module_id_t mod_id,
|
||||||
frame_t frame,
|
frame_t frame,
|
||||||
|
|||||||
Reference in New Issue
Block a user