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
ZhouShuya
OpenXG-RAN
Commits
20f5e27e
Commit
20f5e27e
authored
Apr 07, 2020
by
Francesco Mani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
filling dci pdu
parent
b29d2707
Changes
4
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
157 additions
and
68 deletions
+157
-68
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
+56
-34
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
+25
-12
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
+67
-20
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
+9
-2
No files found.
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
View file @
20f5e27e
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
View file @
20f5e27e
...
...
@@ -267,7 +267,7 @@ int configure_fapi_dl_pdu(int Mod_idP,
nfapi_nr_dl_tti_request_pdu_t
*
dl_tti_pdsch_pdu
;
int
TBS
;
int
bwp_id
=
1
;
bwp_id
=
1
;
int
UE_id
=
0
;
NR_UE_list_t
*
UE_list
=
&
RC
.
nrmac
[
Mod_idP
]
->
UE_list
;
...
...
@@ -343,24 +343,37 @@ int configure_fapi_dl_pdu(int Mod_idP,
dci_pdu_rel15_t
*
dci_pdu_rel15
=
calloc
(
MAX_DCI_CORESET
,
sizeof
(
dci_pdu_rel15
));
dci_pdu_rel15
[
0
].
frequency_domain_assignment
.
val
=
PRBalloc_to_locationandbandwidth0
(
pdsch_pdu_rel15
->
rbSize
,
pdsch_pdu_rel15
->
rbStart
,
NRRIV2BW
(
bwp
->
bwp_Common
->
genericParameters
.
locationAndBandwidth
,
275
));
// bwp indicator
int
n_dl_bwp
=
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
downlinkBWP_ToAddModList
->
list
.
count
;
if
(
n_dl_bwp
<
4
)
dci_pdu_rel15
[
0
].
bwp_indicator
.
val
=
bwp_id
;
else
dci_pdu_rel15
[
0
].
bwp_indicator
.
val
=
bwp_id
-
1
;
// as per table 7.3.1.1.2-1 in 38.212
// frequency domain assignment
if
(
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
resourceAllocation
==
NR_PDSCH_Config__resourceAllocation_resourceAllocationType1
)
dci_pdu_rel15
[
0
].
frequency_domain_assignment
.
val
=
PRBalloc_to_locationandbandwidth0
(
pdsch_pdu_rel15
->
rbSize
,
pdsch_pdu_rel15
->
rbStart
,
NRRIV2BW
(
bwp
->
bwp_Common
->
genericParameters
.
locationAndBandwidth
,
275
));
else
AssertFatal
(
1
==
0
,
"Only frequency resource allocation type 1 is currently supported
\n
"
);
// time domain assignment
dci_pdu_rel15
[
0
].
time_domain_assignment
.
val
=
time_domain_assignment
;
// row index used here instead of SLIV;
dci_pdu_rel15
[
0
].
vrb_to_prb_mapping
.
val
=
1
;
// mcs ndi and rv
dci_pdu_rel15
[
0
].
mcs
=
pdsch_pdu_rel15
->
mcsIndex
[
0
];
dci_pdu_rel15
[
0
].
tb_scaling
=
1
;
dci_pdu_rel15
[
0
].
ra_preamble_index
=
25
;
dci_pdu_rel15
[
0
].
format_indicator
=
1
;
dci_pdu_rel15
[
0
].
ndi
=
1
;
dci_pdu_rel15
[
0
].
rv
=
0
;
// harq pid
dci_pdu_rel15
[
0
].
harq_pid
=
0
;
// DAI
dci_pdu_rel15
[
0
].
dai
[
0
].
val
=
(
pucch_sched
->
dai_c
-
1
)
&
3
;
dci_pdu_rel15
[
0
].
tpc
=
2
;
// TPC for PUCCH
dci_pdu_rel15
[
0
].
tpc
=
1
;
// table 7.2.1-1 in 38.213
// PUCCH resource indicator
dci_pdu_rel15
[
0
].
pucch_resource_indicator
=
pucch_sched
->
resource_indicator
;
// PDSCH to HARQ TI
dci_pdu_rel15
[
0
].
pdsch_to_harq_feedback_timing_indicator
.
val
=
pucch_sched
->
timing_indicator
;
// antenna ports
dci_pdu_rel15
[
0
].
antenna_ports
.
val
=
0
;
// nb of cdm groups w/o data 1 and dmrs port 0
LOG_D
(
MAC
,
"[gNB scheduler phytest] DCI type 1 payload: freq_alloc %d (%d,%d,%d), time_alloc %d, vrb to prb %d, mcs %d tb_scaling %d ndi %d rv %d
\n
"
,
dci_pdu_rel15
[
0
].
frequency_domain_assignment
.
val
,
...
...
@@ -392,7 +405,7 @@ int configure_fapi_dl_pdu(int Mod_idP,
dci_formats
[
0
]
=
NR_DL_DCI_FORMAT_1_0
;
rnti_types
[
0
]
=
NR_RNTI_C
;
fill_dci_pdu_rel15
(
secondaryCellGroup
,
pdcch_pdu_rel15
,
dci_pdu_rel15
,
dci_formats
,
rnti_types
);
fill_dci_pdu_rel15
(
secondaryCellGroup
,
pdcch_pdu_rel15
,
dci_pdu_rel15
,
dci_formats
,
rnti_types
,
bwp_id
);
LOG_D
(
MAC
,
"DCI params: rnti %d, rnti_type %d, dci_format %d
\n
\
coreset params: FreqDomainResource %llx, start_symbol %d n_symb %d
\n
"
,
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
View file @
20f5e27e
...
...
@@ -544,24 +544,7 @@ void nr_configure_pdcch(nfapi_nr_dl_tti_pdcch_pdu_rel15_t* pdcch_pdu,
}
}
void
prepare_dci
(
NR_CellGroupConfig_t
*
secondaryCellGroup
,
dci_pdu_rel15_t
*
dci_pdu_rel15
,
nr_dci_format_t
format
)
{
switch
(
format
)
{
case
NR_DL_DCI_FORMAT_1_1
:
//carrier indicator
//bwp indicator
//vrb to prb mapping
//bundling size indicator
//rate matching indicator
//ZP CSI-RS trigger
//dai
//antenna ports
//srs resource set
break
;
}
}
// This function configures pucch pdu fapi structure
void
nr_configure_pucch
(
nfapi_nr_pucch_pdu_t
*
pucch_pdu
,
...
...
@@ -747,11 +730,75 @@ void nr_configure_pucch(nfapi_nr_pucch_pdu_t* pucch_pdu,
}
void
prepare_dci
(
NR_CellGroupConfig_t
*
secondaryCellGroup
,
dci_pdu_rel15_t
*
dci_pdu_rel15
,
nr_dci_format_t
format
,
int
bwp_id
)
{
NR_BWP_Downlink_t
*
bwp
=
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
downlinkBWP_ToAddModList
->
list
.
array
[
bwp_id
-
1
];
switch
(
format
)
{
case
NR_DL_DCI_FORMAT_1_1
:
// format indicator
dci_pdu_rel15
->
format_indicator
=
1
;
// carrier indicator
if
(
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
crossCarrierSchedulingConfig
!=
NULL
)
AssertFatal
(
1
==
0
,
"Cross Carrier Scheduling Config currently not supported
\n
"
);
//vrb to prb mapping
if
(
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
vrb_ToPRB_Interleaver
==
NULL
)
dci_pdu_rel15
->
vrb_to_prb_mapping
.
val
=
0
;
else
dci_pdu_rel15
->
vrb_to_prb_mapping
.
val
=
1
;
//bundling size indicator
if
(
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
prb_BundlingType
.
present
==
NR_PDSCH_Config__prb_BundlingType_PR_dynamicBundling
)
AssertFatal
(
1
==
0
,
"Dynamic PRB bundling type currently not supported
\n
"
);
//rate matching indicator
uint16_t
msb
=
(
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
rateMatchPatternGroup1
==
NULL
)
?
0
:
1
;
uint16_t
lsb
=
(
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
rateMatchPatternGroup2
==
NULL
)
?
0
:
1
;
dci_pdu_rel15
->
rate_matching_indicator
.
val
=
lsb
|
(
msb
<<
1
);
// aperiodic ZP CSI-RS trigger
if
(
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
aperiodic_ZP_CSI_RS_ResourceSetsToAddModList
!=
NULL
)
AssertFatal
(
1
==
0
,
"Aperiodic ZP CSI-RS currently not supported
\n
"
);
// transmission configuration indication
if
(
bwp
->
bwp_Dedicated
->
pdcch_Config
->
choice
.
setup
->
controlResourceSetToAddModList
->
list
.
array
[
bwp_id
-
1
]
->
tci_PresentInDCI
!=
NULL
)
AssertFatal
(
1
==
0
,
"TCI in DCI currently not supported
\n
"
);
//srs resource set
if
(
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
carrierSwitching
!=
NULL
)
{
NR_SRS_CarrierSwitching_t
*
cs
=
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
carrierSwitching
->
choice
.
setup
;
if
(
cs
->
srs_TPC_PDCCH_Group
!=
NULL
){
switch
(
cs
->
srs_TPC_PDCCH_Group
->
present
)
{
case
NR_SRS_CarrierSwitching__srs_TPC_PDCCH_Group_PR_NOTHING
:
dci_pdu_rel15
->
srs_request
.
val
=
0
;
break
;
case
NR_SRS_CarrierSwitching__srs_TPC_PDCCH_Group_PR_typeA
:
AssertFatal
(
1
==
0
,
"SRS TPC PRCCH group type A currently not supported
\n
"
);
break
;
case
NR_SRS_CarrierSwitching__srs_TPC_PDCCH_Group_PR_typeB
:
AssertFatal
(
1
==
0
,
"SRS TPC PRCCH group type B currently not supported
\n
"
);
break
;
}
}
else
dci_pdu_rel15
->
srs_request
.
val
=
0
;
}
else
dci_pdu_rel15
->
srs_request
.
val
=
0
;
// CBGTI and CBGFI
if
(
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
pdsch_ServingCellConfig
->
choice
.
setup
->
codeBlockGroupTransmission
!=
NULL
)
AssertFatal
(
1
==
0
,
"CBG transmission currently not supported
\n
"
);
// dmrs sequence initialization
dci_pdu_rel15
->
dmrs_sequence_initialization
=
0
;
// FIXME no information on what this bit should be in 38.212
break
;
}
}
void
fill_dci_pdu_rel15
(
NR_CellGroupConfig_t
*
secondaryCellGroup
,
nfapi_nr_dl_tti_pdcch_pdu_rel15_t
*
pdcch_pdu_rel15
,
dci_pdu_rel15_t
*
dci_pdu_rel15
,
int
*
dci_formats
,
int
*
rnti_types
)
{
int
*
rnti_types
,
int
bwp_id
)
{
uint16_t
N_RB
=
pdcch_pdu_rel15
->
BWPSize
;
uint8_t
fsize
=
0
,
pos
=
0
;
...
...
@@ -760,10 +807,10 @@ void fill_dci_pdu_rel15(NR_CellGroupConfig_t *secondaryCellGroup,
for
(
int
d
=
0
;
d
<
pdcch_pdu_rel15
->
numDlDci
;
d
++
)
{
uint64_t
*
dci_pdu
=
(
uint64_t
*
)
pdcch_pdu_rel15
->
Payload
[
d
];
int
dci_size
=
nr_dci_size
(
secondaryCellGroup
,
&
dci_pdu_rel15
[
d
],
dci_formats
[
d
],
rnti_types
[
d
],
pdcch_pdu_rel15
->
BWPSize
);
int
dci_size
=
nr_dci_size
(
secondaryCellGroup
,
&
dci_pdu_rel15
[
d
],
dci_formats
[
d
],
rnti_types
[
d
],
pdcch_pdu_rel15
->
BWPSize
,
bwp_id
);
pdcch_pdu_rel15
->
PayloadSizeBits
[
d
]
=
dci_size
;
AssertFatal
(
pdcch_pdu_rel15
->
PayloadSizeBits
[
d
]
<=
64
,
"DCI sizes above 64 bits not yet supported"
);
prepare_dci
(
secondaryCellGroup
,
&
dci_pdu_rel15
[
d
],
dci_formats
[
d
]);
prepare_dci
(
secondaryCellGroup
,
&
dci_pdu_rel15
[
d
],
dci_formats
[
d
]
,
bwp_id
);
pos
=
0
;
/// Payload generation
...
...
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
View file @
20f5e27e
...
...
@@ -151,7 +151,13 @@ void fill_dci_pdu_rel15(NR_CellGroupConfig_t *secondaryCellGroup,
nfapi_nr_dl_tti_pdcch_pdu_rel15_t
*
pdcch_pdu_rel15
,
dci_pdu_rel15_t
*
dci_pdu_rel15
,
int
*
dci_formats
,
int
*
rnti_types
);
int
*
rnti_types
,
int
bwp_id
);
void
prepare_dci
(
NR_CellGroupConfig_t
*
secondaryCellGroup
,
dci_pdu_rel15_t
*
dci_pdu_rel15
,
nr_dci_format_t
format
,
int
bwp_id
);
void
nr_configure_pucch
(
nfapi_nr_pucch_pdu_t
*
pucch_pdu
,
NR_ServingCellConfigCommon_t
*
scc
,
...
...
@@ -194,7 +200,8 @@ uint16_t nr_dci_size(NR_CellGroupConfig_t *secondaryCellGroup,
dci_pdu_rel15_t
*
dci_pdu
,
nr_dci_format_t
format
,
nr_rnti_type_t
rnti_type
,
uint16_t
N_RB
);
uint16_t
N_RB
,
int
bwp_id
);
int
allocate_nr_CCEs
(
gNB_MAC_INST
*
nr_mac
,
int
bwp_id
,
...
...
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