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
Michael Black
OpenXG UE
Commits
c24b2ecc
Commit
c24b2ecc
authored
Feb 14, 2016
by
Raymond Knopp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added UL failure indication to PHY/MAC/RRC eNodeB procedures.
parent
439ad83f
Changes
18
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
305 additions
and
153 deletions
+305
-153
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+2
-2
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+10
-2
openair1/SCHED/phy_procedures_lte_ue.c
openair1/SCHED/phy_procedures_lte_ue.c
+3
-3
openair2/LAYER2/MAC/defs.h
openair2/LAYER2/MAC/defs.h
+2
-0
openair2/LAYER2/MAC/eNB_scheduler.c
openair2/LAYER2/MAC/eNB_scheduler.c
+99
-1
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
+33
-14
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
+3
-2
openair2/LAYER2/MAC/main.c
openair2/LAYER2/MAC/main.c
+3
-2
openair2/LAYER2/MAC/proto.h
openair2/LAYER2/MAC/proto.h
+9
-0
openair2/LAYER2/PDCP_v10.1.0/pdcp.c
openair2/LAYER2/PDCP_v10.1.0/pdcp.c
+4
-4
openair2/PHY_INTERFACE/defs.h
openair2/PHY_INTERFACE/defs.h
+2
-1
openair2/RRC/L2_INTERFACE/openair_rrc_L2_interface.c
openair2/RRC/L2_INTERFACE/openair_rrc_L2_interface.c
+4
-4
openair2/RRC/LITE/L2_interface.c
openair2/RRC/LITE/L2_interface.c
+17
-10
openair2/RRC/LITE/proto.h
openair2/RRC/LITE/proto.h
+17
-11
openair2/RRC/LITE/rrc_UE.c
openair2/RRC/LITE/rrc_UE.c
+42
-42
openair2/RRC/LITE/rrc_common.c
openair2/RRC/LITE/rrc_common.c
+1
-1
openair2/RRC/LITE/rrc_eNB.c
openair2/RRC/LITE/rrc_eNB.c
+45
-45
openair2/RRC/LITE/rrc_eNB_S1AP.c
openair2/RRC/LITE/rrc_eNB_S1AP.c
+9
-9
No files found.
cmake_targets/CMakeLists.txt
View file @
c24b2ecc
...
...
@@ -940,8 +940,8 @@ set (ENB_APP_SRC
add_library
(
L2
${
L2_SRC
}
${
MAC_SRC
}
${
ENB_APP_SRC
}
${
OPENAIR2_DIR
}
/RRC/L2_INTERFACE/openair_rrc_L2_interface.c
)
${
ENB_APP_SRC
}
)
#
${OPENAIR2_DIR}/RRC/L2_INTERFACE/openair_rrc_L2_interface.c)
# L3 Libs
##########################
...
...
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
c24b2ecc
...
...
@@ -1342,13 +1342,21 @@ void phy_procedures_eNB_TX(unsigned char sched_subframe,PHY_VARS_eNB *phy_vars_e
// If we've dropped the UE, go back to PRACH mode for this UE
//#if !defined(EXMIMO_IOT)
if
(
phy_vars_eNB
->
eNB_UE_stats
[
i
].
ulsch_consecutive_errors
==
ULSCH_max_consecutive_errors
)
{
LOG_W
(
PHY
,
"[eNB %d, CC %d] frame %d, subframe %d, UE %d: ULSCH consecutive error count reached %u,
removing UE
\n
"
,
LOG_W
(
PHY
,
"[eNB %d, CC %d] frame %d, subframe %d, UE %d: ULSCH consecutive error count reached %u,
triggering UL Failure
\n
"
,
phy_vars_eNB
->
Mod_id
,
phy_vars_eNB
->
CC_id
,
frame
,
subframe
,
i
,
phy_vars_eNB
->
eNB_UE_stats
[
i
].
ulsch_consecutive_errors
);
/*
phy_vars_eNB->eNB_UE_stats[i].mode = PRACH;
remove_ue(phy_vars_eNB->eNB_UE_stats[i].crnti,phy_vars_eNB,abstraction_flag);
*/
phy_vars_eNB
->
eNB_UE_stats
[
i
].
ulsch_consecutive_errors
=
0
;
mac_xface
->
UL_failure_indication
(
phy_vars_eNB
->
Mod_id
,
phy_vars_eNB
->
CC_id
,
frame
,
phy_vars_eNB
->
eNB_UE_stats
[
i
].
crnti
,
subframe
);
}
//#endif
}
...
...
openair1/SCHED/phy_procedures_lte_ue.c
View file @
c24b2ecc
...
...
@@ -2676,7 +2676,7 @@ int phy_procedures_UE_RX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstrac
if
(
ret
==
(
1
+
phy_vars_ue
->
dlsch_ue
[
eNB_id
][
0
]
->
max_turbo_iterations
))
{
phy_vars_ue
->
dlsch_errors
[
eNB_id
]
++
;
//
#ifdef DEBUG_PHY_PROC
#ifdef DEBUG_PHY_PROC
LOG_D
(
PHY
,
"[UE %d][PDSCH %x/%d] Frame %d subframe %d DLSCH in error (rv %d,mcs %d,TBS %d)
\n
"
,
phy_vars_ue
->
Mod_id
,
phy_vars_ue
->
dlsch_ue
[
eNB_id
][
0
]
->
rnti
,
harq_pid
,
frame_rx
,
subframe_prev
,
...
...
@@ -2686,8 +2686,8 @@ int phy_procedures_UE_RX(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t abstrac
// if (abstraction_flag ==0 )
dump_dlsch
(
phy_vars_ue
,
eNB_id
,
subframe_prev
,
harq_pid
);
mac_xface
->
macphy_exit
(
""
);
//
#endif
mac_xface
->
macphy_exit
(
"
DLSCH in error
"
);
#endif
}
else
{
LOG_D
(
PHY
,
"[UE %d][PDSCH %x/%d] Frame %d subframe %d (slot_rx %d): Received DLSCH (rv %d,mcs %d,TBS %d)
\n
"
,
phy_vars_ue
->
Mod_id
,
phy_vars_ue
->
dlsch_ue
[
eNB_id
][
0
]
->
rnti
,
...
...
openair2/LAYER2/MAC/defs.h
View file @
c24b2ecc
...
...
@@ -740,6 +740,8 @@ typedef struct {
int16_t
ta_update
;
int32_t
context_active_timer
;
int32_t
ul_inactivity_timer
;
int32_t
ul_failure_timer
;
int32_t
ra_pdcch_order_sent
;
}
UE_sched_ctrl
;
/*! \brief eNB template for the Random access information */
typedef
struct
{
...
...
openair2/LAYER2/MAC/eNB_scheduler.c
View file @
c24b2ecc
...
...
@@ -90,7 +90,7 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
#endif
#if defined(ENABLE_ITTI)
MessageDef
*
msg_p
;
const
char
*
msg_name
;
const
char
*
msg_name
;
instance_t
instance
;
int
result
;
#endif
...
...
@@ -98,6 +98,9 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
int
CC_id
,
i
,
next_i
;
UE_list_t
*
UE_list
=&
eNB_mac_inst
[
module_idP
].
UE_list
;
rnti_t
rnti
;
int
ra_pdcch_sent
=
0
;
void
*
DLSCH_dci
=
NULL
;
int
size_bits
,
size_bytes
;
LOG_D
(
MAC
,
"[eNB %d] Frame %d, Subframe %d, entering MAC scheduler (UE_list->head %d)
\n
"
,
module_idP
,
frameP
,
subframeP
,
UE_list
->
head
);
...
...
@@ -129,6 +132,101 @@ void eNB_dlsch_ulsch_scheduler(module_id_t module_idP,uint8_t cooperation_flag,
if
(
mac_xface
->
get_eNB_UE_stats
(
module_idP
,
CC_id
,
rnti
)
==
NULL
)
{
mac_remove_ue
(
module_idP
,
i
,
frameP
,
subframeP
);
}
else
{
// check uplink failure
if
(
UE_list
->
UE_sched_ctrl
[
i
].
ul_failure_timer
>
0
)
{
LOG_I
(
MAC
,
"UE %d rnti %x: UL Failure timer %d
\n
"
,
i
,
rnti
,
UE_list
->
UE_sched_ctrl
[
i
].
ul_failure_timer
);
if
(
UE_list
->
UE_sched_ctrl
[
i
].
ra_pdcch_order_sent
==
0
)
{
if
(
ra_pdcch_sent
==
0
)
{
UE_list
->
UE_sched_ctrl
[
i
].
ra_pdcch_order_sent
=
1
;
ra_pdcch_sent
=
1
;
// add a format 1A dci for this UE to request an RA procedure (only one UE per subframe)
LOG_I
(
MAC
,
"UE %d rnti %x: sending PDCCH order for RAPROC
\n
"
,
i
,
rnti
,
UE_list
->
UE_sched_ctrl
[
i
].
ul_failure_timer
);
DLSCH_dci
=
(
void
*
)
UE_list
->
UE_template
[
CC_id
][
i
].
DLSCH_DCI
[
0
];
*
(
uint32_t
*
)
DLSCH_dci
=
0
;
if
(
PHY_vars_eNB_g
[
module_idP
][
CC_id
]
->
lte_frame_parms
.
frame_type
==
TDD
)
{
switch
(
PHY_vars_eNB_g
[
module_idP
][
CC_id
]
->
lte_frame_parms
.
N_RB_DL
)
{
case
6
:
((
DCI1A_1_5MHz_TDD_1_6_t
*
)
DLSCH_dci
)
->
type
=
1
;
((
DCI1A_1_5MHz_TDD_1_6_t
*
)
DLSCH_dci
)
->
rballoc
=
31
;
size_bytes
=
sizeof
(
DCI1A_1_5MHz_TDD_1_6_t
);
size_bits
=
sizeof_DCI1A_1_5MHz_TDD_1_6_t
;
break
;
case
25
:
((
DCI1A_5MHz_TDD_1_6_t
*
)
DLSCH_dci
)
->
type
=
1
;
((
DCI1A_5MHz_TDD_1_6_t
*
)
DLSCH_dci
)
->
rballoc
=
511
;
size_bytes
=
sizeof
(
DCI1A_5MHz_TDD_1_6_t
);
size_bits
=
sizeof_DCI1A_5MHz_TDD_1_6_t
;
break
;
case
50
:
((
DCI1A_10MHz_TDD_1_6_t
*
)
DLSCH_dci
)
->
type
=
1
;
((
DCI1A_10MHz_TDD_1_6_t
*
)
DLSCH_dci
)
->
rballoc
=
2047
;
size_bytes
=
sizeof
(
DCI1A_10MHz_TDD_1_6_t
);
size_bits
=
sizeof_DCI1A_10MHz_TDD_1_6_t
;
break
;
case
100
:
((
DCI1A_20MHz_TDD_1_6_t
*
)
DLSCH_dci
)
->
type
=
1
;
((
DCI1A_20MHz_TDD_1_6_t
*
)
DLSCH_dci
)
->
rballoc
=
8191
;
size_bytes
=
sizeof
(
DCI1A_20MHz_TDD_1_6_t
);
size_bits
=
sizeof_DCI1A_20MHz_TDD_1_6_t
;
break
;
}
}
else
{
// FDD
switch
(
PHY_vars_eNB_g
[
module_idP
][
CC_id
]
->
lte_frame_parms
.
N_RB_DL
)
{
case
6
:
((
DCI1A_1_5MHz_FDD_t
*
)
DLSCH_dci
)
->
type
=
1
;
((
DCI1A_1_5MHz_FDD_t
*
)
DLSCH_dci
)
->
rballoc
=
31
;
size_bytes
=
sizeof
(
DCI1A_1_5MHz_FDD_t
);
size_bits
=
sizeof_DCI1A_1_5MHz_FDD_t
;
break
;
case
25
:
((
DCI1A_5MHz_FDD_t
*
)
DLSCH_dci
)
->
type
=
1
;
((
DCI1A_5MHz_FDD_t
*
)
DLSCH_dci
)
->
rballoc
=
511
;
size_bytes
=
sizeof
(
DCI1A_5MHz_FDD_t
);
size_bits
=
sizeof_DCI1A_5MHz_FDD_t
;
break
;
case
50
:
((
DCI1A_10MHz_FDD_t
*
)
DLSCH_dci
)
->
type
=
1
;
((
DCI1A_10MHz_FDD_t
*
)
DLSCH_dci
)
->
rballoc
=
2047
;
size_bytes
=
sizeof
(
DCI1A_10MHz_FDD_t
);
size_bits
=
sizeof_DCI1A_10MHz_FDD_t
;
break
;
case
100
:
((
DCI1A_20MHz_FDD_t
*
)
DLSCH_dci
)
->
type
=
1
;
((
DCI1A_20MHz_FDD_t
*
)
DLSCH_dci
)
->
rballoc
=
8191
;
size_bytes
=
sizeof
(
DCI1A_20MHz_FDD_t
);
size_bits
=
sizeof_DCI1A_20MHz_FDD_t
;
break
;
}
}
add_ue_spec_dci
(
DCI_pdu
[
CC_id
],
DLSCH_dci
,
rnti
,
size_bytes
,
process_ue_cqi
(
module_idP
,
i
),
//aggregation,
size_bits
,
format1A
,
0
);
}
else
{
// ra_pdcch_sent==1
if
((
UE_list
->
UE_sched_ctrl
[
i
].
ul_failure_timer
%
40
)
==
0
)
UE_list
->
UE_sched_ctrl
[
i
].
ra_pdcch_order_sent
=
0
;
// resend every 4 frames
}
}
UE_list
->
UE_sched_ctrl
[
i
].
ul_failure_timer
++
;
// check threshold
if
(
UE_list
->
UE_sched_ctrl
[
i
].
ul_failure_timer
>
200
)
{
// inform RRC of failure and clear timer
LOG_I
(
MAC
,
"UE %d rnti %x: UL Failure Triggering RRC
\n
"
,
i
,
rnti
,
UE_list
->
UE_sched_ctrl
[
i
].
ul_failure_timer
);
mac_eNB_rrc_ul_failure
(
module_idP
,
CC_id
,
frameP
,
subframeP
,
rnti
);
UE_list
->
UE_sched_ctrl
[
i
].
ul_failure_timer
=
0
;
}
}
// ul_failure_timer>0
}
i
=
next_i
;
}
...
...
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
View file @
c24b2ecc
...
...
@@ -530,22 +530,9 @@ void swap_UEs(UE_list_t *listP,int nodeiP, int nodejP, int ul_flag)
dump_ue_list
(
listP
,
ul_flag
);
}
void
SR_indication
(
module_id_t
mod_idP
,
int
cc_idP
,
frame_t
frameP
,
rnti_t
rntiP
,
sub_frame_t
subframeP
)
{
int
UE_id
=
find_UE_id
(
mod_idP
,
rntiP
);
UE_list_t
*
UE_list
=
&
eNB_mac_inst
[
mod_idP
].
UE_list
;
if
(
UE_id
!=
-
1
)
{
LOG_D
(
MAC
,
"[eNB %d][SR %x] Frame %d subframeP %d Signaling SR for UE %d on CC_id %d
\n
"
,
mod_idP
,
rntiP
,
frameP
,
subframeP
,
UE_id
,
cc_idP
);
UE_list
->
UE_template
[
cc_idP
][
UE_id
].
ul_SR
=
1
;
UE_list
->
UE_template
[
cc_idP
][
UE_id
].
ul_active
=
TRUE
;
}
else
{
// AssertFatal(0, "find_UE_id(%u,rnti %d) not found", enb_mod_idP, rntiP);
// AssertError(0, 0, "Frame %d: find_UE_id(%u,rnti %d) not found\n", frameP, enb_mod_idP, rntiP);
LOG_D
(
MAC
,
"[eNB %d][SR %x] Frame %d subframeP %d Signaling SR for UE %d (unknown UEid) on CC_id %d
\n
"
,
mod_idP
,
rntiP
,
frameP
,
subframeP
,
UE_id
,
cc_idP
);
}
}
...
...
@@ -1108,3 +1095,35 @@ boolean_t CCE_allocation_infeasible(int module_idP,
return
(
res
);
}
void
SR_indication
(
module_id_t
mod_idP
,
int
cc_idP
,
frame_t
frameP
,
rnti_t
rntiP
,
sub_frame_t
subframeP
)
{
int
UE_id
=
find_UE_id
(
mod_idP
,
rntiP
);
UE_list_t
*
UE_list
=
&
eNB_mac_inst
[
mod_idP
].
UE_list
;
if
(
UE_id
!=
-
1
)
{
LOG_D
(
MAC
,
"[eNB %d][SR %x] Frame %d subframeP %d Signaling SR for UE %d on CC_id %d
\n
"
,
mod_idP
,
rntiP
,
frameP
,
subframeP
,
UE_id
,
cc_idP
);
UE_list
->
UE_template
[
cc_idP
][
UE_id
].
ul_SR
=
1
;
UE_list
->
UE_template
[
cc_idP
][
UE_id
].
ul_active
=
TRUE
;
}
else
{
// AssertFatal(0, "find_UE_id(%u,rnti %d) not found", enb_mod_idP, rntiP);
// AssertError(0, 0, "Frame %d: find_UE_id(%u,rnti %d) not found\n", frameP, enb_mod_idP, rntiP);
LOG_D
(
MAC
,
"[eNB %d][SR %x] Frame %d subframeP %d Signaling SR for UE %d (unknown UEid) on CC_id %d
\n
"
,
mod_idP
,
rntiP
,
frameP
,
subframeP
,
UE_id
,
cc_idP
);
}
}
void
UL_failure_indication
(
module_id_t
mod_idP
,
int
cc_idP
,
frame_t
frameP
,
rnti_t
rntiP
,
sub_frame_t
subframeP
)
{
int
UE_id
=
find_UE_id
(
mod_idP
,
rntiP
);
UE_list_t
*
UE_list
=
&
eNB_mac_inst
[
mod_idP
].
UE_list
;
if
(
UE_id
!=
-
1
)
{
LOG_I
(
MAC
,
"[eNB %d][SR %x] Frame %d subframeP %d Signaling UL Failure for UE %d on CC_id %d
\n
"
,
mod_idP
,
rntiP
,
frameP
,
subframeP
,
UE_id
,
cc_idP
);
UE_list
->
UE_sched_ctrl
[
UE_id
].
ul_failure_timer
=
1
;
}
else
{
// AssertFatal(0, "find_UE_id(%u,rnti %d) not found", enb_mod_idP, rntiP);
// AssertError(0, 0, "Frame %d: find_UE_id(%u,rnti %d) not found\n", frameP, enb_mod_idP, rntiP);
LOG_W
(
MAC
,
"[eNB %d][SR %x] Frame %d subframeP %d Signaling UL Failure for UE %d (unknown UEid) on CC_id %d
\n
"
,
mod_idP
,
rntiP
,
frameP
,
subframeP
,
UE_id
,
cc_idP
);
}
}
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
View file @
c24b2ecc
...
...
@@ -106,9 +106,10 @@ void rx_sdu(
LOG_D
(
MAC
,
"[eNB %d] CC_id %d Received ULSCH sdu from PHY (rnti %x, UE_id %d), parsing header
\n
"
,
enb_mod_idP
,
CC_idP
,
rntiP
,
UE_id
);
if
(
UE_id
!=-
1
)
if
(
UE_id
!=-
1
)
{
UE_list
->
UE_sched_ctrl
[
UE_id
].
ul_inactivity_timer
=
0
;
UE_list
->
UE_sched_ctrl
[
UE_id
].
ul_failure_timer
=
0
;
}
payload_ptr
=
parse_ulsch_header
(
sduP
,
&
num_ce
,
&
num_sdu
,
rx_ces
,
rx_lcids
,
rx_lengths
,
sdu_lenP
);
eNB
->
eNB_stats
[
CC_idP
].
ulsch_bytes_rx
=
sdu_lenP
;
...
...
openair2/LAYER2/MAC/main.c
View file @
c24b2ecc
...
...
@@ -84,7 +84,7 @@ void dl_phy_sync_success(module_id_t module_idP,
}
else
#endif
{
ma
c_in_sync_ind
(
module_idP
,
frameP
,
eNB_index
);
rr
c_in_sync_ind
(
module_idP
,
frameP
,
eNB_index
);
}
}
...
...
@@ -382,7 +382,7 @@ int mac_init_global_param(void)
// mac_xface->macphy_data_ind=macphy_data_ind;
mac_xface
->
mrbch_phy_sync_failure
=
mrbch_phy_sync_failure
;
mac_xface
->
dl_phy_sync_success
=
dl_phy_sync_success
;
mac_xface
->
out_of_sync_ind
=
ma
c_out_of_sync_ind
;
mac_xface
->
out_of_sync_ind
=
rr
c_out_of_sync_ind
;
// Mac_rlc_xface->macphy_exit= mac_xface->macphy_exit;
// Mac_rlc_xface->frame = 0;
...
...
@@ -462,6 +462,7 @@ int l2_init(LTE_DL_FRAME_PARMS *frame_parms,int eMBMS_active, char *uecap_xer,ui
mac_xface
->
initiate_ra_proc
=
initiate_ra_proc
;
mac_xface
->
cancel_ra_proc
=
cancel_ra_proc
;
mac_xface
->
SR_indication
=
SR_indication
;
mac_xface
->
UL_failure_indication
=
UL_failure_indication
;
mac_xface
->
rx_sdu
=
rx_sdu
;
mac_xface
->
get_dlsch_sdu
=
get_dlsch_sdu
;
mac_xface
->
get_eNB_UE_stats
=
get_eNB_UE_stats
;
...
...
openair2/LAYER2/MAC/proto.h
View file @
c24b2ecc
...
...
@@ -269,6 +269,15 @@ void rx_sdu(const module_id_t module_idP, const int CC_id,const frame_t frameP,
*/
void
SR_indication
(
module_id_t
module_idP
,
int
CC_id
,
frame_t
frameP
,
rnti_t
rnti
,
sub_frame_t
subframe
);
/* \brief Function to indicate a UL failure was detected by eNB PHY.
@param Mod_id Instance ID of eNB
@param CC_id Component carrier
@param frameP Frame index
@param rnti RNTI of UE transmitting the SR
@param subframe Index of subframe where SR was received
*/
void
UL_failure_indication
(
module_id_t
Mod_id
,
int
CC_id
,
frame_t
frameP
,
rnti_t
rnti
,
sub_frame_t
subframe
);
uint8_t
*
get_dlsch_sdu
(
module_id_t
module_idP
,
int
CC_id
,
frame_t
frameP
,
rnti_t
rnti
,
uint8_t
TBindex
);
/* \brief Function to retrieve MCH transport block and MCS used for MCH in this MBSFN subframe. Returns null if no MCH is to be transmitted
...
...
openair2/LAYER2/PDCP_v10.1.0/pdcp.c
View file @
c24b2ecc
...
...
@@ -636,10 +636,10 @@ pdcp_data_ind(
PROTOCOL_PDCP_CTXT_FMT
" DATA-IND len %u"
,
PROTOCOL_PDCP_CTXT_ARGS
(
ctxt_pP
,
pdcp_p
),
sdu_buffer_sizeP
-
pdcp_header_len
-
pdcp_tailer_len
);
pdcp_
rrc_data_ind
(
ctxt_pP
,
rb_id
,
sdu_buffer_sizeP
-
pdcp_header_len
-
pdcp_tailer_len
,
(
uint8_t
*
)
&
sdu_buffer_pP
->
data
[
pdcp_header_len
]);
rrc_data_ind
(
ctxt_pP
,
rb_id
,
sdu_buffer_sizeP
-
pdcp_header_len
-
pdcp_tailer_len
,
(
uint8_t
*
)
&
sdu_buffer_pP
->
data
[
pdcp_header_len
]);
free_mem_block
(
sdu_buffer_pP
);
// free_mem_block(new_sdu);
...
...
openair2/PHY_INTERFACE/defs.h
View file @
c24b2ecc
...
...
@@ -94,7 +94,8 @@ typedef struct {
/// Indicate Scheduling Request from UE
void
(
*
SR_indication
)(
module_id_t
Mod_id
,
int
CC_id
,
frame_t
frameP
,
rnti_t
rnti
,
sub_frame_t
subframe
);
/// Indicate UL Failure to eNodeB MAC
void
(
*
UL_failure_indication
)(
module_id_t
Mod_id
,
int
CC_id
,
frame_t
frameP
,
rnti_t
rnti
,
sub_frame_t
subframe
);
/// Configure Common PHY parameters from SIB1
void
(
*
phy_config_sib1_eNB
)(
module_id_t
Mod_id
,
int
CC_id
,
TDD_Config_t
*
tdd_config
,
...
...
openair2/RRC/L2_INTERFACE/openair_rrc_L2_interface.c
View file @
c24b2ecc
...
...
@@ -155,10 +155,10 @@ rlcrrc_data_ind(
)
//------------------------------------------------------------------------------
{
rrc_
lite_
data_ind
(
ctxt_pP
,
srb_idP
,
sdu_lenP
,
buffer_pP
);
rrc_data_ind
(
ctxt_pP
,
srb_idP
,
sdu_lenP
,
buffer_pP
);
}
//------------------------------------------------------------------------------
...
...
openair2/RRC/LITE/L2_interface.c
View file @
c24b2ecc
...
...
@@ -67,7 +67,7 @@ mui_t mui=0;
//------------------------------------------------------------------------------
int8_t
mac_rrc_
lite_
data_req
(
mac_rrc_data_req
(
const
module_id_t
Mod_idP
,
const
int
CC_id
,
const
frame_t
frameP
,
...
...
@@ -98,7 +98,7 @@ mac_rrc_lite_data_req(
// All even frames transmit SIB in SF 5
if
(
eNB_rrc_inst
[
Mod_idP
].
carrier
[
CC_id
].
sizeof_SIB1
==
255
)
{
LOG_E
(
RRC
,
"[eNB %d] MAC Request for SIB1 and SIB1 not initialized
\n
"
,
Mod_idP
);
mac_xface
->
macphy_exit
(
"mac_rrc_
lite_
data_req: MAC Request for SIB1 and SIB1 not initialized"
);
mac_xface
->
macphy_exit
(
"mac_rrc_data_req: MAC Request for SIB1 and SIB1 not initialized"
);
}
if
((
frameP
%
2
)
==
0
)
{
...
...
@@ -337,7 +337,7 @@ mac_rrc_lite_data_req(
//------------------------------------------------------------------------------
int8_t
mac_rrc_
lite_
data_ind
(
mac_rrc_data_ind
(
const
module_id_t
module_idP
,
const
int
CC_id
,
const
frame_t
frameP
,
...
...
@@ -505,14 +505,14 @@ mac_rrc_lite_data_ind(
//-------------------------------------------------------------------------------------------//
// this function is Not USED anymore
void
mac_
lite_
sync_ind
(
module_id_t
Mod_idP
,
uint8_t
Status
)
void
mac_sync_ind
(
module_id_t
Mod_idP
,
uint8_t
Status
)
{
//-------------------------------------------------------------------------------------------//
}
//------------------------------------------------------------------------------
uint8_t
rrc_
lite_
data_req
(
rrc_data_req
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
const
rb_id_t
rb_idP
,
const
mui_t
muiP
,
...
...
@@ -582,7 +582,7 @@ rrc_lite_data_req(
//------------------------------------------------------------------------------
void
rrc_
lite_
data_ind
(
rrc_data_ind
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
const
rb_id_t
Srb_id
,
const
sdu_size_t
sdu_sizeP
,
...
...
@@ -646,7 +646,7 @@ rrc_lite_data_ind(
}
//-------------------------------------------------------------------------------------------//
void
rrc_
lite_
in_sync_ind
(
module_id_t
Mod_idP
,
frame_t
frameP
,
uint16_t
eNB_index
)
void
rrc_in_sync_ind
(
module_id_t
Mod_idP
,
frame_t
frameP
,
uint16_t
eNB_index
)
{
//-------------------------------------------------------------------------------------------//
#if defined(ENABLE_ITTI)
...
...
@@ -670,7 +670,7 @@ void rrc_lite_in_sync_ind(module_id_t Mod_idP, frame_t frameP, uint16_t eNB_inde
}
//-------------------------------------------------------------------------------------------//
void
rrc_
lite_
out_of_sync_ind
(
module_id_t
Mod_idP
,
frame_t
frameP
,
uint16_t
eNB_index
)
void
rrc_out_of_sync_ind
(
module_id_t
Mod_idP
,
frame_t
frameP
,
uint16_t
eNB_index
)
{
//-------------------------------------------------------------------------------------------//
LOG_I
(
RRC
,
"[UE %d] Frame %d: OUT OF SYNC FROM eNB %d (T310 active %d : T310 %d, N310 %d, N311 %d)
\n
"
,
...
...
@@ -697,7 +697,7 @@ void rrc_lite_out_of_sync_ind(module_id_t Mod_idP, frame_t frameP, uint16_t eNB_
//------------------------------------------------------------------------------
int
mac_eNB_get_rrc_
lite_
status
(
mac_eNB_get_rrc_status
(
const
module_id_t
Mod_idP
,
const
rnti_t
rntiP
)
...
...
@@ -715,10 +715,17 @@ mac_eNB_get_rrc_lite_status(
}
}
void
mac_eNB_rrc_ul_failure
(
const
module_id_t
Mod_instP
,
const
int
CC_id
,
const
frame_t
frameP
,
const
sub_frame_t
subframeP
,
const
rnti_t
rnti
)
{
return
;
}
//------------------------------------------------------------------------------
int
mac_UE_get_rrc_
lite_
status
(
mac_UE_get_rrc_status
(
const
module_id_t
Mod_idP
,
const
uint8_t
indexP
)
...
...
openair2/RRC/LITE/proto.h
View file @
c24b2ecc
...
...
@@ -44,15 +44,15 @@ int L3_xface_init(void);
void
openair_rrc_top_init
(
int
eMBMS_active
,
char
*
uecap_xer
,
uint8_t
cba_group_active
,
uint8_t
HO_enabled
);
#if defined(ENABLE_ITTI)
char
openair_rrc_
lite_
eNB_configuration
(
openair_rrc_eNB_configuration
(
const
module_id_t
enb_mod_idP
,
RrcConfigurationReq
*
configuration
);
#endif
char
openair_rrc_
lite_
eNB_init
(
char
openair_rrc_eNB_init
(
const
module_id_t
module_idP
);
char
openair_rrc_
lite_
ue_init
(
char
openair_rrc_ue_init
(
const
module_id_t
module_idP
,
const
uint8_t
CH_IDX
);
void
rrc_config_buffer
(
SRB_INFO
*
srb_info
,
uint8_t
Lchan_type
,
uint8_t
Role
);
...
...
@@ -281,7 +281,7 @@ rrc_eNB_generate_RRCConnectionReconfiguration_handover(
//L2_interface.c
int8_t
mac_rrc_
lite_
data_req
(
mac_rrc_data_req
(
const
module_id_t
Mod_idP
,
const
int
CC_id
,
const
frame_t
frameP
,
...
...
@@ -294,7 +294,7 @@ mac_rrc_lite_data_req(
);
int8_t
mac_rrc_
lite_
data_ind
(
mac_rrc_data_ind
(
const
module_id_t
module_idP
,
const
int
CC_id
,
const
frame_t
frameP
,
...
...
@@ -310,8 +310,14 @@ mac_rrc_lite_data_ind(
void
mac_sync_ind
(
module_id_t
Mod_instP
,
uint8_t
status
);
void
mac_eNB_rrc_ul_failure
(
const
module_id_t
Mod_instP
,
const
int
CC_id
,
const
frame_t
frameP
,
const
sub_frame_t
subframeP
,
const
rnti_t
rnti
);
uint8_t
rrc_
lite_
data_req
(
rrc_data_req
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
const
rb_id_t
rb_idP
,
const
mui_t
muiP
,
...
...
@@ -322,16 +328,16 @@ rrc_lite_data_req(
);
void
rrc_
lite_
data_ind
(
rrc_data_ind
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
const
rb_id_t
Srb_id
,
const
sdu_size_t
sdu_sizeP
,
const
uint8_t
*
const
buffer_pP
);
void
rrc_
lite_
in_sync_ind
(
module_id_t
module_idP
,
frame_t
frameP
,
uint16_t
eNB_index
);
void
rrc_in_sync_ind
(
module_id_t
module_idP
,
frame_t
frameP
,
uint16_t
eNB_index
);
void
rrc_
lite_
out_of_sync_ind
(
module_id_t
module_idP
,
frame_t
frameP
,
unsigned
short
eNB_index
);
void
rrc_out_of_sync_ind
(
module_id_t
module_idP
,
frame_t
frameP
,
unsigned
short
eNB_index
);
int
decode_MCCH_Message
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
const
uint8_t
eNB_index
,
const
uint8_t
*
const
Sdu
,
const
uint8_t
Sdu_len
,
const
uint8_t
mbsfn_sync_area
);
...
...
@@ -356,13 +362,13 @@ ue_measurement_report_triggering(
);
int
mac_eNB_get_rrc_
lite_
status
(
mac_eNB_get_rrc_status
(
const
module_id_t
Mod_idP
,
const
rnti_t
rntiP
);
int
mac_UE_get_rrc_
lite_
status
(
mac_UE_get_rrc_status
(
const
module_id_t
Mod_idP
,
const
uint8_t
indexP
);
...
...
openair2/RRC/LITE/rrc_UE.c
View file @
c24b2ecc
...
...
@@ -276,7 +276,7 @@ static void init_MCCH_UE(module_id_t ue_mod_idP, uint8_t eNB_index)
#endif
//-----------------------------------------------------------------------------
static
void
openair_rrc_
lite_
ue_init_security
(
const
protocol_ctxt_t
*
const
ctxt_pP
)
static
void
openair_rrc_ue_init_security
(
const
protocol_ctxt_t
*
const
ctxt_pP
)
{
#if defined(ENABLE_SECURITY)
// uint8_t *kRRCenc;
...
...
@@ -297,7 +297,7 @@ static void openair_rrc_lite_ue_init_security( const protocol_ctxt_t* const ctxt
}
//-----------------------------------------------------------------------------
char
openair_rrc_
lite_
ue_init
(
const
module_id_t
ue_mod_idP
,
const
unsigned
char
eNB_index
)
char
openair_rrc_ue_init
(
const
module_id_t
ue_mod_idP
,
const
unsigned
char
eNB_index
)
{
protocol_ctxt_t
ctxt
;
PROTOCOL_CTXT_SET_BY_MODULE_ID
(
&
ctxt
,
ue_mod_idP
,
ENB_FLAG_NO
,
NOT_A_RNTI
,
0
,
0
,
eNB_index
);
...
...
@@ -324,7 +324,7 @@ char openair_rrc_lite_ue_init( const module_id_t ue_mod_idP, const unsigned char
UE_rrc_inst
[
ctxt
.
module_id
].
integrity_algorithm
=
SecurityAlgorithmConfig__integrityProtAlgorithm_reserved
;
#endif
openair_rrc_
lite_
ue_init_security
(
&
ctxt
);
openair_rrc_ue_init_security
(
&
ctxt
);
init_SI_UE
(
&
ctxt
,
eNB_index
);
LOG_D
(
RRC
,
PROTOCOL_RRC_CTXT_FMT
" INIT: phy_sync_2_ch_ind
\n
"
,
PROTOCOL_RRC_CTXT_ARGS
(
&
ctxt
));
...
...
@@ -445,14 +445,14 @@ static void rrc_ue_generate_RRCConnectionSetupComplete( const protocol_ctxt_t* c
LOG_D
(
RLC
,
"[FRAME %05d][RRC_UE][MOD %02d][][--- PDCP_DATA_REQ/%d Bytes (RRCConnectionSetupComplete to eNB %d MUI %d) --->][PDCP][MOD %02d][RB %02d]
\n
"
,
ctxt_pP
->
frame
,
ctxt_pP
->
module_id
+
NB_eNB_INST
,
size
,
eNB_index
,
rrc_mui
,
ctxt_pP
->
module_id
+
NB_eNB_INST
,
DCCH
);
pdcp_
rrc_data_req
(
ctxt_pP
,
DCCH
,
rrc_mui
++
,
SDU_CONFIRM_NO
,
size
,
buffer
,
PDCP_TRANSMISSION_MODE_CONTROL
);
rrc_data_req
(
ctxt_pP
,
DCCH
,
rrc_mui
++
,
SDU_CONFIRM_NO
,
size
,
buffer
,
PDCP_TRANSMISSION_MODE_CONTROL
);
}
//-----------------------------------------------------------------------------
...
...
@@ -472,14 +472,14 @@ static void rrc_ue_generate_RRCConnectionReconfigurationComplete( const protocol
rrc_mui
,
UE_MODULE_ID_TO_INSTANCE
(
ctxt_pP
->
module_id
),
DCCH
);
pdcp_
rrc_data_req
(
ctxt_pP
,
DCCH
,
rrc_mui
++
,
SDU_CONFIRM_NO
,
size
,
buffer
,
PDCP_TRANSMISSION_MODE_CONTROL
);
rrc_data_req
(
ctxt_pP
,
DCCH
,
rrc_mui
++
,
SDU_CONFIRM_NO
,
size
,
buffer
,
PDCP_TRANSMISSION_MODE_CONTROL
);
}
...
...
@@ -1430,14 +1430,14 @@ rrc_ue_process_securityModeCommand(
}
LOG_T
(
RRC
,
"
\n
"
);
pdcp_
rrc_data_req
(
ctxt_pP
,
DCCH
,
rrc_mui
++
,
SDU_CONFIRM_NO
,
(
enc_rval
.
encoded
+
7
)
/
8
,
buffer
,
PDCP_TRANSMISSION_MODE_CONTROL
);
rrc_data_req
(
ctxt_pP
,
DCCH
,
rrc_mui
++
,
SDU_CONFIRM_NO
,
(
enc_rval
.
encoded
+
7
)
/
8
,
buffer
,
PDCP_TRANSMISSION_MODE_CONTROL
);
}
}
}
...
...
@@ -1535,14 +1535,14 @@ rrc_ue_process_ueCapabilityEnquiry(
}
LOG_T
(
RRC
,
"
\n
"
);
pdcp_
rrc_data_req
(
ctxt_pP
,
DCCH
,
rrc_mui
++
,
SDU_CONFIRM_NO
,
(
enc_rval
.
encoded
+
7
)
/
8
,
buffer
,
PDCP_TRANSMISSION_MODE_CONTROL
);
rrc_data_req
(
ctxt_pP
,
DCCH
,
rrc_mui
++
,
SDU_CONFIRM_NO
,
(
enc_rval
.
encoded
+
7
)
/
8
,
buffer
,
PDCP_TRANSMISSION_MODE_CONTROL
);
}
}
}
...
...
@@ -4160,15 +4160,15 @@ void *rrc_ue_task( void *args_p )
/* Transfer data to PDCP */
PROTOCOL_CTXT_SET_BY_MODULE_ID
(
&
ctxt
,
ue_mod_id
,
ENB_FLAG_NO
,
UE_rrc_inst
[
ue_mod_id
].
Info
[
0
].
rnti
,
0
,
0
,
0
);
pdcp_
rrc_data_req
(
&
ctxt
,
DCCH
,
rrc_mui
++
,
SDU_CONFIRM_NO
,
length
,
buffer
,
PDCP_TRANSMISSION_MODE_CONTROL
);
rrc_data_req
(
&
ctxt
,
DCCH
,
rrc_mui
++
,
SDU_CONFIRM_NO
,
length
,
buffer
,
PDCP_TRANSMISSION_MODE_CONTROL
);
break
;
}
# endif
# if ENABLE_RAL
...
...
openair2/RRC/LITE/rrc_common.c
View file @
c24b2ecc
...
...
@@ -132,7 +132,7 @@ rrc_init_global_param(
return -1;
}
*/
rrc_rlc_register_rrc
(
r
lcr
rc_data_ind
,
NULL
);
//register with rlc
rrc_rlc_register_rrc
(
rrc_data_ind
,
NULL
);
//register with rlc
DCCH_LCHAN_DESC
.
transport_block_size
=
4
;
DCCH_LCHAN_DESC
.
max_transport_blocks
=
16
;
...
...
openair2/RRC/LITE/rrc_eNB.c
View file @
c24b2ecc
...
...
@@ -920,14 +920,14 @@ rrc_eNB_generate_SecurityModeCommand(
rrc_eNB_mui
,
size
);
pdcp_
rrc_data_req
(
ctxt_pP
,
DCCH
,
rrc_eNB_mui
++
,
SDU_CONFIRM_NO
,
size
,
buffer
,
PDCP_TRANSMISSION_MODE_CONTROL
);
rrc_data_req
(
ctxt_pP
,
DCCH
,
rrc_eNB_mui
++
,
SDU_CONFIRM_NO
,
size
,
buffer
,
PDCP_TRANSMISSION_MODE_CONTROL
);
}
...
...
@@ -971,14 +971,14 @@ rrc_eNB_generate_UECapabilityEnquiry(
rrc_eNB_mui
,
size
);
pdcp_
rrc_data_req
(
ctxt_pP
,
DCCH
,
rrc_eNB_mui
++
,
SDU_CONFIRM_NO
,
size
,
buffer
,
PDCP_TRANSMISSION_MODE_CONTROL
);
rrc_data_req
(
ctxt_pP
,
DCCH
,
rrc_eNB_mui
++
,
SDU_CONFIRM_NO
,
size
,
buffer
,
PDCP_TRANSMISSION_MODE_CONTROL
);
}
...
...
@@ -1107,14 +1107,14 @@ rrc_eNB_generate_RRCConnectionRelease(
rrc_eNB_mui
,
size
);
pdcp_
rrc_data_req
(
ctxt_pP
,
DCCH
,
rrc_eNB_mui
++
,
SDU_CONFIRM_NO
,
size
,
buffer
,
PDCP_TRANSMISSION_MODE_CONTROL
);
rrc_data_req
(
ctxt_pP
,
DCCH
,
rrc_eNB_mui
++
,
SDU_CONFIRM_NO
,
size
,
buffer
,
PDCP_TRANSMISSION_MODE_CONTROL
);
}
//-----------------------------------------------------------------------------
...
...
@@ -1728,14 +1728,14 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(
rrc_eNB_mui
,
size
);
pdcp_
rrc_data_req
(
ctxt_pP
,
DCCH
,
rrc_eNB_mui
++
,
SDU_CONFIRM_NO
,
size
,
buffer
,
PDCP_TRANSMISSION_MODE_CONTROL
);
rrc_data_req
(
ctxt_pP
,
DCCH
,
rrc_eNB_mui
++
,
SDU_CONFIRM_NO
,
size
,
buffer
,
PDCP_TRANSMISSION_MODE_CONTROL
);
}
...
...
@@ -1805,14 +1805,14 @@ rrc_eNB_generate_RRCConnectionReconfiguration_SCell(
rrc_eNB_mui
,
size
);
pdcp_
rrc_data_req
(
ctxt_pP
,
DCCH
,
rrc_eNB_mui
++
,
SDU_CONFIRM_NO
,
size
,
buffer
,
PDCP_TRANSMISSION_MODE_CONTROL
);
rrc_data_req
(
ctxt_pP
,
DCCH
,
rrc_eNB_mui
++
,
SDU_CONFIRM_NO
,
size
,
buffer
,
PDCP_TRANSMISSION_MODE_CONTROL
);
return
(
0
);
}
...
...
@@ -3369,7 +3369,7 @@ rrc_eNB_generate_RRCConnectionSetup(
#if defined(ENABLE_ITTI)
char
//-----------------------------------------------------------------------------
openair_rrc_
lite_
eNB_init
(
openair_rrc_eNB_init
(
const
module_id_t
enb_mod_idP
)
//-----------------------------------------------------------------------------
...
...
@@ -3382,13 +3382,13 @@ openair_rrc_lite_eNB_init(
#if defined(ENABLE_ITTI)
//-----------------------------------------------------------------------------
char
openair_rrc_
lite_
eNB_configuration
(
openair_rrc_eNB_configuration
(
const
module_id_t
enb_mod_idP
,
RrcConfigurationReq
*
configuration
)
#else
char
openair_rrc_
lite_
eNB_init
(
openair_rrc_eNB_init
(
const
module_id_t
enb_mod_idP
)
#endif
...
...
@@ -3417,7 +3417,7 @@ openair_rrc_lite_eNB_init(
// for (j = 0; j < NUMBER_OF_UE_MAX; j++) {
// eNB_rrc_inst[ctxt.module_id].ciphering_algorithm[j] = SecurityAlgorithmConfig__cipheringAlgorithm_eea0;
// eNB_rrc_inst[ctxt.module_id].integrity_algorithm[j] = SecurityAlgorithmConfig__integrityProtAlgorithm_eia2;
// rrc_
lite_
eNB_init_security(enb_mod_idP, j);
// rrc_eNB_init_security(enb_mod_idP, j);
// }
// }
eNB_rrc_inst
[
ctxt
.
module_id
].
Nb_ue
=
0
;
...
...
@@ -4434,7 +4434,7 @@ rrc_enb_task(
/* Messages from eNB app */
case
RRC_CONFIGURATION_REQ
:
LOG_I
(
RRC
,
"[eNB %d] Received %s
\n
"
,
instance
,
msg_name_p
);
openair_rrc_
lite_
eNB_configuration
(
ENB_INSTANCE_TO_MODULE_ID
(
instance
),
&
RRC_CONFIGURATION_REQ
(
msg_p
));
openair_rrc_eNB_configuration
(
ENB_INSTANCE_TO_MODULE_ID
(
instance
),
&
RRC_CONFIGURATION_REQ
(
msg_p
));
break
;
# if ENABLE_RAL
...
...
openair2/RRC/LITE/rrc_eNB_S1AP.c
View file @
c24b2ecc
...
...
@@ -840,15 +840,15 @@ rrc_eNB_process_S1AP_DOWNLINK_NAS(
LOG_F
(
RRC
,
"
\n
"
);
#endif
/* Transfer data to PDCP */
pdcp_
rrc_data_req
(
&
ctxt
,
DCCH
,
*
rrc_eNB_mui
++
,
SDU_CONFIRM_NO
,
length
,
buffer
,
PDCP_TRANSMISSION_MODE_CONTROL
);
rrc_data_req
(
&
ctxt
,
DCCH
,
*
rrc_eNB_mui
++
,
SDU_CONFIRM_NO
,
length
,
buffer
,
PDCP_TRANSMISSION_MODE_CONTROL
);
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