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
fecea84c
Commit
fecea84c
authored
Mar 07, 2025
by
francescomani
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/feedback_disabled_ra' into integration_2025_w10
parents
e92f3484
026b42aa
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
23 additions
and
51 deletions
+23
-51
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
+23
-51
No files found.
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
View file @
fecea84c
...
...
@@ -2147,6 +2147,16 @@ static void nr_generate_Msg4_MsgB(module_id_t module_idP,
return
;
}
const
int
delta_PRI
=
0
;
int
r_pucch
=
nr_get_pucch_resource
(
coreset
,
ra
->
UL_BWP
.
pucch_Config
,
CCEIndex
);
LOG_D
(
NR_MAC
,
"Msg4 r_pucch %d (CCEIndex %d, delta_PRI %d)
\n
"
,
r_pucch
,
CCEIndex
,
delta_PRI
);
int
alloc
=
nr_acknack_scheduling
(
nr_mac
,
UE
,
frameP
,
slotP
,
ra
->
beam_id
,
r_pucch
,
1
);
if
(
alloc
<
0
)
{
LOG_D
(
NR_MAC
,
"Couldn't find a pucch allocation for ack nack (msg4) in frame %d slot %d
\n
"
,
frameP
,
slotP
);
reset_beam_status
(
&
nr_mac
->
beam_info
,
frameP
,
slotP
,
ra
->
beam_id
,
n_slots_frame
,
beam
.
new_beam
);
return
;
}
// HARQ management
if
(
current_harq_pid
<
0
)
{
AssertFatal
(
sched_ctrl
->
available_dl_harq
.
head
>=
0
,
...
...
@@ -2155,39 +2165,16 @@ static void nr_generate_Msg4_MsgB(module_id_t module_idP,
remove_front_nr_list
(
&
sched_ctrl
->
available_dl_harq
);
}
const
int
delta_PRI
=
0
;
int
alloc
=
-
1
;
if
(
!
get_FeedbackDisabled
(
UE
->
sc_info
.
downlinkHARQ_FeedbackDisabled_r17
,
current_harq_pid
))
{
int
r_pucch
=
nr_get_pucch_resource
(
coreset
,
ra
->
UL_BWP
.
pucch_Config
,
CCEIndex
);
LOG_D
(
NR_MAC
,
"Msg4 r_pucch %d (CCEIndex %d, delta_PRI %d)
\n
"
,
r_pucch
,
CCEIndex
,
delta_PRI
);
alloc
=
nr_acknack_scheduling
(
nr_mac
,
UE
,
frameP
,
slotP
,
ra
->
beam_id
,
r_pucch
,
1
);
if
(
alloc
<
0
)
{
LOG_D
(
NR_MAC
,
"Couldn't find a pucch allocation for ack nack (msg4) in frame %d slot %d
\n
"
,
frameP
,
slotP
);
reset_beam_status
(
&
nr_mac
->
beam_info
,
frameP
,
slotP
,
ra
->
beam_id
,
n_slots_frame
,
beam
.
new_beam
);
return
;
}
}
NR_UE_harq_t
*
harq
=
&
sched_ctrl
->
harq_processes
[
current_harq_pid
];
NR_sched_pucch_t
*
pucch
=
NULL
;
NR_sched_pucch_t
*
pucch
=
&
sched_ctrl
->
sched_pucch
[
alloc
]
;
DevAssert
(
!
harq
->
is_waiting
);
if
(
alloc
<
0
)
{
finish_nr_dl_harq
(
sched_ctrl
,
current_harq_pid
);
}
else
{
pucch
=
&
sched_ctrl
->
sched_pucch
[
alloc
];
add_tail_nr_list
(
&
sched_ctrl
->
feedback_dl_harq
,
current_harq_pid
);
harq
->
feedback_slot
=
pucch
->
ul_slot
;
harq
->
feedback_frame
=
pucch
->
frame
;
harq
->
is_waiting
=
true
;
}
add_tail_nr_list
(
&
sched_ctrl
->
feedback_dl_harq
,
current_harq_pid
);
harq
->
feedback_slot
=
pucch
->
ul_slot
;
harq
->
feedback_frame
=
pucch
->
frame
;
harq
->
is_waiting
=
true
;
ra
->
harq_pid
=
current_harq_pid
;
UE
->
mac_stats
.
dl
.
rounds
[
harq
->
round
]
++
;
harq
->
tb_size
=
tb_size
;
uint8_t
*
buf
=
allocate_transportBlock_buffer
(
&
harq
->
transportBlock
,
tb_size
);
// Bytes to be transmitted
if
(
harq
->
round
==
0
)
{
...
...
@@ -2292,29 +2279,14 @@ static void nr_generate_Msg4_MsgB(module_id_t module_idP,
vrb_map
[
BWPStart
+
rb
+
rbStart
]
|=
SL_to_bitmap
(
msg4_tda
.
startSymbolIndex
,
msg4_tda
.
nrOfSymbols
);
}
if
(
pucch
==
NULL
)
{
LOG_A
(
NR_MAC
,
"(UE RNTI 0x%04x) Skipping Ack of RA-Msg4. CBRA procedure succeeded!
\n
"
,
ra
->
rnti
);
UE
->
Msg4_MsgB_ACKed
=
true
;
// Pause scheduling according to:
// 3GPP TS 38.331 Section 12 Table 12.1-1: UE performance requirements for RRC procedures for UEs
// Msg4 may transmit a RRCReconfiguration, for example when UE sends RRCReestablishmentComplete and MAC CE for C-RNTI in Msg3.
// In that case, gNB will generate a RRCReconfiguration that will be transmitted in Msg4, so we need to apply CellGroup after the Ack,
// UE->reconfigCellGroup was already set when processing RRCReestablishment message
int
delay
=
nr_mac_get_reconfig_delay_slots
(
UE
->
current_UL_BWP
.
scs
);
nr_mac_interrupt_ue_transmission
(
nr_mac
,
UE
,
UE
->
interrupt_action
,
delay
);
nr_clear_ra_proc
(
ra
);
}
else
{
ra
->
ra_state
=
nrRA_WAIT_Msg4_MsgB_ACK
;
LOG_I
(
NR_MAC
,
"UE %04x Generate %s: feedback at %4d.%2d, payload %d bytes, next state nrRA_WAIT_Msg4_MsgB_ACK
\n
"
,
ra
->
rnti
,
ra_type_str
,
pucch
->
frame
,
pucch
->
ul_slot
,
harq
->
tb_size
);
}
ra
->
ra_state
=
nrRA_WAIT_Msg4_MsgB_ACK
;
LOG_I
(
NR_MAC
,
"UE %04x Generate %s: feedback at %4d.%2d, payload %d bytes, next state nrRA_WAIT_Msg4_MsgB_ACK
\n
"
,
ra
->
rnti
,
ra_type_str
,
pucch
->
frame
,
pucch
->
ul_slot
,
harq
->
tb_size
);
}
}
...
...
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