# HG changeset patch # User Sébastien Deronne # Date 1442250430 -7200 # Node ID 12363bc317645ba9342298eb87bb4683e80ecf2b # Parent 886aad6f67021ca1e6b0c2d26783c30c91a5de7d Avoid unexpected requests to DCF when packets get queued during EdcaTxopN::MissedAck or during EdcaTxopN::MissedCts diff -r 886aad6f6702 -r 12363bc31764 src/wifi/model/edca-txop-n.cc --- a/src/wifi/model/edca-txop-n.cc Fri Sep 11 21:50:40 2015 +0200 +++ b/src/wifi/model/edca-txop-n.cc Mon Sep 14 19:07:10 2015 +0200 @@ -669,7 +669,7 @@ if (!NeedRtsRetransmission ()) { NS_LOG_DEBUG ("Cts Fail"); - m_currentPacket = 0; + bool resetCurrentPacket = true; m_stationManager->ReportFinalRtsFailed (m_currentHdr.GetAddr1 (), &m_currentHdr); if (!m_txFailedCallback.IsNull ()) { @@ -711,9 +711,14 @@ hdr.SetNoMoreFragments (); m_currentPacket = request.bar; m_currentHdr = hdr; + resetCurrentPacket = false; } } //to reset the dcf. + if (resetCurrentPacket == true) + { + m_currentPacket = 0; + } m_dcf->ResetCw (); } else @@ -817,8 +822,7 @@ { NS_LOG_DEBUG ("Ack Fail"); m_stationManager->ReportFinalDataFailed (m_currentHdr.GetAddr1 (), &m_currentHdr); - //to reset the dcf. - m_currentPacket = 0; + bool resetCurrentPacket = true; if (!m_txFailedCallback.IsNull ()) { m_txFailedCallback (m_currentHdr); @@ -859,8 +863,14 @@ hdr.SetNoMoreFragments (); m_currentPacket = request.bar; m_currentHdr = hdr; + resetCurrentPacket = false; } } + //to reset the dcf. + if (resetCurrentPacket == true) + { + m_currentPacket = 0; + } m_dcf->ResetCw (); } else