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
ab11e1a5
Commit
ab11e1a5
authored
3 months ago
by
francescomani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
function for precoding information parameters
parent
0565b999
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
78 additions
and
84 deletions
+78
-84
openair2/LAYER2/NR_MAC_UE/mac_extern.h
openair2/LAYER2/NR_MAC_UE/mac_extern.h
+0
-2
openair2/LAYER2/NR_MAC_UE/mac_proto.h
openair2/LAYER2/NR_MAC_UE/mac_proto.h
+5
-1
openair2/LAYER2/NR_MAC_UE/mac_vars.c
openair2/LAYER2/NR_MAC_UE/mac_vars.c
+71
-0
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
+2
-81
No files found.
openair2/LAYER2/NR_MAC_UE/mac_extern.h
View file @
ab11e1a5
...
@@ -32,8 +32,6 @@
...
@@ -32,8 +32,6 @@
#include "mac_defs.h"
#include "mac_defs.h"
// DCI
extern
const
uint8_t
table_7_3_1_1_2_2_3_4_5
[
64
][
20
];
extern
const
uint8_t
table_7_3_1_1_2_12
[
14
][
3
];
extern
const
uint8_t
table_7_3_1_1_2_12
[
14
][
3
];
extern
const
uint8_t
table_7_3_1_1_2_13
[
10
][
4
];
extern
const
uint8_t
table_7_3_1_1_2_13
[
10
][
4
];
extern
const
uint8_t
table_7_3_1_1_2_14
[
3
][
5
];
extern
const
uint8_t
table_7_3_1_1_2_14
[
3
][
5
];
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_UE/mac_proto.h
View file @
ab11e1a5
...
@@ -192,7 +192,11 @@ void config_dci_pdu(NR_UE_MAC_INST_t *mac,
...
@@ -192,7 +192,11 @@ void config_dci_pdu(NR_UE_MAC_INST_t *mac,
const
NR_SearchSpace_t
*
ss
);
const
NR_SearchSpace_t
*
ss
);
void
ue_dci_configuration
(
NR_UE_MAC_INST_t
*
mac
,
fapi_nr_dl_config_request_t
*
dl_config
,
const
frame_t
frame
,
const
int
slot
);
void
ue_dci_configuration
(
NR_UE_MAC_INST_t
*
mac
,
fapi_nr_dl_config_request_t
*
dl_config
,
const
frame_t
frame
,
const
int
slot
);
void
set_precoding_information_parameters
(
nfapi_nr_ue_pusch_pdu_t
*
pusch_config_pdu
,
int
n_antenna_port
,
long
transformPrecoder
,
int
precoding_information
,
NR_PUSCH_Config_t
*
pusch_Config
);
void
set_harq_status
(
NR_UE_MAC_INST_t
*
mac
,
void
set_harq_status
(
NR_UE_MAC_INST_t
*
mac
,
uint8_t
pucch_id
,
uint8_t
pucch_id
,
uint8_t
harq_id
,
uint8_t
harq_id
,
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_UE/mac_vars.c
View file @
ab11e1a5
...
@@ -490,3 +490,74 @@ void set_antenna_port_parameters(fapi_nr_dl_config_dlsch_pdu_rel15_t *dlsch_pdu,
...
@@ -490,3 +490,74 @@ void set_antenna_port_parameters(fapi_nr_dl_config_dlsch_pdu_rel15_t *dlsch_pdu,
}
}
}
}
}
}
void
set_precoding_information_parameters
(
nfapi_nr_ue_pusch_pdu_t
*
pusch_config_pdu
,
int
n_antenna_port
,
long
transformPrecoder
,
int
precoding_information
,
NR_PUSCH_Config_t
*
pusch_Config
)
{
// 1 antenna port and the higher layer parameter txConfig = codebook 0 bits
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
if
((
transformPrecoder
==
NR_PUSCH_Config__transformPrecoder_disabled
)
&&
((
*
pusch_Config
->
maxRank
==
2
)
||
(
*
pusch_Config
->
maxRank
==
3
)
||
(
*
pusch_Config
->
maxRank
==
4
)))
{
if
(
*
pusch_Config
->
codebookSubset
==
NR_PUSCH_Config__codebookSubset_fullyAndPartialAndNonCoherent
)
{
pusch_config_pdu
->
nrOfLayers
=
table_7_3_1_1_2_2_3_4_5
[
precoding_information
][
0
];
pusch_config_pdu
->
Tpmi
=
table_7_3_1_1_2_2_3_4_5
[
precoding_information
][
1
];
}
if
(
*
pusch_Config
->
codebookSubset
==
NR_PUSCH_Config__codebookSubset_partialAndNonCoherent
){
pusch_config_pdu
->
nrOfLayers
=
table_7_3_1_1_2_2_3_4_5
[
precoding_information
][
2
];
pusch_config_pdu
->
Tpmi
=
table_7_3_1_1_2_2_3_4_5
[
precoding_information
][
3
];
}
if
(
*
pusch_Config
->
codebookSubset
==
NR_PUSCH_Config__codebookSubset_nonCoherent
){
pusch_config_pdu
->
nrOfLayers
=
table_7_3_1_1_2_2_3_4_5
[
precoding_information
][
4
];
pusch_config_pdu
->
Tpmi
=
table_7_3_1_1_2_2_3_4_5
[
precoding_information
][
5
];
}
}
// Table 7.3.1.1.2-3: transformPrecoder= enabled, or transformPrecoder=disabled and maxRank = 1
if
(((
transformPrecoder
==
NR_PUSCH_Config__transformPrecoder_enabled
)
||
(
transformPrecoder
==
NR_PUSCH_Config__transformPrecoder_disabled
))
&&
(
*
pusch_Config
->
maxRank
==
1
))
{
if
(
*
pusch_Config
->
codebookSubset
==
NR_PUSCH_Config__codebookSubset_fullyAndPartialAndNonCoherent
)
{
pusch_config_pdu
->
nrOfLayers
=
table_7_3_1_1_2_2_3_4_5
[
precoding_information
][
6
];
pusch_config_pdu
->
Tpmi
=
table_7_3_1_1_2_2_3_4_5
[
precoding_information
][
7
];
}
if
(
*
pusch_Config
->
codebookSubset
==
NR_PUSCH_Config__codebookSubset_partialAndNonCoherent
){
pusch_config_pdu
->
nrOfLayers
=
table_7_3_1_1_2_2_3_4_5
[
precoding_information
][
8
];
pusch_config_pdu
->
Tpmi
=
table_7_3_1_1_2_2_3_4_5
[
precoding_information
][
9
];
}
if
(
*
pusch_Config
->
codebookSubset
==
NR_PUSCH_Config__codebookSubset_nonCoherent
){
pusch_config_pdu
->
nrOfLayers
=
table_7_3_1_1_2_2_3_4_5
[
precoding_information
][
10
];
pusch_config_pdu
->
Tpmi
=
table_7_3_1_1_2_2_3_4_5
[
precoding_information
][
11
];
}
}
}
if
(
n_antenna_port
==
2
)
{
// 2 antenna port and the higher layer parameter txConfig = codebook
// Table 7.3.1.1.2-4: transformPrecoder=disabled and maxRank = 2
if
((
transformPrecoder
==
NR_PUSCH_Config__transformPrecoder_disabled
)
&&
(
*
pusch_Config
->
maxRank
==
2
))
{
if
(
*
pusch_Config
->
codebookSubset
==
NR_PUSCH_Config__codebookSubset_fullyAndPartialAndNonCoherent
)
{
pusch_config_pdu
->
nrOfLayers
=
table_7_3_1_1_2_2_3_4_5
[
precoding_information
][
12
];
pusch_config_pdu
->
Tpmi
=
table_7_3_1_1_2_2_3_4_5
[
precoding_information
][
13
];
}
if
(
*
pusch_Config
->
codebookSubset
==
NR_PUSCH_Config__codebookSubset_nonCoherent
){
pusch_config_pdu
->
nrOfLayers
=
table_7_3_1_1_2_2_3_4_5
[
precoding_information
][
14
];
pusch_config_pdu
->
Tpmi
=
table_7_3_1_1_2_2_3_4_5
[
precoding_information
][
15
];
}
}
// Table 7.3.1.1.2-5: transformPrecoder= enabled, or transformPrecoder= disabled and maxRank = 1
if
(((
transformPrecoder
==
NR_PUSCH_Config__transformPrecoder_enabled
)
||
(
transformPrecoder
==
NR_PUSCH_Config__transformPrecoder_disabled
))
&&
(
*
pusch_Config
->
maxRank
==
1
))
{
if
(
*
pusch_Config
->
codebookSubset
==
NR_PUSCH_Config__codebookSubset_fullyAndPartialAndNonCoherent
)
{
pusch_config_pdu
->
nrOfLayers
=
table_7_3_1_1_2_2_3_4_5
[
precoding_information
][
16
];
pusch_config_pdu
->
Tpmi
=
table_7_3_1_1_2_2_3_4_5
[
precoding_information
][
17
];
}
if
(
*
pusch_Config
->
codebookSubset
==
NR_PUSCH_Config__codebookSubset_nonCoherent
){
pusch_config_pdu
->
nrOfLayers
=
table_7_3_1_1_2_2_3_4_5
[
precoding_information
][
18
];
pusch_config_pdu
->
Tpmi
=
table_7_3_1_1_2_2_3_4_5
[
precoding_information
][
19
];
}
}
}
}
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
View file @
ab11e1a5
...
@@ -303,94 +303,15 @@ void ul_layers_config(NR_UE_MAC_INST_t *mac, nfapi_nr_ue_pusch_pdu_t *pusch_conf
...
@@ -303,94 +303,15 @@ void ul_layers_config(NR_UE_MAC_INST_t *mac, nfapi_nr_ue_pusch_pdu_t *pusch_conf
NR_UE_UL_BWP_t *current_UL_BWP = mac->current_UL_BWP;
NR_UE_UL_BWP_t *current_UL_BWP = mac->current_UL_BWP;
NR_SRS_Config_t *srs_config = current_UL_BWP->srs_Config;
NR_SRS_Config_t *srs_config = current_UL_BWP->srs_Config;
NR_PUSCH_Config_t *pusch_Config = current_UL_BWP->pusch_Config;
NR_PUSCH_Config_t *pusch_Config = current_UL_BWP->pusch_Config;
long transformPrecoder = pusch_config_pdu->transform_precoding;
long transformPrecoder = pusch_config_pdu->transform_precoding;
/* PRECOD_NBR_LAYERS */
/* PRECOD_NBR_LAYERS */
// 0 bits if the higher layer parameter txConfig = nonCodeBook
// 0 bits if the higher layer parameter txConfig = nonCodeBook
if (*pusch_Config->txConfig == NR_PUSCH_Config__txConfig_codebook){
if (*pusch_Config->txConfig == NR_PUSCH_Config__txConfig_codebook){
// The UE shall transmit PUSCH using the same antenna port(s) as the SRS port(s) in the SRS resource indicated by the DCI format 0_1
// The UE shall transmit PUSCH using the same antenna port(s) as the SRS port(s) in the SRS resource indicated by the DCI format 0_1
// 38.214 Section 6.1.1
// 38.214 Section 6.1.1
uint8_t n = get_pusch_nb_antenna_ports(pusch_Config, srs_config, dci->srs_resource_indicator);
uint8_t n_antenna_port = get_pusch_nb_antenna_ports(pusch_Config, srs_config, dci->srs_resource_indicator);
set_precoding_information_parameters(pusch_config_pdu, n, transformPrecoder, dci->precoding_information.val, pusch_Config);
// 1 antenna port and the higher layer parameter txConfig = codebook 0 bits
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
if ((transformPrecoder == NR_PUSCH_Config__transformPrecoder_disabled)
&& ((*pusch_Config->maxRank == 2) || (*pusch_Config->maxRank == 3) || (*pusch_Config->maxRank == 4))) {
if (*pusch_Config->codebookSubset == NR_PUSCH_Config__codebookSubset_fullyAndPartialAndNonCoherent) {
pusch_config_pdu->nrOfLayers = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][0];
pusch_config_pdu->Tpmi = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][1];
}
if (*pusch_Config->codebookSubset == NR_PUSCH_Config__codebookSubset_partialAndNonCoherent){
pusch_config_pdu->nrOfLayers = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][2];
pusch_config_pdu->Tpmi = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][3];
}
if (*pusch_Config->codebookSubset == NR_PUSCH_Config__codebookSubset_nonCoherent){
pusch_config_pdu->nrOfLayers = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][4];
pusch_config_pdu->Tpmi = 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
if (((transformPrecoder == NR_PUSCH_Config__transformPrecoder_enabled)
|| (transformPrecoder == NR_PUSCH_Config__transformPrecoder_disabled))
&& (*pusch_Config->maxRank == 1)) {
if (*pusch_Config->codebookSubset == NR_PUSCH_Config__codebookSubset_fullyAndPartialAndNonCoherent) {
pusch_config_pdu->nrOfLayers = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][6];
pusch_config_pdu->Tpmi = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][7];
}
if (*pusch_Config->codebookSubset == NR_PUSCH_Config__codebookSubset_partialAndNonCoherent){
pusch_config_pdu->nrOfLayers = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][8];
pusch_config_pdu->Tpmi = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][9];
}
if (*pusch_Config->codebookSubset == NR_PUSCH_Config__codebookSubset_nonCoherent){
pusch_config_pdu->nrOfLayers = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][10];
pusch_config_pdu->Tpmi = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][11];
}
}
}
if (n_antenna_port == 2) {
// 2 antenna port and the higher layer parameter txConfig = codebook
// Table 7.3.1.1.2-4: transformPrecoder=disabled and maxRank = 2
if ((transformPrecoder == NR_PUSCH_Config__transformPrecoder_disabled) && (*pusch_Config->maxRank == 2)) {
if (*pusch_Config->codebookSubset == NR_PUSCH_Config__codebookSubset_fullyAndPartialAndNonCoherent) {
pusch_config_pdu->nrOfLayers = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][12];
pusch_config_pdu->Tpmi = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][13];
}
if (*pusch_Config->codebookSubset == NR_PUSCH_Config__codebookSubset_nonCoherent){
pusch_config_pdu->nrOfLayers = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][14];
pusch_config_pdu->Tpmi = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][15];
}
}
// Table 7.3.1.1.2-5: transformPrecoder= enabled, or transformPrecoder= disabled and maxRank = 1
if (((transformPrecoder == NR_PUSCH_Config__transformPrecoder_enabled)
|| (transformPrecoder == NR_PUSCH_Config__transformPrecoder_disabled))
&& (*pusch_Config->maxRank == 1)) {
if (*pusch_Config->codebookSubset == NR_PUSCH_Config__codebookSubset_fullyAndPartialAndNonCoherent) {
pusch_config_pdu->nrOfLayers = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][16];
pusch_config_pdu->Tpmi = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][17];
}
if (*pusch_Config->codebookSubset == NR_PUSCH_Config__codebookSubset_nonCoherent){
pusch_config_pdu->nrOfLayers = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][18];
pusch_config_pdu->Tpmi = table_7_3_1_1_2_2_3_4_5[dci->precoding_information.val][19];
}
}
}
}
}
}
}
...
...
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