The following code snippet is a part of wifi-phy.cc .
Both in RX and TX states the simulator is triggering NotifyRxDrop. Kindly explain the logic, if this is not a bug.
case WifiPhyState::RX:
NS_ASSERT (m_currentEvent != 0);
if (m_frameCaptureModel != 0
&& m_frameCaptureModel->CaptureNewFrame (m_currentEvent, event))
{
AbortCurrentReception ();
NS_LOG_DEBUG ("Switch to new packet");
StartRx (packet, txVector, mpdutype, rxPowerW, rxDuration, event);
}
else
{
NS_LOG_DEBUG ("drop packet because already in Rx (power=" <<
rxPowerW << "W)");
NotifyRxDrop (packet);
if (endRx > Simulator::Now () + m_state->GetDelayUntilIdle ())
{
//that packet will be noise _after_ the reception of the
//currently-received packet.
MaybeCcaBusyDuration ();
return;
}
}
break;
case WifiPhyState::TX:
NS_LOG_DEBUG ("drop packet because already in Tx (power=" <<
rxPowerW << "W)");
NotifyRxDrop (packet);
if (endRx > Simulator::Now () + m_state->GetDelayUntilIdle ())
{
//that packet will be noise _after_ the transmission of the
//currently-transmitted packet.
MaybeCcaBusyDuration ();
return;
}
break;