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
f3a502d5
Commit
f3a502d5
authored
Aug 26, 2018
by
Raymond Knopp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
rrc_eNB.c compiles
rrc_eNB_S1AP.c doesn't
parent
99968378
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
359 additions
and
427 deletions
+359
-427
openair2/RRC/LTE/rrc_eNB.c
openair2/RRC/LTE/rrc_eNB.c
+339
-407
openair2/RRC/LTE/rrc_eNB_S1AP.c
openair2/RRC/LTE/rrc_eNB_S1AP.c
+20
-20
No files found.
openair2/RRC/LTE/rrc_eNB.c
View file @
f3a502d5
...
...
@@ -5847,6 +5847,10 @@ rrc_eNB_decode_ccch(
RC
.
rrc
[
ctxt_pP
->
module_id
],
ctxt_pP
->
rnti
);
if
(
ue_context_p
!=
NULL
)
{
// erase content
rrc_eNB_free_mem_UE_context
(
ctxt_pP
,
ue_context_p
);
MSC_LOG_RX_DISCARDED_MESSAGE
(
MSC_RRC_ENB
,
...
...
@@ -5909,18 +5913,6 @@ rrc_eNB_decode_ccch(
ue_context_p
=
rrc_eNB_get_next_free_ue_context
(
ctxt_pP
,
random_value
);
if
(
ue_context_p
==
NULL
)
LOG_E
(
RRC
,
"%s:%d:%s: rrc_eNB_get_next_free_ue_context returned NULL
\n
"
,
__FILE__
,
__LINE__
,
__FUNCTION__
);
if
(
ue_context_p
!=
NULL
)
{
ue_context_p
->
ue_context
.
Initialue_identity_s_TMSI
.
presence
=
TRUE
;
ue_context_p
->
ue_context
.
Initialue_identity_s_TMSI
.
mme_code
=
mme_code
;
ue_context_p
->
ue_context
.
Initialue_identity_s_TMSI
.
m_tmsi
=
m_tmsi
;
}
else
{
LOG_I
(
RRC
,
" S-TMSI doesn't exist, setting Initialue_identity_s_TMSI.m_tmsi to %p => %x
\n
"
,
ue_context_p
,
m_tmsi
);
// ue_context_p = rrc_eNB_get_next_free_ue_context(ctxt_pP, NOT_A_RANDOM_UE_IDENTITY);
ue_context_p
=
rrc_eNB_get_next_free_ue_context
(
ctxt_pP
,
random_value
);
if
(
ue_context_p
==
NULL
)
LOG_E
(
RRC
,
"%s:%d:%s: rrc_eNB_get_next_free_ue_context returned NULL
\n
"
,
__FILE__
,
__LINE__
,
__FUNCTION__
);
if
(
ue_context_p
!=
NULL
)
{
ue_context_p
->
ue_context
.
Initialue_identity_s_TMSI
.
presence
=
TRUE
;
ue_context_p
->
ue_context
.
Initialue_identity_s_TMSI
.
mme_code
=
mme_code
;
...
...
@@ -6087,25 +6079,28 @@ rrc_eNB_decode_ccch(
//-----------------------------------------------------------------------------
int
rrc_eNB_decode_dcch
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
const
protocol_ctxt_t
*
const
ctxt_pP
,
const
rb_id_t
Srb_id
,
const
uint8_t
*
const
Rx_sdu
,
const
uint8_t
*
const
Rx_sdu
,
const
sdu_size_t
sdu_sizeP
)
//-----------------------------------------------------------------------------
{
asn_dec_rval_t
dec_rval
;
//UL_DCCH_Message_t uldcchmsg;
UL_DCCH_Message_t
*
ul_dcch_msg
=
NULL
;
//&uldcchmsg;
int
i
;
struct
rrc_eNB_ue_context_s
*
ue_context_p
=
NULL
;
struct
rrc_eNB_ue_context_s
*
ue_context_p
=
NULL
;
#if defined(ENABLE_ITTI)
# if defined(ENABLE_USE_MME)
MessageDef
*
msg_delete_tunnels_p
=
NULL
;
MessageDef
*
msg_delete_tunnels_p
=
NULL
;
uint8_t
xid
;
#endif
#endif
int
dedicated_DRB
=
0
;
T
(
T_ENB_RRC_UL_DCCH_DATA_IN
,
T_INT
(
ctxt_pP
->
module_id
),
T_INT
(
ctxt_pP
->
frame
),
T_INT
(
ctxt_pP
->
subframe
),
T_INT
(
ctxt_pP
->
rnti
));
...
...
@@ -6118,21 +6113,21 @@ rrc_eNB_decode_dcch(
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
),
Srb_id
);
}
//memset(ul_dcch_msg,0,sizeof(UL_DCCH_Message_t));
LOG_D
(
RRC
,
PROTOCOL_RRC_CTXT_UE_FMT
" Decoding UL-DCCH Message
\n
"
,
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
));
dec_rval
=
uper_decode
(
NULL
,
&
asn_DEF_UL_DCCH_Message
,
(
void
**
)
&
ul_dcch_msg
,
(
void
**
)
&
ul_dcch_msg
,
Rx_sdu
,
sdu_sizeP
,
0
,
0
);
/*
#if defined(ENABLE_ITTI)
# if defined(DISABLE_ITTI_XER_PRINT)
#if defined(ENABLE_ITTI)
# if defined(DISABLE_ITTI_XER_PRINT)
{
MessageDef *message_p;
...
...
@@ -6141,7 +6136,7 @@ rrc_eNB_decode_dcch(
itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, message_p);
}
# else
# else
{
char message_string[10000];
size_t message_string_size;
...
...
@@ -6157,8 +6152,8 @@ rrc_eNB_decode_dcch(
itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
}
}
# endif
#endif
# endif
#endif
*/
{
for
(
i
=
0
;
i
<
sdu_sizeP
;
i
++
)
{
...
...
@@ -6180,6 +6175,7 @@ rrc_eNB_decode_dcch(
ctxt_pP
->
rnti
);
if
(
ul_dcch_msg
->
message
.
present
==
UL_DCCH_MessageType_PR_c1
)
{
switch
(
ul_dcch_msg
->
message
.
choice
.
c1
.
present
)
{
case
UL_DCCH_MessageType__c1_PR_NOTHING
:
/* No components present */
break
;
...
...
@@ -6216,55 +6212,7 @@ rrc_eNB_decode_dcch(
LOG_F
(
RRC
,
"[MSG] RRC Connection Reconfiguration Complete
\n
"
);
for
(
i
=
0
;
i
<
sdu_sizeP
;
i
++
)
{
LOG_F
(
RRC
,
"%02x "
,
((
uint8_t
*
)
Rx_sdu
)[
i
]);
}
LOG_F
(
RRC
,
"
\n
"
);
#endif
MSC_LOG_RX_MESSAGE
(
MSC_RRC_ENB
,
MSC_RRC_UE
,
Rx_sdu
,
sdu_sizeP
,
MSC_AS_TIME_FMT
" RRCConnectionReconfigurationComplete UE %x size %u"
,
MSC_AS_TIME_ARGS
(
ctxt_pP
),
ue_context_p
->
ue_context
.
rnti
,
sdu_sizeP
);
LOG_D
(
RRC
,
PROTOCOL_RRC_CTXT_UE_FMT
" RLC RB %02d --- RLC_DATA_IND %d bytes "
"(RRCConnectionReconfigurationComplete) ---> RRC_eNB]
\n
"
,
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
),
DCCH
,
sdu_sizeP
);
if
(
ul_dcch_msg
->
message
.
choice
.
c1
.
choice
.
rrcConnectionReconfigurationComplete
.
criticalExtensions
.
present
==
RRCConnectionReconfigurationComplete__criticalExtensions_PR_rrcConnectionReconfigurationComplete_r8
)
{
/*NN: revise the condition */
if
(
ue_context_p
->
ue_context
.
Status
==
RRC_RECONFIGURED
)
{
dedicated_DRB
=
1
;
LOG_I
(
RRC
,
PROTOCOL_RRC_CTXT_UE_FMT
" UE State = RRC_RECONFIGURED (dedicated DRB, xid %ld)
\n
"
,
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
),
ul_dcch_msg
->
message
.
choice
.
c1
.
choice
.
rrcConnectionReconfigurationComplete
.
rrc_TransactionIdentifier
);
}
else
{
dedicated_DRB
=
0
;
ue_context_p
->
ue_context
.
Status
=
RRC_RECONFIGURED
;
LOG_I
(
RRC
,
PROTOCOL_RRC_CTXT_UE_FMT
" UE State = RRC_RECONFIGURED (default DRB, xid %ld)
\n
"
,
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
),
ul_dcch_msg
->
message
.
choice
.
c1
.
choice
.
rrcConnectionReconfigurationComplete
.
rrc_TransactionIdentifier
);
}
rrc_eNB_process_RRCConnectionReconfigurationComplete
(
ctxt_pP
,
ue_context_p
,
ul_dcch_msg
->
message
.
choice
.
c1
.
choice
.
rrcConnectionReconfigurationComplete
.
rrc_TransactionIdentifier
);
//WARNING:Inform the controller about the UE activation. Should be moved to RRC agent in the future
if
(
rrc_agent_registered
[
ctxt_pP
->
module_id
])
{
agent_rrc_xface
[
ctxt_pP
->
eNB_index
]
->
flexran_agent_notify_ue_state_change
(
ctxt_pP
->
module_id
,
ue_context_p
->
ue_id_rnti
,
PROTOCOL__FLEX_UE_STATE_CHANGE_TYPE__FLUESC_UPDATED
);
}
LOG_F
(
RRC
,
"%02x "
,
((
uint8_t
*
)
Rx_sdu
)[
i
]);
}
LOG_F
(
RRC
,
"
\n
"
);
...
...
@@ -6342,40 +6290,38 @@ rrc_eNB_decode_dcch(
}
#if defined(ENABLE_ITTI)
# if defined(ENABLE_USE_MME)
if
(
EPC_MODE_ENABLED
==
1
)
{
if
(
dedicated_DRB
==
1
)
{
//
rrc_eNB_send_S1AP_E_RAB_SETUP_RESP(ctxt_pP,
//
ue_context_p,
//
ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
if
(
ue_context_p
->
ue_context
.
nb_of_modify_e_rabs
>
0
)
{
if
(
dedicated_DRB
==
1
)
{
//
rrc_eNB_send_S1AP_E_RAB_SETUP_RESP(ctxt_pP,
//
ue_context_p,
//
ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
if
(
ue_context_p
->
ue_context
.
nb_of_modify_e_rabs
>
0
)
{
rrc_eNB_send_S1AP_E_RAB_MODIFY_RESP
(
ctxt_pP
,
ue_context_p
,
ul_dcch_msg
->
message
.
choice
.
c1
.
choice
.
rrcConnectionReconfigurationComplete
.
rrc_TransactionIdentifier
);
ue_context_p
->
ue_context
.
nb_of_modify_e_rabs
=
0
;
ue_context_p
->
ue_context
.
nb_of_failed_e_rabs
=
0
;
memset
(
ue_context_p
->
ue_context
.
modify_e_rab
,
0
,
sizeof
(
ue_context_p
->
ue_context
.
modify_e_rab
));
for
(
int
i
=
0
;
i
<
NB_RB_MAX
;
i
++
)
{
ue_context_p
->
ue_context
.
modify_e_rab
[
i
].
xid
=
-
1
;
}
}
else
if
(
ue_context_p
->
ue_context
.
e_rab_release_command_flag
==
1
)
{
}
else
if
(
ue_context_p
->
ue_context
.
e_rab_release_command_flag
==
1
){
xid
=
ul_dcch_msg
->
message
.
choice
.
c1
.
choice
.
rrcConnectionReconfigurationComplete
.
rrc_TransactionIdentifier
;
ue_context_p
->
ue_context
.
e_rab_release_command_flag
=
0
;
//gtp tunnel delete
msg_delete_tunnels_p
=
itti_alloc_new_message
(
TASK_RRC_ENB
,
GTPV1U_ENB_DELETE_TUNNEL_REQ
);
memset
(
&
GTPV1U_ENB_DELETE_TUNNEL_REQ
(
msg_delete_tunnels_p
),
0
,
sizeof
(
GTPV1U_ENB_DELETE_TUNNEL_REQ
(
msg_delete_tunnels_p
)));
GTPV1U_ENB_DELETE_TUNNEL_REQ
(
msg_delete_tunnels_p
).
rnti
=
ue_context_p
->
ue_context
.
rnti
;
for
(
i
=
0
;
i
<
NB_RB_MAX
;
i
++
)
{
if
(
xid
==
ue_context_p
->
ue_context
.
e_rab
[
i
].
xid
)
{
for
(
i
=
0
;
i
<
NB_RB_MAX
;
i
++
){
if
(
xid
==
ue_context_p
->
ue_context
.
e_rab
[
i
].
xid
){
GTPV1U_ENB_DELETE_TUNNEL_REQ
(
msg_delete_tunnels_p
).
eps_bearer_id
[
GTPV1U_ENB_DELETE_TUNNEL_REQ
(
msg_delete_tunnels_p
).
num_erab
++
]
=
ue_context_p
->
ue_context
.
enb_gtp_ebi
[
i
];
ue_context_p
->
ue_context
.
enb_gtp_teid
[
i
]
=
0
;
memset
(
&
ue_context_p
->
ue_context
.
enb_gtp_addrs
[
i
],
0
,
sizeof
(
ue_context_p
->
ue_context
.
enb_gtp_addrs
[
i
]));
ue_context_p
->
ue_context
.
enb_gtp_ebi
[
i
]
=
0
;
}
}
itti_send_msg_to_task
(
TASK_GTPV1_U
,
ctxt_pP
->
instance
,
msg_delete_tunnels_p
);
//S1AP_E_RAB_RELEASE_RESPONSE
rrc_eNB_send_S1AP_E_RAB_RELEASE_RESPONSE
(
ctxt_pP
,
...
...
@@ -6390,13 +6336,8 @@ rrc_eNB_decode_dcch(
if
(
ue_context_p
->
ue_context
.
reestablishment_cause
==
ReestablishmentCause_spare1
){
rrc_eNB_send_S1AP_INITIAL_CONTEXT_SETUP_RESP
(
ctxt_pP
,
ue_context_p
);
}
else
{
if
(
ue_context_p
->
ue_context
.
reestablishment_cause
==
ReestablishmentCause_spare1
)
{
rrc_eNB_send_S1AP_INITIAL_CONTEXT_SETUP_RESP
(
ctxt_pP
,
ue_context_p
);
}
else
{
ue_context_p
->
ue_context
.
reestablishment_cause
=
ReestablishmentCause_spare1
;
for
(
uint8_t
e_rab
=
0
;
e_rab
<
ue_context_p
->
ue_context
.
nb_of_e_rabs
;
e_rab
++
)
{
if
(
ue_context_p
->
ue_context
.
e_rab
[
e_rab
].
status
==
E_RAB_STATUS_DONE
)
{
ue_context_p
->
ue_context
.
e_rab
[
e_rab
].
status
=
E_RAB_STATUS_ESTABLISHED
;
...
...
@@ -6405,7 +6346,6 @@ rrc_eNB_decode_dcch(
}
}
}
}
}
else
if
(
dedicated_DRB
==
2
){
for
(
uint8_t
e_rab
=
0
;
e_rab
<
ue_context_p
->
ue_context
.
nb_of_e_rabs
;
e_rab
++
)
{
if
(
ue_context_p
->
ue_context
.
e_rab
[
e_rab
].
status
==
E_RAB_STATUS_DONE
)
{
...
...
@@ -6417,7 +6357,6 @@ rrc_eNB_decode_dcch(
}
}
#else // establish a dedicated bearer
if
(
dedicated_DRB
==
0
)
{
// ue_context_p->ue_context.e_rab[0].status = E_RAB_STATUS_ESTABLISHED;
rrc_eNB_reconfigure_DRBs
(
ctxt_pP
,
ue_context_p
);
...
...
@@ -6430,11 +6369,12 @@ rrc_eNB_decode_dcch(
case
UL_DCCH_MessageType__c1_PR_rrcConnectionReestablishmentComplete
:
T
(
T_ENB_RRC_CONNECTION_REESTABLISHMENT_COMPLETE
,
T_INT
(
ctxt_pP
->
module_id
),
T_INT
(
ctxt_pP
->
frame
),
T_INT
(
ctxt_pP
->
subframe
),
T_INT
(
ctxt_pP
->
rnti
));
#ifdef RRC_MSG_PRINT
LOG_F
(
RRC
,
"[MSG] RRC Connection Reestablishment Complete
\n
"
);
for
(
i
=
0
;
i
<
sdu_sizeP
;
i
++
)
{
LOG_F
(
RRC
,
"%02x "
,
((
uint8_t
*
)
Rx_sdu
)[
i
]);
LOG_F
(
RRC
,
"%02x "
,
((
uint8_t
*
)
Rx_sdu
)[
i
]);
}
LOG_F
(
RRC
,
"
\n
"
);
...
...
@@ -6470,6 +6410,9 @@ rrc_eNB_decode_dcch(
reestablish_rnti_map
[
i
][
1
]
=
0
;
break
;
}
}
LOG_D
(
RRC
,
"reestablish_rnti_map[%d] [0] %x, [1] %x
\n
"
,
i
,
reestablish_rnti_map
[
i
][
0
],
reestablish_rnti_map
[
i
][
1
]);
if
(
!
ue_context_p
)
{
LOG_E
(
RRC
,
...
...
@@ -6488,13 +6431,6 @@ rrc_eNB_decode_dcch(
RC
.
mac
[
ctxt_pP
->
module_id
]
->
UE_list
.
UE_sched_ctrl
[
UE_id
].
ue_reestablishment_reject_timer
=
0
;
ue_context_p
->
ue_context
.
ue_reestablishment_timer
=
0
;
if
(
!
ue_context_p
)
{
LOG_E
(
RRC
,
PROTOCOL_RRC_CTXT_UE_FMT
" RRCConnectionReestablishmentComplete without UE context, falt
\n
"
,
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
));
break
;
}
if
(
ul_dcch_msg
->
message
.
choice
.
c1
.
choice
.
rrcConnectionReestablishmentComplete
.
criticalExtensions
.
present
==
RRCConnectionReestablishmentComplete__criticalExtensions_PR_rrcConnectionReestablishmentComplete_r8
)
{
rrc_eNB_process_RRCConnectionReestablishmentComplete
(
ctxt_pP
,
reestablish_rnti
,
ue_context_p
,
...
...
@@ -6508,7 +6444,6 @@ rrc_eNB_decode_dcch(
PROTOCOL__FLEX_UE_STATE_CHANGE_TYPE__FLUESC_ACTIVATED
);
}
}
//ue_context_p->ue_context.ue_release_timer = 0;
ue_context_p
->
ue_context
.
ue_reestablishment_timer
=
1
;
// remove UE after 100 frames after RRCConnectionReestablishmentRelease is triggered
...
...
@@ -6526,11 +6461,12 @@ rrc_eNB_decode_dcch(
LOG_F
(
RRC
,
"[MSG] RRC Connection SetupComplete
\n
"
);
for
(
i
=
0
;
i
<
sdu_sizeP
;
i
++
)
{
LOG_F
(
RRC
,
"%02x "
,
((
uint8_t
*
)
Rx_sdu
)[
i
]);
LOG_F
(
RRC
,
"%02x "
,
((
uint8_t
*
)
Rx_sdu
)[
i
]);
}
LOG_F
(
RRC
,
"
\n
"
);
#endif
MSC_LOG_RX_MESSAGE
(
MSC_RRC_ENB
,
MSC_RRC_UE
,
...
...
@@ -6540,6 +6476,7 @@ rrc_eNB_decode_dcch(
MSC_AS_TIME_ARGS
(
ctxt_pP
),
ue_context_p
->
ue_context
.
rnti
,
sdu_sizeP
);
LOG_D
(
RRC
,
PROTOCOL_RRC_CTXT_UE_FMT
" RLC RB %02d --- RLC_DATA_IND %d bytes "
"(RRCConnectionSetupComplete) ---> RRC_eNB
\n
"
,
...
...
@@ -6569,6 +6506,9 @@ rrc_eNB_decode_dcch(
}
}
ue_context_p
->
ue_context
.
ue_release_timer
=
0
;
break
;
case
UL_DCCH_MessageType__c1_PR_securityModeComplete
:
T
(
T_ENB_RRC_SECURITY_MODE_COMPLETE
,
T_INT
(
ctxt_pP
->
module_id
),
T_INT
(
ctxt_pP
->
frame
),
T_INT
(
ctxt_pP
->
subframe
),
T_INT
(
ctxt_pP
->
rnti
));
...
...
@@ -6580,11 +6520,13 @@ rrc_eNB_decode_dcch(
#ifdef RRC_MSG_PRINT
LOG_F
(
RRC
,
"[MSG] RRC Security Mode Complete
\n
"
);
for
(
i
=
0
;
i
<
sdu_sizeP
;
i
++
)
eNB
->
pusch_vars
[
UE_id
]
{
LOG_F
(
RRC
,
"%02x "
,
((
uint8_t
*
)
Rx_sdu
)[
i
]);
for
(
i
=
0
;
i
<
sdu_sizeP
;
i
++
)
eNB
->
pusch_vars
[
UE_id
]
{
LOG_F
(
RRC
,
"%02x "
,
((
uint8_t
*
)
Rx_sdu
)[
i
]);
}
LOG_F
(
RRC
,
"
\n
"
);
#endif
MSC_LOG_RX_MESSAGE
(
MSC_RRC_ENB
,
MSC_RRC_UE
,
...
...
@@ -6594,6 +6536,7 @@ rrc_eNB_decode_dcch(
MSC_AS_TIME_ARGS
(
ctxt_pP
),
ue_context_p
->
ue_context
.
rnti
,
sdu_sizeP
);
LOG_I
(
RRC
,
PROTOCOL_RRC_CTXT_UE_FMT
" received securityModeComplete on UL-DCCH %d from UE
\n
"
,
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
),
...
...
@@ -6618,15 +6561,17 @@ rrc_eNB_decode_dcch(
case
UL_DCCH_MessageType__c1_PR_securityModeFailure
:
T
(
T_ENB_RRC_SECURITY_MODE_FAILURE
,
T_INT
(
ctxt_pP
->
module_id
),
T_INT
(
ctxt_pP
->
frame
),
T_INT
(
ctxt_pP
->
subframe
),
T_INT
(
ctxt_pP
->
rnti
));
#ifdef RRC_MSG_PRINT
LOG_F
(
RRC
,
"[MSG] RRC Security Mode Failure
\n
"
);
for
(
i
=
0
;
i
<
sdu_sizeP
;
i
++
)
{
LOG_F
(
RRC
,
"%02x "
,
((
uint8_t
*
)
Rx_sdu
)[
i
]);
LOG_F
(
RRC
,
"%02x "
,
((
uint8_t
*
)
Rx_sdu
)[
i
]);
}
LOG_F
(
RRC
,
"
\n
"
);
#endif
MSC_LOG_RX_MESSAGE
(
MSC_RRC_ENB
,
MSC_RRC_UE
,
...
...
@@ -6636,6 +6581,7 @@ rrc_eNB_decode_dcch(
MSC_AS_TIME_ARGS
(
ctxt_pP
),
ue_context_p
->
ue_context
.
rnti
,
sdu_sizeP
);
LOG_W
(
RRC
,
PROTOCOL_RRC_CTXT_UE_FMT
" RLC RB %02d --- RLC_DATA_IND %d bytes "
"(securityModeFailure) ---> RRC_eNB
\n
"
,
...
...
@@ -6664,11 +6610,12 @@ rrc_eNB_decode_dcch(
LOG_F
(
RRC
,
"[MSG] RRC UECapablility Information
\n
"
);
for
(
i
=
0
;
i
<
sdu_sizeP
;
i
++
)
{
LOG_F
(
RRC
,
"%02x "
,
((
uint8_t
*
)
Rx_sdu
)[
i
]);
LOG_F
(
RRC
,
"%02x "
,
((
uint8_t
*
)
Rx_sdu
)[
i
]);
}
LOG_F
(
RRC
,
"
\n
"
);
#endif
MSC_LOG_RX_MESSAGE
(
MSC_RRC_ENB
,
MSC_RRC_UE
,
...
...
@@ -6678,6 +6625,7 @@ rrc_eNB_decode_dcch(
MSC_AS_TIME_ARGS
(
ctxt_pP
),
ue_context_p
->
ue_context
.
rnti
,
sdu_sizeP
);
LOG_I
(
RRC
,
PROTOCOL_RRC_CTXT_UE_FMT
" received ueCapabilityInformation on UL-DCCH %d from UE
\n
"
,
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
),
...
...
@@ -6727,23 +6675,27 @@ rrc_eNB_decode_dcch(
ue_context_p
,
ul_dcch_msg
);
}
#else
ue_context_p
->
ue_context
.
nb_of_e_rabs
=
1
;
for
(
i
=
0
;
i
<
ue_context_p
->
ue_context
.
nb_of_e_rabs
;
i
++
)
{
for
(
i
=
0
;
i
<
ue_context_p
->
ue_context
.
nb_of_e_rabs
;
i
++
){
ue_context_p
->
ue_context
.
e_rab
[
i
].
status
=
E_RAB_STATUS_NEW
;
ue_context_p
->
ue_context
.
e_rab
[
i
].
param
.
e_rab_id
=
1
+
i
;
ue_context_p
->
ue_context
.
e_rab
[
i
].
param
.
qos
.
qci
=
9
;
}
ue_context_p
->
ue_context
.
setup_e_rabs
=
ue_context_p
->
ue_context
.
nb_of_e_rabs
;
#endif
rrc_eNB_generate_defaultRRCConnectionReconfiguration
(
ctxt_pP
,
ue_context_p
,
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
HO_flag
);
break
;
case
UL_DCCH_MessageType__c1_PR_ulHandoverPreparationTransfer
:
T
(
T_ENB_RRC_UL_HANDOVER_PREPARATION_TRANSFER
,
T_INT
(
ctxt_pP
->
module_id
),
T_INT
(
ctxt_pP
->
frame
),
T_INT
(
ctxt_pP
->
subframe
),
T_INT
(
ctxt_pP
->
rnti
));
break
;
case
UL_DCCH_MessageType__c1_PR_ulInformationTransfer
:
T
(
T_ENB_RRC_UL_INFORMATION_TRANSFER
,
T_INT
(
ctxt_pP
->
module_id
),
T_INT
(
ctxt_pP
->
frame
),
T_INT
(
ctxt_pP
->
subframe
),
T_INT
(
ctxt_pP
->
rnti
));
...
...
@@ -6753,19 +6705,18 @@ rrc_eNB_decode_dcch(
break
;
}
case
UL_DCCH_MessageType__c1_PR_ulInformationTransfer
:
T
(
T_ENB_RRC_UL_INFORMATION_TRANSFER
,
T_INT
(
ctxt_pP
->
module_id
),
T_INT
(
ctxt_pP
->
frame
),
T_INT
(
ctxt_pP
->
subframe
),
T_INT
(
ctxt_pP
->
rnti
));
LOG_D
(
RRC
,
"[MSG] RRC UL Information Transfer
\n
"
);
#ifdef RRC_MSG_PRINT
LOG_F
(
RRC
,
"[MSG] RRC UL Information Transfer
\n
"
);
for
(
i
=
0
;
i
<
sdu_sizeP
;
i
++
)
{
LOG_F
(
RRC
,
"%02x "
,
((
uint8_t
*
)
Rx_sdu
)[
i
]);
LOG_F
(
RRC
,
"%02x "
,
((
uint8_t
*
)
Rx_sdu
)[
i
]);
}
LOG_F
(
RRC
,
"
\n
"
);
#endif
MSC_LOG_RX_MESSAGE
(
MSC_RRC_ENB
,
MSC_RRC_UE
,
...
...
@@ -6775,6 +6726,7 @@ rrc_eNB_decode_dcch(
MSC_AS_TIME_ARGS
(
ctxt_pP
),
ue_context_p
->
ue_context
.
rnti
,
sdu_sizeP
);
#if defined(ENABLE_USE_MME)
if
(
EPC_MODE_ENABLED
==
1
)
{
...
...
@@ -6786,6 +6738,12 @@ rrc_eNB_decode_dcch(
#endif
break
;
case
UL_DCCH_MessageType__c1_PR_counterCheckResponse
:
T
(
T_ENB_RRC_COUNTER_CHECK_RESPONSE
,
T_INT
(
ctxt_pP
->
module_id
),
T_INT
(
ctxt_pP
->
frame
),
T_INT
(
ctxt_pP
->
subframe
),
T_INT
(
ctxt_pP
->
rnti
));
break
;
#if (RRC_VERSION >= MAKE_VERSION(9, 0, 0))
case
UL_DCCH_MessageType__c1_PR_ueInformationResponse_r9
:
...
...
@@ -6808,30 +6766,23 @@ rrc_eNB_decode_dcch(
break
;
case
UL_DCCH_MessageType__c1_PR_proximityIndication_r9
:
T
(
T_ENB_RRC_PROXIMITY_INDICATION_R9
,
T_INT
(
ctxt_pP
->
module_id
),
T_INT
(
ctxt_pP
->
frame
),
T_INT
(
ctxt_pP
->
subframe
),
T_INT
(
ctxt_pP
->
rnti
));
break
;
case
UL_DCCH_MessageType__c1_PR_rnReconfigurationComplete_r10
:
T
(
T_ENB_RRC_RECONFIGURATION_COMPLETE_R10
,
T_INT
(
ctxt_pP
->
module_id
),
T_INT
(
ctxt_pP
->
frame
),
T_INT
(
ctxt_pP
->
subframe
),
T_INT
(
ctxt_pP
->
rnti
));
break
;
case
UL_DCCH_MessageType__c1_PR_mbmsCountingResponse_r10
:
T
(
T_ENB_RRC_MBMS_COUNTING_RESPONSE_R10
,
T_INT
(
ctxt_pP
->
module_id
),
T_INT
(
ctxt_pP
->
frame
),
T_INT
(
ctxt_pP
->
subframe
),
T_INT
(
ctxt_pP
->
rnti
));
break
;
case
UL_DCCH_MessageType__c1_PR_interFreqRSTDMeasurementIndication_r10
:
T
(
T_ENB_RRC_INTER_FREQ_RSTD_MEASUREMENT_INDICATION
,
T_INT
(
ctxt_pP
->
module_id
),
T_INT
(
ctxt_pP
->
frame
),
T_INT
(
ctxt_pP
->
subframe
),
T_INT
(
ctxt_pP
->
rnti
));
break
;
#endif
default:
T
(
T_ENB_RRC_UNKNOW_MESSAGE
,
T_INT
(
ctxt_pP
->
module_id
),
T_INT
(
ctxt_pP
->
frame
),
T_INT
(
ctxt_pP
->
subframe
),
T_INT
(
ctxt_pP
->
rnti
));
LOG_E
(
RRC
,
PROTOCOL_RRC_CTXT_UE_FMT
" Unknown message %s:%u
\n
"
,
PROTOCOL_RRC_CTXT_UE_ARGS
(
ctxt_pP
),
__FILE__
,
__LINE__
);
...
...
@@ -6892,6 +6843,7 @@ rrc_eNB_decode_dcch(
__FILE__
,
__LINE__
);
return
-
1
;
}
return
0
;
}
...
...
@@ -7021,26 +6973,6 @@ rrc_enb_task(
}
break
;
/* Messages from PDCP */
case
RRC_DCCH_DATA_IND
:
PROTOCOL_CTXT_SET_BY_INSTANCE
(
&
ctxt
,
instance
,
ENB_FLAG_YES
,
RRC_DCCH_DATA_IND
(
msg_p
).
rnti
,
msg_p
->
ittiMsgHeader
.
lte_time
.
frame
,
msg_p
->
ittiMsgHeader
.
lte_time
.
slot
);
LOG_I
(
RRC
,
PROTOCOL_RRC_CTXT_UE_FMT
" Received on DCCH %d %s
\n
"
,
PROTOCOL_RRC_CTXT_UE_ARGS
(
&
ctxt
),
RRC_DCCH_DATA_IND
(
msg_p
).
dcch_index
,
msg_name_p
);
rrc_eNB_decode_dcch
(
&
ctxt
,
RRC_DCCH_DATA_IND
(
msg_p
).
dcch_index
,
RRC_DCCH_DATA_IND
(
msg_p
).
sdu_p
,
RRC_DCCH_DATA_IND
(
msg_p
).
sdu_size
);
// Message buffer has been processed, free it now.
result
=
itti_free
(
ITTI_MSG_ORIGIN_ID
(
msg_p
),
RRC_DCCH_DATA_IND
(
msg_p
).
sdu_p
);
AssertFatal
(
result
==
EXIT_SUCCESS
,
"Failed to free memory (%d)!
\n
"
,
result
);
break
;
# if defined(ENABLE_USE_MME)
/* Messages from S1AP */
...
...
openair2/RRC/LTE/rrc_eNB_S1AP.c
View file @
f3a502d5
...
...
@@ -1636,7 +1636,7 @@ int rrc_eNB_process_S1AP_E_RAB_RELEASE_COMMAND(MessageDef *msg_p, const char *ms
b_existed
=
1
;
break
;
}
}
if
(
b_existed
==
0
)
{
//no e_rab_id
ue_context_p
->
ue_context
.
e_rabs_release_failed
[
ue_context_p
->
ue_context
.
nb_release_of_e_rabs
].
e_rab_id
=
e_rab_release_params
[
erab
].
e_rab_id
;
...
...
@@ -1660,7 +1660,7 @@ int rrc_eNB_process_S1AP_E_RAB_RELEASE_COMMAND(MessageDef *msg_p, const char *ms
}
}
}
}
if
(
is_existed
==
1
)
{
//e_rab_id is existed
...
...
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