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
5d1dbf13
Commit
5d1dbf13
authored
Jun 23, 2023
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/NR_RRC_CSI_RS_improv_2' into integration_2023_w25
parents
2dc55361
0965e86a
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
23 additions
and
16 deletions
+23
-16
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
+1
-1
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
+12
-6
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
+2
-1
openair2/RRC/NR/nr_rrc_config.c
openair2/RRC/NR/nr_rrc_config.c
+8
-8
No files found.
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
View file @
5d1dbf13
...
@@ -60,7 +60,7 @@ const int get_dl_tda(const gNB_MAC_INST *nrmac, const NR_ServingCellConfigCommon
...
@@ -60,7 +60,7 @@ const int get_dl_tda(const gNB_MAC_INST *nrmac, const NR_ServingCellConfigCommon
AssertFatal
(
tdd
||
nrmac
->
common_channels
->
frame_type
==
FDD
,
"Dynamic TDD not handled yet
\n
"
);
AssertFatal
(
tdd
||
nrmac
->
common_channels
->
frame_type
==
FDD
,
"Dynamic TDD not handled yet
\n
"
);
// Use special TDA in case of CSI-RS
// Use special TDA in case of CSI-RS
if
(
nrmac
->
UE_info
.
sched_csirs
)
if
(
nrmac
->
UE_info
.
sched_csirs
>
0
)
return
1
;
return
1
;
if
(
tdd
&&
tdd
->
nrofDownlinkSymbols
>
1
)
{
// if there is a mixed slot where we can transmit DL
if
(
tdd
&&
tdd
->
nrofDownlinkSymbols
>
1
)
{
// if there is a mixed slot where we can transmit DL
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
View file @
5d1dbf13
...
@@ -2552,18 +2552,23 @@ void nr_csirs_scheduling(int Mod_idP, frame_t frame, sub_frame_t slot, int n_slo
...
@@ -2552,18 +2552,23 @@ void nr_csirs_scheduling(int Mod_idP, frame_t frame, sub_frame_t slot, int n_slo
uint16_t
*
vrb_map
=
gNB_mac
->
common_channels
[
CC_id
].
vrb_map
;
uint16_t
*
vrb_map
=
gNB_mac
->
common_channels
[
CC_id
].
vrb_map
;
UE_info
->
sched_csirs
=
false
;
UE_info
->
sched_csirs
=
0
;
UE_iterator
(
UE_info
->
list
,
UE
)
{
UE_iterator
(
UE_info
->
list
,
UE
)
{
NR_UE_DL_BWP_t
*
dl_bwp
=
&
UE
->
current_DL_BWP
;
NR_UE_UL_BWP_t
*
ul_bwp
=
&
UE
->
current_UL_BWP
;
// CSI-RS is common to all UEs in a given BWP
// therefore we need to schedule only once per BWP
// the following condition verifies if CSI-RS
// has been already scheduled in this BWP
if
(
UE_info
->
sched_csirs
&
(
1
<<
dl_bwp
->
bwp_id
))
continue
;
NR_UE_sched_ctrl_t
*
sched_ctrl
=
&
UE
->
UE_sched_ctrl
;
NR_UE_sched_ctrl_t
*
sched_ctrl
=
&
UE
->
UE_sched_ctrl
;
if
(
sched_ctrl
->
rrc_processing_timer
>
0
)
{
if
(
sched_ctrl
->
rrc_processing_timer
>
0
)
{
continue
;
continue
;
}
}
NR_UE_DL_BWP_t
*
dl_bwp
=
&
UE
->
current_DL_BWP
;
NR_UE_UL_BWP_t
*
ul_bwp
=
&
UE
->
current_UL_BWP
;
if
(
!
ul_bwp
->
csi_MeasConfig
)
continue
;
if
(
!
ul_bwp
->
csi_MeasConfig
)
continue
;
NR_CSI_MeasConfig_t
*
csi_measconfig
=
ul_bwp
->
csi_MeasConfig
;
NR_CSI_MeasConfig_t
*
csi_measconfig
=
ul_bwp
->
csi_MeasConfig
;
...
@@ -2598,8 +2603,9 @@ void nr_csirs_scheduling(int Mod_idP, frame_t frame, sub_frame_t slot, int n_slo
...
@@ -2598,8 +2603,9 @@ void nr_csirs_scheduling(int Mod_idP, frame_t frame, sub_frame_t slot, int n_slo
if
((
frame
*
n_slots_frame
+
slot
-
offset
)
%
period
==
0
)
{
if
((
frame
*
n_slots_frame
+
slot
-
offset
)
%
period
==
0
)
{
LOG_D
(
NR_MAC
,
"Scheduling CSI-RS in frame %d slot %d Resource ID %ld
\n
"
,
frame
,
slot
,
nzpcsi
->
nzp_CSI_RS_ResourceId
);
LOG_D
(
NR_MAC
,
"Scheduling CSI-RS in frame %d slot %d Resource ID %ld
\n
"
,
UE_info
->
sched_csirs
=
true
;
frame
,
slot
,
nzpcsi
->
nzp_CSI_RS_ResourceId
);
UE_info
->
sched_csirs
|=
(
1
<<
dl_bwp
->
bwp_id
);
nfapi_nr_dl_tti_request_pdu_t
*
dl_tti_csirs_pdu
=
&
dl_req
->
dl_tti_pdu_list
[
dl_req
->
nPDUs
];
nfapi_nr_dl_tti_request_pdu_t
*
dl_tti_csirs_pdu
=
&
dl_req
->
dl_tti_pdu_list
[
dl_req
->
nPDUs
];
memset
((
void
*
)
dl_tti_csirs_pdu
,
0
,
sizeof
(
nfapi_nr_dl_tti_request_pdu_t
));
memset
((
void
*
)
dl_tti_csirs_pdu
,
0
,
sizeof
(
nfapi_nr_dl_tti_request_pdu_t
));
...
...
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
View file @
5d1dbf13
...
@@ -691,7 +691,8 @@ typedef struct {
...
@@ -691,7 +691,8 @@ typedef struct {
// last element always NULL
// last element always NULL
pthread_mutex_t
mutex
;
pthread_mutex_t
mutex
;
NR_UE_info_t
*
list
[
MAX_MOBILES_PER_GNB
+
1
];
NR_UE_info_t
*
list
[
MAX_MOBILES_PER_GNB
+
1
];
bool
sched_csirs
;
// bitmap of CSI-RS already scheduled in current slot
int
sched_csirs
;
uid_allocator_t
uid_allocator
;
uid_allocator_t
uid_allocator
;
}
NR_UEs_t
;
}
NR_UEs_t
;
...
...
openair2/RRC/NR/nr_rrc_config.c
View file @
5d1dbf13
...
@@ -140,11 +140,12 @@ static uint64_t get_ssb_bitmap(const NR_ServingCellConfigCommon_t *scc)
...
@@ -140,11 +140,12 @@ static uint64_t get_ssb_bitmap(const NR_ServingCellConfigCommon_t *scc)
return
bitmap
;
return
bitmap
;
}
}
static
void
set_csirs_periodicity
(
NR_NZP_CSI_RS_Resource_t
*
nzpcsi0
,
int
u
id
,
int
nb_slots_per_period
,
int
nb_dl_slots_period
)
static
void
set_csirs_periodicity
(
NR_NZP_CSI_RS_Resource_t
*
nzpcsi0
,
int
id
,
int
nb_slots_per_period
,
int
nb_dl_slots_period
)
{
{
nzpcsi0
->
periodicityAndOffset
=
calloc
(
1
,
sizeof
(
*
nzpcsi0
->
periodicityAndOffset
));
nzpcsi0
->
periodicityAndOffset
=
calloc
(
1
,
sizeof
(
*
nzpcsi0
->
periodicityAndOffset
));
const
int
ideal_period
=
nb_slots_per_period
*
MAX_MOBILES_PER_GNB
;
// TODO ideal period to be set according to estimation by the gNB on how fast the channel changes
const
int
offset
=
nb_slots_per_period
*
uid
;
const
int
ideal_period
=
320
;
const
int
offset
=
nb_slots_per_period
*
id
;
if
(
ideal_period
<
5
)
{
if
(
ideal_period
<
5
)
{
nzpcsi0
->
periodicityAndOffset
->
present
=
NR_CSI_ResourcePeriodicityAndOffset_PR_slots4
;
nzpcsi0
->
periodicityAndOffset
->
present
=
NR_CSI_ResourcePeriodicityAndOffset_PR_slots4
;
...
@@ -184,14 +185,13 @@ static void set_csirs_periodicity(NR_NZP_CSI_RS_Resource_t *nzpcsi0, int uid, in
...
@@ -184,14 +185,13 @@ static void set_csirs_periodicity(NR_NZP_CSI_RS_Resource_t *nzpcsi0, int uid, in
}
}
else
{
else
{
nzpcsi0
->
periodicityAndOffset
->
present
=
NR_CSI_ResourcePeriodicityAndOffset_PR_slots320
;
nzpcsi0
->
periodicityAndOffset
->
present
=
NR_CSI_ResourcePeriodicityAndOffset_PR_slots320
;
AssertFatal
(
offset
/
320
<
nb_dl_slots_period
,
"Cannot allocate
%dth UE. Not enough resources for CSI-RS
\n
"
,
u
id
);
AssertFatal
(
offset
/
320
<
nb_dl_slots_period
,
"Cannot allocate
CSI-RS for BWP %d. Not enough resources for CSI-RS
\n
"
,
id
);
nzpcsi0
->
periodicityAndOffset
->
choice
.
slots320
=
(
offset
%
320
)
+
(
offset
/
320
);
nzpcsi0
->
periodicityAndOffset
->
choice
.
slots320
=
(
offset
%
320
)
+
(
offset
/
320
);
}
}
}
}
static
void
config_csirs
(
const
NR_ServingCellConfigCommon_t
*
servingcellconfigcommon
,
static
void
config_csirs
(
const
NR_ServingCellConfigCommon_t
*
servingcellconfigcommon
,
NR_CSI_MeasConfig_t
*
csi_MeasConfig
,
NR_CSI_MeasConfig_t
*
csi_MeasConfig
,
int
uid
,
int
num_dl_antenna_ports
,
int
num_dl_antenna_ports
,
int
curr_bwp
,
int
curr_bwp
,
int
do_csirs
,
int
do_csirs
,
...
@@ -266,7 +266,7 @@ static void config_csirs(const NR_ServingCellConfigCommon_t *servingcellconfigco
...
@@ -266,7 +266,7 @@ static void config_csirs(const NR_ServingCellConfigCommon_t *servingcellconfigco
nzpcsi0
->
powerControlOffsetSS
=
calloc
(
1
,
sizeof
(
*
nzpcsi0
->
powerControlOffsetSS
));
nzpcsi0
->
powerControlOffsetSS
=
calloc
(
1
,
sizeof
(
*
nzpcsi0
->
powerControlOffsetSS
));
*
nzpcsi0
->
powerControlOffsetSS
=
NR_NZP_CSI_RS_Resource__powerControlOffsetSS_db0
;
*
nzpcsi0
->
powerControlOffsetSS
=
NR_NZP_CSI_RS_Resource__powerControlOffsetSS_db0
;
nzpcsi0
->
scramblingID
=
*
servingcellconfigcommon
->
physCellId
;
nzpcsi0
->
scramblingID
=
*
servingcellconfigcommon
->
physCellId
;
set_csirs_periodicity
(
nzpcsi0
,
u
id
,
nb_slots_per_period
,
nb_dl_slots_period
);
set_csirs_periodicity
(
nzpcsi0
,
id
,
nb_slots_per_period
,
nb_dl_slots_period
);
nzpcsi0
->
qcl_InfoPeriodicCSI_RS
=
calloc
(
1
,
sizeof
(
*
nzpcsi0
->
qcl_InfoPeriodicCSI_RS
));
nzpcsi0
->
qcl_InfoPeriodicCSI_RS
=
calloc
(
1
,
sizeof
(
*
nzpcsi0
->
qcl_InfoPeriodicCSI_RS
));
*
nzpcsi0
->
qcl_InfoPeriodicCSI_RS
=
0
;
*
nzpcsi0
->
qcl_InfoPeriodicCSI_RS
=
0
;
asn1cSeqAdd
(
&
csi_MeasConfig
->
nzp_CSI_RS_ResourceToAddModList
->
list
,
nzpcsi0
);
asn1cSeqAdd
(
&
csi_MeasConfig
->
nzp_CSI_RS_ResourceToAddModList
->
list
,
nzpcsi0
);
...
@@ -2243,7 +2243,7 @@ static NR_SpCellConfig_t *get_initial_SpCellConfig(int uid,
...
@@ -2243,7 +2243,7 @@ static NR_SpCellConfig_t *get_initial_SpCellConfig(int uid,
bwp_id
=
bwp
->
bwp_Id
;
bwp_id
=
bwp
->
bwp_Id
;
}
}
config_csirs
(
scc
,
csi_MeasConfig
,
uid
,
pdsch_AntennaPorts
,
curr_bwp
,
configuration
->
do_CSIRS
,
bwp_loop
);
config_csirs
(
scc
,
csi_MeasConfig
,
pdsch_AntennaPorts
,
curr_bwp
,
configuration
->
do_CSIRS
,
bwp_loop
);
config_csiim
(
configuration
->
do_CSIRS
,
pdsch_AntennaPorts
,
curr_bwp
,
csi_MeasConfig
,
bwp_loop
);
config_csiim
(
configuration
->
do_CSIRS
,
pdsch_AntennaPorts
,
curr_bwp
,
csi_MeasConfig
,
bwp_loop
);
NR_CSI_ResourceConfig_t
*
csires1
=
calloc
(
1
,
sizeof
(
*
csires1
));
NR_CSI_ResourceConfig_t
*
csires1
=
calloc
(
1
,
sizeof
(
*
csires1
));
...
@@ -2797,7 +2797,7 @@ NR_CellGroupConfig_t *get_default_secondaryCellGroup(const NR_ServingCellConfigC
...
@@ -2797,7 +2797,7 @@ NR_CellGroupConfig_t *get_default_secondaryCellGroup(const NR_ServingCellConfigC
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
downlinkBWP_ToAddModList
->
list
.
array
[
bwp_loop
];
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
downlinkBWP_ToAddModList
->
list
.
array
[
bwp_loop
];
int
curr_bwp
=
NRRIV2BW
(
bwp
->
bwp_Common
->
genericParameters
.
locationAndBandwidth
,
MAX_BWP_SIZE
);
int
curr_bwp
=
NRRIV2BW
(
bwp
->
bwp_Common
->
genericParameters
.
locationAndBandwidth
,
MAX_BWP_SIZE
);
config_csirs
(
servingcellconfigcommon
,
csi_MeasConfig
,
uid
,
dl_antenna_ports
,
curr_bwp
,
do_csirs
,
bwp_loop
);
config_csirs
(
servingcellconfigcommon
,
csi_MeasConfig
,
dl_antenna_ports
,
curr_bwp
,
do_csirs
,
bwp_loop
);
config_csiim
(
do_csirs
,
dl_antenna_ports
,
curr_bwp
,
csi_MeasConfig
,
bwp_loop
);
config_csiim
(
do_csirs
,
dl_antenna_ports
,
curr_bwp
,
csi_MeasConfig
,
bwp_loop
);
if
(
do_csirs
)
{
if
(
do_csirs
)
{
...
...
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