Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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 UE
Commits
6d6546dd
Commit
6d6546dd
authored
Aug 05, 2016
by
Raymond Knopp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
single-thread.
parent
d021be70
Changes
4
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
190 additions
and
106 deletions
+190
-106
openair1/PHY/defs.h
openair1/PHY/defs.h
+7
-0
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+13
-15
targets/RT/USER/lte-enb.c
targets/RT/USER/lte-enb.c
+159
-86
targets/RT/USER/lte-softmodem.c
targets/RT/USER/lte-softmodem.c
+11
-5
No files found.
openair1/PHY/defs.h
View file @
6d6546dd
...
@@ -256,6 +256,8 @@ typedef struct eNB_proc_t_s {
...
@@ -256,6 +256,8 @@ typedef struct eNB_proc_t_s {
int
instance_cnt_asynch_rxtx
;
int
instance_cnt_asynch_rxtx
;
/// pthread structure for FH processing thread
/// pthread structure for FH processing thread
pthread_t
pthread_FH
;
pthread_t
pthread_FH
;
/// pthread structure for eNB single processing thread
pthread_t
pthread_single
;
/// pthread structure for asychronous RX/TX processing thread
/// pthread structure for asychronous RX/TX processing thread
pthread_t
pthread_asynch_rxtx
;
pthread_t
pthread_asynch_rxtx
;
/// flag to indicate first RX acquisition
/// flag to indicate first RX acquisition
...
@@ -264,12 +266,16 @@ typedef struct eNB_proc_t_s {
...
@@ -264,12 +266,16 @@ typedef struct eNB_proc_t_s {
int
first_tx
;
int
first_tx
;
/// pthread attributes for FH processing thread
/// pthread attributes for FH processing thread
pthread_attr_t
attr_FH
;
pthread_attr_t
attr_FH
;
/// pthread attributes for single eNB processing thread
pthread_attr_t
attr_single
;
/// pthread attributes for prach processing thread
/// pthread attributes for prach processing thread
pthread_attr_t
attr_prach
;
pthread_attr_t
attr_prach
;
/// pthread attributes for asynchronous RX thread
/// pthread attributes for asynchronous RX thread
pthread_attr_t
attr_asynch_rxtx
;
pthread_attr_t
attr_asynch_rxtx
;
/// scheduling parameters for FH thread
/// scheduling parameters for FH thread
struct
sched_param
sched_param_FH
;
struct
sched_param
sched_param_FH
;
/// scheduling parameters for single eNB thread
struct
sched_param
sched_param_single
;
/// scheduling parameters for prach thread
/// scheduling parameters for prach thread
struct
sched_param
sched_param_prach
;
struct
sched_param
sched_param_prach
;
/// scheduling parameters for asynch_rxtx thread
/// scheduling parameters for asynch_rxtx thread
...
@@ -363,6 +369,7 @@ typedef struct PHY_VARS_eNB_s {
...
@@ -363,6 +369,7 @@ typedef struct PHY_VARS_eNB_s {
eNB_proc_t
proc
;
eNB_proc_t
proc
;
eNB_func_t
node_function
;
eNB_func_t
node_function
;
eNB_timing_t
node_timing
;
eNB_timing_t
node_timing
;
int
single_thread_flag
;
openair0_rf_map
rf_map
;
openair0_rf_map
rf_map
;
int
abstraction_flag
;
int
abstraction_flag
;
void
(
*
do_prach
)(
struct
PHY_VARS_eNB_s
*
eNB
);
void
(
*
do_prach
)(
struct
PHY_VARS_eNB_s
*
eNB
);
...
...
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
6d6546dd
...
@@ -2583,30 +2583,27 @@ void do_prach(PHY_VARS_eNB *eNB) {
...
@@ -2583,30 +2583,27 @@ void do_prach(PHY_VARS_eNB *eNB) {
void
phy_procedures_eNB_common_RX
(
PHY_VARS_eNB
*
eNB
){
void
phy_procedures_eNB_common_RX
(
PHY_VARS_eNB
*
eNB
){
eNB_proc_t
*
proc
=
&
eNB
->
proc
;
eNB_proc_t
*
proc
=
&
eNB
->
proc
;
LTE_DL_FRAME_PARMS
*
fp
=&
eNB
->
frame_parms
;
LTE_DL_FRAME_PARMS
*
fp
=
&
eNB
->
frame_parms
;
const
int
subframe
=
proc
->
subframe_rx
;
const
int
subframe
=
proc
->
subframe_rx
;
const
int
frame
=
proc
->
frame_rx
;
const
int
frame
=
proc
->
frame_rx
;
int
offset
=
(
proc
==
&
eNB
->
proc
.
proc_rxtx
[
0
])
?
0
:
1
;
if
((
fp
->
frame_type
==
TDD
)
&&
(
subframe_select
(
fp
,
subframe
)
!=
SF_UL
))
return
;
if
((
fp
->
frame_type
==
TDD
)
&&
(
subframe_select
(
fp
,
subframe
)
!=
SF_UL
))
return
;
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_COMMON
+
(
subframe
&
1
),
1
);
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_RX0_ENB
+
offset
,
proc
->
frame_rx
);
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_RX0_ENB
+
offset
,
proc
->
subframe_rx
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_COMMON
+
offset
,
1
);
start_meas
(
&
eNB
->
phy_proc_rx
);
start_meas
(
&
eNB
->
phy_proc_rx
);
LOG_D
(
PHY
,
"[eNB %d] Frame %d: Doing phy_procedures_eNB_common_RX(%d)
\n
"
,
eNB
->
Mod_id
,
frame
,
subframe
);
LOG_D
(
PHY
,
"[eNB %d] Frame %d: Doing phy_procedures_eNB_common_RX(%d)
\n
"
,
eNB
->
Mod_id
,
frame
,
subframe
);
if
(
eNB
->
fep
)
eNB
->
fep
(
eNB
);
if
(
eNB
->
fep
)
eNB
->
fep
(
eNB
);
if
(
eNB
->
do_prach
)
eNB
->
do_prach
(
eNB
);
if
(
eNB
->
do_prach
)
eNB
->
do_prach
(
eNB
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_COMMON
+
offset
,
0
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_COMMON
+
(
subframe
&
1
),
0
);
}
}
...
@@ -2623,11 +2620,12 @@ void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,const
...
@@ -2623,11 +2620,12 @@ void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,const
LTE_DL_FRAME_PARMS
*
fp
=&
eNB
->
frame_parms
;
LTE_DL_FRAME_PARMS
*
fp
=&
eNB
->
frame_parms
;
const
int
subframe
=
proc
->
subframe_rx
;
const
int
subframe
=
proc
->
subframe_rx
;
const
int
frame
=
proc
->
frame_rx
;
const
int
frame
=
proc
->
frame_rx
;
int
offset
=
(
proc
==
&
eNB
->
proc
.
proc_rxtx
[
0
])
?
0
:
1
;
if
((
fp
->
frame_type
==
TDD
)
&&
(
subframe_select
(
fp
,
subframe
)
!=
SF_UL
))
return
;
if
((
fp
->
frame_type
==
TDD
)
&&
(
subframe_select
(
fp
,
subframe
)
!=
SF_UL
))
return
;
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_UESPEC
+
(
subframe
&
1
)
,
1
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_UESPEC
+
offset
,
1
);
start_meas
(
&
eNB
->
phy_proc_rx
);
start_meas
(
&
eNB
->
phy_proc_rx
);
#ifdef DEBUG_PHY_PROC
#ifdef DEBUG_PHY_PROC
LOG_D
(
PHY
,
"[eNB %d] Frame %d: Doing phy_procedures_eNB_uespec_RX(%d)
\n
"
,
eNB
->
Mod_id
,
frame
,
subframe
);
LOG_D
(
PHY
,
"[eNB %d] Frame %d: Doing phy_procedures_eNB_uespec_RX(%d)
\n
"
,
eNB
->
Mod_id
,
frame
,
subframe
);
...
@@ -3189,7 +3187,7 @@ void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,const
...
@@ -3189,7 +3187,7 @@ void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,const
phy_procedures_emos_eNB_RX
(
subframe
,
eNB
);
phy_procedures_emos_eNB_RX
(
subframe
,
eNB
);
#endif
#endif
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_UESPEC
+
(
subframe
&
1
)
,
0
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_RX_UESPEC
+
offset
,
0
);
stop_meas
(
&
eNB
->
phy_proc_rx
);
stop_meas
(
&
eNB
->
phy_proc_rx
);
...
...
targets/RT/USER/lte-enb.c
View file @
6d6546dd
This diff is collapsed.
Click to expand it.
targets/RT/USER/lte-softmodem.c
View file @
6d6546dd
...
@@ -119,7 +119,7 @@ unsigned short config_frames[4] = {2,9,11,13};
...
@@ -119,7 +119,7 @@ unsigned short config_frames[4] = {2,9,11,13};
// In lte-enb.c
// In lte-enb.c
extern
int
setup_eNB_buffers
(
PHY_VARS_eNB
**
phy_vars_eNB
,
openair0_config_t
*
openair0_cfg
);
extern
int
setup_eNB_buffers
(
PHY_VARS_eNB
**
phy_vars_eNB
,
openair0_config_t
*
openair0_cfg
);
extern
void
init_eNB
(
eNB_func_t
*
,
eNB_timing_t
*
,
int
,
eth_params_t
*
);
extern
void
init_eNB
(
eNB_func_t
*
,
eNB_timing_t
*
,
int
,
eth_params_t
*
,
int
);
extern
void
stop_eNB
(
int
);
extern
void
stop_eNB
(
int
);
extern
void
kill_eNB_proc
(
void
);
extern
void
kill_eNB_proc
(
void
);
...
@@ -163,14 +163,14 @@ uint16_t runtime_phy_tx[29][6]; // SISO [MCS 0-28][RBs 0-5 : 6, 15, 25, 50, 75,
...
@@ -163,14 +163,14 @@ uint16_t runtime_phy_tx[29][6]; // SISO [MCS 0-28][RBs 0-5 : 6, 15, 25, 50, 75,
volatile
int
start_eNB
=
0
;
volatile
int
start_eNB
=
0
;
volatile
int
start_UE
=
0
;
volatile
int
start_UE
=
0
;
#endif
#endif
volatile
int
oai_exit
=
0
;
volatile
int
oai_exit
=
0
;
static
char
UE_flag
=
0
;
static
char
UE_flag
=
0
;
unsigned
int
mmapped_dma
=
0
;
unsigned
int
mmapped_dma
=
0
;
//static uint8_t eNB_id=0,UE_id
=0;
int
single_thread_flag
=
0
;
static
char
threequarter_fs
=
0
;
static
char
threequarter_fs
=
0
;
...
@@ -682,6 +682,7 @@ static void get_options (int argc, char **argv)
...
@@ -682,6 +682,7 @@ static void get_options (int argc, char **argv)
LONG_OPTION_LOOPMEMORY
,
LONG_OPTION_LOOPMEMORY
,
LONG_OPTION_PHYTEST
,
LONG_OPTION_PHYTEST
,
LONG_OPTION_MMAPPED_DMA
,
LONG_OPTION_MMAPPED_DMA
,
LONG_OPTION_SINGLE_THREAD
,
#if T_TRACER
#if T_TRACER
LONG_OPTION_T_PORT
,
LONG_OPTION_T_PORT
,
LONG_OPTION_T_NOWAIT
,
LONG_OPTION_T_NOWAIT
,
...
@@ -706,6 +707,7 @@ static void get_options (int argc, char **argv)
...
@@ -706,6 +707,7 @@ static void get_options (int argc, char **argv)
{
"loop-memory"
,
required_argument
,
NULL
,
LONG_OPTION_LOOPMEMORY
},
{
"loop-memory"
,
required_argument
,
NULL
,
LONG_OPTION_LOOPMEMORY
},
{
"phy-test"
,
no_argument
,
NULL
,
LONG_OPTION_PHYTEST
},
{
"phy-test"
,
no_argument
,
NULL
,
LONG_OPTION_PHYTEST
},
{
"mmapped-dma"
,
no_argument
,
NULL
,
LONG_OPTION_MMAPPED_DMA
},
{
"mmapped-dma"
,
no_argument
,
NULL
,
LONG_OPTION_MMAPPED_DMA
},
{
"single-thread"
,
no_argument
,
NULL
,
LONG_OPTION_SINGLE_THREAD
},
#if T_TRACER
#if T_TRACER
{
"T_port"
,
required_argument
,
0
,
LONG_OPTION_T_PORT
},
{
"T_port"
,
required_argument
,
0
,
LONG_OPTION_T_PORT
},
{
"T_nowait"
,
no_argument
,
0
,
LONG_OPTION_T_NOWAIT
},
{
"T_nowait"
,
no_argument
,
0
,
LONG_OPTION_T_NOWAIT
},
...
@@ -802,6 +804,10 @@ static void get_options (int argc, char **argv)
...
@@ -802,6 +804,10 @@ static void get_options (int argc, char **argv)
case
LONG_OPTION_MMAPPED_DMA
:
case
LONG_OPTION_MMAPPED_DMA
:
mmapped_dma
=
1
;
mmapped_dma
=
1
;
break
;
break
;
case
LONG_OPTION_SINGLE_THREAD
:
single_thread_flag
=
1
;
break
;
#if T_TRACER
#if T_TRACER
case
LONG_OPTION_T_PORT
:
{
case
LONG_OPTION_T_PORT
:
{
...
@@ -1773,7 +1779,7 @@ int main( int argc, char **argv )
...
@@ -1773,7 +1779,7 @@ int main( int argc, char **argv )
// start the main thread
// start the main thread
if
(
UE_flag
==
1
)
init_UE
(
1
);
if
(
UE_flag
==
1
)
init_UE
(
1
);
else
init_eNB
(
node_function
,
node_timing
,
1
,
eth_params
);
else
init_eNB
(
node_function
,
node_timing
,
1
,
eth_params
,
single_thread_flag
);
// Sleep to allow all threads to setup
// Sleep to allow all threads to setup
number_of_cards
=
1
;
number_of_cards
=
1
;
...
...
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