re-activating HARQ for UL. break loop when one segment is in error
This commit is contained in:
@@ -602,8 +602,8 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB,
|
|||||||
E = nr_get_E(G, harq_process->C, Qm, n_layers, r);
|
E = nr_get_E(G, harq_process->C, Qm, n_layers, r);
|
||||||
memset(harq_process->c[r],0,Kr_bytes);
|
memset(harq_process->c[r],0,Kr_bytes);
|
||||||
|
|
||||||
if ((dtx_det==0)&&(pusch_pdu->pusch_data.rv_index==0)){
|
//if ((dtx_det==0)&&(pusch_pdu->pusch_data.rv_index==0)){
|
||||||
//if (dtx_det==0){
|
if (dtx_det==0){
|
||||||
if (mcs >9){
|
if (mcs >9){
|
||||||
memcpy((&z_ol[0]),ulsch_llr+r_offset,E*sizeof(short));
|
memcpy((&z_ol[0]),ulsch_llr+r_offset,E*sizeof(short));
|
||||||
|
|
||||||
@@ -705,6 +705,7 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB,
|
|||||||
else{
|
else{
|
||||||
no_iteration_ldpc = ulsch->max_ldpc_iterations+1;
|
no_iteration_ldpc = ulsch->max_ldpc_iterations+1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool decodeSuccess = (no_iteration_ldpc <= ulsch->max_ldpc_iterations);
|
bool decodeSuccess = (no_iteration_ldpc <= ulsch->max_ldpc_iterations);
|
||||||
if (decodeSuccess) {
|
if (decodeSuccess) {
|
||||||
memcpy(harq_process->b+offset,
|
memcpy(harq_process->b+offset,
|
||||||
@@ -716,9 +717,13 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB,
|
|||||||
else {
|
else {
|
||||||
LOG_D(PHY,"uplink segment error %d/%d\n",r,harq_process->C);
|
LOG_D(PHY,"uplink segment error %d/%d\n",r,harq_process->C);
|
||||||
LOG_D(PHY, "ULSCH %d in error\n",ULSCH_id);
|
LOG_D(PHY, "ULSCH %d in error\n",ULSCH_id);
|
||||||
|
break; //don't even attempt to decode other segments
|
||||||
}
|
}
|
||||||
if (r==(harq_process->C-1)){
|
}
|
||||||
if ((decodeSuccess)&&(harq_process->processedSegments==(harq_process->C))) {
|
|
||||||
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_gNB_ULSCH_DECODING,0);
|
||||||
|
|
||||||
|
if ((harq_process->processedSegments==(harq_process->C))) {
|
||||||
LOG_D(PHY,"[gNB %d] ULSCH: Setting ACK for slot %d TBS %d\n",
|
LOG_D(PHY,"[gNB %d] ULSCH: Setting ACK for slot %d TBS %d\n",
|
||||||
phy_vars_gNB->Mod_id,harq_process->slot,harq_process->TBS);
|
phy_vars_gNB->Mod_id,harq_process->slot,harq_process->TBS);
|
||||||
harq_process->status = SCH_IDLE;
|
harq_process->status = SCH_IDLE;
|
||||||
@@ -745,8 +750,7 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB,
|
|||||||
}
|
}
|
||||||
ulsch->last_iteration_cnt = no_iteration_ldpc;
|
ulsch->last_iteration_cnt = no_iteration_ldpc;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
else {
|
||||||
void (*nr_processULSegment_ptr)(void*) = &nr_processULSegment;
|
void (*nr_processULSegment_ptr)(void*) = &nr_processULSegment;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user