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
caa15144
Commit
caa15144
authored
Dec 23, 2020
by
frtabu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
simplify nrue command line parameter processing
parent
7b077cab
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
110 additions
and
117 deletions
+110
-117
common/utils/LOG/log.h
common/utils/LOG/log.h
+1
-0
common/utils/threadPool/thread-pool.h
common/utils/threadPool/thread-pool.h
+1
-1
executables/nr-uesoftmodem.c
executables/nr-uesoftmodem.c
+55
-54
executables/nr-uesoftmodem.h
executables/nr-uesoftmodem.h
+43
-53
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
+10
-9
No files found.
common/utils/LOG/log.h
View file @
caa15144
...
@@ -167,6 +167,7 @@ extern "C" {
...
@@ -167,6 +167,7 @@ extern "C" {
{"SECURITY", DEBUG_SECURITY},\
{"SECURITY", DEBUG_SECURITY},\
{"NAS", DEBUG_NAS},\
{"NAS", DEBUG_NAS},\
{"RLC", DEBUG_RLC},\
{"RLC", DEBUG_RLC},\
{"DLSCH_DECOD", DEBUG_DLSCH_DECOD},\
{"UE_TIMING", UE_TIMING},\
{"UE_TIMING", UE_TIMING},\
{NULL,-1}\
{NULL,-1}\
}
}
...
...
common/utils/threadPool/thread-pool.h
View file @
caa15144
...
@@ -45,7 +45,7 @@
...
@@ -45,7 +45,7 @@
#define condwait(condition, mutex) AssertFatal(pthread_cond_wait(&condition, &mutex)==0,"");
#define condwait(condition, mutex) AssertFatal(pthread_cond_wait(&condition, &mutex)==0,"");
#define condbroadcast(signal) AssertFatal(pthread_cond_broadcast(&signal)==0,"");
#define condbroadcast(signal) AssertFatal(pthread_cond_broadcast(&signal)==0,"");
#define condsignal(signal) AssertFatal(pthread_cond_broadcast(&signal)==0,"");
#define condsignal(signal) AssertFatal(pthread_cond_broadcast(&signal)==0,"");
#define tpool_nbthreads(tpool) (tpool.nbThreads)
typedef
struct
notifiedFIFO_elt_s
{
typedef
struct
notifiedFIFO_elt_s
{
struct
notifiedFIFO_elt_s
*
next
;
struct
notifiedFIFO_elt_s
*
next
;
uint64_t
key
;
//To filter out elements
uint64_t
key
;
//To filter out elements
...
...
executables/nr-uesoftmodem.c
View file @
caa15144
...
@@ -111,17 +111,10 @@ extern int16_t nr_dlsch_demod_shift;
...
@@ -111,17 +111,10 @@ extern int16_t nr_dlsch_demod_shift;
static
int
tx_max_power
[
MAX_NUM_CCs
]
=
{
0
};
static
int
tx_max_power
[
MAX_NUM_CCs
]
=
{
0
};
int
single_thread_flag
=
1
;
int
single_thread_flag
=
1
;
int
threequarter_fs
=
0
;
int
UE_scan_carrier
=
0
;
int
UE_fo_compensation
=
0
;
int
UE_no_timing_correction
=
0
;
int
N_RB_DL
=
0
;
int
tddflag
=
0
;
int
tddflag
=
0
;
int
vcdflag
=
0
;
int
vcdflag
=
0
;
uint8_t
nb_antenna_tx
=
1
;
uint8_t
nb_antenna_rx
=
1
;
double
rx_gain_off
=
0
.
0
;
double
rx_gain_off
=
0
.
0
;
uint32_t
timing_advance
=
0
;
char
*
usrp_args
=
NULL
;
char
*
usrp_args
=
NULL
;
char
*
rrc_config_path
=
NULL
;
char
*
rrc_config_path
=
NULL
;
int
dumpframe
=
0
;
int
dumpframe
=
0
;
...
@@ -147,8 +140,7 @@ int16_t node_synch_ref[MAX_NUM_CCs];
...
@@ -147,8 +140,7 @@ int16_t node_synch_ref[MAX_NUM_CCs];
int
otg_enabled
;
int
otg_enabled
;
double
cpuf
;
double
cpuf
;
runmode_t
mode
=
normal_txrx
;
int
UE_scan
=
0
;
int
chain_offset
=
0
;
int
chain_offset
=
0
;
int
card_offset
=
0
;
int
card_offset
=
0
;
uint64_t
num_missed_slots
=
0
;
// counter for the number of missed slots
uint64_t
num_missed_slots
=
0
;
// counter for the number of missed slots
...
@@ -222,38 +214,21 @@ nrUE_params_t *get_nrUE_params(void) {
...
@@ -222,38 +214,21 @@ nrUE_params_t *get_nrUE_params(void) {
}
}
/* initialie thread pools used for NRUE processing paralleliation */
/* initialie thread pools used for NRUE processing paralleliation */
void
init_tpools
(
uint8_t
nun_dlsch_threads
)
{
void
init_tpools
(
uint8_t
nun_dlsch_threads
)
{
char
*
params
=
calloc
(
1
,(
RX_NB_TH
*
2
)
+
1
);
initTpool
(
"-1,-1"
,
&
(
nrUE_params
.
Tpool
),
false
);
for
(
int
i
=
0
;
i
<
RX_NB_TH
;
i
++
)
{
init_dlsch_tpool
(
nrUE_params
.
nr_dlsch_parallel
);
memcpy
(
params
+
(
i
*
2
),
"-1"
,
2
);
}
initTpool
(
params
,
&
(
nrUE_params
.
Tpool
),
false
);
free
(
params
);
init_dlsch_tpool
(
nun_dlsch_threads
);
}
}
static
void
get_options
(
void
)
{
static
void
get_options
(
void
)
{
char
*
loopfile
=
NULL
;
paramdef_t
cmdline_params
[]
=
CMDLINE_NRUEPARAMS_DESC
;
int
numparams
=
sizeof
(
cmdline_params
)
/
sizeof
(
paramdef_t
);
paramdef_t
cmdline_params
[]
=
CMDLINE_PARAMS_DESC_UE
;
config_process_cmdline
(
cmdline_params
,
numparams
,
NULL
);
config_process_cmdline
(
cmdline_params
,
sizeof
(
cmdline_params
)
/
sizeof
(
paramdef_t
),
NULL
);
paramdef_t
cmdline_uemodeparams
[]
=
CMDLINE_UEMODEPARAMS_DESC
;
paramdef_t
cmdline_ueparams
[]
=
CMDLINE_NRUEPARAMS_DESC
;
config_process_cmdline
(
cmdline_uemodeparams
,
sizeof
(
cmdline_uemodeparams
)
/
sizeof
(
paramdef_t
),
NULL
);
config_process_cmdline
(
cmdline_ueparams
,
sizeof
(
cmdline_ueparams
)
/
sizeof
(
paramdef_t
),
NULL
);
if
(
(
cmdline_uemodeparams
[
CMDLINE_CALIBUERX_IDX
].
paramflags
&
PARAMFLAG_PARAMSET
)
!=
0
)
mode
=
rx_calib_ue
;
if
(
(
cmdline_uemodeparams
[
CMDLINE_CALIBUERXMED_IDX
].
paramflags
&
PARAMFLAG_PARAMSET
)
!=
0
)
mode
=
rx_calib_ue_med
;
if
(
(
cmdline_uemodeparams
[
CMDLINE_CALIBUERXBYP_IDX
].
paramflags
&
PARAMFLAG_PARAMSET
)
!=
0
)
mode
=
rx_calib_ue_byp
;
if
(
cmdline_uemodeparams
[
CMDLINE_DEBUGUEPRACH_IDX
].
uptr
)
if
(
*
(
cmdline_uemodeparams
[
CMDLINE_DEBUGUEPRACH_IDX
].
uptr
)
>
0
)
mode
=
debug_prach
;
if
(
cmdline_uemodeparams
[
CMDLINE_NOL2CONNECT_IDX
].
uptr
)
if
(
*
(
cmdline_uemodeparams
[
CMDLINE_NOL2CONNECT_IDX
].
uptr
)
>
0
)
mode
=
no_L2_connect
;
if
(
cmdline_uemodeparams
[
CMDLINE_CALIBPRACHTX_IDX
].
uptr
)
if
(
*
(
cmdline_uemodeparams
[
CMDLINE_CALIBPRACHTX_IDX
].
uptr
)
>
0
)
mode
=
calib_prach_tx
;
if
((
cmdline_uemodeparams
[
CMDLINE_DUMPMEMORY_IDX
].
paramflags
&
PARAMFLAG_PARAMSET
)
!=
0
)
mode
=
rx_dump_frame
;
if
(
vcdflag
>
0
)
if
(
vcdflag
>
0
)
ouput_vcd
=
1
;
ouput_vcd
=
1
;
...
@@ -270,6 +245,38 @@ static void get_options(void) {
...
@@ -270,6 +245,38 @@ static void get_options(void) {
// set PHY vars from command line
// set PHY vars from command line
void
set_options
(
int
CC_id
,
PHY_VARS_NR_UE
*
UE
){
void
set_options
(
int
CC_id
,
PHY_VARS_NR_UE
*
UE
){
NR_DL_FRAME_PARMS
*
fp
=
&
UE
->
frame_parms
;
paramdef_t
cmdline_params
[]
=
CMDLINE_NRUE_PHYPARAMS_DESC
;
int
numparams
=
sizeof
(
cmdline_params
)
/
sizeof
(
paramdef_t
);
UE
->
mode
=
normal_txrx
;
config_process_cmdline
(
cmdline_params
,
numparams
,
NULL
);
int
pindex
=
config_paramidx_fromname
(
cmdline_params
,
numparams
,
CALIBRX_OPT
);
if
(
(
cmdline_params
[
pindex
].
paramflags
&
PARAMFLAG_PARAMSET
)
!=
0
)
UE
->
mode
=
rx_calib_ue
;
pindex
=
config_paramidx_fromname
(
cmdline_params
,
numparams
,
CALIBRXMED_OPT
);
if
(
(
cmdline_params
[
pindex
].
paramflags
&
PARAMFLAG_PARAMSET
)
!=
0
)
UE
->
mode
=
rx_calib_ue_med
;
pindex
=
config_paramidx_fromname
(
cmdline_params
,
numparams
,
CALIBRXBYP_OPT
);
if
(
(
cmdline_params
[
pindex
].
paramflags
&
PARAMFLAG_PARAMSET
)
!=
0
)
UE
->
mode
=
rx_calib_ue_byp
;
pindex
=
config_paramidx_fromname
(
cmdline_params
,
numparams
,
DBGPRACH_OPT
);
if
(
cmdline_params
[
pindex
].
uptr
)
if
(
*
(
cmdline_params
[
pindex
].
uptr
)
>
0
)
UE
->
mode
=
debug_prach
;
pindex
=
config_paramidx_fromname
(
cmdline_params
,
numparams
,
NOL2CONNECT_OPT
);
if
(
cmdline_params
[
pindex
].
uptr
)
if
(
*
(
cmdline_params
[
pindex
].
uptr
)
>
0
)
UE
->
mode
=
no_L2_connect
;
pindex
=
config_paramidx_fromname
(
cmdline_params
,
numparams
,
CALIBPRACH_OPT
);
if
(
cmdline_params
[
pindex
].
uptr
)
if
(
*
(
cmdline_params
[
pindex
].
uptr
)
>
0
)
UE
->
mode
=
calib_prach_tx
;
pindex
=
config_paramidx_fromname
(
cmdline_params
,
numparams
,
DUMPFRAME_OPT
);
if
((
cmdline_params
[
pindex
].
paramflags
&
PARAMFLAG_PARAMSET
)
!=
0
)
UE
->
mode
=
rx_dump_frame
;
// Init power variables
// Init power variables
tx_max_power
[
CC_id
]
=
tx_max_power
[
0
];
tx_max_power
[
CC_id
]
=
tx_max_power
[
0
];
...
@@ -277,35 +284,29 @@ void set_options(int CC_id, PHY_VARS_NR_UE *UE){
...
@@ -277,35 +284,29 @@ void set_options(int CC_id, PHY_VARS_NR_UE *UE){
tx_gain
[
0
][
CC_id
]
=
tx_gain
[
0
][
0
];
tx_gain
[
0
][
CC_id
]
=
tx_gain
[
0
][
0
];
// Set UE variables
// Set UE variables
UE
->
UE_scan
=
UE_scan
;
UE
->
UE_scan_carrier
=
UE_scan_carrier
;
UE
->
UE_fo_compensation
=
UE_fo_compensation
;
UE
->
no_timing_correction
=
UE_no_timing_correction
;
UE
->
mode
=
mode
;
UE
->
rx_total_gain_dB
=
(
int
)
rx_gain
[
CC_id
][
0
]
+
rx_gain_off
;
UE
->
rx_total_gain_dB
=
(
int
)
rx_gain
[
CC_id
][
0
]
+
rx_gain_off
;
UE
->
tx_total_gain_dB
=
(
int
)
tx_gain
[
CC_id
][
0
];
UE
->
tx_total_gain_dB
=
(
int
)
tx_gain
[
CC_id
][
0
];
UE
->
tx_power_max_dBm
=
tx_max_power
[
CC_id
];
UE
->
tx_power_max_dBm
=
tx_max_power
[
CC_id
];
UE
->
rf_map
.
card
=
card_offset
;
UE
->
rf_map
.
card
=
card_offset
;
UE
->
rf_map
.
chain
=
CC_id
+
chain_offset
;
UE
->
rf_map
.
chain
=
CC_id
+
chain_offset
;
UE
->
timing_advance
=
timing_advance
;
LOG_I
(
PHY
,
"Set UE mode %d, UE_fo_compensation %d, UE_scan %d, UE_scan_carrier %d, UE_no_timing_correction %d
\n
"
,
mode
,
UE_fo_compensation
,
UE_scan
,
UE_scan_carrier
,
UE_no_timing_correction
);
LOG_I
(
PHY
,
"Set UE mode %d, UE_fo_compensation %d, UE_scan_carrier %d, UE_no_timing_correction %d
\n
"
,
UE
->
mode
,
UE
->
UE_fo_compensation
,
UE
->
UE_scan_carrier
,
UE
->
no_timing_correction
);
// Set FP variables
// Set FP variables
NR_DL_FRAME_PARMS
*
fp
=
&
UE
->
frame_parms
;
fp
->
nb_antennas_tx
=
nb_antenna_tx
;
fp
->
nb_antennas_rx
=
nb_antenna_rx
;
fp
->
threequarter_fs
=
threequarter_fs
;
if
(
tddflag
){
if
(
tddflag
){
fp
->
frame_type
=
TDD
;
fp
->
frame_type
=
TDD
;
LOG_I
(
PHY
,
"Set UE frame_type %d
\n
"
,
fp
->
frame_type
);
LOG_I
(
PHY
,
"Set UE frame_type %d
\n
"
,
fp
->
frame_type
);
}
}
if
(
N_RB_DL
){
fp
->
N_RB_DL
=
N_RB_DL
;
LOG_I
(
PHY
,
"Set UE N_RB_DL %d
\n
"
,
N_RB_DL
);
}
LOG_I
(
PHY
,
"Set UE nb_rx_antenna %d, nb_tx_antenna %d, threequarter_fs %d
\n
"
,
nb_antenna_rx
,
nb_antenna_tx
,
threequarter_fs
);
LOG_I
(
PHY
,
"Set UE N_RB_DL %d
\n
"
,
fp
->
N_RB_DL
);
LOG_I
(
PHY
,
"Set UE nb_rx_antenna %d, nb_tx_antenna %d, threequarter_fs %d
\n
"
,
fp
->
nb_antennas_rx
,
fp
->
nb_antennas_tx
,
fp
->
threequarter_fs
);
}
}
...
@@ -555,7 +556,7 @@ int main( int argc, char **argv ) {
...
@@ -555,7 +556,7 @@ int main( int argc, char **argv ) {
for
(
int
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
for
(
int
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
PHY_vars_UE_g
[
0
][
CC_id
]
->
rf_map
.
card
=
0
;
PHY_vars_UE_g
[
0
][
CC_id
]
->
rf_map
.
card
=
0
;
PHY_vars_UE_g
[
0
][
CC_id
]
->
rf_map
.
chain
=
CC_id
+
chain_offset
;
PHY_vars_UE_g
[
0
][
CC_id
]
->
rf_map
.
chain
=
CC_id
+
chain_offset
;
PHY_vars_UE_g
[
0
][
CC_id
]
->
timing_advance
=
timing_advance
;
PHY_vars_UE_g
[
0
][
CC_id
]
->
timing_advance
=
UE
[
CC_id
]
->
timing_advance
;
}
}
init_NR_UE_threads
(
1
);
init_NR_UE_threads
(
1
);
...
...
executables/nr-uesoftmodem.h
View file @
caa15144
...
@@ -5,72 +5,62 @@
...
@@ -5,72 +5,62 @@
#include "PHY/defs_nr_UE.h"
#include "PHY/defs_nr_UE.h"
#include "SIMULATION/ETH_TRANSPORT/proto.h"
#include "SIMULATION/ETH_TRANSPORT/proto.h"
#define CONFIG_HLP_DLSCH_PARA "number of threads for dlsch processing 0 for no parallelization"
/***************************************************************************************************************************************/
/***************************************************************************************************************************************/
/* command line options definitions, CMDLINE_XXXX_DESC macros are used to initialize paramdef_t arrays which are then used as argument
/* command line options definitions, CMDLINE_XXXX_DESC macros are used to initialize paramdef_t arrays which are then used as argument
when calling config_get or config_getlist functions */
when calling config_get or config_getlist functions */
#define CALIBRX_OPT "calib-ue-rx"
#define CALIBRXMED_OPT "calib-ue-rx-med"
#define CALIBRXBYP_OPT "calib-ue-rx-byp"
#define DBGPRACH_OPT "debug-ue-prach"
#define NOL2CONNECT_OPT "no-L2-connect"
#define CALIBPRACH_OPT "calib-prach-tx"
#define DUMPFRAME_OPT "ue-dump-frame"
/*------------------------------------------------------------------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------------------------------------------------------------------*/
/* command line parameters defining UE running mode */
/* command line parameters defining UE running mode */
/* optname helpstr paramflags XXXptr defXXXval type numelt */
/* optname helpstr paramflags XXXptr defXXXval type numelt */
/*------------------------------------------------------------------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------------------------------------------------------------------*/
#define CMDLINE_UEMODEPARAMS_DESC { \
{"calib-ue-rx", CONFIG_HLP_CALUER, 0, iptr:&rx_input_level_dBm, defintval:0, TYPE_INT, 0}, \
{"calib-ue-rx-med", CONFIG_HLP_CALUERM, 0, iptr:&rx_input_level_dBm, defintval:0, TYPE_INT, 0}, \
{"calib-ue-rx-byp", CONFIG_HLP_CALUERB, 0, iptr:&rx_input_level_dBm, defintval:0, TYPE_INT, 0}, \
{"debug-ue-prach", CONFIG_HLP_DBGUEPR, PARAMFLAG_BOOL, uptr:NULL, defuintval:1, TYPE_INT, 0}, \
{"no-L2-connect", CONFIG_HLP_NOL2CN, PARAMFLAG_BOOL, uptr:NULL, defuintval:1, TYPE_INT, 0}, \
{"calib-prach-tx", CONFIG_HLP_CALPRACH, PARAMFLAG_BOOL, uptr:NULL, defuintval:1, TYPE_INT, 0}, \
{"loop-memory", CONFIG_HLP_UELOOP, 0, strptr:&loopfile, defstrval:"iqs.in", TYPE_STRING,0}, \
{"ue-dump-frame", CONFIG_HLP_DUMPFRAME, PARAMFLAG_BOOL, iptr:&dumpframe, defintval:0, TYPE_INT, 0}, \
}
#define CMDLINE_CALIBUERX_IDX 0
#define CMDLINE_CALIBUERXMED_IDX 1
#define CMDLINE_CALIBUERXBYP_IDX 2
#define CMDLINE_DEBUGUEPRACH_IDX 3
#define CMDLINE_NOL2CONNECT_IDX 4
#define CMDLINE_CALIBPRACHTX_IDX 5
#define CMDLINE_MEMLOOP_IDX 6
#define CMDLINE_DUMPMEMORY_IDX 7
/*------------------------------------------------------------------------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* command line parameters specific to UE */
/* optname helpstr paramflags XXXptr defXXXval type numelt */
/*---------------------------------------------------------------------------------------------------------------------------------------------------------*/
#define CMDLINE_NRUEPARAMS_DESC { \
#define CMDLINE_NRUEPARAMS_DESC { \
{"ue-rxgain", CONFIG_HLP_UERXG, 0, dblptr:&(rx_gain[0][0]), defdblval:0, TYPE_DOUBLE, 0}, \
{"usrp-args", CONFIG_HLP_USRP_ARGS, 0, strptr:(char **)&usrp_args, defstrval:"type=b200", TYPE_STRING, 0}, \
{"ue-rxgain-off", CONFIG_HLP_UERXGOFF, 0, dblptr:&rx_gain_off, defdblval:0, TYPE_DOUBLE, 0}, \
{"single-thread-disable", CONFIG_HLP_NOSNGLT, PARAMFLAG_BOOL, iptr:&single_thread_flag, defintval:1, TYPE_INT, 0}, \
{"ue-txgain", CONFIG_HLP_UETXG, 0, dblptr:&(tx_gain[0][0]), defdblval:0, TYPE_DOUBLE, 0}, \
{"dlsch-parallel", CONFIG_HLP_DLSCH_PARA, 0, iptr:(int32_t *)&nrUE_params.nr_dlsch_parallel, defintval:0, TYPE_UINT8, 0}, \
{"ue-nb-ant-rx", CONFIG_HLP_UENANTR, 0, u8ptr:&nb_antenna_rx, defuintval:1, TYPE_UINT8, 0}, \
{"nr-dlsch-demod-shift", CONFIG_HLP_DLSHIFT, 0, iptr:(int32_t *)&nr_dlsch_demod_shift, defintval:0, TYPE_INT, 0}, \
{"ue-nb-ant-tx", CONFIG_HLP_UENANTT, 0, u8ptr:&nb_antenna_tx, defuintval:1, TYPE_UINT8, 0}, \
{"V" , CONFIG_HLP_VCD, PARAMFLAG_BOOL, iptr:&vcdflag, defintval:0, TYPE_INT, 0}, \
{"ue-scan-carrier", CONFIG_HLP_UESCAN, PARAMFLAG_BOOL, iptr:&UE_scan_carrier, defintval:0, TYPE_INT, 0}, \
{"rrc_config_path", CONFIG_HLP_RRC_CFG_PATH,0, strptr:(char **)&rrc_config_path, defstrval:"./", TYPE_STRING, 0} \
{"ue-fo-compensation", CONFIG_HLP_UEFO, PARAMFLAG_BOOL, iptr:&UE_fo_compensation, defintval:0, TYPE_INT, 0}, \
{"ue-max-power", NULL, 0, iptr:&(tx_max_power[0]), defintval:90, TYPE_INT, 0}, \
{"r" , CONFIG_HLP_PRB, 0, iptr:&(N_RB_DL), defintval:25, TYPE_UINT, 0}, \
{"usrp-args", CONFIG_HLP_USRP_ARGS, 0, strptr:(char **)&usrp_args, defstrval:"type=b200", TYPE_STRING, 0} \
}
#define CONFIG_HLP_DLSCH_PARA "number of threads for dlsch processing 0 for no parallelization"
/*----------------------------------------------------------------------------------------------------------------------------------------------------*/
/* command line parameters common to gNB and UE */
/* optname helpstr paramflags XXXptr defXXXval type numelt */
/*----------------------------------------------------------------------------------------------------------------------------------------------------*/
#define CMDLINE_PARAMS_DESC_UE { \
{"single-thread-disable", CONFIG_HLP_NOSNGLT, PARAMFLAG_BOOL, iptr:&single_thread_flag, defintval:1, 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}, \
{"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}, \
{"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}, \
{"ue-timing-correction-disable", CONFIG_HLP_DISABLETIMECORR, PARAMFLAG_BOOL, iptr:&UE_no_timing_correction, defintval:0, TYPE_INT, 0}, \
{"rrc_config_path", CONFIG_HLP_RRC_CFG_PATH,0, strptr:(char **)&rrc_config_path, defstrval:"./", TYPE_STRING, 0} \
}
}
/*------------------------------------------------------------------------------------------------------------------------------------------*/
/* command line parameters defining UE running mode */
/* optname helpstr paramflags XXXptr defXXXval type numelt */
/*------------------------------------------------------------------------------------------------------------------------------------------*/
#define CMDLINE_NRUE_PHYPARAMS_DESC { \
{ CALIBRX_OPT, CONFIG_HLP_CALUER, 0, iptr:&rx_input_level_dBm, defintval:0, TYPE_INT, 0}, \
{ CALIBRXMED_OPT, CONFIG_HLP_CALUERM, 0, iptr:&rx_input_level_dBm, defintval:0, TYPE_INT, 0}, \
{ CALIBRXBYP_OPT, CONFIG_HLP_CALUERB, 0, iptr:&rx_input_level_dBm, defintval:0, TYPE_INT, 0}, \
{ DBGPRACH_OPT, CONFIG_HLP_DBGUEPR, PARAMFLAG_BOOL, uptr:NULL, defuintval:1, TYPE_INT, 0}, \
{ NOL2CONNECT_OPT, CONFIG_HLP_NOL2CN, PARAMFLAG_BOOL, uptr:NULL, defuintval:1, TYPE_INT, 0}, \
{CALIBPRACH_OPT, CONFIG_HLP_CALPRACH, PARAMFLAG_BOOL, uptr:NULL, defuintval:1, TYPE_INT, 0}, \
{ DUMPFRAME_OPT, CONFIG_HLP_DUMPFRAME, PARAMFLAG_BOOL, iptr:&dumpframe, defintval:0, TYPE_INT, 0}, \
{"ue-rxgain", CONFIG_HLP_UERXG, 0, dblptr:&(rx_gain[0][0]), defdblval:0, TYPE_DOUBLE, 0}, \
{"ue-rxgain-off", CONFIG_HLP_UERXGOFF, 0, dblptr:&rx_gain_off, defdblval:0, TYPE_DOUBLE, 0}, \
{"ue-txgain", CONFIG_HLP_UETXG, 0, dblptr:&(tx_gain[0][0]), defdblval:0, TYPE_DOUBLE, 0}, \
{"ue-nb-ant-rx", CONFIG_HLP_UENANTR, 0, u8ptr:&(fp->nb_antennas_rx), defuintval:1, TYPE_UINT8, 0}, \
{"ue-nb-ant-tx", CONFIG_HLP_UENANTT, 0, u8ptr:&(fp->nb_antennas_tx), defuintval:1, TYPE_UINT8, 0}, \
{"ue-scan-carrier", CONFIG_HLP_UESCAN, PARAMFLAG_BOOL, iptr:&(UE->UE_scan_carrier), defintval:0, TYPE_INT, 0}, \
{"ue-fo-compensation", CONFIG_HLP_UEFO, PARAMFLAG_BOOL, iptr:&(UE->UE_fo_compensation), defintval:0, TYPE_INT, 0}, \
{"ue-max-power", NULL, 0, iptr:&(tx_max_power[0]), defintval:90, TYPE_INT, 0}, \
{"r" , CONFIG_HLP_PRB, 0, iptr:&(fp->N_RB_DL), defintval:25, TYPE_UINT, 0}, \
{"A" , CONFIG_HLP_TADV, 0, iptr:&(UE->timing_advance), defintval:0, TYPE_INT, 0}, \
{"E" , CONFIG_HLP_TQFS, PARAMFLAG_BOOL, u8ptr:&(fp->threequarter_fs), defintval:0, TYPE_UINT8, 0}, \
{"T" , CONFIG_HLP_TDD, PARAMFLAG_BOOL, iptr:&tddflag, defintval:0, TYPE_INT, 0}, \
{"ue-timing-correction-disable", CONFIG_HLP_DISABLETIMECORR, PARAMFLAG_BOOL, iptr:&(UE->no_timing_correction), defintval:0, TYPE_INT, 0}, \
}
typedef
struct
{
typedef
struct
{
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
View file @
caa15144
...
@@ -65,11 +65,12 @@ void init_dlsch_tpool(uint8_t nun_dlsch_threads)
...
@@ -65,11 +65,12 @@ void init_dlsch_tpool(uint8_t nun_dlsch_threads)
if
(
nun_dlsch_threads
==
0
)
if
(
nun_dlsch_threads
==
0
)
return
;
return
;
char
*
params
=
malloc
(
nun_dlsch_threads
*
3
*
sizeof
(
char
)
);
char
*
params
=
calloc
(
1
,(
nun_dlsch_threads
*
2
)
+
1
);
for
(
int
i
=
0
;
i
<
nun_dlsch_threads
;
i
++
)
{
for
(
int
i
=
0
;
i
<
nun_dlsch_threads
;
i
++
)
{
memcpy
(
params
+
(
i
*
3
),
"-1
\0
"
,
3
);
memcpy
(
params
+
(
i
*
2
),
"-1"
,
2
);
}
}
initTpool
(
params
,
&
pool_dl
,
false
);
initTpool
(
params
,
&
pool_dl
,
false
);
free
(
params
);
}
}
...
@@ -1434,7 +1435,7 @@ void nr_dlsch_decoding_process(void *arg)
...
@@ -1434,7 +1435,7 @@ void nr_dlsch_decoding_process(void *arg)
Kr
=
harq_process
->
K
;
Kr
=
harq_process
->
K
;
Kr_bytes
=
Kr
>>
3
;
Kr_bytes
=
Kr
>>
3
;
K_b
it
s_F
=
Kr
-
harq_process
->
F
;
K_b
yte
s_F
=
Kr
-
harq_process
->
F
;
E
=
nr_get_E
(
G
,
harq_process
->
C
,
harq_process
->
Qm
,
harq_process
->
Nl
,
r
);
E
=
nr_get_E
(
G
,
harq_process
->
C
,
harq_process
->
Qm
,
harq_process
->
Nl
,
r
);
...
@@ -1546,9 +1547,9 @@ void nr_dlsch_decoding_process(void *arg)
...
@@ -1546,9 +1547,9 @@ void nr_dlsch_decoding_process(void *arg)
//set first 2*Z_c bits to zeros
//set first 2*Z_c bits to zeros
memset
(
&
z
[
0
],
0
,
2
*
harq_process
->
Z
*
sizeof
(
int16_t
));
memset
(
&
z
[
0
],
0
,
2
*
harq_process
->
Z
*
sizeof
(
int16_t
));
//set Filler bits
//set Filler bits
memset
((
&
z
[
0
]
+
K_b
it
s_F
),
127
,
harq_process
->
F
*
sizeof
(
int16_t
));
memset
((
&
z
[
0
]
+
K_b
yte
s_F
),
127
,
harq_process
->
F
*
sizeof
(
int16_t
));
//Move coded bits before filler bits
//Move coded bits before filler bits
memcpy
((
&
z
[
0
]
+
2
*
harq_process
->
Z
),
harq_process
->
d
[
r
],(
K_b
it
s_F
-
2
*
harq_process
->
Z
)
*
sizeof
(
int16_t
));
memcpy
((
&
z
[
0
]
+
2
*
harq_process
->
Z
),
harq_process
->
d
[
r
],(
K_b
yte
s_F
-
2
*
harq_process
->
Z
)
*
sizeof
(
int16_t
));
//skip filler bits
//skip filler bits
memcpy
((
&
z
[
0
]
+
Kr
),
harq_process
->
d
[
r
]
+
(
Kr
-
2
*
harq_process
->
Z
),(
kc
*
harq_process
->
Z
-
Kr
)
*
sizeof
(
int16_t
));
memcpy
((
&
z
[
0
]
+
Kr
),
harq_process
->
d
[
r
]
+
(
Kr
-
2
*
harq_process
->
Z
),(
kc
*
harq_process
->
Z
-
Kr
)
*
sizeof
(
int16_t
));
//Saturate coded bits before decoding into 8 bits values
//Saturate coded bits before decoding into 8 bits values
...
@@ -1609,7 +1610,7 @@ void *dlsch_thread(void *arg) {
...
@@ -1609,7 +1610,7 @@ void *dlsch_thread(void *arg) {
notifiedFIFO_elt_t
*
res_dl
;
notifiedFIFO_elt_t
*
res_dl
;
initNotifiedFIFO_nothreadSafe
(
&
freeBlocks_dl
);
initNotifiedFIFO_nothreadSafe
(
&
freeBlocks_dl
);
for
(
int
i
=
0
;
i
<
RX_NB_TH_DL
+
1
;
i
++
){
for
(
int
i
=
0
;
i
<
tpool_nbthreads
(
pool_dl
)
+
1
;
i
++
){
pushNotifiedFIFO_nothreadSafe
(
&
freeBlocks_dl
,
pushNotifiedFIFO_nothreadSafe
(
&
freeBlocks_dl
,
newNotifiedFIFO_elt
(
sizeof
(
nr_rxtx_thread_data_t
),
0
,
&
nf
,
nr_dlsch_decoding_process
));}
newNotifiedFIFO_elt
(
sizeof
(
nr_rxtx_thread_data_t
),
0
,
&
nf
,
nr_dlsch_decoding_process
));}
...
@@ -1617,7 +1618,7 @@ void *dlsch_thread(void *arg) {
...
@@ -1617,7 +1618,7 @@ void *dlsch_thread(void *arg) {
notifiedFIFO_elt_t
*
res
;
notifiedFIFO_elt_t
*
res
;
while
(
nbDlProcessing
>=
RX_NB_TH_DL
)
{
while
(
nbDlProcessing
>=
tpool_nbthreads
(
pool_dl
)
)
{
if
(
(
res
=
tryPullTpool
(
&
nf
,
&
pool_dl
))
!=
NULL
)
{
if
(
(
res
=
tryPullTpool
(
&
nf
,
&
pool_dl
))
!=
NULL
)
{
//nbDlProcessing--;
//nbDlProcessing--;
pushNotifiedFIFO_nothreadSafe
(
&
freeBlocks_dl
,
res
);
pushNotifiedFIFO_nothreadSafe
(
&
freeBlocks_dl
,
res
);
...
...
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