Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Shweta Shrivastava
openairinterface5G
Commits
67bccd8c
Commit
67bccd8c
authored
Jul 22, 2021
by
Luis Pereira
Browse files
Fix handling failure of CFRA procedure for OAI UE
parent
7c61f6d9
Changes
1
Hide whitespace changes
Inline
Side-by-side
openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c
View file @
67bccd8c
...
...
@@ -789,46 +789,35 @@ void nr_ra_succeeded(module_id_t mod_id, frame_t frame, int slot){
}
// Handlig failure of RA procedure @ MAC layer
// Handli
n
g failure of RA procedure @ MAC layer
// according to section 5 of 3GPP TS 38.321 version 16.2.1 Release 16
// todo:
// - complete handling of received contention-based RA preamble
// - 2-step RA implementation
void
nr_ra_failed
(
uint8_t
mod_id
,
uint8_t
CC_id
,
NR_PRACH_RESOURCES_t
*
prach_resources
,
frame_t
frame
,
int
slot
)
{
NR_UE_MAC_INST_t
*
mac
=
get_mac_inst
(
mod_id
);
RA_config_t
*
ra
=
&
mac
->
ra
;
ra
->
first_Msg3
=
1
;
ra
->
ra_PreambleIndex
=
-
1
;
ra
->
ra_PreambleIndex
=
-
1
;
ra
->
generate_nr_prach
=
RA_FAILED
;
ra
->
ra_state
=
RA_UE_IDLE
;
prach_resources
->
RA_PREAMBLE_TRANSMISSION_COUNTER
++
;
if
(
prach_resources
->
RA_TYPE
==
RA_4STEP
){
if
(
prach_resources
->
RA_PREAMBLE_TRANSMISSION_COUNTER
==
ra
->
preambleTransMax
+
1
){
LOG_D
(
MAC
,
"In %s: [UE %d][%d.%d] Maximum number of RACH attempts (%d) reached, selecting backoff time...
\n
"
,
__FUNCTION__
,
mod_id
,
frame
,
slot
,
ra
->
preambleTransMax
);
if
(
prach_resources
->
RA_PREAMBLE_TRANSMISSION_COUNTER
==
ra
->
preambleTransMax
+
1
){
ra
->
RA_backoff_cnt
=
rand
()
%
(
prach_resources
->
RA_PREAMBLE_BACKOFF
+
1
);
prach_resources
->
RA_PREAMBLE_TRANSMISSION_COUNTER
=
1
;
prach_resources
->
RA_PREAMBLE_POWER_RAMPING_STEP
+=
2
;
// 2 dB increment
prach_resources
->
ra_PREAMBLE_RECEIVED_TARGET_POWER
=
nr_get_Po_NOMINAL_PUSCH
(
prach_resources
,
mod_id
,
CC_id
);
}
else
{
LOG_D
(
MAC
,
"In %s: [UE %d][%d.%d] Maximum number of RACH attempts (%d) reached, selecting backoff time...
\n
"
,
__FUNCTION__
,
mod_id
,
frame
,
slot
,
ra
->
preambleTransMax
);
// Resetting RA window
nr_get_RA_window
(
mac
);
}
}
else
if
(
prach_resources
->
RA_TYPE
==
RA_2STEP
){
LOG_E
(
MAC
,
"Missing implementation of RA failure handling for 2-step RA...
\n
"
);
ra
->
RA_backoff_cnt
=
rand
()
%
(
prach_resources
->
RA_PREAMBLE_BACKOFF
+
1
);
prach_resources
->
RA_PREAMBLE_TRANSMISSION_COUNTER
=
1
;
prach_resources
->
RA_PREAMBLE_POWER_RAMPING_STEP
+=
2
;
// 2 dB increment
prach_resources
->
ra_PREAMBLE_RECEIVED_TARGET_POWER
=
nr_get_Po_NOMINAL_PUSCH
(
prach_resources
,
mod_id
,
CC_id
);
}
else
{
// Resetting RA window
nr_get_RA_window
(
mac
);
}
}
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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