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
wangjie
OpenXG-RAN
Commits
33101b27
Commit
33101b27
authored
Mar 26, 2021
by
francescomani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
getting rid of dl and ul_bwp_dedicated in config request
parent
f207b202
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
93 additions
and
71 deletions
+93
-71
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
+0
-6
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
+18
-10
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
+75
-55
No files found.
nfapi/open-nFAPI/nfapi/public_inc/fapi_nr_ue_interface.h
View file @
33101b27
...
@@ -1058,12 +1058,6 @@ typedef struct {
...
@@ -1058,12 +1058,6 @@ typedef struct {
fapi_nr_tdd_table_t
tdd_table
;
fapi_nr_tdd_table_t
tdd_table
;
fapi_nr_prach_config_t
prach_config
;
fapi_nr_prach_config_t
prach_config
;
fapi_nr_dl_bwp_common_config_t
dl_bwp_common
;
fapi_nr_dl_bwp_dedicated_config_t
dl_bwp_dedicated
;
fapi_nr_ul_bwp_common_config_t
ul_bwp_common
;
fapi_nr_ul_bwp_dedicated_config_t
ul_bwp_dedicated
;
}
fapi_nr_config_request_t
;
}
fapi_nr_config_request_t
;
#endif
#endif
...
...
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
View file @
33101b27
...
@@ -817,7 +817,7 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
...
@@ -817,7 +817,7 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
using tables 7.3.1.2.2-1, 7.3.1.2.2-2, 7.3.1.2.2-3, 7.3.1.2.2-4 of 3GPP TS 38.212 */
using tables 7.3.1.2.2-1, 7.3.1.2.2-2, 7.3.1.2.2-3, 7.3.1.2.2-4 of 3GPP TS 38.212 */
dlsch_config_pdu_1_1
->
n_dmrs_cdm_groups
=
1
;
dlsch_config_pdu_1_1
->
n_dmrs_cdm_groups
=
1
;
/* VRB_TO_PRB_MAPPING */
/* VRB_TO_PRB_MAPPING */
if
(
mac
->
phy_config
.
config_req
.
dl_bwp_dedicated
.
pdsch_config_dedicated
.
resource_allocation
!=
0
)
if
(
(
pdsch_config
->
resourceAllocation
==
1
)
&&
(
pdsch_config
->
vrb_ToPRB_Interleaver
!=
NULL
)
)
dlsch_config_pdu_1_1
->
vrb_to_prb_mapping
=
(
dci
->
vrb_to_prb_mapping
.
val
==
0
)
?
vrb_to_prb_mapping_non_interleaved
:
vrb_to_prb_mapping_interleaved
;
dlsch_config_pdu_1_1
->
vrb_to_prb_mapping
=
(
dci
->
vrb_to_prb_mapping
.
val
==
0
)
?
vrb_to_prb_mapping_non_interleaved
:
vrb_to_prb_mapping_interleaved
;
/* PRB_BUNDLING_SIZE_IND */
/* PRB_BUNDLING_SIZE_IND */
dlsch_config_pdu_1_1
->
prb_bundling_size_ind
=
dci
->
prb_bundling_size_indicator
.
val
;
dlsch_config_pdu_1_1
->
prb_bundling_size_ind
=
dci
->
prb_bundling_size_indicator
.
val
;
...
@@ -876,11 +876,22 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
...
@@ -876,11 +876,22 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
/* PDSCH_TO_HARQ_FEEDBACK_TIME_IND */
/* PDSCH_TO_HARQ_FEEDBACK_TIME_IND */
// according to TS 38.213 Table 9.2.3-1
// according to TS 38.213 Table 9.2.3-1
NR_BWP_Id_t
ul_bwp_id
=
mac
->
UL_BWP_Id
;
NR_BWP_Id_t
ul_bwp_id
=
mac
->
UL_BWP_Id
;
dlsch_config_pdu_1_1
->
pdsch_to_harq_feedback_time_ind
=
mac
->
ULbwp
[
ul_bwp_id
-
1
]
->
bwp_Dedicated
->
pucch_Config
->
choice
.
setup
->
dl_DataToUL_ACK
->
list
.
array
[
dci
->
pdsch_to_harq_feedback_timing_indicator
.
val
][
0
];
dlsch_config_pdu_1_1
->
pdsch_to_harq_feedback_time_ind
=
mac
->
ULbwp
[
ul_bwp_id
-
1
]
->
bwp_Dedicated
->
pucch_Config
->
choice
.
setup
->
dl_DataToUL_ACK
->
list
.
array
[
dci
->
pdsch_to_harq_feedback_timing_indicator
.
val
][
0
];
/* ANTENNA_PORTS */
/* ANTENNA_PORTS */
uint8_t
n_codewords
=
1
;
// FIXME!!!
uint8_t
n_codewords
=
1
;
// FIXME!!!
if
((
mac
->
phy_config
.
config_req
.
dl_bwp_dedicated
.
pdsch_config_dedicated
.
dmrs_dl_for_pdsch_mapping_type_a
.
dmrs_type
==
1
)
&&
long
*
max_length
=
NULL
;
(
mac
->
phy_config
.
config_req
.
dl_bwp_dedicated
.
pdsch_config_dedicated
.
dmrs_dl_for_pdsch_mapping_type_a
.
max_length
==
1
)){
long
*
dmrs_type
=
NULL
;
if
(
pdsch_config
->
dmrs_DownlinkForPDSCH_MappingTypeA
)
{
max_length
=
pdsch_config
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
choice
.
setup
->
maxLength
;
dmrs_type
=
pdsch_config
->
dmrs_DownlinkForPDSCH_MappingTypeA
->
choice
.
setup
->
dmrs_Type
;
}
if
(
pdsch_config
->
dmrs_DownlinkForPDSCH_MappingTypeB
)
{
max_length
=
pdsch_config
->
dmrs_DownlinkForPDSCH_MappingTypeB
->
choice
.
setup
->
maxLength
;
dmrs_type
=
pdsch_config
->
dmrs_DownlinkForPDSCH_MappingTypeB
->
choice
.
setup
->
dmrs_Type
;
}
if
((
dmrs_type
==
NULL
)
&&
(
max_length
==
NULL
)){
// Table 7.3.1.2.2-1: Antenna port(s) (1000 + DMRS port), dmrs-Type=1, maxLength=1
// Table 7.3.1.2.2-1: Antenna port(s) (1000 + DMRS port), dmrs-Type=1, maxLength=1
dlsch_config_pdu_1_1
->
n_dmrs_cdm_groups
=
table_7_3_2_3_3_1
[
dci
->
antenna_ports
.
val
][
0
];
dlsch_config_pdu_1_1
->
n_dmrs_cdm_groups
=
table_7_3_2_3_3_1
[
dci
->
antenna_ports
.
val
][
0
];
dlsch_config_pdu_1_1
->
dmrs_ports
[
0
]
=
table_7_3_2_3_3_1
[
dci
->
antenna_ports
.
val
][
1
];
dlsch_config_pdu_1_1
->
dmrs_ports
[
0
]
=
table_7_3_2_3_3_1
[
dci
->
antenna_ports
.
val
][
1
];
...
@@ -888,8 +899,7 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
...
@@ -888,8 +899,7 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
dlsch_config_pdu_1_1
->
dmrs_ports
[
2
]
=
table_7_3_2_3_3_1
[
dci
->
antenna_ports
.
val
][
3
];
dlsch_config_pdu_1_1
->
dmrs_ports
[
2
]
=
table_7_3_2_3_3_1
[
dci
->
antenna_ports
.
val
][
3
];
dlsch_config_pdu_1_1
->
dmrs_ports
[
3
]
=
table_7_3_2_3_3_1
[
dci
->
antenna_ports
.
val
][
4
];
dlsch_config_pdu_1_1
->
dmrs_ports
[
3
]
=
table_7_3_2_3_3_1
[
dci
->
antenna_ports
.
val
][
4
];
}
}
if
((
mac
->
phy_config
.
config_req
.
dl_bwp_dedicated
.
pdsch_config_dedicated
.
dmrs_dl_for_pdsch_mapping_type_a
.
dmrs_type
==
1
)
&&
if
((
dmrs_type
==
NULL
)
&&
(
max_length
!=
NULL
)){
(
mac
->
phy_config
.
config_req
.
dl_bwp_dedicated
.
pdsch_config_dedicated
.
dmrs_dl_for_pdsch_mapping_type_a
.
max_length
==
2
)){
// Table 7.3.1.2.2-2: Antenna port(s) (1000 + DMRS port), dmrs-Type=1, maxLength=2
// Table 7.3.1.2.2-2: Antenna port(s) (1000 + DMRS port), dmrs-Type=1, maxLength=2
if
(
n_codewords
==
1
)
{
if
(
n_codewords
==
1
)
{
dlsch_config_pdu_1_1
->
n_dmrs_cdm_groups
=
table_7_3_2_3_3_2_oneCodeword
[
dci
->
antenna_ports
.
val
][
0
];
dlsch_config_pdu_1_1
->
n_dmrs_cdm_groups
=
table_7_3_2_3_3_2_oneCodeword
[
dci
->
antenna_ports
.
val
][
0
];
...
@@ -912,8 +922,7 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
...
@@ -912,8 +922,7 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
dlsch_config_pdu_1_1
->
n_front_load_symb
=
table_7_3_2_3_3_2_twoCodeword
[
dci
->
antenna_ports
.
val
][
9
];
dlsch_config_pdu_1_1
->
n_front_load_symb
=
table_7_3_2_3_3_2_twoCodeword
[
dci
->
antenna_ports
.
val
][
9
];
}
}
}
}
if
((
mac
->
phy_config
.
config_req
.
dl_bwp_dedicated
.
pdsch_config_dedicated
.
dmrs_dl_for_pdsch_mapping_type_a
.
dmrs_type
==
2
)
&&
if
((
dmrs_type
!=
NULL
)
&&
(
max_length
==
NULL
)){
(
mac
->
phy_config
.
config_req
.
dl_bwp_dedicated
.
pdsch_config_dedicated
.
dmrs_dl_for_pdsch_mapping_type_a
.
max_length
==
1
)){
// Table 7.3.1.2.2-3: Antenna port(s) (1000 + DMRS port), dmrs-Type=2, maxLength=1
// Table 7.3.1.2.2-3: Antenna port(s) (1000 + DMRS port), dmrs-Type=2, maxLength=1
if
(
n_codewords
==
1
)
{
if
(
n_codewords
==
1
)
{
dlsch_config_pdu_1_1
->
n_dmrs_cdm_groups
=
table_7_3_2_3_3_3_oneCodeword
[
dci
->
antenna_ports
.
val
][
0
];
dlsch_config_pdu_1_1
->
n_dmrs_cdm_groups
=
table_7_3_2_3_3_3_oneCodeword
[
dci
->
antenna_ports
.
val
][
0
];
...
@@ -932,8 +941,7 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
...
@@ -932,8 +941,7 @@ int8_t nr_ue_process_dci(module_id_t module_id, int cc_id, uint8_t gNB_index, fr
dlsch_config_pdu_1_1
->
dmrs_ports
[
5
]
=
table_7_3_2_3_3_3_twoCodeword
[
dci
->
antenna_ports
.
val
][
6
];
dlsch_config_pdu_1_1
->
dmrs_ports
[
5
]
=
table_7_3_2_3_3_3_twoCodeword
[
dci
->
antenna_ports
.
val
][
6
];
}
}
}
}
if
((
mac
->
phy_config
.
config_req
.
dl_bwp_dedicated
.
pdsch_config_dedicated
.
dmrs_dl_for_pdsch_mapping_type_a
.
dmrs_type
==
2
)
&&
if
((
dmrs_type
!=
NULL
)
&&
(
max_length
!=
NULL
)){
(
mac
->
phy_config
.
config_req
.
dl_bwp_dedicated
.
pdsch_config_dedicated
.
dmrs_dl_for_pdsch_mapping_type_a
.
max_length
==
2
)){
// Table 7.3.1.2.2-4: Antenna port(s) (1000 + DMRS port), dmrs-Type=2, maxLength=2
// Table 7.3.1.2.2-4: Antenna port(s) (1000 + DMRS port), dmrs-Type=2, maxLength=2
if
(
n_codewords
==
1
)
{
if
(
n_codewords
==
1
)
{
dlsch_config_pdu_1_1
->
n_dmrs_cdm_groups
=
table_7_3_2_3_3_4_oneCodeword
[
dci
->
antenna_ports
.
val
][
0
];
dlsch_config_pdu_1_1
->
n_dmrs_cdm_groups
=
table_7_3_2_3_3_4_oneCodeword
[
dci
->
antenna_ports
.
val
][
0
];
...
...
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
View file @
33101b27
...
@@ -149,14 +149,25 @@ fapi_nr_ul_config_request_t *get_ul_config_request(NR_UE_MAC_INST_t *mac, int sl
...
@@ -149,14 +149,25 @@ fapi_nr_ul_config_request_t *get_ul_config_request(NR_UE_MAC_INST_t *mac, int sl
void
ul_layers_config
(
NR_UE_MAC_INST_t
*
mac
,
nfapi_nr_ue_pusch_pdu_t
*
pusch_config_pdu
,
dci_pdu_rel15_t
*
dci
)
{
void
ul_layers_config
(
NR_UE_MAC_INST_t
*
mac
,
nfapi_nr_ue_pusch_pdu_t
*
pusch_config_pdu
,
dci_pdu_rel15_t
*
dci
)
{
fapi_nr_pusch_config_dedicated_t
*
pusch_config_dedicated
=
&
mac
->
phy_config
.
config_req
.
ul_bwp_dedicated
.
pusch_config_dedicated
;
NR_ServingCellConfigCommon_t
*
scc
=
mac
->
scc
;
NR_PUSCH_Config_t
*
pusch_Config
=
mac
->
ULbwp
[
0
]
->
bwp_Dedicated
->
pusch_Config
->
choice
.
setup
;
NR_PUSCH_Config_t
*
pusch_Config
=
mac
->
ULbwp
[
0
]
->
bwp_Dedicated
->
pusch_Config
->
choice
.
setup
;
long
transformPrecoder
;
if
(
pusch_Config
->
transformPrecoder
)
transformPrecoder
=
*
pusch_Config
->
transformPrecoder
;
else
{
if
(
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
msg3_transformPrecoder
)
transformPrecoder
=
NR_PUSCH_Config__transformPrecoder_enabled
;
else
transformPrecoder
=
NR_PUSCH_Config__transformPrecoder_disabled
;
}
/* PRECOD_NBR_LAYERS */
/* PRECOD_NBR_LAYERS */
if
((
pusch_config_dedicated
->
tx_config
==
tx_c
onfig_nonCodebook
));
if
((
*
pusch_Config
->
txConfig
==
NR_PUSCH_Config__txC
onfig_nonCodebook
));
// 0 bits if the higher layer parameter txConfig = nonCodeBook
// 0 bits if the higher layer parameter txConfig = nonCodeBook
if
((
pusch_config_dedicated
->
tx_config
==
tx_c
onfig_codebook
)){
if
((
*
pusch_Config
->
txConfig
==
NR_PUSCH_Config__txC
onfig_codebook
)){
uint8_t
n_antenna_port
=
0
;
//FIXME!!!
uint8_t
n_antenna_port
=
0
;
//FIXME!!!
...
@@ -165,43 +176,43 @@ void ul_layers_config(NR_UE_MAC_INST_t * mac, nfapi_nr_ue_pusch_pdu_t *pusch_con
...
@@ -165,43 +176,43 @@ void ul_layers_config(NR_UE_MAC_INST_t * mac, nfapi_nr_ue_pusch_pdu_t *pusch_con
if
(
n_antenna_port
==
4
){
// 4 antenna port and the higher layer parameter txConfig = codebook
if
(
n_antenna_port
==
4
){
// 4 antenna port and the higher layer parameter txConfig = codebook
// Table 7.3.1.1.2-2: transformPrecoder=disabled and maxRank = 2 or 3 or 4
// Table 7.3.1.1.2-2: transformPrecoder=disabled and maxRank = 2 or 3 or 4
if
((
pusch_config_dedicated
->
transform_precoder
==
transform_p
recoder_disabled
)
if
((
transformPrecoder
==
NR_PUSCH_Config__transformP
recoder_disabled
)
&&
((
pusch_config_dedicated
->
max_r
ank
==
2
)
||
&&
((
*
pusch_Config
->
maxR
ank
==
2
)
||
(
pusch_config_dedicated
->
max_r
ank
==
3
)
||
(
*
pusch_Config
->
maxR
ank
==
3
)
||
(
pusch_config_dedicated
->
max_r
ank
==
4
))){
(
*
pusch_Config
->
maxR
ank
==
4
))){
if
(
pusch_config_dedicated
->
codebook_subset
==
codebook_s
ubset_fullyAndPartialAndNonCoherent
)
{
if
(
*
pusch_Config
->
codebookSubset
==
NR_PUSCH_Config__codebookS
ubset_fullyAndPartialAndNonCoherent
)
{
pusch_config_pdu
->
nrOfLayers
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
0
];
pusch_config_pdu
->
nrOfLayers
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
0
];
pusch_config_pdu
->
transform_precoding
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
1
];
pusch_config_pdu
->
transform_precoding
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
1
];
}
}
if
(
pusch_config_dedicated
->
codebook_subset
==
codebook_s
ubset_partialAndNonCoherent
){
if
(
*
pusch_Config
->
codebookSubset
==
NR_PUSCH_Config__codebookS
ubset_partialAndNonCoherent
){
pusch_config_pdu
->
nrOfLayers
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
2
];
pusch_config_pdu
->
nrOfLayers
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
2
];
pusch_config_pdu
->
transform_precoding
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
3
];
pusch_config_pdu
->
transform_precoding
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
3
];
}
}
if
(
pusch_config_dedicated
->
codebook_subset
==
codebook_s
ubset_nonCoherent
){
if
(
*
pusch_Config
->
codebookSubset
==
NR_PUSCH_Config__codebookS
ubset_nonCoherent
){
pusch_config_pdu
->
nrOfLayers
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
4
];
pusch_config_pdu
->
nrOfLayers
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
4
];
pusch_config_pdu
->
transform_precoding
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
5
];
pusch_config_pdu
->
transform_precoding
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
5
];
}
}
}
}
// Table 7.3.1.1.2-3: transformPrecoder= enabled, or transformPrecoder=disabled and maxRank = 1
// Table 7.3.1.1.2-3: transformPrecoder= enabled, or transformPrecoder=disabled and maxRank = 1
if
(((
pusch_config_dedicated
->
transform_precoder
==
transform_p
recoder_enabled
)
if
(((
transformPrecoder
==
NR_PUSCH_Config__transformP
recoder_enabled
)
||
(
pusch_config_dedicated
->
transform_precoder
==
transform_p
recoder_disabled
))
||
(
transformPrecoder
==
NR_PUSCH_Config__transformP
recoder_disabled
))
&&
(
pusch_config_dedicated
->
max_r
ank
==
1
)){
&&
(
*
pusch_Config
->
maxR
ank
==
1
)){
if
(
pusch_config_dedicated
->
codebook_subset
==
codebook_s
ubset_fullyAndPartialAndNonCoherent
)
{
if
(
*
pusch_Config
->
codebookSubset
==
NR_PUSCH_Config__codebookS
ubset_fullyAndPartialAndNonCoherent
)
{
pusch_config_pdu
->
nrOfLayers
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
6
];
pusch_config_pdu
->
nrOfLayers
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
6
];
pusch_config_pdu
->
transform_precoding
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
7
];
pusch_config_pdu
->
transform_precoding
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
7
];
}
}
if
(
pusch_config_dedicated
->
codebook_subset
==
codebook_s
ubset_partialAndNonCoherent
){
if
(
*
pusch_Config
->
codebookSubset
==
NR_PUSCH_Config__codebookS
ubset_partialAndNonCoherent
){
pusch_config_pdu
->
nrOfLayers
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
8
];
pusch_config_pdu
->
nrOfLayers
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
8
];
pusch_config_pdu
->
transform_precoding
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
9
];
pusch_config_pdu
->
transform_precoding
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
9
];
}
}
if
(
pusch_config_dedicated
->
codebook_subset
==
codebook_s
ubset_nonCoherent
){
if
(
*
pusch_Config
->
codebookSubset
==
NR_PUSCH_Config__codebookS
ubset_nonCoherent
){
pusch_config_pdu
->
nrOfLayers
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
10
];
pusch_config_pdu
->
nrOfLayers
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
10
];
pusch_config_pdu
->
transform_precoding
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
11
];
pusch_config_pdu
->
transform_precoding
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
11
];
}
}
...
@@ -210,14 +221,14 @@ void ul_layers_config(NR_UE_MAC_INST_t * mac, nfapi_nr_ue_pusch_pdu_t *pusch_con
...
@@ -210,14 +221,14 @@ void ul_layers_config(NR_UE_MAC_INST_t * mac, nfapi_nr_ue_pusch_pdu_t *pusch_con
if
(
n_antenna_port
==
4
){
// 2 antenna port and the higher layer parameter txConfig = codebook
if
(
n_antenna_port
==
4
){
// 2 antenna port and the higher layer parameter txConfig = codebook
// Table 7.3.1.1.2-4: transformPrecoder=disabled and maxRank = 2
// Table 7.3.1.1.2-4: transformPrecoder=disabled and maxRank = 2
if
((
pusch_config_dedicated
->
transform_precoder
==
transform_precoder_disabled
)
&&
(
pusch_config_dedicated
->
max_r
ank
==
2
)){
if
((
transformPrecoder
==
NR_PUSCH_Config__transformPrecoder_disabled
)
&&
(
*
pusch_Config
->
maxR
ank
==
2
)){
if
(
pusch_config_dedicated
->
codebook_subset
==
codebook_s
ubset_fullyAndPartialAndNonCoherent
)
{
if
(
*
pusch_Config
->
codebookSubset
==
NR_PUSCH_Config__codebookS
ubset_fullyAndPartialAndNonCoherent
)
{
pusch_config_pdu
->
nrOfLayers
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
12
];
pusch_config_pdu
->
nrOfLayers
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
12
];
pusch_config_pdu
->
transform_precoding
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
13
];
pusch_config_pdu
->
transform_precoding
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
13
];
}
}
if
(
pusch_config_dedicated
->
codebook_subset
==
codebook_s
ubset_nonCoherent
){
if
(
*
pusch_Config
->
codebookSubset
==
NR_PUSCH_Config__codebookS
ubset_nonCoherent
){
pusch_config_pdu
->
nrOfLayers
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
14
];
pusch_config_pdu
->
nrOfLayers
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
14
];
pusch_config_pdu
->
transform_precoding
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
15
];
pusch_config_pdu
->
transform_precoding
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
15
];
}
}
...
@@ -225,16 +236,16 @@ void ul_layers_config(NR_UE_MAC_INST_t * mac, nfapi_nr_ue_pusch_pdu_t *pusch_con
...
@@ -225,16 +236,16 @@ void ul_layers_config(NR_UE_MAC_INST_t * mac, nfapi_nr_ue_pusch_pdu_t *pusch_con
}
}
// Table 7.3.1.1.2-5: transformPrecoder= enabled, or transformPrecoder= disabled and maxRank = 1
// Table 7.3.1.1.2-5: transformPrecoder= enabled, or transformPrecoder= disabled and maxRank = 1
if
(((
pusch_config_dedicated
->
transform_precoder
==
transform_p
recoder_enabled
)
if
(((
transformPrecoder
==
NR_PUSCH_Config__transformP
recoder_enabled
)
||
(
pusch_config_dedicated
->
transform_precoder
==
transform_p
recoder_disabled
))
||
(
transformPrecoder
==
NR_PUSCH_Config__transformP
recoder_disabled
))
&&
(
pusch_config_dedicated
->
max_r
ank
==
1
)){
&&
(
*
pusch_Config
->
maxR
ank
==
1
)){
if
(
pusch_config_dedicated
->
codebook_subset
==
codebook_s
ubset_fullyAndPartialAndNonCoherent
)
{
if
(
*
pusch_Config
->
codebookSubset
==
NR_PUSCH_Config__codebookS
ubset_fullyAndPartialAndNonCoherent
)
{
pusch_config_pdu
->
nrOfLayers
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
16
];
pusch_config_pdu
->
nrOfLayers
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
16
];
pusch_config_pdu
->
transform_precoding
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
17
];
pusch_config_pdu
->
transform_precoding
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
17
];
}
}
if
(
pusch_config_dedicated
->
codebook_subset
==
codebook_s
ubset_nonCoherent
){
if
(
*
pusch_Config
->
codebookSubset
==
NR_PUSCH_Config__codebookS
ubset_nonCoherent
){
pusch_config_pdu
->
nrOfLayers
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
18
];
pusch_config_pdu
->
nrOfLayers
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
18
];
pusch_config_pdu
->
transform_precoding
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
19
];
pusch_config_pdu
->
transform_precoding
=
table_7_3_1_1_2_2_3_4_5
[
dci
->
precoding_information
.
val
][
19
];
}
}
...
@@ -245,7 +256,7 @@ void ul_layers_config(NR_UE_MAC_INST_t * mac, nfapi_nr_ue_pusch_pdu_t *pusch_con
...
@@ -245,7 +256,7 @@ void ul_layers_config(NR_UE_MAC_INST_t * mac, nfapi_nr_ue_pusch_pdu_t *pusch_con
/*-------------------- Changed to enable Transform precoding in RF SIM------------------------------------------------*/
/*-------------------- Changed to enable Transform precoding in RF SIM------------------------------------------------*/
if
(
pusch_config_pdu
->
transform_precoding
==
transform_precoder_enabled
)
{
/*
if (pusch_config_pdu->transform_precoding == transform_precoder_enabled) {
pusch_config_dedicated->transform_precoder = transform_precoder_enabled;
pusch_config_dedicated->transform_precoder = transform_precoder_enabled;
...
@@ -269,15 +280,7 @@ void ul_layers_config(NR_UE_MAC_INST_t * mac, nfapi_nr_ue_pusch_pdu_t *pusch_con
...
@@ -269,15 +280,7 @@ void ul_layers_config(NR_UE_MAC_INST_t * mac, nfapi_nr_ue_pusch_pdu_t *pusch_con
}
}
} else
} else
pusch_config_dedicated
->
transform_precoder
=
transform_precoder_disabled
;
pusch_config_dedicated->transform_precoder = transform_precoder_disabled;*/
// mapping type b configured from RRC. TBD: Mapping type b is not handled in this function.
if
((
pusch_config_dedicated
->
transform_precoder
==
transform_precoder_enabled
)
&&
(
pusch_config_dedicated
->
dmrs_ul_for_pusch_mapping_type_b
.
dmrs_type
==
1
)
&&
(
pusch_config_dedicated
->
dmrs_ul_for_pusch_mapping_type_b
.
max_length
==
1
))
{
// tables 7.3.1.1.2-6
pusch_config_pdu
->
num_dmrs_cdm_grps_no_data
=
2
;
pusch_config_pdu
->
dmrs_ports
=
dci
->
antenna_ports
.
val
;
}
}
}
// todo: this function shall be reviewed completely because of the many comments left by the author
// todo: this function shall be reviewed completely because of the many comments left by the author
...
@@ -285,27 +288,47 @@ void ul_ports_config(NR_UE_MAC_INST_t * mac, nfapi_nr_ue_pusch_pdu_t *pusch_conf
...
@@ -285,27 +288,47 @@ void ul_ports_config(NR_UE_MAC_INST_t * mac, nfapi_nr_ue_pusch_pdu_t *pusch_conf
/* ANTENNA_PORTS */
/* ANTENNA_PORTS */
uint8_t
rank
=
0
;
// We need to initialize rank FIXME!!!
uint8_t
rank
=
0
;
// We need to initialize rank FIXME!!!
fapi_nr_pusch_config_dedicated_t
*
pusch_config_dedicated
=
&
mac
->
phy_config
.
config_req
.
ul_bwp_dedicated
.
pusch_config_dedicated
;
if
((
pusch_config_dedicated
->
transform_precoder
==
transform_precoder_enabled
)
&&
NR_ServingCellConfigCommon_t
*
scc
=
mac
->
scc
;
(
pusch_config_dedicated
->
dmrs_ul_for_pusch_mapping_type_a
.
dmrs_type
==
1
)
&&
NR_PUSCH_Config_t
*
pusch_Config
=
mac
->
ULbwp
[
0
]
->
bwp_Dedicated
->
pusch_Config
->
choice
.
setup
;
(
pusch_config_dedicated
->
dmrs_ul_for_pusch_mapping_type_a
.
max_length
==
1
))
{
// tables 7.3.1.1.2-6
long
transformPrecoder
;
if
(
pusch_Config
->
transformPrecoder
)
transformPrecoder
=
*
pusch_Config
->
transformPrecoder
;
else
{
if
(
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
msg3_transformPrecoder
)
transformPrecoder
=
NR_PUSCH_Config__transformPrecoder_enabled
;
else
transformPrecoder
=
NR_PUSCH_Config__transformPrecoder_disabled
;
}
long
*
max_length
=
NULL
;
long
*
dmrs_type
=
NULL
;
if
(
pusch_Config
->
dmrs_UplinkForPUSCH_MappingTypeA
)
{
max_length
=
pusch_Config
->
dmrs_UplinkForPUSCH_MappingTypeA
->
choice
.
setup
->
maxLength
;
dmrs_type
=
pusch_Config
->
dmrs_UplinkForPUSCH_MappingTypeA
->
choice
.
setup
->
dmrs_Type
;
}
else
{
max_length
=
pusch_Config
->
dmrs_UplinkForPUSCH_MappingTypeB
->
choice
.
setup
->
maxLength
;
dmrs_type
=
pusch_Config
->
dmrs_UplinkForPUSCH_MappingTypeB
->
choice
.
setup
->
dmrs_Type
;
}
if
((
transformPrecoder
==
NR_PUSCH_Config__transformPrecoder_enabled
)
&&
(
dmrs_type
==
NULL
)
&&
(
max_length
==
NULL
))
{
// tables 7.3.1.1.2-6
pusch_config_pdu
->
num_dmrs_cdm_grps_no_data
=
2
;
//TBC
pusch_config_pdu
->
num_dmrs_cdm_grps_no_data
=
2
;
//TBC
pusch_config_pdu
->
dmrs_ports
=
dci
->
antenna_ports
.
val
;
//TBC
pusch_config_pdu
->
dmrs_ports
=
dci
->
antenna_ports
.
val
;
//TBC
}
}
if
((
pusch_config_dedicated
->
transform_precoder
==
transform_precoder_enabled
)
&&
if
((
transformPrecoder
==
NR_PUSCH_Config__transformPrecoder_enabled
)
&&
(
pusch_config_dedicated
->
dmrs_ul_for_pusch_mapping_type_a
.
dmrs_type
==
1
)
&&
(
dmrs_type
==
NULL
)
&&
(
max_length
!=
NULL
))
{
// tables 7.3.1.1.2-7
(
pusch_config_dedicated
->
dmrs_ul_for_pusch_mapping_type_a
.
max_length
==
2
))
{
// tables 7.3.1.1.2-7
pusch_config_pdu
->
num_dmrs_cdm_grps_no_data
=
2
;
//TBC
pusch_config_pdu
->
num_dmrs_cdm_grps_no_data
=
2
;
//TBC
pusch_config_pdu
->
dmrs_ports
=
(
dci
->
antenna_ports
.
val
>
3
)
?
(
dci
->
antenna_ports
.
val
-
4
)
:
(
dci
->
antenna_ports
.
val
);
//TBC
pusch_config_pdu
->
dmrs_ports
=
(
dci
->
antenna_ports
.
val
>
3
)
?
(
dci
->
antenna_ports
.
val
-
4
)
:
(
dci
->
antenna_ports
.
val
);
//TBC
//pusch_config_pdu->n_front_load_symb = (dci->antenna_ports > 3)?2:1; //FIXME
//pusch_config_pdu->n_front_load_symb = (dci->antenna_ports > 3)?2:1; //FIXME
}
}
if
((
pusch_config_dedicated
->
transform_precoder
==
transform_precoder_disabled
)
&&
if
((
transformPrecoder
==
NR_PUSCH_Config__transformPrecoder_disabled
)
&&
(
pusch_config_dedicated
->
dmrs_ul_for_pusch_mapping_type_a
.
dmrs_type
==
1
)
&&
(
dmrs_type
==
NULL
)
&&
(
max_length
==
NULL
))
{
// tables 7.3.1.1.2-8/9/10/11
(
pusch_config_dedicated
->
dmrs_ul_for_pusch_mapping_type_a
.
max_length
==
1
))
{
// tables 7.3.1.1.2-8/9/10/11
if
(
rank
==
1
)
{
if
(
rank
==
1
)
{
pusch_config_pdu
->
num_dmrs_cdm_grps_no_data
=
(
dci
->
antenna_ports
.
val
>
1
)
?
2
:
1
;
//TBC
pusch_config_pdu
->
num_dmrs_cdm_grps_no_data
=
(
dci
->
antenna_ports
.
val
>
1
)
?
2
:
1
;
//TBC
...
@@ -337,9 +360,8 @@ void ul_ports_config(NR_UE_MAC_INST_t * mac, nfapi_nr_ue_pusch_pdu_t *pusch_conf
...
@@ -337,9 +360,8 @@ void ul_ports_config(NR_UE_MAC_INST_t * mac, nfapi_nr_ue_pusch_pdu_t *pusch_conf
}
}
}
}
if
((
pusch_config_dedicated
->
transform_precoder
==
transform_precoder_disabled
)
&&
if
((
transformPrecoder
==
NR_PUSCH_Config__transformPrecoder_disabled
)
&&
(
pusch_config_dedicated
->
dmrs_ul_for_pusch_mapping_type_a
.
dmrs_type
==
1
)
&&
(
dmrs_type
==
NULL
)
&&
(
max_length
!=
NULL
))
{
// tables 7.3.1.1.2-12/13/14/15
(
pusch_config_dedicated
->
dmrs_ul_for_pusch_mapping_type_a
.
max_length
==
2
))
{
// tables 7.3.1.1.2-12/13/14/15
if
(
rank
==
1
){
if
(
rank
==
1
){
pusch_config_pdu
->
num_dmrs_cdm_grps_no_data
=
(
dci
->
antenna_ports
.
val
>
1
)
?
2
:
1
;
//TBC
pusch_config_pdu
->
num_dmrs_cdm_grps_no_data
=
(
dci
->
antenna_ports
.
val
>
1
)
?
2
:
1
;
//TBC
...
@@ -375,9 +397,9 @@ void ul_ports_config(NR_UE_MAC_INST_t * mac, nfapi_nr_ue_pusch_pdu_t *pusch_conf
...
@@ -375,9 +397,9 @@ void ul_ports_config(NR_UE_MAC_INST_t * mac, nfapi_nr_ue_pusch_pdu_t *pusch_conf
}
}
}
}
if
((
pusch_config_dedicated
->
transform_precoder
==
transform_p
recoder_disabled
)
&&
if
((
transformPrecoder
==
NR_PUSCH_Config__transformP
recoder_disabled
)
&&
(
pusch_config_dedicated
->
dmrs_ul_for_pusch_mapping_type_a
.
dmrs_type
==
2
)
&&
(
dmrs_type
!=
NULL
)
&&
(
pusch_config_dedicated
->
dmrs_ul_for_pusch_mapping_type_a
.
max_length
==
1
))
{
// tables 7.3.1.1.2-16/17/18/19
(
max_length
==
NULL
))
{
// tables 7.3.1.1.2-16/17/18/19
if
(
rank
==
1
){
if
(
rank
==
1
){
pusch_config_pdu
->
num_dmrs_cdm_grps_no_data
=
(
dci
->
antenna_ports
.
val
>
1
)
?
((
dci
->
antenna_ports
.
val
>
5
)
?
3
:
2
)
:
1
;
//TBC
pusch_config_pdu
->
num_dmrs_cdm_grps_no_data
=
(
dci
->
antenna_ports
.
val
>
1
)
?
((
dci
->
antenna_ports
.
val
>
5
)
?
3
:
2
)
:
1
;
//TBC
...
@@ -409,9 +431,8 @@ void ul_ports_config(NR_UE_MAC_INST_t * mac, nfapi_nr_ue_pusch_pdu_t *pusch_conf
...
@@ -409,9 +431,8 @@ void ul_ports_config(NR_UE_MAC_INST_t * mac, nfapi_nr_ue_pusch_pdu_t *pusch_conf
}
}
}
}
if
((
pusch_config_dedicated
->
transform_precoder
==
transform_precoder_disabled
)
&&
if
((
transformPrecoder
==
NR_PUSCH_Config__transformPrecoder_disabled
)
&&
(
pusch_config_dedicated
->
dmrs_ul_for_pusch_mapping_type_a
.
dmrs_type
==
2
)
&&
(
dmrs_type
!=
NULL
)
&&
(
max_length
!=
NULL
))
{
// tables 7.3.1.1.2-20/21/22/23
(
pusch_config_dedicated
->
dmrs_ul_for_pusch_mapping_type_a
.
max_length
==
2
))
{
// tables 7.3.1.1.2-20/21/22/23
if
(
rank
==
1
){
if
(
rank
==
1
){
pusch_config_pdu
->
num_dmrs_cdm_grps_no_data
=
table_7_3_1_1_2_20
[
dci
->
antenna_ports
.
val
][
0
];
//TBC
pusch_config_pdu
->
num_dmrs_cdm_grps_no_data
=
table_7_3_1_1_2_20
[
dci
->
antenna_ports
.
val
][
0
];
//TBC
...
@@ -569,7 +590,6 @@ int nr_config_pusch_pdu(NR_UE_MAC_INST_t *mac,
...
@@ -569,7 +590,6 @@ int nr_config_pusch_pdu(NR_UE_MAC_INST_t *mac,
int
target_ss
;
int
target_ss
;
bool
valid_ptrs_setup
=
0
;
bool
valid_ptrs_setup
=
0
;
uint16_t
n_RB_ULBWP
=
NRRIV2BW
(
mac
->
ULbwp
[
0
]
->
bwp_Common
->
genericParameters
.
locationAndBandwidth
,
MAX_BWP_SIZE
);
uint16_t
n_RB_ULBWP
=
NRRIV2BW
(
mac
->
ULbwp
[
0
]
->
bwp_Common
->
genericParameters
.
locationAndBandwidth
,
MAX_BWP_SIZE
);
fapi_nr_pusch_config_dedicated_t
*
pusch_config_dedicated
=
&
mac
->
phy_config
.
config_req
.
ul_bwp_dedicated
.
pusch_config_dedicated
;
NR_PUSCH_Config_t
*
pusch_Config
=
mac
->
ULbwp
[
0
]
->
bwp_Dedicated
->
pusch_Config
->
choice
.
setup
;
NR_PUSCH_Config_t
*
pusch_Config
=
mac
->
ULbwp
[
0
]
->
bwp_Dedicated
->
pusch_Config
->
choice
.
setup
;
// Basic sanity check for MCS value to check for a false or erroneous DCI
// Basic sanity check for MCS value to check for a false or erroneous DCI
...
@@ -652,7 +672,7 @@ int nr_config_pusch_pdu(NR_UE_MAC_INST_t *mac,
...
@@ -652,7 +672,7 @@ int nr_config_pusch_pdu(NR_UE_MAC_INST_t *mac,
}
}
/* FREQ_HOPPING_FLAG */
/* FREQ_HOPPING_FLAG */
if
((
pusch_
config_dedicated
->
resource_allocation
!=
0
)
&&
(
pusch_config_dedicated
->
frequency_hopping
!=
0
)){
if
((
pusch_
Config
->
frequencyHopping
!=
NULL
)
&&
(
pusch_Config
->
resourceAllocation
!=
NR_PUSCH_Config__resourceAllocation_resourceAllocationType
0
)){
pusch_config_pdu
->
frequency_hopping
=
dci
->
frequency_hopping_flag
.
val
;
pusch_config_pdu
->
frequency_hopping
=
dci
->
frequency_hopping_flag
.
val
;
}
}
...
...
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