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
4156f895
Commit
4156f895
authored
Sep 27, 2022
by
Roberto Louro Magueta
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Set nrofSRS_Ports = min(maxNumberSRS_Ports, maxMIMO_Layers)
parent
14d4afe6
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
59 additions
and
13 deletions
+59
-13
openair2/RRC/NR/MESSAGES/asn1_msg.c
openair2/RRC/NR/MESSAGES/asn1_msg.c
+21
-7
openair2/RRC/NR/nr_rrc_config.c
openair2/RRC/NR/nr_rrc_config.c
+30
-5
openair2/RRC/NR/nr_rrc_config.h
openair2/RRC/NR/nr_rrc_config.h
+1
-0
openair2/RRC/NR/rrc_gNB_reconfig.c
openair2/RRC/NR/rrc_gNB_reconfig.c
+7
-1
No files found.
openair2/RRC/NR/MESSAGES/asn1_msg.c
View file @
4156f895
...
@@ -1003,9 +1003,10 @@ void fill_initial_SpCellConfig(int uid,
...
@@ -1003,9 +1003,10 @@ void fill_initial_SpCellConfig(int uid,
SpCellConfig
->
spCellConfigDedicated
=
calloc
(
1
,
sizeof
(
*
SpCellConfig
->
spCellConfigDedicated
));
SpCellConfig
->
spCellConfigDedicated
=
calloc
(
1
,
sizeof
(
*
SpCellConfig
->
spCellConfigDedicated
));
SpCellConfig
->
spCellConfigDedicated
->
uplinkConfig
=
calloc
(
1
,
sizeof
(
*
SpCellConfig
->
spCellConfigDedicated
->
uplinkConfig
));
SpCellConfig
->
spCellConfigDedicated
->
uplinkConfig
=
calloc
(
1
,
sizeof
(
*
SpCellConfig
->
spCellConfigDedicated
->
uplinkConfig
));
NR_UplinkConfig_t
*
uplinkConfig
=
SpCellConfig
->
spCellConfigDedicated
->
uplinkConfig
;
NR_BWP_UplinkDedicated_t
*
initialUplinkBWP
=
calloc
(
1
,
sizeof
(
*
initialUplinkBWP
));
NR_BWP_UplinkDedicated_t
*
initialUplinkBWP
=
calloc
(
1
,
sizeof
(
*
initialUplinkBWP
));
SpCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
initialUplinkBWP
=
initialUplinkBWP
;
uplinkConfig
->
initialUplinkBWP
=
initialUplinkBWP
;
initialUplinkBWP
->
pucch_Config
=
calloc
(
1
,
sizeof
(
*
initialUplinkBWP
->
pucch_Config
));
initialUplinkBWP
->
pucch_Config
=
calloc
(
1
,
sizeof
(
*
initialUplinkBWP
->
pucch_Config
));
initialUplinkBWP
->
pucch_Config
->
present
=
NR_SetupRelease_PUCCH_Config_PR_setup
;
initialUplinkBWP
->
pucch_Config
->
present
=
NR_SetupRelease_PUCCH_Config_PR_setup
;
NR_PUCCH_Config_t
*
pucch_Config
=
calloc
(
1
,
sizeof
(
*
pucch_Config
));
NR_PUCCH_Config_t
*
pucch_Config
=
calloc
(
1
,
sizeof
(
*
pucch_Config
));
...
@@ -1090,9 +1091,15 @@ void fill_initial_SpCellConfig(int uid,
...
@@ -1090,9 +1091,15 @@ void fill_initial_SpCellConfig(int uid,
pusch_Config
->
uci_OnPUSCH
=
NULL
;
pusch_Config
->
uci_OnPUSCH
=
NULL
;
pusch_Config
->
tp_pi2BPSK
=
NULL
;
pusch_Config
->
tp_pi2BPSK
=
NULL
;
long
maxMIMO_Layers
=
uplinkConfig
&&
uplinkConfig
->
pusch_ServingCellConfig
&&
uplinkConfig
->
pusch_ServingCellConfig
->
choice
.
setup
->
ext1
&&
uplinkConfig
->
pusch_ServingCellConfig
->
choice
.
setup
->
ext1
->
maxMIMO_Layers
?
*
uplinkConfig
->
pusch_ServingCellConfig
->
choice
.
setup
->
ext1
->
maxMIMO_Layers
:
1
;
// We are using do_srs = 0 here because the periodic SRS will only be enabled in update_cellGroupConfig() if do_srs == 1
// We are using do_srs = 0 here because the periodic SRS will only be enabled in update_cellGroupConfig() if do_srs == 1
initialUplinkBWP
->
srs_Config
=
calloc
(
1
,
sizeof
(
*
initialUplinkBWP
->
srs_Config
));
initialUplinkBWP
->
srs_Config
=
calloc
(
1
,
sizeof
(
*
initialUplinkBWP
->
srs_Config
));
config_srs
(
initialUplinkBWP
->
srs_Config
,
NULL
,
curr_bwp
,
uid
,
0
,
0
);
config_srs
(
initialUplinkBWP
->
srs_Config
,
NULL
,
curr_bwp
,
uid
,
0
,
maxMIMO_Layers
,
0
);
scheduling_request_config
(
scc
,
pucch_Config
);
scheduling_request_config
(
scc
,
pucch_Config
);
...
@@ -1216,7 +1223,7 @@ void fill_initial_SpCellConfig(int uid,
...
@@ -1216,7 +1223,7 @@ void fill_initial_SpCellConfig(int uid,
n_ul_bwp
=
servingcellconfigdedicated
->
uplinkConfig
->
uplinkBWP_ToAddModList
->
list
.
count
;
n_ul_bwp
=
servingcellconfigdedicated
->
uplinkConfig
->
uplinkBWP_ToAddModList
->
list
.
count
;
}
}
if
(
n_ul_bwp
>
0
)
{
if
(
n_ul_bwp
>
0
)
{
SpCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
uplinkBWP_ToAddModList
=
calloc
(
1
,
sizeof
(
*
SpCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
uplinkBWP_ToAddModList
));
uplinkConfig
->
uplinkBWP_ToAddModList
=
calloc
(
1
,
sizeof
(
*
uplinkConfig
->
uplinkBWP_ToAddModList
));
for
(
int
bwp_loop
=
0
;
bwp_loop
<
n_ul_bwp
;
bwp_loop
++
)
{
for
(
int
bwp_loop
=
0
;
bwp_loop
<
n_ul_bwp
;
bwp_loop
++
)
{
NR_BWP_Uplink_t
*
ubwp
=
calloc
(
1
,
sizeof
(
*
ubwp
));
NR_BWP_Uplink_t
*
ubwp
=
calloc
(
1
,
sizeof
(
*
ubwp
));
config_uplinkBWP
(
ubwp
,
bwp_loop
,
true
,
uid
,
config_uplinkBWP
(
ubwp
,
bwp_loop
,
true
,
uid
,
...
@@ -1224,13 +1231,12 @@ void fill_initial_SpCellConfig(int uid,
...
@@ -1224,13 +1231,12 @@ void fill_initial_SpCellConfig(int uid,
servingcellconfigdedicated
,
servingcellconfigdedicated
,
scc
,
scc
,
NULL
);
NULL
);
ASN_SEQUENCE_ADD
(
&
SpCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
uplinkBWP_ToAddModList
->
list
,
ubwp
);
ASN_SEQUENCE_ADD
(
&
uplinkConfig
->
uplinkBWP_ToAddModList
->
list
,
ubwp
);
}
}
SpCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
firstActiveUplinkBWP_Id
=
calloc
(
1
,
sizeof
(
*
SpCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
firstActiveUplinkBWP_Id
));
uplinkConfig
->
firstActiveUplinkBWP_Id
=
calloc
(
1
,
sizeof
(
*
uplinkConfig
->
firstActiveUplinkBWP_Id
));
*
SpCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
firstActiveUplinkBWP_Id
=
servingcellconfigdedicated
->
uplinkConfig
->
firstActiveUplinkBWP_Id
?
*
servingcellconfigdedicated
->
uplinkConfig
->
firstActiveUplinkBWP_Id
:
1
;
*
uplinkConfig
->
firstActiveUplinkBWP_Id
=
uplinkConfig
->
firstActiveUplinkBWP_Id
?
*
uplinkConfig
->
firstActiveUplinkBWP_Id
:
1
;
}
}
SpCellConfig
->
spCellConfigDedicated
->
csi_MeasConfig
=
calloc
(
1
,
sizeof
(
*
SpCellConfig
->
spCellConfigDedicated
->
csi_MeasConfig
));
SpCellConfig
->
spCellConfigDedicated
->
csi_MeasConfig
=
calloc
(
1
,
sizeof
(
*
SpCellConfig
->
spCellConfigDedicated
->
csi_MeasConfig
));
SpCellConfig
->
spCellConfigDedicated
->
csi_MeasConfig
->
present
=
NR_SetupRelease_CSI_MeasConfig_PR_setup
;
SpCellConfig
->
spCellConfigDedicated
->
csi_MeasConfig
->
present
=
NR_SetupRelease_CSI_MeasConfig_PR_setup
;
...
@@ -1585,6 +1591,12 @@ void update_cellGroupConfig(NR_CellGroupConfig_t *cellGroupConfig,
...
@@ -1585,6 +1591,12 @@ void update_cellGroupConfig(NR_CellGroupConfig_t *cellGroupConfig,
if
(
scc
)
{
if
(
scc
)
{
int
curr_bwp
=
NRRIV2BW
(
scc
->
downlinkConfigCommon
->
initialDownlinkBWP
->
genericParameters
.
locationAndBandwidth
,
MAX_BWP_SIZE
);
int
curr_bwp
=
NRRIV2BW
(
scc
->
downlinkConfigCommon
->
initialDownlinkBWP
->
genericParameters
.
locationAndBandwidth
,
MAX_BWP_SIZE
);
NR_UplinkConfig_t
*
uplinkConfig
=
SpCellConfig
&&
SpCellConfig
->
spCellConfigDedicated
?
SpCellConfig
->
spCellConfigDedicated
->
uplinkConfig
:
NULL
;
long
maxMIMO_Layers
=
uplinkConfig
&&
uplinkConfig
->
pusch_ServingCellConfig
&&
uplinkConfig
->
pusch_ServingCellConfig
->
choice
.
setup
->
ext1
&&
uplinkConfig
->
pusch_ServingCellConfig
->
choice
.
setup
->
ext1
->
maxMIMO_Layers
?
*
uplinkConfig
->
pusch_ServingCellConfig
->
choice
.
setup
->
ext1
->
maxMIMO_Layers
:
1
;
// SRS configuration
// SRS configuration
if
(
configuration
->
do_SRS
&&
if
(
configuration
->
do_SRS
&&
SpCellConfig
&&
SpCellConfig
&&
...
@@ -1600,6 +1612,7 @@ void update_cellGroupConfig(NR_CellGroupConfig_t *cellGroupConfig,
...
@@ -1600,6 +1612,7 @@ void update_cellGroupConfig(NR_CellGroupConfig_t *cellGroupConfig,
curr_bwp
,
curr_bwp
,
uid
,
uid
,
0
,
0
,
maxMIMO_Layers
,
configuration
->
do_SRS
);
configuration
->
do_SRS
);
}
}
...
@@ -1625,6 +1638,7 @@ void update_cellGroupConfig(NR_CellGroupConfig_t *cellGroupConfig,
...
@@ -1625,6 +1638,7 @@ void update_cellGroupConfig(NR_CellGroupConfig_t *cellGroupConfig,
bwp_size
,
bwp_size
,
uid
,
uid
,
i
+
1
,
i
+
1
,
maxMIMO_Layers
,
configuration
->
do_SRS
);
configuration
->
do_SRS
);
}
}
}
}
...
...
openair2/RRC/NR/nr_rrc_config.c
View file @
4156f895
...
@@ -356,8 +356,9 @@ void config_srs(NR_SetupRelease_SRS_Config_t *setup_release_srs_Config,
...
@@ -356,8 +356,9 @@ void config_srs(NR_SetupRelease_SRS_Config_t *setup_release_srs_Config,
const
int
curr_bwp
,
const
int
curr_bwp
,
const
int
uid
,
const
int
uid
,
const
int
res_id
,
const
int
res_id
,
const
int
do_srs
)
{
const
long
maxMIMO_Layers
,
const
int
do_srs
)
{
setup_release_srs_Config
->
present
=
NR_SetupRelease_SRS_Config_PR_setup
;
setup_release_srs_Config
->
present
=
NR_SetupRelease_SRS_Config_PR_setup
;
NR_SRS_Config_t
*
srs_Config
;
NR_SRS_Config_t
*
srs_Config
;
...
@@ -420,6 +421,7 @@ void config_srs(NR_SetupRelease_SRS_Config_t *setup_release_srs_Config,
...
@@ -420,6 +421,7 @@ void config_srs(NR_SetupRelease_SRS_Config_t *setup_release_srs_Config,
srs_res0
->
srs_ResourceId
=
res_id
;
srs_res0
->
srs_ResourceId
=
res_id
;
srs_res0
->
nrofSRS_Ports
=
NR_SRS_Resource__nrofSRS_Ports_port1
;
srs_res0
->
nrofSRS_Ports
=
NR_SRS_Resource__nrofSRS_Ports_port1
;
if
(
do_srs
)
{
if
(
do_srs
)
{
long
nrofSRS_Ports
=
1
;
if
(
uecap
&&
if
(
uecap
&&
uecap
->
featureSets
&&
uecap
->
featureSets
&&
uecap
->
featureSets
->
featureSetsUplink
&&
uecap
->
featureSets
->
featureSetsUplink
&&
...
@@ -427,18 +429,33 @@ void config_srs(NR_SetupRelease_SRS_Config_t *setup_release_srs_Config,
...
@@ -427,18 +429,33 @@ void config_srs(NR_SetupRelease_SRS_Config_t *setup_release_srs_Config,
NR_FeatureSetUplink_t
*
ul_feature_setup
=
uecap
->
featureSets
->
featureSetsUplink
->
list
.
array
[
0
];
NR_FeatureSetUplink_t
*
ul_feature_setup
=
uecap
->
featureSets
->
featureSetsUplink
->
list
.
array
[
0
];
switch
(
ul_feature_setup
->
supportedSRS_Resources
->
maxNumberSRS_Ports_PerResource
)
{
switch
(
ul_feature_setup
->
supportedSRS_Resources
->
maxNumberSRS_Ports_PerResource
)
{
case
NR_SRS_Resources__maxNumberSRS_Ports_PerResource_n1
:
case
NR_SRS_Resources__maxNumberSRS_Ports_PerResource_n1
:
srs_res0
->
nrofSRS_Ports
=
NR_SRS_Resource__nrofSRS_Ports_port
1
;
nrofSRS_Ports
=
1
;
break
;
break
;
case
NR_SRS_Resources__maxNumberSRS_Ports_PerResource_n2
:
case
NR_SRS_Resources__maxNumberSRS_Ports_PerResource_n2
:
srs_res0
->
nrofSRS_Ports
=
NR_SRS_Resource__nrofSRS_Ports_ports
2
;
nrofSRS_Ports
=
2
;
break
;
break
;
case
NR_SRS_Resources__maxNumberSRS_Ports_PerResource_n4
:
case
NR_SRS_Resources__maxNumberSRS_Ports_PerResource_n4
:
srs_res0
->
nrofSRS_Ports
=
NR_SRS_Resource__nrofSRS_Ports_ports
4
;
nrofSRS_Ports
=
4
;
break
;
break
;
default:
default:
LOG_E
(
NR_RRC
,
"Max Number of SRS Ports Per Resource %ld is invalid!
\n
"
,
LOG_E
(
NR_RRC
,
"Max Number of SRS Ports Per Resource %ld is invalid!
\n
"
,
ul_feature_setup
->
supportedSRS_Resources
->
maxNumberSRS_Ports_PerResource
);
ul_feature_setup
->
supportedSRS_Resources
->
maxNumberSRS_Ports_PerResource
);
}
}
nrofSRS_Ports
=
min
(
nrofSRS_Ports
,
maxMIMO_Layers
);
switch
(
nrofSRS_Ports
)
{
case
1
:
srs_res0
->
nrofSRS_Ports
=
NR_SRS_Resource__nrofSRS_Ports_port1
;
break
;
case
2
:
srs_res0
->
nrofSRS_Ports
=
NR_SRS_Resource__nrofSRS_Ports_ports2
;
break
;
case
4
:
srs_res0
->
nrofSRS_Ports
=
NR_SRS_Resource__nrofSRS_Ports_ports4
;
break
;
default:
LOG_E
(
NR_RRC
,
"Number of SRS Ports Per Resource %ld is invalid!
\n
"
,
ul_feature_setup
->
supportedSRS_Resources
->
maxNumberSRS_Ports_PerResource
);
}
}
}
LOG_I
(
NR_RRC
,
"SRS configured with %d ports
\n
"
,
1
<<
srs_res0
->
nrofSRS_Ports
);
LOG_I
(
NR_RRC
,
"SRS configured with %d ports
\n
"
,
1
<<
srs_res0
->
nrofSRS_Ports
);
}
}
...
@@ -1138,12 +1155,20 @@ void config_uplinkBWP(NR_BWP_Uplink_t *ubwp,
...
@@ -1138,12 +1155,20 @@ void config_uplinkBWP(NR_BWP_Uplink_t *ubwp,
pusch_Config
->
uci_OnPUSCH
=
NULL
;
pusch_Config
->
uci_OnPUSCH
=
NULL
;
pusch_Config
->
tp_pi2BPSK
=
NULL
;
pusch_Config
->
tp_pi2BPSK
=
NULL
;
long
maxMIMO_Layers
=
servingcellconfigdedicated
&&
servingcellconfigdedicated
->
uplinkConfig
&&
servingcellconfigdedicated
->
uplinkConfig
->
pusch_ServingCellConfig
&&
servingcellconfigdedicated
->
uplinkConfig
->
pusch_ServingCellConfig
->
choice
.
setup
->
ext1
&&
servingcellconfigdedicated
->
uplinkConfig
->
pusch_ServingCellConfig
->
choice
.
setup
->
ext1
->
maxMIMO_Layers
?
*
servingcellconfigdedicated
->
uplinkConfig
->
pusch_ServingCellConfig
->
choice
.
setup
->
ext1
->
maxMIMO_Layers
:
1
;
ubwp
->
bwp_Dedicated
->
srs_Config
=
calloc
(
1
,
sizeof
(
*
ubwp
->
bwp_Dedicated
->
srs_Config
));
ubwp
->
bwp_Dedicated
->
srs_Config
=
calloc
(
1
,
sizeof
(
*
ubwp
->
bwp_Dedicated
->
srs_Config
));
config_srs
(
ubwp
->
bwp_Dedicated
->
srs_Config
,
config_srs
(
ubwp
->
bwp_Dedicated
->
srs_Config
,
NULL
,
NULL
,
curr_bwp
,
curr_bwp
,
uid
,
uid
,
bwp_loop
+
1
,
bwp_loop
+
1
,
maxMIMO_Layers
,
configuration
->
do_SRS
);
configuration
->
do_SRS
);
ubwp
->
bwp_Dedicated
->
configuredGrantConfig
=
NULL
;
ubwp
->
bwp_Dedicated
->
configuredGrantConfig
=
NULL
;
...
...
openair2/RRC/NR/nr_rrc_config.h
View file @
4156f895
...
@@ -150,6 +150,7 @@ void config_srs(NR_SetupRelease_SRS_Config_t *setup_release_srs_Config,
...
@@ -150,6 +150,7 @@ void config_srs(NR_SetupRelease_SRS_Config_t *setup_release_srs_Config,
const
int
curr_bwp
,
const
int
curr_bwp
,
const
int
uid
,
const
int
uid
,
const
int
res_id
,
const
int
res_id
,
const
long
maxMIMO_Layers
,
const
int
do_srs
);
const
int
do_srs
);
void
set_dl_mcs_table
(
int
scs
,
void
set_dl_mcs_table
(
int
scs
,
NR_UE_NR_Capability_t
*
cap
,
NR_UE_NR_Capability_t
*
cap
,
...
...
openair2/RRC/NR/rrc_gNB_reconfig.c
View file @
4156f895
...
@@ -478,9 +478,15 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
...
@@ -478,9 +478,15 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
LOG_I
(
RRC
,
"TRANSFORM PRECODING ENABLED......
\n
"
);
LOG_I
(
RRC
,
"TRANSFORM PRECODING ENABLED......
\n
"
);
}
}
long
maxMIMO_Layers
=
servingcellconfigdedicated
->
uplinkConfig
&&
servingcellconfigdedicated
->
uplinkConfig
->
pusch_ServingCellConfig
&&
servingcellconfigdedicated
->
uplinkConfig
->
pusch_ServingCellConfig
->
choice
.
setup
->
ext1
&&
servingcellconfigdedicated
->
uplinkConfig
->
pusch_ServingCellConfig
->
choice
.
setup
->
ext1
->
maxMIMO_Layers
?
*
servingcellconfigdedicated
->
uplinkConfig
->
pusch_ServingCellConfig
->
choice
.
setup
->
ext1
->
maxMIMO_Layers
:
1
;
int
curr_bwp
=
NRRIV2BW
(
servingcellconfigcommon
->
downlinkConfigCommon
->
initialDownlinkBWP
->
genericParameters
.
locationAndBandwidth
,
MAX_BWP_SIZE
);
int
curr_bwp
=
NRRIV2BW
(
servingcellconfigcommon
->
downlinkConfigCommon
->
initialDownlinkBWP
->
genericParameters
.
locationAndBandwidth
,
MAX_BWP_SIZE
);
initialUplinkBWP
->
srs_Config
=
calloc
(
1
,
sizeof
(
*
initialUplinkBWP
->
srs_Config
));
initialUplinkBWP
->
srs_Config
=
calloc
(
1
,
sizeof
(
*
initialUplinkBWP
->
srs_Config
));
config_srs
(
initialUplinkBWP
->
srs_Config
,
NULL
,
curr_bwp
,
uid
,
0
,
configuration
->
do_SRS
);
config_srs
(
initialUplinkBWP
->
srs_Config
,
NULL
,
curr_bwp
,
uid
,
0
,
maxMIMO_Layers
,
configuration
->
do_SRS
);
// Downlink BWPs
// Downlink BWPs
int
n_dl_bwp
=
1
;
int
n_dl_bwp
=
1
;
...
...
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