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
Michael Black
OpenXG-RAN
Commits
579cf1d9
Commit
579cf1d9
authored
Dec 14, 2021
by
hardy
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/Fix_Msg4_segfault' into integration_2021_wk50_a
parents
e19460a9
158c309c
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
45 additions
and
6 deletions
+45
-6
doc/FEATURE_SET.md
doc/FEATURE_SET.md
+4
-2
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
+9
-4
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
+18
-0
openair2/RRC/NR/L2_nr_interface.c
openair2/RRC/NR/L2_nr_interface.c
+14
-0
No files found.
doc/FEATURE_SET.md
View file @
579cf1d9
...
...
@@ -307,8 +307,10 @@ The following features are valid for the gNB and the 5G-NR UE.
-
MAC
<->
PHY data interface using FAPI P7 interface for BCH PDU, DCI PDU, PDSCH PDU
-
Scheduler procedures for SIB1
-
Scheduler procedures for RA
-
Contention free RA procedure
-
Contention based RA procedure
-
Contention Free RA procedure
-
Contention Based RA procedure
-
Msg3 can transfer uplink CCCH, DTCH or DCCH messages
-
CBRA can be performed using MAC CE or C-RNTI
-
Scheduler procedures for CSI-RS
-
MAC downlink scheduler
-
phy-test scheduler (fixed allocation and usable also without UE)
...
...
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
View file @
579cf1d9
...
...
@@ -192,8 +192,13 @@ uint8_t get_transformPrecoding(const NR_BWP_UplinkCommon_t *initialUplinkBWP,
uint8_t
configuredGrant
);
void
nr_mac_gNB_rrc_ul_failure
(
const
module_id_t
Mod_instP
,
const
int
CC_idP
,
const
frame_t
frameP
,
const
sub_frame_t
subframeP
,
const
rnti_t
rntiP
)
;
const
int
CC_idP
,
const
frame_t
frameP
,
const
sub_frame_t
subframeP
,
const
rnti_t
rntiP
);
void
nr_mac_gNB_rrc_ul_failure_reset
(
const
module_id_t
Mod_instP
,
const
frame_t
frameP
,
const
sub_frame_t
subframeP
,
const
rnti_t
rntiP
);
#endif
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
View file @
579cf1d9
...
...
@@ -822,6 +822,24 @@ void nr_rx_sdu(const module_id_t gnb_mod_idP,
ra
->
state
=
Msg4
;
ra
->
Msg4_frame
=
(
frameP
+
2
)
%
1024
;
ra
->
Msg4_slot
=
1
;
if
(
ra
->
msg3_dcch_dtch
)
{
// Check if the UE identified by C-RNTI still exists at the gNB
int
UE_id_C
=
find_nr_UE_id
(
gnb_mod_idP
,
ra
->
crnti
);
if
(
UE_id_C
<
0
)
{
// The UE identified by C-RNTI no longer exists at the gNB
// Let's abort the current RA, so the UE will trigger a new RA later but using RRCSetupRequest instead. A better solution may be implemented
mac_remove_nr_ue
(
gnb_mod_idP
,
ra
->
rnti
);
nr_clear_ra_proc
(
gnb_mod_idP
,
CC_idP
,
frameP
,
ra
);
return
;
}
else
{
// The UE identified by C-RNTI still exists at the gNB
// Reset uplink failure flags/counters/timers at MAC and at RRC so gNB will resume again scheduling resources for this UE
UE_info
->
UE_sched_ctrl
[
UE_id_C
].
pusch_consecutive_dtx_cnt
=
0
;
UE_info
->
UE_sched_ctrl
[
UE_id_C
].
ul_failure
=
0
;
nr_mac_gNB_rrc_ul_failure_reset
(
gnb_mod_idP
,
frameP
,
slotP
,
ra
->
crnti
);
}
}
LOG_I
(
NR_MAC
,
"Scheduling RA-Msg4 for TC_RNTI 0x%04x (state %d, frame %d, slot %d)
\n
"
,
(
ra
->
msg3_dcch_dtch
?
ra
->
crnti
:
ra
->
rnti
),
ra
->
state
,
ra
->
Msg4_frame
,
ra
->
Msg4_slot
);
}
...
...
openair2/RRC/NR/L2_nr_interface.c
View file @
579cf1d9
...
...
@@ -383,3 +383,17 @@ void nr_mac_gNB_rrc_ul_failure(const module_id_t Mod_instP,
LOG_D
(
RRC
,
"Frame %d, Subframe %d: UL failure: UE %x unknown
\n
"
,
frameP
,
subframeP
,
rntiP
);
}
}
void
nr_mac_gNB_rrc_ul_failure_reset
(
const
module_id_t
Mod_instP
,
const
frame_t
frameP
,
const
sub_frame_t
subframeP
,
const
rnti_t
rntiP
)
{
struct
rrc_gNB_ue_context_s
*
ue_context_p
=
NULL
;
ue_context_p
=
rrc_gNB_get_ue_context
(
RC
.
nrrrc
[
Mod_instP
],
rntiP
);
if
(
ue_context_p
!=
NULL
)
{
LOG_W
(
RRC
,
"Frame %d, Subframe %d: UE %x UL failure reset, deactivating timer
\n
"
,
frameP
,
subframeP
,
rntiP
);
ue_context_p
->
ue_context
.
ul_failure_timer
=
0
;
}
else
{
LOG_W
(
RRC
,
"Frame %d, Subframe %d: UL failure reset: UE %x unknown
\n
"
,
frameP
,
subframeP
,
rntiP
);
}
}
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