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
wangjie
OpenXG-RAN
Commits
fdc1049a
Commit
fdc1049a
authored
Dec 03, 2020
by
frtabu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix phy simulators compilation, number of threads for dlsch configurable
parent
aa3317a0
Changes
10
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
192 additions
and
296 deletions
+192
-296
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+5
-0
common/utils/LOG/log.h
common/utils/LOG/log.h
+1
-0
executables/nr-ue.c
executables/nr-ue.c
+7
-7
executables/nr-uesoftmodem.c
executables/nr-uesoftmodem.c
+12
-20
executables/nr-uesoftmodem.h
executables/nr-uesoftmodem.h
+6
-8
openair1/PHY/NR_TRANSPORT/nr_dlsch.h
openair1/PHY/NR_TRANSPORT/nr_dlsch.h
+1
-1
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
+128
-242
openair1/SCHED_NR_UE/defs.h
openair1/SCHED_NR_UE/defs.h
+7
-5
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
+16
-9
openair1/SIMULATION/NR_PHY/dlsim.c
openair1/SIMULATION/NR_PHY/dlsim.c
+9
-4
No files found.
cmake_targets/CMakeLists.txt
View file @
fdc1049a
...
@@ -3231,6 +3231,7 @@ add_executable(nr_dlschsim
...
@@ -3231,6 +3231,7 @@ add_executable(nr_dlschsim
${
OPENAIR_DIR
}
/common/utils/system.c
${
OPENAIR_DIR
}
/common/utils/system.c
${
OPENAIR_DIR
}
/common/utils/nr/nr_common.c
${
OPENAIR_DIR
}
/common/utils/nr/nr_common.c
${
OPENAIR_DIR
}
/common/utils/utils.c
${
OPENAIR_DIR
}
/common/utils/utils.c
${
OPENAIR_DIR
}
/common/utils/threadPool/thread-pool.c
${
UTIL_SRC
}
${
UTIL_SRC
}
${
T_SOURCE
}
${
T_SOURCE
}
${
SHLIB_LOADER_SOURCES
}
${
SHLIB_LOADER_SOURCES
}
...
@@ -3245,6 +3246,7 @@ add_executable(nr_pbchsim
...
@@ -3245,6 +3246,7 @@ add_executable(nr_pbchsim
${
OPENAIR_DIR
}
/common/utils/system.c
${
OPENAIR_DIR
}
/common/utils/system.c
${
OPENAIR_DIR
}
/common/utils/nr/nr_common.c
${
OPENAIR_DIR
}
/common/utils/nr/nr_common.c
${
OPENAIR_DIR
}
/common/utils/utils.c
${
OPENAIR_DIR
}
/common/utils/utils.c
${
OPENAIR_DIR
}
/common/utils/threadPool/thread-pool.c
${
UTIL_SRC
}
${
UTIL_SRC
}
${
T_SOURCE
}
${
T_SOURCE
}
${
SHLIB_LOADER_SOURCES
}
${
SHLIB_LOADER_SOURCES
}
...
@@ -3261,6 +3263,7 @@ add_executable(nr_pucchsim
...
@@ -3261,6 +3263,7 @@ add_executable(nr_pucchsim
${
OPENAIR_DIR
}
/common/utils/nr/nr_common.c
${
OPENAIR_DIR
}
/common/utils/nr/nr_common.c
${
OPENAIR_DIR
}
/common/utils/system.c
${
OPENAIR_DIR
}
/common/utils/system.c
${
OPENAIR_DIR
}
/common/utils/utils.c
${
OPENAIR_DIR
}
/common/utils/utils.c
${
OPENAIR_DIR
}
/common/utils/threadPool/thread-pool.c
${
UTIL_SRC
}
${
UTIL_SRC
}
${
T_SOURCE
}
${
T_SOURCE
}
${
SHLIB_LOADER_SOURCES
}
${
SHLIB_LOADER_SOURCES
}
...
@@ -3279,6 +3282,7 @@ add_executable(nr_dlsim
...
@@ -3279,6 +3282,7 @@ add_executable(nr_dlsim
${
OPENAIR2_DIR
}
/RRC/NAS/nas_config.c
${
OPENAIR2_DIR
}
/RRC/NAS/nas_config.c
${
OPENAIR1_DIR
}
/SIMULATION/ETH_TRANSPORT/netlink_init.c
${
OPENAIR1_DIR
}
/SIMULATION/ETH_TRANSPORT/netlink_init.c
${
NFAPI_USER_DIR
}
/nfapi.c
${
NFAPI_USER_DIR
}
/nfapi.c
${
OPENAIR_DIR
}
/common/utils/threadPool/thread-pool.c
${
UTIL_SRC
}
${
UTIL_SRC
}
${
T_SOURCE
}
${
T_SOURCE
}
${
SHLIB_LOADER_SOURCES
}
${
SHLIB_LOADER_SOURCES
}
...
@@ -3298,6 +3302,7 @@ add_executable(nr_prachsim
...
@@ -3298,6 +3302,7 @@ add_executable(nr_prachsim
${
OPENAIR2_DIR
}
/RRC/NAS/nas_config.c
${
OPENAIR2_DIR
}
/RRC/NAS/nas_config.c
${
OPENAIR1_DIR
}
/SIMULATION/ETH_TRANSPORT/netlink_init.c
${
OPENAIR1_DIR
}
/SIMULATION/ETH_TRANSPORT/netlink_init.c
${
NFAPI_USER_DIR
}
/nfapi.c
${
NFAPI_USER_DIR
}
/nfapi.c
${
OPENAIR_DIR
}
/common/utils/threadPool/thread-pool.c
${
UTIL_SRC
}
${
UTIL_SRC
}
${
T_SOURCE
}
${
T_SOURCE
}
${
SHLIB_LOADER_SOURCES
}
)
${
SHLIB_LOADER_SOURCES
}
)
...
...
common/utils/LOG/log.h
View file @
fdc1049a
...
@@ -148,6 +148,7 @@ extern "C" {
...
@@ -148,6 +148,7 @@ extern "C" {
#define DEBUG_SECURITY (1<<11)
#define DEBUG_SECURITY (1<<11)
#define DEBUG_NAS (1<<12)
#define DEBUG_NAS (1<<12)
#define DEBUG_RLC (1<<13)
#define DEBUG_RLC (1<<13)
#define DEBUG_DLSCH_DECOD (1<<14)
#define UE_TIMING (1<<20)
#define UE_TIMING (1<<20)
...
...
executables/nr-ue.c
View file @
fdc1049a
...
@@ -411,7 +411,7 @@ void processSlotRX( PHY_VARS_NR_UE *UE, UE_nr_rxtx_proc_t *proc) {
...
@@ -411,7 +411,7 @@ void processSlotRX( PHY_VARS_NR_UE *UE, UE_nr_rxtx_proc_t *proc) {
phy_procedures_slot_parallelization_nrUE_RX
(
UE
,
proc
,
0
,
0
,
1
,
UE
->
mode
,
no_relay
,
NULL
);
phy_procedures_slot_parallelization_nrUE_RX
(
UE
,
proc
,
0
,
0
,
1
,
UE
->
mode
,
no_relay
,
NULL
);
#else
#else
uint64_t
a
=
rdtsc
();
uint64_t
a
=
rdtsc
();
phy_procedures_nrUE_RX
(
UE
,
proc
,
0
,
UE
->
mode
);
phy_procedures_nrUE_RX
(
UE
,
proc
,
0
,
UE
->
mode
,
get_nrUE_params
()
->
nr_dlsch_parallel
);
LOG_D
(
PHY
,
"phy_procedures_nrUE_RX: slot:%d, time %lu
\n
"
,
proc
->
nr_slot_rx
,
(
rdtsc
()
-
a
)
/
3500
);
LOG_D
(
PHY
,
"phy_procedures_nrUE_RX: slot:%d, time %lu
\n
"
,
proc
->
nr_slot_rx
,
(
rdtsc
()
-
a
)
/
3500
);
//printf(">>> nr_ue_pdcch_procedures ended\n");
//printf(">>> nr_ue_pdcch_procedures ended\n");
#endif
#endif
...
@@ -624,7 +624,7 @@ void *UE_thread(void *arg) {
...
@@ -624,7 +624,7 @@ void *UE_thread(void *arg) {
while
(
!
oai_exit
)
{
while
(
!
oai_exit
)
{
if
(
syncRunning
)
{
if
(
syncRunning
)
{
notifiedFIFO_elt_t
*
res
=
tryPullTpool
(
&
nf
,
Tpool
);
notifiedFIFO_elt_t
*
res
=
tryPullTpool
(
&
nf
,
&
(
get_nrUE_params
()
->
Tpool
)
);
if
(
res
)
{
if
(
res
)
{
syncRunning
=
false
;
syncRunning
=
false
;
...
@@ -650,7 +650,7 @@ void *UE_thread(void *arg) {
...
@@ -650,7 +650,7 @@ void *UE_thread(void *arg) {
syncData_t
*
syncMsg
=
(
syncData_t
*
)
NotifiedFifoData
(
Msg
);
syncData_t
*
syncMsg
=
(
syncData_t
*
)
NotifiedFifoData
(
Msg
);
syncMsg
->
UE
=
UE
;
syncMsg
->
UE
=
UE
;
memset
(
&
syncMsg
->
proc
,
0
,
sizeof
(
syncMsg
->
proc
));
memset
(
&
syncMsg
->
proc
,
0
,
sizeof
(
syncMsg
->
proc
));
pushTpool
(
Tpool
,
Msg
);
pushTpool
(
&
(
get_nrUE_params
()
->
Tpool
)
,
Msg
);
trashed_frames
=
0
;
trashed_frames
=
0
;
syncRunning
=
true
;
syncRunning
=
true
;
continue
;
continue
;
...
@@ -765,7 +765,7 @@ void *UE_thread(void *arg) {
...
@@ -765,7 +765,7 @@ void *UE_thread(void *arg) {
notifiedFIFO_elt_t
*
res
;
notifiedFIFO_elt_t
*
res
;
while
(
nbSlotProcessing
>=
RX_NB_TH
)
{
while
(
nbSlotProcessing
>=
RX_NB_TH
)
{
res
=
pullTpool
(
&
nf
,
Tpool
);
res
=
pullTpool
(
&
nf
,
&
(
get_nrUE_params
()
->
Tpool
)
);
nbSlotProcessing
--
;
nbSlotProcessing
--
;
processingData_t
*
tmp
=
(
processingData_t
*
)
res
->
msgData
;
processingData_t
*
tmp
=
(
processingData_t
*
)
res
->
msgData
;
...
@@ -798,13 +798,13 @@ void *UE_thread(void *arg) {
...
@@ -798,13 +798,13 @@ void *UE_thread(void *arg) {
nbSlotProcessing
++
;
nbSlotProcessing
++
;
msgToPush
->
key
=
slot_nr
;
msgToPush
->
key
=
slot_nr
;
pushTpool
(
Tpool
,
msgToPush
);
pushTpool
(
&
(
get_nrUE_params
()
->
Tpool
)
,
msgToPush
);
if
(
IS_SOFTMODEM_RFSIM
||
IS_SOFTMODEM_NOS1
)
{
//getenv("RFSIMULATOR")
if
(
IS_SOFTMODEM_RFSIM
||
IS_SOFTMODEM_NOS1
)
{
//getenv("RFSIMULATOR")
// FixMe: Wait previous thread is done, because race conditions seems too bad
// FixMe: Wait previous thread is done, because race conditions seems too bad
// in case of actual RF board, the overlap between threads mitigate the issue
// in case of actual RF board, the overlap between threads mitigate the issue
// We must receive one message, that proves the slot processing is done
// We must receive one message, that proves the slot processing is done
res
=
pullTpool
(
&
nf
,
Tpool
);
res
=
pullTpool
(
&
nf
,
&
(
get_nrUE_params
()
->
Tpool
)
);
nbSlotProcessing
--
;
nbSlotProcessing
--
;
processingData_t
*
tmp
=
(
processingData_t
*
)
res
->
msgData
;
processingData_t
*
tmp
=
(
processingData_t
*
)
res
->
msgData
;
...
@@ -860,7 +860,7 @@ void init_NR_UE_threads(int nb_inst) {
...
@@ -860,7 +860,7 @@ void init_NR_UE_threads(int nb_inst) {
LOG_I
(
PHY
,
"Intializing UE Threads for instance %d (%p,%p)...
\n
"
,
inst
,
PHY_vars_UE_g
[
inst
],
PHY_vars_UE_g
[
inst
][
0
]);
LOG_I
(
PHY
,
"Intializing UE Threads for instance %d (%p,%p)...
\n
"
,
inst
,
PHY_vars_UE_g
[
inst
],
PHY_vars_UE_g
[
inst
][
0
]);
threadCreate
(
&
threads
[
inst
],
UE_thread
,
(
void
*
)
UE
,
"UEthread"
,
-
1
,
OAI_PRIORITY_RT_MAX
);
threadCreate
(
&
threads
[
inst
],
UE_thread
,
(
void
*
)
UE
,
"UEthread"
,
-
1
,
OAI_PRIORITY_RT_MAX
);
if
(
IS_DLSCH_PARALLEL
)
if
(
get_nrUE_params
()
->
nr_dlsch_parallel
)
{
{
pthread_t
dlsch0_threads
;
pthread_t
dlsch0_threads
;
threadCreate
(
&
dlsch0_threads
,
dlsch_thread
,
(
void
*
)
UE
,
"DLthread"
,
-
1
,
OAI_PRIORITY_RT_MAX
-
1
);
threadCreate
(
&
dlsch0_threads
,
dlsch_thread
,
(
void
*
)
UE
,
"DLthread"
,
-
1
,
OAI_PRIORITY_RT_MAX
-
1
);
...
...
executables/nr-uesoftmodem.c
View file @
fdc1049a
...
@@ -43,6 +43,7 @@
...
@@ -43,6 +43,7 @@
#include "PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h"
#include "PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h"
#include "SCHED/sched_common_vars.h"
#include "SCHED/sched_common_vars.h"
#include "PHY/MODULATION/modulation_vars.h"
#include "PHY/MODULATION/modulation_vars.h"
#include "PHY/NR_TRANSPORT/nr_dlsch.h"
//#include "../../SIMU/USER/init_lte.h"
//#include "../../SIMU/USER/init_lte.h"
#include "LAYER2/MAC/mac_vars.h"
#include "LAYER2/MAC/mac_vars.h"
...
@@ -97,8 +98,8 @@ pthread_cond_t sync_cond;
...
@@ -97,8 +98,8 @@ pthread_cond_t sync_cond;
pthread_mutex_t
sync_mutex
;
pthread_mutex_t
sync_mutex
;
int
sync_var
=-
1
;
//!< protected by mutex \ref sync_mutex.
int
sync_var
=-
1
;
//!< protected by mutex \ref sync_mutex.
int
config_sync_var
=-
1
;
int
config_sync_var
=-
1
;
tpool_t
*
Tpool
;
tpool_t
*
Tpool_dl
;
RAN_CONTEXT_t
RC
;
RAN_CONTEXT_t
RC
;
volatile
int
start_eNB
=
0
;
volatile
int
start_eNB
=
0
;
...
@@ -218,11 +219,16 @@ uint64_t set_nrUE_optmask(uint64_t bitmask) {
...
@@ -218,11 +219,16 @@ uint64_t set_nrUE_optmask(uint64_t bitmask) {
nrUE_params_t
*
get_nrUE_params
(
void
)
{
nrUE_params_t
*
get_nrUE_params
(
void
)
{
return
&
nrUE_params
;
return
&
nrUE_params
;
}
}
/* initialie thread pools used for NRUE processing paralleliation */
void
init_tpools
(
uint8_t
nun_dlsch_threads
)
{
initTpool
(
"-1,-1"
,
&
(
nrUE_params
.
Tpool
),
false
);
init_dlsch_tpool
(
nrUE_params
.
nr_dlsch_parallel
);
}
static
void
get_options
(
void
)
{
static
void
get_options
(
void
)
{
char
*
loopfile
=
NULL
;
char
*
loopfile
=
NULL
;
int32_t
nr_dlsch_parallel
=
0
;
paramdef_t
cmdline_params
[]
=
CMDLINE_PARAMS_DESC_UE
;
paramdef_t
cmdline_params
[]
=
CMDLINE_PARAMS_DESC_UE
;
config_process_cmdline
(
cmdline_params
,
sizeof
(
cmdline_params
)
/
sizeof
(
paramdef_t
),
NULL
);
config_process_cmdline
(
cmdline_params
,
sizeof
(
cmdline_params
)
/
sizeof
(
paramdef_t
),
NULL
);
paramdef_t
cmdline_uemodeparams
[]
=
CMDLINE_UEMODEPARAMS_DESC
;
paramdef_t
cmdline_uemodeparams
[]
=
CMDLINE_UEMODEPARAMS_DESC
;
...
@@ -249,8 +255,6 @@ static void get_options(void) {
...
@@ -249,8 +255,6 @@ static void get_options(void) {
if
((
cmdline_uemodeparams
[
CMDLINE_DUMPMEMORY_IDX
].
paramflags
&
PARAMFLAG_PARAMSET
)
!=
0
)
if
((
cmdline_uemodeparams
[
CMDLINE_DUMPMEMORY_IDX
].
paramflags
&
PARAMFLAG_PARAMSET
)
!=
0
)
mode
=
rx_dump_frame
;
mode
=
rx_dump_frame
;
if
(
nr_dlsch_parallel
)
set_nrUE_optmask
(
NRUE_DLSCH_PARALLEL_BIT
);
if
(
vcdflag
>
0
)
if
(
vcdflag
>
0
)
ouput_vcd
=
1
;
ouput_vcd
=
1
;
...
@@ -261,6 +265,7 @@ static void get_options(void) {
...
@@ -261,6 +265,7 @@ static void get_options(void) {
printf
(
"%s
\n
"
,
uecap_xer
);
printf
(
"%s
\n
"
,
uecap_xer
);
uecap_xer_in
=
1
;
uecap_xer_in
=
1
;
}
/* UE with config file */
}
/* UE with config file */
init_tpools
(
nrUE_params
.
nr_dlsch_parallel
);
}
}
// set PHY vars from command line
// set PHY vars from command line
...
@@ -450,19 +455,6 @@ void *rrc_enb_process_msg(void *notUsed) {
...
@@ -450,19 +455,6 @@ void *rrc_enb_process_msg(void *notUsed) {
return
NULL
;
return
NULL
;
}
}
/* initialie thread pools used for NRUE processing paralleliation */
void
init_tpools
(
void
)
{
tpool_t
pool
;
Tpool
=
&
pool
;
char
params
[]
=
"-1,-1"
;
initTpool
(
params
,
Tpool
,
false
);
if
(
IS_DLSCH_PARALLEL
)
{
tpool_t
pool_dl
;
Tpool_dl
=
&
pool_dl
;
char
params_dl
[]
=
"-1,-1,-1,-1"
;
initTpool
(
params_dl
,
Tpool_dl
,
false
);
}
}
int
main
(
int
argc
,
char
**
argv
)
{
int
main
(
int
argc
,
char
**
argv
)
{
//uint8_t beta_ACK=0,beta_RI=0,beta_CQI=2;
//uint8_t beta_ACK=0,beta_RI=0,beta_CQI=2;
...
@@ -489,7 +481,7 @@ int main( int argc, char **argv ) {
...
@@ -489,7 +481,7 @@ int main( int argc, char **argv ) {
#endif
#endif
//randominit (0);
//randominit (0);
set_taus_seed
(
0
);
set_taus_seed
(
0
);
init_tpools
();
cpuf
=
get_cpu_freq_GHz
();
cpuf
=
get_cpu_freq_GHz
();
itti_init
(
TASK_MAX
,
THREAD_MAX
,
MESSAGES_ID_MAX
,
tasks_info
,
messages_info
);
itti_init
(
TASK_MAX
,
THREAD_MAX
,
MESSAGES_ID_MAX
,
tasks_info
,
messages_info
);
...
...
executables/nr-uesoftmodem.h
View file @
fdc1049a
...
@@ -53,17 +53,17 @@
...
@@ -53,17 +53,17 @@
}
}
#define CONFIG_HLP_DLSCH_PARA "
enable dlsch processing
parallelization"
#define CONFIG_HLP_DLSCH_PARA "
number of threads for dlsch processing 0 for no
parallelization"
/*----------------------------------------------------------------------------------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------------------------------------------------------------------------------*/
/* command line parameters common to gNB and UE */
/* command line parameters common to gNB and UE */
/* optname helpstr paramflags XXXptr defXXXval type numelt */
/* optname helpstr paramflags XXXptr defXXXval type numelt */
/*----------------------------------------------------------------------------------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------------------------------------------------------------------------------*/
#define CMDLINE_PARAMS_DESC_UE { \
#define CMDLINE_PARAMS_DESC_UE { \
{"single-thread-disable", CONFIG_HLP_NOSNGLT, PARAMFLAG_BOOL, iptr:&single_thread_flag, defintval:1, TYPE_INT, 0}, \
{"single-thread-disable", CONFIG_HLP_NOSNGLT, PARAMFLAG_BOOL, iptr:&single_thread_flag, defintval:1, TYPE_INT, 0}, \
{"dlsch-parallel", CONFIG_HLP_DLSCH_PARA,
PARAMFLAG_BOOL, iptr:(int32_t *)&nr_dlsch_parallel, defintval:0, TYPE_INT,
0}, \
{"dlsch-parallel", CONFIG_HLP_DLSCH_PARA,
0, iptr:(int32_t *)&nrUE_params.nr_dlsch_parallel, defintval:0, TYPE_UINT8,
0}, \
{"nr-dlsch-demod-shift", CONFIG_HLP_DLSHIFT, 0, iptr:(int32_t *)&nr_dlsch_demod_shift, defintval:0, TYPE_INT, 0}, \
{"nr-dlsch-demod-shift", CONFIG_HLP_DLSHIFT, 0, iptr:(int32_t *)&nr_dlsch_demod_shift, defintval:0, TYPE_INT, 0}, \
{"A" , CONFIG_HLP_TADV, 0, uptr:&timing_advance, defintval:0, TYPE_UINT, 0}, \
{"A" , CONFIG_HLP_TADV, 0, uptr:&timing_advance, defintval:0, TYPE_UINT, 0}, \
{"E" , CONFIG_HLP_TQFS, PARAMFLAG_BOOL, i8ptr:&(openair0_cfg[0].threequarter_fs),
defintval:0, TYPE_INT8, 0}, \
{"E" , CONFIG_HLP_TQFS, PARAMFLAG_BOOL, i8ptr:&(openair0_cfg[0].threequarter_fs), defintval:0, TYPE_INT8, 0}, \
{"T" , CONFIG_HLP_TDD, PARAMFLAG_BOOL, iptr:&tddflag, defintval:0, TYPE_INT, 0}, \
{"T" , CONFIG_HLP_TDD, PARAMFLAG_BOOL, iptr:&tddflag, defintval:0, TYPE_INT, 0}, \
{"V" , CONFIG_HLP_VCD, PARAMFLAG_BOOL, iptr:&vcdflag, defintval:0, TYPE_INT, 0}, \
{"V" , CONFIG_HLP_VCD, PARAMFLAG_BOOL, iptr:&vcdflag, defintval:0, TYPE_INT, 0}, \
{"ue-timing-correction-disable", CONFIG_HLP_DISABLETIMECORR, PARAMFLAG_BOOL, iptr:&UE_no_timing_correction, defintval:0, TYPE_INT, 0}, \
{"ue-timing-correction-disable", CONFIG_HLP_DISABLETIMECORR, PARAMFLAG_BOOL, iptr:&UE_no_timing_correction, defintval:0, TYPE_INT, 0}, \
...
@@ -72,12 +72,11 @@
...
@@ -72,12 +72,11 @@
#define NRUE_DLSCH_PARALLEL_BIT (1<<0)
#define IS_DLSCH_PARALLEL ( get_nrUE_optmask() & NRUE_DLSCH_PARALLEL_BIT)
typedef
struct
{
typedef
struct
{
uint64_t
optmask
;
//mask to store boolean config options
uint64_t
optmask
;
//mask to store boolean config options
uint8_t
nr_dlsch_parallel
;
// number of threads for dlsch decoding, 0 means no parallelization
tpool_t
Tpool
;
// thread pool
}
nrUE_params_t
;
}
nrUE_params_t
;
extern
uint64_t
get_nrUE_optmask
(
void
);
extern
uint64_t
get_nrUE_optmask
(
void
);
extern
uint64_t
set_nrUE_optmask
(
uint64_t
bitmask
);
extern
uint64_t
set_nrUE_optmask
(
uint64_t
bitmask
);
...
@@ -96,6 +95,5 @@ extern void reset_opp_meas(void);
...
@@ -96,6 +95,5 @@ extern void reset_opp_meas(void);
extern
void
print_opp_meas
(
void
);
extern
void
print_opp_meas
(
void
);
void
*
UE_thread
(
void
*
arg
);
void
*
UE_thread
(
void
*
arg
);
void
init_nr_ue_vars
(
PHY_VARS_NR_UE
*
ue
,
uint8_t
UE_id
,
uint8_t
abstraction_flag
);
void
init_nr_ue_vars
(
PHY_VARS_NR_UE
*
ue
,
uint8_t
UE_id
,
uint8_t
abstraction_flag
);
extern
tpool_t
*
Tpool
;
extern
tpool_t
*
Tpool_dl
;
#endif
#endif
openair1/PHY/NR_TRANSPORT/nr_dlsch.h
View file @
fdc1049a
...
@@ -95,7 +95,7 @@ int nr_dlsch_encoding(PHY_VARS_gNB *gNB,
...
@@ -95,7 +95,7 @@ int nr_dlsch_encoding(PHY_VARS_gNB *gNB,
time_stats_t
*
dlsch_interleaving_stats
,
time_stats_t
*
dlsch_interleaving_stats
,
time_stats_t
*
dlsch_segmentation_stats
);
time_stats_t
*
dlsch_segmentation_stats
);
void
init_dlsch_tpool
(
uint8_t
nun_dlsch_threads
);
void
nr_emulate_dlsch_payload
(
uint8_t
*
payload
,
uint16_t
size
);
void
nr_emulate_dlsch_payload
(
uint8_t
*
payload
,
uint16_t
size
);
void
dump_pdsch_stats
(
PHY_VARS_gNB
*
gNB
);
void
dump_pdsch_stats
(
PHY_VARS_gNB
*
gNB
);
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
View file @
fdc1049a
This diff is collapsed.
Click to expand it.
openair1/SCHED_NR_UE/defs.h
View file @
fdc1049a
...
@@ -110,15 +110,17 @@ int phy_procedures_RN_UE_RX(unsigned char last_slot, unsigned char next_slot, re
...
@@ -110,15 +110,17 @@ int phy_procedures_RN_UE_RX(unsigned char last_slot, unsigned char next_slot, re
void
phy_procedures_nrUE_TX
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
uint8_t
eNB_id
);
void
phy_procedures_nrUE_TX
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
uint8_t
eNB_id
);
/*! \brief Scheduling for UE RX procedures in normal subframes.
/*! \brief Scheduling for UE RX procedures in normal subframes.
@param ue Pointer to UE variables on which to act
@param ue Pointer to UE variables on which to act
@param proc Pointer to proc information
@param proc Pointer to proc information
@param gNB_id Local id of eNB on which to act
@param gNB_id Local id of eNB on which to act
@param mode calibration/debug mode
@param mode calibration/debug mode
@param dlsch_parallel use multithreaded dlsch processing
*/
*/
int
phy_procedures_nrUE_RX
(
PHY_VARS_NR_UE
*
ue
,
int
phy_procedures_nrUE_RX
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
UE_nr_rxtx_proc_t
*
proc
,
uint8_t
gNB_id
,
uint8_t
gNB_id
,
runmode_t
mode
);
runmode_t
mode
,
uint8_t
dlsch_parallel
);
int
phy_procedures_slot_parallelization_nrUE_RX
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
uint8_t
eNB_id
,
uint8_t
abstraction_flag
,
uint8_t
do_pdcch_flag
,
runmode_t
mode
,
relaying_type_t
r_type
);
int
phy_procedures_slot_parallelization_nrUE_RX
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
uint8_t
eNB_id
,
uint8_t
abstraction_flag
,
uint8_t
do_pdcch_flag
,
runmode_t
mode
,
relaying_type_t
r_type
);
...
...
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
View file @
fdc1049a
...
@@ -918,7 +918,8 @@ void nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue,
...
@@ -918,7 +918,8 @@ void nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue,
NR_UE_DLSCH_t
*
dlsch0
,
NR_UE_DLSCH_t
*
dlsch0
,
NR_UE_DLSCH_t
*
dlsch1
,
NR_UE_DLSCH_t
*
dlsch1
,
int
*
dlsch_errors
,
int
*
dlsch_errors
,
runmode_t
mode
)
{
runmode_t
mode
,
uint8_t
dlsch_parallel
)
{
if
(
dlsch0
==
NULL
)
if
(
dlsch0
==
NULL
)
AssertFatal
(
0
,
"dlsch0 should be defined at this level
\n
"
);
AssertFatal
(
0
,
"dlsch0 should be defined at this level
\n
"
);
...
@@ -1049,7 +1050,7 @@ void nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue,
...
@@ -1049,7 +1050,7 @@ void nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue,
start_meas
(
&
ue
->
dlsch_decoding_stats
[
proc
->
thread_id
]);
start_meas
(
&
ue
->
dlsch_decoding_stats
[
proc
->
thread_id
]);
#endif
#endif
if
(
IS_DLSCH_PARALLEL
)
if
(
dlsch_parallel
)
{
{
ret
=
nr_dlsch_decoding_mthread
(
ue
,
ret
=
nr_dlsch_decoding_mthread
(
ue
,
proc
,
proc
,
...
@@ -1135,7 +1136,7 @@ void nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue,
...
@@ -1135,7 +1136,7 @@ void nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue,
start_meas
(
&
ue
->
dlsch_decoding_stats
[
proc
->
thread_id
]);
start_meas
(
&
ue
->
dlsch_decoding_stats
[
proc
->
thread_id
]);
#endif
#endif
if
(
IS_DLSCH_PARALLEL
)
if
(
dlsch_parallel
)
{
{
ret1
=
nr_dlsch_decoding_mthread
(
ue
,
ret1
=
nr_dlsch_decoding_mthread
(
ue
,
proc
,
proc
,
...
@@ -1711,8 +1712,10 @@ int is_pbch_in_slot(fapi_nr_config_request_t *config, int frame, int slot, NR_DL
...
@@ -1711,8 +1712,10 @@ int is_pbch_in_slot(fapi_nr_config_request_t *config, int frame, int slot, NR_DL
int
phy_procedures_nrUE_RX
(
PHY_VARS_NR_UE
*
ue
,
int
phy_procedures_nrUE_RX
(
PHY_VARS_NR_UE
*
ue
,
UE_nr_rxtx_proc_t
*
proc
,
UE_nr_rxtx_proc_t
*
proc
,
uint8_t
gNB_id
,
uint8_t
gNB_id
,
runmode_t
mode
)
runmode_t
mode
,
{
uint8_t
dlsch_parallel
)
{
int
frame_rx
=
proc
->
frame_rx
;
int
frame_rx
=
proc
->
frame_rx
;
int
nr_slot_rx
=
proc
->
nr_slot_rx
;
int
nr_slot_rx
=
proc
->
nr_slot_rx
;
int
slot_pbch
;
int
slot_pbch
;
...
@@ -1920,7 +1923,8 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,
...
@@ -1920,7 +1923,8 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,
ue
->
dlsch_SI
[
gNB_id
],
ue
->
dlsch_SI
[
gNB_id
],
NULL
,
NULL
,
&
ue
->
dlsch_SI_errors
[
gNB_id
],
&
ue
->
dlsch_SI_errors
[
gNB_id
],
mode
);
mode
,
dlsch_parallel
);
// deactivate dlsch once dlsch proc is done
// deactivate dlsch once dlsch proc is done
ue
->
dlsch_SI
[
gNB_id
]
->
active
=
0
;
ue
->
dlsch_SI
[
gNB_id
]
->
active
=
0
;
...
@@ -1945,7 +1949,8 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,
...
@@ -1945,7 +1949,8 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,
ue
->
dlsch_p
[
gNB_id
],
ue
->
dlsch_p
[
gNB_id
],
NULL
,
NULL
,
&
ue
->
dlsch_p_errors
[
gNB_id
],
&
ue
->
dlsch_p_errors
[
gNB_id
],
mode
);
mode
,
dlsch_parallel
);
// deactivate dlsch once dlsch proc is done
// deactivate dlsch once dlsch proc is done
ue
->
dlsch_p
[
gNB_id
]
->
active
=
0
;
ue
->
dlsch_p
[
gNB_id
]
->
active
=
0
;
...
@@ -1970,7 +1975,8 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,
...
@@ -1970,7 +1975,8 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,
ue
->
dlsch_ra
[
gNB_id
],
ue
->
dlsch_ra
[
gNB_id
],
NULL
,
NULL
,
&
ue
->
dlsch_ra_errors
[
gNB_id
],
&
ue
->
dlsch_ra_errors
[
gNB_id
],
mode
);
mode
,
dlsch_parallel
);
// deactivate dlsch once dlsch proc is done
// deactivate dlsch once dlsch proc is done
ue
->
dlsch_ra
[
gNB_id
]
->
active
=
0
;
ue
->
dlsch_ra
[
gNB_id
]
->
active
=
0
;
...
@@ -1996,7 +2002,8 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,
...
@@ -1996,7 +2002,8 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,
ue
->
dlsch
[
proc
->
thread_id
][
gNB_id
][
0
],
ue
->
dlsch
[
proc
->
thread_id
][
gNB_id
][
0
],
ue
->
dlsch
[
proc
->
thread_id
][
gNB_id
][
1
],
ue
->
dlsch
[
proc
->
thread_id
][
gNB_id
][
1
],
&
ue
->
dlsch_errors
[
gNB_id
],
&
ue
->
dlsch_errors
[
gNB_id
],
mode
);
mode
,
dlsch_parallel
);
#if UE_TIMING_TRACE
#if UE_TIMING_TRACE
...
...
openair1/SIMULATION/NR_PHY/dlsim.c
View file @
fdc1049a
...
@@ -269,7 +269,7 @@ int main(int argc, char **argv)
...
@@ -269,7 +269,7 @@ int main(int argc, char **argv)
uint16_t
ptrsSymbPerSlot
=
0
;
uint16_t
ptrsSymbPerSlot
=
0
;
uint16_t
rbSize
=
106
;
uint16_t
rbSize
=
106
;
uint8_t
mcsIndex
=
9
;
uint8_t
mcsIndex
=
9
;
uint8_t
dlsch_threads
=
0
;
if
(
load_configmodule
(
argc
,
argv
,
CONFIG_ENABLECMDLINEONLY
)
==
0
)
{
if
(
load_configmodule
(
argc
,
argv
,
CONFIG_ENABLECMDLINEONLY
)
==
0
)
{
exit_fun
(
"[NR_DLSIM] Error, configuration module init failed
\n
"
);
exit_fun
(
"[NR_DLSIM] Error, configuration module init failed
\n
"
);
}
}
...
@@ -280,7 +280,7 @@ int main(int argc, char **argv)
...
@@ -280,7 +280,7 @@ int main(int argc, char **argv)
FILE
*
scg_fd
=
NULL
;
FILE
*
scg_fd
=
NULL
;
while
((
c
=
getopt
(
argc
,
argv
,
"f:hA:pf:g:i:j:n:s:S:t:x:y:z:M:N:F:GR:dPIL:Ea:b:e:m:w:T:U:"
))
!=
-
1
)
{
while
((
c
=
getopt
(
argc
,
argv
,
"f:hA:pf:g:i:j:n:s:S:t:x:y:z:M:N:F:GR:dPIL:Ea:b:
d:
e:m:w:T:U:"
))
!=
-
1
)
{
switch
(
c
)
{
switch
(
c
)
{
case
'f'
:
case
'f'
:
scg_fd
=
fopen
(
optarg
,
"r"
);
scg_fd
=
fopen
(
optarg
,
"r"
);
...
@@ -447,7 +447,9 @@ int main(int argc, char **argv)
...
@@ -447,7 +447,9 @@ int main(int argc, char **argv)
case
'b'
:
case
'b'
:
g_rbSize
=
atoi
(
optarg
);
g_rbSize
=
atoi
(
optarg
);
break
;
break
;
case
'd'
:
dlsch_threads
=
atoi
(
optarg
);
break
;
case
'e'
:
case
'e'
:
g_mcsIndex
=
atoi
(
optarg
);
g_mcsIndex
=
atoi
(
optarg
);
break
;
break
;
...
@@ -512,6 +514,7 @@ int main(int argc, char **argv)
...
@@ -512,6 +514,7 @@ int main(int argc, char **argv)
printf
(
"-U Change DMRS Config, arguments list DMRS TYPE{0=A,1=B} DMRS AddPos{0:2}, e.g. -U 2 0 2
\n
"
);
printf
(
"-U Change DMRS Config, arguments list DMRS TYPE{0=A,1=B} DMRS AddPos{0:2}, e.g. -U 2 0 2
\n
"
);
printf
(
"-P Print DLSCH performances
\n
"
);
printf
(
"-P Print DLSCH performances
\n
"
);
printf
(
"-w Write txdata to binary file (one frame)
\n
"
);
printf
(
"-w Write txdata to binary file (one frame)
\n
"
);
printf
(
"-d number of dlsch threads, 0: no dlsch parallelization
\n
"
);
exit
(
-
1
);
exit
(
-
1
);
break
;
break
;
}
}
...
@@ -527,6 +530,7 @@ int main(int argc, char **argv)
...
@@ -527,6 +530,7 @@ int main(int argc, char **argv)
if
(
snr1set
==
0
)
if
(
snr1set
==
0
)
snr1
=
snr0
+
10
;
snr1
=
snr0
+
10
;
init_dlsch_tpool
(
dlsch_threads
);
RC
.
gNB
=
(
PHY_VARS_gNB
**
)
malloc
(
sizeof
(
PHY_VARS_gNB
*
));
RC
.
gNB
=
(
PHY_VARS_gNB
**
)
malloc
(
sizeof
(
PHY_VARS_gNB
*
));
...
@@ -981,7 +985,8 @@ int main(int argc, char **argv)
...
@@ -981,7 +985,8 @@ int main(int argc, char **argv)
phy_procedures_nrUE_RX
(
UE
,
phy_procedures_nrUE_RX
(
UE
,
&
UE_proc
,
&
UE_proc
,
0
,
0
,
normal_txrx
);
normal_txrx
,
dlsch_threads
);
//printf("dlsim round %d ends\n",round);
//printf("dlsim round %d ends\n",round);
round
++
;
round
++
;
...
...
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