issue 137 - correct computation of G
G was wrongly computed in some places, not taking into account CQI and RI bits. This commit saves the correct value computed in ulsch_decoding so we can reuse it in ulsch_decoding_data (and the like). Only the file openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c has been checked. If the computation is done somewhere else the problem might still exist.
This commit is contained in:
@@ -374,6 +374,8 @@ typedef struct {
|
||||
uint32_t TBS;
|
||||
/// The payload + CRC size in bits
|
||||
uint32_t B;
|
||||
/// Number of soft channel bits
|
||||
uint32_t G;
|
||||
/// CQI CRC status
|
||||
uint8_t cqi_crc_status;
|
||||
/// Pointer to CQI data
|
||||
|
||||
@@ -236,7 +236,7 @@ int ulsch_decoding_data_2thread0(td_params* tdp) {
|
||||
LTE_eNB_ULSCH_t *ulsch = eNB->ulsch[UE_id];
|
||||
LTE_UL_eNB_HARQ_t *ulsch_harq = ulsch->harq_processes[harq_pid];
|
||||
int Q_m = get_Qm_ul(ulsch_harq->mcs);
|
||||
int G = ulsch_harq->nb_rb * (12 * Q_m) * ulsch_harq->Nsymb_pusch;
|
||||
int G = ulsch_harq->G;
|
||||
uint32_t E;
|
||||
uint32_t Gp,GpmodC,Nl=1;
|
||||
uint32_t C = ulsch_harq->C;
|
||||
@@ -458,7 +458,7 @@ int ulsch_decoding_data_2thread(PHY_VARS_eNB *eNB,int UE_id,int harq_pid,int llr
|
||||
LTE_eNB_ULSCH_t *ulsch = eNB->ulsch[UE_id];
|
||||
LTE_UL_eNB_HARQ_t *ulsch_harq = ulsch->harq_processes[harq_pid];
|
||||
int Q_m = get_Qm_ul(ulsch_harq->mcs);
|
||||
int G = ulsch_harq->nb_rb * (12 * Q_m) * ulsch_harq->Nsymb_pusch;
|
||||
int G = ulsch_harq->G;
|
||||
unsigned int E;
|
||||
int Cby2;
|
||||
|
||||
@@ -666,7 +666,7 @@ int ulsch_decoding_data(PHY_VARS_eNB *eNB,int UE_id,int harq_pid,int llr8_flag)
|
||||
LTE_eNB_ULSCH_t *ulsch = eNB->ulsch[UE_id];
|
||||
LTE_UL_eNB_HARQ_t *ulsch_harq = ulsch->harq_processes[harq_pid];
|
||||
int Q_m = get_Qm_ul(ulsch_harq->mcs);
|
||||
int G = ulsch_harq->nb_rb * (12 * Q_m) * ulsch_harq->Nsymb_pusch;
|
||||
int G = ulsch_harq->G;
|
||||
unsigned int E;
|
||||
|
||||
uint8_t (*tc)(int16_t *y,
|
||||
@@ -1044,6 +1044,7 @@ unsigned int ulsch_decoding(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
|
||||
#endif
|
||||
|
||||
G = G - Q_RI - Q_CQI;
|
||||
ulsch_harq->G = G;
|
||||
|
||||
if ((int)G < 0) {
|
||||
LOG_E(PHY,"FATAL: ulsch_decoding.c G < 0 (%d) : Q_RI %d, Q_CQI %d\n",G,Q_RI,Q_CQI);
|
||||
|
||||
Reference in New Issue
Block a user