diff -r c1bd4ffb5e47 src/devices/wifi/dcf-manager.cc --- a/src/devices/wifi/dcf-manager.cc Tue Sep 29 10:16:17 2009 -0700 +++ b/src/devices/wifi/dcf-manager.cc Wed Sep 30 00:47:21 2009 +0400 @@ -244,6 +244,7 @@ m_lastSwitchingDuration (MicroSeconds (0)), m_rxing (false), m_slotTime (Seconds (0.0)), + m_slotTimeInvert (Scalar (1) / Seconds (10.0)), m_sifs (Seconds (0.0)), m_phyListener (0), m_lowListener (0) @@ -274,6 +275,7 @@ DcfManager::SetSlot (Time slotTime) { m_slotTime = slotTime; + m_slotTimeInvert = Scalar (1) / slotTime; } void DcfManager::SetSifs (Time sifs) @@ -519,7 +521,7 @@ Time backoffStart = GetBackoffStartFor (state); if (backoffStart <= Simulator::Now ()) { - Scalar nSlots = (Simulator::Now () - backoffStart) / m_slotTime; + Scalar nSlots = (Simulator::Now () - backoffStart) * m_slotTimeInvert; uint32_t nIntSlots = lrint (nSlots.GetDouble ()); uint32_t n = std::min (nIntSlots, state->GetBackoffSlots ()); MY_DEBUG ("dcf " << k << " dec backoff slots=" << n); diff -r c1bd4ffb5e47 src/devices/wifi/dcf-manager.h --- a/src/devices/wifi/dcf-manager.h Tue Sep 29 10:16:17 2009 -0700 +++ b/src/devices/wifi/dcf-manager.h Wed Sep 30 00:47:21 2009 +0400 @@ -324,6 +324,7 @@ Time m_eifsNoDifs; EventId m_accessTimeout; Time m_slotTime; + TimeInvert m_slotTimeInvert; Time m_sifs; class PhyListener *m_phyListener; class LowDcfListener *m_lowListener;