Merge remote-tracking branch 'origin/NR_UE_handle_layer_assertion' into integration_2024_w25
This commit is contained in:
@@ -47,16 +47,17 @@ uint32_t nr_get_G(uint16_t nb_rb,
|
||||
return(G);
|
||||
}
|
||||
|
||||
uint32_t nr_get_E(uint32_t G, uint8_t C, uint8_t Qm, uint8_t Nl, uint8_t r) {
|
||||
uint32_t nr_get_E(uint32_t G, uint8_t C, uint8_t Qm, uint8_t Nl, uint8_t r)
|
||||
{
|
||||
uint32_t E;
|
||||
uint8_t Cprime = C; //assume CBGTI not present
|
||||
|
||||
AssertFatal(Nl>0,"Nl is 0\n");
|
||||
AssertFatal(Qm>0,"Qm is 0\n");
|
||||
if (r <= Cprime - ((G/(Nl*Qm))%Cprime) - 1)
|
||||
E = Nl*Qm*(G/(Nl*Qm*Cprime));
|
||||
AssertFatal(Nl > 0, "Nl is 0\n");
|
||||
AssertFatal(Qm > 0, "Qm is 0\n");
|
||||
if (r <= Cprime - ((G / (Nl * Qm)) % Cprime) - 1)
|
||||
E = Nl * Qm * (G / (Nl * Qm * Cprime));
|
||||
else
|
||||
E = Nl*Qm*((G/(Nl*Qm*Cprime))+1);
|
||||
E = Nl * Qm * ((G / (Nl * Qm * Cprime)) + 1);
|
||||
|
||||
LOG_D(PHY,"nr_get_E : (G %d, C %d, Qm %d, Nl %d, r %d), E %d\n",G, C, Qm, Nl, r, E);
|
||||
return E;
|
||||
|
||||
@@ -375,7 +375,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
|
||||
&harq_process->F,
|
||||
decParams.BG);
|
||||
|
||||
if (harq_process->C>MAX_NUM_NR_DLSCH_SEGMENTS_PER_LAYER*dlsch->Nl) {
|
||||
if (harq_process->C > MAX_NUM_NR_DLSCH_SEGMENTS_PER_LAYER * dlsch->Nl) {
|
||||
LOG_E(PHY, "nr_segmentation.c: too many segments %d, A %d\n", harq_process->C, A);
|
||||
return(-1);
|
||||
}
|
||||
@@ -392,7 +392,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
|
||||
decParams.numMaxIter = dlsch->max_ldpc_iterations;
|
||||
decParams.outMode = 0;
|
||||
r_offset = 0;
|
||||
uint16_t a_segments = MAX_NUM_NR_DLSCH_SEGMENTS_PER_LAYER*dlsch->Nl; //number of segments to be allocated
|
||||
uint16_t a_segments = MAX_NUM_NR_DLSCH_SEGMENTS_PER_LAYER * dlsch->Nl; //number of segments to be allocated
|
||||
|
||||
if (nb_rb != 273) {
|
||||
a_segments = a_segments*nb_rb;
|
||||
|
||||
@@ -298,7 +298,15 @@ static void configure_dlsch(NR_UE_DLSCH_t *dlsch0,
|
||||
//get nrOfLayers from DCI info
|
||||
uint8_t Nl = 0;
|
||||
for (int i = 0; i < 12; i++) { // max 12 ports
|
||||
if ((dlsch_config_pdu->dmrs_ports>>i)&0x01) Nl += 1;
|
||||
if ((dlsch_config_pdu->dmrs_ports >> i) & 0x01)
|
||||
Nl += 1;
|
||||
}
|
||||
if (Nl == 0) {
|
||||
LOG_E(PHY, "Invalid number of layers %d for DLSCH\n", Nl);
|
||||
// setting NACK for this TB
|
||||
dlsch0->active = false;
|
||||
update_harq_status(mac, current_harq_pid, 0);
|
||||
return;
|
||||
}
|
||||
dlsch0->Nl = Nl;
|
||||
if (dlsch_config_pdu->new_data_indicator) {
|
||||
@@ -456,7 +464,7 @@ static void nr_ue_scheduled_response_ul(PHY_VARS_NR_UE *phy, fapi_nr_ul_config_r
|
||||
NR_UL_UE_HARQ_t *harq_process_ul_ue = &phy->ul_harq_processes[current_harq_pid];
|
||||
nfapi_nr_ue_pusch_pdu_t *pusch_pdu = &phy_data->ulsch.pusch_pdu;
|
||||
LOG_D(PHY,
|
||||
"copy pusch_config_pdu nrOfLayers:%d, num_dmrs_cdm_grps_no_data:%d \n",
|
||||
"copy pusch_config_pdu nrOfLayers: %d, num_dmrs_cdm_grps_no_data: %d\n",
|
||||
pdu->pusch_config_pdu.nrOfLayers,
|
||||
pdu->pusch_config_pdu.num_dmrs_cdm_grps_no_data);
|
||||
|
||||
|
||||
@@ -682,7 +682,12 @@ int nr_config_pusch_pdu(NR_UE_MAC_INST_t *mac,
|
||||
ul_layers_config(mac, pusch_config_pdu, dci, dci_format);
|
||||
ul_ports_config(mac, &dmrslength, pusch_config_pdu, dci, dci_format);
|
||||
} else {
|
||||
LOG_E(NR_MAC, "In %s: UL grant from DCI format %d is not handled...\n", __FUNCTION__, dci_format);
|
||||
LOG_E(NR_MAC, "UL grant from DCI format %d is not handled...\n", dci_format);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (pusch_config_pdu->nrOfLayers < 1) {
|
||||
LOG_E(NR_MAC, "Invalid UL number of layers %d from DCI\n", pusch_config_pdu->nrOfLayers);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user