mirror of https://github.com/PentHertz/srsLTE.git
Mutex more operations in worker to fix segfault when HO. Protect pdsch/pusch from regenerating sequence
This commit is contained in:
parent
3d3f98b21e
commit
c012a6ea83
|
@ -427,6 +427,8 @@ int srslte_pdsch_set_rnti(srslte_pdsch_t *q, uint16_t rnti) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
q->users[rnti_idx]->sequence_generated = false;
|
||||||
|
|
||||||
for (int i = 0; i < SRSLTE_NSUBFRAMES_X_FRAME; i++) {
|
for (int i = 0; i < SRSLTE_NSUBFRAMES_X_FRAME; i++) {
|
||||||
for (int j = 0; j < SRSLTE_MAX_CODEWORDS; j++) {
|
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,
|
if (srslte_sequence_pdsch(&q->users[rnti_idx]->seq[j][i], rnti, j, 2 * i, q->cell.id,
|
||||||
|
|
|
@ -444,6 +444,7 @@ int srslte_pusch_set_rnti(srslte_pusch_t *q, uint16_t rnti) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
q->users[rnti_idx]->sequence_generated = false;
|
||||||
for (i = 0; i < SRSLTE_NSUBFRAMES_X_FRAME; i++) {
|
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,
|
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)))
|
q->max_re * srslte_mod_bits_x_symbol(SRSLTE_MOD_64QAM)))
|
||||||
|
|
|
@ -86,6 +86,7 @@ phch_worker::~phch_worker()
|
||||||
|
|
||||||
void phch_worker::reset()
|
void phch_worker::reset()
|
||||||
{
|
{
|
||||||
|
pthread_mutex_lock(&mutex);
|
||||||
bzero(&dl_metrics, sizeof(dl_metrics_t));
|
bzero(&dl_metrics, sizeof(dl_metrics_t));
|
||||||
bzero(&ul_metrics, sizeof(ul_metrics_t));
|
bzero(&ul_metrics, sizeof(ul_metrics_t));
|
||||||
bzero(&dmrs_cfg, sizeof(srslte_refsignal_dmrs_pusch_cfg_t));
|
bzero(&dmrs_cfg, sizeof(srslte_refsignal_dmrs_pusch_cfg_t));
|
||||||
|
@ -101,6 +102,7 @@ void phch_worker::reset()
|
||||||
I_sr = 0;
|
I_sr = 0;
|
||||||
cfi = 0;
|
cfi = 0;
|
||||||
rssi_read_cnt = 0;
|
rssi_read_cnt = 0;
|
||||||
|
pthread_mutex_unlock(&mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
void phch_worker::enable_pdsch_coworker() {
|
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)
|
void phch_worker::set_ul_params(bool pregen_disabled)
|
||||||
{
|
{
|
||||||
|
pthread_mutex_lock(&mutex);
|
||||||
|
|
||||||
phy_interface_rrc::phy_cfg_common_t *common = &phy->config->common;
|
phy_interface_rrc::phy_cfg_common_t *common = &phy->config->common;
|
||||||
LIBLTE_RRC_PHYSICAL_CONFIG_DEDICATED_STRUCT *dedicated = &phy->config->dedicated;
|
LIBLTE_RRC_PHYSICAL_CONFIG_DEDICATED_STRUCT *dedicated = &phy->config->dedicated;
|
||||||
|
@ -1505,6 +1508,8 @@ void phch_worker::set_ul_params(bool pregen_disabled)
|
||||||
I_sr = dedicated->sched_request_cnfg.sr_cnfg_idx;
|
I_sr = dedicated->sched_request_cnfg.sr_cnfg_idx;
|
||||||
sr_configured = true;
|
sr_configured = true;
|
||||||
|
|
||||||
|
pthread_mutex_unlock(&mutex);
|
||||||
|
|
||||||
if (pregen_enabled && !pregen_disabled) {
|
if (pregen_enabled && !pregen_disabled) {
|
||||||
Info("Pre-generating UL signals worker=%d\n", get_id());
|
Info("Pre-generating UL signals worker=%d\n", get_id());
|
||||||
srslte_ue_ul_pregen_signals(&ue_ul);
|
srslte_ue_ul_pregen_signals(&ue_ul);
|
||||||
|
|
Loading…
Reference in New Issue