Commit 4080ed52 authored by masa's avatar masa

Fix RI setting, harq feedback of tm3 and handling second CW

parent f9f48ff9
......@@ -241,6 +241,10 @@ void pdsch_procedures(PHY_VARS_eNB *eNB,
int subframe=proc->subframe_tx;
LTE_DL_eNB_HARQ_t *dlsch_harq=dlsch->harq_processes[harq_pid];
LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms;
LTE_DL_eNB_HARQ_t *dlsch_harq1=NULL;
if(dlsch1->active == 1){
dlsch_harq1=dlsch1->harq_processes[harq_pid];
}
if (dlsch->rnti != 0xffff) {//frame < 200) {
LOG_D(PHY,
......@@ -349,6 +353,37 @@ void pdsch_procedures(PHY_VARS_eNB *eNB,
frame,
subframe<<1);
stop_meas(&eNB->dlsch_scrambling_stats);
if(dlsch1->active == 1){
dlsch_encoding_all(eNB,
dlsch_harq1->pdu,
dlsch_harq1->pdsch_start,
dlsch1,
frame,
subframe,
&eNB->dlsch_rate_matching_stats,
&eNB->dlsch_turbo_encoding_stats,
&eNB->dlsch_turbo_encoding_waiting_stats,
&eNB->dlsch_turbo_encoding_main_stats,
&eNB->dlsch_turbo_encoding_wakeup_stats0,
&eNB->dlsch_turbo_encoding_wakeup_stats1,
&eNB->dlsch_interleaving_stats);
dlsch_scrambling(fp,
0,
dlsch1,
harq_pid,
get_G(fp,
dlsch_harq1->nb_rb,
dlsch_harq1->rb_alloc,
dlsch_harq1->Qm,
dlsch_harq1->Nl,
dlsch_harq1->pdsch_start,
frame,subframe,
0),
0,
frame,
subframe<<1);
}
start_meas(&eNB->dlsch_modulation_stats);
dlsch_modulation(eNB,
eNB->common_vars.txdataF,
......@@ -1669,9 +1704,9 @@ void fill_ulsch_cqi_indication (PHY_VARS_eNB *eNB, uint16_t frame, uint8_t subfr
// if we have RI bits, set them and if rank2 overwrite O
if (ulsch_harq->O_RI > 0) {
pdu->cqi_indication_rel9.ri[0] = ulsch_harq->o_RI[0];
pdu->cqi_indication_rel9.ri[0] = ulsch_harq->o_RI[0]+1;
if (ulsch_harq->o_RI[0] == 2)
if (ulsch_harq->o_RI[0] == 1)
pdu->cqi_indication_rel9.length = (ulsch_harq->Or2 >> 3) + ((ulsch_harq->Or2 & 7) > 0 ? 1 : 0);
pdu->cqi_indication_rel9.timing_advance = 0;
......
......@@ -4347,6 +4347,10 @@ extract_harq(module_id_t mod_idP,
/* CDRX: PUCCH gives an NACK and max number of repetitions reached so reset corresponding HARQ RTT */
sched_ctl->harq_rtt_timer[CC_idP][harq_pid] = 0;
}
}else if( (num_ack_nak == 1) && (pdu[TB1] == 1) ){ // ACK
sched_ctl->round[CC_idP][harq_pid][swap_flg] = 8; // release HARQ process
sched_ctl->rsn[CC_idP][harq_pid][swap_flg] = 0;
} else if( (num_ack_nak == 1)
&& (pdu[TB1] == 2 || pdu[TB1] == 4)) { // NAK (treat DTX as NAK)
sched_ctl->round[CC_idP][harq_pid][swap_flg]++; // increment round
......
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