diff --git a/src/lte/model/lte-enb-mac.cc b/src/lte/model/lte-enb-mac.cc index e1cb530f7..145ebc58e 100644 --- a/src/lte/model/lte-enb-mac.cc +++ b/src/lte/model/lte-enb-mac.cc @@ -843,6 +843,39 @@ LteEnbMac::DoRemoveUe (uint16_t rnti) m_cschedSapProvider->CschedUeReleaseReq (params); m_rlcAttached.erase (rnti); m_miDlHarqProcessesPackets.erase (rnti); + + NS_LOG_DEBUG ("start checking for unprocessed preamble for rnti: " << rnti); + //remove unprocessed preamble received for RACH during handover + std::map::iterator jt = m_allocatedNcRaPreambleMap.begin (); + while (jt != m_allocatedNcRaPreambleMap.end ()) + { + if (jt->second.rnti == rnti) + { + std::map::const_iterator it = m_receivedRachPreambleCount.find (jt->first); + if (it != m_receivedRachPreambleCount.end ()) + { + m_receivedRachPreambleCount.erase (it->first); + } + jt = m_allocatedNcRaPreambleMap.erase (jt); + } + else + { + ++jt; + } + } + + std::vector::iterator itCeRxd = m_ulCeReceived.begin (); + while (itCeRxd != m_ulCeReceived.end ()) + { + if (itCeRxd->m_rnti == rnti) + { + itCeRxd = m_ulCeReceived.erase (itCeRxd); + } + else + { + itCeRxd++; + } + } } void