# HG changeset patch # User Mathieu Lacage # Date 1220382011 25200 # Node ID 6c39b712a535a90181fd756a3f3ecac1e576cbe7 # Parent 0404af4cacf0c422ccf9ec4a5231f7fddbf29e78 move Address and ack timeout down to MacLow diff -r 0404af4cacf0 -r 6c39b712a535 src/devices/wifi/adhoc-wifi-mac.cc --- a/src/devices/wifi/adhoc-wifi-mac.cc Tue Sep 02 11:39:26 2008 -0700 +++ b/src/devices/wifi/adhoc-wifi-mac.cc Tue Sep 02 12:00:11 2008 -0700 @@ -94,6 +94,11 @@ m_dcfManager->SetEifsNoDifs (eifsNoDifs); m_eifsNoDifs = eifsNoDifs; } +void +AdhocWifiMac::SetAckTimeout (Time ackTimeout) +{ + m_low->SetAckTimeout (ackTimeout); +} Time AdhocWifiMac::GetSlot (void) const { @@ -109,7 +114,11 @@ { return m_eifsNoDifs; } - +Time +AdhocWifiMac::GetAckTimeout (void) const +{ + return m_low->GetAckTimeout (); +} void AdhocWifiMac::SetWifiPhy (Ptr phy) { @@ -141,7 +150,7 @@ Mac48Address AdhocWifiMac::GetAddress (void) const { - return m_address; + return m_low->GetAddress (); } Ssid AdhocWifiMac::GetSsid (void) const @@ -158,7 +167,7 @@ void AdhocWifiMac::SetAddress (Mac48Address address) { - m_address = address; + m_low->SetAddress (address); } void AdhocWifiMac::SetSsid (Ssid ssid) diff -r 0404af4cacf0 -r 6c39b712a535 src/devices/wifi/adhoc-wifi-mac.h --- a/src/devices/wifi/adhoc-wifi-mac.h Tue Sep 02 11:39:26 2008 -0700 +++ b/src/devices/wifi/adhoc-wifi-mac.h Tue Sep 02 12:00:11 2008 -0700 @@ -56,9 +56,11 @@ virtual void SetSlot (Time slotTime); virtual void SetSifs (Time sifs); virtual void SetEifsNoDifs (Time eifsNoDifs); + virtual void SetAckTimeout (Time ackTimeout); virtual Time GetSlot (void) const; virtual Time GetSifs (void) const; virtual Time GetEifsNoDifs (void) const; + virtual Time GetAckTimeout (void) const; virtual void SetWifiPhy (Ptr phy); virtual void SetWifiRemoteStationManager (Ptr stationManager); virtual void Enqueue (Ptr packet, Mac48Address to, Mac48Address from); @@ -86,7 +88,6 @@ DcfManager *m_dcfManager; MacRxMiddle *m_rxMiddle; Ptr m_low; - Mac48Address m_address; Ssid m_ssid; Time m_slot; Time m_sifs; diff -r 0404af4cacf0 -r 6c39b712a535 src/devices/wifi/mac-low.cc --- a/src/devices/wifi/mac-low.cc Tue Sep 02 11:39:26 2008 -0700 +++ b/src/devices/wifi/mac-low.cc Tue Sep 02 12:00:11 2008 -0700 @@ -33,7 +33,7 @@ NS_LOG_COMPONENT_DEFINE ("MacLow"); #define MY_DEBUG(x) \ - NS_LOG_DEBUG (m_mac->GetAddress () << " " << x) + NS_LOG_DEBUG (m_self << " " << x) namespace ns3 { @@ -356,6 +356,28 @@ { return m_mac; } + +void +MacLow::SetAddress (Mac48Address ad) +{ + m_self = ad; +} +void +MacLow::SetAckTimeout (Time ackTimeout) +{ + m_ackTimeout = ackTimeout; +} +Mac48Address +MacLow::GetAddress (void) const +{ + return m_self; +} +Time +MacLow::GetAckTimeout (void) const +{ + return m_ackTimeout; +} + void MacLow::SetRxCallback (Callback,const WifiMacHeader *> callback) { @@ -451,7 +473,7 @@ * that STA shall not respond to the RTS frame. */ if (isPrevNavZero && - hdr.GetAddr1 () == m_mac->GetAddress ()) + hdr.GetAddr1 () == m_self) { MY_DEBUG ("rx RTS from=" << hdr.GetAddr2 () << ", schedule CTS"); NS_ASSERT (m_sendCtsEvent.IsExpired ()); @@ -470,7 +492,7 @@ } } else if (hdr.IsCts () && - hdr.GetAddr1 () == m_mac->GetAddress () && + hdr.GetAddr1 () == m_self && m_ctsTimeoutEvent.IsRunning () && m_currentPacket != 0) { @@ -491,7 +513,7 @@ txMode); } else if (hdr.IsAck () && - hdr.GetAddr1 () == m_mac->GetAddress () && + hdr.GetAddr1 () == m_self && (m_normalAckTimeoutEvent.IsRunning () || m_fastAckTimeoutEvent.IsRunning () || m_superFastAckTimeoutEvent.IsRunning ()) && @@ -530,7 +552,7 @@ { MY_DEBUG ("rx drop " << hdr.GetTypeString ()); } - else if (hdr.GetAddr1 () == m_mac->GetAddress ()) + else if (hdr.GetAddr1 () == m_self) { WifiRemoteStation *station = GetStation (hdr.GetAddr2 ()); station->ReportRxOk (rxSnr, txMode); @@ -625,11 +647,6 @@ return m_mac->GetPifs (); } Time -MacLow::GetAckTimeout (void) const -{ - return m_mac->GetAckTimeout (); -} -Time MacLow::GetCtsTimeout (void) const { return m_mac->GetCtsTimeout (); @@ -722,7 +739,7 @@ } // XXX Note that we should also handle CF_END specially here // but we don't for now because we do not generate them. - else if (hdr.GetAddr1 () != m_mac->GetAddress ()) + else if (hdr.GetAddr1 () != m_self) { // see section 9.2.5.4 802.11-1999 bool navUpdated = DoNavStartNow (duration); @@ -884,7 +901,7 @@ rts.SetDsNotTo (); rts.SetNoMoreFragments (); rts.SetAddr1 (m_currentHdr.GetAddr1 ()); - rts.SetAddr2 (m_mac->GetAddress ()); + rts.SetAddr2 (m_self); WifiMode rtsTxMode = GetRtsTxMode (m_currentPacket, &m_currentHdr); Time duration = Seconds (0); if (m_txParams.HasDurationId ()) diff -r 0404af4cacf0 -r 6c39b712a535 src/devices/wifi/mac-low.h --- a/src/devices/wifi/mac-low.h Tue Sep 02 11:39:26 2008 -0700 +++ b/src/devices/wifi/mac-low.h Tue Sep 02 12:00:11 2008 -0700 @@ -284,6 +284,11 @@ Ptr GetMac (void); + void SetAddress (Mac48Address ad); + void SetAckTimeout (Time ackTimeout); + Mac48Address GetAddress (void) const; + Time GetAckTimeout (void) const; + /** * \param callback the callback which receives every incoming packet. * @@ -349,7 +354,6 @@ Time GetSifs (void) const; Time GetPifs (void) const; Time GetSlotTime (void) const; - Time GetAckTimeout (void) const; Time GetCtsTimeout (void) const; uint32_t GetSize (Ptr packet, const WifiMacHeader *hdr) const; Time NowUs (void) const; @@ -411,6 +415,8 @@ WifiMacHeader m_currentHdr; MacLowTransmissionParameters m_txParams; MacLowTransmissionListener *m_listener; + Mac48Address m_self; + Time m_ackTimeout; Time m_lastNavStart; Time m_lastNavDuration; diff -r 0404af4cacf0 -r 6c39b712a535 src/devices/wifi/nqap-wifi-mac.cc --- a/src/devices/wifi/nqap-wifi-mac.cc Tue Sep 02 11:39:26 2008 -0700 +++ b/src/devices/wifi/nqap-wifi-mac.cc Tue Sep 02 12:00:11 2008 -0700 @@ -147,6 +147,11 @@ m_dcfManager->SetEifsNoDifs (eifsNoDifs); m_eifsNoDifs = eifsNoDifs; } +void +NqapWifiMac::SetAckTimeout (Time ackTimeout) +{ + m_low->SetAckTimeout (ackTimeout); +} Time NqapWifiMac::GetSlot (void) const { @@ -162,8 +167,11 @@ { return m_eifsNoDifs; } - - +Time +NqapWifiMac::GetAckTimeout (void) const +{ + return m_low->GetAckTimeout (); +} void NqapWifiMac::SetWifiPhy (Ptr phy) { @@ -204,7 +212,7 @@ Mac48Address NqapWifiMac::GetAddress (void) const { - return m_address; + return m_low->GetAddress (); } Ssid NqapWifiMac::GetSsid (void) const @@ -220,7 +228,7 @@ NqapWifiMac::SetAddress (Mac48Address address) { NS_LOG_FUNCTION (address); - m_address = address; + m_low->SetAddress (address); } void NqapWifiMac::SetSsid (Ssid ssid) diff -r 0404af4cacf0 -r 6c39b712a535 src/devices/wifi/nqap-wifi-mac.h --- a/src/devices/wifi/nqap-wifi-mac.h Tue Sep 02 11:39:26 2008 -0700 +++ b/src/devices/wifi/nqap-wifi-mac.h Tue Sep 02 12:00:11 2008 -0700 @@ -62,9 +62,11 @@ virtual void SetSlot (Time slotTime); virtual void SetSifs (Time sifs); virtual void SetEifsNoDifs (Time eifsNoDifs); + virtual void SetAckTimeout (Time ackTimeout); virtual Time GetSlot (void) const; virtual Time GetSifs (void) const; virtual Time GetEifsNoDifs (void) const; + virtual Time GetAckTimeout (void) const; virtual void SetWifiPhy (Ptr phy); virtual void SetWifiRemoteStationManager (Ptr stationManager); virtual void Enqueue (Ptr packet, Mac48Address to, Mac48Address from); diff -r 0404af4cacf0 -r 6c39b712a535 src/devices/wifi/nqsta-wifi-mac.cc --- a/src/devices/wifi/nqsta-wifi-mac.cc Tue Sep 02 11:39:26 2008 -0700 +++ b/src/devices/wifi/nqsta-wifi-mac.cc Tue Sep 02 12:00:11 2008 -0700 @@ -147,6 +147,11 @@ m_dcfManager->SetEifsNoDifs (eifsNoDifs); m_eifsNoDifs = eifsNoDifs; } +void +NqstaWifiMac::SetAckTimeout (Time ackTimeout) +{ + m_low->SetAckTimeout (ackTimeout); +} Time NqstaWifiMac::GetSlot (void) const { @@ -162,7 +167,11 @@ { return m_eifsNoDifs; } - +Time +NqstaWifiMac::GetAckTimeout (void) const +{ + return m_low->GetAckTimeout (); +} void NqstaWifiMac::SetWifiPhy (Ptr phy) { diff -r 0404af4cacf0 -r 6c39b712a535 src/devices/wifi/nqsta-wifi-mac.h --- a/src/devices/wifi/nqsta-wifi-mac.h Tue Sep 02 11:39:26 2008 -0700 +++ b/src/devices/wifi/nqsta-wifi-mac.h Tue Sep 02 12:00:11 2008 -0700 @@ -62,9 +62,11 @@ virtual void SetSlot (Time slotTime); virtual void SetSifs (Time sifs); virtual void SetEifsNoDifs (Time eifsNoDifs); + virtual void SetAckTimeout (Time ackTimeout); virtual Time GetSlot (void) const; virtual Time GetSifs (void) const; virtual Time GetEifsNoDifs (void) const; + virtual Time GetAckTimeout (void) const; virtual void SetWifiPhy (Ptr phy); virtual void SetWifiRemoteStationManager (Ptr stationManager); virtual void Enqueue (Ptr packet, Mac48Address to, Mac48Address from); diff -r 0404af4cacf0 -r 6c39b712a535 src/devices/wifi/wifi-mac.cc --- a/src/devices/wifi/wifi-mac.cc Tue Sep 02 11:39:26 2008 -0700 +++ b/src/devices/wifi/wifi-mac.cc Tue Sep 02 12:00:11 2008 -0700 @@ -79,7 +79,8 @@ MakeTimeChecker ()) .AddAttribute ("AckTimeout", "When this timeout expires, the DATA/ACK handshake has failed.", TimeValue (GetDefaultCtsAckTimeout ()), - MakeTimeAccessor (&WifiMac::m_ackTimeout), + MakeTimeAccessor (&WifiMac::GetAckTimeout, + &WifiMac::SetAckTimeout), MakeTimeChecker ()) .AddAttribute ("Sifs", "The value of the SIFS constant.", TimeValue (GetDefaultSifs ()), @@ -129,11 +130,6 @@ m_ctsTimeout = ctsTimeout; } void -WifiMac::SetAckTimeout (Time ackTimeout) -{ - m_ackTimeout = ackTimeout; -} -void WifiMac::SetMaxPropagationDelay (Time delay) { m_maxPropagationDelay = delay; @@ -148,11 +144,6 @@ { return m_ctsTimeout; } -Time -WifiMac::GetAckTimeout (void) const -{ - return m_ackTimeout; -} Time WifiMac::GetMsduLifetime (void) const diff -r 0404af4cacf0 -r 6c39b712a535 src/devices/wifi/wifi-mac.h --- a/src/devices/wifi/wifi-mac.h Tue Sep 02 11:39:26 2008 -0700 +++ b/src/devices/wifi/wifi-mac.h Tue Sep 02 12:00:11 2008 -0700 @@ -68,7 +68,7 @@ /** * \param ackTimeout the duration of an ACK timeout. */ - void SetAckTimeout (Time ackTimeout); + virtual void SetAckTimeout (Time ackTimeout) = 0; /** * \param delay the max propagation delay. * @@ -99,7 +99,7 @@ /** * \returns the current ACK timeout duration. */ - Time GetAckTimeout (void) const; + virtual Time GetAckTimeout (void) const = 0; /** * Unused for now. */ @@ -180,7 +180,6 @@ Time m_pifs; Time m_ctsTimeout; - Time m_ackTimeout; Time m_maxPropagationDelay; uint32_t m_maxMsduSize; };