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
c1c5c68e
Commit
c1c5c68e
authored
Jun 10, 2022
by
francescomani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
calling get_searchspace/coreset inside BWP function
parent
5fa3be80
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
64 additions
and
56 deletions
+64
-56
openair1/SIMULATION/NR_PHY/dlsim.c
openair1/SIMULATION/NR_PHY/dlsim.c
+1
-1
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
+2
-2
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
+57
-50
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
+4
-3
No files found.
openair1/SIMULATION/NR_PHY/dlsim.c
View file @
c1c5c68e
...
...
@@ -276,7 +276,7 @@ void nr_dlsim_preprocessor(module_id_t module_id,
/* manually set free CCE to 0 */
const
int
target_ss
=
NR_SearchSpace__searchSpaceType_PR_ue_Specific
;
sched_ctrl
->
search_space
=
get_searchspace
(
NULL
,
scc
,
sched_ctrl
->
active_bwp
?
sched_ctrl
->
active_bwp
->
bwp_Dedicated
:
NULL
,
target_ss
);
sched_ctrl
->
search_space
=
get_searchspace
(
scc
,
sched_ctrl
->
active_bwp
?
sched_ctrl
->
active_bwp
->
bwp_Dedicated
:
NULL
,
target_ss
);
uint8_t
nr_of_candidates
;
find_aggregation_candidates
(
&
sched_ctrl
->
aggregation_level
,
&
nr_of_candidates
,
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
View file @
c1c5c68e
...
...
@@ -570,7 +570,7 @@ void nr_initiate_ra_proc(module_id_t module_idP,
ra_rnti
=
1
+
symbol
+
(
slotP
*
14
)
+
(
freq_index
*
14
*
80
)
+
(
ul_carrier_id
*
14
*
80
*
8
);
// Configure RA BWP
configure_UE_BWP
(
&
ra
->
BWP
,
scc
,
ra
->
CellGroup
);
configure_UE_BWP
(
nr_mac
,
&
ra
->
BWP
,
scc
,
NULL
,
ra
->
CellGroup
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_INITIATE_RA_PROC
,
1
);
...
...
@@ -601,7 +601,7 @@ void nr_initiate_ra_proc(module_id_t module_idP,
ra
->
timing_offset
=
timing_offset
;
ra
->
preamble_slot
=
slotP
;
NR_SearchSpaceId_t
ra_SearchSpace
=
0
;
NR_SearchSpaceId_t
ra_SearchSpace
=
0
;
struct
NR_PDCCH_ConfigCommon__commonSearchSpaceList
*
commonSearchSpaceList
=
NULL
;
NR_BWP_Downlink_t
*
bwp
=
NULL
;
if
(
ra
->
CellGroup
&&
ra
->
CellGroup
->
spCellConfig
&&
ra
->
CellGroup
->
spCellConfig
->
spCellConfigDedicated
)
{
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
View file @
c1c5c68e
...
...
@@ -266,6 +266,7 @@ NR_ControlResourceSet_t *get_coreset(gNB_MAC_INST *nrmac,
void
*
bwp
,
NR_SearchSpace_t
*
ss
,
NR_SearchSpace__searchSpaceType_PR
ss_type
)
{
NR_ControlResourceSetId_t
coreset_id
=
*
ss
->
controlResourceSetId
;
if
(
ss_type
==
NR_SearchSpace__searchSpaceType_PR_common
)
{
// common search space
...
...
@@ -297,29 +298,22 @@ NR_ControlResourceSet_t *get_coreset(gNB_MAC_INST *nrmac,
}
}
NR_SearchSpace_t
*
get_searchspace
(
const
NR_SIB1_t
*
sib1
,
NR_ServingCellConfigCommon_t
*
scc
,
NR_SearchSpace_t
*
get_searchspace
(
NR_ServingCellConfigCommon_t
*
scc
,
NR_BWP_DownlinkDedicated_t
*
bwp_Dedicated
,
NR_SearchSpace__searchSpaceType_PR
target_ss
)
{
int
n
=
0
;
if
(
bwp_Dedicated
)
{
if
(
bwp_Dedicated
)
n
=
bwp_Dedicated
->
pdcch_Config
->
choice
.
setup
->
searchSpacesToAddModList
->
list
.
count
;
}
else
if
(
scc
)
{
else
n
=
scc
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
->
choice
.
setup
->
commonSearchSpaceList
->
list
.
count
;
}
else
{
n
=
sib1
->
servingCellConfigCommon
->
downlinkConfigCommon
.
initialDownlinkBWP
.
pdcch_ConfigCommon
->
choice
.
setup
->
commonSearchSpaceList
->
list
.
count
;
}
for
(
int
i
=
0
;
i
<
n
;
i
++
)
{
NR_SearchSpace_t
*
ss
=
NULL
;
if
(
bwp_Dedicated
)
{
if
(
bwp_Dedicated
)
ss
=
bwp_Dedicated
->
pdcch_Config
->
choice
.
setup
->
searchSpacesToAddModList
->
list
.
array
[
i
];
}
else
if
(
scc
)
{
else
ss
=
scc
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
->
choice
.
setup
->
commonSearchSpaceList
->
list
.
array
[
i
];
}
else
{
ss
=
sib1
->
servingCellConfigCommon
->
downlinkConfigCommon
.
initialDownlinkBWP
.
pdcch_ConfigCommon
->
choice
.
setup
->
commonSearchSpaceList
->
list
.
array
[
i
];
}
AssertFatal
(
ss
->
controlResourceSetId
!=
NULL
,
"ss->controlResourceSetId is null
\n
"
);
AssertFatal
(
ss
->
searchSpaceType
!=
NULL
,
"ss->searchSpaceType is null
\n
"
);
if
(
ss
->
searchSpaceType
->
present
==
target_ss
)
{
...
...
@@ -2324,19 +2318,27 @@ void delete_nr_ue_data(NR_UE_info_t *UE, NR_COMMON_channels_t *ccPtr)
}
}
void
configure_UE_BWP
(
NR_UE_BWP_t
*
BWP
,
void
configure_UE_BWP
(
gNB_MAC_INST
*
nr_mac
,
NR_UE_BWP_t
*
BWP
,
NR_ServingCellConfigCommon_t
*
scc
,
NR_UE_sched_ctrl_t
*
sched_ctrl
,
NR_CellGroupConfig_t
*
CellGroup
)
{
NR_BWP_Downlink_t
*
dl_bwp
=
NULL
;
NR_BWP_Uplink_t
*
ul_bwp
=
NULL
;
NR_BWP_DownlinkDedicated_t
*
bwpd
=
NULL
;
NR_BWP_UplinkDedicated_t
*
ubwpd
=
NULL
;
int
target_ss
;
if
(
CellGroup
&&
CellGroup
->
spCellConfig
&&
CellGroup
->
spCellConfig
->
spCellConfigDedicated
)
{
const
NR_ServingCellConfig_t
*
servingCellConfig
=
CellGroup
->
spCellConfig
->
spCellConfigDedicated
;
target_ss
=
NR_SearchSpace__searchSpaceType_PR_ue_Specific
;
// (re)configuring BWP
ID
// (re)configuring BWP
// TODO BWP switching not via RRC reconfiguration
// via RRC if firstActiveXlinkBWP_Id is NULL, MAC stays on the same BWP as before
if
(
servingCellConfig
->
firstActiveDownlinkBWP_Id
)
{
...
...
@@ -2349,10 +2351,9 @@ void configure_UE_BWP(NR_UE_BWP_t *BWP,
const
struct
NR_ServingCellConfig__downlinkBWP_ToAddModList
*
bwpList
=
servingCellConfig
->
downlinkBWP_ToAddModList
;
if
(
BWP
->
dl_bwp_id
>
0
)
{
for
(
int
i
=
0
;
i
<
bwpList
->
list
.
count
;
i
++
)
{
if
(
dl_bwp
->
bwp_Id
==
BWP
->
dl_bwp_id
)
{
dl_bwp
=
bwpList
->
list
.
array
[
i
-
1
];
dl_bwp
=
bwpList
->
list
.
array
[
i
];
if
(
dl_bwp
->
bwp_Id
==
BWP
->
dl_bwp_id
)
break
;
}
}
AssertFatal
(
dl_bwp
!=
NULL
,
"Couldn't find DLBWP corresponding to BWP ID %ld
\n
"
,
BWP
->
dl_bwp_id
);
}
...
...
@@ -2360,15 +2361,30 @@ void configure_UE_BWP(NR_UE_BWP_t *BWP,
const
struct
NR_UplinkConfig__uplinkBWP_ToAddModList
*
ubwpList
=
servingCellConfig
->
uplinkConfig
->
uplinkBWP_ToAddModList
;
if
(
BWP
->
ul_bwp_id
>
0
)
{
for
(
int
i
=
0
;
i
<
ubwpList
->
list
.
count
;
i
++
)
{
if
(
ul_bwp
->
bwp_Id
==
BWP
->
ul_bwp_id
)
{
ul_bwp
=
ubwpList
->
list
.
array
[
i
-
1
];
ul_bwp
=
ubwpList
->
list
.
array
[
i
];
if
(
ul_bwp
->
bwp_Id
==
BWP
->
ul_bwp_id
)
break
;
}
}
AssertFatal
(
ul_bwp
!=
NULL
,
"Couldn't find DLBWP corresponding to BWP ID %ld
\n
"
,
BWP
->
ul_bwp_id
);
}
// selection of dedicated BWPs
if
(
dl_bwp
)
bwpd
=
dl_bwp
->
bwp_Dedicated
;
else
bwpd
=
servingCellConfig
->
initialDownlinkBWP
;
if
(
ul_bwp
)
ubwpd
=
ul_bwp
->
bwp_Dedicated
;
else
ubwpd
=
servingCellConfig
->
uplinkConfig
->
initialUplinkBWP
;
}
else
{
BWP
->
dl_bwp_id
=
0
;
BWP
->
ul_bwp_id
=
0
;
target_ss
=
NR_SearchSpace__searchSpaceType_PR_common
;
}
// acquiring generic parameters
BWP
->
dl_genericParameters
=
(
BWP
->
dl_bwp_id
>
0
&&
dl_bwp
)
?
&
dl_bwp
->
bwp_Common
->
genericParameters
:
&
scc
->
downlinkConfigCommon
->
initialDownlinkBWP
->
genericParameters
;
...
...
@@ -2376,6 +2392,24 @@ void configure_UE_BWP(NR_UE_BWP_t *BWP,
BWP
->
ul_genericParameters
=
(
BWP
->
ul_bwp_id
>
0
&&
ul_bwp
)
?
&
ul_bwp
->
bwp_Common
->
genericParameters
:
&
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
genericParameters
;
if
(
sched_ctrl
)
{
sched_ctrl
->
search_space
=
get_searchspace
(
scc
,
bwpd
,
target_ss
);
sched_ctrl
->
coreset
=
get_coreset
(
nr_mac
,
scc
,
bwpd
,
sched_ctrl
->
search_space
,
target_ss
);
sched_ctrl
->
sched_pdcch
=
set_pdcch_structure
(
nr_mac
,
sched_ctrl
->
search_space
,
sched_ctrl
->
coreset
,
scc
,
BWP
->
dl_genericParameters
,
nr_mac
->
type0_PDCCH_CSS_config
);
}
}
//------------------------------------------------------------------------------
...
...
@@ -2428,7 +2462,7 @@ NR_UE_info_t *add_new_nr_ue(gNB_MAC_INST *nr_mac, rnti_t rntiP, NR_CellGroupConf
// initialize UE BWP information
NR_UE_BWP_t
*
BWP
=
&
UE
->
current_BWP
;
memset
(
BWP
,
0
,
sizeof
(
*
BWP
));
configure_UE_BWP
(
BWP
,
scc
,
CellGroup
);
configure_UE_BWP
(
nr_mac
,
BWP
,
scc
,
sched_ctrl
,
CellGroup
);
/* set illegal time domain allocation to force recomputation of all fields */
sched_ctrl
->
pdsch_semi_static
.
time_domain_allocation
=
-
1
;
...
...
@@ -2440,23 +2474,6 @@ NR_UE_info_t *add_new_nr_ue(gNB_MAC_INST *nr_mac, rnti_t rntiP, NR_CellGroupConf
sched_ctrl
->
active_bwp
=
bwpList
&&
BWP
->
dl_bwp_id
>
0
?
bwpList
->
list
.
array
[
BWP
->
dl_bwp_id
-
1
]
:
NULL
;
const
int
target_ss
=
sched_ctrl
->
active_bwp
?
NR_SearchSpace__searchSpaceType_PR_ue_Specific
:
NR_SearchSpace__searchSpaceType_PR_common
;
const
NR_SIB1_t
*
sib1
=
nr_mac
->
common_channels
[
0
].
sib1
?
nr_mac
->
common_channels
[
0
].
sib1
->
message
.
choice
.
c1
->
choice
.
systemInformationBlockType1
:
NULL
;
sched_ctrl
->
search_space
=
get_searchspace
(
sib1
,
scc
,
sched_ctrl
->
active_bwp
?
sched_ctrl
->
active_bwp
->
bwp_Dedicated
:
NULL
,
target_ss
);
sched_ctrl
->
coreset
=
get_coreset
(
nr_mac
,
scc
,
sched_ctrl
->
active_bwp
?
sched_ctrl
->
active_bwp
->
bwp_Dedicated
:
NULL
,
sched_ctrl
->
search_space
,
target_ss
);
sched_ctrl
->
sched_pdcch
=
set_pdcch_structure
(
nr_mac
,
sched_ctrl
->
search_space
,
sched_ctrl
->
coreset
,
scc
,
BWP
->
dl_genericParameters
,
NULL
);
sched_ctrl
->
next_dl_bwp_id
=
-
1
;
sched_ctrl
->
next_ul_bwp_id
=
-
1
;
const
struct
NR_UplinkConfig__uplinkBWP_ToAddModList
*
ubwpList
=
servingCellConfig
?
servingCellConfig
->
uplinkConfig
->
uplinkBWP_ToAddModList
:
NULL
;
...
...
@@ -2944,30 +2961,20 @@ void nr_mac_update_timers(module_id_t module_id,
}
}
configure_UE_BWP
(
BWP
,
scc
,
UE
->
CellGroup
);
configure_UE_BWP
(
RC
.
nrmac
[
module_id
],
BWP
,
scc
,
sched_ctrl
,
UE
->
CellGroup
);
// Update coreset/searchspace
NR_BWP_Downlink_t
*
bwp
=
sched_ctrl
->
active_bwp
;
NR_BWP_DownlinkDedicated_t
*
bwpd
=
NULL
;
int
target_ss
=
NR_SearchSpace__searchSpaceType_PR_common
;
if
(
bwp
)
{
target_ss
=
NR_SearchSpace__searchSpaceType_PR_ue_Specific
;
bwpd
=
sched_ctrl
->
active_bwp
->
bwp_Dedicated
;
}
else
if
(
cg
&&
cg
->
spCellConfig
&&
cg
->
spCellConfig
->
spCellConfigDedicated
&&
(
cg
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
))
{
target_ss
=
NR_SearchSpace__searchSpaceType_PR_ue_Specific
;
bwpd
=
cg
->
spCellConfig
->
spCellConfigDedicated
->
initialDownlinkBWP
;
}
sched_ctrl
->
search_space
=
get_searchspace
(
sib1
,
scc
,
(
void
*
)
bwpd
,
target_ss
);
sched_ctrl
->
coreset
=
get_coreset
(
RC
.
nrmac
[
module_id
],
scc
,
(
void
*
)
bwpd
,
sched_ctrl
->
search_space
,
target_ss
);
sched_ctrl
->
sched_pdcch
=
set_pdcch_structure
(
RC
.
nrmac
[
module_id
],
sched_ctrl
->
search_space
,
sched_ctrl
->
coreset
,
scc
,
BWP
->
dl_genericParameters
,
RC
.
nrmac
[
module_id
]
->
type0_PDCCH_CSS_config
);
sched_ctrl
->
maxL
=
2
;
if
(
cg
&&
cg
->
spCellConfig
&&
...
...
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
View file @
c1c5c68e
...
...
@@ -332,8 +332,7 @@ NR_ControlResourceSet_t *get_coreset(gNB_MAC_INST *nrmac,
NR_SearchSpace__searchSpaceType_PR
ss_type
);
/* find a search space within a BWP */
NR_SearchSpace_t
*
get_searchspace
(
const
NR_SIB1_t
*
sib1
,
NR_ServingCellConfigCommon_t
*
scc
,
NR_SearchSpace_t
*
get_searchspace
(
NR_ServingCellConfigCommon_t
*
scc
,
NR_BWP_DownlinkDedicated_t
*
bwp_Dedicated
,
NR_SearchSpace__searchSpaceType_PR
target_ss
);
...
...
@@ -396,8 +395,10 @@ NR_UE_info_t * find_nr_UE(NR_UEs_t* UEs, rnti_t rntiP);
int
find_nr_RA_id
(
module_id_t
mod_idP
,
int
CC_idP
,
rnti_t
rntiP
);
void
configure_UE_BWP
(
NR_UE_BWP_t
*
BWP
,
void
configure_UE_BWP
(
gNB_MAC_INST
*
nr_mac
,
NR_UE_BWP_t
*
BWP
,
NR_ServingCellConfigCommon_t
*
scc
,
NR_UE_sched_ctrl_t
*
sched_ctrl
,
NR_CellGroupConfig_t
*
CellGroup
);
NR_UE_info_t
*
add_new_nr_ue
(
gNB_MAC_INST
*
nr_mac
,
rnti_t
rntiP
,
NR_CellGroupConfig_t
*
CellGroup
);
...
...
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