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
Michael Black
OpenXG-RAN
Commits
12801c59
Commit
12801c59
authored
Aug 07, 2016
by
Raymond Knopp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
switch for parallel FEP on ulsim. Deactivated for real-time operation.
parent
5b9f4714
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
13 additions
and
17 deletions
+13
-17
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+4
-7
openair1/SIMULATION/LTE_PHY/dlsim.c
openair1/SIMULATION/LTE_PHY/dlsim.c
+1
-1
openair1/SIMULATION/LTE_PHY/ulsim.c
openair1/SIMULATION/LTE_PHY/ulsim.c
+4
-6
openair1/SIMULATION/LTE_PHY/unitary_defs.h
openair1/SIMULATION/LTE_PHY/unitary_defs.h
+1
-0
targets/RT/USER/lte-enb.c
targets/RT/USER/lte-enb.c
+3
-3
No files found.
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
12801c59
...
@@ -2568,9 +2568,7 @@ static void *fep_thread(void *param) {
...
@@ -2568,9 +2568,7 @@ static void *fep_thread(void *param) {
PHY_VARS_eNB
*
eNB
=
(
PHY_VARS_eNB
*
)
param
;
PHY_VARS_eNB
*
eNB
=
(
PHY_VARS_eNB
*
)
param
;
eNB_proc_t
*
proc
=
&
eNB
->
proc
;
eNB_proc_t
*
proc
=
&
eNB
->
proc
;
while
(
!
oai_exit
)
{
while
(
!
oai_exit
)
{
printf
(
"Waiting for parallel FEP signal
\n
"
);
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
;
printf
(
"Running parallel FEP on first slot
\n
"
);
fep0
(
eNB
,
0
);
fep0
(
eNB
,
0
);
if
(
release_thread
(
&
proc
->
mutex_fep
,
&
proc
->
instance_cnt_fep
,
"fep thread"
)
<
0
)
break
;
if
(
release_thread
(
&
proc
->
mutex_fep
,
&
proc
->
instance_cnt_fep
,
"fep thread"
)
<
0
)
break
;
}
}
...
@@ -2601,8 +2599,6 @@ void eNB_fep_full_2thread(PHY_VARS_eNB *eNB) {
...
@@ -2601,8 +2599,6 @@ void eNB_fep_full_2thread(PHY_VARS_eNB *eNB) {
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_SLOT_FEP
,
1
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_SLOT_FEP
,
1
);
start_meas
(
&
eNB
->
ofdm_demod_stats
);
start_meas
(
&
eNB
->
ofdm_demod_stats
);
printf
(
"Running 2 thread FEP
\n
"
);
if
(
pthread_mutex_timedlock
(
&
proc
->
mutex_fep
,
&
wait
)
!=
0
)
{
if
(
pthread_mutex_timedlock
(
&
proc
->
mutex_fep
,
&
wait
)
!=
0
)
{
printf
(
"[eNB] ERROR pthread_mutex_lock for fep thread %d (IC %d)
\n
"
,
proc
->
instance_cnt_fep
);
printf
(
"[eNB] ERROR pthread_mutex_lock for fep thread %d (IC %d)
\n
"
,
proc
->
instance_cnt_fep
);
exit_fun
(
"error locking mutex_fep"
);
exit_fun
(
"error locking mutex_fep"
);
...
@@ -2618,7 +2614,7 @@ void eNB_fep_full_2thread(PHY_VARS_eNB *eNB) {
...
@@ -2618,7 +2614,7 @@ void eNB_fep_full_2thread(PHY_VARS_eNB *eNB) {
++
proc
->
instance_cnt_fep
;
++
proc
->
instance_cnt_fep
;
printf
(
"[eNB] waking up FEP thread
\n
"
);
if
(
pthread_cond_signal
(
&
proc
->
cond_fep
)
!=
0
)
{
if
(
pthread_cond_signal
(
&
proc
->
cond_fep
)
!=
0
)
{
printf
(
"[eNB] ERROR pthread_cond_signal for fep thread
\n
"
);
printf
(
"[eNB] ERROR pthread_cond_signal for fep thread
\n
"
);
exit_fun
(
"ERROR pthread_cond_signal"
);
exit_fun
(
"ERROR pthread_cond_signal"
);
...
@@ -2628,7 +2624,6 @@ void eNB_fep_full_2thread(PHY_VARS_eNB *eNB) {
...
@@ -2628,7 +2624,6 @@ void eNB_fep_full_2thread(PHY_VARS_eNB *eNB) {
pthread_mutex_unlock
(
&
proc
->
mutex_fep
);
pthread_mutex_unlock
(
&
proc
->
mutex_fep
);
// call second slot in this symbol
// call second slot in this symbol
printf
(
"Calling FEP for 2nd slot
\n
"
);
fep0
(
eNB
,
1
);
fep0
(
eNB
,
1
);
if
(
pthread_mutex_timedlock
(
&
proc
->
mutex_fep
,
&
wait
)
!=
0
)
{
if
(
pthread_mutex_timedlock
(
&
proc
->
mutex_fep
,
&
wait
)
!=
0
)
{
...
@@ -2643,10 +2638,12 @@ void eNB_fep_full_2thread(PHY_VARS_eNB *eNB) {
...
@@ -2643,10 +2638,12 @@ void eNB_fep_full_2thread(PHY_VARS_eNB *eNB) {
};
};
pthread_mutex_unlock
(
&
proc
->
mutex_fep
);
pthread_mutex_unlock
(
&
proc
->
mutex_fep
);
if
(
wait_cnt
>
10000
)
{
if
(
wait_cnt
>
10000
00
)
{
printf
(
"[eNB] parallel FEP didn't finish
\n
"
);
printf
(
"[eNB] parallel FEP didn't finish
\n
"
);
exit_fun
(
"error"
);
exit_fun
(
"error"
);
}
}
stop_meas
(
&
eNB
->
ofdm_demod_stats
);
}
}
void
eNB_fep_full
(
PHY_VARS_eNB
*
eNB
)
{
void
eNB_fep_full
(
PHY_VARS_eNB
*
eNB
)
{
...
...
openair1/SIMULATION/LTE_PHY/dlsim.c
View file @
12801c59
...
@@ -13,7 +13,7 @@
...
@@ -13,7 +13,7 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
You should ha
e
ve received a copy of the GNU General Public License
along with OpenAirInterface.The full GNU General Public License is
along with OpenAirInterface.The full GNU General Public License is
included in this distribution in the file called "COPYING". If not,
included in this distribution in the file called "COPYING". If not,
see <http://www.gnu.org/licenses/>.
see <http://www.gnu.org/licenses/>.
...
...
openair1/SIMULATION/LTE_PHY/ulsim.c
View file @
12801c59
...
@@ -85,8 +85,6 @@ double t_rx_min = 1000000000; /*!< \brief initial min process time for tx */
...
@@ -85,8 +85,6 @@ double t_rx_min = 1000000000; /*!< \brief initial min process time for tx */
int
n_tx_dropped
=
0
;
/*!< \brief initial max process time for tx */
int
n_tx_dropped
=
0
;
/*!< \brief initial max process time for tx */
int
n_rx_dropped
=
0
;
/*!< \brief initial max process time for rx */
int
n_rx_dropped
=
0
;
/*!< \brief initial max process time for rx */
int
oai_exit
=
0
;
void
fill_ulsch_dci
(
PHY_VARS_eNB
*
eNB
,
void
*
UL_dci
,
int
first_rb
,
int
nb_rb
,
int
mcs
,
int
ndi
,
int
cqi_flag
)
{
void
fill_ulsch_dci
(
PHY_VARS_eNB
*
eNB
,
void
*
UL_dci
,
int
first_rb
,
int
nb_rb
,
int
mcs
,
int
ndi
,
int
cqi_flag
)
{
...
@@ -276,7 +274,7 @@ int main(int argc, char **argv)
...
@@ -276,7 +274,7 @@ int main(int argc, char **argv)
char
channel_model_input
[
10
];
char
channel_model_input
[
10
];
uint8_t
max_turbo_iterations
=
4
;
uint8_t
max_turbo_iterations
=
4
;
uint8_t
llr8
_flag
=
0
;
uint8_t
parallel
_flag
=
0
;
int
nb_rb_set
=
0
;
int
nb_rb_set
=
0
;
int
threequarter_fs
=
0
;
int
threequarter_fs
=
0
;
...
@@ -534,7 +532,7 @@ int main(int argc, char **argv)
...
@@ -534,7 +532,7 @@ int main(int argc, char **argv)
break
;
break
;
case
'L'
:
case
'L'
:
llr8
_flag
=
1
;
parallel
_flag
=
1
;
break
;
break
;
case
'I'
:
case
'I'
:
...
@@ -691,7 +689,7 @@ int main(int argc, char **argv)
...
@@ -691,7 +689,7 @@ int main(int argc, char **argv)
eNB
->
ulsch
[
0
]
=
new_eNB_ulsch
(
max_turbo_iterations
,
N_RB_DL
,
0
);
eNB
->
ulsch
[
0
]
=
new_eNB_ulsch
(
max_turbo_iterations
,
N_RB_DL
,
0
);
UE
->
ulsch
[
0
]
=
new_ue_ulsch
(
N_RB_DL
,
0
);
UE
->
ulsch
[
0
]
=
new_ue_ulsch
(
N_RB_DL
,
0
);
init_fep_thread
(
eNB
,
&
eNB
->
proc
.
attr_fep
);
i
f
(
parallel_flag
==
1
)
i
nit_fep_thread
(
eNB
,
&
eNB
->
proc
.
attr_fep
);
// Create transport channel structures for 2 transport blocks (MIMO)
// Create transport channel structures for 2 transport blocks (MIMO)
for
(
i
=
0
;
i
<
2
;
i
++
)
{
for
(
i
=
0
;
i
<
2
;
i
++
)
{
...
@@ -1186,7 +1184,7 @@ int main(int argc, char **argv)
...
@@ -1186,7 +1184,7 @@ int main(int argc, char **argv)
}
}
eNB
->
fep
=
eNB_fep_full_2thread
;
eNB
->
fep
=
(
parallel_flag
==
1
)
?
eNB_fep_full_2thread
:
eNB_fep_full
;
eNB
->
do_prach
=
NULL
;
eNB
->
do_prach
=
NULL
;
phy_procedures_eNB_common_RX
(
eNB
);
phy_procedures_eNB_common_RX
(
eNB
);
...
...
openair1/SIMULATION/LTE_PHY/unitary_defs.h
View file @
12801c59
openair0_device
openair0
;
openair0_device
openair0
;
int
oai_exit
=
0
;
void
exit_fun
(
const
char
*
s
)
{
exit
(
-
1
);
}
void
exit_fun
(
const
char
*
s
)
{
exit
(
-
1
);
}
...
...
targets/RT/USER/lte-enb.c
View file @
12801c59
...
@@ -1634,7 +1634,7 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
...
@@ -1634,7 +1634,7 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
break
;
break
;
case
NGFI_RRU_IF4p5
:
case
NGFI_RRU_IF4p5
:
eNB
->
do_prach
=
do_prach
;
eNB
->
do_prach
=
do_prach
;
eNB
->
fep
=
(
eNB
->
single_thread_flag
==
0
)
?
NB_fep_full
:
eNB_fep_full_2thread
;
eNB
->
fep
=
eNB_fep_full
;
eNB
->
proc_uespec_rx
=
NULL
;
eNB
->
proc_uespec_rx
=
NULL
;
eNB
->
proc_tx
=
NULL
;
//proc_tx_rru_if4p5;
eNB
->
proc_tx
=
NULL
;
//proc_tx_rru_if4p5;
eNB
->
tx_fh
=
NULL
;
eNB
->
tx_fh
=
NULL
;
...
@@ -1661,7 +1661,7 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
...
@@ -1661,7 +1661,7 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
break
;
break
;
case
eNodeB_3GPP
:
case
eNodeB_3GPP
:
eNB
->
do_prach
=
do_prach
;
eNB
->
do_prach
=
do_prach
;
eNB
->
fep
=
(
eNB
->
single_thread_flag
==
0
)
?
NB_fep_full
:
eNB_fep_full_2thread
;
eNB
->
fep
=
eNB_fep_full
;
eNB
->
proc_uespec_rx
=
phy_procedures_eNB_uespec_RX
;
eNB
->
proc_uespec_rx
=
phy_procedures_eNB_uespec_RX
;
eNB
->
proc_tx
=
proc_tx_full
;
eNB
->
proc_tx
=
proc_tx_full
;
eNB
->
tx_fh
=
NULL
;
eNB
->
tx_fh
=
NULL
;
...
@@ -1679,7 +1679,7 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
...
@@ -1679,7 +1679,7 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
break
;
break
;
case
eNodeB_3GPP_BBU
:
case
eNodeB_3GPP_BBU
:
eNB
->
do_prach
=
do_prach
;
eNB
->
do_prach
=
do_prach
;
eNB
->
fep
=
(
eNB
->
single_thread_flag
==
0
)
?
NB_fep_full
:
eNB_fep_full_2thread
;
eNB
->
fep
=
eNB_fep_full
;
eNB
->
proc_uespec_rx
=
phy_procedures_eNB_uespec_RX
;
eNB
->
proc_uespec_rx
=
phy_procedures_eNB_uespec_RX
;
eNB
->
proc_tx
=
proc_tx_full
;
eNB
->
proc_tx
=
proc_tx_full
;
eNB
->
tx_fh
=
tx_fh_if5
;
eNB
->
tx_fh
=
tx_fh_if5
;
...
...
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