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
6cb25d77
Commit
6cb25d77
authored
Jun 01, 2019
by
Florian Kaltenberger
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
making the dl_indication a local variable to avoid race conditions
parent
3574481b
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
20 additions
and
16 deletions
+20
-16
maketags
maketags
+1
-1
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
+19
-15
No files found.
maketags
View file @
6cb25d77
#!/bin/sh
echo
"building ctags for openair1 and openair2 ..."
ctags
-e
-R
--exclude
=
openair1/DOCS/
--exclude
=
openair2/DOCS/
--exclude
=
openair1/SIMULATION/
--exclude
=
targets/DOCS/
--exclude
=
targets/PROJECTS/ openair1 openair2 openair3 targets cmake_targets common nfapi
ctags
-e
-R
--exclude
=
openair1/DOCS/
--exclude
=
openair2/DOCS/
--exclude
=
openair1/SIMULATION/
--exclude
=
targets/DOCS/
--exclude
=
targets/PROJECTS/ openair1 openair2 openair3 targets cmake_targets common nfapi
executables
openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
View file @
6cb25d77
...
...
@@ -2959,6 +2959,10 @@ int nr_ue_pdcch_procedures(uint8_t eNB_id,
nr_tti_rx
,
nb_searchspace_total
);
#endif
//FK: we define dci_ind and dl_indication as local variables, this way the call to the mac should be thread safe
fapi_nr_dci_indication_t
dci_ind
;
nr_downlink_indication_t
dl_indication
;
// p in TS 38.212 Subclause 10.1, for each active BWP the UE can deal with 3 different CORESETs (including coresetId 0 for common search space)
//int nb_coreset_total = NR_NBR_CORESET_ACT_BWP;
unsigned
int
dci_cnt
=
0
;
...
...
@@ -3151,7 +3155,7 @@ int nr_ue_pdcch_procedures(uint8_t eNB_id,
//emos_dump_UE.dci_cnt[nr_tti_rx] = dci_cnt;
#endif
ue
->
dci_ind
.
number_of_dcis
=
dci_cnt
;
dci_ind
.
number_of_dcis
=
dci_cnt
;
for
(
int
i
=
0
;
i
<
dci_cnt
;
i
++
)
{
/*
...
...
@@ -3191,12 +3195,12 @@ int nr_ue_pdcch_procedures(uint8_t eNB_id,
LOG_D
(
PHY
,
"<-NR_PDCCH_PHY_PROCEDURES_UE (nr_ue_pdcch_procedures)-> dci_format=%d, rnti=%d, dci_length=%d, dci_pdu[0]=0x%lx, dci_pdu[1]=0x%lx
\n
"
,
dci_alloc_rx
[
i
].
format
,
dci_alloc_rx
[
i
].
rnti
,
dci_alloc_rx
[
i
].
dci_length
,
dci_alloc_rx
[
i
].
dci_pdu
[
0
],
dci_alloc_rx
[
i
].
dci_pdu
[
1
]);
memset
(
&
ue
->
dci_ind
.
dci_list
[
i
].
dci
,
0
,
sizeof
(
fapi_nr_dci_pdu_rel15_t
));
memset
(
&
dci_ind
.
dci_list
[
i
].
dci
,
0
,
sizeof
(
fapi_nr_dci_pdu_rel15_t
));
ue
->
dci_ind
.
dci_list
[
i
].
rnti
=
dci_alloc_rx
[
i
].
rnti
;
ue
->
dci_ind
.
dci_list
[
i
].
dci_format
=
dci_alloc_rx
[
i
].
format
;
ue
->
dci_ind
.
dci_list
[
i
].
n_CCE
=
dci_alloc_rx
[
i
].
firstCCE
;
ue
->
dci_ind
.
dci_list
[
i
].
N_CCE
=
(
int
)
dci_alloc_rx
[
i
].
L
;
dci_ind
.
dci_list
[
i
].
rnti
=
dci_alloc_rx
[
i
].
rnti
;
dci_ind
.
dci_list
[
i
].
dci_format
=
dci_alloc_rx
[
i
].
format
;
dci_ind
.
dci_list
[
i
].
n_CCE
=
dci_alloc_rx
[
i
].
firstCCE
;
dci_ind
.
dci_list
[
i
].
N_CCE
=
(
int
)
dci_alloc_rx
[
i
].
L
;
status
=
nr_extract_dci_info
(
ue
,
eNB_id
,
...
...
@@ -3204,7 +3208,7 @@ int nr_ue_pdcch_procedures(uint8_t eNB_id,
dci_alloc_rx
[
i
].
dci_length
,
dci_alloc_rx
[
i
].
rnti
,
dci_alloc_rx
[
i
].
dci_pdu
,
&
ue
->
dci_ind
.
dci_list
[
i
].
dci
,
&
dci_ind
.
dci_list
[
i
].
dci
,
dci_fields_sizes_cnt
[
i
],
dci_alloc_rx
[
i
].
format
,
nr_tti_rx
,
...
...
@@ -3246,16 +3250,16 @@ int nr_ue_pdcch_procedures(uint8_t eNB_id,
}
// end for loop dci_cnt
// fill dl_indication message
ue
->
dl_indication
.
module_id
=
ue
->
Mod_id
;
ue
->
dl_indication
.
cc_id
=
ue
->
CC_id
;
ue
->
dl_indication
.
gNB_index
=
eNB_id
;
ue
->
dl_indication
.
frame
=
frame_rx
;
ue
->
dl_indication
.
slot
=
nr_tti_rx
;
ue
->
dl_indication
.
rx_ind
=
NULL
;
//no data, only dci for now
ue
->
dl_indication
.
dci_ind
=
&
ue
->
dci_ind
;
dl_indication
.
module_id
=
ue
->
Mod_id
;
dl_indication
.
cc_id
=
ue
->
CC_id
;
dl_indication
.
gNB_index
=
eNB_id
;
dl_indication
.
frame
=
frame_rx
;
dl_indication
.
slot
=
nr_tti_rx
;
dl_indication
.
rx_ind
=
NULL
;
//no data, only dci for now
dl_indication
.
dci_ind
=
&
dci_ind
;
// send to mac
ue
->
if_inst
->
dl_indication
(
&
ue
->
dl_indication
);
ue
->
if_inst
->
dl_indication
(
&
dl_indication
);
#if UE_TIMING_TRACE
stop_meas
(
&
ue
->
dlsch_rx_pdcch_stats
);
...
...
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