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
wangjie
OpenXG-RAN
Commits
3a1252a8
Commit
3a1252a8
authored
Mar 23, 2021
by
masayuki.harada
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add PDCP reestablishment and RLC reestablishment.
parent
a72e6ed6
Changes
5
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
386 additions
and
33 deletions
+386
-33
openair2/LAYER2/PDCP_v10.1.0/pdcp.c
openair2/LAYER2/PDCP_v10.1.0/pdcp.c
+266
-0
openair2/LAYER2/PDCP_v10.1.0/pdcp.h
openair2/LAYER2/PDCP_v10.1.0/pdcp.h
+15
-0
openair2/LAYER2/RLC/rlc.h
openair2/LAYER2/RLC/rlc.h
+17
-0
openair2/LAYER2/rlc_v2/rlc_oai_api.c
openair2/LAYER2/rlc_v2/rlc_oai_api.c
+76
-0
openair2/RRC/LTE/rrc_eNB.c
openair2/RRC/LTE/rrc_eNB.c
+12
-33
No files found.
openair2/LAYER2/PDCP_v10.1.0/pdcp.c
View file @
3a1252a8
This diff is collapsed.
Click to expand it.
openair2/LAYER2/PDCP_v10.1.0/pdcp.h
View file @
3a1252a8
...
...
@@ -320,6 +320,21 @@ boolean_t rrc_pdcp_config_asn1_req (
rb_id_t
*
const
defaultDRB
);
/*! \fn bool rrc_pdcp_reestablishment_asn1_req const protocol_ctxt_t *const ctxt_pP, const rnti_t previous_rnti, LTE_SRB_ToAddModList_t *const srb2add_list_pP, LTE_DRB_ToAddModList_t *const drb2add_list_pP)
* \brief Function for RRC to reestablish a Radio Bearer.
* \param[in] ctxt_pP Running context.
* \param[in] previous_rnti privious rnti
* \param[in] srb2add_list SRB configuration list to be created.
* \param[in] drb2add_list DRB configuration list to be created.
* \return A status about the processing, OK or error code.
*/
boolean_t
rrc_pdcp_reestablishment_asn1_req
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
const
rnti_t
previous_rnti
,
LTE_SRB_ToAddModList_t
*
const
srb2add_list_pP
,
LTE_DRB_ToAddModList_t
*
const
drb2add_list_pP
);
/*! \fn boolean_t pdcp_config_req_asn1 (const protocol_ctxt_t* const ctxt_pP, srb_flag_t srb_flagP, uint32_t action, rb_id_t rb_id, uint8_t rb_sn, uint8_t rb_report, uint16_t header_compression_profile, uint8_t security_mode)
* \brief Function for RRC to configure a Radio Bearer.
* \param[in] ctxt_pP Running context.
...
...
openair2/LAYER2/RLC/rlc.h
View file @
3a1252a8
...
...
@@ -619,6 +619,23 @@ rlc_op_status_t rlc_stat_req (
unsigned
int
*
const
stat_timer_poll_retransmit_timed_out
,
unsigned
int
*
const
stat_timer_status_prohibit_timed_out
);
/*! \fn rlc_op_status_t rrc_rlc_reestablishment_asn1_req (
const protocol_ctxt_t *const ctxt_pP,
const rnti_t previous_rnti,
const LTE_SRB_ToAddModList_t *const srb2add_listP,
const LTE_DRB_ToAddModList_t *const drb2add_listP)
* \brief Function for RRC to reestablish a Radio Bearer.
* \param[in] ctxtP Running context.
* \param[in] previous_rnti Previous RNTI.
* \param[in] srb2add_listP SRB configuration list to be created.
* \param[in] drb2add_listP DRB configuration list to be created.
* \return A status about the processing, OK or error code.
*/
rlc_op_status_t
rrc_rlc_reestablishment_asn1_req
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
const
rnti_t
previous_rnti
,
const
LTE_SRB_ToAddModList_t
*
const
srb2add_listP
,
const
LTE_DRB_ToAddModList_t
*
const
drb2add_listP
);
/*! \fn int rlc_module_init(int enb_flag)
* \brief RAZ the memory of the RLC layer, initialize the memory pool manager (mem_block_t structures mainly used in RLC module).
*/
...
...
openair2/LAYER2/rlc_v2/rlc_oai_api.c
View file @
3a1252a8
...
...
@@ -1032,3 +1032,79 @@ void rlc_tick(int frame, int subframe)
rlc_current_time_last_subframe
=
subframe
;
}
}
//-----------------------------------------------------------------------------
rlc_op_status_t
rrc_rlc_reestablishment_asn1_req
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
const
rnti_t
previous_rnti
,
const
LTE_SRB_ToAddModList_t
*
const
srb2add_listP
,
const
LTE_DRB_ToAddModList_t
*
const
drb2add_listP
)
{
//-----------------------------------------------------------------------------
rlc_ue_t
*
ue
;
rlc_ue_t
*
old_ue
;
int
rnti
=
ctxt_pP
->
rnti
;
int
module_id
=
ctxt_pP
->
module_id
;
int
cnt
;
int
srb_id
=
0
;
int
drb_id
=
0
;
if
(
srb2add_listP
!=
NULL
)
{
for
(
cnt
=
0
;
cnt
<
srb2add_listP
->
list
.
count
;
cnt
++
)
{
rlc_manager_lock
(
rlc_ue_manager
);
ue
=
rlc_manager_get_ue
(
rlc_ue_manager
,
rnti
);
old_ue
=
rlc_manager_get_ue
(
rlc_ue_manager
,
previous_rnti
);
srb_id
=
srb2add_listP
->
list
.
array
[
cnt
]
->
srb_Identity
;
//ignore already exist
if
(
ue
->
srb
[
srb_id
-
1
]
!=
NULL
)
{
LOG_D
(
RLC
,
"%s:%d:%s: warning SRB %d already exist for ue %d, do nothing
\n
"
,
__FILE__
,
__LINE__
,
__FUNCTION__
,
srb_id
,
rnti
);
continue
;
}
rlc_manager_unlock
(
rlc_ue_manager
);
// create new
add_srb
(
rnti
,
module_id
,
srb2add_listP
->
list
.
array
[
cnt
]);
// TODO take over some parameter from old rnti. But discard all parameters
// TS36 322 5.4 Re-establishment procedure
// discard the remaining AMD PDUs and byte segments of AMD PDUs in the receiving side
// discard all RLC SDUs and AMD PDUs in the transmitting side
// discard all RLC control PDUs.
if
(
old_ue
->
srb
[
srb_id
-
1
]
!=
NULL
)
{
LOG_D
(
RLC
,
"%s:%d:%s: reestablishment SRB %d from %d to ue %d
\n
"
,
__FILE__
,
__LINE__
,
__FUNCTION__
,
srb_id
,
previous_rnti
,
rnti
);
}
}
}
if
(
drb2add_listP
!=
NULL
)
{
for
(
cnt
=
0
;
cnt
<
drb2add_listP
->
list
.
count
;
cnt
++
)
{
rlc_manager_lock
(
rlc_ue_manager
);
ue
=
rlc_manager_get_ue
(
rlc_ue_manager
,
rnti
);
old_ue
=
rlc_manager_get_ue
(
rlc_ue_manager
,
previous_rnti
);
drb_id
=
drb2add_listP
->
list
.
array
[
cnt
]
->
drb_Identity
;
//ignore already exist
if
(
ue
->
drb
[
drb_id
-
1
]
!=
NULL
)
{
LOG_D
(
RLC
,
"%s:%d:%s: warning DRB %d already exist for ue %d, do nothing
\n
"
,
__FILE__
,
__LINE__
,
__FUNCTION__
,
drb_id
,
rnti
);
continue
;
}
rlc_manager_unlock
(
rlc_ue_manager
);
// create new
add_drb
(
rnti
,
module_id
,
drb2add_listP
->
list
.
array
[
cnt
]);
// TODO take over some parameter from old rnti. But discard all parameters
// TS36 322 5.4 Re-establishment procedure
// discard the remaining AMD PDUs and byte segments of AMD PDUs in the receiving side
// discard all RLC SDUs and AMD PDUs in the transmitting side
// discard all RLC control PDUs.
if
((
old_ue
->
drb
[
drb_id
-
1
]
!=
NULL
))
{
LOG_D
(
RLC
,
"%s:%d:%s: reestablishment DRB %d from %d to ue %d
\n
"
,
__FILE__
,
__LINE__
,
__FUNCTION__
,
drb_id
,
previous_rnti
,
rnti
);
}
}
}
return
RLC_OP_STATUS_OK
;
}
\ No newline at end of file
openair2/RRC/LTE/rrc_eNB.c
View file @
3a1252a8
...
...
@@ -2173,30 +2173,17 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
// pdcp_remove_UE(&ctxt_prior);
// add UE info to freeList for RU_thread to remove the UE instead of remove it here
/* Refresh SRBs/DRBs */
rrc_pdcp_config_asn1_req(ctxt_pP,
rrc_pdcp_reestablishment_asn1_req(ctxt_pP,
reestablish_rnti,
*SRB_configList2, // NULL,
DRB_configList,
NULL,
0xff, // already configured during the securitymodecommand
NULL,
NULL,
NULL
#if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0))
, (LTE_PMCH_InfoList_r9_t *) NULL
#endif
, NULL);
DRB_configList);
/* Refresh SRBs/DRBs */
if (!NODE_IS_CU(RC.rrc[ctxt_pP->module_id]->node_type)) {
rrc_rlc_config_asn1_req(ctxt_pP,
rrc_rlc_reestablishment_asn1_req(ctxt_pP,
reestablish_rnti,
*SRB_configList2, // NULL,
DRB_configList,
NULL
#if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0))
, (LTE_PMCH_InfoList_r9_t *) NULL,
0,
0
#endif
DRB_configList
);
}
LOG_I(RRC, "[RRCConnectionReestablishment]put UE %x into freeList\n", reestablish_rnti);
...
...
@@ -7389,24 +7376,16 @@ rrc_eNB_decode_ccch(
MSC_AS_TIME_FMT" CONFIG_REQ UE %x SRB",
MSC_AS_TIME_ARGS(ctxt_pP),
ue_context_p->ue_context.rnti);
rrc_pdcp_config_asn1_req(ctxt_pP,
rrc_pdcp_reestablishment_asn1_req(ctxt_pP,
c_rnti,
ue_context_p->ue_context.SRB_configList,
(LTE_DRB_ToAddModList_t *) NULL,
(LTE_DRB_ToReleaseList_t *) NULL,
0xff,
NULL,
NULL,
NULL
, (LTE_PMCH_InfoList_r9_t *) NULL
,NULL);
(LTE_DRB_ToAddModList_t *) NULL);
if (!NODE_IS_CU(RC.rrc[ctxt_pP->module_id]->node_type)) {
rrc_rlc_config_asn1_req(ctxt_pP,
rrc_rlc_reestablishment_asn1_req(ctxt_pP,
c_rnti,
ue_context_p->ue_context.SRB_configList,
(LTE_DRB_ToAddModList_t *) NULL,
(LTE_DRB_ToReleaseList_t *) NULL
, (LTE_PMCH_InfoList_r9_t *) NULL,
0,0
(LTE_DRB_ToAddModList_t *) NULL
);
}
...
...
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