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
canghaiwuhen
OpenXG-RAN
Commits
2104817a
Commit
2104817a
authored
Oct 24, 2018
by
Wang Tsu-Han
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
name changing for L1
parent
09187015
Changes
7
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
146 additions
and
142 deletions
+146
-142
nfapi/oai_integration/nfapi_pnf.c
nfapi/oai_integration/nfapi_pnf.c
+4
-4
nfapi/oai_integration/nfapi_vnf.c
nfapi/oai_integration/nfapi_vnf.c
+13
-13
openair1/PHY/TOOLS/lte_phy_scope.c
openair1/PHY/TOOLS/lte_phy_scope.c
+1
-1
openair1/PHY/defs_eNB.h
openair1/PHY/defs_eNB.h
+13
-8
openair1/SCHED/fapi_l1.c
openair1/SCHED/fapi_l1.c
+1
-1
targets/RT/USER/lte-enb.c
targets/RT/USER/lte-enb.c
+110
-111
targets/RT/USER/lte-ru.c
targets/RT/USER/lte-ru.c
+4
-4
No files found.
nfapi/oai_integration/nfapi_pnf.c
View file @
2104817a
...
@@ -741,7 +741,7 @@ int pnf_phy_hi_dci0_req(nfapi_pnf_p7_config_t* pnf_p7, nfapi_hi_dci0_request_t*
...
@@ -741,7 +741,7 @@ int pnf_phy_hi_dci0_req(nfapi_pnf_p7_config_t* pnf_p7, nfapi_hi_dci0_request_t*
//phy_info* phy = (phy_info*)(pnf_p7->user_data);
//phy_info* phy = (phy_info*)(pnf_p7->user_data);
struct
PHY_VARS_eNB_s
*
eNB
=
RC
.
eNB
[
0
][
0
];
struct
PHY_VARS_eNB_s
*
eNB
=
RC
.
eNB
[
0
][
0
];
eNB_rxtx_proc_t
*
proc
=
&
eNB
->
proc
.
proc_rxtx
[
0
]
;
eNB_rxtx_proc_t
*
proc
=
&
eNB
->
proc
.
L1_proc
;
for
(
int
i
=
0
;
i
<
req
->
hi_dci0_request_body
.
number_of_dci
+
req
->
hi_dci0_request_body
.
number_of_hi
;
i
++
)
{
for
(
int
i
=
0
;
i
<
req
->
hi_dci0_request_body
.
number_of_dci
+
req
->
hi_dci0_request_body
.
number_of_hi
;
i
++
)
{
...
@@ -798,7 +798,7 @@ int pnf_phy_dl_config_req(nfapi_pnf_p7_config_t* pnf_p7, nfapi_dl_config_request
...
@@ -798,7 +798,7 @@ int pnf_phy_dl_config_req(nfapi_pnf_p7_config_t* pnf_p7, nfapi_dl_config_request
int
sf
=
NFAPI_SFNSF2SF
(
req
->
sfn_sf
);
int
sf
=
NFAPI_SFNSF2SF
(
req
->
sfn_sf
);
struct
PHY_VARS_eNB_s
*
eNB
=
RC
.
eNB
[
0
][
0
];
struct
PHY_VARS_eNB_s
*
eNB
=
RC
.
eNB
[
0
][
0
];
eNB_rxtx_proc_t
*
proc
=
&
eNB
->
proc
.
proc_rxtx
[
0
]
;
eNB_rxtx_proc_t
*
proc
=
&
eNB
->
proc
.
L1_proc
;
nfapi_dl_config_request_pdu_t
*
dl_config_pdu_list
=
req
->
dl_config_request_body
.
dl_config_pdu_list
;
nfapi_dl_config_request_pdu_t
*
dl_config_pdu_list
=
req
->
dl_config_request_body
.
dl_config_pdu_list
;
LTE_eNB_PDCCH
*
pdcch_vars
=
&
eNB
->
pdcch_vars
[
sf
&
1
];
LTE_eNB_PDCCH
*
pdcch_vars
=
&
eNB
->
pdcch_vars
[
sf
&
1
];
...
@@ -869,7 +869,7 @@ int pnf_phy_dl_config_req(nfapi_pnf_p7_config_t* pnf_p7, nfapi_dl_config_request
...
@@ -869,7 +869,7 @@ int pnf_phy_dl_config_req(nfapi_pnf_p7_config_t* pnf_p7, nfapi_dl_config_request
//NFAPI_TRACE(NFAPI_TRACE_INFO, "%s() DLSCH:pdu_index:%d handle_nfapi_dlsch_pdu(eNB, proc_rxtx, dlsch_pdu, transport_blocks:%d sdu:%p) eNB->pdcch_vars[proc->subframe_tx & 1].num_pdcch_symbols:%d\n", __FUNCTION__, rel8_pdu->pdu_index, rel8_pdu->transport_blocks, dlsch_sdu, eNB->pdcch_vars[proc->subframe_tx & 1].num_pdcch_symbols);
//NFAPI_TRACE(NFAPI_TRACE_INFO, "%s() DLSCH:pdu_index:%d handle_nfapi_dlsch_pdu(eNB, proc_rxtx, dlsch_pdu, transport_blocks:%d sdu:%p) eNB->pdcch_vars[proc->subframe_tx & 1].num_pdcch_symbols:%d\n", __FUNCTION__, rel8_pdu->pdu_index, rel8_pdu->transport_blocks, dlsch_sdu, eNB->pdcch_vars[proc->subframe_tx & 1].num_pdcch_symbols);
handle_nfapi_dlsch_pdu
(
eNB
,
sfn
,
sf
,
&
eNB
->
proc
.
proc_rxtx
[
0
]
,
&
dl_config_pdu_list
[
i
],
rel8_pdu
->
transport_blocks
-
1
,
dlsch_sdu
);
handle_nfapi_dlsch_pdu
(
eNB
,
sfn
,
sf
,
&
eNB
->
proc
.
L1_proc
,
&
dl_config_pdu_list
[
i
],
rel8_pdu
->
transport_blocks
-
1
,
dlsch_sdu
);
}
else
{
}
else
{
...
@@ -945,7 +945,7 @@ int pnf_phy_ul_config_req(nfapi_pnf_p7_config_t* pnf_p7, nfapi_ul_config_request
...
@@ -945,7 +945,7 @@ int pnf_phy_ul_config_req(nfapi_pnf_p7_config_t* pnf_p7, nfapi_ul_config_request
uint16_t
curr_sf
=
NFAPI_SFNSF2SF
(
req
->
sfn_sf
);
uint16_t
curr_sf
=
NFAPI_SFNSF2SF
(
req
->
sfn_sf
);
struct
PHY_VARS_eNB_s
*
eNB
=
RC
.
eNB
[
0
][
0
];
struct
PHY_VARS_eNB_s
*
eNB
=
RC
.
eNB
[
0
][
0
];
eNB_rxtx_proc_t
*
proc
=
&
eNB
->
proc
.
proc_rxtx
[
0
]
;
eNB_rxtx_proc_t
*
proc
=
&
eNB
->
proc
.
L1_proc
;
nfapi_ul_config_request_pdu_t
*
ul_config_pdu_list
=
req
->
ul_config_request_body
.
ul_config_pdu_list
;
nfapi_ul_config_request_pdu_t
*
ul_config_pdu_list
=
req
->
ul_config_request_body
.
ul_config_pdu_list
;
for
(
int
i
=
0
;
i
<
req
->
ul_config_request_body
.
number_of_pdus
;
i
++
)
{
for
(
int
i
=
0
;
i
<
req
->
ul_config_request_body
.
number_of_pdus
;
i
++
)
{
...
...
nfapi/oai_integration/nfapi_vnf.c
View file @
2104817a
...
@@ -345,7 +345,7 @@ int wake_eNB_rxtx(PHY_VARS_eNB *eNB, uint16_t sfn, uint16_t sf) {
...
@@ -345,7 +345,7 @@ int wake_eNB_rxtx(PHY_VARS_eNB *eNB, uint16_t sfn, uint16_t sf) {
eNB_proc_t
*
proc
=&
eNB
->
proc
;
eNB_proc_t
*
proc
=&
eNB
->
proc
;
eNB_rxtx_proc_t
*
proc_rxtx
=&
proc
->
proc_rxtx
[
sf
&
1
]
;
eNB_rxtx_proc_t
*
L1_proc
=
(
sf
&
1
)
?
&
proc
->
L1_proc
:
&
proc
->
L1_proc_tx
;
LTE_DL_FRAME_PARMS
*
fp
=
&
eNB
->
frame_parms
;
LTE_DL_FRAME_PARMS
*
fp
=
&
eNB
->
frame_parms
;
...
@@ -359,8 +359,8 @@ int wake_eNB_rxtx(PHY_VARS_eNB *eNB, uint16_t sfn, uint16_t sf) {
...
@@ -359,8 +359,8 @@ int wake_eNB_rxtx(PHY_VARS_eNB *eNB, uint16_t sfn, uint16_t sf) {
// wake up TX for subframe n+sf_ahead
// wake up TX for subframe n+sf_ahead
// lock the TX mutex and make sure the thread is ready
// lock the TX mutex and make sure the thread is ready
if
(
pthread_mutex_timedlock
(
&
proc_rxtx
->
mutex_rxt
x
,
&
wait
)
!=
0
)
{
if
(
pthread_mutex_timedlock
(
&
L1_proc
->
mute
x
,
&
wait
)
!=
0
)
{
LOG_E
(
PHY
,
"[eNB] ERROR pthread_mutex_lock for eNB RXTX thread %d (IC %d)
\n
"
,
proc_rxtx
->
subframe_rx
&
1
,
proc_rxtx
->
instance_cnt_rxtx
);
LOG_E
(
PHY
,
"[eNB] ERROR pthread_mutex_lock for eNB RXTX thread %d (IC %d)
\n
"
,
L1_proc
->
subframe_rx
&
1
,
L1_proc
->
instance_cnt
);
exit_fun
(
"error locking mutex_rxtx"
);
exit_fun
(
"error locking mutex_rxtx"
);
return
(
-
1
);
return
(
-
1
);
}
}
...
@@ -379,9 +379,9 @@ int wake_eNB_rxtx(PHY_VARS_eNB *eNB, uint16_t sfn, uint16_t sf) {
...
@@ -379,9 +379,9 @@ int wake_eNB_rxtx(PHY_VARS_eNB *eNB, uint16_t sfn, uint16_t sf) {
if
(
old_sf
==
0
&&
old_sfn
%
100
==
0
)
LOG_W
(
PHY
,
"[eNB] sfn/sf:%d%d old_sfn/sf:%d%d proc[rx:%d%d]
\n
"
,
sfn
,
sf
,
old_sfn
,
old_sf
,
proc
->
frame_rx
,
proc
->
subframe_rx
);
if
(
old_sf
==
0
&&
old_sfn
%
100
==
0
)
LOG_W
(
PHY
,
"[eNB] sfn/sf:%d%d old_sfn/sf:%d%d proc[rx:%d%d]
\n
"
,
sfn
,
sf
,
old_sfn
,
old_sf
,
proc
->
frame_rx
,
proc
->
subframe_rx
);
}
}
++
proc_rxtx
->
instance_cnt_rxtx
;
++
L1_proc
->
instance_cnt
;
//LOG_D( PHY,"[VNF-subframe_ind] sfn/sf:%d:%d proc[frame_rx:%d subframe_rx:%d]
proc_rxtx->instance_cnt_rxtx:%d \n", sfn, sf, proc->frame_rx, proc->subframe_rx, proc_rxtx
->instance_cnt_rxtx);
//LOG_D( PHY,"[VNF-subframe_ind] sfn/sf:%d:%d proc[frame_rx:%d subframe_rx:%d]
L1_proc->instance_cnt_rxtx:%d \n", sfn, sf, proc->frame_rx, proc->subframe_rx, L1_proc
->instance_cnt_rxtx);
// We have just received and processed the common part of a subframe, say n.
// We have just received and processed the common part of a subframe, say n.
// TS_rx is the last received timestamp (start of 1st slot), TS_tx is the desired
// TS_rx is the last received timestamp (start of 1st slot), TS_tx is the desired
...
@@ -389,23 +389,23 @@ int wake_eNB_rxtx(PHY_VARS_eNB *eNB, uint16_t sfn, uint16_t sf) {
...
@@ -389,23 +389,23 @@ int wake_eNB_rxtx(PHY_VARS_eNB *eNB, uint16_t sfn, uint16_t sf) {
// The last (TS_rx mod samples_per_frame) was n*samples_per_tti,
// The last (TS_rx mod samples_per_frame) was n*samples_per_tti,
// we want to generate subframe (n+N), so TS_tx = TX_rx+N*samples_per_tti,
// we want to generate subframe (n+N), so TS_tx = TX_rx+N*samples_per_tti,
// and proc->subframe_tx = proc->subframe_rx+sf_ahead
// and proc->subframe_tx = proc->subframe_rx+sf_ahead
proc_rxtx
->
timestamp_tx
=
proc
->
timestamp_rx
+
(
sf_ahead
*
fp
->
samples_per_tti
);
L1_proc
->
timestamp_tx
=
proc
->
timestamp_rx
+
(
sf_ahead
*
fp
->
samples_per_tti
);
proc_rxtx
->
frame_rx
=
proc
->
frame_rx
;
L1_proc
->
frame_rx
=
proc
->
frame_rx
;
proc_rxtx
->
subframe_rx
=
proc
->
subframe_rx
;
L1_proc
->
subframe_rx
=
proc
->
subframe_rx
;
proc_rxtx
->
frame_tx
=
(
proc_rxtx
->
subframe_rx
>
(
9
-
sf_ahead
))
?
(
proc_rxtx
->
frame_rx
+
1
)
&
1023
:
proc_rxtx
->
frame_rx
;
L1_proc
->
frame_tx
=
(
L1_proc
->
subframe_rx
>
(
9
-
sf_ahead
))
?
(
L1_proc
->
frame_rx
+
1
)
&
1023
:
L1_proc
->
frame_rx
;
proc_rxtx
->
subframe_tx
=
(
proc_rxtx
->
subframe_rx
+
sf_ahead
)
%
10
;
L1_proc
->
subframe_tx
=
(
L1_proc
->
subframe_rx
+
sf_ahead
)
%
10
;
//LOG_D(PHY, "sfn/sf:%d%d proc[rx:%d%d]
proc_rxtx[instance_cnt_rxtx:%d rx:%d%d] About to wake rxtx thread\n\n", sfn, sf, proc->frame_rx, proc->subframe_rx, proc_rxtx->instance_cnt_rxtx, proc_rxtx->frame_rx, proc_rxtx
->subframe_rx);
//LOG_D(PHY, "sfn/sf:%d%d proc[rx:%d%d]
L1_proc[instance_cnt_rxtx:%d rx:%d%d] About to wake rxtx thread\n\n", sfn, sf, proc->frame_rx, proc->subframe_rx, L1_proc->instance_cnt_rxtx, L1_proc->frame_rx, L1_proc
->subframe_rx);
// the thread can now be woken up
// the thread can now be woken up
if
(
pthread_cond_signal
(
&
proc_rxtx
->
cond_rxtx
)
!=
0
)
{
if
(
pthread_cond_signal
(
&
L1_proc
->
cond
)
!=
0
)
{
LOG_E
(
PHY
,
"[eNB] ERROR pthread_cond_signal for eNB RXn-TXnp4 thread
\n
"
);
LOG_E
(
PHY
,
"[eNB] ERROR pthread_cond_signal for eNB RXn-TXnp4 thread
\n
"
);
exit_fun
(
"ERROR pthread_cond_signal"
);
exit_fun
(
"ERROR pthread_cond_signal"
);
return
(
-
1
);
return
(
-
1
);
}
}
//LOG_D(PHY,"%s() About to attempt pthread_mutex_unlock\n", __FUNCTION__);
//LOG_D(PHY,"%s() About to attempt pthread_mutex_unlock\n", __FUNCTION__);
pthread_mutex_unlock
(
&
proc_rxtx
->
mutex_rxt
x
);
pthread_mutex_unlock
(
&
L1_proc
->
mute
x
);
//LOG_D(PHY,"%s() UNLOCKED pthread_mutex_unlock\n", __FUNCTION__);
//LOG_D(PHY,"%s() UNLOCKED pthread_mutex_unlock\n", __FUNCTION__);
return
(
0
);
return
(
0
);
...
...
openair1/PHY/TOOLS/lte_phy_scope.c
View file @
2104817a
...
@@ -178,7 +178,7 @@ void phy_scope_eNB(FD_lte_phy_scope_enb *form,
...
@@ -178,7 +178,7 @@ void phy_scope_eNB(FD_lte_phy_scope_enb *form,
float
time
[
FRAME_LENGTH_COMPLEX_SAMPLES
];
float
time
[
FRAME_LENGTH_COMPLEX_SAMPLES
];
float
time2
[
2048
];
float
time2
[
2048
];
float
freq
[
nsymb_ce
*
nb_antennas_rx
*
nb_antennas_tx
];
float
freq
[
nsymb_ce
*
nb_antennas_rx
*
nb_antennas_tx
];
int
frame
=
phy_vars_enb
->
proc
.
proc_rxtx
[
0
]
.
frame_tx
;
int
frame
=
phy_vars_enb
->
proc
.
L1_proc
.
frame_tx
;
uint32_t
total_dlsch_bitrate
=
phy_vars_enb
->
total_dlsch_bitrate
;
uint32_t
total_dlsch_bitrate
=
phy_vars_enb
->
total_dlsch_bitrate
;
int
coded_bits_per_codeword
=
0
;
int
coded_bits_per_codeword
=
0
;
uint8_t
harq_pid
;
// in TDD config 3 it is sf-2, i.e., can be 0,1,2
uint8_t
harq_pid
;
// in TDD config 3 it is sf-2, i.e., can be 0,1,2
...
...
openair1/PHY/defs_eNB.h
View file @
2104817a
...
@@ -648,19 +648,24 @@ typedef struct {
...
@@ -648,19 +648,24 @@ typedef struct {
int
frame_rx
;
int
frame_rx
;
/// \brief Instance count for RXn-TXnp4 processing thread.
/// \brief Instance count for RXn-TXnp4 processing thread.
/// \internal This variable is protected by \ref mutex_rxtx.
/// \internal This variable is protected by \ref mutex_rxtx.
int
instance_cnt
_rxtx
;
int
instance_cnt
;
/// pthread structure for RXn-TXnp4 processing thread
/// pthread structure for RXn-TXnp4 processing thread
pthread_t
pthread
_rxtx
;
pthread_t
pthread
;
/// pthread attributes for RXn-TXnp4 processing thread
/// pthread attributes for RXn-TXnp4 processing thread
pthread_attr_t
attr
_rxtx
;
pthread_attr_t
attr
;
/// condition variable for tx processing thread
/// condition variable for tx processing thread
pthread_cond_t
cond
_rxtx
;
pthread_cond_t
cond
;
/// mutex for RXn-TXnp4 processing thread
/// mutex for RXn-TXnp4 processing thread
pthread_mutex_t
mutex
_rxtx
;
pthread_mutex_t
mutex
;
/// scheduling parameters for RXn-TXnp4 thread
/// scheduling parameters for RXn-TXnp4 thread
struct
sched_param
sched_param_rxtx
;
struct
sched_param
sched_param_rxtx
;
/// pipeline ready state
int
pipe_ready
;
/// \internal This variable is protected by \ref mutex_RUs.
int
instance_cnt_RUs
;
/// condition variable for tx processing thread
pthread_cond_t
cond_RUs
;
/// mutex for RXn-TXnp4 processing thread
pthread_mutex_t
mutex_RUs
;
}
eNB_rxtx_proc_t
;
}
eNB_rxtx_proc_t
;
typedef
struct
{
typedef
struct
{
...
@@ -821,7 +826,7 @@ typedef struct eNB_proc_t_s {
...
@@ -821,7 +826,7 @@ typedef struct eNB_proc_t_s {
/// parameters for turbo-encoding worker thread
/// parameters for turbo-encoding worker thread
te_params
tep
[
3
];
te_params
tep
[
3
];
/// set of scheduling variables RXn-TXnp4 threads
/// set of scheduling variables RXn-TXnp4 threads
eNB_rxtx_proc_t
proc_rxtx
[
2
]
;
eNB_rxtx_proc_t
L1_proc
,
L1_proc_tx
;
/// stats thread pthread descriptor
/// stats thread pthread descriptor
pthread_t
process_stats_thread
;
pthread_t
process_stats_thread
;
/// for waking up tx procedure
/// for waking up tx procedure
...
...
openair1/SCHED/fapi_l1.c
View file @
2104817a
...
@@ -670,7 +670,7 @@ void schedule_response(Sched_Rsp_t *Sched_INFO)
...
@@ -670,7 +670,7 @@ void schedule_response(Sched_Rsp_t *Sched_INFO)
eNB
=
RC
.
eNB
[
Mod_id
][
CC_id
];
eNB
=
RC
.
eNB
[
Mod_id
][
CC_id
];
fp
=
&
eNB
->
frame_parms
;
fp
=
&
eNB
->
frame_parms
;
proc
=
&
eNB
->
proc
.
proc_rxtx
[
0
]
;
proc
=
&
eNB
->
proc
.
L1_proc
;
/* TODO: check that following line is correct - in the meantime it is disabled */
/* TODO: check that following line is correct - in the meantime it is disabled */
//if ((fp->frame_type == TDD) && (subframe_select(fp,subframe)==SF_UL)) return;
//if ((fp->frame_type == TDD) && (subframe_select(fp,subframe)==SF_UL)) return;
...
...
targets/RT/USER/lte-enb.c
View file @
2104817a
This diff is collapsed.
Click to expand it.
targets/RT/USER/lte-ru.c
View file @
2104817a
...
@@ -1974,7 +1974,7 @@ static void* eNB_thread_phy_tx( void* param ) {
...
@@ -1974,7 +1974,7 @@ static void* eNB_thread_phy_tx( void* param ) {
RU_proc_t
*
proc
=
&
ru
->
proc
;
RU_proc_t
*
proc
=
&
ru
->
proc
;
PHY_VARS_eNB
**
eNB_list
=
ru
->
eNB_list
;
PHY_VARS_eNB
**
eNB_list
=
ru
->
eNB_list
;
eNB_rxtx_proc_t
proc_rxtx
;
eNB_rxtx_proc_t
L1_proc
;
// set default return value
// set default return value
eNB_thread_phy_tx_status
=
0
;
eNB_thread_phy_tx_status
=
0
;
...
@@ -1991,9 +1991,9 @@ static void* eNB_thread_phy_tx( void* param ) {
...
@@ -1991,9 +1991,9 @@ static void* eNB_thread_phy_tx( void* param ) {
LOG_D
(
PHY
,
"Running eNB phy tx procedures
\n
"
);
LOG_D
(
PHY
,
"Running eNB phy tx procedures
\n
"
);
if
(
ru
->
num_eNB
==
1
){
if
(
ru
->
num_eNB
==
1
){
proc_rxtx
.
subframe_tx
=
proc
->
subframe_phy_tx
;
L1_proc
.
subframe_tx
=
proc
->
subframe_phy_tx
;
proc_rxtx
.
frame_tx
=
proc
->
frame_phy_tx
;
L1_proc
.
frame_tx
=
proc
->
frame_phy_tx
;
phy_procedures_eNB_TX
(
eNB_list
[
0
],
&
proc_rxtx
,
1
);
phy_procedures_eNB_TX
(
eNB_list
[
0
],
&
L1_proc
,
1
);
phy_tx_txdataF_end
=
1
;
phy_tx_txdataF_end
=
1
;
if
(
pthread_mutex_lock
(
&
ru
->
proc
.
mutex_rf_tx
)
!=
0
){
if
(
pthread_mutex_lock
(
&
ru
->
proc
.
mutex_rf_tx
)
!=
0
){
LOG_E
(
PHY
,
"[RU] ERROR pthread_mutex_lock for rf tx thread (IC %d)
\n
"
,
ru
->
proc
.
instance_cnt_rf_tx
);
LOG_E
(
PHY
,
"[RU] ERROR pthread_mutex_lock for rf tx thread (IC %d)
\n
"
,
ru
->
proc
.
instance_cnt_rf_tx
);
...
...
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