lte: eNB PHY to remove Tbs, SRS and Dl/UL DCIs upon UE removal
This commit is contained in:
@@ -952,6 +952,58 @@ LteEnbPhy::DoRemoveUe (uint16_t rnti)
|
||||
m_paMap.erase (it);
|
||||
}
|
||||
|
||||
//additional data to be removed
|
||||
m_uplinkSpectrumPhy->RemoveExpectedTb (rnti);
|
||||
//remove srs info to avoid trace errors
|
||||
std::map<uint16_t, uint16_t>::iterator sit = m_srsSampleCounterMap.find (rnti);
|
||||
if (sit != m_srsSampleCounterMap.end ())
|
||||
{
|
||||
m_srsSampleCounterMap.erase (rnti);
|
||||
}
|
||||
//remove DL_DCI message otherwise errors occur for m_dlPhyTransmission trace
|
||||
//remove also any UL_DCI message for the UE to be removed
|
||||
|
||||
for (auto & ctrlMessageList : m_controlMessagesQueue)
|
||||
{
|
||||
std::list<Ptr<LteControlMessage> >::iterator ctrlMsgListIt = ctrlMessageList.begin ();
|
||||
while (ctrlMsgListIt != ctrlMessageList.end ())
|
||||
{
|
||||
Ptr<LteControlMessage> msg = (*ctrlMsgListIt);
|
||||
if (msg->GetMessageType () == LteControlMessage::DL_DCI)
|
||||
{
|
||||
auto dci = DynamicCast<DlDciLteControlMessage> (msg);
|
||||
if (dci->GetDci ().m_rnti == rnti)
|
||||
{
|
||||
NS_LOG_INFO ("DL_DCI to be sent from cell id : "
|
||||
<< m_cellId << " to RNTI : " << rnti << " is deleted");
|
||||
ctrlMsgListIt = ctrlMessageList.erase (ctrlMsgListIt);
|
||||
}
|
||||
else
|
||||
{
|
||||
++ctrlMsgListIt;
|
||||
}
|
||||
}
|
||||
else if (msg->GetMessageType () == LteControlMessage::UL_DCI)
|
||||
{
|
||||
auto dci = DynamicCast<UlDciLteControlMessage> (msg);
|
||||
if (dci->GetDci ().m_rnti == rnti)
|
||||
{
|
||||
NS_LOG_INFO ("UL_DCI to be sent from cell id : "
|
||||
<< m_cellId << " to RNTI : " << rnti << " is deleted");
|
||||
ctrlMsgListIt = ctrlMessageList.erase (ctrlMsgListIt);
|
||||
}
|
||||
else
|
||||
{
|
||||
++ctrlMsgListIt;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
++ctrlMsgListIt;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
Reference in New Issue
Block a user