diff -r ed0b2d9301a1 src/devices/mesh/mesh-wifi-interface-mac.cc --- a/src/devices/mesh/mesh-wifi-interface-mac.cc Tue Dec 01 18:34:11 2009 +0300 +++ b/src/devices/mesh/mesh-wifi-interface-mac.cc Wed Dec 02 15:56:27 2009 +0300 @@ -748,6 +748,16 @@ break; } } +void +MeshWifiInterfaceMac::DoStart () +{ + m_beaconDca->Start (); + for (Queues::iterator i = m_queues.begin (); i != m_queues.end (); i ++) + { + i->second->Start (); + } + WifiMac::DoStart (); +} } // namespace ns3 diff -r ed0b2d9301a1 src/devices/mesh/mesh-wifi-interface-mac.h --- a/src/devices/mesh/mesh-wifi-interface-mac.h Tue Dec 01 18:34:11 2009 +0300 +++ b/src/devices/mesh/mesh-wifi-interface-mac.h Wed Dec 02 15:56:27 2009 +0300 @@ -178,6 +178,8 @@ bool GetBeaconGeneration () const; /// Real d-tor virtual void DoDispose (); + ///Initiator at t=0 + void DoStart (); private: typedef std::map > Queues; diff -r ed0b2d9301a1 src/devices/wifi/adhoc-wifi-mac.cc --- a/src/devices/wifi/adhoc-wifi-mac.cc Tue Dec 01 18:34:11 2009 +0300 +++ b/src/devices/wifi/adhoc-wifi-mac.cc Wed Dec 02 15:56:27 2009 +0300 @@ -298,4 +298,11 @@ { m_txErrCallback (hdr); } +void +AdhocWifiMac::DoStart () +{ + m_dca->Start (); + WifiMac::DoStart (); +} + } // namespace ns3 diff -r ed0b2d9301a1 src/devices/wifi/adhoc-wifi-mac.h --- a/src/devices/wifi/adhoc-wifi-mac.h Tue Dec 01 18:34:11 2009 +0300 +++ b/src/devices/wifi/adhoc-wifi-mac.h Wed Dec 02 15:56:27 2009 +0300 @@ -82,6 +82,7 @@ private: // inherited from Object base class. virtual void DoDispose (void); + void DoStart (); /* invoked by the MacLows. */ void ForwardUp (Ptr packet, const WifiMacHeader *hdr); AdhocWifiMac (const AdhocWifiMac & ctor_arg); diff -r ed0b2d9301a1 src/devices/wifi/dca-txop.cc --- a/src/devices/wifi/dca-txop.cc Tue Dec 01 18:34:11 2009 +0300 +++ b/src/devices/wifi/dca-txop.cc Wed Dec 02 15:56:27 2009 +0300 @@ -268,6 +268,14 @@ return m_low; } +void +DcaTxop::DoStart () +{ + m_dcf->ResetCw (); + m_dcf->StartBackoffNow (m_rng->GetNext (0, m_dcf->GetCw ())); + NS_LOG_UNCOND ("Starting backoff!"); + ns3::Dcf::DoStart (); +} bool DcaTxop::NeedRts (void) { diff -r ed0b2d9301a1 src/devices/wifi/dca-txop.h --- a/src/devices/wifi/dca-txop.h Tue Dec 01 18:34:11 2009 +0300 +++ b/src/devices/wifi/dca-txop.h Wed Dec 02 15:56:27 2009 +0300 @@ -121,7 +121,7 @@ // Inherited from ns3::Object Ptr Low (void); - + void DoStart (); /* dcf notifications forwarded here */ bool NeedsAccess (void) const; void NotifyAccessGranted (void); diff -r ed0b2d9301a1 src/devices/wifi/edca-txop-n.cc --- a/src/devices/wifi/edca-txop-n.cc Tue Dec 01 18:34:11 2009 +0300 +++ b/src/devices/wifi/edca-txop-n.cc Wed Dec 02 15:56:27 2009 +0300 @@ -686,5 +686,11 @@ { m_aggregator = aggr; } - +void +EdcaTxopN::DoStart () +{ + m_dcf->ResetCw (); + m_dcf->StartBackoffNow (m_rng->GetNext (0, m_dcf->GetCw ())); + ns3::Dcf::DoStart (); +} } //namespace ns3 diff -r ed0b2d9301a1 src/devices/wifi/edca-txop-n.h --- a/src/devices/wifi/edca-txop-n.h Tue Dec 01 18:34:11 2009 +0300 +++ b/src/devices/wifi/edca-txop-n.h Wed Dec 02 15:56:27 2009 +0300 @@ -132,6 +132,7 @@ void SetMsduAggregator (Ptr aggr); private: + void DoStart (); /** * This functions are used only to correctly set addresses in a-msdu subframe. * If aggregating sta is a STA (in an infrastructured network): diff -r ed0b2d9301a1 src/devices/wifi/nqap-wifi-mac.cc --- a/src/devices/wifi/nqap-wifi-mac.cc Tue Dec 01 18:34:11 2009 +0300 +++ b/src/devices/wifi/nqap-wifi-mac.cc Wed Dec 02 15:56:27 2009 +0300 @@ -606,6 +606,8 @@ { m_beaconEvent = Simulator::ScheduleNow (&NqapWifiMac::SendOneBeacon, this); } + m_dca->Start (); + m_beaconDca->Start (); WifiMac::DoStart (); } diff -r ed0b2d9301a1 src/devices/wifi/nqsta-wifi-mac.cc --- a/src/devices/wifi/nqsta-wifi-mac.cc Tue Dec 01 18:34:11 2009 +0300 +++ b/src/devices/wifi/nqsta-wifi-mac.cc Wed Dec 02 15:56:27 2009 +0300 @@ -686,5 +686,10 @@ break; } } - +void +NqstaWifiMac::DoStart () +{ + m_dca->Start (); + WifiMac::DoStart (); +} } // namespace ns3 diff -r ed0b2d9301a1 src/devices/wifi/nqsta-wifi-mac.h --- a/src/devices/wifi/nqsta-wifi-mac.h Tue Dec 01 18:34:11 2009 +0300 +++ b/src/devices/wifi/nqsta-wifi-mac.h Wed Dec 02 15:56:27 2009 +0300 @@ -119,6 +119,7 @@ BEACON_MISSED, REFUSED }; + void DoStart (); void SetBssid (Mac48Address bssid); void SetActiveProbing (bool enable); bool GetActiveProbing (void) const; diff -r ed0b2d9301a1 src/devices/wifi/qadhoc-wifi-mac.cc --- a/src/devices/wifi/qadhoc-wifi-mac.cc Tue Dec 01 18:34:11 2009 +0300 +++ b/src/devices/wifi/qadhoc-wifi-mac.cc Wed Dec 02 15:56:27 2009 +0300 @@ -108,10 +108,6 @@ m_dcfManager = 0; m_low = 0; m_phy = 0; - m_voEdca = 0; - m_viEdca = 0; - m_beEdca = 0; - m_bkEdca = 0; m_stationManager = 0; for (Queues::iterator i = m_queues.begin (); i != m_queues.end (); ++i) { @@ -445,5 +441,14 @@ break; } } +void +QadhocWifiMac::DoStart () +{ + for (Queues::iterator i = m_queues.begin (); i != m_queues.end (); ++i) + { + i->second->Start (); + } + WifiMac::DoStart (); +} } //namespace ns3 diff -r ed0b2d9301a1 src/devices/wifi/qadhoc-wifi-mac.h --- a/src/devices/wifi/qadhoc-wifi-mac.h Tue Dec 01 18:34:11 2009 +0300 +++ b/src/devices/wifi/qadhoc-wifi-mac.h Wed Dec 02 15:56:27 2009 +0300 @@ -78,6 +78,7 @@ private: Callback, Mac48Address, Mac48Address> m_forwardUp; virtual void DoDispose (void); + void DoStart (); void Receive (Ptr packet, const WifiMacHeader *hdr); void ForwardUp (Ptr packet, Mac48Address from, Mac48Address to); QadhocWifiMac &operator = (const QadhocWifiMac &); @@ -101,10 +102,6 @@ Ptr GetBKQueue (void) const; Queues m_queues; - Ptr m_voEdca; - Ptr m_viEdca; - Ptr m_beEdca; - Ptr m_bkEdca; Ptr m_low; Ptr m_phy; Ptr m_stationManager; diff -r ed0b2d9301a1 src/devices/wifi/qap-wifi-mac.cc --- a/src/devices/wifi/qap-wifi-mac.cc Tue Dec 01 18:34:11 2009 +0300 +++ b/src/devices/wifi/qap-wifi-mac.cc Wed Dec 02 15:56:27 2009 +0300 @@ -791,6 +791,11 @@ void QapWifiMac::DoStart (void) { + m_beaconDca->Start (); + for (Queues::iterator i = m_queues.begin (); i != m_queues.end (); ++i) + { + i->second->Start (); + } m_beaconEvent.Cancel (); if (m_enableBeaconGeneration) { diff -r ed0b2d9301a1 src/devices/wifi/qsta-wifi-mac.cc --- a/src/devices/wifi/qsta-wifi-mac.cc Tue Dec 01 18:34:11 2009 +0300 +++ b/src/devices/wifi/qsta-wifi-mac.cc Wed Dec 02 15:56:27 2009 +0300 @@ -775,5 +775,13 @@ } } - +void +QstaWifiMac::DoStart () +{ + for (Queues::iterator i = m_queues.begin (); i != m_queues.end (); ++i) + { + i->second->Start (); + } + WifiMac::DoStart (); +} } //namespace ns3 diff -r ed0b2d9301a1 src/devices/wifi/qsta-wifi-mac.h --- a/src/devices/wifi/qsta-wifi-mac.h Tue Dec 01 18:34:11 2009 +0300 +++ b/src/devices/wifi/qsta-wifi-mac.h Wed Dec 02 15:56:27 2009 +0300 @@ -87,6 +87,7 @@ void StartActiveAssociation (void); private: + void DoStart (); void SetBssid (Mac48Address bssid); Mac48Address GetBroadcastBssid (void); void Receive (Ptr p, const WifiMacHeader *hdr);