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
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
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
OpenXG
OpenXG-RAN
Commits
fbaf8a62
Commit
fbaf8a62
authored
Mar 21, 2017
by
Raymond Knopp
1
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
updates for Sidekiq
parent
da500691
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
1275 additions
and
1220 deletions
+1275
-1220
targets/ARCH/COMMON/common_lib.c
targets/ARCH/COMMON/common_lib.c
+1
-1
targets/ARCH/SKIQ/USERSPACE/LIB/skiq_lib.c
targets/ARCH/SKIQ/USERSPACE/LIB/skiq_lib.c
+100
-21
targets/RT/USER/lte-enb.c
targets/RT/USER/lte-enb.c
+10
-8
targets/RT/USER/lte-softmodem.c
targets/RT/USER/lte-softmodem.c
+1164
-1190
No files found.
targets/ARCH/COMMON/common_lib.c
View file @
fbaf8a62
...
...
@@ -47,7 +47,7 @@ int set_device(openair0_device *device) {
case
USRP_B200_DEV
:
printf
(
"[%s] has loaded USRP B200 device.
\n
"
,((
device
->
host_type
==
BBU_HOST
)
?
"BBU"
:
"RRH"
));
break
;
case
USRP_X300_DEV
:
case
USRP_X300_DEV
:
printf
(
"[%s] has loaded USRP X300 device.
\n
"
,((
device
->
host_type
==
BBU_HOST
)
?
"BBU"
:
"RRH"
));
break
;
case
BLADERF_DEV
:
...
...
targets/ARCH/SKIQ/USERSPACE/LIB/skiq_lib.c
View file @
fbaf8a62
...
...
@@ -66,6 +66,8 @@
#define ANSI_COLOR_CYAN "\x1b[36m"
#define ANSI_COLOR_RESET "\x1b[0m"
#define SKIQ_ASYNCH 1
typedef
struct
{
uint32_t
*
dataptr
;
uint32_t
length
;
...
...
@@ -196,14 +198,14 @@ void *skiq_tx_thread(void *arg) {
skiq_state_t
*
skiq
=
(
skiq_state_t
*
)
arg
;
TX_input_packet_q_t
*
txq
=
&
skiq
->
txq
;
int32_t
*
txp_i
;
int
i
=
0
;
int
i
=
0
,
j
;
int
next
;
int
len
;
int32_t
res
;
struct
sched_param
sparam
;
int
s
;
long
long
in
,
out
;
int
tx_drop_cnt
=
0
;
memset
(
&
sparam
,
0
,
sizeof
(
sparam
));
sparam
.
sched_priority
=
sched_get_priority_max
(
SCHED_FIFO
);
...
...
@@ -218,19 +220,47 @@ void *skiq_tx_thread(void *arg) {
while
(
skiq
->
tx_active
==
1
)
{
#ifdef DEBUG_SKIQ_TX
// printf(ANSI_COLOR_RED "skiq_tx_thread: locking mutex (time %llu)\n" ANSI_COLOR_RESET,rdtsc_oai());
#endif
pthread_mutex_lock
(
&
skiq
->
tx_mutex
);
uint64_t
txts
;
skiq_read_curr_tx_timestamp
(
skiq
->
card_list
[
0
],
skiq_tx_hdl_A1
,
&
txts
);
in
=
rdtsc_oai
();
#ifdef DEBUG_SKIQ_TX
printf
(
ANSI_COLOR_RED
"skiq_tx_thread: locking mutex (time %llu) txq->elm[%d].active %d (len %d),skiq->txp_active[%d] %d,txq->elm[txq->head].timestamp %llu txts %llu
\n
"
ANSI_COLOR_RESET
,
rdtsc_oai
(),
txq
->
head
,
txq
->
elm
[
txq
->
head
].
active
,
txq
->
elm
[
txq
->
head
].
length
,
i
,
skiq
->
txp_active
[
i
],
txq
->
elm
[
txq
->
head
].
timestamp
,
txts
);
#endif
/*
while ((txq->elm[txq->head].active==1)
&& (txq->elm[txq->head].timestamp<txts)) {// the head element is too late
#ifdef DEBUG_SKIQ_TX
printf(ANSI_COLOR_RED "skiq_tx_thread: dropping head element %d\n" ANSI_COLOR_RESET,txq->head);
#endif
txq->elm[txq->head].active = 0;
txq->head = (txq->head+1)%SKIQ_MAX_TX_ELM;
i=0;
for (j=0;j<skiq->num_blocks_per_subframe;j++)
skiq->txp_active[j]=0;
if (tx_drop_cnt++ == 5)
skiq->tx_active=0;
}
*/
if
((
txq
->
elm
[
txq
->
head
].
active
==
1
)
&&
(
skiq
->
txp_active
[
i
]
==
0
)
&&
((
txq
->
elm
[
txq
->
head
].
timestamp
-
txts
)
<
4
*
(
skiq
->
block_size_in_words
)))
{
// queue is not empty
(
skiq
->
txp_active
[
i
]
==
0
))
{
//&& ((txq->elm[txq->head].timestamp-txts)<4*(skiq->block_size_in_words))) { // queue is not empty
#ifdef DEBUG_SKIQ_TX
printf
(
ANSI_COLOR_RED
"skiq_tx_thread: inner condition
\n
"
ANSI_COLOR_RESET
);
#endif
txp_i
=
skiq
->
tx_packet
[
i
]
+
4
+
1
+
(
sizeof
(
void
*
)
>>
2
);
if
(
txq
->
elm
[
txq
->
head
].
length
>=
skiq
->
block_size_in_words
)
{
...
...
@@ -267,11 +297,19 @@ void *skiq_tx_thread(void *arg) {
// copy tx_packet index in front of TX packet buffer
*
(
uint32_t
*
)(
txp_i
-
1
)
=
i
;
if
(
txq
->
elm
[
txq
->
head
].
length
==
0
)
{
// disactivate head element
txq
->
elm
[
txq
->
head
].
active
=
0
;
// point head to next element in the queue
txq
->
head
=
(
txq
->
head
+
1
)
%
SKIQ_MAX_TX_ELM
;
}
#ifdef DEBUG_SKIQ_TX
printf
(
ANSI_COLOR_RED
"skiq_tx_thread: unlocking mutex, time %llu
\n
"
ANSI_COLOR_RESET
,
rdtsc_oai
());
#endif
pthread_mutex_unlock
(
&
skiq
->
tx_mutex
);
#ifdef SKIQ_ASYNCH
if
((
res
=
skiq_transmit
(
skiq
->
card_list
[
0
],
skiq_tx_hdl_A1
,
txp_i
))
==
SKIQ_TX_ASYNC_SEND_QUEUE_FULL
)
{
#ifdef DEBUG_SKIQ_TX
printf
(
"skiq_tx_thread: send queue full, sleeping
\n
"
);
...
...
@@ -283,6 +321,14 @@ void *skiq_tx_thread(void *arg) {
if
((
res
=
skiq_transmit
(
skiq
->
card_list
[
0
],
skiq_tx_hdl_A1
,
txp_i
))
==
SKIQ_TX_ASYNC_SEND_QUEUE_FULL
)
printf
(
"skiq_tx_thread: error, send queue still full after cond_signal, packet will be dropped
\n
"
);
}
#else
if
((
res
=
skiq_transmit
(
skiq
->
card_list
[
0
],
skiq_tx_hdl_A1
,
txp_i
))
<
0
)
{
printf
(
"skiq_tx_thread: skiq_transmit error, exiting
\n
"
);
skiq
->
tx_active
=
0
;
}
skiq
->
txp_active
[
i
]
=
0
;
#endif
i
=
(
i
+
1
)
%
skiq
->
num_blocks_per_subframe
;
out
=
rdtsc_oai
();
...
...
@@ -294,6 +340,7 @@ void *skiq_tx_thread(void *arg) {
else
{
// empty head and continue with next element if its there
// index of next element in the queue
next
=
(
txq
->
head
+
1
)
%
SKIQ_MAX_TX_ELM
;
...
...
@@ -357,6 +404,9 @@ void *skiq_tx_thread(void *arg) {
printf
(
ANSI_COLOR_RED
"skiq_tx_thread: Unlocking tx_mutex
\n
"
ANSI_COLOR_RESET
);
#endif
pthread_mutex_unlock
(
&
skiq
->
tx_mutex
);
#ifdef SKIQ_ASYNCH
if
((
res
=
skiq_transmit
(
skiq
->
card_list
[
0
],
skiq_tx_hdl_A1
,
txp_i
))
==
SKIQ_TX_ASYNC_SEND_QUEUE_FULL
)
{
#ifdef DEBUG_SKIQ_TX
printf
(
"skiq_tx_thread: send queue full, sleeping
\n
"
);
...
...
@@ -365,6 +415,14 @@ void *skiq_tx_thread(void *arg) {
pthread_cond_wait
(
&
skiq
->
space_avail_cond
,
&
skiq
->
space_avail_mutex
);
pthread_mutex_unlock
(
&
skiq
->
space_avail_mutex
);
}
#else
if
((
res
=
skiq_transmit
(
skiq
->
card_list
[
0
],
skiq_tx_hdl_A1
,
txp_i
))
<
0
)
{
printf
(
"skiq_tx_thread: skiq_transmit error, exiting
\n
"
);
skiq
->
tx_active
=
0
;
}
skiq
->
txp_active
[
i
]
=
0
;
#endif
i
=
(
i
+
1
)
%
skiq
->
num_blocks_per_subframe
;
#ifdef DEBUG_SKIQ_TX
printf
(
ANSI_COLOR_RED
"skiq_tx_thread: received res %d from skiq_transmit(), time now %llu
\n
"
ANSI_COLOR_RESET
,
...
...
@@ -469,6 +527,13 @@ int skiq_add_tx_el(skiq_state_t *skiq, openair0_timestamp ptimestamp,void **buff
printf
(
"TX queue is full, dropping element
\n
"
);
res
=-
1
;
}
int
diff
=
(
SKIQ_MAX_TX_ELM
+
txq
->
tail
-
txq
->
head
)
%
SKIQ_MAX_TX_ELM
;
if
(
diff
>
2
)
{
txq
->
head
=
(
txq
->
head
+
1
)
%
SKIQ_MAX_TX_ELM
;
printf
(
"dropping TX queue head
\n
"
);
}
pthread_mutex_unlock
(
&
skiq
->
tx_mutex
);
#ifdef DEBUG_SKIQ_TX
printf
(
ANSI_COLOR_BLUE
"skiq_add_tx_el: unlocked TX mutex, time %llu
\n
"
ANSI_COLOR_RESET
,
rdtsc_oai
());
...
...
@@ -495,10 +560,12 @@ static int trx_skiq_write(openair0_device *device,openair0_timestamp ptimestamp,
uint32_t
late
;
uint64_t
txts
;
/*
skiq_read_tx_num_late_timestamps(skiq->card_list[0],skiq_tx_hdl_A1,
&late);
skiq_read_curr_tx_timestamp(skiq->card_list[0],skiq_tx_hdl_A1,
&txts);
*/
printf
(
ANSI_COLOR_BLUE
"trx_skiq_write: Writing buff %p (%p) @ %llu (time now %llu, SKIQ TS %llu), late %d
\n
"
ANSI_COLOR_RESET
,
buff
,
buff
[
0
],
ptimestamp
,
rdtsc_oai
(),
...
...
@@ -995,7 +1062,8 @@ int device_init(openair0_device *device, openair0_config_t *openair0_cfg) {
printf
(
"SKIQ: set tx LO freq to %llu Hz
\n
"
,(
unsigned
long
long
)
openair0_cfg
->
tx_freq
[
0
]);
}
if
(
(
result
=
skiq_write_tx_data_flow_mode
(
skiq
->
card_list
[
cardid
],
skiq_tx_hdl_A1
,
skiq_tx_with_timestamps_data_flow_mode
))
!=
0
)
skiq_tx_immediate_data_flow_mode
))
!=
0
)
// skiq_tx_with_timestamps_data_flow_mode)) != 0 )
{
printf
(
"Error: unable to configure Tx data flow mode to with_timestatmps
\r\n
"
);
return
(
-
1
);
...
...
@@ -1006,10 +1074,19 @@ int device_init(openair0_device *device, openair0_config_t *openair0_cfg) {
printf
(
"Error: unable to configure Tx block size
\r\n
"
);
return
(
-
1
);
}
// set the transfer mode to sync
#ifdef SKIQ_ASYNCH
// set the transfer mode to async
if
(
skiq_write_tx_transfer_mode
(
skiq
->
card_list
[
cardid
],
skiq_tx_hdl_A1
,
skiq_tx_transfer_mode_async
)
!=
0
)
{
printf
(
"Error: unable to set transfer mode to sync
\r\n
"
);
printf
(
"Error: unable to set transfer mode to async
\r\n
"
);
return
(
-
1
);
}
// register the callback
if
(
skiq_register_tx_complete_callback
(
skiq
->
card_list
[
cardid
],
&
skiq_tx_complete
)
!=
0
)
{
printf
(
"Error: unable to register callback
\r\n
"
);
return
(
-
1
);
}
if
(
skiq_write_num_tx_threads
(
skiq
->
card_list
[
cardid
],
...
...
@@ -1018,12 +1095,14 @@ int device_init(openair0_device *device, openair0_config_t *openair0_cfg) {
printf
(
"Error: unable to set number of TX threads to 2
\r\n
"
);
return
(
-
1
);
}
// register the callback
if
(
skiq_register_tx_complete_callback
(
skiq
->
card_list
[
cardid
],
&
skiq_tx_complete
)
!=
0
)
#else
// set the transfer mode to sync
if
(
skiq_write_tx_transfer_mode
(
skiq
->
card_list
[
cardid
],
skiq_tx_hdl_A1
,
skiq_tx_transfer_mode_sync
)
!=
0
)
{
printf
(
"Error: unable to
register callback
\r\n
"
);
printf
(
"Error: unable to
set transfer mode to sync
\r\n
"
);
return
(
-
1
);
}
#endif
if
((
result
=
skiq_write_rx_gain_mode
(
skiq
->
card_list
[
cardid
],
skiq_rx_hdl_A1
,
...
...
targets/RT/USER/lte-enb.c
View file @
fbaf8a62
...
...
@@ -1429,7 +1429,7 @@ static void* eNB_thread_FH( void* param ) {
wait_sync
(
"eNB_thread_FH"
);
#if defined(ENABLE_ITTI) && defined(ENABLE_USE_MME)
if
(
eNB
->
node_function
<
NGFI_RRU_IF5
)
if
(
(
eNB
->
node_function
<
NGFI_RRU_IF5
)
&&
(
eNB
->
mac_enabled
==
1
)
)
wait_system_ready
(
"Waiting for eNB application to be ready %s
\r
"
,
&
start_eNB
);
#endif
...
...
@@ -1559,7 +1559,7 @@ static void* eNB_thread_single( void* param ) {
wait_sync
(
"eNB_thread_single"
);
#if defined(ENABLE_ITTI) && defined(ENABLE_USE_MME)
if
(
eNB
->
node_function
<
NGFI_RRU_IF5
)
if
(
(
eNB
->
node_function
<
NGFI_RRU_IF5
)
&&
(
eNB
->
mac_enabled
==
1
)
)
wait_system_ready
(
"Waiting for eNB application to be ready %s
\r
"
,
&
start_eNB
);
#endif
...
...
@@ -2044,6 +2044,8 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
eNB
->
start_rf
=
start_rf
;
eNB
->
start_if
=
start_if
;
eNB
->
fh_asynch
=
fh_if5_asynch_DL
;
eNB
->
rfdevice
.
host_type
=
RRH_HOST
;
eNB
->
ifdevice
.
host_type
=
RRH_HOST
;
if
(
oaisim_flag
==
0
)
{
ret
=
openair0_device_load
(
&
eNB
->
rfdevice
,
&
openair0_cfg
[
CC_id
]);
if
(
ret
<
0
)
{
...
...
@@ -2051,8 +2053,6 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
exit
(
-
1
);
}
}
eNB
->
rfdevice
.
host_type
=
RRH_HOST
;
eNB
->
ifdevice
.
host_type
=
RRH_HOST
;
ret
=
openair0_transport_load
(
&
eNB
->
ifdevice
,
&
openair0_cfg
[
CC_id
],
eNB
->
eth_params
);
printf
(
"openair0_transport_init returns %d for CC_id %d
\n
"
,
ret
,
CC_id
);
if
(
ret
<
0
)
{
...
...
@@ -2073,6 +2073,8 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
eNB
->
fh_asynch
=
fh_if4p5_asynch_DL
;
eNB
->
start_rf
=
start_rf
;
eNB
->
start_if
=
start_if
;
eNB
->
rfdevice
.
host_type
=
RRH_HOST
;
eNB
->
ifdevice
.
host_type
=
RRH_HOST
;
if
(
oaisim_flag
==
0
)
{
ret
=
openair0_device_load
(
&
eNB
->
rfdevice
,
&
openair0_cfg
[
CC_id
]);
if
(
ret
<
0
)
{
...
...
@@ -2080,8 +2082,7 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
exit
(
-
1
);
}
}
eNB
->
rfdevice
.
host_type
=
RRH_HOST
;
eNB
->
ifdevice
.
host_type
=
RRH_HOST
;
printf
(
"loading transport interface ...
\n
"
);
ret
=
openair0_transport_load
(
&
eNB
->
ifdevice
,
&
openair0_cfg
[
CC_id
],
eNB
->
eth_params
);
printf
(
"openair0_transport_init returns %d for CC_id %d
\n
"
,
ret
,
CC_id
);
...
...
@@ -2106,6 +2107,9 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
eNB
->
start_rf
=
start_rf
;
eNB
->
start_if
=
NULL
;
eNB
->
fh_asynch
=
NULL
;
eNB
->
rfdevice
.
host_type
=
BBU_HOST
;
eNB
->
ifdevice
.
host_type
=
BBU_HOST
;
if
(
oaisim_flag
==
0
)
{
ret
=
openair0_device_load
(
&
eNB
->
rfdevice
,
&
openair0_cfg
[
CC_id
]);
if
(
ret
<
0
)
{
...
...
@@ -2113,8 +2117,6 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
exit
(
-
1
);
}
}
eNB
->
rfdevice
.
host_type
=
BBU_HOST
;
eNB
->
ifdevice
.
host_type
=
BBU_HOST
;
break
;
case
eNodeB_3GPP_BBU
:
eNB
->
do_precoding
=
eNB
->
frame_parms
.
nb_antennas_tx
!=
eNB
->
frame_parms
.
nb_antenna_ports_eNB
;
...
...
targets/RT/USER/lte-softmodem.c
View file @
fbaf8a62
...
...
@@ -640,29 +640,6 @@ static void get_options (int argc, char **argv) {
LONG_OPTION_T_NOWAIT
,
LONG_OPTION_T_DONT_FORK
,
#endif
<<<<<<<
HEAD
static
const
struct
option
long_options
[]
=
{
{
"rf-config-file"
,
required_argument
,
NULL
,
LONG_OPTION_RF_CONFIG_FILE
},
{
"ulsch-max-errors"
,
required_argument
,
NULL
,
LONG_OPTION_ULSCH_MAX_CONSECUTIVE_ERRORS
},
{
"calib-ue-rx"
,
required_argument
,
NULL
,
LONG_OPTION_CALIB_UE_RX
},
{
"calib-ue-rx-med"
,
required_argument
,
NULL
,
LONG_OPTION_CALIB_UE_RX_MED
},
{
"calib-ue-rx-byp"
,
required_argument
,
NULL
,
LONG_OPTION_CALIB_UE_RX_BYP
},
{
"debug-ue-prach"
,
no_argument
,
NULL
,
LONG_OPTION_DEBUG_UE_PRACH
},
{
"no-L2-connect"
,
no_argument
,
NULL
,
LONG_OPTION_NO_L2_CONNECT
},
{
"calib-prach-tx"
,
no_argument
,
NULL
,
LONG_OPTION_CALIB_PRACH_TX
},
{
"ue-rxgain"
,
required_argument
,
NULL
,
LONG_OPTION_RXGAIN
},
{
"ue-rxgain-off"
,
required_argument
,
NULL
,
LONG_OPTION_RXGAINOFF
},
{
"ue-txgain"
,
required_argument
,
NULL
,
LONG_OPTION_TXGAIN
},
{
"ue-scan-carrier"
,
no_argument
,
NULL
,
LONG_OPTION_SCANCARRIER
},
{
"ue-max-power"
,
required_argument
,
NULL
,
LONG_OPTION_MAXPOWER
},
{
"ue-dump-frame"
,
no_argument
,
NULL
,
LONG_OPTION_DUMP_FRAME
},
{
"loop-memory"
,
required_argument
,
NULL
,
LONG_OPTION_LOOPMEMORY
},
{
"phy-test"
,
no_argument
,
NULL
,
LONG_OPTION_PHYTEST
},
{
"usim-test"
,
no_argument
,
NULL
,
LONG_OPTION_USIMTEST
},
{
"mmapped-dma"
,
no_argument
,
NULL
,
LONG_OPTION_MMAPPED_DMA
},
{
"single-thread-disable"
,
no_argument
,
NULL
,
LONG_OPTION_SINGLE_THREAD_DISABLE
},
=======
};
static
const
struct
option
long_options
[]
=
{
...
...
@@ -692,7 +669,7 @@ static void get_options (int argc, char **argv) {
{
"threadIQ"
,
required_argument
,
NULL
,
LONG_OPTION_THREADIQ
},
{
"threadOddSubframe"
,
required_argument
,
NULL
,
LONG_OPTION_THREADODDSUBFRAME
},
{
"threadEvenSubframe"
,
required_argument
,
NULL
,
LONG_OPTION_THREADEVENSUBFRAME
},
>>>>>>>
origin
/
develop
#if T_TRACER
{
"T_port"
,
required_argument
,
0
,
LONG_OPTION_T_PORT
},
{
"T_nowait"
,
no_argument
,
0
,
LONG_OPTION_T_NOWAIT
},
...
...
@@ -1501,15 +1478,11 @@ int main( int argc, char **argv ) {
MSC_INIT
(
MSC_E_UTRAN
,
THREAD_MAX
+
TASK_MAX
);
#endif
if
(
opt_type
!=
OPT_NONE
)
{
radio_type_t
radio_type
;
<<<<<<<
HEAD
if
(
init_opt
(
in_path
,
in_ip
,
NULL
,
radio_type
)
==
-
1
)
LOG_E
(
OPT
,
"failed to run OPT
\n
"
);
}
/*
=======
if
(
frame_parms
[
0
]
->
frame_type
==
FDD
)
radio_type
=
RADIO_TYPE_FDD
;
else
...
...
@@ -1519,14 +1492,13 @@ int main( int argc, char **argv ) {
LOG_E
(
OPT
,
"failed to run OPT
\n
"
);
}
>>>>>>> origin/develop
#ifdef PDCP_USE_NETLINK
netlink_init
();
#if defined(PDCP_USE_NETLINK_QUEUES)
pdcp_netlink_init
();
#endif
#endif
*/
#if !defined(ENABLE_ITTI)
// to make a graceful exit when ctrl-c is pressed
signal
(
SIGSEGV
,
signal_handler
);
...
...
@@ -1755,15 +1727,17 @@ int main( int argc, char **argv ) {
#if defined(ENABLE_ITTI)
if
((
UE_flag
==
1
)
||
(
node_function
[
0
]
<
NGFI_RAU_IF4p5
))
if
((
phy_test
==
0
)
&&
((
UE_flag
==
1
)
||
(
node_function
[
0
]
<
NGFI_RAU_IF4p5
)))
// don't create if node doesn't connect to RRC/S1/GTP
if
(
create_tasks
(
UE_flag
?
0
:
1
,
UE_flag
?
1
:
0
)
<
0
)
{
printf
(
"cannot create ITTI tasks
\n
"
);
exit
(
-
1
);
// need a softer mode
printf
(
"ITTI tasks created
\n
"
);
}
printf
(
"ITTI tasks created
\n
"
);
#endif
if
(
phy_test
==
0
)
{
...
...
FANG WANG
@wf
mentioned in commit
b4e48d88
·
Jul 05, 2022
mentioned in commit
b4e48d88
mentioned in commit b4e48d88298e04f14b6c11fc0224cf1327224240
Toggle commit list
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