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
lizhongxiao
OpenXG-RAN
Commits
dcae67c3
Commit
dcae67c3
authored
Jun 23, 2023
by
rmagueta
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bugfix for PDCCH monitoring occasions tables and SFN computation for FR2
parent
c1fbd777
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
13 additions
and
19 deletions
+13
-19
openair2/LAYER2/NR_MAC_COMMON/nr_mac.h
openair2/LAYER2/NR_MAC_COMMON/nr_mac.h
+1
-7
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
+11
-11
openair2/LAYER2/NR_MAC_UE/mac_defs.h
openair2/LAYER2/NR_MAC_UE/mac_defs.h
+1
-1
No files found.
openair2/LAYER2/NR_MAC_COMMON/nr_mac.h
View file @
dcae67c3
...
...
@@ -483,19 +483,13 @@ typedef enum nr_ssb_and_cset_mux_pattern_type_e {
NR_SSB_AND_CSET_MUX_PATTERN_TYPE3
}
nr_ssb_and_cset_mux_pattern_type_t
;
typedef
enum
{
SFN_C_MOD_2_EQ_0
,
SFN_C_MOD_2_EQ_1
,
SFN_C_IMPOSSIBLE
}
SFN_C_TYPE
;
typedef
struct
Type0_PDCCH_CSS_config_s
{
int32_t
num_rbs
;
int32_t
num_symbols
;
int32_t
rb_offset
;
// Offset from SSB RB0
uint32_t
type0_pdcch_ss_mux_pattern
;
uint16_t
frame
;
SFN_C_TYPE
sfn_c
;
int
sfn_c
;
uint32_t
n_c
;
uint32_t
n_0
;
uint32_t
number_of_search_space_per_slot
;
...
...
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
View file @
dcae67c3
...
...
@@ -164,12 +164,12 @@ const int32_t table_38213_13_10_c4[16] = { 0, 8, 0, 8,-41, 25,-41, 49, reserv
const
float
table_38213_13_11_c1
[
16
]
=
{
0
,
0
,
2
,
2
,
5
,
5
,
7
,
7
,
0
,
5
,
0
,
0
,
2
,
2
,
5
,
5
};
// O
const
int32_t
table_38213_13_11_c2
[
16
]
=
{
1
,
2
,
1
,
2
,
1
,
2
,
1
,
2
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
};
const
float
table_38213_13_11_c3
[
16
]
=
{
1
,
0
.
5
f
,
1
,
0
.
5
f
,
1
,
0
.
5
f
,
1
,
0
.
5
f
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
};
// M
const
float
table_38213_13_11_c3
[
16
]
=
{
1
,
0
.
5
f
,
1
,
0
.
5
f
,
1
,
0
.
5
f
,
1
,
0
.
5
f
,
2
,
2
,
1
,
1
,
1
,
1
,
1
,
1
};
// M
const
int32_t
table_38213_13_11_c4
[
16
]
=
{
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
2
,
1
,
2
,
1
,
2
};
// i is even as default
const
float
table_38213_13_12_c1
[
16
]
=
{
0
,
0
,
2
.
5
f
,
2
.
5
f
,
5
,
5
,
0
,
2
.
5
f
,
5
,
7
.
5
f
,
7
.
5
f
,
7
.
5
f
,
0
,
5
,
reserved
,
reserved
};
// O, index 14-15 reserved
const
int32_t
table_38213_13_12_c2
[
16
]
=
{
1
,
2
,
1
,
2
,
1
,
2
,
2
,
2
,
2
,
1
,
2
,
2
,
1
,
1
,
reserved
,
reserved
};
// index 14-15 reserved
const
float
table_38213_13_12_c3
[
16
]
=
{
1
,
0
.
5
f
,
1
,
0
.
5
f
,
1
,
0
.
5
f
,
0
.
5
f
,
0
.
5
f
,
0
.
5
f
,
1
,
0
.
5
f
,
0
.
5
f
,
1
,
1
,
reserved
,
reserved
};
// M, index 14-15 reserved
const
float
table_38213_13_12_c3
[
16
]
=
{
1
,
0
.
5
f
,
1
,
0
.
5
f
,
1
,
0
.
5
f
,
0
.
5
f
,
0
.
5
f
,
0
.
5
f
,
1
,
0
.
5
f
,
0
.
5
f
,
2
,
2
,
reserved
,
reserved
};
// M, index 14-15 reserved
const
int32_t
table_38213_10_1_1_c2
[
5
]
=
{
0
,
0
,
4
,
2
,
1
};
...
...
@@ -4301,7 +4301,7 @@ void get_type0_PDCCH_CSS_config_parameters(NR_Type0_PDCCH_CSS_config_t *type0_PD
// type0-pdcch search space
float
big_o
=
0
.
0
f
;
float
big_m
=
0
.
0
f
;
type0_PDCCH_CSS_config
->
sfn_c
=
SFN_C_IMPOSSIBLE
;
// only valid for mux=1
type0_PDCCH_CSS_config
->
sfn_c
=
-
1
;
// only valid for mux=1
type0_PDCCH_CSS_config
->
n_c
=
UINT_MAX
;
type0_PDCCH_CSS_config
->
number_of_search_space_per_slot
=
UINT_MAX
;
type0_PDCCH_CSS_config
->
first_symbol_index
=
UINT_MAX
;
...
...
@@ -4316,11 +4316,7 @@ void get_type0_PDCCH_CSS_config_parameters(NR_Type0_PDCCH_CSS_config_t *type0_PD
uint32_t
temp
=
(
uint32_t
)(
big_o
*
(
1
<<
scs_pdcch
))
+
(
uint32_t
)(
type0_PDCCH_CSS_config
->
ssb_index
*
big_m
);
type0_PDCCH_CSS_config
->
n_c
=
temp
/
num_slot_per_frame
;
if
((
temp
/
num_slot_per_frame
)
&
0x1
){
type0_PDCCH_CSS_config
->
sfn_c
=
SFN_C_MOD_2_EQ_1
;
}
else
{
type0_PDCCH_CSS_config
->
sfn_c
=
SFN_C_MOD_2_EQ_0
;
}
type0_PDCCH_CSS_config
->
sfn_c
=
type0_PDCCH_CSS_config
->
n_c
%
2
;
if
((
index_4lsb
==
1
||
index_4lsb
==
3
||
index_4lsb
==
5
||
index_4lsb
==
7
)
&&
(
type0_PDCCH_CSS_config
->
ssb_index
&
1
)){
type0_PDCCH_CSS_config
->
first_symbol_index
=
type0_PDCCH_CSS_config
->
num_symbols
;
...
...
@@ -4335,9 +4331,13 @@ void get_type0_PDCCH_CSS_config_parameters(NR_Type0_PDCCH_CSS_config_t *type0_PD
if
(
type0_PDCCH_CSS_config
->
type0_pdcch_ss_mux_pattern
==
1
&&
frequency_range
==
FR2
){
big_o
=
table_38213_13_12_c1
[
index_4lsb
];
type0_PDCCH_CSS_config
->
number_of_search_space_per_slot
=
table_38213_13_1
1
_c2
[
index_4lsb
];
type0_PDCCH_CSS_config
->
number_of_search_space_per_slot
=
table_38213_13_1
2
_c2
[
index_4lsb
];
big_m
=
table_38213_13_12_c3
[
index_4lsb
];
uint32_t
temp
=
(
uint32_t
)(
big_o
*
(
1
<<
scs_pdcch
))
+
(
uint32_t
)(
type0_PDCCH_CSS_config
->
ssb_index
*
big_m
);
type0_PDCCH_CSS_config
->
n_c
=
temp
/
num_slot_per_frame
;
type0_PDCCH_CSS_config
->
sfn_c
=
type0_PDCCH_CSS_config
->
n_c
%
2
;
if
((
index_4lsb
==
1
||
index_4lsb
==
3
||
index_4lsb
==
5
||
index_4lsb
==
10
)
&&
(
type0_PDCCH_CSS_config
->
ssb_index
&
1
)){
type0_PDCCH_CSS_config
->
first_symbol_index
=
7
;
}
else
if
((
index_4lsb
==
6
||
index_4lsb
==
7
||
index_4lsb
==
8
||
index_4lsb
==
11
)
&&
(
type0_PDCCH_CSS_config
->
ssb_index
&
1
)){
...
...
@@ -4461,8 +4461,8 @@ void get_type0_PDCCH_CSS_config_parameters(NR_Type0_PDCCH_CSS_config_t *type0_PD
// AssertFatal(first_symbol_index!=UINT_MAX,"");
// mac->type0_pdcch_dci_config.monitoring_symbols_within_slot = (0x3fff << first_symbol_index) & (0x3fff >> (14-coreset_duration-first_symbol_index)) & 0x3fff;
AssertFatal
(
type0_PDCCH_CSS_config
->
sfn_c
!=
SFN_C_IMPOSSIBLE
,
""
);
AssertFatal
(
type0_PDCCH_CSS_config
->
n_c
!=
UINT_MAX
,
""
);
AssertFatal
(
type0_PDCCH_CSS_config
->
sfn_c
>=
0
,
""
);
AssertFatal
(
type0_PDCCH_CSS_config
->
n_c
!=
UINT_MAX
,
""
);
type0_PDCCH_CSS_config
->
n_0
=
((
uint32_t
)(
big_o
*
(
1
<<
scs_pdcch
))
+
(
uint32_t
)(
type0_PDCCH_CSS_config
->
ssb_index
*
big_m
))
%
num_slot_per_frame
;
type0_PDCCH_CSS_config
->
cset_start_rb
=
ssb_offset_point_a
-
type0_PDCCH_CSS_config
->
rb_offset
;
...
...
openair2/LAYER2/NR_MAC_UE/mac_defs.h
View file @
dcae67c3
...
...
@@ -420,7 +420,7 @@ typedef struct {
/// Type0-PDCCH seach space
fapi_nr_dl_config_dci_dl_pdu_rel15_t
type0_pdcch_dci_config
;
uint32_t
type0_pdcch_ss_mux_pattern
;
SFN_C_TYPE
type0_pdcch_ss_sfn_c
;
int
type0_pdcch_ss_sfn_c
;
uint32_t
type0_pdcch_ss_n_c
;
uint32_t
type0_pdcch_consecutive_slots
;
...
...
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