Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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
OpenXG
OpenXG UE
Commits
1ca09e2a
Commit
1ca09e2a
authored
Oct 19, 2020
by
hardy
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/NR_RA_updates' into integration_2020_wk42
parents
f60c9098
90c0f53c
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
62 additions
and
55 deletions
+62
-55
openair2/LAYER2/NR_MAC_gNB/config.c
openair2/LAYER2/NR_MAC_gNB/config.c
+12
-6
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
+10
-9
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
+2
-1
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
+1
-0
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
+35
-39
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
+2
-0
No files found.
openair2/LAYER2/NR_MAC_gNB/config.c
View file @
1ca09e2a
...
...
@@ -367,12 +367,18 @@ int rrc_mac_config_req_gNB(module_id_t Mod_idP,
NR_RA_t
*
ra
=
&
RC
.
nrmac
[
Mod_idP
]
->
common_channels
[
CC_id
].
ra
[
0
];
ra
->
state
=
RA_IDLE
;
ra
->
secondaryCellGroup
=
secondaryCellGroup
;
ra
->
crnti
=
rnti
;
uint8_t
num_preamble
=
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
->
cfra
->
resources
.
choice
.
ssb
->
ssb_ResourceList
.
list
.
count
;
ra
->
preambles
.
num_preambles
=
num_preamble
;
ra
->
preambles
.
preamble_list
=
(
uint8_t
*
)
malloc
(
num_preamble
*
sizeof
(
uint8_t
));
for
(
int
i
=
0
;
i
<
num_preamble
;
i
++
)
ra
->
preambles
.
preamble_list
[
i
]
=
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
->
cfra
->
resources
.
choice
.
ssb
->
ssb_ResourceList
.
list
.
array
[
i
]
->
ra_PreambleIndex
;
if
(
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
!=
NULL
)
{
if
(
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
->
cfra
!=
NULL
)
{
ra
->
cfra
=
true
;
ra
->
rnti
=
rnti
;
struct
NR_CFRA
cfra
=
*
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
->
cfra
;
uint8_t
num_preamble
=
cfra
.
resources
.
choice
.
ssb
->
ssb_ResourceList
.
list
.
count
;
ra
->
preambles
.
num_preambles
=
num_preamble
;
ra
->
preambles
.
preamble_list
=
(
uint8_t
*
)
malloc
(
num_preamble
*
sizeof
(
uint8_t
));
for
(
int
i
=
0
;
i
<
num_preamble
;
i
++
)
ra
->
preambles
.
preamble_list
[
i
]
=
cfra
.
resources
.
choice
.
ssb
->
ssb_ResourceList
.
list
.
array
[
i
]
->
ra_PreambleIndex
;
}
}
LOG_I
(
PHY
,
"Added new RA process for UE RNTI %04x with initial secondaryCellGroup
\n
"
,
rnti
);
}
else
{
// secondaryCellGroup has been updated
const
int
UE_id
=
find_nr_UE_id
(
Mod_idP
,
rnti
);
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
View file @
1ca09e2a
...
...
@@ -308,16 +308,17 @@ void nr_initiate_ra_proc(module_id_t module_idP,
LOG_D
(
MAC
,
"%s() Msg2[%04d%d] SFN/SF:%04d%d
\n
"
,
__FUNCTION__
,
ra
->
Msg2_frame
,
ra
->
Msg2_slot
,
frameP
,
slotP
);
do
{
ra
->
rnti
=
(
taus
()
%
65518
)
+
1
;
loop
++
;
}
while
(
loop
!=
100
&&
!
(
find_nr_UE_id
(
module_idP
,
ra
->
rnti
)
==
-
1
&&
ra
->
rnti
>=
1
&&
ra
->
rnti
<=
65519
));
if
(
loop
==
100
)
{
LOG_E
(
MAC
,
"%s:%d:%s: [RAPROC] initialisation random access aborted
\n
"
,
__FILE__
,
__LINE__
,
__FUNCTION__
);
abort
();
if
(
!
ra
->
cfra
)
{
do
{
ra
->
rnti
=
(
taus
()
%
65518
)
+
1
;
loop
++
;
}
while
(
loop
!=
100
&&
!
(
find_nr_UE_id
(
module_idP
,
ra
->
rnti
)
==
-
1
&&
ra
->
rnti
>=
1
&&
ra
->
rnti
<=
65519
));
if
(
loop
==
100
)
{
LOG_E
(
MAC
,
"%s:%d:%s: [RAPROC] initialisation random access aborted
\n
"
,
__FILE__
,
__LINE__
,
__FUNCTION__
);
abort
();
}
}
ra
->
RA_rnti
=
ra_rnti
;
ra
->
preamble_index
=
preamble_index
;
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
View file @
1ca09e2a
...
...
@@ -864,7 +864,8 @@ void schedule_fapi_ul_pdu(int Mod_idP,
* conditions might exclude each other and never be true */
const
int
slot_idx
=
(
slotP
+
K2
)
%
num_slots_per_tdd
;
if
(
is_xlsch_in_slot
(
ulsch_in_slot_bitmap
,
slot_idx
)
&&
(
!
get_softmodem_params
()
->
phy_test
||
slot_idx
==
8
))
{
&&
(
!
get_softmodem_params
()
->
phy_test
||
slot_idx
==
8
))
{
nfapi_nr_ul_dci_request_t
*
UL_dci_req
=
&
RC
.
nrmac
[
Mod_idP
]
->
UL_dci_req
[
0
];
UL_dci_req
->
SFN
=
frameP
;
UL_dci_req
->
Slot
=
slotP
;
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
View file @
1ca09e2a
...
...
@@ -1684,6 +1684,7 @@ void mac_remove_nr_ue(module_id_t mod_id, rnti_t rnti)
NR_UE_info_t
*
UE_info
=
&
RC
.
nrmac
[
mod_id
]
->
UE_info
;
for
(
i
=
0
;
i
<
MAX_MOBILES_PER_GNB
;
i
++
)
{
if
(
UE_info
->
active
[
i
]
!=
TRUE
)
continue
;
if
(
UE_info
->
rnti
[
i
]
!=
rnti
)
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
View file @
1ca09e2a
...
...
@@ -322,6 +322,41 @@ void nr_rx_sdu(const module_id_t gnb_mod_idP,
UE_info
=
&
gNB_mac
->
UE_info
;
int
target_snrx10
=
gNB_mac
->
pusch_target_snrx10
;
NR_RA_t
*
ra
=
&
gNB_mac
->
common_channels
[
CC_idP
].
ra
[
0
];
// random access pusch with TC-RNTI
if
(
ra
->
state
==
WAIT_Msg3
)
{
if
(
sduP
!=
NULL
)
{
// if the CRC passed
if
(
ra
->
rnti
!=
current_rnti
)
{
LOG_E
(
MAC
,
"expected TC-RNTI %04x to match current RNTI %04x
\n
"
,
ra
->
rnti
,
current_rnti
);
return
;
}
free
(
ra
->
preambles
.
preamble_list
);
ra
->
state
=
RA_IDLE
;
LOG_I
(
MAC
,
"reset RA state information for RA-RNTI %04x
\n
"
,
ra
->
rnti
);
const
int
UE_id
=
add_new_nr_ue
(
gnb_mod_idP
,
ra
->
rnti
);
UE_info
->
secondaryCellGroup
[
UE_id
]
=
ra
->
secondaryCellGroup
;
struct
NR_ServingCellConfig__downlinkBWP_ToAddModList
*
bwpList
=
ra
->
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
downlinkBWP_ToAddModList
;
AssertFatal
(
bwpList
->
list
.
count
==
1
,
"downlinkBWP_ToAddModList has %d BWP!
\n
"
,
bwpList
->
list
.
count
);
const
int
bwp_id
=
1
;
UE_info
->
UE_sched_ctrl
[
UE_id
].
active_bwp
=
bwpList
->
list
.
array
[
bwp_id
-
1
];
LOG_I
(
MAC
,
"[gNB %d][RAPROC] PUSCH with TC_RNTI %x received correctly, "
"adding UE MAC Context UE_id %d/RNTI %04x
\n
"
,
gnb_mod_idP
,
current_rnti
,
UE_id
,
ra
->
rnti
);
}
return
;
}
if
(
UE_id
!=
-
1
)
{
UE_scheduling_control
=
&
(
UE_info
->
UE_sched_ctrl
[
UE_id
]);
...
...
@@ -366,44 +401,5 @@ void nr_rx_sdu(const module_id_t gnb_mod_idP,
}
}
else
if
(
sduP
!=
NULL
)
{
// if the CRC passed
// random access pusch with TC-RNTI
NR_RA_t
*
ra
=
&
gNB_mac
->
common_channels
[
CC_idP
].
ra
[
0
];
if
(
ra
->
state
!=
WAIT_Msg3
)
{
LOG_E
(
MAC
,
"expected RA state WAIT_Msg3/%d (but is %d) for RA-RNTI %04x
\n
"
,
WAIT_Msg3
,
ra
->
state
,
ra
->
rnti
);
return
;
}
if
(
ra
->
rnti
!=
current_rnti
)
{
LOG_E
(
MAC
,
"expected RA-RNTI %04x (C-RNTI %04x) to match current RNTI %04x
\n
"
,
ra
->
rnti
,
ra
->
crnti
,
current_rnti
);
return
;
}
free
(
ra
->
preambles
.
preamble_list
);
ra
->
state
=
RA_IDLE
;
LOG_I
(
MAC
,
"reset RA state information for RA-RNTI %04x
\n
"
,
ra
->
rnti
);
const
int
UE_id
=
add_new_nr_ue
(
gnb_mod_idP
,
ra
->
crnti
);
UE_info
->
secondaryCellGroup
[
UE_id
]
=
ra
->
secondaryCellGroup
;
struct
NR_ServingCellConfig__downlinkBWP_ToAddModList
*
bwpList
=
ra
->
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
downlinkBWP_ToAddModList
;
AssertFatal
(
bwpList
->
list
.
count
==
1
,
"downlinkBWP_ToAddModList has %d BWP!
\n
"
,
bwpList
->
list
.
count
);
const
int
bwp_id
=
1
;
UE_info
->
UE_sched_ctrl
[
UE_id
].
active_bwp
=
bwpList
->
list
.
array
[
bwp_id
-
1
];
LOG_W
(
MAC
,
"[gNB %d][RAPROC] PUSCH with TC_RNTI %x received correctly, "
"adding UE MAC Context UE_id %d/RNTI %04x
\n
"
,
gnb_mod_idP
,
current_rnti
,
UE_id
,
ra
->
crnti
);
}
}
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
View file @
1ca09e2a
...
...
@@ -152,6 +152,8 @@ typedef struct {
NR_preamble_ue_t
preambles
;
/// NSA: the UEs C-RNTI to use
rnti_t
crnti
;
/// CFRA flag
bool
cfra
;
}
NR_RA_t
;
/*! \brief gNB common channels */
...
...
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