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
zzha zzha
OpenXG-RAN
Commits
806842a0
Commit
806842a0
authored
Oct 08, 2023
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/NR_UE_DCI_candidates' into integration_2023_w40
parents
b7746e9b
8934c7db
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
26 additions
and
16 deletions
+26
-16
openair2/LAYER2/NR_MAC_UE/nr_ue_dci_configuration.c
openair2/LAYER2/NR_MAC_UE/nr_ue_dci_configuration.c
+26
-16
No files found.
openair2/LAYER2/NR_MAC_UE/nr_ue_dci_configuration.c
View file @
806842a0
...
...
@@ -46,16 +46,16 @@ void fill_dci_search_candidates(const NR_SearchSpace_t *ss,
{
LOG_D
(
NR_MAC
,
"Filling search candidates for DCI
\n
"
);
rel15
->
number_of_candidates
=
0
;
int
i
=
0
;
for
(
int
maxL
=
16
;
maxL
>
0
;
maxL
>>=
1
)
{
uint8_t
aggregation
,
number_of_candidates
;
uint8_t
aggregation
,
max_
number_of_candidates
;
find_aggregation_candidates
(
&
aggregation
,
&
number_of_candidates
,
&
max_
number_of_candidates
,
ss
,
maxL
);
if
(
number_of_candidates
>
0
)
{
LOG_D
(
NR_MAC
,
"L %d, number of candidates %d, aggregation %d
\n
"
,
maxL
,
number_of_candidates
,
aggregation
);
if
(
max_number_of_candidates
==
0
)
continue
;
LOG_D
(
NR_MAC
,
"L %d, max number of candidates %d, aggregation %d
\n
"
,
maxL
,
max_number_of_candidates
,
aggregation
);
int
N_cce_sym
=
0
;
// nb of rbs of coreset per symbol
for
(
int
f
=
0
;
f
<
6
;
f
++
)
{
for
(
int
t
=
0
;
t
<
8
;
t
++
)
{
...
...
@@ -63,17 +63,27 @@ void fill_dci_search_candidates(const NR_SearchSpace_t *ss,
}
}
int
N_cces
=
N_cce_sym
*
rel15
->
coreset
.
duration
;
// limit the number of candidates to the ones fitting current configuration
int
max_candidates
=
min
(
N_cces
/
aggregation
,
number_of_candidates
);
rel15
->
number_of_candidates
+=
max_candidates
;
for
(
int
j
=
0
;
j
<
max_candidates
;
i
++
,
j
++
)
{
int
first_cce
=
aggregation
*
((
Y
+
((
j
*
N_cces
)
/
(
aggregation
*
number_of_candidates
))
+
0
)
%
(
N_cces
/
aggregation
));
LOG_D
(
NR_MAC
,
"Candidate %d of %d first_cce %d (L %d N_cces %d Y %d)
\n
"
,
j
,
max_candidates
,
first_cce
,
aggregation
,
N_cces
,
Y
);
if
(
N_cces
<
aggregation
)
continue
;
for
(
int
j
=
0
;
j
<
max_number_of_candidates
;
j
++
)
{
int
first_cce
=
aggregation
*
((
Y
+
((
j
*
N_cces
)
/
(
aggregation
*
max_number_of_candidates
))
+
0
)
%
(
N_cces
/
aggregation
));
LOG_D
(
NR_MAC
,
"Candidate %d of %d first_cce %d (L %d N_cces %d Y %d)
\n
"
,
j
,
max_number_of_candidates
,
first_cce
,
aggregation
,
N_cces
,
Y
);
// to avoid storing more than one candidate with the same aggregation and starting CCE (duplicated candidate)
bool
duplicated
=
false
;
for
(
int
k
=
0
;
k
<
i
;
k
++
)
{
if
(
rel15
->
CCE
[
k
]
==
first_cce
&&
rel15
->
L
[
k
]
==
aggregation
)
{
duplicated
=
true
;
LOG_D
(
NR_MAC
,
"Candidate %d of %d is duplicated
\n
"
,
j
,
max_number_of_candidates
);
}
}
if
(
!
duplicated
)
{
rel15
->
CCE
[
i
]
=
first_cce
;
rel15
->
L
[
i
]
=
aggregation
;
i
++
;
}
}
}
rel15
->
number_of_candidates
=
i
;
}
NR_ControlResourceSet_t
*
ue_get_coreset
(
const
NR_UE_MAC_INST_t
*
mac
,
const
int
coreset_id
)
...
...
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