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
wangjie
OpenXG-RAN
Commits
5fe2d298
Commit
5fe2d298
authored
Jul 29, 2020
by
zhenghuangkun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix handover encoding failed
parent
277dc11e
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
28 additions
and
114 deletions
+28
-114
common/utils/ocp_itti/intertask_interface.cpp
common/utils/ocp_itti/intertask_interface.cpp
+6
-4
openair2/LAYER2/MAC/eNB_scheduler.c
openair2/LAYER2/MAC/eNB_scheduler.c
+2
-2
openair2/LAYER2/MAC/eNB_scheduler_fairRR.c
openair2/LAYER2/MAC/eNB_scheduler_fairRR.c
+2
-1
openair2/RRC/LTE/rrc_eNB.c
openair2/RRC/LTE/rrc_eNB.c
+3
-95
openair2/RRC/LTE/rrc_eNB_S1AP.c
openair2/RRC/LTE/rrc_eNB_S1AP.c
+1
-1
openair3/GTPV1-U/gtpv1u_eNB.c
openair3/GTPV1-U/gtpv1u_eNB.c
+14
-11
No files found.
common/utils/ocp_itti/intertask_interface.cpp
View file @
5fe2d298
...
@@ -127,11 +127,13 @@ task_list_t tasks[TASK_MAX];
...
@@ -127,11 +127,13 @@ task_list_t tasks[TASK_MAX];
int
message_id
=
message
->
ittiMsgHeader
.
messageId
;
int
message_id
=
message
->
ittiMsgHeader
.
messageId
;
size_t
s
=
t
->
message_queue
.
size
();
size_t
s
=
t
->
message_queue
.
size
();
if
(
s
>
t
->
admin
.
queue_size
)
if
(
TASK_DATA_FORWARDING
!=
destination_task_id
)
{
LOG_E
(
TMR
,
"Queue for %s task contains %ld messages
\n
"
,
itti_get_task_name
(
destination_task_id
),
s
);
if
(
s
>
t
->
admin
.
queue_size
)
LOG_E
(
TMR
,
"Queue for %s task contains %ld messages
\n
"
,
itti_get_task_name
(
destination_task_id
),
s
);
if
(
s
>
50
)
if
(
s
>
50
)
LOG_I
(
TMR
,
"Queue for %s task size: %ld
\n
"
,
itti_get_task_name
(
destination_task_id
),
s
+
1
);
LOG_I
(
TMR
,
"Queue for %s task size: %ld
\n
"
,
itti_get_task_name
(
destination_task_id
),
s
+
1
);
}
t
->
message_queue
.
insert
(
t
->
message_queue
.
begin
(),
message
);
t
->
message_queue
.
insert
(
t
->
message_queue
.
begin
(),
message
);
eventfd_t
sem_counter
=
1
;
eventfd_t
sem_counter
=
1
;
...
...
openair2/LAYER2/MAC/eNB_scheduler.c
View file @
5fe2d298
...
@@ -604,7 +604,7 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP,
...
@@ -604,7 +604,7 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP,
}
}
#if (!defined(PRE_SCD_THREAD))
#if (!defined(PRE_SCD_THREAD))
protocol_ctxt_t
ctxt
;
PROTOCOL_CTXT_SET_BY_MODULE_ID
(
&
ctxt
,
module_idP
,
ENB_FLAG_YES
,
NOT_A_RNTI
,
frameP
,
subframeP
,
module_idP
);
PROTOCOL_CTXT_SET_BY_MODULE_ID
(
&
ctxt
,
module_idP
,
ENB_FLAG_YES
,
NOT_A_RNTI
,
frameP
,
subframeP
,
module_idP
);
pdcp_run
(
&
ctxt
);
pdcp_run
(
&
ctxt
);
rrc_rx_tx
(
&
ctxt
,
CC_id
);
rrc_rx_tx
(
&
ctxt
,
CC_id
);
...
@@ -770,7 +770,7 @@ void update_ue_timers(module_id_t module_idP,frame_t frameP, sub_frame_t subfram
...
@@ -770,7 +770,7 @@ void update_ue_timers(module_id_t module_idP,frame_t frameP, sub_frame_t subfram
#if defined(PRE_SCD_THREAD)
#if defined(PRE_SCD_THREAD)
dl_buffer_total
[
CC_id
][
UE_id
],
dl_buffer_total
[
CC_id
][
UE_id
],
#else
#else
0
,
(
uint64_t
)
0
,
#endif
#endif
UE_scheduling_control
->
first_cnt
[
CC_id
],
UE_scheduling_control
->
first_cnt
[
CC_id
],
UE_scheduling_control
->
ret_cnt
[
CC_id
],
UE_scheduling_control
->
ret_cnt
[
CC_id
],
...
...
openair2/LAYER2/MAC/eNB_scheduler_fairRR.c
View file @
5fe2d298
...
@@ -61,8 +61,9 @@ int last_dlsch_ue_id_volte[MAX_NUM_CCs] = {-1};
...
@@ -61,8 +61,9 @@ int last_dlsch_ue_id_volte[MAX_NUM_CCs] = {-1};
int
last_ulsch_ue_id
[
MAX_NUM_CCs
]
=
{
-
1
};
int
last_ulsch_ue_id
[
MAX_NUM_CCs
]
=
{
-
1
};
int
last_ulsch_ue_id_volte
[
MAX_NUM_CCs
]
=
{
-
1
};
int
last_ulsch_ue_id_volte
[
MAX_NUM_CCs
]
=
{
-
1
};
uint64_t
dl_buffer_total
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
];
#if defined(PRE_SCD_THREAD)
#if defined(PRE_SCD_THREAD)
uint64_t
dl_buffer_total
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
];
//
uint64_t dl_buffer_total[MAX_NUM_CCs][NUMBER_OF_UE_MAX];
boolean_t
pre_scd_activeUE
[
NUMBER_OF_UE_MAX
];
boolean_t
pre_scd_activeUE
[
NUMBER_OF_UE_MAX
];
eNB_UE_STATS
pre_scd_eNB_UE_stats
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
];
eNB_UE_STATS
pre_scd_eNB_UE_stats
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
];
...
...
openair2/RRC/LTE/rrc_eNB.c
View file @
5fe2d298
...
@@ -5689,7 +5689,7 @@ check_handovers(
...
@@ -5689,7 +5689,7 @@ check_handovers(
GTPV1U_ENB_DATA_FORWARDING_IND
(
msg_p
).
muip
,
GTPV1U_ENB_DATA_FORWARDING_IND
(
msg_p
).
muip
,
GTPV1U_ENB_DATA_FORWARDING_IND
(
msg_p
).
confirmp
,
GTPV1U_ENB_DATA_FORWARDING_IND
(
msg_p
).
confirmp
,
GTPV1U_ENB_DATA_FORWARDING_IND
(
msg_p
).
mode
);
GTPV1U_ENB_DATA_FORWARDING_IND
(
msg_p
).
mode
);
LOG_
I
(
RRC
,
"Before calling pdcp_data_req from check_handovers! GTPV1U_ENB_DATA_FORWARDING_IND (msg_p).rb_id: %ld
\n
"
,
GTPV1U_ENB_DATA_FORWARDING_IND
(
msg_p
).
rb_id
);
LOG_
D
(
RRC
,
"Before calling pdcp_data_req from check_handovers! GTPV1U_ENB_DATA_FORWARDING_IND (msg_p).rb_id: %ld
\n
"
,
GTPV1U_ENB_DATA_FORWARDING_IND
(
msg_p
).
rb_id
);
df_count
++
;
df_count
++
;
result
=
pdcp_data_req
(
&
ctxt
,
result
=
pdcp_data_req
(
&
ctxt
,
SRB_FLAG_NO
,
SRB_FLAG_NO
,
...
@@ -5754,7 +5754,7 @@ check_handovers(
...
@@ -5754,7 +5754,7 @@ check_handovers(
GTPV1U_ENB_END_MARKER_IND
(
msg_p
).
frame
,
GTPV1U_ENB_END_MARKER_IND
(
msg_p
).
frame
,
0
,
0
,
GTPV1U_ENB_END_MARKER_IND
(
msg_p
).
eNB_index
);
GTPV1U_ENB_END_MARKER_IND
(
msg_p
).
eNB_index
);
LOG_
I
(
RRC
,
PROTOCOL_CTXT_FMT
"[check_handovers]Received %s from %s: instance %d, rb_id %ld, muiP %d, confirmP %d, mode %d
\n
"
,
LOG_
D
(
RRC
,
PROTOCOL_CTXT_FMT
"[check_handovers]Received %s from %s: instance %d, rb_id %ld, muiP %d, confirmP %d, mode %d
\n
"
,
PROTOCOL_CTXT_ARGS
(
&
ctxt
),
PROTOCOL_CTXT_ARGS
(
&
ctxt
),
ITTI_MSG_NAME
(
msg_p
),
ITTI_MSG_NAME
(
msg_p
),
ITTI_MSG_ORIGIN_NAME
(
msg_p
),
ITTI_MSG_ORIGIN_NAME
(
msg_p
),
...
@@ -5763,7 +5763,7 @@ check_handovers(
...
@@ -5763,7 +5763,7 @@ check_handovers(
GTPV1U_ENB_END_MARKER_IND
(
msg_p
).
muip
,
GTPV1U_ENB_END_MARKER_IND
(
msg_p
).
muip
,
GTPV1U_ENB_END_MARKER_IND
(
msg_p
).
confirmp
,
GTPV1U_ENB_END_MARKER_IND
(
msg_p
).
confirmp
,
GTPV1U_ENB_END_MARKER_IND
(
msg_p
).
mode
);
GTPV1U_ENB_END_MARKER_IND
(
msg_p
).
mode
);
LOG_
D
(
RRC
,
"Before calling pdcp_data_req from check_handovers! GTPV1U_ENB_END_MARKER_IND (msg_p).rb_id: %ld
\n
"
,
GTPV1U_ENB_END_MARKER_IND
(
msg_p
).
rb_id
);
LOG_
I
(
RRC
,
"Before calling pdcp_data_req from check_handovers! GTPV1U_ENB_END_MARKER_IND (msg_p).rb_id: %ld
\n
"
,
GTPV1U_ENB_END_MARKER_IND
(
msg_p
).
rb_id
);
result
=
pdcp_data_req
(
&
ctxt
,
result
=
pdcp_data_req
(
&
ctxt
,
SRB_FLAG_NO
,
SRB_FLAG_NO
,
GTPV1U_ENB_END_MARKER_IND
(
msg_p
).
rb_id
,
GTPV1U_ENB_END_MARKER_IND
(
msg_p
).
rb_id
,
...
@@ -6490,98 +6490,6 @@ rrc_eNB_generate_HO_RRCConnectionReconfiguration(const protocol_ctxt_t *const ct
...
@@ -6490,98 +6490,6 @@ rrc_eNB_generate_HO_RRCConnectionReconfiguration(const protocol_ctxt_t *const ct
(
LTE_MBSFN_AreaInfoList_r9_t
*
)
NULL
(
LTE_MBSFN_AreaInfoList_r9_t
*
)
NULL
);
);
// Configure target eNB SRB2
/// SRB2
SRB2_config
=
CALLOC
(
1
,
sizeof
(
*
SRB2_config
));
SRB_configList2
=
CALLOC
(
1
,
sizeof
(
*
SRB_configList2
));
memset
(
SRB_configList2
,
0
,
sizeof
(
*
SRB_configList2
));
SRB2_config
->
srb_Identity
=
2
;
SRB2_rlc_config
=
CALLOC
(
1
,
sizeof
(
*
SRB2_rlc_config
));
SRB2_config
->
rlc_Config
=
SRB2_rlc_config
;
SRB2_rlc_config
->
present
=
LTE_SRB_ToAddMod__rlc_Config_PR_explicitValue
;
SRB2_rlc_config
->
choice
.
explicitValue
.
present
=
LTE_RLC_Config_PR_am
;
SRB2_rlc_config
->
choice
.
explicitValue
.
choice
.
am
.
ul_AM_RLC
.
t_PollRetransmit
=
LTE_T_PollRetransmit_ms15
;
SRB2_rlc_config
->
choice
.
explicitValue
.
choice
.
am
.
ul_AM_RLC
.
pollPDU
=
LTE_PollPDU_p8
;
SRB2_rlc_config
->
choice
.
explicitValue
.
choice
.
am
.
ul_AM_RLC
.
pollByte
=
LTE_PollByte_kB1000
;
SRB2_rlc_config
->
choice
.
explicitValue
.
choice
.
am
.
ul_AM_RLC
.
maxRetxThreshold
=
LTE_UL_AM_RLC__maxRetxThreshold_t32
;
SRB2_rlc_config
->
choice
.
explicitValue
.
choice
.
am
.
dl_AM_RLC
.
t_Reordering
=
LTE_T_Reordering_ms35
;
SRB2_rlc_config
->
choice
.
explicitValue
.
choice
.
am
.
dl_AM_RLC
.
t_StatusProhibit
=
LTE_T_StatusProhibit_ms10
;
SRB2_lchan_config
=
CALLOC
(
1
,
sizeof
(
*
SRB2_lchan_config
));
SRB2_config
->
logicalChannelConfig
=
SRB2_lchan_config
;
SRB2_lchan_config
->
present
=
LTE_SRB_ToAddMod__logicalChannelConfig_PR_explicitValue
;
SRB2_ul_SpecificParameters
=
CALLOC
(
1
,
sizeof
(
*
SRB2_ul_SpecificParameters
));
SRB2_ul_SpecificParameters
->
priority
=
1
;
SRB2_ul_SpecificParameters
->
prioritisedBitRate
=
LTE_LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity
;
SRB2_ul_SpecificParameters
->
bucketSizeDuration
=
LTE_LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms50
;
// LCG for CCCH and DCCH is 0 as defined in 36331
logicalchannelgroup
=
CALLOC
(
1
,
sizeof
(
long
));
*
logicalchannelgroup
=
0
;
SRB2_ul_SpecificParameters
->
logicalChannelGroup
=
logicalchannelgroup
;
SRB2_lchan_config
->
choice
.
explicitValue
.
ul_SpecificParameters
=
SRB2_ul_SpecificParameters
;
ASN_SEQUENCE_ADD
(
&
SRB_configList
->
list
,
SRB2_config
);
ASN_SEQUENCE_ADD
(
&
(
*
SRB_configList2
)
->
list
,
SRB2_config
);
// Configure target eNB DRB
DRB_configList2
=
CALLOC
(
1
,
sizeof
(
*
DRB_configList2
));
/// DRB
DRB_config
=
CALLOC
(
1
,
sizeof
(
*
DRB_config
));
//DRB_config->drb_Identity = (LTE_DRB_Identity_t) 1; //allowed values 1..32
// NN: this is the 1st DRB for this ue, so set it to 1
DRB_config
->
drb_Identity
=
(
LTE_DRB_Identity_t
)
1
;
// (ue_mod_idP+1); //allowed values 1..32
DRB_config
->
logicalChannelIdentity
=
CALLOC
(
1
,
sizeof
(
long
));
*
(
DRB_config
->
logicalChannelIdentity
)
=
(
long
)
3
;
DRB_rlc_config
=
CALLOC
(
1
,
sizeof
(
*
DRB_rlc_config
));
DRB_config
->
rlc_Config
=
DRB_rlc_config
;
DRB_rlc_config
->
present
=
LTE_RLC_Config_PR_um_Bi_Directional
;
DRB_rlc_config
->
choice
.
um_Bi_Directional
.
ul_UM_RLC
.
sn_FieldLength
=
LTE_SN_FieldLength_size10
;
DRB_rlc_config
->
choice
.
um_Bi_Directional
.
dl_UM_RLC
.
sn_FieldLength
=
LTE_SN_FieldLength_size10
;
DRB_rlc_config
->
choice
.
um_Bi_Directional
.
dl_UM_RLC
.
t_Reordering
=
LTE_T_Reordering_ms35
;
DRB_pdcp_config
=
CALLOC
(
1
,
sizeof
(
*
DRB_pdcp_config
));
DRB_config
->
pdcp_Config
=
DRB_pdcp_config
;
DRB_pdcp_config
->
discardTimer
=
NULL
;
DRB_pdcp_config
->
rlc_AM
=
NULL
;
PDCP_rlc_UM
=
CALLOC
(
1
,
sizeof
(
*
PDCP_rlc_UM
));
DRB_pdcp_config
->
rlc_UM
=
PDCP_rlc_UM
;
PDCP_rlc_UM
->
pdcp_SN_Size
=
LTE_PDCP_Config__rlc_UM__pdcp_SN_Size_len12bits
;
DRB_pdcp_config
->
headerCompression
.
present
=
LTE_PDCP_Config__headerCompression_PR_notUsed
;
DRB_lchan_config
=
CALLOC
(
1
,
sizeof
(
*
DRB_lchan_config
));
DRB_config
->
logicalChannelConfig
=
DRB_lchan_config
;
DRB_ul_SpecificParameters
=
CALLOC
(
1
,
sizeof
(
*
DRB_ul_SpecificParameters
));
DRB_lchan_config
->
ul_SpecificParameters
=
DRB_ul_SpecificParameters
;
DRB_ul_SpecificParameters
->
priority
=
12
;
// lower priority than srb1, srb2
DRB_ul_SpecificParameters
->
prioritisedBitRate
=
LTE_LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity
;
DRB_ul_SpecificParameters
->
bucketSizeDuration
=
LTE_LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms50
;
// LCG for DTCH can take the value from 1 to 3 as defined in 36331: normally controlled by upper layers (like RRM)
logicalchannelgroup_drb
=
CALLOC
(
1
,
sizeof
(
long
));
*
logicalchannelgroup_drb
=
3
;
DRB_ul_SpecificParameters
->
logicalChannelGroup
=
logicalchannelgroup_drb
;
ASN_SEQUENCE_ADD
(
&
(
*
DRB_configList2
)
->
list
,
DRB_config
);
mac_MainConfig
=
CALLOC
(
1
,
sizeof
(
*
mac_MainConfig
));
ue_context_pP
->
ue_context
.
mac_MainConfig
=
mac_MainConfig
;
mac_MainConfig
->
ul_SCH_Config
=
CALLOC
(
1
,
sizeof
(
*
mac_MainConfig
->
ul_SCH_Config
));
maxHARQ_Tx
=
CALLOC
(
1
,
sizeof
(
long
));
*
maxHARQ_Tx
=
LTE_MAC_MainConfig__ul_SCH_Config__maxHARQ_Tx_n5
;
mac_MainConfig
->
ul_SCH_Config
->
maxHARQ_Tx
=
maxHARQ_Tx
;
periodicBSR_Timer
=
CALLOC
(
1
,
sizeof
(
long
));
*
periodicBSR_Timer
=
LTE_PeriodicBSR_Timer_r12_sf64
;
mac_MainConfig
->
ul_SCH_Config
->
periodicBSR_Timer
=
periodicBSR_Timer
;
mac_MainConfig
->
ul_SCH_Config
->
retxBSR_Timer
=
LTE_RetxBSR_Timer_r12_sf320
;
mac_MainConfig
->
ul_SCH_Config
->
ttiBundling
=
0
;
// FALSE
mac_MainConfig
->
timeAlignmentTimerDedicated
=
LTE_TimeAlignmentTimer_infinity
;
mac_MainConfig
->
drx_Config
=
NULL
;
mac_MainConfig
->
phr_Config
=
CALLOC
(
1
,
sizeof
(
*
mac_MainConfig
->
phr_Config
));
mac_MainConfig
->
phr_Config
->
present
=
LTE_MAC_MainConfig__phr_Config_PR_setup
;
mac_MainConfig
->
phr_Config
->
choice
.
setup
.
periodicPHR_Timer
=
LTE_MAC_MainConfig__phr_Config__setup__periodicPHR_Timer_sf500
;
// sf20 = 20 subframes
mac_MainConfig
->
phr_Config
->
choice
.
setup
.
prohibitPHR_Timer
=
LTE_MAC_MainConfig__phr_Config__setup__prohibitPHR_Timer_sf200
;
// sf20 = 20 subframes
mac_MainConfig
->
phr_Config
->
choice
.
setup
.
dl_PathlossChange
=
LTE_MAC_MainConfig__phr_Config__setup__dl_PathlossChange_dB3
;
// Value dB1 =1 dB, dB3 = 3 dB
sr_ProhibitTimer_r9
=
CALLOC
(
1
,
sizeof
(
long
));
*
sr_ProhibitTimer_r9
=
0
;
// SR tx on PUCCH, Value in number of SR period(s). Value 0 = no timer for SR, Value 2= 2*SR
mac_MainConfig
->
ext1
=
CALLOC
(
1
,
sizeof
(
struct
LTE_MAC_MainConfig__ext1
));
mac_MainConfig
->
ext1
->
sr_ProhibitTimer_r9
=
sr_ProhibitTimer_r9
;
// Measurement ID list
// Measurement ID list
MeasId_list
=
CALLOC
(
1
,
sizeof
(
*
MeasId_list
));
MeasId_list
=
CALLOC
(
1
,
sizeof
(
*
MeasId_list
));
memset
((
void
*
)
MeasId_list
,
0
,
sizeof
(
*
MeasId_list
));
memset
((
void
*
)
MeasId_list
,
0
,
sizeof
(
*
MeasId_list
));
...
...
openair2/RRC/LTE/rrc_eNB_S1AP.c
View file @
5fe2d298
...
@@ -2199,7 +2199,7 @@ int rrc_eNB_process_S1AP_PATH_SWITCH_REQ_ACK (MessageDef *msg_p,
...
@@ -2199,7 +2199,7 @@ int rrc_eNB_process_S1AP_PATH_SWITCH_REQ_ACK (MessageDef *msg_p,
i
<
ue_context_p
->
ue_context
.
setup_e_rabs
;
// go over total number of e_rabs received through x2_ho_req msg
i
<
ue_context_p
->
ue_context
.
setup_e_rabs
;
// go over total number of e_rabs received through x2_ho_req msg
i
++
)
{
i
++
)
{
// assume that we are releasing all the DRBs
// assume that we are releasing all the DRBs
ue_context_p
->
ue_context
.
e_rab
[
i
].
status
=
E_RAB_STATUS_
RE
ESTABLISHED
;
ue_context_p
->
ue_context
.
e_rab
[
i
].
status
=
E_RAB_STATUS_ESTABLISHED
;
if
(
ue_context_p
->
ue_context
.
nb_release_of_e_rabs
==
0
)
{
if
(
ue_context_p
->
ue_context
.
nb_release_of_e_rabs
==
0
)
{
LOG_I
(
RRC
,
"Bearer established with ID: %d
\n
"
,
ue_context_p
->
ue_context
.
e_rab
[
i
].
param
.
e_rab_id
);
LOG_I
(
RRC
,
"Bearer established with ID: %d
\n
"
,
ue_context_p
->
ue_context
.
e_rab
[
i
].
param
.
e_rab_id
);
...
...
openair3/GTPV1-U/gtpv1u_eNB.c
View file @
5fe2d298
...
@@ -298,7 +298,7 @@ NwGtpv1uRcT gtpv1u_eNB_process_stack_req(
...
@@ -298,7 +298,7 @@ NwGtpv1uRcT gtpv1u_eNB_process_stack_req(
GTPV1U_ENB_END_MARKER_REQ
(
msg
).
offset
=
GTPU_HEADER_OVERHEAD_MAX
;
GTPV1U_ENB_END_MARKER_REQ
(
msg
).
offset
=
GTPU_HEADER_OVERHEAD_MAX
;
LOG_I
(
GTPU
,
"Send End Marker to GTPV1-U at frame %d and subframe %d
\n
"
,
ctxt
.
frame
,
ctxt
.
subframe
);
LOG_I
(
GTPU
,
"Send End Marker to GTPV1-U at frame %d and subframe %d
\n
"
,
ctxt
.
frame
,
ctxt
.
subframe
);
itti_send_msg_to_task
(
TASK_GTPV1_U
,
ENB_MODULE_ID_TO_INSTANCE
(
ctxt
.
module_id
),
msg
);
itti_send_msg_to_task
(
TASK_GTPV1_U
,
ENB_MODULE_ID_TO_INSTANCE
(
ctxt
.
module_id
),
msg
);
pthread_mutex_unlock
(
&
ue_context_p
->
ue_context
.
handover_cond_lock
);
pthread_mutex_unlock
(
&
ue_context_p
->
ue_context
.
handover_cond_lock
);
return
NW_GTPV1U_OK
;
return
NW_GTPV1U_OK
;
}
}
}
}
...
@@ -321,7 +321,7 @@ NwGtpv1uRcT gtpv1u_eNB_process_stack_req(
...
@@ -321,7 +321,7 @@ NwGtpv1uRcT gtpv1u_eNB_process_stack_req(
memset
(
&
delete_tunnel_req
,
0
,
sizeof
(
delete_tunnel_req
));
memset
(
&
delete_tunnel_req
,
0
,
sizeof
(
delete_tunnel_req
));
delete_tunnel_req
.
rnti
=
ctxt
.
rnti
;
delete_tunnel_req
.
rnti
=
ctxt
.
rnti
;
gtpv1u_delete_x2u_tunnel
(
ctxt
.
module_id
,
&
delete_tunnel_req
,
GTPV1U_TARGET_ENB
);
gtpv1u_delete_x2u_tunnel
(
ctxt
.
module_id
,
&
delete_tunnel_req
,
GTPV1U_TARGET_ENB
);
pthread_mutex_unlock
(
&
ue_context_p
->
ue_context
.
handover_cond_lock
);
pthread_mutex_unlock
(
&
ue_context_p
->
ue_context
.
handover_cond_lock
);
return
NW_GTPV1U_OK
;
return
NW_GTPV1U_OK
;
}
}
...
@@ -352,12 +352,12 @@ NwGtpv1uRcT gtpv1u_eNB_process_stack_req(
...
@@ -352,12 +352,12 @@ NwGtpv1uRcT gtpv1u_eNB_process_stack_req(
if
(
result
==
FALSE
)
{
if
(
result
==
FALSE
)
{
LOG_W
(
GTPU
,
"DATA FORWARDING message save failed
\n
"
);
LOG_W
(
GTPU
,
"DATA FORWARDING message save failed
\n
"
);
pthread_mutex_unlock
(
&
ue_context_p
->
ue_context
.
handover_cond_lock
);
pthread_mutex_unlock
(
&
ue_context_p
->
ue_context
.
handover_cond_lock
);
return
NW_GTPV1U_FAILURE
;
return
NW_GTPV1U_FAILURE
;
}
}
ue_context_p
->
ue_context
.
handover_info
->
forwarding_state
=
FORWARDING_NO_EMPTY
;
ue_context_p
->
ue_context
.
handover_info
->
forwarding_state
=
FORWARDING_NO_EMPTY
;
pthread_mutex_unlock
(
&
ue_context_p
->
ue_context
.
handover_cond_lock
);
pthread_mutex_unlock
(
&
ue_context_p
->
ue_context
.
handover_cond_lock
);
return
NW_GTPV1U_OK
;
return
NW_GTPV1U_OK
;
}
}
/* from epc message */
/* from epc message */
...
@@ -386,13 +386,16 @@ NwGtpv1uRcT gtpv1u_eNB_process_stack_req(
...
@@ -386,13 +386,16 @@ NwGtpv1uRcT gtpv1u_eNB_process_stack_req(
#endif
#endif
LOG_I
(
GTPU
,
"Send data forwarding to GTPV1-U at frame %d and subframe %d
\n
"
,
ctxt
.
frame
,
ctxt
.
subframe
);
LOG_I
(
GTPU
,
"Send data forwarding to GTPV1-U at frame %d and subframe %d
\n
"
,
ctxt
.
frame
,
ctxt
.
subframe
);
itti_send_msg_to_task
(
TASK_GTPV1_U
,
ENB_MODULE_ID_TO_INSTANCE
(
ctxt
.
module_id
),
msg
);
itti_send_msg_to_task
(
TASK_GTPV1_U
,
ENB_MODULE_ID_TO_INSTANCE
(
ctxt
.
module_id
),
msg
);
pthread_mutex_unlock
(
&
ue_context_p
->
ue_context
.
handover_cond_lock
);
pthread_mutex_unlock
(
&
ue_context_p
->
ue_context
.
handover_cond_lock
);
return
NW_GTPV1U_OK
;
return
NW_GTPV1U_OK
;
}
}
/* target eNB. x2ho forwarding is processing. spgw message save to TASK_END_MARKER */
/* target eNB. x2ho forwarding is processing. spgw message save to TASK_END_MARKER */
if
(
ue_context_p
->
ue_context
.
handover_info
->
state
!=
HO_COMPLETE
&&
if
(
ue_context_p
->
ue_context
.
handover_info
->
state
!=
HO_REQUEST
&&
ue_context_p
->
ue_context
.
handover_info
->
state
!=
HO_END_MARKER
)
{
ue_context_p
->
ue_context
.
handover_info
->
state
!=
HO_COMPLETE
&&
(
ue_context_p
->
ue_context
.
handover_info
->
state
!=
HO_END_MARKER
||
ue_context_p
->
ue_context
.
handover_info
->
forwarding_state
!=
FORWARDING_EMPTY
||
ue_context_p
->
ue_context
.
handover_info
->
endmark_state
!=
ENDMARK_EMPTY
)
)
{
LOG_I
(
GTPU
,
"x2ho forwarding is processing. Received a spgw message. length %d
\n
"
,
buffer_len
);
LOG_I
(
GTPU
,
"x2ho forwarding is processing. Received a spgw message. length %d
\n
"
,
buffer_len
);
#if defined(LOG_GTPU) && LOG_GTPU > 0
#if defined(LOG_GTPU) && LOG_GTPU > 0
LOG_T
(
GTPU
,
"spgw data info:
\n
"
,
buffer_len
);
LOG_T
(
GTPU
,
"spgw data info:
\n
"
,
buffer_len
);
...
@@ -418,20 +421,20 @@ NwGtpv1uRcT gtpv1u_eNB_process_stack_req(
...
@@ -418,20 +421,20 @@ NwGtpv1uRcT gtpv1u_eNB_process_stack_req(
if
(
result
==
FALSE
)
{
if
(
result
==
FALSE
)
{
LOG_W
(
GTPU
,
"DATA FORWARDING message save failed
\n
"
);
LOG_W
(
GTPU
,
"DATA FORWARDING message save failed
\n
"
);
pthread_mutex_unlock
(
&
ue_context_p
->
ue_context
.
handover_cond_lock
);
pthread_mutex_unlock
(
&
ue_context_p
->
ue_context
.
handover_cond_lock
);
return
NW_GTPV1U_FAILURE
;
return
NW_GTPV1U_FAILURE
;
}
}
ue_context_p
->
ue_context
.
handover_info
->
endmark_state
=
ENDMARK_NO_EMPTY
;
ue_context_p
->
ue_context
.
handover_info
->
endmark_state
=
ENDMARK_NO_EMPTY
;
pthread_mutex_unlock
(
&
ue_context_p
->
ue_context
.
handover_cond_lock
);
pthread_mutex_unlock
(
&
ue_context_p
->
ue_context
.
handover_cond_lock
);
return
NW_GTPV1U_OK
;
return
NW_GTPV1U_OK
;
}
}
}
}
}
}
}
}
pthread_mutex_unlock
(
&
ue_context_p
->
ue_context
.
handover_cond_lock
);
pthread_mutex_unlock
(
&
ue_context_p
->
ue_context
.
handover_cond_lock
);
}
}
result
=
pdcp_data_req
(
result
=
pdcp_data_req
(
&
ctxt
,
&
ctxt
,
SRB_FLAG_NO
,
SRB_FLAG_NO
,
...
...
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