mirror of https://github.com/PentHertz/srsLTE.git
do not send RRC release in case the eNB receives a S1AP UEContextRelease command and the UE is doing handover. Handle GTPU end marker
This commit is contained in:
parent
5968157ea5
commit
dcf5a727f2
|
@ -106,7 +106,7 @@ inline bool gtpu_supported_msg_type_check(gtpu_header_t* header, srslte::log_ref
|
|||
{
|
||||
// msg_tpye
|
||||
if (header->message_type != GTPU_MSG_DATA_PDU && header->message_type != GTPU_MSG_ECHO_REQUEST &&
|
||||
header->message_type != GTPU_MSG_ECHO_RESPONSE) {
|
||||
header->message_type != GTPU_MSG_ECHO_RESPONSE && header->message_type != GTPU_MSG_END_MARKER) {
|
||||
gtpu_log->error("gtpu_header - Unhandled message type: 0x%x\n", header->message_type);
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -538,15 +538,19 @@ void rrc::process_release_complete(uint16_t rnti)
|
|||
{
|
||||
rrc_log->info("Received Release Complete rnti=0x%x\n", rnti);
|
||||
auto user_it = users.find(rnti);
|
||||
if (user_it != users.end()) {
|
||||
if (!user_it->second->is_idle()) {
|
||||
rlc->clear_buffer(rnti);
|
||||
user_it->second->send_connection_release();
|
||||
}
|
||||
if (user_it == users.end()) {
|
||||
rrc_log->error("Received ReleaseComplete for unknown rnti=0x%x\n", rnti);
|
||||
return;
|
||||
}
|
||||
ue* u = user_it->second.get();
|
||||
|
||||
if (u->is_idle() or u->mobility_handler->is_ho_running()) {
|
||||
rem_user_thread(rnti);
|
||||
} else if (not u->is_idle()) {
|
||||
rlc->clear_buffer(rnti);
|
||||
user_it->second->send_connection_release();
|
||||
// delay user deletion for ~50 TTI (until RRC release is sent)
|
||||
task_sched.defer_callback(50, [this, rnti]() { rem_user_thread(rnti); });
|
||||
} else {
|
||||
rrc_log->error("Received ReleaseComplete for unknown rnti=0x%x\n", rnti);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -280,6 +280,12 @@ void gtpu::handle_gtpu_s1u_rx_packet(srslte::unique_byte_buffer_t pdu, const soc
|
|||
}
|
||||
pdcp->write_sdu(rnti, lcid, std::move(pdu));
|
||||
} break;
|
||||
case GTPU_MSG_END_MARKER: {
|
||||
rnti_lcid_t rnti_lcid = teidin_to_rntilcid(header.teid);
|
||||
uint16_t rnti = rnti_lcid.rnti;
|
||||
gtpu_log->info("Received GTPU End Marker for rnti=0x%x.\n", rnti);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue