Move HARQ calculations out of nr_fill_nfapi_dl_pdu()
This commit is contained in:
@@ -621,6 +621,15 @@ void nr_schedule_ue_spec(module_id_t module_id,
|
|||||||
gNB_mac->UE_list.DLSCH_pdu[0][0].payload[0][offset + j] = 0;
|
gNB_mac->UE_list.DLSCH_pdu[0][0].payload[0][offset + j] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NR_UE_sched_ctrl_t *sched_ctrl = &UE_list->UE_sched_ctrl[UE_id];
|
||||||
|
const int current_harq_pid = sched_ctrl->current_harq_pid;
|
||||||
|
NR_UE_harq_t *harq = &sched_ctrl->harq_processes[current_harq_pid];
|
||||||
|
harq->feedback_slot = pucch->ul_slot;
|
||||||
|
harq->is_waiting = 1;
|
||||||
|
UE_list->mac_stats[UE_id].dlsch_rounds[harq->round]++;
|
||||||
|
if (harq->round == 0)
|
||||||
|
UE_list->mac_stats[UE_id].dlsch_total_bytes += TBS;
|
||||||
|
|
||||||
nfapi_nr_dl_tti_request_body_t *dl_req = &gNB_mac->DL_req[CC_id].dl_tti_request_body;
|
nfapi_nr_dl_tti_request_body_t *dl_req = &gNB_mac->DL_req[CC_id].dl_tti_request_body;
|
||||||
nr_fill_nfapi_dl_pdu(module_id,
|
nr_fill_nfapi_dl_pdu(module_id,
|
||||||
UE_id,
|
UE_id,
|
||||||
@@ -643,7 +652,10 @@ void nr_schedule_ue_spec(module_id_t module_id,
|
|||||||
startSymbolIndex,
|
startSymbolIndex,
|
||||||
nrOfSymbols,
|
nrOfSymbols,
|
||||||
aggregation_level,
|
aggregation_level,
|
||||||
CCEIndex);
|
CCEIndex,
|
||||||
|
current_harq_pid,
|
||||||
|
harq->ndi,
|
||||||
|
harq->round);
|
||||||
|
|
||||||
nfapi_nr_pdu_t *tx_req = &gNB_mac->TX_req[CC_id].pdu_list[gNB_mac->TX_req[CC_id].Number_of_PDUs];
|
nfapi_nr_pdu_t *tx_req = &gNB_mac->TX_req[CC_id].pdu_list[gNB_mac->TX_req[CC_id].Number_of_PDUs];
|
||||||
configure_fapi_dl_Tx(module_id,
|
configure_fapi_dl_Tx(module_id,
|
||||||
|
|||||||
@@ -456,7 +456,10 @@ void nr_fill_nfapi_dl_pdu(int Mod_idP,
|
|||||||
int StartSymbolIndex,
|
int StartSymbolIndex,
|
||||||
int NrOfSymbols,
|
int NrOfSymbols,
|
||||||
uint8_t aggregation_level,
|
uint8_t aggregation_level,
|
||||||
int CCEIndex) {
|
int CCEIndex,
|
||||||
|
int harq_pid,
|
||||||
|
int ndi,
|
||||||
|
int round) {
|
||||||
gNB_MAC_INST *nr_mac = RC.nrmac[Mod_idP];
|
gNB_MAC_INST *nr_mac = RC.nrmac[Mod_idP];
|
||||||
NR_COMMON_channels_t *cc = nr_mac->common_channels;
|
NR_COMMON_channels_t *cc = nr_mac->common_channels;
|
||||||
NR_ServingCellConfigCommon_t *scc = cc->ServingCellConfigCommon;
|
NR_ServingCellConfigCommon_t *scc = cc->ServingCellConfigCommon;
|
||||||
@@ -504,17 +507,15 @@ void nr_fill_nfapi_dl_pdu(int Mod_idP,
|
|||||||
pdsch_pdu_rel15->CyclicPrefix = 0;
|
pdsch_pdu_rel15->CyclicPrefix = 0;
|
||||||
|
|
||||||
pdsch_pdu_rel15->NrOfCodewords = 1;
|
pdsch_pdu_rel15->NrOfCodewords = 1;
|
||||||
int current_harq_pid = UE_list->UE_sched_ctrl[UE_id].current_harq_pid;
|
|
||||||
pdsch_pdu_rel15->targetCodeRate[0] = nr_get_code_rate_dl(mcs,0);
|
pdsch_pdu_rel15->targetCodeRate[0] = nr_get_code_rate_dl(mcs,0);
|
||||||
pdsch_pdu_rel15->qamModOrder[0] = 2;
|
pdsch_pdu_rel15->qamModOrder[0] = 2;
|
||||||
pdsch_pdu_rel15->mcsIndex[0] = mcs;
|
pdsch_pdu_rel15->mcsIndex[0] = mcs;
|
||||||
pdsch_pdu_rel15->mcsTable[0] = 0;
|
pdsch_pdu_rel15->mcsTable[0] = 0;
|
||||||
pdsch_pdu_rel15->rvIndex[0] = nr_rv_round_map[UE_list->UE_sched_ctrl[UE_id].harq_processes[current_harq_pid].round];
|
pdsch_pdu_rel15->rvIndex[0] = nr_rv_round_map[round];
|
||||||
pdsch_pdu_rel15->dataScramblingId = *scc->physCellId;
|
pdsch_pdu_rel15->dataScramblingId = *scc->physCellId;
|
||||||
pdsch_pdu_rel15->nrOfLayers = nrOfLayers;
|
pdsch_pdu_rel15->nrOfLayers = nrOfLayers;
|
||||||
pdsch_pdu_rel15->transmissionScheme = 0;
|
pdsch_pdu_rel15->transmissionScheme = 0;
|
||||||
pdsch_pdu_rel15->refPoint = 0; // Point A
|
pdsch_pdu_rel15->refPoint = 0; // Point A
|
||||||
UE_list->mac_stats[UE_id].dlsch_rounds[UE_list->UE_sched_ctrl[UE_id].harq_processes[current_harq_pid].round]++;
|
|
||||||
pdsch_pdu_rel15->dmrsConfigType = dmrsConfigType;
|
pdsch_pdu_rel15->dmrsConfigType = dmrsConfigType;
|
||||||
pdsch_pdu_rel15->dlDmrsScramblingId = *scc->physCellId;
|
pdsch_pdu_rel15->dlDmrsScramblingId = *scc->physCellId;
|
||||||
pdsch_pdu_rel15->SCID = 0;
|
pdsch_pdu_rel15->SCID = 0;
|
||||||
@@ -562,8 +563,8 @@ void nr_fill_nfapi_dl_pdu(int Mod_idP,
|
|||||||
dci_pdu_rel15[0].mcs = mcs;
|
dci_pdu_rel15[0].mcs = mcs;
|
||||||
dci_pdu_rel15[0].rv = pdsch_pdu_rel15->rvIndex[0];
|
dci_pdu_rel15[0].rv = pdsch_pdu_rel15->rvIndex[0];
|
||||||
// harq pid and ndi
|
// harq pid and ndi
|
||||||
dci_pdu_rel15[0].harq_pid = current_harq_pid;
|
dci_pdu_rel15[0].harq_pid = harq_pid;
|
||||||
dci_pdu_rel15[0].ndi = UE_list->UE_sched_ctrl[UE_id].harq_processes[current_harq_pid].ndi;
|
dci_pdu_rel15[0].ndi = ndi;
|
||||||
// DAI
|
// DAI
|
||||||
dci_pdu_rel15[0].dai[0].val = (pucch_sched->dai_c-1)&3;
|
dci_pdu_rel15[0].dai[0].val = (pucch_sched->dai_c-1)&3;
|
||||||
|
|
||||||
@@ -573,8 +574,6 @@ void nr_fill_nfapi_dl_pdu(int Mod_idP,
|
|||||||
dci_pdu_rel15[0].pucch_resource_indicator = pucch_sched->resource_indicator;
|
dci_pdu_rel15[0].pucch_resource_indicator = pucch_sched->resource_indicator;
|
||||||
// PDSCH to HARQ TI
|
// PDSCH to HARQ TI
|
||||||
dci_pdu_rel15[0].pdsch_to_harq_feedback_timing_indicator.val = pucch_sched->timing_indicator;
|
dci_pdu_rel15[0].pdsch_to_harq_feedback_timing_indicator.val = pucch_sched->timing_indicator;
|
||||||
UE_list->UE_sched_ctrl[UE_id].harq_processes[current_harq_pid].feedback_slot = pucch_sched->ul_slot;
|
|
||||||
UE_list->UE_sched_ctrl[UE_id].harq_processes[current_harq_pid].is_waiting = 1;
|
|
||||||
// antenna ports
|
// antenna ports
|
||||||
dci_pdu_rel15[0].antenna_ports.val = 0; // nb of cdm groups w/o data 1 and dmrs port 0
|
dci_pdu_rel15[0].antenna_ports.val = 0; // nb of cdm groups w/o data 1 and dmrs port 0
|
||||||
// dmrs sequence initialization
|
// dmrs sequence initialization
|
||||||
@@ -637,9 +636,6 @@ void nr_fill_nfapi_dl_pdu(int Mod_idP,
|
|||||||
// N_PRB_oh);
|
// N_PRB_oh);
|
||||||
//pdsch_pdu_rel15->nb_mod_symbols = N_RE_prime*pdsch_pdu_rel15->n_prb*pdsch_pdu_rel15->nb_codewords;
|
//pdsch_pdu_rel15->nb_mod_symbols = N_RE_prime*pdsch_pdu_rel15->n_prb*pdsch_pdu_rel15->nb_codewords;
|
||||||
|
|
||||||
if (UE_list->UE_sched_ctrl[UE_id].harq_processes[current_harq_pid].round==0)
|
|
||||||
UE_list->mac_stats[UE_id].dlsch_total_bytes += TBS;
|
|
||||||
|
|
||||||
LOG_D(MAC,
|
LOG_D(MAC,
|
||||||
"DLSCH PDU: start PRB %d n_PRB %d start symbol %d nb_symbols %d "
|
"DLSCH PDU: start PRB %d n_PRB %d start symbol %d nb_symbols %d "
|
||||||
"nb_layers %d nb_codewords %d mcs %d TBS: %d\n",
|
"nb_layers %d nb_codewords %d mcs %d TBS: %d\n",
|
||||||
|
|||||||
@@ -150,7 +150,10 @@ void nr_fill_nfapi_dl_pdu(int Mod_id,
|
|||||||
int StartSymbolIndex,
|
int StartSymbolIndex,
|
||||||
int NrOfSymbols,
|
int NrOfSymbols,
|
||||||
uint8_t aggregation_level,
|
uint8_t aggregation_level,
|
||||||
int CCEIndex);
|
int CCEIndex,
|
||||||
|
int harq_pid,
|
||||||
|
int ndi,
|
||||||
|
int round);
|
||||||
|
|
||||||
int configure_fapi_dl_pdu_phytest(int Mod_id,
|
int configure_fapi_dl_pdu_phytest(int Mod_id,
|
||||||
nfapi_nr_dl_tti_request_body_t *dl_req,
|
nfapi_nr_dl_tti_request_body_t *dl_req,
|
||||||
|
|||||||
Reference in New Issue
Block a user