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
spbro
OpenXG-RAN
Commits
4183e584
Commit
4183e584
authored
1 year ago
by
francescomani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
use BWP specific SS and coreset structures
parent
4af3d76d
Changes
5
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
95 additions
and
142 deletions
+95
-142
openair2/LAYER2/NR_MAC_UE/config_ue.c
openair2/LAYER2/NR_MAC_UE/config_ue.c
+51
-86
openair2/LAYER2/NR_MAC_UE/mac_defs.h
openair2/LAYER2/NR_MAC_UE/mac_defs.h
+4
-4
openair2/LAYER2/NR_MAC_UE/mac_proto.h
openair2/LAYER2/NR_MAC_UE/mac_proto.h
+1
-6
openair2/LAYER2/NR_MAC_UE/nr_ue_dci_configuration.c
openair2/LAYER2/NR_MAC_UE/nr_ue_dci_configuration.c
+29
-35
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
+10
-11
No files found.
openair2/LAYER2/NR_MAC_UE/config_ue.c
View file @
4183e584
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_UE/mac_defs.h
View file @
4183e584
...
...
@@ -409,11 +409,13 @@ typedef struct {
NR_UE_UL_BWP_t
current_UL_BWP
;
NR_UL_TIME_ALIGNMENT_t
ul_time_alignment
;
NR_ControlResourceSet_t
*
coreset
[
MAX_NUM_BWP_UE
][
FAPI_NR_MAX_CORESET_PER_BWP
];
NR_SearchSpace_t
*
SSpace
[
MAX_NUM_BWP_UE
][
FAPI_NR_MAX_SS
];
NR_SearchSpace_t
*
otherSI_SS
;
NR_SearchSpace_t
*
ra_SS
;
NR_SearchSpace_t
*
paging_SS
;
NR_ControlResourceSet_t
*
BWP_coresets
[
FAPI_NR_MAX_CORESET_PER_BWP
];
NR_ControlResourceSet_t
*
coreset0
;
NR_SearchSpace_t
*
BWP_searchspaces
[
FAPI_NR_MAX_SS
];
NR_SearchSpace_t
*
search_space_zero
;
bool
phy_config_request_sent
;
frame_type_t
frame_type
;
...
...
@@ -467,8 +469,6 @@ typedef struct {
uint8_t
PHR_reporting_active
;
NR_Type0_PDCCH_CSS_config_t
type0_PDCCH_CSS_config
;
NR_SearchSpace_t
*
search_space_zero
;
NR_ControlResourceSet_t
*
coreset0
;
frequency_range_t
frequency_range
;
uint16_t
nr_band
;
uint8_t
ssb_subcarrier_offset
;
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_UE/mac_proto.h
View file @
4183e584
...
...
@@ -250,11 +250,10 @@ int nr_write_ce_ulsch_pdu(uint8_t *mac_ce,
NR_BSR_LONG
*
long_bsr
);
void
config_dci_pdu
(
NR_UE_MAC_INST_t
*
mac
,
fapi_nr_dl_config_dci_dl_pdu_rel15_t
*
rel15
,
fapi_nr_dl_config_request_t
*
dl_config
,
int
rnti_type
,
int
slot
,
int
ss_id
);
NR_SearchSpace_t
*
ss
);
void
ue_dci_configuration
(
NR_UE_MAC_INST_t
*
mac
,
fapi_nr_dl_config_request_t
*
dl_config
,
frame_t
frame
,
int
slot
);
...
...
@@ -429,10 +428,6 @@ void build_ssb_to_ro_map(NR_UE_MAC_INST_t *mac);
void
ue_init_config_request
(
NR_UE_MAC_INST_t
*
mac
,
int
scs
);
void
configure_ss_coreset
(
NR_UE_MAC_INST_t
*
mac
,
NR_ServingCellConfig_t
*
scd
,
NR_BWP_Id_t
dl_bwp_id
);
static
uint8_t
nr_extract_dci_info
(
NR_UE_MAC_INST_t
*
mac
,
nr_dci_format_t
dci_format
,
uint8_t
dci_size
,
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_UE/nr_ue_dci_configuration.c
View file @
4183e584
...
...
@@ -83,12 +83,26 @@ void fill_dci_search_candidates(NR_SearchSpace_t *ss,
}
}
NR_ControlResourceSet_t
*
ue_get_coreset
(
NR_UE_MAC_INST_t
*
mac
,
int
coreset_id
)
{
NR_ControlResourceSet_t
*
coreset
=
NULL
;
for
(
int
i
=
0
;
i
<
FAPI_NR_MAX_CORESET_PER_BWP
;
i
++
)
{
if
(
mac
->
BWP_coresets
[
i
]
!=
NULL
&&
mac
->
BWP_coresets
[
i
]
->
controlResourceSetId
==
coreset_id
)
{
coreset
=
mac
->
BWP_coresets
[
i
];
break
;
}
}
AssertFatal
(
coreset
,
"Couldn't find coreset with id %d
\n
"
,
coreset_id
);
return
coreset
;
}
void
config_dci_pdu
(
NR_UE_MAC_INST_t
*
mac
,
fapi_nr_dl_config_dci_dl_pdu_rel15_t
*
rel15
,
fapi_nr_dl_config_request_t
*
dl_config
,
int
rnti_type
,
int
slot
,
int
ss_id
)
NR_SearchSpace_t
*
ss
)
{
uint16_t
monitoringSymbolsWithinSlot
=
0
;
...
...
@@ -98,33 +112,16 @@ void config_dci_pdu(NR_UE_MAC_INST_t *mac,
NR_UE_UL_BWP_t
*
current_UL_BWP
=
&
mac
->
current_UL_BWP
;
NR_BWP_Id_t
dl_bwp_id
=
current_DL_BWP
?
current_DL_BWP
->
bwp_id
:
0
;
NR_SearchSpace_t
*
ss
;
NR_ControlResourceSet_t
*
coreset
;
if
(
ss_id
>=
0
)
{
if
(
rnti_type
==
NR_RNTI_TC
||
rnti_type
==
NR_RNTI_RA
)
{
ss
=
mac
->
ra_SS
;
AssertFatal
(
mac
->
ra_SS
->
searchSpaceId
==
ss_id
,
"Search Space id %d does not correspond to the one in ra_ss %ld for RA procedures
\n
"
,
ss_id
,
mac
->
ra_SS
->
searchSpaceId
);
}
else
ss
=
mac
->
SSpace
[
dl_bwp_id
][
ss_id
-
1
];
}
else
ss
=
mac
->
search_space_zero
;
uint8_t
coreset_id
=
*
ss
->
controlResourceSetId
;
fapi_nr_dl_config_dci_dl_pdu_rel15_t
*
rel15
=
&
dl_config
->
dl_config_list
[
dl_config
->
number_pdus
].
dci_config_pdu
.
dci_config_rel15
;
int
coreset_id
=
*
ss
->
controlResourceSetId
;
NR_ControlResourceSet_t
*
coreset
;
if
(
coreset_id
>
0
)
{
coreset
=
mac
->
coreset
[
dl_bwp_id
][
coreset_id
-
1
]
;
coreset
=
ue_get_coreset
(
mac
,
coreset_id
)
;
rel15
->
coreset
.
CoreSetType
=
NFAPI_NR_CSET_CONFIG_PDCCH_CONFIG
;
}
else
{
coreset
=
mac
->
coreset0
;
if
(
rnti_type
==
NR_RNTI_SI
)
{
rel15
->
coreset
.
CoreSetType
=
NFAPI_NR_CSET_CONFIG_MIB_SIB1
;
}
else
{
rel15
->
coreset
.
CoreSetType
=
NFAPI_NR_CSET_CONFIG_PDCCH_CONFIG_CSET_0
;
}
}
rel15
->
coreset
.
duration
=
coreset
->
duration
;
...
...
@@ -293,9 +290,8 @@ void config_dci_pdu(NR_UE_MAC_INST_t *mac,
void
ue_dci_configuration
(
NR_UE_MAC_INST_t
*
mac
,
fapi_nr_dl_config_request_t
*
dl_config
,
frame_t
frame
,
int
slot
)
{
RA_config_t
*
ra
=
&
mac
->
ra
;
int
ss_id
;
uint8_t
bwp_id
=
mac
->
current_DL_BWP
.
bwp_id
;
NR_ServingCellConfig_t
*
scd
=
mac
->
cg
->
spCellConfig
->
spCellConfigDedicated
;
NR_BWP_DownlinkDedicated_t
*
bwpd
=
bwp_id
>
0
?
scd
->
downlinkBWP_ToAddModList
->
list
.
array
[
bwp_id
-
1
]
->
bwp_Dedicated
:
scd
->
initialDownlinkBWP
;
...
...
@@ -305,16 +301,14 @@ void ue_dci_configuration(NR_UE_MAC_INST_t *mac, fapi_nr_dl_config_request_t *dl
// loop over all available SS for bwp_id
if
(
bwpd
)
{
for
(
ss_id
=
1
;
ss_id
<=
FAPI_NR_MAX_SS
;
ss_id
++
){
for
(
int
ss_id
=
0
;
ss_id
<
FAPI_NR_MAX_SS
;
ss_id
++
){
if
(
mac
->
SSpace
[
bwp_id
][
ss_id
-
1
]
==
NULL
)
{
if
(
mac
->
BWP_searchspaces
[
ss_id
]
==
NULL
)
{
continue
;
}
LOG_D
(
NR_MAC
,
"[DCI_CONFIG] ss_id %d
\n
"
,
ss_id
);
NR_SearchSpace_t
*
ss
=
mac
->
SSpace
[
bwp_id
][
ss_id
-
1
];
AssertFatal
(
ss_id
==
ss
->
searchSpaceId
,
"SS IDs don't correspond
\n
"
);
fapi_nr_dl_config_dci_dl_pdu_rel15_t
*
rel15
=
&
dl_config
->
dl_config_list
[
dl_config
->
number_pdus
].
dci_config_pdu
.
dci_config_rel15
;
NR_SearchSpace_t
*
ss
=
mac
->
BWP_searchspaces
[
ss_id
];
NR_SetupRelease_PDCCH_ConfigCommon_t
*
pdcch_ConfigCommon
=
bwp_Common
->
pdcch_ConfigCommon
;
struct
NR_PhysicalCellGroupConfig
*
phy_cgc
=
mac
->
cg
->
physicalCellGroupConfig
;
switch
(
ss
->
searchSpaceType
->
present
){
...
...
@@ -329,14 +323,14 @@ void ue_dci_configuration(NR_UE_MAC_INST_t *mac, fapi_nr_dl_config_request_t *dl
case
WAIT_RAR
:
LOG_D
(
NR_MAC
,
"[DCI_CONFIG] Configure monitoring of PDCCH candidates in Type1-PDCCH common random access search space (RA-Msg2)
\n
"
);
if
(
get_softmodem_params
()
->
sa
)
{
config_dci_pdu
(
mac
,
rel15
,
dl_config
,
NR_RNTI_RA
,
slot
,
-
1
);
config_dci_pdu
(
mac
,
dl_config
,
NR_RNTI_RA
,
slot
,
mac
->
ra_SS
);
}
else
{
config_dci_pdu
(
mac
,
rel15
,
dl_config
,
NR_RNTI_RA
,
slot
,
ss_id
);
config_dci_pdu
(
mac
,
dl_config
,
NR_RNTI_RA
,
slot
,
ss
);
}
break
;
case
WAIT_CONTENTION_RESOLUTION
:
LOG_D
(
NR_MAC
,
"[DCI_CONFIG] Configure monitoring of PDCCH candidates in Type1-PDCCH common random access search space (RA-Msg4)
\n
"
);
config_dci_pdu
(
mac
,
rel15
,
dl_config
,
NR_RNTI_TC
,
slot
,
-
1
);
config_dci_pdu
(
mac
,
dl_config
,
NR_RNTI_TC
,
slot
,
mac
->
ra_SS
);
break
;
default:
break
;
...
...
@@ -404,7 +398,7 @@ void ue_dci_configuration(NR_UE_MAC_INST_t *mac, fapi_nr_dl_config_request_t *dl
mac
->
crnti
>
0
)
{
// Monitors DCI 01 and 11 scrambled with C-RNTI, or CS-RNTI(s), or SP-CSI-RNTI
LOG_D
(
NR_MAC
,
"[DCI_CONFIG] Configure monitoring of PDCCH candidates in the user specific search space
\n
"
);
config_dci_pdu
(
mac
,
rel15
,
dl_config
,
NR_RNTI_C
,
slot
,
ss_id
);
config_dci_pdu
(
mac
,
dl_config
,
NR_RNTI_C
,
slot
,
ss
);
//#ifdef DEBUG_DCI
LOG_D
(
NR_MAC
,
"[DCI_CONFIG] ss %d ue_Specific %p searchSpaceType->present %d dci_Formats %d
\n
"
,
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
View file @
4183e584
...
...
@@ -978,9 +978,8 @@ void nr_ue_dl_scheduler(nr_downlink_indication_t *dl_info)
if
(
mac
->
ra
.
ra_state
>=
WAIT_RAR
)
{
if
(
mac
->
ul_time_alignment
.
ta_apply
)
schedule_ta_command
(
dl_config
,
&
mac
->
ul_time_alignment
);
fapi_nr_dl_config_dci_dl_pdu_rel15_t
*
rel15
=
&
dl_config
->
dl_config_list
[
dl_config
->
number_pdus
].
dci_config_pdu
.
dci_config_rel15
;
config_dci_pdu
(
mac
,
rel15
,
dl_config
,
mac
->
ra
.
ra_state
==
WAIT_RAR
?
NR_RNTI_RA
:
NR_RNTI_TC
,
rx_slot
,
mac
->
ra_SS
->
searchSpaceId
);
LOG_D
(
MAC
,
"mac->cg %p: Calling fill_scheduled_response rnti %x, type0_pdcch, num_pdus %d
\n
"
,
mac
->
cg
,
rel15
->
rnti
,
dl_config
->
number_pdus
);
config_dci_pdu
(
mac
,
dl_config
,
mac
->
ra
.
ra_state
==
WAIT_RAR
?
NR_RNTI_RA
:
NR_RNTI_TC
,
rx_slot
,
mac
->
ra_SS
);
LOG_D
(
MAC
,
"mac->cg %p: Calling fill_scheduled_response for type0_pdcch, num_pdus %d
\n
"
,
mac
->
cg
,
dl_config
->
number_pdus
);
fill_scheduled_response
(
&
scheduled_response
,
dl_config
,
NULL
,
NULL
,
mod_id
,
cc_id
,
rx_frame
,
rx_slot
,
dl_info
->
phy_data
);
if
(
mac
->
if_module
!=
NULL
&&
mac
->
if_module
->
scheduled_response
!=
NULL
)
mac
->
if_module
->
scheduled_response
(
&
scheduled_response
);
...
...
@@ -2622,18 +2621,18 @@ void nr_ue_sib1_scheduler(module_id_t module_idP,
frame_s
=
0
;
// same frame as ssb
slot_s
=
mac
->
type0_PDCCH_CSS_config
.
n_c
;
}
fapi_nr_dl_config_request_t
*
dl_config
=
&
mac
->
dl_config_request
[
0
];
// Take the first dl_config_request for SIB1
fapi_nr_dl_config_dci_dl_pdu_rel15_t
*
rel15
;
if
(
mac
->
search_space_zero
==
NULL
)
mac
->
search_space_zero
=
calloc
(
1
,
sizeof
(
*
mac
->
search_space_zero
));
if
(
mac
->
coreset0
==
NULL
)
mac
->
coreset0
=
calloc
(
1
,
sizeof
(
*
mac
->
coreset0
));
if
(
mac
->
search_space_zero
==
NULL
)
mac
->
search_space_zero
=
calloc
(
1
,
sizeof
(
*
mac
->
search_space_zero
));
if
(
mac
->
coreset0
==
NULL
)
mac
->
coreset0
=
calloc
(
1
,
sizeof
(
*
mac
->
coreset0
));
fill_coresetZero
(
mac
->
coreset0
,
&
mac
->
type0_PDCCH_CSS_config
);
fill_searchSpaceZero
(
mac
->
search_space_zero
,
&
mac
->
type0_PDCCH_CSS_config
);
rel15
=
&
dl_config
->
dl_config_list
[
dl_config
->
number_pdus
].
dci_config_pdu
.
dci_config_rel15
;
config_dci_pdu
(
mac
,
rel15
,
dl_config
,
NR_RNTI_SI
,
slot_s
,
-
1
);
LOG_D
(
MAC
,
"Calling fill_scheduled_response, type0_pdcch, num_pdus %d
\n
"
,
dl_config
->
number_pdus
);
fapi_nr_dl_config_request_t
*
dl_config
=
&
mac
->
dl_config_request
[
0
];
// Take the first dl_config_request for SIB1
config_dci_pdu
(
mac
,
dl_config
,
NR_RNTI_SI
,
slot_s
,
mac
->
search_space_zero
);
LOG_D
(
MAC
,
"Calling fill_scheduled_response, type0_pdcch, num_pdus %d
\n
"
,
dl_config
->
number_pdus
);
fill_scheduled_response
(
&
scheduled_response
,
dl_config
,
NULL
,
NULL
,
module_idP
,
cc_id
,
frame_s
,
slot_s
,
phy_data
);
if
(
dl_config
->
number_pdus
)
{
...
...
This diff is collapsed.
Click to expand it.
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