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
lizhongxiao
OpenXG-RAN
Commits
792cd56f
Commit
792cd56f
authored
Aug 09, 2023
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Cleanup after RRC reestablishment
parent
7a298e73
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
22 additions
and
45 deletions
+22
-45
openair2/RRC/NR/MESSAGES/asn1_msg.c
openair2/RRC/NR/MESSAGES/asn1_msg.c
+3
-3
openair2/RRC/NR/MESSAGES/asn1_msg.h
openair2/RRC/NR/MESSAGES/asn1_msg.h
+1
-2
openair2/RRC/NR/nr_rrc_defs.h
openair2/RRC/NR/nr_rrc_defs.h
+0
-1
openair2/RRC/NR/rrc_gNB.c
openair2/RRC/NR/rrc_gNB.c
+18
-39
No files found.
openair2/RRC/NR/MESSAGES/asn1_msg.c
View file @
792cd56f
...
...
@@ -1100,8 +1100,7 @@ uint8_t do_RRCReestablishmentRequest(uint8_t Mod_id, uint8_t *buffer, uint16_t c
}
//------------------------------------------------------------------------------
int
do_RRCReestablishment
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_gNB_ue_context_t
*
const
ue_context_pP
,
int
do_RRCReestablishment
(
rrc_gNB_ue_context_t
*
const
ue_context_pP
,
int
CC_id
,
uint8_t
*
const
buffer
,
size_t
buffer_size
,
...
...
@@ -1126,7 +1125,8 @@ int do_RRCReestablishment(const protocol_ctxt_t *const ctxt_pP,
rrcReestablishment
->
criticalExtensions
.
present
=
NR_RRCReestablishment__criticalExtensions_PR_rrcReestablishment
;
rrcReestablishment
->
criticalExtensions
.
choice
.
rrcReestablishment
=
CALLOC
(
1
,
sizeof
(
NR_RRCReestablishment_IEs_t
));
uint16_t
pci
=
RC
.
nrrrc
[
ctxt_pP
->
module_id
]
->
carrier
.
physCellId
;
int
module_id
=
0
;
uint16_t
pci
=
RC
.
nrrrc
[
module_id
]
->
carrier
.
physCellId
;
uint32_t
nr_arfcn_dl
=
(
uint64_t
)
*
scc
->
downlinkConfigCommon
->
frequencyInfoDL
->
absoluteFrequencySSB
;
LOG_I
(
NR_RRC
,
"Reestablishment update key pci=%d, earfcn_dl=%u
\n
"
,
pci
,
nr_arfcn_dl
);
...
...
openair2/RRC/NR/MESSAGES/asn1_msg.h
View file @
792cd56f
...
...
@@ -172,8 +172,7 @@ uint8_t do_NR_ULInformationTransfer(uint8_t **buffer,
uint8_t
do_RRCReestablishmentRequest
(
uint8_t
Mod_id
,
uint8_t
*
buffer
,
uint16_t
c_rnti
);
int
do_RRCReestablishment
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_gNB_ue_context_t
*
const
ue_context_pP
,
int
do_RRCReestablishment
(
rrc_gNB_ue_context_t
*
const
ue_context_pP
,
int
CC_id
,
uint8_t
*
const
buffer
,
size_t
buffer_size
,
...
...
openair2/RRC/NR/nr_rrc_defs.h
View file @
792cd56f
...
...
@@ -235,7 +235,6 @@ typedef enum {
}
rrc_action_t
;
typedef
struct
gNB_RRC_UE_s
{
uint8_t
primaryCC_id
;
drb_t
established_drbs
[
MAX_DRBS_PER_UE
];
uint8_t
DRB_active
[
MAX_DRBS_PER_UE
];
...
...
openair2/RRC/NR/rrc_gNB.c
View file @
792cd56f
...
...
@@ -1151,19 +1151,14 @@ static void rrc_gNB_process_RRCReconfigurationComplete(const protocol_ctxt_t *co
}
//-----------------------------------------------------------------------------
static
void
rrc_gNB_generate_RRCReestablishment
(
const
protocol_ctxt_t
*
ctxt_pP
,
rrc_gNB_ue_context_t
*
ue_context_pP
,
static
void
rrc_gNB_generate_RRCReestablishment
(
rrc_gNB_ue_context_t
*
ue_context_pP
,
const
uint8_t
*
masterCellGroup_from_DU
,
NR_ServingCellConfigCommon_t
*
scc
,
const
rnti_t
old_rnti
)
//-----------------------------------------------------------------------------
{
// int UE_id = -1;
// NR_LogicalChannelConfig_t *SRB1_logicalChannelConfig = NULL;
// NR_SRB_ToAddMod_t *SRB1_config = NULL;
// rrc_gNB_carrier_data_t *carrier = NULL;
module_id_t
module_id
=
ctxt_pP
->
module_id
;
gNB_RRC_INST
*
rrc
=
RC
.
nrrrc
[
ctxt_pP
->
module_id
];
module_id_t
module_id
=
0
;
gNB_RRC_INST
*
rrc
=
RC
.
nrrrc
[
module_id
];
int
enable_ciphering
=
0
;
gNB_RRC_UE_t
*
ue_p
=
&
ue_context_pP
->
ue_context
;
...
...
@@ -1171,8 +1166,7 @@ static void rrc_gNB_generate_RRCReestablishment(const protocol_ctxt_t *ctxt_pP,
uint8_t
xid
=
rrc_gNB_get_next_transaction_identifier
(
module_id
);
ue_p
->
xids
[
xid
]
=
RRC_REESTABLISH
;
NR_SRB_ToAddModList_t
*
SRBs
=
createSRBlist
(
ue_p
,
true
);
int
size
=
do_RRCReestablishment
(
ctxt_pP
,
ue_context_pP
,
int
size
=
do_RRCReestablishment
(
ue_context_pP
,
0
/* CC_id */
,
buffer
,
RRC_BUF_SIZE
,
...
...
@@ -1198,13 +1192,13 @@ static void rrc_gNB_generate_RRCReestablishment(const protocol_ctxt_t *ctxt_pP,
uint8_t
security_mode
=
enable_ciphering
?
ue_p
->
ciphering_algorithm
|
(
ue_p
->
integrity_algorithm
<<
4
)
:
0
|
(
ue_p
->
integrity_algorithm
<<
4
);
nr_pdcp_config_set_security
(
ctxt_pP
->
rntiMaybeUE
id
,
nr_pdcp_config_set_security
(
ue_p
->
rrc_ue_
id
,
DCCH
,
security_mode
,
kRRCenc
,
kRRCint
,
kUPenc
);
nr_pdcp_reestablishment
(
ctxt_pP
->
rntiMaybeUE
id
);
nr_pdcp_reestablishment
(
ue_p
->
rrc_ue_
id
);
f1_ue_data_t
ue_data
=
cu_get_f1_ue_data
(
ue_p
->
rrc_ue_id
);
uint32_t
old_gNB_DU_ue_id
=
old_rnti
;
...
...
@@ -1482,24 +1476,25 @@ static int nr_rrc_gNB_decode_ccch(module_id_t module_id, const f1ap_initial_ul_r
const
NR_ReestablishmentCause_t
cause
=
rrcReestablishmentRequest
.
reestablishmentCause
;
const
long
physCellId
=
rrcReestablishmentRequest
.
ue_Identity
.
physCellId
;
LOG_I
(
NR_RRC
,
"UE %04x NR_RRCReestablishmentRequest cause %s
\n
"
,
"UE %04x
physCellId %ld
NR_RRCReestablishmentRequest cause %s
\n
"
,
rnti
,
((
cause
==
NR_ReestablishmentCause_otherFailure
)
?
"Other Failure"
:
(
cause
==
NR_ReestablishmentCause_handoverFailure
)
?
"Handover Failure"
:
"reconfigurationFailure"
));
uint8_t
xid
=
-
1
;
physCellId
,
cause
==
NR_ReestablishmentCause_otherFailure
?
"Other Failure"
:
(
cause
==
NR_ReestablishmentCause_handoverFailure
?
"Handover Failure"
:
"reconfigurationFailure"
))
;
if
(
physCellId
!=
gnb_rrc_inst
->
carrier
.
physCellId
)
{
/* UE was moving from previous cell so quickly that RRCReestablishment for previous cell was received in this cell */
LOG_E
(
NR_RRC
,
" NR_RRCReestablishmentRequest ue_Identity.physCellId(%ld) is not equal to current physCellId(%ld), fallback to RRC establishment
\n
"
,
physCellId
,
gnb_rrc_inst
->
carrier
.
physCellId
);
xid
=
rrc_gNB_generate_RRCSetup_for_RRCReestablishmentRequest
(
module_id
,
rnti
,
0
);
/* 38.401 8.7: "If the UE accessed from a gNB-DU other than the
* original one, the gNB-CU should trigger the UE Context Setup
* procedure" we did not implement this yet; TBD for Multi-DU */
AssertFatal
(
false
,
"not implemented
\n
"
);
break
;
}
LOG_I
(
NR_RRC
,
"physCellId: %ld
\n
"
,
physCellId
);
for
(
int
i
=
0
;
i
<
rrcReestablishmentRequest
.
ue_Identity
.
shortMAC_I
.
size
;
i
++
)
{
LOG_D
(
NR_RRC
,
"rrcReestablishmentRequest.ue_Identity.shortMAC_I.buf[%d] = %x
\n
"
,
i
,
rrcReestablishmentRequest
.
ue_Identity
.
shortMAC_I
.
buf
[
i
]);
}
...
...
@@ -1508,7 +1503,7 @@ static int nr_rrc_gNB_decode_ccch(module_id_t module_id, const f1ap_initial_ul_r
if
(
rrcReestablishmentRequest
.
ue_Identity
.
c_RNTI
<
0x1
||
rrcReestablishmentRequest
.
ue_Identity
.
c_RNTI
>
0xffef
)
{
/* c_RNTI range error should not happen */
LOG_E
(
NR_RRC
,
"NR_RRCReestablishmentRequest c_RNTI range error, fallback to RRC establishment
\n
"
);
xid
=
rrc_gNB_generate_RRCSetup_for_RRCReestablishmentRequest
(
module_id
,
rnti
,
0
);
rrc_gNB_generate_RRCSetup_for_RRCReestablishmentRequest
(
module_id
,
rnti
,
0
);
break
;
}
...
...
@@ -1518,18 +1513,11 @@ static int nr_rrc_gNB_decode_ccch(module_id_t module_id, const f1ap_initial_ul_r
gNB_RRC_UE_t
*
UE
=
&
ue_context_p
->
ue_context
;
if
(
ue_context_p
==
NULL
)
{
LOG_E
(
NR_RRC
,
"NR_RRCReestablishmentRequest without UE context, fallback to RRC establishment
\n
"
);
xid
=
rrc_gNB_generate_RRCSetup_for_RRCReestablishmentRequest
(
module_id
,
rnti
,
0
);
break
;
}
// c-plane not end
if
((
UE
->
StatusRrc
!=
NR_RRC_RECONFIGURED
)
&&
(
UE
->
reestablishment_cause
==
NR_ReestablishmentCause_spare1
))
{
AssertFatal
(
false
,
"not implemented: is this really a bug?
\n
"
);
/* TODO RRC Release ? */
rrc_gNB_generate_RRCSetup_for_RRCReestablishmentRequest
(
module_id
,
rnti
,
0
);
break
;
}
/* TODO: start timer in ITTI and drop UE if it does not come back */
(
void
)
xid
;
/* xid currently not used */
// update with new RNTI, and update secondary UE association
UE
->
rnti
=
rnti
;
...
...
@@ -1540,16 +1528,7 @@ static int nr_rrc_gNB_decode_ccch(module_id_t module_id, const f1ap_initial_ul_r
UE
->
reestablishment_cause
=
cause
;
LOG_D
(
NR_RRC
,
"Accept RRCReestablishmentRequest from UE physCellId %ld cause %ld
\n
"
,
physCellId
,
cause
);
UE
->
primaryCC_id
=
0
;
// SRB2: set it to go through SRB1 with id 1 (DCCH)
//UE->Srb[2].Active = 1;
protocol_ctxt_t
ctxt
=
{.
rntiMaybeUEid
=
ue_context_p
->
ue_context
.
rrc_ue_id
,
.
module_id
=
module_id
,
.
instance
=
module_id
,
.
enb_flag
=
1
,
.
eNB_index
=
module_id
};
rrc_gNB_generate_RRCReestablishment
(
&
ctxt
,
ue_context_p
,
rrc_gNB_generate_RRCReestablishment
(
ue_context_p
,
msg
->
du2cu_rrc_container
,
gnb_rrc_inst
->
carrier
.
servingcellconfigcommon
,
old_rnti
);
...
...
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