mirror of https://github.com/PentHertz/srsLTE.git
Fix bug in SRS using the previous grant to compute collision with PUSCH (#958)
This commit is contained in:
parent
4fb83ae26d
commit
d8d10daebe
|
@ -61,6 +61,10 @@ SRSLTE_API int srslte_ra_ul_dci_to_grant(srslte_cell_t* cell,
|
||||||
srslte_dci_ul_t* dci,
|
srslte_dci_ul_t* dci,
|
||||||
srslte_pusch_grant_t* grant);
|
srslte_pusch_grant_t* grant);
|
||||||
|
|
||||||
|
SRSLTE_API void srslte_ra_ul_compute_nof_re(srslte_pusch_grant_t* grant,
|
||||||
|
srslte_cp_t cp,
|
||||||
|
uint32_t N_srs);
|
||||||
|
|
||||||
/** Others */
|
/** Others */
|
||||||
SRSLTE_API uint32_t srslte_ra_ul_info(srslte_pusch_grant_t* grant, char* info_str, uint32_t len);
|
SRSLTE_API uint32_t srslte_ra_ul_info(srslte_pusch_grant_t* grant, char* info_str, uint32_t len);
|
||||||
|
|
||||||
|
|
|
@ -229,7 +229,7 @@ static void ul_fill_ra_mcs(srslte_ra_tb_t* tb, srslte_ra_tb_t* last_tb, uint32_t
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void compute_nof_re(srslte_pusch_grant_t* grant, srslte_cp_t cp, uint32_t N_srs)
|
void srslte_ra_ul_compute_nof_re(srslte_pusch_grant_t* grant, srslte_cp_t cp, uint32_t N_srs)
|
||||||
{
|
{
|
||||||
grant->nof_symb = 2 * (SRSLTE_CP_NSYMB(cp) - 1) - N_srs;
|
grant->nof_symb = 2 * (SRSLTE_CP_NSYMB(cp) - 1) - N_srs;
|
||||||
grant->nof_re = grant->nof_symb * grant->L_prb * SRSLTE_NRE;
|
grant->nof_re = grant->nof_symb * grant->L_prb * SRSLTE_NRE;
|
||||||
|
@ -299,10 +299,11 @@ int srslte_ra_ul_dci_to_grant(srslte_cell_t* cell,
|
||||||
// copy RV
|
// copy RV
|
||||||
grant->tb.rv = dci->tb.rv;
|
grant->tb.rv = dci->tb.rv;
|
||||||
|
|
||||||
/* Compute final number of bits and RE */
|
/* Compute RE assuming shortened is false*/
|
||||||
compute_nof_re(grant, cell->cp, sf->shortened ? 1 : 0);
|
srslte_ra_ul_compute_nof_re(grant, cell->cp, 0);
|
||||||
|
|
||||||
// Assume hopping is the same
|
// TODO: Need to compute hopping here before determining if there is collision with SRS, but only MAC knows if it's a
|
||||||
|
// new tx or a retx. Need to split MAC interface in 2 calls. For now, assume hopping is the same
|
||||||
for (uint32_t i = 0; i < 2; i++) {
|
for (uint32_t i = 0; i < 2; i++) {
|
||||||
grant->n_prb_tilde[i] = grant->n_prb[i];
|
grant->n_prb_tilde[i] = grant->n_prb[i];
|
||||||
}
|
}
|
||||||
|
|
|
@ -207,10 +207,19 @@ int srslte_ue_ul_dci_to_pusch_grant(srslte_ue_ul_t* q,
|
||||||
srslte_dci_ul_t* dci,
|
srslte_dci_ul_t* dci,
|
||||||
srslte_pusch_grant_t* grant)
|
srslte_pusch_grant_t* grant)
|
||||||
{
|
{
|
||||||
|
if (srslte_ra_ul_dci_to_grant(&q->cell, sf, &cfg->ul_cfg.hopping, dci, grant)) {
|
||||||
|
ERROR("Converting DCI to UL grant\n");
|
||||||
|
return SRSLTE_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
// Update shortened before computing grant
|
// Update shortened before computing grant
|
||||||
srslte_refsignal_srs_pusch_shortened(&q->signals, sf, &cfg->ul_cfg.srs, &cfg->ul_cfg.pusch);
|
srslte_refsignal_srs_pusch_shortened(&q->signals, sf, &cfg->ul_cfg.srs, &cfg->ul_cfg.pusch);
|
||||||
|
|
||||||
return srslte_ra_ul_dci_to_grant(&q->cell, sf, &cfg->ul_cfg.hopping, dci, grant);
|
/* Update RE assuming if shortened is true */
|
||||||
|
if (sf->shortened) {
|
||||||
|
srslte_ra_ul_compute_nof_re(grant, q->cell.cp, true);
|
||||||
|
}
|
||||||
|
return SRSLTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
void srslte_ue_ul_pusch_hopping(srslte_ue_ul_t* q,
|
void srslte_ue_ul_pusch_hopping(srslte_ue_ul_t* q,
|
||||||
|
@ -218,6 +227,9 @@ void srslte_ue_ul_pusch_hopping(srslte_ue_ul_t* q,
|
||||||
srslte_ue_ul_cfg_t* cfg,
|
srslte_ue_ul_cfg_t* cfg,
|
||||||
srslte_pusch_grant_t* grant)
|
srslte_pusch_grant_t* grant)
|
||||||
{
|
{
|
||||||
|
if (cfg->ul_cfg.srs.configured && cfg->ul_cfg.hopping.hopping_enabled) {
|
||||||
|
ERROR("UL SRS and frequency hopping not currently supported\n");
|
||||||
|
}
|
||||||
return srslte_ra_ul_pusch_hopping(&q->hopping, sf, &cfg->ul_cfg.hopping, grant);
|
return srslte_ra_ul_pusch_hopping(&q->hopping, sf, &cfg->ul_cfg.hopping, grant);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue