src/devices/wifi/mac-low.cc
changeset 2176 8a8305b75bed
parent 2172 eb1adef495b6
child 2177 d2d60d000963
--- a/src/devices/wifi/mac-low.cc	Fri Dec 07 08:43:55 2007 +0100
+++ b/src/devices/wifi/mac-low.cc	Fri Dec 07 09:51:59 2007 +0100
@@ -998,12 +998,17 @@
    * RTS/CTS/DATA/ACK hanshake 
    */
   NS_ASSERT (m_currentPacket != 0);
-  WifiMode dataTxMode = GetDataTxMode (m_currentHdr.GetAddr1 (), GetCurrentSize ());
+  StartDataTxTimers ();
 
-  StartDataTxTimers ();
+  WifiMode dataTxMode = GetDataTxMode (m_currentHdr.GetAddr1 (), GetCurrentSize ());
+  Time newDuration = Seconds (0);
+  newDuration += GetSifs ();
+  newDuration += GetAckDuration (m_currentHdr.GetAddr1 (), dataTxMode);
   Time txDuration = m_phy->CalculateTxDuration (GetCurrentSize (), dataTxMode, WIFI_PREAMBLE_LONG);
   duration -= txDuration;
   duration -= GetSifs ();
+
+  duration = std::max (duration, newDuration);
   NS_ASSERT (duration >= MicroSeconds (0));
   m_currentHdr.SetDuration (duration);