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
canghaiwuhen
OpenXG-RAN
Commits
664d1a4b
Commit
664d1a4b
authored
Jan 27, 2018
by
Xu Bo
Browse files
Options
Browse Files
Download
Plain Diff
merge issue271_hundreds_of_ues into ues_test and fix conflict in openair2/LAYER2/MAC/defs.h
parents
098a177d
b7e2a90e
Changes
11
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
139 additions
and
15 deletions
+139
-15
openair2/COMMON/mac_rlc_primitives.h
openair2/COMMON/mac_rlc_primitives.h
+1
-0
openair2/LAYER2/MAC/defs.h
openair2/LAYER2/MAC/defs.h
+10
-0
openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
+23
-1
openair2/LAYER2/MAC/pre_processor.c
openair2/LAYER2/MAC/pre_processor.c
+10
-5
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c
+1
-1
openair2/LAYER2/RLC/rlc.h
openair2/LAYER2/RLC/rlc.h
+1
-0
openair2/LAYER2/RLC/rlc_mac.c
openair2/LAYER2/RLC/rlc_mac.c
+1
-0
openair2/RRC/LITE/proto.h
openair2/RRC/LITE/proto.h
+2
-1
openair2/RRC/LITE/rrc_common.c
openair2/RRC/LITE/rrc_common.c
+69
-2
openair2/RRC/LITE/rrc_eNB.c
openair2/RRC/LITE/rrc_eNB.c
+19
-4
openair2/RRC/LITE/rrc_eNB_S1AP.c
openair2/RRC/LITE/rrc_eNB_S1AP.c
+2
-1
No files found.
openair2/COMMON/mac_rlc_primitives.h
View file @
664d1a4b
...
...
@@ -191,6 +191,7 @@ struct mac_status_resp {
uint32_t
head_sdu_remaining_size_to_send
;
unsigned
char
head_sdu_is_segmented
;
struct
rlc_entity_info
rlc_info
;
/*!< xxx*/
mui_t
rrc_mui
;
};
struct
mac_tb_ind
{
...
...
openair2/LAYER2/MAC/defs.h
View file @
664d1a4b
...
...
@@ -1405,6 +1405,16 @@ typedef struct {
}
ULSCH_UE_SELECT
;
#endif
typedef
struct
{
volatile
uint8_t
flag
;
rnti_t
rnti
;
mui_t
rrc_eNB_mui
;
}
RRC_release_ctrl
;
typedef
struct
{
uint16_t
num_UEs
;
RRC_release_ctrl
RRC_release_ctrl
[
NUMBER_OF_UE_MAX
];
}
RRC_release_list_t
;
#include "proto.h"
/*@}*/
#endif
/*__LAYER2_MAC_DEFS_H__ */
openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
View file @
664d1a4b
...
...
@@ -977,7 +977,29 @@ schedule_ue_spec(module_id_t module_idP,
(
char
*
)
&
dlsch_buffer
[
0
]);
pthread_mutex_lock
(
&
rrc_release_freelist
);
if
(
rrc_release_info
.
num_UEs
>
0
){
uint16_t
release_total
=
0
;
for
(
uint16_t
release_num
=
0
;
release_num
<
NUMBER_OF_UE_MAX
;
release_num
++
){
if
(
rrc_release_info
.
RRC_release_ctrl
[
release_num
].
flag
==
1
){
release_total
++
;
if
(
(
rrc_release_info
.
RRC_release_ctrl
[
release_num
].
rnti
==
rnti
)
&&
(
rrc_release_info
.
RRC_release_ctrl
[
release_num
].
rrc_eNB_mui
==
rlc_status
.
rrc_mui
)){
rrc_release_info
.
RRC_release_ctrl
[
release_num
].
flag
=
3
;
}
}
if
(
rrc_release_info
.
RRC_release_ctrl
[
release_num
].
flag
==
2
){
release_total
++
;
if
(
(
rrc_release_info
.
RRC_release_ctrl
[
release_num
].
rnti
==
rnti
)
&&
(
rrc_release_info
.
RRC_release_ctrl
[
release_num
].
rrc_eNB_mui
==
rlc_status
.
rrc_mui
)){
rrc_release_info
.
RRC_release_ctrl
[
release_num
].
flag
=
4
;
}
}
if
(
release_total
>=
rrc_release_info
.
num_UEs
)
break
;
}
}
pthread_mutex_unlock
(
&
rrc_release_freelist
);
T
(
T_ENB_MAC_UE_DL_SDU
,
T_INT
(
module_idP
),
T_INT
(
CC_id
),
T_INT
(
rnti
),
T_INT
(
frameP
),
T_INT
(
subframeP
),
T_INT
(
harq_pid
),
T_INT
(
DCCH
),
...
...
openair2/LAYER2/MAC/pre_processor.c
View file @
664d1a4b
...
...
@@ -456,9 +456,10 @@ void sort_UEs(module_id_t Mod_idP, int frameP, sub_frame_t subframeP)
continue
;
if
((
rnti
=
UE_RNTI
(
Mod_idP
,
i
))
==
NOT_A_RNTI
)
continue
;
#if 0
if (UE_list->UE_sched_ctrl[i].ul_out_of_sync == 1)
continue;
#endif
list
[
list_size
]
=
i
;
list_size
++
;
}
...
...
@@ -1183,8 +1184,10 @@ void dlsch_scheduler_pre_processor (module_id_t Mod_id,
if
(
rnti
==
NOT_A_RNTI
)
continue
;
#if 0
if (UE_list->UE_sched_ctrl[i].ul_out_of_sync == 1)
continue;
#endif
UE_id
=
i
;
for
(
ii
=
0
;
ii
<
UE_num_active_CC
(
UE_list
,
UE_id
);
ii
++
)
{
...
...
@@ -1240,9 +1243,10 @@ void dlsch_scheduler_pre_processor (module_id_t Mod_id,
if
(
rnti
==
NOT_A_RNTI
)
continue
;
#if 0
if (UE_list->UE_sched_ctrl[i].ul_out_of_sync == 1)
continue;
#endif
for
(
ii
=
0
;
ii
<
UE_num_active_CC
(
UE_list
,
i
);
ii
++
)
{
CC_id
=
UE_list
->
ordered_CCids
[
ii
][
i
];
ue_sched_ctl
=
&
UE_list
->
UE_sched_ctrl
[
i
];
...
...
@@ -1312,9 +1316,10 @@ void dlsch_scheduler_pre_processor (module_id_t Mod_id,
// LOG_D(MAC,"UE %d rnti 0x\n", UE_id, rnti );
if
(
rnti
==
NOT_A_RNTI
)
continue
;
#if 0
if (UE_list->UE_sched_ctrl[UE_id].ul_out_of_sync == 1)
continue;
#endif
transmission_mode
=
get_tmode
(
Mod_id
,
CC_id
,
UE_id
);
// mac_xface->get_ue_active_harq_pid(Mod_id,CC_id,rnti,frameP,subframeP,&harq_pid,&round,0);
//rrc_status = mac_eNB_get_rrc_status(Mod_id,rnti);
...
...
@@ -1370,11 +1375,11 @@ void dlsch_scheduler_pre_processor (module_id_t Mod_id,
round2
=
ue_sched_ctl2
->
round
[
CC_id
];
if
(
rnti2
==
NOT_A_RNTI
)
continue
;
if
(
UE_list
->
#if 0
if (UE_list->
UE_sched_ctrl
[UE_id2].ul_out_of_sync == 1)
continue;
#endif
eNB_UE_stats2
=
UE_list
->
eNB_UE_stats
[
CC_id
][
UE_id2
];
...
...
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c
View file @
664d1a4b
...
...
@@ -585,7 +585,7 @@ rlc_am_mac_status_indication (
sdu_size
=
((
rlc_am_tx_sdu_management_t
*
)
(
rlc
->
input_sdus
[
rlc
->
current_sdu_index
].
mem_block
->
data
))
->
sdu_size
;
sdu_remaining_size
=
((
rlc_am_tx_sdu_management_t
*
)
(
rlc
->
input_sdus
[
rlc
->
current_sdu_index
].
mem_block
->
data
))
->
sdu_remaining_size
;
status_resp
.
rrc_mui
=
rlc
->
input_sdus
[
rlc
->
current_sdu_index
].
mui
;
status_resp
.
head_sdu_remaining_size_to_send
=
sdu_remaining_size
;
if
(
sdu_size
==
sdu_remaining_size
)
{
...
...
openair2/LAYER2/RLC/rlc.h
View file @
664d1a4b
...
...
@@ -151,6 +151,7 @@ typedef struct {
frame_t
head_sdu_creation_time
;
/*!< \brief Head SDU creation time. */
sdu_size_t
head_sdu_remaining_size_to_send
;
/*!< \brief remaining size of sdu: could be the total size or the remaining size of already segmented sdu */
boolean_t
head_sdu_is_segmented
;
/*!< \brief 0 if head SDU has not been segmented, 1 if already segmented */
mui_t
rrc_mui
;
}
mac_rlc_status_resp_t
;
...
...
openair2/LAYER2/RLC/rlc_mac.c
View file @
664d1a4b
...
...
@@ -406,6 +406,7 @@ mac_rlc_status_resp_t mac_rlc_status_ind(
mac_rlc_status_resp
.
head_sdu_creation_time
=
status_resp
.
head_sdu_creation_time
;
mac_rlc_status_resp
.
head_sdu_remaining_size_to_send
=
status_resp
.
head_sdu_remaining_size_to_send
;
mac_rlc_status_resp
.
head_sdu_is_segmented
=
status_resp
.
head_sdu_is_segmented
;
mac_rlc_status_resp
.
rrc_mui
=
status_resp
.
rrc_mui
;
//return mac_rlc_status_resp;
break
;
...
...
openair2/RRC/LITE/proto.h
View file @
664d1a4b
...
...
@@ -489,7 +489,8 @@ void openair_rrc_top_init_ue(
uint8_t
cba_group_active
,
uint8_t
HO_active
);
pthread_mutex_t
rrc_release_freelist
;
RRC_release_list_t
rrc_release_info
;
pthread_mutex_t
lock_ue_freelist
;
void
remove_UE_from_freelist
(
module_id_t
mod_id
,
rnti_t
rnti
);
void
put_UE_in_freelist
(
module_id_t
mod_id
,
rnti_t
rnti
,
boolean_t
removeFlag
);
...
...
openair2/RRC/LITE/rrc_common.c
View file @
664d1a4b
...
...
@@ -363,10 +363,11 @@ rrc_rx_tx(
ue_context_p
->
ue_context
.
ue_release_timer_thres_s1
)
{
LOG_I
(
RRC
,
"Removing UE %x instance Because of UE_CONTEXT_RELEASE_COMMAND not received after %d ms from sending request
\n
"
,
ue_context_p
->
ue_context
.
rnti
,
ue_context_p
->
ue_context
.
ue_release_timer_thres_s1
);
ue_context_p
->
ue_context
.
ue_release_timer_s1
=
0
;
//
ue_context_p->ue_context.ue_release_timer_s1 = 0;
#if defined(ENABLE_USE_MME)
#if defined(ENABLE_ITTI)
rrc_eNB_generate_RRCConnectionRelease
(
ctxt_pP
,
ue_context_p
);
#if 0
{
int e_rab;
MessageDef *msg_delete_tunnels_p = NULL;
...
...
@@ -404,9 +405,11 @@ rrc_rx_tx(
}
}
#endif
#endif
#else
ue_to_be_removed
=
ue_context_p
;
#endif
ue_context_p
->
ue_context
.
ue_release_timer_s1
=
0
;
break
;
}
}
...
...
@@ -416,11 +419,75 @@ rrc_rx_tx(
if
(
ue_context_p
->
ue_context
.
ue_release_timer_rrc
>=
ue_context_p
->
ue_context
.
ue_release_timer_thres_rrc
)
{
LOG_I
(
RRC
,
"Removing UE %x instance After UE_CONTEXT_RELEASE_Complete
\n
"
,
ue_context_p
->
ue_context
.
rnti
);
ue_context_p
->
ue_context
.
ue_release_timer_rrc
=
0
;
ue_to_be_removed
=
ue_context_p
;
ue_context_p
->
ue_context
.
ue_release_timer_rrc
=
0
;
break
;
}
}
pthread_mutex_lock
(
&
rrc_release_freelist
);
if
(
rrc_release_info
.
num_UEs
>
0
){
uint16_t
release_total
=
0
;
for
(
uint16_t
release_num
=
0
;
release_num
<
NUMBER_OF_UE_MAX
;
release_num
++
){
if
(
rrc_release_info
.
RRC_release_ctrl
[
release_num
].
flag
>
0
){
release_total
++
;
}
if
(
(
rrc_release_info
.
RRC_release_ctrl
[
release_num
].
flag
>
2
)
&&
(
rrc_release_info
.
RRC_release_ctrl
[
release_num
].
rnti
==
ue_context_p
->
ue_context
.
rnti
)){
ue_context_p
->
ue_context
.
ue_release_timer_rrc
=
1
;
ue_context_p
->
ue_context
.
ue_release_timer_thres_rrc
=
100
;
#if defined(ENABLE_USE_MME)
#if defined(ENABLE_ITTI)
int
e_rab
;
MessageDef
*
msg_complete_p
=
NULL
;
MessageDef
*
msg_delete_tunnels_p
=
NULL
;
uint32_t
eNB_ue_s1ap_id
=
ue_context_p
->
ue_context
.
eNB_ue_s1ap_id
;
if
(
rrc_release_info
.
RRC_release_ctrl
[
release_num
].
flag
==
4
){
MSC_LOG_TX_MESSAGE
(
MSC_RRC_ENB
,
MSC_S1AP_ENB
,
NULL
,
0
,
"0 S1AP_UE_CONTEXT_RELEASE_COMPLETE eNB_ue_s1ap_id 0x%06"
PRIX32
" "
,
eNB_ue_s1ap_id
);
msg_complete_p
=
itti_alloc_new_message
(
TASK_RRC_ENB
,
S1AP_UE_CONTEXT_RELEASE_COMPLETE
);
S1AP_UE_CONTEXT_RELEASE_COMPLETE
(
msg_complete_p
).
eNB_ue_s1ap_id
=
eNB_ue_s1ap_id
;
itti_send_msg_to_task
(
TASK_S1AP
,
ctxt_pP
->
module_id
,
msg_complete_p
);
}
MSC_LOG_TX_MESSAGE
(
MSC_RRC_ENB
,
MSC_GTPU_ENB
,
NULL
,
0
,
"0 GTPV1U_ENB_DELETE_TUNNEL_REQ rnti %x "
,
eNB_ue_s1ap_id
);
msg_delete_tunnels_p
=
itti_alloc_new_message
(
TASK_RRC_ENB
,
GTPV1U_ENB_DELETE_TUNNEL_REQ
);
memset
(
&
GTPV1U_ENB_DELETE_TUNNEL_REQ
(
msg_delete_tunnels_p
),
0
,
sizeof
(
GTPV1U_ENB_DELETE_TUNNEL_REQ
(
msg_delete_tunnels_p
)));
// do not wait response
GTPV1U_ENB_DELETE_TUNNEL_REQ
(
msg_delete_tunnels_p
).
rnti
=
ue_context_p
->
ue_context
.
rnti
;
for
(
e_rab
=
0
;
e_rab
<
ue_context_p
->
ue_context
.
nb_of_e_rabs
;
e_rab
++
)
{
GTPV1U_ENB_DELETE_TUNNEL_REQ
(
msg_delete_tunnels_p
).
eps_bearer_id
[
GTPV1U_ENB_DELETE_TUNNEL_REQ
(
msg_delete_tunnels_p
).
num_erab
++
]
=
ue_context_p
->
ue_context
.
enb_gtp_ebi
[
e_rab
];
// erase data
ue_context_p
->
ue_context
.
enb_gtp_teid
[
e_rab
]
=
0
;
memset
(
&
ue_context_p
->
ue_context
.
enb_gtp_addrs
[
e_rab
],
0
,
sizeof
(
ue_context_p
->
ue_context
.
enb_gtp_addrs
[
e_rab
]));
ue_context_p
->
ue_context
.
enb_gtp_ebi
[
e_rab
]
=
0
;
}
itti_send_msg_to_task
(
TASK_GTPV1_U
,
ctxt_pP
->
module_id
,
msg_delete_tunnels_p
);
struct
rrc_ue_s1ap_ids_s
*
rrc_ue_s1ap_ids
=
NULL
;
rrc_ue_s1ap_ids
=
rrc_eNB_S1AP_get_ue_ids
(
RC
.
rrc
[
ctxt_pP
->
module_id
],
0
,
eNB_ue_s1ap_id
);
if
(
NULL
!=
rrc_ue_s1ap_ids
)
{
rrc_eNB_S1AP_remove_ue_ids
(
RC
.
rrc
[
ctxt_pP
->
module_id
],
rrc_ue_s1ap_ids
);
}
#endif
#endif
rrc_release_info
.
RRC_release_ctrl
[
release_num
].
flag
=
0
;
rrc_release_info
.
num_UEs
--
;
break
;
}
if
(
release_total
>=
rrc_release_info
.
num_UEs
)
break
;
}
}
pthread_mutex_unlock
(
&
rrc_release_freelist
);
if
(
ue_context_p
->
ue_context
.
ue_reestablishment_timer
>
0
)
{
ue_context_p
->
ue_context
.
ue_reestablishment_timer
++
;
...
...
openair2/RRC/LITE/rrc_eNB.c
View file @
664d1a4b
...
...
@@ -2012,9 +2012,9 @@ rrc_eNB_generate_RRCConnectionRelease(
// remove UE after 10 frames after RRCConnectionRelease is triggered
//ue_context_pP->ue_context.ue_release_timer_thres=100;
// set release timer
ue_context_pP
->
ue_context
.
ue_release_timer_rrc
=
1
;
//
ue_context_pP->ue_context.ue_release_timer_rrc = 1;
// remove UE after 10 frames after RRCConnectionRelease is triggered
ue_context_pP
->
ue_context
.
ue_release_timer_thres_rrc
=
100
;
//
ue_context_pP->ue_context.ue_release_timer_thres_rrc = 100;
ue_context_pP
->
ue_context
.
ue_reestablishment_timer
=
0
;
ue_context_pP
->
ue_context
.
ue_release_timer
=
0
;
ue_context_pP
->
ue_context
.
ue_release_timer_s1
=
0
;
...
...
@@ -2040,7 +2040,21 @@ rrc_eNB_generate_RRCConnectionRelease(
ue_context_pP
->
ue_context
.
rnti
,
rrc_eNB_mui
,
size
);
pthread_mutex_lock
(
&
rrc_release_freelist
);
for
(
uint16_t
release_num
=
0
;
release_num
<
NUMBER_OF_UE_MAX
;
release_num
++
){
if
(
rrc_release_info
.
RRC_release_ctrl
[
release_num
].
flag
==
0
){
if
(
ue_context_pP
->
ue_context
.
ue_release_timer_s1
>
0
){
rrc_release_info
.
RRC_release_ctrl
[
release_num
].
flag
=
1
;
}
else
{
rrc_release_info
.
RRC_release_ctrl
[
release_num
].
flag
=
2
;
}
rrc_release_info
.
RRC_release_ctrl
[
release_num
].
rnti
=
ctxt_pP
->
rnti
;
rrc_release_info
.
RRC_release_ctrl
[
release_num
].
rrc_eNB_mui
=
rrc_eNB_mui
;
rrc_release_info
.
num_UEs
++
;
break
;
}
}
pthread_mutex_unlock
(
&
rrc_release_freelist
);
rrc_data_req
(
ctxt_pP
,
DCCH
,
...
...
@@ -6727,7 +6741,8 @@ rrc_enb_task(
protocol_ctxt_t
ctxt
;
pthread_mutex_init
(
&
lock_ue_freelist
,
NULL
);
pthread_mutex_init
(
&
rrc_release_freelist
,
NULL
);
memset
(
&
rrc_release_info
,
0
,
sizeof
(
RRC_release_list_t
));
itti_mark_task_ready
(
TASK_RRC_ENB
);
LOG_I
(
RRC
,
"Entering main loop of RRC message task
\n
"
);
while
(
1
)
{
...
...
openair2/RRC/LITE/rrc_eNB_S1AP.c
View file @
664d1a4b
...
...
@@ -1206,6 +1206,7 @@ int rrc_eNB_process_S1AP_UE_CONTEXT_RELEASE_COMMAND (MessageDef *msg_p, const ch
instance,
eNB_ue_s1ap_id);
*/
#if 0
{
int e_rab;
//int mod_id = 0;
...
...
@@ -1261,7 +1262,7 @@ int rrc_eNB_process_S1AP_UE_CONTEXT_RELEASE_COMMAND (MessageDef *msg_p, const ch
rrc_ue_s1ap_ids);
}
}
#endif
return
(
0
);
}
}
...
...
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