Merge branch 'bugfix-137-uplink-fixes' into develop
This commit is contained in:
@@ -7205,7 +7205,17 @@ int generate_eNB_ulsch_params_from_dci(PHY_VARS_eNB *eNB,
|
|||||||
|
|
||||||
|
|
||||||
if (cqi_req == 1) {
|
if (cqi_req == 1) {
|
||||||
ulsch->harq_processes[harq_pid]->O_RI = 1; //we only support 2 antenna ports, so this is always 1 according to 3GPP 36.213 Table
|
/* 36.213 7.2.1 (release 10) says:
|
||||||
|
* "RI is only reported for transmission modes 3 and 4,
|
||||||
|
* as well as transmission modes 8 and 9 with PMI/RI reporting"
|
||||||
|
* This is for aperiodic reporting.
|
||||||
|
* TODO: deal with TM 8&9 correctly when they are implemented.
|
||||||
|
* TODO: deal with periodic reporting if we implement it.
|
||||||
|
*/
|
||||||
|
if (transmission_mode == 3 || transmission_mode == 4)
|
||||||
|
ulsch->harq_processes[harq_pid]->O_RI = 1; //we only support 2 antenna ports, so this is always 1 according to 3GPP 36.213 Table
|
||||||
|
else
|
||||||
|
ulsch->harq_processes[harq_pid]->O_RI = 0;
|
||||||
|
|
||||||
switch(transmission_mode) {
|
switch(transmission_mode) {
|
||||||
// The aperiodic CQI reporting mode is fixed for every transmission mode instead of being configured by higher layer signaling
|
// The aperiodic CQI reporting mode is fixed for every transmission mode instead of being configured by higher layer signaling
|
||||||
|
|||||||
@@ -366,6 +366,8 @@ typedef struct {
|
|||||||
uint32_t TBS;
|
uint32_t TBS;
|
||||||
/// The payload + CRC size in bits
|
/// The payload + CRC size in bits
|
||||||
uint32_t B;
|
uint32_t B;
|
||||||
|
/// Number of soft channel bits
|
||||||
|
uint32_t G;
|
||||||
/// CQI CRC status
|
/// CQI CRC status
|
||||||
uint8_t cqi_crc_status;
|
uint8_t cqi_crc_status;
|
||||||
/// Pointer to CQI data
|
/// Pointer to CQI data
|
||||||
|
|||||||
@@ -228,7 +228,7 @@ int ulsch_decoding_data_2thread0(td_params* tdp) {
|
|||||||
LTE_eNB_ULSCH_t *ulsch = eNB->ulsch[UE_id];
|
LTE_eNB_ULSCH_t *ulsch = eNB->ulsch[UE_id];
|
||||||
LTE_UL_eNB_HARQ_t *ulsch_harq = ulsch->harq_processes[harq_pid];
|
LTE_UL_eNB_HARQ_t *ulsch_harq = ulsch->harq_processes[harq_pid];
|
||||||
int Q_m = get_Qm_ul(ulsch_harq->mcs);
|
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 E;
|
||||||
uint32_t Gp,GpmodC,Nl=1;
|
uint32_t Gp,GpmodC,Nl=1;
|
||||||
uint32_t C = ulsch_harq->C;
|
uint32_t C = ulsch_harq->C;
|
||||||
@@ -450,7 +450,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_eNB_ULSCH_t *ulsch = eNB->ulsch[UE_id];
|
||||||
LTE_UL_eNB_HARQ_t *ulsch_harq = ulsch->harq_processes[harq_pid];
|
LTE_UL_eNB_HARQ_t *ulsch_harq = ulsch->harq_processes[harq_pid];
|
||||||
int Q_m = get_Qm_ul(ulsch_harq->mcs);
|
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;
|
unsigned int E;
|
||||||
int Cby2;
|
int Cby2;
|
||||||
|
|
||||||
@@ -658,7 +658,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_eNB_ULSCH_t *ulsch = eNB->ulsch[UE_id];
|
||||||
LTE_UL_eNB_HARQ_t *ulsch_harq = ulsch->harq_processes[harq_pid];
|
LTE_UL_eNB_HARQ_t *ulsch_harq = ulsch->harq_processes[harq_pid];
|
||||||
int Q_m = get_Qm_ul(ulsch_harq->mcs);
|
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;
|
unsigned int E;
|
||||||
|
|
||||||
uint8_t (*tc)(int16_t *y,
|
uint8_t (*tc)(int16_t *y,
|
||||||
@@ -1036,6 +1036,7 @@ unsigned int ulsch_decoding(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
G = G - Q_RI - Q_CQI;
|
G = G - Q_RI - Q_CQI;
|
||||||
|
ulsch_harq->G = G;
|
||||||
|
|
||||||
if ((int)G < 0) {
|
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);
|
LOG_E(PHY,"FATAL: ulsch_decoding.c G < 0 (%d) : Q_RI %d, Q_CQI %d\n",G,Q_RI,Q_CQI);
|
||||||
|
|||||||
@@ -828,9 +828,6 @@ void schedule_ulsch_rnti(module_id_t module_idP,
|
|||||||
UE_list->eNB_UE_stats[CC_id][UE_id].target_rx_power=target_rx_power;
|
UE_list->eNB_UE_stats[CC_id][UE_id].target_rx_power=target_rx_power;
|
||||||
UE_list->eNB_UE_stats[CC_id][UE_id].ulsch_mcs1=UE_template->pre_assigned_mcs_ul;
|
UE_list->eNB_UE_stats[CC_id][UE_id].ulsch_mcs1=UE_template->pre_assigned_mcs_ul;
|
||||||
mcs = UE_template->pre_assigned_mcs_ul;//cmin (UE_template->pre_assigned_mcs_ul, openair_daq_vars.target_ue_ul_mcs); // adjust, based on user-defined MCS
|
mcs = UE_template->pre_assigned_mcs_ul;//cmin (UE_template->pre_assigned_mcs_ul, openair_daq_vars.target_ue_ul_mcs); // adjust, based on user-defined MCS
|
||||||
if ((cqi_req==1) && (mcs>19)) {
|
|
||||||
mcs=19;
|
|
||||||
}
|
|
||||||
if (UE_template->pre_allocated_rb_table_index_ul >=0) {
|
if (UE_template->pre_allocated_rb_table_index_ul >=0) {
|
||||||
rb_table_index=UE_template->pre_allocated_rb_table_index_ul;
|
rb_table_index=UE_template->pre_allocated_rb_table_index_ul;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user