From d1f7346c08dcd644fdff5642d01c31ae97bfd3d6 Mon Sep 17 00:00:00 2001
From: Eurecom <eurecom@lynx.eurecom.fr>
Date: Fri, 5 Jan 2018 17:02:49 +0100
Subject: [PATCH] bug fix for missing wait sync

---
 openair1/PHY/LTE_TRANSPORT/dlsch_coding.c   | 9 +++++++++
 openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c | 1 +
 openair1/SCHED/ru_procedures.c              | 3 ++-
 targets/RT/USER/lte-enb.c                   | 6 ++++++
 targets/RT/USER/lte-ru.c                    | 3 +++
 5 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c b/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
index 0a476c5ef5..f799f9341b 100644
--- a/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
+++ b/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
@@ -560,6 +560,9 @@ void *te_thread(void *param) {
 
   PHY_VARS_eNB *eNB              = ((te_params *)param)->eNB;
   eNB_proc_t *proc               = &eNB->proc;
+  
+  wait_sync("te_thread");
+  
   while (!oai_exit) {
 
     if (wait_on_condition(&proc->mutex_te[0],&proc->cond_te[0],&proc->instance_cnt_te[0],"te thread")<0) break;
@@ -597,6 +600,9 @@ void *te_thread1(void *param) {
 
   PHY_VARS_eNB *eNB              = ((te_params *)param)->eNB;
   eNB_proc_t *proc               = &eNB->proc;
+  
+  wait_sync("te_thread1");
+  
   while (!oai_exit) {
 
 
@@ -635,6 +641,9 @@ void *te_thread2(void *param) {
 
   PHY_VARS_eNB *eNB              = ((te_params *)param)->eNB;
   eNB_proc_t *proc               = &eNB->proc;
+  
+  wait_sync("te_thread2");
+  
   while (!oai_exit) {
 
 
diff --git a/openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c b/openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
index 55e44fa8bf..19c7f6aa54 100644
--- a/openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
+++ b/openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
@@ -420,6 +420,7 @@ void *td_thread(void *param) {
   thread_top_init("td_thread",1,200000,250000,500000);
   pthread_setname_np( pthread_self(),"td processing");
   LOG_I(PHY,"thread td created id=%ld\n", syscall(__NR_gettid));
+  wait_sync("td_thread");
 
   while (!oai_exit) {
 
diff --git a/openair1/SCHED/ru_procedures.c b/openair1/SCHED/ru_procedures.c
index 386cdc4153..2e460e7571 100644
--- a/openair1/SCHED/ru_procedures.c
+++ b/openair1/SCHED/ru_procedures.c
@@ -148,7 +148,7 @@ static void *feptx_thread(void *param) {
   LOG_I(PHY,"thread feptx created id=%ld\n", syscall(__NR_gettid));
   //CPU_SET(6, &cpuset);
   //pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset);
-
+  wait_sync("feptx_thread");
 
   
 
@@ -445,6 +445,7 @@ static void *fep_thread(void *param) {
   CPU_ZERO(&cpuset);
   //CPU_SET(2, &cpuset);
   //pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset);
+  wait_sync("fep_thread");
 
   while (!oai_exit) {
 
diff --git a/targets/RT/USER/lte-enb.c b/targets/RT/USER/lte-enb.c
index d8171ddcc4..64731c9d8d 100644
--- a/targets/RT/USER/lte-enb.c
+++ b/targets/RT/USER/lte-enb.c
@@ -207,6 +207,8 @@ static void* tx_thread(void* param) {
   sprintf(thread_name,"TXnp4_%d\n",&eNB->proc.proc_rxtx[0] == proc ? 0 : 1);
   thread_top_init(thread_name,1,470000,500000,500000);
   
+  wait_sync("tx_thread");
+  
   while (!oai_exit) {
 
     if (wait_on_condition(&proc->mutex_rxtx,&proc->cond_rxtx,&proc->instance_cnt_rxtx,thread_name)<0) break;
@@ -264,6 +266,8 @@ static void* eNB_thread_rxtx( void* param ) {
 
   //CPU_SET(3, &cpuset);
   //pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset);
+  
+  wait_sync("eNB_thread_rxtx");
 
   while (!oai_exit) {
     VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_eNB_PROC_RXTX0+(proc->subframe_rx&1), 0 );
@@ -625,6 +629,7 @@ static void* eNB_thread_prach( void* param ) {
 
   thread_top_init("eNB_thread_prach",1,500000,1000000,20000000);
 
+  wait_sync("eNB_thread_prach");
 
   while (!oai_exit) {
     
@@ -743,6 +748,7 @@ void init_eNB_proc(int inst) {
     proc_rxtx[1].instance_cnt_rxtx = -1;
     proc->instance_cnt_prach       = -1;
     proc->instance_cnt_asynch_rxtx = -1;
+    proc->instance_cnt_synch       = -1;
     proc->CC_id                    = CC_id;    
 
     proc->first_rx=1;
diff --git a/targets/RT/USER/lte-ru.c b/targets/RT/USER/lte-ru.c
index 7e24049ad6..e196584e25 100644
--- a/targets/RT/USER/lte-ru.c
+++ b/targets/RT/USER/lte-ru.c
@@ -987,6 +987,7 @@ static void* ru_thread_prach( void* param ) {
   ru_thread_prach_status = 0;
 
   thread_top_init("ru_thread_prach",1,500000,1000000,20000000);
+  wait_sync("ru_thread_prach");
 
   while (!oai_exit) {
     
@@ -1026,6 +1027,7 @@ static void* ru_thread_prach_br( void* param ) {
   ru_thread_prach_status = 0;
 
   thread_top_init("ru_thread_prach_br",1,500000,1000000,20000000);
+  wait_sync(ru_thread_prach_br);
 
   while (!oai_exit) {
     
@@ -1413,6 +1415,7 @@ static void* ru_thread_tx( void* param ) {
 
   //CPU_SET(5, &cpuset);
   //pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset);
+  wait_sync("ru_thread_tx");
 
   wait_on_condition(&proc->mutex_FH1,&proc->cond_FH1,&proc->instance_cnt_FH1,"ru_thread_tx");
 
-- 
GitLab