Commit 58173538 authored by mir's avatar mir

Second thread pool for rx-tx bug removed

parent deebbd7f
...@@ -173,12 +173,6 @@ static void tx_func(void *param) ...@@ -173,12 +173,6 @@ static void tx_func(void *param)
/* this thread is done with the sched_info, decrease the reference counter */ /* this thread is done with the sched_info, decrease the reference counter */
LOG_D(NR_PHY, "Calling deref_sched_response for id %d (tx_func) in %d.%d\n", info->sched_response_id, frame_tx, slot_tx); LOG_D(NR_PHY, "Calling deref_sched_response for id %d (tx_func) in %d.%d\n", info->sched_response_id, frame_tx, slot_tx);
deref_sched_response(info->sched_response_id); deref_sched_response(info->sched_response_id);
//assert(info->elt->reponseFifo == &gNB->L1_tx_out);
if (info->elt->reponseFifo)
pushNotifiedFIFO(info->elt->reponseFifo, info->elt);
else
delNotifiedFIFO_elt(info->elt);
} }
...@@ -290,12 +284,6 @@ void rx_func(void *param) ...@@ -290,12 +284,6 @@ void rx_func(void *param)
stop_meas(&softmodem_stats_rxtx_sf); stop_meas(&softmodem_stats_rxtx_sf);
clock_gettime(CLOCK_MONOTONIC, &info->gNB->rt_L1_profiling.return_L1_RX[rt_prof_idx]); clock_gettime(CLOCK_MONOTONIC, &info->gNB->rt_L1_profiling.return_L1_RX[rt_prof_idx]);
//assert(info->elt->reponseFifo == &gNB->resp_L1);
if (info->elt->reponseFifo)
pushNotifiedFIFO(info->elt->reponseFifo, info->elt);
else
delNotifiedFIFO_elt(info->elt);
} }
static size_t dump_L1_meas_stats(PHY_VARS_gNB *gNB, RU_t *ru, char *output, size_t outputlen) { static size_t dump_L1_meas_stats(PHY_VARS_gNB *gNB, RU_t *ru, char *output, size_t outputlen) {
...@@ -383,9 +371,6 @@ void init_gNB_Tpool(int inst) { ...@@ -383,9 +371,6 @@ void init_gNB_Tpool(int inst) {
span_core_id_t out = {.cap = 128, .core_id = core_id, .sz = 0}; span_core_id_t out = {.cap = 128, .core_id = core_id, .sz = 0};
parse_num_threads(get_softmodem_params()->threadPoolConfig, &out); parse_num_threads(get_softmodem_params()->threadPoolConfig, &out);
init_task_manager(&gNB->man, out.core_id, out.sz); init_task_manager(&gNB->man, out.core_id, out.sz);
// 2nd tpool needed to avoid current cycle and deadlock
int lst_cores[] = {-1, -1};
init_task_manager(&gNB->man_rx_tx_ru, lst_cores, 2);
gNB_L1_proc_t *proc = &gNB->proc; gNB_L1_proc_t *proc = &gNB->proc;
// PUSCH symbols per thread need to be calculated by how many threads we have // PUSCH symbols per thread need to be calculated by how many threads we have
...@@ -433,7 +418,7 @@ void term_gNB_Tpool(int inst) { ...@@ -433,7 +418,7 @@ void term_gNB_Tpool(int inst) {
void (*clean)(task_t*) = NULL; void (*clean)(task_t*) = NULL;
free_task_manager(&gNB->man , clean); free_task_manager(&gNB->man , clean);
free_task_manager(&gNB->man_rx_tx_ru , clean);
gNB_L1_proc_t *proc = &gNB->proc; gNB_L1_proc_t *proc = &gNB->proc;
if (!get_softmodem_params()->emulate_l1) if (!get_softmodem_params()->emulate_l1)
......
...@@ -950,7 +950,7 @@ void *UE_thread(void *arg) ...@@ -950,7 +950,7 @@ void *UE_thread(void *arg)
// or the computed value is 0 = no offset to do // or the computed value is 0 = no offset to do
// we store it to apply the drift compensation at beginning of next frame // we store it to apply the drift compensation at beginning of next frame
shiftForNextFrame = ret; shiftForNextFrame = ret;
t = (task_t){.func = UE_dl_processing, .args = curMsgRx}; task_t t = {.func = UE_dl_processing, .args = curMsgRx};
async_task_manager(&(get_nrUE_params()->man), t); async_task_manager(&(get_nrUE_params()->man), t);
// Start TX slot processing here. It runs in parallel with RX slot processing // Start TX slot processing here. It runs in parallel with RX slot processing
......
...@@ -832,7 +832,6 @@ typedef struct processingData_L1tx { ...@@ -832,7 +832,6 @@ typedef struct processingData_L1tx {
int num_ul_pdcch; int num_ul_pdcch;
/* a reference to the sched_response, to release it when not needed anymore */ /* a reference to the sched_response, to release it when not needed anymore */
int sched_response_id; int sched_response_id;
notifiedFIFO_elt_t *elt;
} processingData_L1tx_t; } processingData_L1tx_t;
typedef struct processingData_L1rx { typedef struct processingData_L1rx {
......
...@@ -437,6 +437,7 @@ static int nr_ulsch_procedures(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx, int ...@@ -437,6 +437,7 @@ static int nr_ulsch_procedures(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx, int
* measurement per processed TB.*/ * measurement per processed TB.*/
if (gNB->max_nb_pusch == 1) if (gNB->max_nb_pusch == 1)
start_meas(&gNB->ulsch_decoding_stats); start_meas(&gNB->ulsch_decoding_stats);
int const nbDecode = nr_ulsch_decoding(gNB, ULSCH_id, gNB->pusch_vars[ULSCH_id].llr, frame_parms, pusch_pdu, frame_rx, slot_rx, harq_pid, G, t_info); int const nbDecode = nr_ulsch_decoding(gNB, ULSCH_id, gNB->pusch_vars[ULSCH_id].llr, frame_parms, pusch_pdu, frame_rx, slot_rx, harq_pid, G, t_info);
return nbDecode; return nbDecode;
} }
...@@ -712,10 +713,6 @@ int check_srs_pdu(const nfapi_nr_srs_pdu_t *srs_pdu, nfapi_nr_srs_pdu_t *saved_s ...@@ -712,10 +713,6 @@ int check_srs_pdu(const nfapi_nr_srs_pdu_t *srs_pdu, nfapi_nr_srs_pdu_t *saved_s
return 0; return 0;
} }
static int cnt = 0;
int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx)
{ {
/* those variables to log T_GNB_PHY_PUCCH_PUSCH_IQ only when we try to decode */ /* those variables to log T_GNB_PHY_PUCCH_PUSCH_IQ only when we try to decode */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment