Mutex more operations in worker to fix segfault when HO. Protect pdsch/pusch from regenerating sequence

This commit is contained in:
Ismael Gomez 2018-07-12 18:55:19 +02:00
parent 3d3f98b21e
commit c012a6ea83
3 changed files with 9 additions and 1 deletions

View File

@ -427,6 +427,8 @@ int srslte_pdsch_set_rnti(srslte_pdsch_t *q, uint16_t rnti) {
return -1;
}
}
q->users[rnti_idx]->sequence_generated = false;
for (int i = 0; i < SRSLTE_NSUBFRAMES_X_FRAME; i++) {
for (int j = 0; j < SRSLTE_MAX_CODEWORDS; j++) {
if (srslte_sequence_pdsch(&q->users[rnti_idx]->seq[j][i], rnti, j, 2 * i, q->cell.id,

View File

@ -444,6 +444,7 @@ int srslte_pusch_set_rnti(srslte_pusch_t *q, uint16_t rnti) {
return -1;
}
}
q->users[rnti_idx]->sequence_generated = false;
for (i = 0; i < SRSLTE_NSUBFRAMES_X_FRAME; i++) {
if (srslte_sequence_pusch(&q->users[rnti_idx]->seq[i], rnti, 2 * i, q->cell.id,
q->max_re * srslte_mod_bits_x_symbol(SRSLTE_MOD_64QAM)))

View File

@ -86,6 +86,7 @@ phch_worker::~phch_worker()
void phch_worker::reset()
{
pthread_mutex_lock(&mutex);
bzero(&dl_metrics, sizeof(dl_metrics_t));
bzero(&ul_metrics, sizeof(ul_metrics_t));
bzero(&dmrs_cfg, sizeof(srslte_refsignal_dmrs_pusch_cfg_t));
@ -101,6 +102,7 @@ void phch_worker::reset()
I_sr = 0;
cfi = 0;
rssi_read_cnt = 0;
pthread_mutex_unlock(&mutex);
}
void phch_worker::enable_pdsch_coworker() {
@ -1402,6 +1404,7 @@ void phch_worker::enable_pregen_signals(bool enabled)
void phch_worker::set_ul_params(bool pregen_disabled)
{
pthread_mutex_lock(&mutex);
phy_interface_rrc::phy_cfg_common_t *common = &phy->config->common;
LIBLTE_RRC_PHYSICAL_CONFIG_DEDICATED_STRUCT *dedicated = &phy->config->dedicated;
@ -1504,7 +1507,9 @@ void phch_worker::set_ul_params(bool pregen_disabled)
/* SR configuration */
I_sr = dedicated->sched_request_cnfg.sr_cnfg_idx;
sr_configured = true;
pthread_mutex_unlock(&mutex);
if (pregen_enabled && !pregen_disabled) {
Info("Pre-generating UL signals worker=%d\n", get_id());
srslte_ue_ul_pregen_signals(&ue_ul);