Commit b7b13de3 authored by Elena_Lukashova's avatar Elena_Lukashova

Making sure llr is indexed per TB, and not per CW.

parent ce29fca6
...@@ -144,6 +144,7 @@ int rx_pdsch(PHY_VARS_UE *ue, ...@@ -144,6 +144,7 @@ int rx_pdsch(PHY_VARS_UE *ue,
case PDSCH: case PDSCH:
pdsch_vars = ue->pdsch_vars[subframe&0x1]; pdsch_vars = ue->pdsch_vars[subframe&0x1];
dlsch = ue->dlsch[subframe&0x1][eNB_id]; dlsch = ue->dlsch[subframe&0x1][eNB_id];
//printf("status TB0 = %d, status TB1 = %d \n", dlsch[0]->harq_processes[harq_pid]->status, dlsch[1]->harq_processes[harq_pid]->status);
LOG_D(PHY,"AbsSubframe %d.%d / Sym %d harq_pid %d, harq status %d.%d \n", LOG_D(PHY,"AbsSubframe %d.%d / Sym %d harq_pid %d, harq status %d.%d \n",
frame,subframe,symbol,harq_pid, frame,subframe,symbol,harq_pid,
dlsch[0]->harq_processes[harq_pid]->status, dlsch[0]->harq_processes[harq_pid]->status,
...@@ -198,6 +199,7 @@ int rx_pdsch(PHY_VARS_UE *ue, ...@@ -198,6 +199,7 @@ int rx_pdsch(PHY_VARS_UE *ue,
DevAssert(dlsch0_harq); DevAssert(dlsch0_harq);
round = dlsch0_harq->round; round = dlsch0_harq->round;
//printf("round = %d\n", round);
if (eNB_id > 2) { if (eNB_id > 2) {
LOG_W(PHY,"dlsch_demodulation.c: Illegal eNB_id %d\n",eNB_id); LOG_W(PHY,"dlsch_demodulation.c: Illegal eNB_id %d\n",eNB_id);
...@@ -238,7 +240,7 @@ int rx_pdsch(PHY_VARS_UE *ue, ...@@ -238,7 +240,7 @@ int rx_pdsch(PHY_VARS_UE *ue,
if ((dlsch0_harq->mimo_mode==LARGE_CDD) || ((dlsch0_harq->mimo_mode>=DUALSTREAM_UNIFORM_PRECODING1) && (dlsch0_harq->mimo_mode<=DUALSTREAM_PUSCH_PRECODING))) { if ((dlsch0_harq->mimo_mode==LARGE_CDD) || ((dlsch0_harq->mimo_mode>=DUALSTREAM_UNIFORM_PRECODING1) && (dlsch0_harq->mimo_mode<=DUALSTREAM_PUSCH_PRECODING))) {
// DevAssert(dlsch1_harq); DevAssert(dlsch1_harq);
if (eNB_id!=eNB_id_i) { if (eNB_id!=eNB_id_i) {
LOG_E(PHY,"TM3/TM4 requires to set eNB_id==eNB_id_i!\n"); LOG_E(PHY,"TM3/TM4 requires to set eNB_id==eNB_id_i!\n");
return(-1); return(-1);
......
...@@ -4297,12 +4297,10 @@ int main(int argc, char **argv) ...@@ -4297,12 +4297,10 @@ int main(int argc, char **argv)
(rx_type==rx_SIC_dual_stream)) { (rx_type==rx_SIC_dual_stream)) {
#ifdef DEBUG_HARQ #ifdef DEBUG_HARQ
printf("[DLSIM] Starting SIC procedure\n"); printf("[DLSIM] Starting SIC procedure\n");
printf("current round = %d\n", PHY_vars_UE->dlsch_ue[eNB_id][0]->harq_processes[PHY_vars_UE->dlsch_ue[eNB_id][0]->current_harq_pid]->round);
printf("\n CW 0 is decoded, i go for , round %d\n", round);
printf("\n ret[TB0] = %d round %d\n", ret[TB], round);
#endif #endif
// printf("current round = %d\n", PHY_vars_UE->dlsch_ue[eNB_id][0]->harq_processes[PHY_vars_UE->dlsch_ue[eNB_id][0]->current_harq_pid]->round);
//printf("\n CW 0 is decoded, i go for , round %d\n", round);
//printf("\n ret[TB0] = %d round %d\n", ret[TB], round);
sic_attempt[round]++; sic_attempt[round]++;
for (round_sic = 0 ; round_sic < (round +1); round_sic++) { for (round_sic = 0 ; round_sic < (round +1); round_sic++) {
...@@ -4319,26 +4317,29 @@ int main(int argc, char **argv) ...@@ -4319,26 +4317,29 @@ int main(int argc, char **argv)
dlsch0_eNB_harq->rb_alloc[0] = dlsch0_ue_harq->rb_alloc_even[0]; dlsch0_eNB_harq->rb_alloc[0] = dlsch0_ue_harq->rb_alloc_even[0];
dlsch0_eNB_harq->nb_rb = dlsch0_ue_harq->nb_rb; dlsch0_eNB_harq->nb_rb = dlsch0_ue_harq->nb_rb;
dlsch0_eNB_harq->mcs = dlsch0_ue_harq->mcs; dlsch0_eNB_harq->mcs = dlsch0_ue_harq->mcs;
dlsch0_eNB_harq->rvidx = dlsch0_ue_harq->rvidx; dlsch0_eNB_harq->rvidx = round_sic;//dlsch0_ue_harq->rvidx;
//printf("dlsch0_eNB_harq->rvidx = %d \n", dlsch0_eNB_harq->rvidx);
dlsch0_eNB_harq->Nl = dlsch0_ue_harq->Nl; dlsch0_eNB_harq->Nl = dlsch0_ue_harq->Nl;
dlsch0_eNB_harq->round = dlsch0_ue_harq->round; dlsch0_eNB_harq->round = round_sic; //dlsch0_ue_harq->round;
dlsch0_eNB_harq->TBS = dlsch0_ue_harq->TBS; dlsch0_eNB_harq->TBS = dlsch0_ue_harq->TBS;
dlsch0_eNB_harq->dl_power_off = dlsch0_ue_harq->dl_power_off; dlsch0_eNB_harq->dl_power_off = dlsch0_ue_harq->dl_power_off;
dlsch0_eNB_harq->status = dlsch0_ue_harq->status; dlsch0_eNB_harq->status = dlsch0_ue_harq->status;
UE->dlsch_eNB[eNB_id]->harq_processes[UE->dlsch[subframe&0x1][eNB_id][1]->current_harq_pid]->rvidx = round_sic; UE->dlsch_eNB[eNB_id]->harq_processes[UE->dlsch[subframe&0x1][eNB_id][0]->current_harq_pid]->rvidx = round_sic;
UE->dlsch[subframe&0x1][0][1]->harq_processes[UE->dlsch[subframe&0x1][0][1]->current_harq_pid]->rvidx=round_sic; UE->dlsch[subframe&0x1][0][1]->harq_processes[UE->dlsch[subframe&0x1][0][1]->current_harq_pid]->rvidx=round_sic;
UE->dlsch_eNB[eNB_id]->harq_processes[UE->dlsch[subframe&0x1][eNB_id][1]->current_harq_pid]->round = round_sic; UE->dlsch_eNB[eNB_id]->harq_processes[UE->dlsch[subframe&0x1][eNB_id][0]->current_harq_pid]->round = round_sic;
UE->dlsch[subframe&0x1][0][1]->harq_processes[UE->dlsch[subframe&0x1][0][1]->current_harq_pid]->round=round_sic; UE->dlsch[subframe&0x1][0][1]->harq_processes[UE->dlsch[subframe&0x1][0][1]->current_harq_pid]->round=round_sic;
UE->dlsch_eNB[eNB_id]->active = UE->dlsch[subframe&0x1][eNB_id][0]->active; UE->dlsch_eNB[eNB_id]->active = UE->dlsch[subframe&0x1][eNB_id][0]->active;
UE->dlsch_eNB[eNB_id]->rnti = UE->dlsch[subframe&0x1][eNB_id][0]->rnti; UE->dlsch_eNB[eNB_id]->rnti = UE->dlsch[subframe&0x1][eNB_id][0]->rnti;
UE->dlsch_eNB[eNB_id]->current_harq_pid = UE->dlsch[subframe&0x1][eNB_id][0]->current_harq_pid; UE->dlsch_eNB[eNB_id]->current_harq_pid = UE->dlsch[subframe&0x1][eNB_id][0]->current_harq_pid;
#ifdef DEBUG_HARQ
printf("UE->dlsch_eNB[eNB_id]->harq_processes[UE->dlsch[subframe&0x1][eNB_id][0]->current_harq_pid]->round = %d\n", UE->dlsch_eNB[eNB_id]->harq_processes[UE->dlsch[subframe&0x1][eNB_id][0]->current_harq_pid]->round);
#endif
dlsch_encoding_SIC(UE, dlsch_encoding_SIC(UE,
input_buffer0[0], //UE->dlsch[subframe&0x1][eNB_id][0]->harq_processes[PHY_vars_UE->dlsch_ue[eNB_id][0]->current_harq_pid]->b,, input_buffer0[0], //UE->dlsch[subframe&0x1][eNB_id][0]->harq_processes[PHY_vars_UE->dlsch_ue[eNB_id][0]->current_harq_pid]->b,,
num_pdcch_symbols, num_pdcch_symbols,
UE->dlsch_eNB[eNB_id], &UE->dlsch_eNB[0][0],
0, 0,
subframe, subframe,
&UE->dlsch_rate_matching_stats, &UE->dlsch_rate_matching_stats,
...@@ -4358,7 +4359,7 @@ int main(int argc, char **argv) ...@@ -4358,7 +4359,7 @@ int main(int argc, char **argv)
dlsch_scrambling(&UE->frame_parms, dlsch_scrambling(&UE->frame_parms,
0, 0,
UE->dlsch_eNB[eNB_id], &UE->dlsch_eNB[0][0],
coded_bits_per_codeword[0], coded_bits_per_codeword[0],
0, 0,
subframe<<1); subframe<<1);
...@@ -4385,7 +4386,7 @@ int main(int argc, char **argv) ...@@ -4385,7 +4386,7 @@ int main(int argc, char **argv)
UE->pdsch_vars[subframe&0x1][eNB_id]->rxdataF_comp1[UE->dlsch[subframe&0x1][0][1]->current_harq_pid][round_sic], UE->pdsch_vars[subframe&0x1][eNB_id]->rxdataF_comp1[UE->dlsch[subframe&0x1][0][1]->current_harq_pid][round_sic],
sic_buffer, sic_buffer,
UE->pdsch_vars[subframe&0x1][eNB_id]->dl_ch_rho_ext[UE->dlsch[subframe&0x1][0][1]->current_harq_pid][round_sic], UE->pdsch_vars[subframe&0x1][eNB_id]->dl_ch_rho_ext[UE->dlsch[subframe&0x1][0][1]->current_harq_pid][round_sic],
UE->pdsch_vars[subframe&0x1][eNB_id]->llr[UE->dlsch[subframe&0x1][0][1]->harq_processes[UE->dlsch[subframe&0x1][0][1]->current_harq_pid]->codeword], UE->pdsch_vars[subframe&0x1][eNB_id]->llr[1],
num_pdcch_symbols, num_pdcch_symbols,
dlsch0_eNB_harq->nb_rb, dlsch0_eNB_harq->nb_rb,
subframe, subframe,
...@@ -4399,7 +4400,7 @@ int main(int argc, char **argv) ...@@ -4399,7 +4400,7 @@ int main(int argc, char **argv)
UE->pdsch_vars[subframe&0x1][eNB_id]->rxdataF_comp1[UE->dlsch[subframe&0x1][0][1]->current_harq_pid][round_sic], UE->pdsch_vars[subframe&0x1][eNB_id]->rxdataF_comp1[UE->dlsch[subframe&0x1][0][1]->current_harq_pid][round_sic],
sic_buffer, sic_buffer,
UE->pdsch_vars[subframe&0x1][eNB_id]->dl_ch_rho_ext[UE->dlsch[subframe&0x1][0][1]->current_harq_pid][round_sic], UE->pdsch_vars[subframe&0x1][eNB_id]->dl_ch_rho_ext[UE->dlsch[subframe&0x1][0][1]->current_harq_pid][round_sic],
UE->pdsch_vars[subframe&0x1][eNB_id]->llr[UE->dlsch[subframe&0x1][0][1]->harq_processes[UE->dlsch[subframe&0x1][0][1]->current_harq_pid]->codeword], UE->pdsch_vars[subframe&0x1][eNB_id]->llr[1],
num_pdcch_symbols, num_pdcch_symbols,
UE->pdsch_vars[subframe&0x1][eNB_id]->dl_ch_mag1[UE->dlsch[subframe&0x1][0][1]->current_harq_pid][round_sic], UE->pdsch_vars[subframe&0x1][eNB_id]->dl_ch_mag1[UE->dlsch[subframe&0x1][0][1]->current_harq_pid][round_sic],
dlsch0_eNB_harq->nb_rb, dlsch0_eNB_harq->nb_rb,
...@@ -4412,7 +4413,7 @@ int main(int argc, char **argv) ...@@ -4412,7 +4413,7 @@ int main(int argc, char **argv)
UE->pdsch_vars[subframe&0x1][eNB_id]->rxdataF_comp1[UE->dlsch[subframe&0x1][0][1]->current_harq_pid][round_sic], UE->pdsch_vars[subframe&0x1][eNB_id]->rxdataF_comp1[UE->dlsch[subframe&0x1][0][1]->current_harq_pid][round_sic],
sic_buffer, sic_buffer,
UE->pdsch_vars[subframe&0x1][eNB_id]->dl_ch_rho_ext[UE->dlsch[subframe&0x1][0][1]->current_harq_pid][round_sic], UE->pdsch_vars[subframe&0x1][eNB_id]->dl_ch_rho_ext[UE->dlsch[subframe&0x1][0][1]->current_harq_pid][round_sic],
UE->pdsch_vars[subframe&0x1][eNB_id]->llr[UE->dlsch[subframe&0x1][0][1]->harq_processes[UE->dlsch[subframe&0x1][0][1]->current_harq_pid]->codeword], UE->pdsch_vars[subframe&0x1][eNB_id]->llr[1],
num_pdcch_symbols, num_pdcch_symbols,
UE->pdsch_vars[subframe&0x1][eNB_id]->dl_ch_mag1[UE->dlsch[subframe&0x1][0][1]->current_harq_pid][round_sic], UE->pdsch_vars[subframe&0x1][eNB_id]->dl_ch_mag1[UE->dlsch[subframe&0x1][0][1]->current_harq_pid][round_sic],
UE->pdsch_vars[subframe&0x1][eNB_id]->dl_ch_magb1[UE->dlsch[subframe&0x1][0][1]->current_harq_pid][round_sic], UE->pdsch_vars[subframe&0x1][eNB_id]->dl_ch_magb1[UE->dlsch[subframe&0x1][0][1]->current_harq_pid][round_sic],
...@@ -4482,7 +4483,7 @@ int main(int argc, char **argv) ...@@ -4482,7 +4483,7 @@ int main(int argc, char **argv)
0, 0,
UE->dlsch[subframe&0x1][0][1], UE->dlsch[subframe&0x1][0][1],
coded_bits_per_codeword[1], coded_bits_per_codeword[1],
UE->pdsch_vars[subframe&0x1][eNB_id]->llr[UE->dlsch[subframe&0x1][0][1]->harq_processes[UE->dlsch[subframe&0x1][0][1]->current_harq_pid]->codeword], UE->pdsch_vars[subframe&0x1][eNB_id]->llr[1],
1, 1,
subframe<<1); subframe<<1);
stop_meas(&UE->dlsch_unscrambling_stats); stop_meas(&UE->dlsch_unscrambling_stats);
...@@ -4490,7 +4491,7 @@ int main(int argc, char **argv) ...@@ -4490,7 +4491,7 @@ int main(int argc, char **argv)
start_meas(&UE->dlsch_decoding_stats[subframe&0x1]); start_meas(&UE->dlsch_decoding_stats[subframe&0x1]);
ret[1] = dlsch_decoding(UE, ret[1] = dlsch_decoding(UE,
UE->pdsch_vars[subframe&0x1][eNB_id]->llr[UE->dlsch[subframe&0x1][0][1]->harq_processes[UE->dlsch[subframe&0x1][0][1]->current_harq_pid]->codeword], UE->pdsch_vars[subframe&0x1][eNB_id]->llr[1],
&UE->frame_parms, &UE->frame_parms,
UE->dlsch[subframe&0x1][0][1], UE->dlsch[subframe&0x1][0][1],
UE->dlsch[subframe&0x1][0][1]->harq_processes[UE->dlsch[subframe&0x1][0][1]->current_harq_pid], UE->dlsch[subframe&0x1][0][1]->harq_processes[UE->dlsch[subframe&0x1][0][1]->current_harq_pid],
......
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