Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
canghaiwuhen
OpenXG-RAN
Commits
d174e15a
Commit
d174e15a
authored
Nov 27, 2017
by
Wang Tsu-Han
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Measure timing wait for FEP and FEPTX
parent
22911600
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
44 additions
and
12 deletions
+44
-12
openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
+12
-12
openair1/PHY/defs.h
openair1/PHY/defs.h
+8
-0
openair1/SCHED/ru_procedures.c
openair1/SCHED/ru_procedures.c
+24
-0
No files found.
openair1/PHY/LTE_TRANSPORT/dlsch_coding.c
View file @
d174e15a
...
@@ -470,7 +470,7 @@ void *te_thread(void *param) {
...
@@ -470,7 +470,7 @@ void *te_thread(void *param) {
if
(
wait_on_condition
(
&
proc
->
mutex_te
[
0
],
&
proc
->
cond_te
[
0
],
&
proc
->
instance_cnt_te
[
0
],
"te thread"
)
<
0
)
break
;
if
(
wait_on_condition
(
&
proc
->
mutex_te
[
0
],
&
proc
->
cond_te
[
0
],
&
proc
->
instance_cnt_te
[
0
],
"te thread"
)
<
0
)
break
;
stop_meas
(
te_wakeup_stats0
);
//
stop_meas(te_wakeup_stats0);
dlsch_encoding_2threads0
((
te_params
*
)
param
);
dlsch_encoding_2threads0
((
te_params
*
)
param
);
...
@@ -481,10 +481,10 @@ void *te_thread(void *param) {
...
@@ -481,10 +481,10 @@ void *te_thread(void *param) {
exit_fun
(
"ERROR pthread_cond_signal"
);
exit_fun
(
"ERROR pthread_cond_signal"
);
return
(
NULL
);
return
(
NULL
);
}
}
if
(
opp_enabled
==
1
&&
te_wakeup_stats0
->
diff_now
>
50
*
3000
){
/*
if(opp_enabled == 1 && te_wakeup_stats0->diff_now>50*3000){
print_meas_now(te_wakeup_stats0,"coding_wakeup",stderr);
print_meas_now(te_wakeup_stats0,"coding_wakeup",stderr);
printf
(
"frame_rx: %d subframe_rx: %d
\n
"
,
proc
->
frame_rx
,
proc
->
subframe_rx
);
printf("
te_thread0 delay for waking up in
frame_rx: %d subframe_rx: %d \n",proc->frame_rx,proc->subframe_rx);
}
}
*/
}
}
return
(
NULL
);
return
(
NULL
);
...
@@ -509,7 +509,7 @@ void *te_thread1(void *param) {
...
@@ -509,7 +509,7 @@ void *te_thread1(void *param) {
if
(
wait_on_condition
(
&
proc
->
mutex_te
[
1
],
&
proc
->
cond_te
[
1
],
&
proc
->
instance_cnt_te
[
1
],
"te thread 1"
)
<
0
)
break
;
if
(
wait_on_condition
(
&
proc
->
mutex_te
[
1
],
&
proc
->
cond_te
[
1
],
&
proc
->
instance_cnt_te
[
1
],
"te thread 1"
)
<
0
)
break
;
stop_meas
(
te_wakeup_stats1
);
//
stop_meas(te_wakeup_stats1);
dlsch_encoding_2threads1
((
te_params
*
)
param
);
dlsch_encoding_2threads1
((
te_params
*
)
param
);
...
@@ -520,10 +520,10 @@ void *te_thread1(void *param) {
...
@@ -520,10 +520,10 @@ void *te_thread1(void *param) {
exit_fun
(
"ERROR pthread_cond_signal"
);
exit_fun
(
"ERROR pthread_cond_signal"
);
return
(
NULL
);
return
(
NULL
);
}
}
if
(
opp_enabled
==
1
&&
te_wakeup_stats1
->
diff_now
>
50
*
3000
){
/*
if(opp_enabled == 1 && te_wakeup_stats1->diff_now>50*3000){
print_meas_now(te_wakeup_stats1,"coding_wakeup",stderr);
print_meas_now(te_wakeup_stats1,"coding_wakeup",stderr);
printf
(
"delay for waking up in frame_rx: %d subframe_rx: %d
\n
"
,
proc
->
frame_rx
,
proc
->
subframe_rx
);
printf("
te_thread1
delay for waking up in frame_rx: %d subframe_rx: %d \n",proc->frame_rx,proc->subframe_rx);
}
}
*/
}
}
return
(
NULL
);
return
(
NULL
);
...
@@ -607,7 +607,7 @@ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB,
...
@@ -607,7 +607,7 @@ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB,
exit_fun
(
"ERROR pthread_cond_signal"
);
exit_fun
(
"ERROR pthread_cond_signal"
);
return
(
-
1
);
return
(
-
1
);
}
}
start_meas
(
te_wakeup_stats0
);
//
start_meas(te_wakeup_stats0);
pthread_mutex_unlock
(
&
proc
->
mutex_te
[
0
]
);
pthread_mutex_unlock
(
&
proc
->
mutex_te
[
0
]
);
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
...
@@ -631,7 +631,7 @@ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB,
...
@@ -631,7 +631,7 @@ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB,
exit_fun
(
"ERROR pthread_cond_signal"
);
exit_fun
(
"ERROR pthread_cond_signal"
);
return
(
-
1
);
return
(
-
1
);
}
}
start_meas
(
te_wakeup_stats1
);
//
start_meas(te_wakeup_stats1);
pthread_mutex_unlock
(
&
proc
->
mutex_te
[
1
]
);
pthread_mutex_unlock
(
&
proc
->
mutex_te
[
1
]
);
...
@@ -743,9 +743,9 @@ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB,
...
@@ -743,9 +743,9 @@ int dlsch_encoding_2threads(PHY_VARS_eNB *eNB,
wait_on_busy_condition
(
&
proc
->
mutex_te
[
0
],
&
proc
->
cond_te
[
0
],
&
proc
->
instance_cnt_te
[
0
],
"te thread"
);
wait_on_busy_condition
(
&
proc
->
mutex_te
[
0
],
&
proc
->
cond_te
[
0
],
&
proc
->
instance_cnt_te
[
0
],
"te thread"
);
wait_on_busy_condition
(
&
proc
->
mutex_te
[
1
],
&
proc
->
cond_te
[
1
],
&
proc
->
instance_cnt_te
[
1
],
"te thread1"
);
wait_on_busy_condition
(
&
proc
->
mutex_te
[
1
],
&
proc
->
cond_te
[
1
],
&
proc
->
instance_cnt_te
[
1
],
"te thread1"
);
stop_meas
(
te_wait_stats
);
stop_meas
(
te_wait_stats
);
if
(
opp_enabled
==
1
&&
te_wait_stats
->
diff_now
>
5
0
*
3000
){
if
(
opp_enabled
==
1
&&
te_wait_stats
->
diff_now
>
10
0
*
3000
){
print_meas_now
(
te_wait_stats
,
"coding_wait"
,
stderr
);
print_meas_now
(
te_wait_stats
,
"coding_wait"
,
stderr
);
printf
(
"delay in wait on codition in frame_rx: %d
subframe_rx: %d
\n
"
,
proc
->
frame_rx
,
proc
->
sub
frame_rx
);
printf
(
"delay in wait on codition in frame_rx: %d
\n
"
,
proc
->
frame_rx
);
}
}
...
...
openair1/PHY/defs.h
View file @
d174e15a
...
@@ -773,6 +773,14 @@ typedef struct RU_t_s{
...
@@ -773,6 +773,14 @@ typedef struct RU_t_s{
time_stats_t
ofdm_demod_stats
;
time_stats_t
ofdm_demod_stats
;
/// Timing statistics (TX)
/// Timing statistics (TX)
time_stats_t
ofdm_mod_stats
;
time_stats_t
ofdm_mod_stats
;
/// Timing wait statistics
time_stats_t
ofdm_demod_wait_stats
;
/// Timing wakeup statistics
time_stats_t
ofdm_demod_wakeup_stats
;
/// Timing wait statistics (TX)
time_stats_t
ofdm_mod_wait_stats
;
/// Timing wakeup statistics (TX)
time_stats_t
ofdm_mod_wakeup_stats
;
/// RX and TX buffers for precoder output
/// RX and TX buffers for precoder output
RU_COMMON
common
;
RU_COMMON
common
;
/// beamforming weight vectors per eNB
/// beamforming weight vectors per eNB
...
...
openair1/SCHED/ru_procedures.c
View file @
d174e15a
...
@@ -152,6 +152,7 @@ static void *feptx_thread(void *param) {
...
@@ -152,6 +152,7 @@ static void *feptx_thread(void *param) {
while
(
!
oai_exit
)
{
while
(
!
oai_exit
)
{
if
(
wait_on_condition
(
&
proc
->
mutex_feptx
,
&
proc
->
cond_feptx
,
&
proc
->
instance_cnt_feptx
,
"feptx thread"
)
<
0
)
break
;
if
(
wait_on_condition
(
&
proc
->
mutex_feptx
,
&
proc
->
cond_feptx
,
&
proc
->
instance_cnt_feptx
,
"feptx thread"
)
<
0
)
break
;
//stop_meas(&ru->ofdm_mod_wakeup_stats);
feptx0
(
ru
,
1
);
feptx0
(
ru
,
1
);
if
(
release_thread
(
&
proc
->
mutex_feptx
,
&
proc
->
instance_cnt_feptx
,
"feptx thread"
)
<
0
)
break
;
if
(
release_thread
(
&
proc
->
mutex_feptx
,
&
proc
->
instance_cnt_feptx
,
"feptx thread"
)
<
0
)
break
;
...
@@ -160,6 +161,10 @@ static void *feptx_thread(void *param) {
...
@@ -160,6 +161,10 @@ static void *feptx_thread(void *param) {
exit_fun
(
"ERROR pthread_cond_signal"
);
exit_fun
(
"ERROR pthread_cond_signal"
);
return
NULL
;
return
NULL
;
}
}
/*if(opp_enabled == 1 && ru->ofdm_mod_wakeup_stats.diff_now>30*3000){
print_meas_now(&ru->ofdm_mod_wakeup_stats,"fep wakeup",stderr);
printf("delay in fep wakeup in frame_tx: %d subframe_rx: %d \n",proc->frame_tx,proc->subframe_tx);
}*/
}
}
...
@@ -204,13 +209,20 @@ void feptx_ofdm_2thread(RU_t *ru) {
...
@@ -204,13 +209,20 @@ void feptx_ofdm_2thread(RU_t *ru) {
exit_fun
(
"ERROR pthread_cond_signal"
);
exit_fun
(
"ERROR pthread_cond_signal"
);
return
;
return
;
}
}
//start_meas(&ru->ofdm_mod_wakeup_stats);
pthread_mutex_unlock
(
&
proc
->
mutex_feptx
);
pthread_mutex_unlock
(
&
proc
->
mutex_feptx
);
}
}
// call first slot in this thread
// call first slot in this thread
feptx0
(
ru
,
0
);
feptx0
(
ru
,
0
);
start_meas
(
&
ru
->
ofdm_mod_wait_stats
);
wait_on_busy_condition
(
&
proc
->
mutex_feptx
,
&
proc
->
cond_feptx
,
&
proc
->
instance_cnt_feptx
,
"feptx thread"
);
wait_on_busy_condition
(
&
proc
->
mutex_feptx
,
&
proc
->
cond_feptx
,
&
proc
->
instance_cnt_feptx
,
"feptx thread"
);
stop_meas
(
&
ru
->
ofdm_mod_wait_stats
);
if
(
opp_enabled
==
1
&&
ru
->
ofdm_mod_wait_stats
.
diff_now
>
30
*
3000
){
print_meas_now
(
&
ru
->
ofdm_mod_wait_stats
,
"fep wakeup"
,
stderr
);
printf
(
"delay in feptx wait on codition in frame_rx: %d subframe_rx: %d
\n
"
,
proc
->
frame_tx
,
proc
->
subframe_tx
);
}
stop_meas
(
&
ru
->
ofdm_mod_stats
);
stop_meas
(
&
ru
->
ofdm_mod_stats
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_OFDM
,
0
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_OFDM
,
0
);
...
@@ -432,6 +444,7 @@ static void *fep_thread(void *param) {
...
@@ -432,6 +444,7 @@ static void *fep_thread(void *param) {
while
(
!
oai_exit
)
{
while
(
!
oai_exit
)
{
if
(
wait_on_condition
(
&
proc
->
mutex_fep
,
&
proc
->
cond_fep
,
&
proc
->
instance_cnt_fep
,
"fep thread"
)
<
0
)
break
;
if
(
wait_on_condition
(
&
proc
->
mutex_fep
,
&
proc
->
cond_fep
,
&
proc
->
instance_cnt_fep
,
"fep thread"
)
<
0
)
break
;
//stop_meas(&ru->ofdm_demod_wakeup_stats);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPRX1
,
1
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPRX1
,
1
);
fep0
(
ru
,
0
);
fep0
(
ru
,
0
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPRX1
,
0
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPRX1
,
0
);
...
@@ -442,6 +455,10 @@ static void *fep_thread(void *param) {
...
@@ -442,6 +455,10 @@ static void *fep_thread(void *param) {
exit_fun
(
"ERROR pthread_cond_signal"
);
exit_fun
(
"ERROR pthread_cond_signal"
);
return
NULL
;
return
NULL
;
}
}
/*if(opp_enabled == 1 && ru->ofdm_demod_wakeup_stats.diff_now>30*3000){
print_meas_now(&ru->ofdm_demod_wakeup_stats,"fep wakeup",stderr);
printf("delay in fep wakeup in frame_rx: %d subframe_rx: %d \n",proc->frame_rx,proc->subframe_rx);
}*/
}
}
...
@@ -509,13 +526,20 @@ void ru_fep_full_2thread(RU_t *ru) {
...
@@ -509,13 +526,20 @@ void ru_fep_full_2thread(RU_t *ru) {
exit_fun
(
"ERROR pthread_cond_signal"
);
exit_fun
(
"ERROR pthread_cond_signal"
);
return
;
return
;
}
}
//start_meas(&ru->ofdm_demod_wakeup_stats);
pthread_mutex_unlock
(
&
proc
->
mutex_fep
);
pthread_mutex_unlock
(
&
proc
->
mutex_fep
);
// call second slot in this symbol
// call second slot in this symbol
fep0
(
ru
,
1
);
fep0
(
ru
,
1
);
start_meas
(
&
ru
->
ofdm_demod_wait_stats
);
wait_on_busy_condition
(
&
proc
->
mutex_fep
,
&
proc
->
cond_fep
,
&
proc
->
instance_cnt_fep
,
"fep thread"
);
wait_on_busy_condition
(
&
proc
->
mutex_fep
,
&
proc
->
cond_fep
,
&
proc
->
instance_cnt_fep
,
"fep thread"
);
stop_meas
(
&
ru
->
ofdm_demod_wait_stats
);
if
(
opp_enabled
==
1
&&
ru
->
ofdm_demod_wakeup_stats
.
diff_now
>
30
*
3000
){
print_meas_now
(
&
ru
->
ofdm_demod_wakeup_stats
,
"fep wakeup"
,
stderr
);
printf
(
"delay in fep wait on codition in frame_rx: %d subframe_rx: %d
\n
"
,
proc
->
frame_rx
,
proc
->
subframe_rx
);
}
stop_meas
(
&
ru
->
ofdm_demod_stats
);
stop_meas
(
&
ru
->
ofdm_demod_stats
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPRX
,
0
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPRX
,
0
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment