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
31d19ec3
Commit
31d19ec3
authored
Nov 27, 2024
by
francescomani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fixes for handle_nr_ul_harq in case of RA
to avoid printing warning on unexpected harq pid
parent
03946cd4
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
22 additions
and
23 deletions
+22
-23
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
+2
-1
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
+20
-22
No files found.
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
View file @
31d19ec3
...
@@ -2426,7 +2426,8 @@ void nr_schedule_RA(module_id_t module_idP,
...
@@ -2426,7 +2426,8 @@ void nr_schedule_RA(module_id_t module_idP,
NR_COMMON_channels_t
*
cc
=
&
mac
->
common_channels
[
CC_id
];
NR_COMMON_channels_t
*
cc
=
&
mac
->
common_channels
[
CC_id
];
for
(
int
i
=
0
;
i
<
NR_NB_RA_PROC_MAX
;
i
++
)
{
for
(
int
i
=
0
;
i
<
NR_NB_RA_PROC_MAX
;
i
++
)
{
NR_RA_t
*
ra
=
&
cc
->
ra
[
i
];
NR_RA_t
*
ra
=
&
cc
->
ra
[
i
];
LOG_D
(
NR_MAC
,
"RA[state:%d]
\n
"
,
ra
->
ra_state
);
if
(
ra
->
ra_state
!=
nrRA_gNB_IDLE
)
LOG_D
(
NR_MAC
,
"RA[%d] frame.slot %d.%d state: %d
\n
"
,
i
,
frameP
,
slotP
,
ra
->
ra_state
);
// Check RA Contention Resolution timer
// Check RA Contention Resolution timer
if
(
ra
->
ra_type
==
RA_4_STEP
&&
ra
->
ra_state
>=
nrRA_WAIT_Msg3
)
{
if
(
ra
->
ra_type
==
RA_4_STEP
&&
ra
->
ra_state
>=
nrRA_WAIT_Msg3
)
{
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
View file @
31d19ec3
...
@@ -585,38 +585,36 @@ void handle_nr_ul_harq(const int CC_idP,
...
@@ -585,38 +585,36 @@ void handle_nr_ul_harq(const int CC_idP,
const
nfapi_nr_crc_t
*
crc_pdu
)
const
nfapi_nr_crc_t
*
crc_pdu
)
{
{
gNB_MAC_INST
*
nrmac
=
RC
.
nrmac
[
mod_id
];
gNB_MAC_INST
*
nrmac
=
RC
.
nrmac
[
mod_id
];
NR_SCHED_LOCK
(
&
nrmac
->
sched_lock
);
if
(
nrmac
->
radio_config
.
disable_harq
)
{
LOG_D
(
NR_MAC
,
"skipping UL feedback handling as HARQ is disabled
\n
"
);
NR_UE_info_t
*
UE
=
find_nr_UE
(
&
nrmac
->
UE_info
,
crc_pdu
->
rnti
)
;
return
;
bool
UE_waiting_CFRA_msg3
=
get_UE_waiting_CFRA_msg3
(
nrmac
,
CC_idP
,
frame
,
slot
,
crc_pdu
->
rnti
);
}
if
(
!
UE
||
UE_waiting_CFRA_msg3
==
true
)
{
NR_SCHED_LOCK
(
&
nrmac
->
sched_lock
);
LOG_D
(
NR_MAC
,
"handle harq for rnti %04x, in RA process
\n
"
,
crc_pdu
->
rnti
);
for
(
int
i
=
0
;
i
<
NR_NB_RA_PROC_MAX
;
++
i
)
{
for
(
int
i
=
0
;
i
<
NR_NB_RA_PROC_MAX
;
++
i
)
{
NR_RA_t
*
ra
=
&
nrmac
->
common_channels
[
CC_idP
].
ra
[
i
];
NR_RA_t
*
ra
=
&
nrmac
->
common_channels
[
CC_idP
].
ra
[
i
];
// if we find any ongoing RA that has already scheduled MSG3
if
(
ra
->
ra_state
>=
nrRA_WAIT_Msg3
&&
ra
->
rnti
==
crc_pdu
->
rnti
)
{
// and it is expecting its reception in current frame and slot with matching RNTI
NR_SCHED_UNLOCK
(
&
nrmac
->
sched_lock
);
// we can exit the function (no HARQ involved)
return
;
if
(
ra
->
ra_state
>=
nrRA_WAIT_Msg3
&&
ra
->
rnti
==
crc_pdu
->
rnti
&&
frame
==
ra
->
Msg3_frame
&&
slot
==
ra
->
Msg3_slot
)
{
}
LOG_D
(
NR_MAC
,
"UL for rnti %04x in RA (MSG3), no need to process HARQ
\n
"
,
crc_pdu
->
rnti
);
NR_SCHED_UNLOCK
(
&
nrmac
->
sched_lock
);
return
;
}
}
NR_SCHED_UNLOCK
(
&
nrmac
->
sched_lock
);
LOG_D
(
NR_MAC
,
"no RA proc for RNTI 0x%04x in Msg3/MsgA-PUSCH
\n
"
,
crc_pdu
->
rnti
);
return
;
}
}
if
(
nrmac
->
radio_config
.
disable_harq
)
{
LOG_D
(
NR_MAC
,
"skipping UL feedback handling as HARQ is disabled
\n
"
);
NR_UE_info_t
*
UE
=
find_nr_UE
(
&
nrmac
->
UE_info
,
crc_pdu
->
rnti
);
if
(
!
UE
)
{
NR_SCHED_UNLOCK
(
&
nrmac
->
sched_lock
);
NR_SCHED_UNLOCK
(
&
nrmac
->
sched_lock
);
LOG_E
(
NR_MAC
,
"Couldn't identify UE connected with current UL HARQ process
\n
"
);
return
;
return
;
}
}
NR_UE_sched_ctrl_t
*
sched_ctrl
=
&
UE
->
UE_sched_ctrl
;
NR_UE_sched_ctrl_t
*
sched_ctrl
=
&
UE
->
UE_sched_ctrl
;
int8_t
harq_pid
=
sched_ctrl
->
feedback_ul_harq
.
head
;
int8_t
harq_pid
=
sched_ctrl
->
feedback_ul_harq
.
head
;
LOG_D
(
NR_MAC
,
"Comparing crc_pdu->harq_id vs feedback harq_pid = %d %d
\n
"
,
crc_pdu
->
harq_id
,
harq_pid
);
LOG_D
(
NR_MAC
,
"Comparing crc_pdu->harq_id vs feedback harq_pid = %d %d
\n
"
,
crc_pdu
->
harq_id
,
harq_pid
);
while
(
crc_pdu
->
harq_id
!=
harq_pid
||
harq_pid
<
0
)
{
while
(
crc_pdu
->
harq_id
!=
harq_pid
||
harq_pid
<
0
)
{
LOG_W
(
NR_MAC
,
LOG_W
(
NR_MAC
,
"Unexpected ULSCH HARQ PID %d (have %d) for RNTI 0x%04x
\n
"
,
crc_pdu
->
harq_id
,
harq_pid
,
crc_pdu
->
rnti
);
"Unexpected ULSCH HARQ PID %d (have %d) for RNTI 0x%04x (ignore this warning for RA)
\n
"
,
crc_pdu
->
harq_id
,
harq_pid
,
crc_pdu
->
rnti
);
if
(
harq_pid
<
0
)
{
if
(
harq_pid
<
0
)
{
NR_SCHED_UNLOCK
(
&
nrmac
->
sched_lock
);
NR_SCHED_UNLOCK
(
&
nrmac
->
sched_lock
);
return
;
return
;
...
...
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