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
63379511
Commit
63379511
authored
Jun 05, 2023
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
UE Context Modification Required: add RRC handler
parent
e72fa6aa
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
69 additions
and
0 deletions
+69
-0
openair2/RRC/NR/rrc_gNB.c
openair2/RRC/NR/rrc_gNB.c
+69
-0
No files found.
openair2/RRC/NR/rrc_gNB.c
View file @
63379511
...
...
@@ -1189,6 +1189,7 @@ int nr_rrc_reconfiguration_req(rrc_gNB_ue_context_t *const ue_context_pP
uint8_t
xid
=
rrc_gNB_get_next_transaction_identifier
(
ctxt_pP
->
module_id
);
gNB_RRC_UE_t
*
ue_p
=
&
ue_context_pP
->
ue_context
;
ue_p
->
xids
[
xid
]
=
RRC_DEDICATED_RECONF
;
NR_CellGroupConfig_t
*
masterCellGroup
=
ue_p
->
masterCellGroup
;
if
(
dl_bwp_id
>
0
)
{
...
...
@@ -1681,6 +1682,7 @@ static void handle_rrcReconfigurationComplete(const protocol_ctxt_t *const ctxt_
rrc_gNB_send_NGAP_INITIAL_CONTEXT_SETUP_RESP
(
ctxt_pP
,
ue_context_p
);
break
;
case
RRC_REESTABLISH_COMPLETE
:
case
RRC_DEDICATED_RECONF
:
/* do nothing */
break
;
default:
...
...
@@ -2101,6 +2103,69 @@ static void rrc_CU_process_ue_context_modification_response(MessageDef *msg_p, i
}
}
static
void
rrc_CU_process_ue_modification_required
(
MessageDef
*
msg_p
)
{
f1ap_ue_context_modif_required_t
*
required
=
&
F1AP_UE_CONTEXT_MODIFICATION_REQUIRED
(
msg_p
);
protocol_ctxt_t
ctxt
=
{.
rntiMaybeUEid
=
required
->
gNB_CU_ue_id
,
.
module_id
=
0
,
.
instance
=
0
,
.
enb_flag
=
1
,
.
eNB_index
=
0
};
gNB_RRC_INST
*
rrc
=
RC
.
nrrrc
[
ctxt
.
module_id
];
rrc_gNB_ue_context_t
*
ue_context_p
=
rrc_gNB_get_ue_context
(
rrc
,
required
->
gNB_CU_ue_id
);
if
(
ue_context_p
==
NULL
)
{
LOG_E
(
RRC
,
"Could not find UE context for CU UE ID %d, cannot handle UE context modification request
\n
"
,
required
->
gNB_CU_ue_id
);
f1ap_ue_context_modif_refuse_t
refuse
=
{
.
gNB_CU_ue_id
=
required
->
gNB_CU_ue_id
,
.
gNB_DU_ue_id
=
required
->
gNB_DU_ue_id
,
.
cause
=
F1AP_CAUSE_RADIO_NETWORK
,
.
cause_value
=
F1AP_CauseRadioNetwork_unknown_or_already_allocated_gnb_cu_ue_f1ap_id
,
};
rrc
->
mac_rrc
.
ue_context_modification_refuse
(
&
refuse
);
return
;
}
if
(
required
->
du_to_cu_rrc_information
&&
required
->
du_to_cu_rrc_information
->
cellGroupConfig
)
{
gNB_RRC_UE_t
*
UE
=
&
ue_context_p
->
ue_context
;
LOG_I
(
RRC
,
"UE Context Modification Required: new CellGroupConfig for UE ID %d/RNTI %04x, triggering reconfiguration
\n
"
,
UE
->
rrc_ue_id
,
UE
->
rnti
);
NR_CellGroupConfig_t
*
cellGroupConfig
=
NULL
;
asn_dec_rval_t
dec_rval
=
uper_decode_complete
(
NULL
,
&
asn_DEF_NR_CellGroupConfig
,
(
void
**
)
&
cellGroupConfig
,
(
uint8_t
*
)
required
->
du_to_cu_rrc_information
->
cellGroupConfig
,
required
->
du_to_cu_rrc_information
->
cellGroupConfig_length
);
if
(
dec_rval
.
code
!=
RC_OK
&&
dec_rval
.
consumed
==
0
)
{
LOG_E
(
RRC
,
"Cell group config decode error, refusing reconfiguration
\n
"
);
f1ap_ue_context_modif_refuse_t
refuse
=
{
.
gNB_CU_ue_id
=
required
->
gNB_CU_ue_id
,
.
gNB_DU_ue_id
=
required
->
gNB_DU_ue_id
,
.
cause
=
F1AP_CAUSE_PROTOCOL
,
.
cause_value
=
F1AP_CauseProtocol_transfer_syntax_error
,
};
rrc
->
mac_rrc
.
ue_context_modification_refuse
(
&
refuse
);
return
;
}
if
(
UE
->
masterCellGroup
)
{
ASN_STRUCT_FREE
(
asn_DEF_NR_CellGroupConfig
,
UE
->
masterCellGroup
);
LOG_I
(
RRC
,
"UE %d/RNTI %04x replacing existing CellGroupConfig with new one received from DU
\n
"
,
UE
->
rrc_ue_id
,
UE
->
rnti
);
}
UE
->
masterCellGroup
=
cellGroupConfig
;
if
(
LOG_DEBUGFLAG
(
DEBUG_ASN1
))
xer_fprint
(
stdout
,
&
asn_DEF_NR_CellGroupConfig
,
UE
->
masterCellGroup
);
/* trigger reconfiguration */
nr_rrc_reconfiguration_req
(
ue_context_p
,
&
ctxt
,
0
,
0
);
//rrc_gNB_generate_dedicatedRRCReconfiguration(&ctxt, ue_context_p);
//rrc_gNB_generate_defaultRRCReconfiguration(&ctxt, ue_context_p);
return
;
}
LOG_W
(
RRC
,
"nothing to be done after UE Context Modification Required for UE ID %d/RNTI %04x
\n
"
,
required
->
gNB_CU_ue_id
,
required
->
gNB_DU_ue_id
);
}
unsigned
int
mask_flip
(
unsigned
int
x
)
{
return
((((
x
>>
8
)
+
(
x
<<
8
))
&
0xffff
)
>>
6
);
}
...
...
@@ -2568,6 +2633,10 @@ void *rrc_gnb_task(void *args_p) {
rrc_CU_process_ue_context_modification_response
(
msg_p
,
instance
);
break
;
case
F1AP_UE_CONTEXT_MODIFICATION_REQUIRED
:
rrc_CU_process_ue_modification_required
(
msg_p
);
break
;
case
F1AP_UE_CONTEXT_RELEASE_REQ
:
rrc_CU_process_ue_context_release_request
(
msg_p
);
break
;
...
...
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