Fix issues with Sounding-RS (#1761)

* Fix deadlock caused by update_measurements calling in_sync

* Fix overlapping SRS condition

* Do not use shortened PUSCH in transmissions and retx from RAR

* Revert "Fix deadlock caused by update_measurements calling in_sync"

This reverts commit f58c8c8c766f8f95baa3a3bf8287d8e25b2057ba.
master
Ismael Gomez 4 years ago committed by GitHub
parent 2d321231df
commit 76bfc78147
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -399,6 +399,7 @@ public:
tb_action_t tb;
uint32_t current_tx_nb;
bool expect_ack;
bool is_rar;
} tb_action_ul_t;
/* Query the MAC for the current RNTI to look for

@ -52,6 +52,7 @@ typedef struct SRSLTE_API {
srslte_ra_tb_t tb;
srslte_ra_tb_t last_tb;
uint32_t n_dmrs;
bool is_rar;
} srslte_pusch_grant_t;

@ -759,6 +759,14 @@ void srslte_refsignal_srs_pusch_shortened(srslte_refsignal_ul_t* q,
{
bool shortened = false;
// A UE shall not transmit SRS whenever SRS and a PUSCH transmission corresponding to a Random Access Response
// Grant or a retransmission of the same transport block as part of the contention based random access procedure
// coincide in the same subframe.
if (pusch_cfg->grant.is_rar) {
sf->shortened = false;
return;
}
if (srs_cfg->configured) {
// If UE-specific SRS is configured, PUSCH is shortened every time UE transmits SRS even if overlaping in the same
// RB or not
@ -786,7 +794,7 @@ void srslte_refsignal_srs_pusch_shortened(srslte_refsignal_ul_t* q,
uint32_t nrb_srs = srslte_refsignal_srs_rb_L_cs(srs_cfg->bw_cfg, q->cell.nof_prb);
for (uint32_t ns = 0; ns < 2 && !shortened; ns++) {
if ((pusch_cfg->grant.n_prb_tilde[ns] >= k0_srs && pusch_cfg->grant.n_prb_tilde[ns] < k0_srs + nrb_srs) ||
(pusch_cfg->grant.n_prb_tilde[ns] + pusch_cfg->grant.L_prb >= k0_srs &&
(pusch_cfg->grant.n_prb_tilde[ns] + pusch_cfg->grant.L_prb > k0_srs &&
pusch_cfg->grant.n_prb_tilde[ns] + pusch_cfg->grant.L_prb < k0_srs + nrb_srs) ||
(pusch_cfg->grant.n_prb_tilde[ns] <= k0_srs &&
pusch_cfg->grant.n_prb_tilde[ns] + pusch_cfg->grant.L_prb >= k0_srs + nrb_srs)) {

@ -368,6 +368,8 @@ void ul_harq_entity::ul_harq_process::generate_new_tx(mac_interface_phy_lte::mac
current_tx_nb = 0;
current_irv = 0;
action->is_rar = grant.is_rar || (grant.rnti == harq_entity->rntis->temp_rnti);
Info("UL %d: New TX%s, RV=%d, TBS=%d\n",
pid,
grant.rnti == harq_entity->rntis->temp_rnti ? " for Msg3" : "",

Loading…
Cancel
Save