From a360580999f3355895aa8145169e8f17b6d61d47 Mon Sep 17 00:00:00 2001 From: Ismael Gomez Date: Tue, 12 Jan 2021 12:53:47 +0100 Subject: [PATCH] Run PRACH workers before cc_workers fixes memory corruption when PRACH workers run in foreground (eg in ZMQ) --- srsenb/src/phy/txrx.cc | 10 +++++----- srsue/src/stack/mac/proc_ra.cc | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/srsenb/src/phy/txrx.cc b/srsenb/src/phy/txrx.cc index 3e601a113..9dcff5ce3 100644 --- a/srsenb/src/phy/txrx.cc +++ b/srsenb/src/phy/txrx.cc @@ -183,6 +183,11 @@ void txrx::run_thread() lte_worker->set_time(tti, tx_worker_cnt, timestamp); tx_worker_cnt = (tx_worker_cnt + 1) % nof_workers; + // Trigger prach worker execution + for (uint32_t cc = 0; cc < worker_com->get_nof_carriers_lte(); cc++) { + prach->new_tti(cc, tti, buffer.get(worker_com->get_rf_port(cc), 0, worker_com->get_nof_ports(0))); + } + // Launch NR worker only if available if (nr_worker != nullptr) { nr_worker->set_tti(tti); @@ -194,11 +199,6 @@ void txrx::run_thread() worker_com->semaphore.push(lte_worker); lte_workers->start_worker(lte_worker); - // Trigger prach worker execution - for (uint32_t cc = 0; cc < worker_com->get_nof_carriers_lte(); cc++) { - prach->new_tti(cc, tti, buffer.get(worker_com->get_rf_port(cc), 0, worker_com->get_nof_ports(0))); - } - // Advance stack in time stack->tti_clock(); } diff --git a/srsue/src/stack/mac/proc_ra.cc b/srsue/src/stack/mac/proc_ra.cc index be9a5087c..630052fc7 100644 --- a/srsue/src/stack/mac/proc_ra.cc +++ b/srsue/src/stack/mac/proc_ra.cc @@ -161,7 +161,7 @@ void ra_proc::state_pdcch_setup() ra_tti = info.tti_ra; ra_rnti = 1 + (ra_tti % 10) + (10 * info.f_id); rInfo("seq=%d, ra-rnti=0x%x, ra-tti=%d, f_id=%d\n", sel_preamble, ra_rnti, info.tti_ra, info.f_id); - srslte::console("Random Access Transmission: seq=%d, ra-rnti=0x%x\n", sel_preamble, ra_rnti); + srslte::console("Random Access Transmission: seq=%d, tti=%d, ra-rnti=0x%x\n", sel_preamble, info.tti_ra, ra_rnti); rar_window_st = ra_tti + 3; rntis->rar_rnti = ra_rnti; state = RESPONSE_RECEPTION;