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
45d4333a
Commit
45d4333a
authored
1 year ago
by
Roberto Louro Magueta
Committed by
rmagueta
1 year ago
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix reconfigurationWithSync
parent
f8f9f8ac
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
54 additions
and
50 deletions
+54
-50
openair2/LAYER2/NR_MAC_UE/config_ue.c
openair2/LAYER2/NR_MAC_UE/config_ue.c
+8
-4
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
+0
-6
openair2/LAYER2/NR_MAC_gNB/config.c
openair2/LAYER2/NR_MAC_gNB/config.c
+35
-31
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
+3
-2
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
+1
-2
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
+1
-1
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
+2
-2
openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c
openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c
+1
-1
openair2/RRC/NR/rrc_gNB_nsa.c
openair2/RRC/NR/rrc_gNB_nsa.c
+3
-1
No files found.
openair2/LAYER2/NR_MAC_UE/config_ue.c
View file @
45d4333a
...
...
@@ -658,6 +658,8 @@ void configure_current_BWP(NR_UE_MAC_INST_t *mac,
UL_BWP
->
configuredGrantConfig
=
spCellConfigDedicated
->
uplinkConfig
->
initialUplinkBWP
->
configuredGrantConfig
?
spCellConfigDedicated
->
uplinkConfig
->
initialUplinkBWP
->
configuredGrantConfig
->
choice
.
setup
:
NULL
;
ul_genericParameters
=
bwp_ulcommon
->
genericParameters
;
if
(
bwp_ulcommon
->
pucch_ConfigCommon
)
UL_BWP
->
pucch_ConfigCommon
=
bwp_ulcommon
->
pucch_ConfigCommon
->
choice
.
setup
;
if
(
bwp_ulcommon
->
rach_ConfigCommon
)
UL_BWP
->
rach_ConfigCommon
=
bwp_ulcommon
->
rach_ConfigCommon
->
choice
.
setup
;
}
...
...
@@ -749,8 +751,6 @@ void nr_rrc_mac_config_req_mcg(module_id_t module_id,
mac
->
scheduling_info
.
periodicBSR_SF
,
mac
->
scheduling_info
.
retxBSR_SF
);
configure_current_BWP
(
mac
,
NULL
,
cell_group_config
);
RA_config_t
*
ra
=
&
mac
->
ra
;
if
(
cell_group_config
->
spCellConfig
&&
cell_group_config
->
spCellConfig
->
reconfigurationWithSync
)
{
LOG_A
(
NR_MAC
,
"Received the reconfigurationWithSync in %s
\n
"
,
__FUNCTION__
);
...
...
@@ -772,11 +772,13 @@ void nr_rrc_mac_config_req_mcg(module_id_t module_id,
mac
->
synch_request
.
synch_req
.
target_Nid_cell
=
mac
->
physCellId
;
mac
->
if_module
->
synch_request
(
&
mac
->
synch_request
);
}
config_common_ue
(
mac
,
module_id
,
cc_idP
);
mac
->
crnti
=
cell_group_config
->
spCellConfig
->
reconfigurationWithSync
->
newUE_Identity
;
LOG_I
(
MAC
,
"Configuring CRNTI %x
\n
"
,
mac
->
crnti
);
LOG_I
(
NR_
MAC
,
"Configuring CRNTI %x
\n
"
,
mac
->
crnti
);
configure_current_BWP
(
mac
,
NULL
,
cell_group_config
);
config_common_ue
(
mac
,
module_id
,
cc_idP
);
nr_ue_mac_default_configs
(
mac
);
if
(
!
get_softmodem_params
()
->
emulate_l1
)
{
mac
->
if_module
->
phy_config_request
(
&
mac
->
phy_config
);
mac
->
phy_config_request_sent
=
true
;
...
...
@@ -784,6 +786,8 @@ void nr_rrc_mac_config_req_mcg(module_id_t module_id,
// Setup the SSB to Rach Occasions mapping according to the config
build_ssb_to_ro_map
(
mac
);
}
else
{
configure_current_BWP
(
mac
,
NULL
,
cell_group_config
);
}
}
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
View file @
45d4333a
...
...
@@ -184,12 +184,6 @@ void nr_ue_mac_default_configs(NR_UE_MAC_INST_t *mac)
mac
->
scheduling_info
.
retxBSR_SF
=
MAC_UE_BSR_TIMER_NOT_RUNNING
;
mac
->
BSR_reporting_active
=
BSR_TRIGGER_NONE
;
mac
->
first_sync_frame
=
-
1
;
mac
->
get_sib1
=
false
;
mac
->
phy_config_request_sent
=
false
;
mac
->
state
=
UE_NOT_SYNC
;
memset
(
&
mac
->
ssb_measurements
,
0
,
sizeof
(
mac
->
ssb_measurements
));
for
(
int
i
=
0
;
i
<
NR_MAX_NUM_LCID
;
i
++
)
{
LOG_D
(
NR_MAC
,
"Applying default logical channel config for LCGID %d
\n
"
,
i
);
mac
->
scheduling_info
.
Bj
[
i
]
=
-
1
;
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_gNB/config.c
View file @
45d4333a
...
...
@@ -98,7 +98,7 @@ static void process_rlcBearerConfig(struct NR_CellGroupConfig__rlc_BearerToAddMo
}
void
process_CellGroup
(
NR_CellGroupConfig_t
*
CellGroup
,
NR_UE_
sched_ctrl_t
*
sched_ctrl
)
void
process_CellGroup
(
NR_CellGroupConfig_t
*
CellGroup
,
NR_UE_
info_t
*
UE
)
{
/* we assume that this function is mutex-protected from outside */
NR_SCHED_ENSURE_LOCKED
(
&
RC
.
nrmac
[
0
]
->
sched_lock
);
...
...
@@ -114,8 +114,8 @@ void process_CellGroup(NR_CellGroupConfig_t *CellGroup, NR_UE_sched_ctrl_t *sche
//process_phr_Config(sched_ctrl,mac_CellGroupConfig->phr_Config);
}
process_rlcBearerConfig
(
CellGroup
->
rlc_BearerToAddModList
,
CellGroup
->
rlc_BearerToReleaseList
,
sched_ctrl
);
nr_mac_prepare_ra_ue
(
RC
.
nrmac
[
0
],
UE
->
rnti
,
CellGroup
);
process_rlcBearerConfig
(
CellGroup
->
rlc_BearerToAddModList
,
CellGroup
->
rlc_BearerToReleaseList
,
&
UE
->
UE_sched_ctrl
);
}
static
void
config_common
(
gNB_MAC_INST
*
nrmac
,
int
pdsch_AntennaPorts
,
int
pusch_AntennaPorts
,
NR_ServingCellConfigCommon_t
*
scc
)
...
...
@@ -570,7 +570,7 @@ bool nr_mac_add_test_ue(gNB_MAC_INST *nrmac, uint32_t rnti, NR_CellGroupConfig_t
NR_UE_info_t
*
UE
=
add_new_nr_ue
(
nrmac
,
rnti
,
CellGroup
);
if
(
UE
)
{
LOG_I
(
NR_MAC
,
"Force-added new UE %x with initial CellGroup
\n
"
,
rnti
);
process_CellGroup
(
CellGroup
,
&
UE
->
UE_sched_ctrl
);
process_CellGroup
(
CellGroup
,
UE
);
}
else
{
LOG_E
(
NR_MAC
,
"Error adding UE %04x
\n
"
,
rnti
);
}
...
...
@@ -578,12 +578,11 @@ bool nr_mac_add_test_ue(gNB_MAC_INST *nrmac, uint32_t rnti, NR_CellGroupConfig_t
return
UE
!=
NULL
;
}
bool
nr_mac_prepare_ra_
nsa_
ue
(
gNB_MAC_INST
*
nrmac
,
uint32_t
rnti
,
NR_CellGroupConfig_t
*
CellGroup
)
bool
nr_mac_prepare_ra_ue
(
gNB_MAC_INST
*
nrmac
,
uint32_t
rnti
,
NR_CellGroupConfig_t
*
CellGroup
)
{
DevAssert
(
nrmac
!=
NULL
);
DevAssert
(
CellGroup
!=
NULL
);
DevAssert
(
!
get_softmodem_params
()
->
phy_test
);
NR_SCHED_LOCK
(
&
nrmac
->
sched_lock
);
NR_SCHED_ENSURE_LOCKED
(
&
nrmac
->
sched_lock
);
// NSA case: need to pre-configure CFRA
const
int
CC_id
=
0
;
...
...
@@ -599,32 +598,37 @@ bool nr_mac_prepare_ra_nsa_ue(gNB_MAC_INST *nrmac, uint32_t rnti, NR_CellGroupCo
return
false
;
}
NR_RA_t
*
ra
=
&
cc
->
ra
[
ra_index
];
ra
->
CellGroup
=
CellGroup
;
AssertFatal
(
CellGroup
->
spCellConfig
&&
CellGroup
->
spCellConfig
->
reconfigurationWithSync
&&
CellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
!=
NULL
&&
CellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
->
cfra
!=
NULL
,
"invalid CellGroup for RNTI %04x, cannot create RA occasion
\n
"
,
rnti
);
ra
->
cfra
=
true
;
ra
->
rnti
=
rnti
;
struct
NR_CFRA
*
cfra
=
CellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
->
cfra
;
uint8_t
num_preamble
=
cfra
->
resources
.
choice
.
ssb
->
ssb_ResourceList
.
list
.
count
;
AssertFatal
(
ra
->
preambles
.
num_preambles
==
0
&&
ra
->
preambles
.
preamble_list
==
NULL
,
"preamble_list already configured means logic bug, list is allocated here
\n
"
);
ra
->
preambles
.
num_preambles
=
num_preamble
;
ra
->
preambles
.
preamble_list
=
calloc
(
ra
->
preambles
.
num_preambles
,
sizeof
(
*
ra
->
preambles
.
preamble_list
));
for
(
int
i
=
0
;
i
<
cc
->
num_active_ssb
;
i
++
)
{
for
(
int
j
=
0
;
j
<
num_preamble
;
j
++
)
{
if
(
cc
->
ssb_index
[
i
]
==
cfra
->
resources
.
choice
.
ssb
->
ssb_ResourceList
.
list
.
array
[
j
]
->
ssb
)
{
// one dedicated preamble for each beam
ra
->
preambles
.
preamble_list
[
i
]
=
cfra
->
resources
.
choice
.
ssb
->
ssb_ResourceList
.
list
.
array
[
j
]
->
ra_PreambleIndex
;
break
;
if
(
CellGroup
->
spCellConfig
&&
CellGroup
->
spCellConfig
->
reconfigurationWithSync
&&
CellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
!=
NULL
)
{
if
(
CellGroup
->
spCellConfig
->
reconfigurationWithSync
->
rach_ConfigDedicated
->
choice
.
uplink
->
cfra
!=
NULL
)
{
ra
->
cfra
=
true
;
ra
->
rnti
=
rnti
;
ra
->
CellGroup
=
CellGroup
;
struct
NR_CFRA
*
cfra
=
CellGroup
->
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
=
calloc
(
ra
->
preambles
.
num_preambles
,
sizeof
(
*
ra
->
preambles
.
preamble_list
));
for
(
int
i
=
0
;
i
<
cc
->
num_active_ssb
;
i
++
)
{
for
(
int
j
=
0
;
j
<
num_preamble
;
j
++
)
{
if
(
cc
->
ssb_index
[
i
]
==
cfra
->
resources
.
choice
.
ssb
->
ssb_ResourceList
.
list
.
array
[
j
]
->
ssb
)
{
// one dedicated preamble for each beam
ra
->
preambles
.
preamble_list
[
i
]
=
cfra
->
resources
.
choice
.
ssb
->
ssb_ResourceList
.
list
.
array
[
j
]
->
ra_PreambleIndex
;
break
;
}
}
}
}
}
else
{
ra
->
cfra
=
false
;
ra
->
rnti
=
0
;
if
(
ra
->
preambles
.
preamble_list
==
NULL
)
{
ra
->
preambles
.
num_preambles
=
MAX_NUM_NR_PRACH_PREAMBLES
;
ra
->
preambles
.
preamble_list
=
(
uint8_t
*
)
malloc
(
MAX_NUM_NR_PRACH_PREAMBLES
*
sizeof
(
uint8_t
));
for
(
int
i
=
0
;
i
<
MAX_NUM_NR_PRACH_PREAMBLES
;
i
++
)
ra
->
preambles
.
preamble_list
[
i
]
=
i
;
}
}
LOG_I
(
NR_MAC
,
"Added new RA process for UE RNTI %04x with initial CellGroup
\n
"
,
rnti
);
NR_SCHED_UNLOCK
(
&
nrmac
->
sched_lock
);
LOG_I
(
NR_MAC
,
"Added new %s process for UE RNTI %04x with initial CellGroup
\n
"
,
ra
->
cfra
?
"CFRA"
:
"CBRA"
,
rnti
);
return
true
;
}
...
...
@@ -649,7 +653,7 @@ bool nr_mac_update_cellgroup(gNB_MAC_INST *nrmac, uint32_t rnti, NR_CellGroupCon
exit
(
1
);
}
process_CellGroup
(
CellGroup
,
&
UE
->
UE_sched_ctrl
);
process_CellGroup
(
CellGroup
,
UE
);
return
true
;
}
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
View file @
45d4333a
...
...
@@ -1791,9 +1791,10 @@ static void nr_generate_Msg3_dcch_dtch_response(module_id_t module_idP,
(
UE
->
enc_rval
.
encoded
+
7
)
/
8
,
0
,
0
);
}
NR_UE_sched_ctrl_t
*
sched_ctrl
=
&
UE
->
UE_sched_ctrl
;
process_CellGroup
(
UE
->
CellGroup
,
sched_ctrl
);
process_CellGroup
(
UE
->
CellGroup
,
UE
)
;
// switching to initial BWP
NR_UE_sched_ctrl_t
*
sched_ctrl
=
&
UE
->
UE_sched_ctrl
;
configure_UE_BWP
(
nr_mac
,
scc
,
sched_ctrl
,
NULL
,
UE
,
0
,
0
);
// Reset uplink failure flags/counters/timers at MAC so gNB will resume again scheduling resources for this UE
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
View file @
45d4333a
...
...
@@ -2820,9 +2820,8 @@ void nr_mac_update_timers(module_id_t module_id,
NR_ServingCellConfigCommon_t
*
scc
=
RC
.
nrmac
[
module_id
]
->
common_channels
[
0
].
ServingCellConfigCommon
;
LOG_I
(
NR_MAC
,
"Modified rnti %04x with CellGroup
\n
"
,
UE
->
rnti
);
process_CellGroup
(
cg
,
&
UE
->
UE_sched_ctrl
);
process_CellGroup
(
cg
,
UE
);
NR_UE_sched_ctrl_t
*
sched_ctrl
=
&
UE
->
UE_sched_ctrl
;
configure_UE_BWP
(
RC
.
nrmac
[
module_id
],
scc
,
sched_ctrl
,
NULL
,
UE
,
-
1
,
-
1
);
if
(
get_softmodem_params
()
->
sa
)
{
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
View file @
45d4333a
...
...
@@ -760,7 +760,7 @@ static void _nr_rx_sdu(const module_id_t gnb_mod_idP,
reset_ul_harq_list
(
UE_scheduling_control
);
UE_msg3_stage
->
ra_timer
=
0
;
nr_clear_ra_proc
(
gnb_mod_idP
,
CC_idP
,
frameP
,
ra
);
process_CellGroup
(
ra
->
CellGroup
,
UE_
scheduling_control
);
process_CellGroup
(
ra
->
CellGroup
,
UE_
msg3_stage
);
}
else
{
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
View file @
45d4333a
...
...
@@ -54,7 +54,7 @@ void nr_mac_config_scc(gNB_MAC_INST *nrmac,
void
nr_mac_config_mib
(
gNB_MAC_INST
*
nrmac
,
NR_BCCH_BCH_Message_t
*
mib
);
void
nr_mac_config_sib1
(
gNB_MAC_INST
*
nrmac
,
NR_BCCH_DL_SCH_Message_t
*
sib1
);
bool
nr_mac_add_test_ue
(
gNB_MAC_INST
*
nrmac
,
uint32_t
rnti
,
NR_CellGroupConfig_t
*
CellGroup
);
bool
nr_mac_prepare_ra_
nsa_
ue
(
gNB_MAC_INST
*
nrmac
,
uint32_t
rnti
,
NR_CellGroupConfig_t
*
CellGroup
);
bool
nr_mac_prepare_ra_ue
(
gNB_MAC_INST
*
nrmac
,
uint32_t
rnti
,
NR_CellGroupConfig_t
*
CellGroup
);
bool
nr_mac_update_cellgroup
(
gNB_MAC_INST
*
nrmac
,
uint32_t
rnti
,
NR_CellGroupConfig_t
*
CellGroup
);
void
clear_nr_nfapi_information
(
gNB_MAC_INST
*
gNB
,
...
...
@@ -433,7 +433,7 @@ void nr_sr_reporting(gNB_MAC_INST *nrmac, frame_t frameP, sub_frame_t slotP);
size_t
dump_mac_stats
(
gNB_MAC_INST
*
gNB
,
char
*
output
,
size_t
strlen
,
bool
reset_rsrp
);
void
process_CellGroup
(
NR_CellGroupConfig_t
*
CellGroup
,
NR_UE_
sched_ctrl_t
*
sched_ctrl
);
void
process_CellGroup
(
NR_CellGroupConfig_t
*
CellGroup
,
NR_UE_
info_t
*
UE
);
void
prepare_initial_ul_rrc_message
(
gNB_MAC_INST
*
mac
,
NR_UE_info_t
*
UE
);
void
send_initial_ul_rrc_message
(
gNB_MAC_INST
*
mac
,
int
rnti
,
const
uint8_t
*
sdu
,
sdu_size_t
sdu_len
,
void
*
rawUE
);
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c
View file @
45d4333a
...
...
@@ -147,7 +147,7 @@ void ue_context_setup_request(const f1ap_ue_context_setup_t *req)
resp
.
du_to_cu_rrc_information
->
cellGroupConfig_length
=
(
enc_rval
.
encoded
+
7
)
>>
3
;
/* TODO: need to apply after UE context reconfiguration confirmed? */
process_CellGroup
(
UE
->
CellGroup
,
&
UE
->
UE_sched_ctrl
);
process_CellGroup
(
UE
->
CellGroup
,
UE
);
NR_SCHED_UNLOCK
(
&
mac
->
sched_lock
);
...
...
This diff is collapsed.
Click to expand it.
openair2/RRC/NR/rrc_gNB_nsa.c
View file @
45d4333a
...
...
@@ -349,7 +349,9 @@ void rrc_add_nsa_user(gNB_RRC_INST *rrc, rrc_gNB_ue_context_t *ue_context_p, x2a
// phytest mode: we don't set up RA, etc
ret
=
nr_mac_add_test_ue
(
RC
.
nrmac
[
rrc
->
module_id
]
,
ue_context_p
->
ue_context
.
rnti
,
ue_context_p
->
ue_context
.
secondaryCellGroup
);
}
else
{
ret
=
nr_mac_prepare_ra_nsa_ue
(
RC
.
nrmac
[
rrc
->
module_id
],
ue_context_p
->
ue_context
.
rnti
,
ue_context_p
->
ue_context
.
secondaryCellGroup
);
NR_SCHED_LOCK
(
&
RC
.
nrmac
[
rrc
->
module_id
]
->
sched_lock
);
ret
=
nr_mac_prepare_ra_ue
(
RC
.
nrmac
[
rrc
->
module_id
],
ue_context_p
->
ue_context
.
rnti
,
ue_context_p
->
ue_context
.
secondaryCellGroup
);
NR_SCHED_UNLOCK
(
&
RC
.
nrmac
[
rrc
->
module_id
]
->
sched_lock
);
}
AssertFatal
(
ret
,
"cannot add NSA UE in MAC, aborting
\n
"
);
...
...
This diff is collapsed.
Click to expand it.
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