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
ZhouShuya
OpenXG-RAN
Commits
296ea057
Commit
296ea057
authored
Jan 13, 2018
by
Xu Bo
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'issue255_256_257_tmp' into ues_test
parents
61128d77
cb14cd7b
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
99 additions
and
35 deletions
+99
-35
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+2
-2
openair2/LAYER2/MAC/eNB_scheduler.c
openair2/LAYER2/MAC/eNB_scheduler.c
+14
-8
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
+2
-1
openair2/RRC/LITE/defs.h
openair2/RRC/LITE/defs.h
+1
-0
openair2/RRC/LITE/rrc_eNB.c
openair2/RRC/LITE/rrc_eNB.c
+80
-24
No files found.
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
296ea057
...
...
@@ -838,10 +838,10 @@ void uci_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc)
if
(
uci
->
type
==
SR
)
{
if
(
SR_payload
==
1
)
{
fill_sr_indication
(
eNB
,
uci
->
rnti
,
frame
,
subframe
,
metric_SR
);
continue
;
break
;
}
else
{
continue
;
break
;
}
}
case
HARQ
:
...
...
openair2/LAYER2/MAC/eNB_scheduler.c
View file @
296ea057
...
...
@@ -713,6 +713,8 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frameP,
if
(
RC
.
mac
[
module_idP
]
->
UE_list
.
UE_sched_ctrl
[
i
].
ue_reestablishment_reject_timer
>=
RC
.
mac
[
module_idP
]
->
UE_list
.
UE_sched_ctrl
[
i
].
ue_reestablishment_reject_timer_thres
)
{
RC
.
mac
[
module_idP
]
->
UE_list
.
UE_sched_ctrl
[
i
].
ue_reestablishment_reject_timer
=
0
;
//clear reestablish_rnti_map
if
(
RC
.
mac
[
module_idP
]
->
UE_list
.
UE_sched_ctrl
[
i
].
ue_reestablishment_reject_timer_thres
>
20
){
for
(
int
ue_id_l
=
0
;
ue_id_l
<
NUMBER_OF_UE_MAX
;
ue_id_l
++
)
{
if
(
reestablish_rnti_map
[
ue_id_l
][
0
]
==
rnti
)
{
// clear currentC-RNTI from map
...
...
@@ -722,6 +724,10 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frameP,
}
}
PROTOCOL_CTXT_SET_BY_MODULE_ID
(
&
ctxt
,
module_idP
,
ENB_FLAG_YES
,
rnti
,
0
,
0
,
module_idP
);
rrc_rlc_remove_ue
(
&
ctxt
);
pdcp_remove_UE
(
&
ctxt
);
}
for
(
int
ii
=
0
;
ii
<
NUMBER_OF_UE_MAX
;
ii
++
)
{
LTE_eNB_ULSCH_t
*
ulsch
=
NULL
;
ulsch
=
RC
.
eNB
[
module_idP
][
CC_id
]
->
ulsch
[
ii
];
...
...
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
View file @
296ea057
...
...
@@ -3402,7 +3402,8 @@ allocate_CCEs(int module_idP, int CC_idP, frame_t frameP, sub_frame_t subframeP,
if
(((
ul_req
->
ul_config_pdu_list
[
ack_int
].
pdu_type
==
NFAPI_UL_CONFIG_UCI_HARQ_PDU_TYPE
)
||
(
ul_req
->
ul_config_pdu_list
[
ack_int
].
pdu_type
==
NFAPI_UL_CONFIG_UCI_SR_HARQ_PDU_TYPE
))
&&
(
ul_req
->
ul_config_pdu_list
[
ack_int
].
uci_harq_pdu
.
ue_information
.
ue_information_rel8
.
rnti
==
dl_config_pdu
[
i
].
dci_dl_pdu
.
dci_dl_pdu_rel8
.
rnti
)){
ul_req
->
ul_config_pdu_list
[
ack_int
].
uci_harq_pdu
.
harq_information
.
harq_information_rel9_fdd
.
n_pucch_1_0
=
fCCE
;
ul_req
->
ul_config_pdu_list
[
ack_int
].
uci_harq_pdu
.
harq_information
.
harq_information_rel9_fdd
.
n_pucch_1_0
=
cc
->
radioResourceConfigCommon
->
pucch_ConfigCommon
.
n1PUCCH_AN
+
fCCE
;
}
}
}
...
...
openair2/RRC/LITE/defs.h
View file @
296ea057
...
...
@@ -458,6 +458,7 @@ typedef struct eNB_RRC_UE_s {
uint32_t
ue_reestablishment_timer
;
uint32_t
ue_reestablishment_timer_thres
;
uint8_t
e_rab_release_command_flag
;
int8_t
reestablishment_xid
;
}
eNB_RRC_UE_t
;
typedef
uid_t
ue_uid_t
;
...
...
openair2/RRC/LITE/rrc_eNB.c
View file @
296ea057
...
...
@@ -1189,15 +1189,21 @@ rrc_eNB_generate_RRCConnectionReestablishment(
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
),
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
carrier
[
CC_id
].
Srb0
.
Tx_buffer
.
payload_size
);
// activate release timer, if RRCComplete not received after 10 frames, remove UE
//ue_context_pP->ue_context.ue_release_timer = 1;
// remove UE after 10 frames after RRCConnectionReestablishmentRelease is triggered
//ue_context_pP->ue_context.ue_release_timer_thres = 100;
// activate release timer, if RRCComplete not received after 100 frames, remove UE
int
UE_id
=
find_UE_id
(
ctxt_pP
->
module_id
,
ctxt_pP
->
rnti
);
if
(
UE_id
!=
-
1
){
// activate release timer, if RRCComplete not received after 100 frames, remove UE
RC
.
mac
[
ctxt_pP
->
module_id
]
->
UE_list
.
UE_sched_ctrl
[
UE_id
].
ue_reestablishment_reject_timer
=
1
;
// remove UE after 100 frames after RRCConnectionReestablishmentRelease is triggered
RC
.
mac
[
ctxt_pP
->
module_id
]
->
UE_list
.
UE_sched_ctrl
[
UE_id
].
ue_reestablishment_reject_timer_thres
=
1000
;
}
else
{
LOG_E
(
RRC
,
PROTOCOL_RRC_CTXT_UE_FMT
" Generating RRCConnectionReestablishment without UE_id(MAC) rnti %x
\n
"
,
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
),
ctxt_pP
->
rnti
);
}
// activate release timer, if RRCComplete not received after 100 frames, remove UE
ue_context_pP
->
ue_context
.
ue_reestablishment_timer
=
1
;
// remove UE after 100 frames after RRCConnectionReestablishmentRelease is triggered
ue_context_pP
->
ue_context
.
ue_reestablishment_timer_thres
=
1000
;
}
//-----------------------------------------------------------------------------
...
...
@@ -1251,6 +1257,7 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
uint8_t
next_xid
=
rrc_eNB_get_next_transaction_identifier
(
ctxt_pP
->
module_id
);
ue_context_pP
->
ue_context
.
Status
=
RRC_CONNECTED
;
ue_context_pP
->
ue_context
.
reestablishment_xid
=
next_xid
;
SRB_configList2
=
&
ue_context_pP
->
ue_context
.
SRB_configList2
[
xid
];
// get old configuration of SRB2
...
...
@@ -1829,8 +1836,14 @@ rrc_eNB_generate_RRCConnectionReestablishmentReject(
int
cnt
;
#endif
int
UE_id
=
find_UE_id
(
ctxt_pP
->
module_id
,
ctxt_pP
->
rnti
);
if
(
UE_id
!=
-
1
){
RC
.
mac
[
ctxt_pP
->
module_id
]
->
UE_list
.
UE_sched_ctrl
[
UE_id
].
ue_reestablishment_reject_timer
=
1
;
RC
.
mac
[
ctxt_pP
->
module_id
]
->
UE_list
.
UE_sched_ctrl
[
UE_id
].
ue_reestablishment_reject_timer_thres
=
20
;
}
else
{
LOG_E
(
RRC
,
PROTOCOL_RRC_CTXT_UE_FMT
" Generating RRCConnectionReestablishmentReject without UE_id(MAC) rnti %x
\n
"
,
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
),
ctxt_pP
->
rnti
);
}
T
(
T_ENB_RRC_CONNECTION_REESTABLISHMENT_REJECT
,
T_INT
(
ctxt_pP
->
module_id
),
T_INT
(
ctxt_pP
->
frame
),
T_INT
(
ctxt_pP
->
subframe
),
T_INT
(
ctxt_pP
->
rnti
));
...
...
@@ -5479,24 +5492,57 @@ rrc_eNB_decode_ccch(
break
;
}
int
UE_id
=
find_UE_id
(
ctxt_pP
->
module_id
,
c_rnti
);
if
(
ue_context_p
->
ue_context
.
ue_reestablishment_timer
>
0
||
RC
.
mac
[
ctxt_pP
->
module_id
]
->
UE_list
.
UE_sched_ctrl
[
UE_id
].
ue_reestablishment_reject_timer
>
0
){
LOG_
I
(
RRC
,
PROTOCOL_RRC_CTXT_UE_FMT
" RRCConnectionReestablishment
(Previous) don't complete
, let's reject the UE
\n
"
,
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
));
if
(
UE_id
==
-
1
){
LOG_
E
(
RRC
,
PROTOCOL_RRC_CTXT_UE_FMT
" RRCConnectionReestablishment
Request without UE_id(MAC) rnti %x
, let's reject the UE
\n
"
,
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
)
,
c_rnti
);
rrc_eNB_generate_RRCConnectionReestablishmentReject
(
ctxt_pP
,
ue_context_p
,
CC_id
);
break
;
}
if
((
RC
.
mac
[
ctxt_pP
->
module_id
]
->
UE_list
.
UE_sched_ctrl
[
UE_id
].
ue_reestablishment_reject_timer
>
0
)
&&
(
RC
.
mac
[
ctxt_pP
->
module_id
]
->
UE_list
.
UE_sched_ctrl
[
UE_id
].
ue_reestablishment_reject_timer_thres
>
20
)){
LOG_E
(
RRC
,
PROTOCOL_RRC_CTXT_UE_FMT
" RCConnectionReestablishmentComplete(Previous) don't receive, delete the Previous UE
\n
"
,
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
));
RC
.
mac
[
ctxt_pP
->
module_id
]
->
UE_list
.
UE_sched_ctrl
[
UE_id
].
ue_reestablishment_reject_timer
=
1000
;
ue_context_p
->
ue_context
.
ue_reestablishment_timer
=
0
;
}
if
(
ue_context_p
->
ue_context
.
ue_reestablishment_timer
>
0
){
LOG_E
(
RRC
,
PROTOCOL_RRC_CTXT_UE_FMT
" RRRCConnectionReconfigurationComplete(Previous) don't receive, delete the Previous UE
\n
"
,
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
));
ue_context_p
->
ue_context
.
Status
=
RRC_RECONFIGURED
;
protocol_ctxt_t
ctxt_old_p
;
PROTOCOL_CTXT_SET_BY_INSTANCE
(
&
ctxt_old_p
,
ctxt_pP
->
instance
,
ENB_FLAG_YES
,
c_rnti
,
ctxt_pP
->
frame
,
ctxt_pP
->
subframe
);
rrc_eNB_process_RRCConnectionReconfigurationComplete
(
&
ctxt_old_p
,
ue_context_p
,
ue_context_p
->
ue_context
.
reestablishment_xid
);
for
(
uint8_t
e_rab
=
0
;
e_rab
<
ue_context_p
->
ue_context
.
nb_of_e_rabs
;
e_rab
++
)
{
if
(
ue_context_p
->
ue_context
.
e_rab
[
e_rab
].
status
==
E_RAB_STATUS_DONE
)
{
ue_context_p
->
ue_context
.
e_rab
[
e_rab
].
status
=
E_RAB_STATUS_ESTABLISHED
;
}
else
{
ue_context_p
->
ue_context
.
e_rab
[
e_rab
].
status
=
E_RAB_STATUS_FAILED
;
}
}
}
LOG_D
(
RRC
,
PROTOCOL_RRC_CTXT_UE_FMT
" UE context: %p
\n
"
,
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
),
ue_context_p
);
/* reset timers */
ue_context_p
->
ue_context
.
ul_failure_timer
=
0
;
ue_context_p
->
ue_context
.
ue_release_timer
=
0
;
ue_context_p
->
ue_context
.
ue_reestablishment_timer
=
0
;
ue_context_p
->
ue_context
.
ue_release_timer_s1
=
0
;
ue_context_p
->
ue_context
.
ue_release_timer_rrc
=
0
;
ue_context_p
->
ue_context
.
reestablishment_xid
=
-
1
;
// insert C-RNTI to map
for
(
i
=
0
;
i
<
NUMBER_OF_UE_MAX
;
i
++
)
{
...
...
@@ -5673,6 +5719,7 @@ rrc_eNB_decode_ccch(
ue_context_p
->
ue_context
.
ue_reestablishment_timer
=
0
;
ue_context_p
->
ue_context
.
ue_release_timer_s1
=
0
;
ue_context_p
->
ue_context
.
ue_release_timer_rrc
=
0
;
ue_context_p
->
ue_context
.
reestablishment_xid
=
-
1
;
}
else
{
LOG_I
(
RRC
,
" S-TMSI doesn't exist, setting Initialue_identity_s_TMSI.m_tmsi to %p => %x
\n
"
,
ue_context_p
,
m_tmsi
);
// ue_context_p = rrc_eNB_get_next_free_ue_context(ctxt_pP, NOT_A_RANDOM_UE_IDENTITY);
...
...
@@ -6013,6 +6060,7 @@ rrc_eNB_decode_dcch(
PROTOCOL_RRC_CTXT_UE_FMT
" UE State = RRC_RECONFIGURED (default DRB, xid %ld)
\n
"
,
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
),
ul_dcch_msg
->
message
.
choice
.
c1
.
choice
.
rrcConnectionReconfigurationComplete
.
rrc_TransactionIdentifier
);
}
ue_context_p
->
ue_context
.
reestablishment_xid
=
-
1
;
rrc_eNB_process_RRCConnectionReconfigurationComplete
(
ctxt_pP
,
ue_context_p
,
...
...
@@ -6128,8 +6176,6 @@ if (ue_context_p->ue_context.nb_of_modify_e_rabs > 0) {
DCCH
,
sdu_sizeP
);
{
int
UE_id
=
find_UE_id
(
ctxt_pP
->
module_id
,
ctxt_pP
->
rnti
);
RC
.
mac
[
ctxt_pP
->
module_id
]
->
UE_list
.
UE_sched_ctrl
[
UE_id
].
ue_reestablishment_reject_timer
=
0
;
rnti_t
reestablish_rnti
=
0
;
// select C-RNTI from map
for
(
i
=
0
;
i
<
NUMBER_OF_UE_MAX
;
i
++
)
{
...
...
@@ -6153,6 +6199,16 @@ if (ue_context_p->ue_context.nb_of_modify_e_rabs > 0) {
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
));
break
;
}
//clear
int
UE_id
=
find_UE_id
(
ctxt_pP
->
module_id
,
ctxt_pP
->
rnti
);
if
(
UE_id
==
-
1
){
LOG_E
(
RRC
,
PROTOCOL_RRC_CTXT_UE_FMT
" RRCConnectionReestablishmentComplete without UE_id(MAC) rnti %x, fault
\n
"
,
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
),
ctxt_pP
->
rnti
);
break
;
}
RC
.
mac
[
ctxt_pP
->
module_id
]
->
UE_list
.
UE_sched_ctrl
[
UE_id
].
ue_reestablishment_reject_timer
=
0
;
ue_context_p
->
ue_context
.
ue_reestablishment_timer
=
0
;
if
(
ul_dcch_msg
->
message
.
choice
.
c1
.
choice
.
rrcConnectionReestablishmentComplete
.
criticalExtensions
.
present
==
RRCConnectionReestablishmentComplete__criticalExtensions_PR_rrcConnectionReestablishmentComplete_r8
)
{
...
...
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