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
61bff80c
Commit
61bff80c
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
2a91fa88
Changes
18
Show 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 @
61bff80c
...
...
@@ -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 @
61bff80c
...
...
@@ -1342,11 +1342,19 @@ 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 @
61bff80c
...
...
@@ -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 @
61bff80c
...
...
@@ -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 @
61bff80c
...
...
@@ -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 @
61bff80c
...
...
@@ -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 @
61bff80c
...
...
@@ -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 @
61bff80c
...
...
@@ -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 @
61bff80c
...
...
@@ -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 @
61bff80c
...
...
@@ -636,7 +636,7 @@ 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
,
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
]);
...
...
openair2/PHY_INTERFACE/defs.h
View file @
61bff80c
...
...
@@ -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 @
61bff80c
...
...
@@ -155,7 +155,7 @@ rlcrrc_data_ind(
)
//------------------------------------------------------------------------------
{
rrc_
lite_
data_ind
(
ctxt_pP
,
rrc_data_ind
(
ctxt_pP
,
srb_idP
,
sdu_lenP
,
buffer_pP
);
...
...
openair2/RRC/LITE/L2_interface.c
View file @
61bff80c
...
...
@@ -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 @
61bff80c
...
...
@@ -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 @
61bff80c
...
...
@@ -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,7 +445,7 @@ 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
(
rrc_data_req
(
ctxt_pP
,
DCCH
,
rrc_mui
++
,
...
...
@@ -472,7 +472,7 @@ static void rrc_ue_generate_RRCConnectionReconfigurationComplete( const protocol
rrc_mui
,
UE_MODULE_ID_TO_INSTANCE
(
ctxt_pP
->
module_id
),
DCCH
);
pdcp_
rrc_data_req
(
rrc_data_req
(
ctxt_pP
,
DCCH
,
rrc_mui
++
,
...
...
@@ -1430,7 +1430,7 @@ rrc_ue_process_securityModeCommand(
}
LOG_T
(
RRC
,
"
\n
"
);
pdcp_
rrc_data_req
(
rrc_data_req
(
ctxt_pP
,
DCCH
,
rrc_mui
++
,
...
...
@@ -1535,7 +1535,7 @@ rrc_ue_process_ueCapabilityEnquiry(
}
LOG_T
(
RRC
,
"
\n
"
);
pdcp_
rrc_data_req
(
rrc_data_req
(
ctxt_pP
,
DCCH
,
rrc_mui
++
,
...
...
@@ -4160,7 +4160,7 @@ 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
,
rrc_data_req
(
&
ctxt
,
DCCH
,
rrc_mui
++
,
SDU_CONFIRM_NO
,
...
...
openair2/RRC/LITE/rrc_common.c
View file @
61bff80c
...
...
@@ -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 @
61bff80c
...
...
@@ -920,7 +920,7 @@ rrc_eNB_generate_SecurityModeCommand(
rrc_eNB_mui
,
size
);
pdcp_
rrc_data_req
(
rrc_data_req
(
ctxt_pP
,
DCCH
,
rrc_eNB_mui
++
,
...
...
@@ -971,7 +971,7 @@ rrc_eNB_generate_UECapabilityEnquiry(
rrc_eNB_mui
,
size
);
pdcp_
rrc_data_req
(
rrc_data_req
(
ctxt_pP
,
DCCH
,
rrc_eNB_mui
++
,
...
...
@@ -1107,7 +1107,7 @@ rrc_eNB_generate_RRCConnectionRelease(
rrc_eNB_mui
,
size
);
pdcp_
rrc_data_req
(
rrc_data_req
(
ctxt_pP
,
DCCH
,
rrc_eNB_mui
++
,
...
...
@@ -1728,7 +1728,7 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(
rrc_eNB_mui
,
size
);
pdcp_
rrc_data_req
(
rrc_data_req
(
ctxt_pP
,
DCCH
,
rrc_eNB_mui
++
,
...
...
@@ -1805,7 +1805,7 @@ rrc_eNB_generate_RRCConnectionReconfiguration_SCell(
rrc_eNB_mui
,
size
);
pdcp_
rrc_data_req
(
rrc_data_req
(
ctxt_pP
,
DCCH
,
rrc_eNB_mui
++
,
...
...
@@ -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 @
61bff80c
...
...
@@ -840,7 +840,7 @@ rrc_eNB_process_S1AP_DOWNLINK_NAS(
LOG_F
(
RRC
,
"
\n
"
);
#endif
/* Transfer data to PDCP */
pdcp_
rrc_data_req
(
rrc_data_req
(
&
ctxt
,
DCCH
,
*
rrc_eNB_mui
++
,
...
...
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