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
Show 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