Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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 UE
Commits
635f994d
Commit
635f994d
authored
May 10, 2018
by
Haruki NAOI
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'remotes/origin/rm902_bugfix_sp3_master_base' into sp3_master
parents
efe63a7b
ecca6d61
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
121 additions
and
30 deletions
+121
-30
openair2/COMMON/mac_rlc_primitives.h
openair2/COMMON/mac_rlc_primitives.h
+0
-1
openair2/LAYER2/MAC/defs.h
openair2/LAYER2/MAC/defs.h
+6
-0
openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
+35
-18
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
+45
-3
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
+3
-2
openair2/LAYER2/MAC/extern.h
openair2/LAYER2/MAC/extern.h
+1
-1
openair2/LAYER2/MAC/pre_processor.c
openair2/LAYER2/MAC/pre_processor.c
+15
-0
openair2/LAYER2/MAC/vars.h
openair2/LAYER2/MAC/vars.h
+1
-1
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c
+0
-1
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_segment.c
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am_segment.c
+10
-0
openair2/LAYER2/RLC/rlc.h
openair2/LAYER2/RLC/rlc.h
+0
-1
openair2/LAYER2/RLC/rlc_mac.c
openair2/LAYER2/RLC/rlc_mac.c
+1
-1
openair2/RRC/LITE/rrc_eNB.c
openair2/RRC/LITE/rrc_eNB.c
+4
-1
No files found.
openair2/COMMON/mac_rlc_primitives.h
View file @
635f994d
...
...
@@ -191,7 +191,6 @@ 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 @
635f994d
...
...
@@ -1413,6 +1413,12 @@ typedef struct {
uint16_t
num_UEs
;
RRC_release_ctrl
RRC_release_ctrl
[
NUMBER_OF_UE_MAX
];
}
RRC_release_list_t
;
typedef
struct
{
uint8_t
rrc_mui_num
;
mui_t
rrc_mui
[
128
];
}
mac_rlc_am_muilist_t
;
#include "proto.h"
/*@}*/
#endif
/*__LAYER2_MAC_DEFS_H__ */
openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
View file @
635f994d
...
...
@@ -988,22 +988,36 @@ schedule_ue_spec(module_id_t module_idP,
&
dlsch_buffer
[
0
]);
pthread_mutex_lock
(
&
rrc_release_freelist
);
if
(
rrc_release_info
.
num_UEs
>
0
){
if
(
(
rrc_release_info
.
num_UEs
>
0
)
&&
(
rlc_am_mui
.
rrc_mui_num
>
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
++
;
}
else
{
continue
;
}
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
].
rnti
==
rnti
){
for
(
uint16_t
mui_num
=
0
;
mui_num
<
rlc_am_mui
.
rrc_mui_num
;
mui_num
++
){
if
(
rrc_release_info
.
RRC_release_ctrl
[
release_num
].
rrc_eNB_mui
==
rlc_am_mui
.
rrc_mui
[
mui_num
]){
rrc_release_info
.
RRC_release_ctrl
[
release_num
].
flag
=
3
;
LOG_D
(
MAC
,
"DLSCH Release send:index %d rnti %x mui %d mui_num %d flag 1->3
\n
"
,
release_num
,
rnti
,
rlc_am_mui
.
rrc_mui
[
mui_num
],
mui_num
);
break
;
}
}
}
}
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
(
rrc_release_info
.
RRC_release_ctrl
[
release_num
].
rnti
==
rnti
){
for
(
uint16_t
mui_num
=
0
;
mui_num
<
rlc_am_mui
.
rrc_mui_num
;
mui_num
++
){
if
(
rrc_release_info
.
RRC_release_ctrl
[
release_num
].
rrc_eNB_mui
==
rlc_am_mui
.
rrc_mui
[
mui_num
]){
rrc_release_info
.
RRC_release_ctrl
[
release_num
].
flag
=
4
;
LOG_D
(
MAC
,
"DLSCH Release send:index %d rnti %x mui %d mui_num %d flag 2->4
\n
"
,
release_num
,
rnti
,
rlc_am_mui
.
rrc_mui
[
mui_num
],
mui_num
);
break
;
}
}
}
}
if
(
release_total
>=
rrc_release_info
.
num_UEs
)
break
;
...
...
@@ -1013,21 +1027,24 @@ schedule_ue_spec(module_id_t module_idP,
RA_t
*
ra
=
&
eNB
->
common_channels
[
CC_id
].
ra
[
0
];
for
(
uint8_t
ra_ii
=
0
;
ra_ii
<
NB_RA_PROC_MAX
;
ra_ii
++
)
{
if
((
ra
[
ra_ii
].
rnti
==
rnti
)
&&
(
ra
[
ra_ii
].
state
==
MSGCRNTI
)
&&
(
ra
[
ra_ii
].
crnti_rrc_mui
==
rlc_status
.
rrc_mui
)){
ra
[
ra_ii
].
crnti_harq_pid
=
harq_pid
;
ra
[
ra_ii
].
state
=
MSGCRNTI_ACK
;
break
;
if
((
ra
[
ra_ii
].
rnti
==
rnti
)
&&
(
ra
[
ra_ii
].
state
==
MSGCRNTI
)){
for
(
uint16_t
mui_num
=
0
;
mui_num
<
rlc_am_mui
.
rrc_mui_num
;
mui_num
++
){
if
(
ra
[
ra_ii
].
crnti_rrc_mui
==
rlc_am_mui
.
rrc_mui
[
mui_num
]){
ra
[
ra_ii
].
crnti_harq_pid
=
harq_pid
;
ra
[
ra_ii
].
state
=
MSGCRNTI_ACK
;
break
;
}
}
}
}
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
),
T_INT
(
sdu_lengths
[
0
]));
LOG_D
(
MAC
,
"[eNB %d][DCCH] CC_id %d Got %d bytes from RLC
\n
"
,
module_idP
,
CC_id
,
sdu_lengths
[
0
]);
LOG_D
(
MAC
,
"[eNB %d][DCCH] CC_id %d frame %d subframe %d UE_id %d/%x Got %d bytes bytes_in_buffer %d from release_num %d
\n
"
,
module_idP
,
CC_id
,
frameP
,
subframeP
,
UE_id
,
rnti
,
sdu_lengths
[
0
],
rlc_status
.
bytes_in_buffer
,
rrc_release_info
.
num_UEs
);
sdu_length_total
=
sdu_lengths
[
0
];
sdu_lcids
[
0
]
=
DCCH
;
UE_list
->
eNB_UE_stats
[
CC_id
][
UE_id
].
...
...
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
View file @
635f994d
...
...
@@ -2277,6 +2277,27 @@ int rrc_mac_remove_ue(module_id_t mod_idP, rnti_t rntiP)
cancel_ra_proc
(
mod_idP
,
pCC_id
,
0
,
rntiP
);
}
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
++
;
}
else
{
continue
;
}
if
(
rrc_release_info
.
RRC_release_ctrl
[
release_num
].
rnti
==
rntiP
){
rrc_release_info
.
RRC_release_ctrl
[
release_num
].
flag
=
0
;
rrc_release_info
.
num_UEs
--
;
release_total
--
;
}
if
(
release_total
>=
rrc_release_info
.
num_UEs
){
break
;
}
}
}
pthread_mutex_unlock
(
&
rrc_release_freelist
);
return
0
;
}
...
...
@@ -3456,7 +3477,7 @@ allocate_CCEs(int module_idP, int CC_idP, frame_t frameP, sub_frame_t subframeP,
for
(
j
=
0
;
j
<=
i
;
j
++
)
{
if
(
dl_config_pdu
[
j
].
pdu_type
==
NFAPI_DL_CONFIG_DCI_DL_PDU_TYPE
)
LOG_
I
(
MAC
,
LOG_
D
(
MAC
,
"DCI %d/%d (%d,%d) : rnti %x dci format %d, aggreg %d nCCE %d / %d (num_pdcch_symbols %d)
\n
"
,
j
,
DL_req
->
number_dci
+
...
...
@@ -3850,6 +3871,7 @@ extract_harq(module_id_t mod_idP, int CC_idP, int UE_id,
else
frame_tx
=
subframeP
<
4
?
frameP
-
1
:
frameP
;
harq_pid
=
frame_subframe2_dl_harq_pid
(
cc
->
tdd_Config
,
frame_tx
,
subframe_tx
);
RA_t
*
ra
=
&
RC
.
mac
[
mod_idP
]
->
common_channels
[
CC_idP
].
ra
[
0
];
if
(
num_ack_nak
==
1
){
if
(
harq_indication_tdd
->
harq_data
[
0
].
bundling
.
value_0
==
1
){
//ack
...
...
@@ -3860,9 +3882,18 @@ extract_harq(module_id_t mod_idP, int CC_idP, int UE_id,
if
(
sched_ctl
->
round
[
CC_idP
][
harq_pid
]
<
8
)
sched_ctl
->
round
[
CC_idP
][
harq_pid
]
++
;
LOG_D
(
MAC
,
"frame %d subframe %d Nacking (%d,%d) harq_pid %d round %d
\n
"
,
frameP
,
subframeP
,
frame_tx
,
subframe_tx
,
harq_pid
,
sched_ctl
->
round
[
CC_idP
][
harq_pid
]);
if
(
sched_ctl
->
round
[
CC_idP
][
harq_pid
]
==
8
){
for
(
uint8_t
ra_i
=
0
;
ra_i
<
NB_RA_PROC_MAX
;
ra_i
++
)
{
if
((
ra
[
ra_i
].
rnti
==
rnti
)
&&
(
ra
[
ra_i
].
state
==
WAITMSG4ACK
)){
//Msg NACK num to MAC ,remove UE
// add UE info to freeList
LOG_I
(
RRC
,
"put UE %x into freeList
\n
"
,
rnti
);
put_UE_in_freelist
(
mod_idP
,
rnti
,
1
);
}
}
}
}
}
RA_t
*
ra
=
&
RC
.
mac
[
mod_idP
]
->
common_channels
[
CC_idP
].
ra
[
0
];
for
(
uint8_t
ra_i
=
0
;
ra_i
<
NB_RA_PROC_MAX
;
ra_i
++
)
{
if
((
ra
[
ra_i
].
rnti
==
rnti
)
&&
(
ra
[
ra_i
].
state
==
MSGCRNTI_ACK
)
&&
(
ra
[
ra_i
].
crnti_harq_pid
==
harq_pid
))
{
LOG_D
(
MAC
,
"CRNTI Reconfiguration: ACK %d rnti %x round %d frame %d subframe %d
\n
"
,
harq_indication_tdd
->
harq_data
[
0
].
bundling
.
value_0
,
rnti
,
sched_ctl
->
round
[
CC_idP
][
harq_pid
],
frameP
,
subframeP
);
...
...
@@ -3936,8 +3967,19 @@ extract_harq(module_id_t mod_idP, int CC_idP, int UE_id,
if
(
pdu
[
0
]
==
1
)
{
// ACK
sched_ctl
->
round
[
CC_idP
][
harq_pid
]
=
8
;
// release HARQ process
sched_ctl
->
tbcnt
[
CC_idP
][
harq_pid
]
=
0
;
}
else
if
(
pdu
[
0
]
==
2
||
pdu
[
0
]
==
4
)
// NAK (treat DTX as NAK)
}
else
if
(
pdu
[
0
]
==
2
||
pdu
[
0
]
==
4
)
{
// NAK (treat DTX as NAK)
sched_ctl
->
round
[
CC_idP
][
harq_pid
]
++
;
// increment round
if
(
sched_ctl
->
round
[
CC_idP
][
harq_pid
]
==
8
){
for
(
uint8_t
ra_i
=
0
;
ra_i
<
NB_RA_PROC_MAX
;
ra_i
++
)
{
if
((
ra
[
ra_i
].
rnti
==
rnti
)
&&
(
ra
[
ra_i
].
state
==
WAITMSG4ACK
)){
//Msg NACK num to MAC ,remove UE
// add UE info to freeList
LOG_I
(
RRC
,
"put UE %x into freeList
\n
"
,
rnti
);
put_UE_in_freelist
(
mod_idP
,
rnti
,
1
);
}
}
}
}
}
else
{
// one or two ACK/NAK bits
AssertFatal
(
num_ack_nak
>
2
,
...
...
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
View file @
635f994d
...
...
@@ -629,8 +629,9 @@ rx_sdu(const module_id_t enb_mod_idP,
ra
[
ii
].
rach_resource_type
#endif
))
==
-
1
)
{
AssertFatal
(
1
==
0
,
"[MAC][eNB] Max user count reached
\n
"
);
LOG_E
(
MAC
,
"[MAC][eNB] Max user count reached
\n
"
);
cancel_ra_proc
(
enb_mod_idP
,
CC_idP
,
frameP
,
current_rnti
);
break
;
// kill RA procedure
}
else
LOG_D
(
MAC
,
...
...
openair2/LAYER2/MAC/extern.h
View file @
635f994d
...
...
@@ -110,5 +110,5 @@ extern uint8_t new_dlsch_ue_select_tbl_in_use;
extern
boolean_t
pre_scd_activeUE
[
NUMBER_OF_UE_MAX
];
extern
eNB_UE_STATS
pre_scd_eNB_UE_stats
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
];
#endif
extern
mac_rlc_am_muilist_t
rlc_am_mui
;
#endif //DEF_H
openair2/LAYER2/MAC/pre_processor.c
View file @
635f994d
...
...
@@ -668,6 +668,10 @@ void dlsch_scheduler_pre_ue_select(
continue
;
}
if
(
mac_eNB_get_rrc_status
(
module_idP
,
rnti
)
<
RRC_CONNECTED
){
continue
;
}
ue_sched_ctl
=
&
UE_list
->
UE_sched_ctrl
[
UE_id
];
#if 0
if (ue_sched_ctl->ul_out_of_sync == 1) {
...
...
@@ -774,6 +778,10 @@ void dlsch_scheduler_pre_ue_select(
if
(
rnti
==
NOT_A_RNTI
)
continue
;
if
(
mac_eNB_get_rrc_status
(
module_idP
,
rnti
)
<
RRC_CONNECTED
){
continue
;
}
ue_sched_ctl
=
&
UE_list
->
UE_sched_ctrl
[
UE_id
];
#if 0
if (ue_sched_ctl->ul_out_of_sync == 1) {
...
...
@@ -887,6 +895,10 @@ void dlsch_scheduler_pre_ue_select(
if
(
rnti
==
NOT_A_RNTI
)
continue
;
if
(
mac_eNB_get_rrc_status
(
module_idP
,
rnti
)
<
RRC_CONNECTED
){
continue
;
}
ue_sched_ctl
=
&
UE_list
->
UE_sched_ctrl
[
UE_id
];
#if 0
if (ue_sched_ctl->ul_out_of_sync == 1) {
...
...
@@ -1159,6 +1171,9 @@ void dlsch_scheduler_pre_processor (module_id_t Mod_id,
dlsch_ue_select
[
CC_id
].
ue_num
=
i
+
1
;
break
;
}
LOG_D
(
MAC
,
"DLSCH UE Select: frame %d subframe %d pre_nb_available_rbs %d(i %d UE_id %d nb_rbs_required %d nb_rbs_required_remaining %d average_rbs_per_user %d (temp_total rbs_count %d ue_num %d) available_prbs %d)
\n
"
,
frameP
,
subframeP
,
ue_sched_ctl
->
pre_nb_available_rbs
[
CC_id
],
i
,
UE_id
,
nb_rbs_required
[
CC_id
][
UE_id
],
nb_rbs_required_remaining
[
CC_id
][
UE_id
],
average_rbs_per_user
[
CC_id
],
temp_total_rbs_count
,
temp_total_ue_count
,
RC
.
mac
[
Mod_id
]
->
eNB_stats
[
CC_id
].
available_prbs
);
#ifdef TM5
// TODO: data channel TM5: to be re-visited
#endif
...
...
openair2/LAYER2/MAC/vars.h
View file @
635f994d
...
...
@@ -155,5 +155,5 @@ uint8_t new_dlsch_ue_select_tbl_in_use;
boolean_t
pre_scd_activeUE
[
NUMBER_OF_UE_MAX
];
eNB_UE_STATS
pre_scd_eNB_UE_stats
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
];
#endif
mac_rlc_am_muilist_t
rlc_am_mui
;
#endif
openair2/LAYER2/RLC/AM_v9.3.0/rlc_am.c
View file @
635f994d
...
...
@@ -588,7 +588,6 @@ 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/AM_v9.3.0/rlc_am_segment.c
View file @
635f994d
...
...
@@ -358,6 +358,8 @@ void rlc_am_segment_10 (
PROTOCOL_RLC_AM_CTXT_ARGS
(
ctxt_pP
,
rlc_pP
),
pdu_remaining_size
);
//msg ("[FRAME %05d][%s][RLC_AM][MOD %u/%u][RB %u][SEGMENT] pdu_mem_p %p pdu_p %p pdu_p->data %p data %p data_sdu_p %p pdu_remaining_size %d\n", rlc_pP->module_id, rlc_pP->rb_id, ctxt_pP->frame, pdu_mem_p, pdu_p, pdu_p->data, data, data_sdu_p,pdu_remaining_size);
rlc_am_mui
.
rrc_mui
[
rlc_am_mui
.
rrc_mui_num
]
=
sdu_mngt_p
->
mui
;
rlc_am_mui
.
rrc_mui_num
++
;
memcpy
(
data
,
data_sdu_p
,
pdu_remaining_size
);
pdu_mngt_p
->
payload_size
+=
pdu_remaining_size
;
...
...
@@ -376,6 +378,9 @@ void rlc_am_segment_10 (
LOG_T
(
RLC
,
PROTOCOL_RLC_AM_CTXT_FMT
"[SEGMENT] Exactly Filling remaining PDU with %d remaining bytes of SDU
\n
"
,
PROTOCOL_RLC_AM_CTXT_ARGS
(
ctxt_pP
,
rlc_pP
),
pdu_remaining_size
);
rlc_am_mui
.
rrc_mui
[
rlc_am_mui
.
rrc_mui_num
]
=
sdu_mngt_p
->
mui
;
rlc_am_mui
.
rrc_mui_num
++
;
memcpy
(
data
,
data_sdu_p
,
pdu_remaining_size
);
pdu_mngt_p
->
payload_size
+=
pdu_remaining_size
;
...
...
@@ -392,6 +397,8 @@ void rlc_am_segment_10 (
continue_fill_pdu_with_sdu
=
0
;
pdu_remaining_size
=
0
;
}
else
if
((
sdu_mngt_p
->
sdu_remaining_size
+
(
li_length_in_bytes
^
3
))
<
pdu_remaining_size
)
{
rlc_am_mui
.
rrc_mui
[
rlc_am_mui
.
rrc_mui_num
]
=
sdu_mngt_p
->
mui
;
rlc_am_mui
.
rrc_mui_num
++
;
if
(
fill_num_li
==
(
RLC_AM_MAX_SDU_IN_PDU
-
1
))
{
LOG_T
(
RLC
,
PROTOCOL_RLC_AM_CTXT_FMT
"[SEGMENT] [SIZE %d] REACHING RLC_AM_MAX_SDU_IN_PDU LIs -> STOP SEGMENTATION FOR THIS PDU SDU
\n
"
,
PROTOCOL_RLC_AM_CTXT_ARGS
(
ctxt_pP
,
rlc_pP
),
...
...
@@ -472,6 +479,9 @@ void rlc_am_segment_10 (
sdu_mngt_p
->
sdu_remaining_size
,
pdu_remaining_size
-
sdu_mngt_p
->
sdu_remaining_size
);
//assert(1!=1);
rlc_am_mui
.
rrc_mui
[
rlc_am_mui
.
rrc_mui_num
]
=
sdu_mngt_p
->
mui
;
rlc_am_mui
.
rrc_mui_num
++
;
memcpy
(
data
,
data_sdu_p
,
sdu_mngt_p
->
sdu_remaining_size
);
pdu_mngt_p
->
payload_size
+=
sdu_mngt_p
->
sdu_remaining_size
;
pdu_remaining_size
=
pdu_remaining_size
-
sdu_mngt_p
->
sdu_remaining_size
;
...
...
openair2/LAYER2/RLC/rlc.h
View file @
635f994d
...
...
@@ -151,7 +151,6 @@ 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 @
635f994d
...
...
@@ -192,6 +192,7 @@ tbs_size_t mac_rlc_data_req(
break
;
case
RLC_MODE_AM
:
rlc_am_mui
.
rrc_mui_num
=
0
;
if
(
!
enb_flagP
)
rlc_am_set_nb_bytes_requested_by_mac
(
&
rlc_union_p
->
rlc
.
am
,
tb_sizeP
);
data_request
=
rlc_am_mac_data_request
(
&
ctxt
,
&
rlc_union_p
->
rlc
.
am
,
enb_flagP
);
ret_tb_size
=
mac_rlc_serialize_tb
(
buffer_pP
,
data_request
.
data
);
...
...
@@ -372,7 +373,6 @@ 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/rrc_eNB.c
View file @
635f994d
...
...
@@ -831,7 +831,8 @@ rrc_eNB_free_UE(const module_id_t enb_mod_idP,const struct rrc_eNB_ue_context_s*
LOG_W
(
RRC
,
"[eNB %d] Removing UE RNTI %x
\n
"
,
enb_mod_idP
,
rnti
);
#if defined(ENABLE_USE_MME)
if
(
ue_context_pP
->
ue_context
.
ul_failure_timer
>=
20000
)
{
if
((
ue_context_pP
->
ue_context
.
ul_failure_timer
>=
20000
)
&&
(
mac_eNB_get_rrc_status
(
enb_mod_idP
,
rnti
)
>=
RRC_CONNECTED
))
{
LOG_I
(
RRC
,
"[eNB %d] S1AP_UE_CONTEXT_RELEASE_REQ RNTI %x
\n
"
,
enb_mod_idP
,
rnti
);
rrc_eNB_send_S1AP_UE_CONTEXT_RELEASE_REQ
(
enb_mod_idP
,
ue_context_pP
,
S1AP_CAUSE_RADIO_NETWORK
,
21
);
// send cause 21: connection with ue lost
/* From 3GPP 36300v10 p129 : 19.2.2.2.2 S1 UE Context Release Request (eNB triggered)
...
...
@@ -2100,6 +2101,8 @@ rrc_eNB_generate_RRCConnectionRelease(
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
++
;
LOG_D
(
RRC
,
"Generate DLSCH Release send: index %d rnti %x mui %d flag %d
\n
"
,
release_num
,
ctxt_pP
->
rnti
,
rrc_eNB_mui
,
rrc_release_info
.
RRC_release_ctrl
[
release_num
].
flag
);
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