Commit 3df0b895 authored by Hongzhi Wang's avatar Hongzhi Wang

re-activating HARQ for UL. break loop when one segment is in error

parent 65b0e7a8
...@@ -602,8 +602,8 @@ uint32_t nr_ulsch_decoding(PHY_VARS_gNB *phy_vars_gNB, ...@@ -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, ...@@ -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, ...@@ -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, ...@@ -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;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment