Commit 8b668171 authored by masayuki.harada's avatar masayuki.harada

Fix TM3 in PHY.

parent b522db88
......@@ -1374,8 +1374,12 @@ uint32_t rx_pucch(PHY_VARS_eNB *eNB,
*payload = (stat_re<0) ? 1 : 2; // 1 == ACK, 2 == NAK
if (fmt==pucch_format1b)
*(1+payload) = (stat_im<0) ? 1 : 2;
if (fmt==pucch_format1b){
*payload = (stat_im > stat_re) ? 1 : 2;
*(1+payload) = (stat_im > (-1.0*stat_re)) ? 2 : 1;
LOG_D(PHY,"PUCCH 1b ACK/NAK subframe %d : stat %d, stat %d %d, payload %d %d\n",
subframe,dB_fixed(stat_max),stat_re,stat_im,*payload,*(1+payload));
}
} else { // insufficient energy on PUCCH so NAK
#if defined(USRP_REC_PLAY)
LOG_D(PHY,"PUCCH 1a/b: NAK subframe %d : sigma2_dB %d, stat_max %d, pucch1_thres %d\n",subframe,sigma2_dB,dB_fixed(stat_max),pucch1_thres);
......
......@@ -1344,7 +1344,7 @@ unsigned int ulsch_decoding(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc,
// rank 1
if ((ulsch_harq->O_RI == 1) && (Qprime_RI > 0)) {
ulsch_harq->o_RI[0] = ((ulsch_harq->q_RI[0] + ulsch_harq->q_RI[Q_m/2]) > 0) ? 0 : 1;
ulsch_harq->o_RI[0] = ((ulsch_harq->q_RI[0] + ulsch_harq->q_RI[1]) > 0) ? 1 : 0;
}
// CQI
......
......@@ -325,6 +325,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[subframe] == 1){
dlsch_harq1=dlsch1->harq_processes[harq_pid];
}
// 36-211
start_meas(&eNB->dlsch_scrambling_stats);
dlsch_scrambling(fp,
......@@ -343,7 +347,39 @@ void pdsch_procedures(PHY_VARS_eNB *eNB,
frame,
subframe<<1);
stop_meas(&eNB->dlsch_scrambling_stats);
if(dlsch1->active[subframe] == 1){
dlsch_encoding_all(eNB,
dlsch_harq1->pdu,
dlsch_harq->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),
1,
frame,
subframe<<1);
}
start_meas(&eNB->dlsch_modulation_stats);
if(dlsch1->active[subframe] == 1){
dlsch_modulation(eNB,
eNB->common_vars.txdataF,
AMP,
......@@ -352,6 +388,17 @@ void pdsch_procedures(PHY_VARS_eNB *eNB,
dlsch_harq->pdsch_start,
dlsch,
dlsch->ue_type==0 ? dlsch1 : (LTE_eNB_DLSCH_t *)NULL);
}else{
dlsch_modulation(eNB,
eNB->common_vars.txdataF,
AMP,
frame,
subframe,
dlsch_harq->pdsch_start,
dlsch,
(LTE_eNB_DLSCH_t *)NULL);
}
dlsch1->active[subframe]=0;
stop_meas(&eNB->dlsch_modulation_stats);
LOG_D(PHY,"Generated PDSCH dlsch_harq[round:%d]\n",dlsch_harq->round);
......@@ -1661,10 +1708,10 @@ 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)
pdu->cqi_indication_rel9.length = (ulsch_harq->Or2 >> 3) + ((ulsch_harq->Or2 & 7) > 0 ? 1 : 0);
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;
}
......
......@@ -1262,10 +1262,14 @@ getm_mac(COMMON_channels_t * cc,unsigned char subframe)
else {
switch (cc->tdd_Config->subframeAssignment) {
case 1:
if (subframe == 1) {
return(1);
} else if (subframe == 6) {
return(1); // To be updated
if (subframe == 0) {
return(0);
} else if (subframe == 4) {
return(0);
} else if (subframe == 5) {
return(0);
} else if (subframe == 9) {
return(0); // To be updated
} else {
LOG_E(MAC,"getm_mac illegl subframe %d\n",subframe);
return(0);
......@@ -4734,7 +4738,7 @@ extract_harq(module_id_t mod_idP,
sched_ctl->rsn[CC_idP][harq_pid][swap_flg] = 0;
}
} else
AssertFatal(1 == 0,
LOG_E(PHY,
"Illegal ACK/NAK/round combination (%d,%d,%d,%d,%d,%d,%d,%d,%d) for harq_pid %d, UE %d/%x\n",
frameP,
subframeP,
......
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