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
spbro
OpenXG-RAN
Commits
7873292f
Commit
7873292f
authored
Mar 19, 2024
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Reduce indentation in nr_generate_msg2(): no functional changes
parent
205cc665
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
262 additions
and
259 deletions
+262
-259
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
+262
-259
No files found.
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
View file @
7873292f
...
...
@@ -1204,7 +1204,8 @@ static void nr_generate_Msg2(module_id_t module_idP,
NR_UE_DL_BWP_t
*
dl_bwp
=
&
ra
->
DL_BWP
;
NR_UE_ServingCell_Info_t
*
sc_info
=
&
ra
->
sc_info
;
if
((
ra
->
Msg2_frame
==
frameP
)
&&
(
ra
->
Msg2_slot
==
slotP
))
{
if
(
ra
->
Msg2_frame
!=
frameP
||
ra
->
Msg2_slot
!=
slotP
)
return
;
int
mcsIndex
=
-
1
;
// initialization value
int
rbStart
=
0
;
...
...
@@ -1216,7 +1217,7 @@ static void nr_generate_Msg2(module_id_t module_idP,
long
BWPStart
=
0
;
long
BWPSize
=
0
;
NR_Type0_PDCCH_CSS_config_t
*
type0_PDCCH_CSS_config
=
NULL
;
if
(
*
ss
->
controlResourceSetId
!=
0
)
{
if
(
*
ss
->
controlResourceSetId
!=
0
)
{
BWPStart
=
dl_bwp
->
BWPStart
;
BWPSize
=
sc_info
->
initial_dl_BWPSize
;
}
else
{
...
...
@@ -1226,7 +1227,7 @@ static void nr_generate_Msg2(module_id_t module_idP,
}
NR_ControlResourceSet_t
*
coreset
=
ra
->
coreset
;
AssertFatal
(
coreset
!=
NULL
,
"Coreset cannot be null for RA-Msg2
\n
"
);
AssertFatal
(
coreset
!=
NULL
,
"Coreset cannot be null for RA-Msg2
\n
"
);
const
int
coresetid
=
coreset
->
controlResourceSetId
;
// Calculate number of symbols
int
time_domain_assignment
=
get_dl_tda
(
nr_mac
,
scc
,
slotP
);
...
...
@@ -1242,7 +1243,7 @@ static void nr_generate_Msg2(module_id_t module_idP,
uint16_t
*
vrb_map
=
cc
[
CC_id
].
vrb_map
;
for
(
int
i
=
0
;
(
i
<
rbSize
)
&&
(
rbStart
<=
(
BWPSize
-
rbSize
));
i
++
)
{
if
(
vrb_map
[
BWPStart
+
rbStart
+
i
]
&
SL_to_bitmap
(
tda_info
.
startSymbolIndex
,
tda_info
.
nrOfSymbols
))
{
if
(
vrb_map
[
BWPStart
+
rbStart
+
i
]
&
SL_to_bitmap
(
tda_info
.
startSymbolIndex
,
tda_info
.
nrOfSymbols
))
{
rbStart
+=
i
;
i
=
0
;
}
...
...
@@ -1261,13 +1262,7 @@ static void nr_generate_Msg2(module_id_t module_idP,
}
uint8_t
aggregation_level
;
int
CCEIndex
=
get_cce_index
(
nr_mac
,
CC_id
,
slotP
,
0
,
&
aggregation_level
,
ss
,
coreset
,
&
ra
->
sched_pdcch
,
true
);
int
CCEIndex
=
get_cce_index
(
nr_mac
,
CC_id
,
slotP
,
0
,
&
aggregation_level
,
ss
,
coreset
,
&
ra
->
sched_pdcch
,
true
);
if
(
CCEIndex
<
0
)
{
LOG_E
(
NR_MAC
,
"cannot find free CCE for Msg2 of RA RNTI 0x%04x!
\n
"
,
ra
->
rnti
);
...
...
@@ -1275,7 +1270,7 @@ static void nr_generate_Msg2(module_id_t module_idP,
return
;
}
LOG_D
(
NR_MAC
,
"Msg2 startSymbolIndex.nrOfSymbols %d.%d
\n
"
,
tda_info
.
startSymbolIndex
,
tda_info
.
nrOfSymbols
);
LOG_D
(
NR_MAC
,
"Msg2 startSymbolIndex.nrOfSymbols %d.%d
\n
"
,
tda_info
.
startSymbolIndex
,
tda_info
.
nrOfSymbols
);
// look up the PDCCH PDU for this CC, BWP, and CORESET. If it does not exist, create it. This is especially
// important if we have multiple RAs, and the DLSCH has to reuse them, so we need to mark them
...
...
@@ -1292,10 +1287,10 @@ static void nr_generate_Msg2(module_id_t module_idP,
}
nfapi_nr_dl_tti_request_pdu_t
*
dl_tti_pdsch_pdu
=
&
dl_req
->
dl_tti_pdu_list
[
dl_req
->
nPDUs
];
memset
((
void
*
)
dl_tti_pdsch_pdu
,
0
,
sizeof
(
nfapi_nr_dl_tti_request_pdu_t
));
memset
((
void
*
)
dl_tti_pdsch_pdu
,
0
,
sizeof
(
nfapi_nr_dl_tti_request_pdu_t
));
dl_tti_pdsch_pdu
->
PDUType
=
NFAPI_NR_DL_TTI_PDSCH_PDU_TYPE
;
dl_tti_pdsch_pdu
->
PDUSize
=
(
uint8_t
)(
2
+
sizeof
(
nfapi_nr_dl_tti_pdsch_pdu
));
dl_req
->
nPDUs
+=
1
;
dl_tti_pdsch_pdu
->
PDUSize
=
(
uint8_t
)(
2
+
sizeof
(
nfapi_nr_dl_tti_pdsch_pdu
));
dl_req
->
nPDUs
+=
1
;
nfapi_nr_dl_tti_pdsch_pdu_rel15_t
*
pdsch_pdu_rel15
=
&
dl_tti_pdsch_pdu
->
pdsch_pdu
.
pdsch_pdu_rel15
;
pdsch_pdu_rel15
->
precodingAndBeamforming
.
num_prgs
=
0
;
...
...
@@ -1319,10 +1314,7 @@ static void nr_generate_Msg2(module_id_t module_idP,
const
int
pduindex
=
nr_mac
->
pdu_index
[
CC_id
]
++
;
uint8_t
mcsTableIdx
=
dl_bwp
->
mcsTableIdx
;
NR_pdsch_dmrs_t
dmrs_parms
=
get_dl_dmrs_params
(
scc
,
dl_bwp
,
&
tda_info
,
1
);
NR_pdsch_dmrs_t
dmrs_parms
=
get_dl_dmrs_params
(
scc
,
dl_bwp
,
&
tda_info
,
1
);
pdsch_pdu_rel15
->
pduBitmap
=
0
;
pdsch_pdu_rel15
->
rnti
=
ra
->
RA_rnti
;
...
...
@@ -1353,9 +1345,9 @@ static void nr_generate_Msg2(module_id_t module_idP,
uint8_t
tb_scaling
=
0
;
int
R
,
Qm
;
uint32_t
TBS
=
0
;
uint32_t
TBS
=
0
;
while
(
TBS
<
9
)
{
// min TBS for RAR is 9 bytes
while
(
TBS
<
9
)
{
// min TBS for RAR is 9 bytes
mcsIndex
++
;
R
=
nr_get_code_rate_dl
(
mcsIndex
,
mcsTableIdx
);
Qm
=
nr_get_Qm_dl
(
mcsIndex
,
mcsTableIdx
);
...
...
@@ -1363,10 +1355,11 @@ static void nr_generate_Msg2(module_id_t module_idP,
R
,
rbSize
,
tda_info
.
nrOfSymbols
,
dmrs_parms
.
N_PRB_DMRS
*
dmrs_parms
.
N_DMRS_SLOT
,
dmrs_parms
.
N_PRB_DMRS
*
dmrs_parms
.
N_DMRS_SLOT
,
0
,
// overhead
tb_scaling
,
// tb scaling
1
)
>>
3
;
// layers
1
)
>>
3
;
// layers
pdsch_pdu_rel15
->
targetCodeRate
[
0
]
=
R
;
pdsch_pdu_rel15
->
qamModOrder
[
0
]
=
Qm
;
...
...
@@ -1375,7 +1368,7 @@ static void nr_generate_Msg2(module_id_t module_idP,
}
pdsch_pdu_rel15
->
maintenance_parms_v3
.
tbSizeLbrmBytes
=
nr_compute_tbslbrm
(
mcsTableIdx
,
sc_info
->
dl_bw_tbslbrm
,
1
);
pdsch_pdu_rel15
->
maintenance_parms_v3
.
ldpcBaseGraph
=
get_BG
(
TBS
<<
3
,
R
);
pdsch_pdu_rel15
->
maintenance_parms_v3
.
ldpcBaseGraph
=
get_BG
(
TBS
<<
3
,
R
);
// Fill PDCCH DL DCI PDU
nfapi_nr_dl_dci_pdu_t
*
dci_pdu
=
&
pdcch_pdu_rel15
->
dci_pdu
[
pdcch_pdu_rel15
->
numDlDci
];
...
...
@@ -1389,13 +1382,10 @@ static void nr_generate_Msg2(module_id_t module_idP,
dci_pdu
->
powerControlOffsetSS
=
1
;
dci_pdu_rel15_t
dci_payload
;
dci_payload
.
frequency_domain_assignment
.
val
=
PRBalloc_to_locationandbandwidth0
(
pdsch_pdu_rel15
->
rbSize
,
pdsch_pdu_rel15
->
rbStart
,
BWPSize
);
dci_payload
.
frequency_domain_assignment
.
val
=
PRBalloc_to_locationandbandwidth0
(
pdsch_pdu_rel15
->
rbSize
,
pdsch_pdu_rel15
->
rbStart
,
BWPSize
);
LOG_D
(
NR_MAC
,
"Msg2 rbSize.rbStart.BWPsize %d.%d.%ld
\n
"
,
pdsch_pdu_rel15
->
rbSize
,
pdsch_pdu_rel15
->
rbStart
,
BWPSize
);
LOG_D
(
NR_MAC
,
"Msg2 rbSize.rbStart.BWPsize %d.%d.%ld
\n
"
,
pdsch_pdu_rel15
->
rbSize
,
pdsch_pdu_rel15
->
rbStart
,
BWPSize
);
dci_payload
.
time_domain_assignment
.
val
=
time_domain_assignment
;
dci_payload
.
vrb_to_prb_mapping
.
val
=
0
;
...
...
@@ -1441,7 +1431,7 @@ static void nr_generate_Msg2(module_id_t module_idP,
// Program UL processing for Msg3
nr_get_Msg3alloc
(
module_idP
,
CC_id
,
scc
,
slotP
,
frameP
,
ra
,
nr_mac
->
tdd_beam_association
);
nr_add_msg3
(
module_idP
,
CC_id
,
frameP
,
slotP
,
ra
,
(
uint8_t
*
)
&
tx_req
->
TLVs
[
0
].
value
.
direct
[
0
]);
nr_add_msg3
(
module_idP
,
CC_id
,
frameP
,
slotP
,
ra
,
(
uint8_t
*
)
&
tx_req
->
TLVs
[
0
].
value
.
direct
[
0
]);
// Start RA contention resolution timer in Msg3 transmission slot (current slot + K2)
// 3GPP TS 38.321 Section 5.1.5 Contention Resolution
...
...
@@ -1455,17 +1445,35 @@ static void nr_generate_Msg2(module_id_t module_idP,
NR_UE_info_t
*
UE
=
find_nr_UE
(
&
RC
.
nrmac
[
module_idP
]
->
UE_info
,
ra
->
rnti
);
if
(
UE
)
{
const
NR_ServingCellConfig_t
*
servingCellConfig
=
UE
->
CellGroup
?
UE
->
CellGroup
->
spCellConfig
->
spCellConfigDedicated
:
NULL
;
uint32_t
delay_ms
=
servingCellConfig
&&
servingCellConfig
->
downlinkBWP_ToAddModList
?
NR_RRC_SETUP_DELAY_MS
+
NR_RRC_BWP_SWITCHING_DELAY_MS
:
NR_RRC_SETUP_DELAY_MS
;
uint32_t
delay_ms
=
servingCellConfig
&&
servingCellConfig
->
downlinkBWP_ToAddModList
?
NR_RRC_SETUP_DELAY_MS
+
NR_RRC_BWP_SWITCHING_DELAY_MS
:
NR_RRC_SETUP_DELAY_MS
;
NR_UE_sched_ctrl_t
*
sched_ctrl
=
&
UE
->
UE_sched_ctrl
;
sched_ctrl
->
rrc_processing_timer
=
(
delay_ms
<<
ra
->
DL_BWP
.
scs
);
}
LOG_D
(
NR_MAC
,
"Frame %d, Subframe %d: Setting RA-Msg3 reception (CFRA) for SFN.Slot %d.%d
\n
"
,
frameP
,
slotP
,
ra
->
Msg3_frame
,
ra
->
Msg3_slot
);
LOG_D
(
NR_MAC
,
"Frame %d, Subframe %d: Setting RA-Msg3 reception (CFRA) for SFN.Slot %d.%d
\n
"
,
frameP
,
slotP
,
ra
->
Msg3_frame
,
ra
->
Msg3_slot
);
}
else
{
LOG_D
(
NR_MAC
,
"Frame %d, Subframe %d: Setting RA-Msg3 reception (CBRA) for SFN.Slot %d.%d
\n
"
,
frameP
,
slotP
,
ra
->
Msg3_frame
,
ra
->
Msg3_slot
);
LOG_D
(
NR_MAC
,
"Frame %d, Subframe %d: Setting RA-Msg3 reception (CBRA) for SFN.Slot %d.%d
\n
"
,
frameP
,
slotP
,
ra
->
Msg3_frame
,
ra
->
Msg3_slot
);
}
T
(
T_GNB_MAC_DL_RAR_PDU_WITH_DATA
,
T_INT
(
module_idP
),
T_INT
(
CC_id
),
T_INT
(
ra
->
RA_rnti
),
T_INT
(
frameP
),
T_INT
(
slotP
),
T_INT
(
0
),
T_BUFFER
(
&
tx_req
->
TLVs
[
0
].
value
.
direct
[
0
],
tx_req
->
TLVs
[
0
].
length
));
T
(
T_GNB_MAC_DL_RAR_PDU_WITH_DATA
,
T_INT
(
module_idP
),
T_INT
(
CC_id
),
T_INT
(
ra
->
RA_rnti
),
T_INT
(
frameP
),
T_INT
(
slotP
),
T_INT
(
0
),
T_BUFFER
(
&
tx_req
->
TLVs
[
0
].
value
.
direct
[
0
],
tx_req
->
TLVs
[
0
].
length
));
tx_req
->
PDU_index
=
pduindex
;
tx_req
->
num_TLV
=
1
;
...
...
@@ -1476,11 +1484,7 @@ static void nr_generate_Msg2(module_id_t module_idP,
TX_req
->
Slot
=
slotP
;
// Mark the corresponding symbols RBs as used
fill_pdcch_vrb_map
(
nr_mac
,
CC_id
,
&
ra
->
sched_pdcch
,
CCEIndex
,
aggregation_level
);
fill_pdcch_vrb_map
(
nr_mac
,
CC_id
,
&
ra
->
sched_pdcch
,
CCEIndex
,
aggregation_level
);
for
(
int
rb
=
0
;
rb
<
rbSize
;
rb
++
)
{
vrb_map
[
BWPStart
+
rb
+
rbStart
]
|=
SL_to_bitmap
(
tda_info
.
startSymbolIndex
,
tda_info
.
nrOfSymbols
);
}
...
...
@@ -1493,7 +1497,6 @@ static void nr_generate_Msg2(module_id_t module_idP,
slotP
,
ra
->
rnti
,
nrra_text
[
ra
->
ra_state
]);
}
}
static
void
prepare_dl_pdus
(
gNB_MAC_INST
*
nr_mac
,
...
...
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