--- 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);