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
0aac8760
Commit
0aac8760
authored
Dec 12, 2023
by
francescomani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
handling reception of RRCReestablishment
parent
300a4a07
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
33 additions
and
4 deletions
+33
-4
openair2/RRC/NR_UE/rrc_UE.c
openair2/RRC/NR_UE/rrc_UE.c
+33
-4
No files found.
openair2/RRC/NR_UE/rrc_UE.c
View file @
0aac8760
...
@@ -140,7 +140,7 @@ static void nr_rrc_manage_rlc_bearers(const NR_UE_RRC_INST_t *rrc,
...
@@ -140,7 +140,7 @@ static void nr_rrc_manage_rlc_bearers(const NR_UE_RRC_INST_t *rrc,
static
void
nr_rrc_ue_process_RadioBearerConfig
(
NR_UE_RRC_INST_t
*
ue_rrc
,
static
void
nr_rrc_ue_process_RadioBearerConfig
(
NR_UE_RRC_INST_t
*
ue_rrc
,
rrcPerNB_t
*
rrcNB
,
rrcPerNB_t
*
rrcNB
,
NR_RadioBearerConfig_t
*
const
radioBearerConfig
);
NR_RadioBearerConfig_t
*
const
radioBearerConfig
);
static
void
nr_rrc_ue_generate_rrcReestablishmentComplete
(
NR_RRCReestablishment_t
*
rrcReestablishment
);
static
void
nr_rrc_ue_generate_rrcReestablishmentComplete
(
const
NR_UE_RRC_INST_t
*
rrc
,
const
NR_RRCReestablishment_t
*
rrcReestablishment
);
static
void
process_lte_nsa_msg
(
NR_UE_RRC_INST_t
*
rrc
,
nsa_msg_t
*
msg
,
int
msg_len
);
static
void
process_lte_nsa_msg
(
NR_UE_RRC_INST_t
*
rrc
,
nsa_msg_t
*
msg
,
int
msg_len
);
static
void
nr_rrc_ue_process_rrcReconfiguration
(
NR_UE_RRC_INST_t
*
rrc
,
static
void
nr_rrc_ue_process_rrcReconfiguration
(
NR_UE_RRC_INST_t
*
rrc
,
int
gNB_index
,
int
gNB_index
,
...
@@ -1294,6 +1294,32 @@ static void nr_rrc_ue_generate_RRCReconfigurationComplete(NR_UE_RRC_INST_t *rrc,
...
@@ -1294,6 +1294,32 @@ static void nr_rrc_ue_generate_RRCReconfigurationComplete(NR_UE_RRC_INST_t *rrc,
nr_pdcp_data_req_srb
(
rrc
->
ue_id
,
srb_id
,
0
,
size
,
buffer
,
deliver_pdu_srb_rlc
,
NULL
);
nr_pdcp_data_req_srb
(
rrc
->
ue_id
,
srb_id
,
0
,
size
,
buffer
,
deliver_pdu_srb_rlc
,
NULL
);
}
}
static
void
nr_rrc_ue_process_rrcReestablishment
(
NR_UE_RRC_INST_t
*
rrc
,
const
int
gNB_index
,
const
NR_RRCReestablishment_t
*
rrcReestablishment
)
{
// implementign procedues as described in 38.331 section 5.3.7.5
// stop timer T301
NR_UE_Timers_Constants_t
*
timers
=
&
rrc
->
timers_and_constants
;
nr_timer_stop
(
&
timers
->
T301
);
// store the nextHopChainingCount value
NR_RRCReestablishment_IEs_t
*
ies
=
rrcReestablishment
->
criticalExtensions
.
choice
.
rrcReestablishment
;
AssertFatal
(
ies
,
"Not expecting RRCReestablishment_IEs to be NULL
\n
"
);
int
nh
=
rrcReestablishment
->
criticalExtensions
.
choice
.
rrcReestablishment
->
nextHopChainingCount
;
// TODO update the K gNB key based on the current K gNB key or the NH, using the stored nextHopChainingCount value
// TODO derive the K RRCenc and K UPenc keys associated with the previously configured cipheringAlgorithm
// TODO derive the K RRCint and K UPint keys associated with the previously configured integrityProtAlgorithm
// TODO request lower layers to verify the integrity protection of the RRCReestablishment message
// TODO if the integrity protection check of the RRCReestablishment message fails -> go to IDLE
// TODO configure lower layers to resume integrity protection for SRB1
// TODO configure lower layers to resume ciphering for SRB1
// release the measurement gap configuration indicated by the measGapConfig, if configured
rrcPerNB_t
*
rrcNB
=
rrc
->
perNB
+
gNB_index
;
asn1cFreeStruc
(
asn_DEF_NR_MeasGapConfig
,
rrcNB
->
measGapConfig
);
// submit the RRCReestablishmentComplete message to lower layers for transmission
nr_rrc_ue_generate_rrcReestablishmentComplete
(
rrc
,
rrcReestablishment
);
}
static
int
nr_rrc_ue_decode_dcch
(
NR_UE_RRC_INST_t
*
rrc
,
static
int
nr_rrc_ue_decode_dcch
(
NR_UE_RRC_INST_t
*
rrc
,
const
srb_id_t
Srb_id
,
const
srb_id_t
Srb_id
,
const
uint8_t
*
const
Buffer
,
const
uint8_t
*
const
Buffer
,
...
@@ -1349,7 +1375,7 @@ static int nr_rrc_ue_decode_dcch(NR_UE_RRC_INST_t *rrc,
...
@@ -1349,7 +1375,7 @@ static int nr_rrc_ue_decode_dcch(NR_UE_RRC_INST_t *rrc,
case
NR_DL_DCCH_MessageType__c1_PR_rrcReestablishment
:
case
NR_DL_DCCH_MessageType__c1_PR_rrcReestablishment
:
LOG_I
(
NR_RRC
,
"Logical Channel DL-DCCH (SRB1), Received RRCReestablishment
\n
"
);
LOG_I
(
NR_RRC
,
"Logical Channel DL-DCCH (SRB1), Received RRCReestablishment
\n
"
);
nr_rrc_ue_
generate_rrcReestablishmentComplete
(
c1
->
choice
.
rrcReestablishment
);
nr_rrc_ue_
process_rrcReestablishment
(
rrc
,
gNB_indexP
,
c1
->
choice
.
rrcReestablishment
);
break
;
break
;
case
NR_DL_DCCH_MessageType__c1_PR_dlInformationTransfer
:
{
case
NR_DL_DCCH_MessageType__c1_PR_dlInformationTransfer
:
{
...
@@ -1668,12 +1694,15 @@ void nr_rrc_initiate_rrcReestablishment(NR_UE_RRC_INST_t *rrc,
...
@@ -1668,12 +1694,15 @@ void nr_rrc_initiate_rrcReestablishment(NR_UE_RRC_INST_t *rrc,
nr_rrc_mac_config_req_reset
(
rrc
->
ue_id
,
RE_ESTABLISHMENT
);
nr_rrc_mac_config_req_reset
(
rrc
->
ue_id
,
RE_ESTABLISHMENT
);
}
}
static
void
nr_rrc_ue_generate_rrcReestablishmentComplete
(
NR_RRCReestablishment_t
*
rrcReestablishment
)
static
void
nr_rrc_ue_generate_rrcReestablishmentComplete
(
const
NR_UE_RRC_INST_t
*
rrc
,
const
NR_RRCReestablishment_t
*
rrcReestablishment
)
{
{
uint8_t
buffer
[
RRC_BUFFER_SIZE
]
=
{
0
};
uint8_t
buffer
[
RRC_BUFFER_SIZE
]
=
{
0
};
int
size
=
do_RRCReestablishmentComplete
(
buffer
,
RRC_BUFFER_SIZE
,
int
size
=
do_RRCReestablishmentComplete
(
buffer
,
RRC_BUFFER_SIZE
,
rrcReestablishment
->
rrc_TransactionIdentifier
);
rrcReestablishment
->
rrc_TransactionIdentifier
);
LOG_I
(
NR_RRC
,
"[RAPROC] Logical Channel UL-DCCH (SRB1), Generating RRCReestablishmentComplete (bytes %d)
\n
"
,
size
);
LOG_I
(
NR_RRC
,
"[RAPROC] Logical Channel UL-DCCH (SRB1), Generating RRCReestablishmentComplete (bytes %d)
\n
"
,
size
);
int
srb_id
=
1
;
// RRC re-establishment complete on SRB1
nr_pdcp_data_req_srb
(
rrc
->
ue_id
,
srb_id
,
0
,
size
,
buffer
,
deliver_pdu_srb_rlc
,
NULL
);
}
}
void
*
recv_msgs_from_lte_ue
(
void
*
args_p
)
void
*
recv_msgs_from_lte_ue
(
void
*
args_p
)
...
...
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