wifi: Remove high latency TX vector tags
This commit is contained in:
@@ -80,7 +80,7 @@ AirtimeLinkMetricCalculator::CalculateMetric (Mac48Address peerAddress, Ptr<Mesh
|
||||
*/
|
||||
NS_ASSERT (!peerAddress.IsGroup ());
|
||||
//obtain current rate:
|
||||
WifiMode mode = mac->GetWifiRemoteStationManager ()->GetDataTxVector (peerAddress, &m_testHeader, m_testFrame).GetMode();
|
||||
WifiMode mode = mac->GetWifiRemoteStationManager ()->GetDataTxVector (m_testHeader).GetMode();
|
||||
//obtain frame error rate:
|
||||
double failAvg = mac->GetWifiRemoteStationManager ()->GetInfo (peerAddress).GetFrameErrorRate ();
|
||||
if (failAvg == 1)
|
||||
|
||||
@@ -292,10 +292,4 @@ AarfWifiManager::DoGetRtsTxVector (WifiRemoteStation *st)
|
||||
return rtsTxVector;
|
||||
}
|
||||
|
||||
bool
|
||||
AarfWifiManager::IsLowLatency (void) const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
} //namespace ns3
|
||||
|
||||
@@ -68,7 +68,6 @@ private:
|
||||
void DoReportFinalDataFailed (WifiRemoteStation *station);
|
||||
WifiTxVector DoGetDataTxVector (WifiRemoteStation *station);
|
||||
WifiTxVector DoGetRtsTxVector (WifiRemoteStation *station);
|
||||
bool IsLowLatency (void) const;
|
||||
|
||||
uint32_t m_minTimerThreshold; ///< minimum timer threshold
|
||||
uint32_t m_minSuccessThreshold; ///< minimum success threshold
|
||||
|
||||
@@ -371,12 +371,6 @@ AarfcdWifiManager::DoNeedRts (WifiRemoteStation *st,
|
||||
return station->m_rtsOn;
|
||||
}
|
||||
|
||||
bool
|
||||
AarfcdWifiManager::IsLowLatency (void) const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void
|
||||
AarfcdWifiManager::CheckRts (AarfcdWifiRemoteStation *station)
|
||||
{
|
||||
|
||||
@@ -84,7 +84,6 @@ private:
|
||||
WifiTxVector DoGetRtsTxVector (WifiRemoteStation *station);
|
||||
bool DoNeedRts (WifiRemoteStation *station,
|
||||
Ptr<const Packet> packet, bool normally);
|
||||
bool IsLowLatency (void) const;
|
||||
|
||||
/**
|
||||
* Check if the use of RTS for the given station can be turned off.
|
||||
|
||||
@@ -403,10 +403,4 @@ AmrrWifiManager::DoGetRtsTxVector (WifiRemoteStation *st)
|
||||
return rtsTxVector;
|
||||
}
|
||||
|
||||
bool
|
||||
AmrrWifiManager::IsLowLatency (void) const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
} //namespace ns3
|
||||
|
||||
@@ -71,7 +71,6 @@ private:
|
||||
void DoReportFinalDataFailed (WifiRemoteStation *station);
|
||||
WifiTxVector DoGetDataTxVector (WifiRemoteStation *station);
|
||||
WifiTxVector DoGetRtsTxVector (WifiRemoteStation *station);
|
||||
bool IsLowLatency (void) const;
|
||||
|
||||
/**
|
||||
* Update the mode used to send to the given station.
|
||||
|
||||
@@ -391,10 +391,4 @@ AparfWifiManager::DoGetRtsTxVector (WifiRemoteStation *st)
|
||||
return rtsTxVector;
|
||||
}
|
||||
|
||||
bool
|
||||
AparfWifiManager::IsLowLatency (void) const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
} //namespace ns3
|
||||
|
||||
@@ -84,7 +84,6 @@ private:
|
||||
void DoReportFinalDataFailed (WifiRemoteStation *station);
|
||||
WifiTxVector DoGetDataTxVector (WifiRemoteStation *station);
|
||||
WifiTxVector DoGetRtsTxVector (WifiRemoteStation *station);
|
||||
bool IsLowLatency (void) const;
|
||||
|
||||
/** Check for initializations.
|
||||
*
|
||||
|
||||
@@ -269,10 +269,4 @@ ArfWifiManager::DoGetRtsTxVector (WifiRemoteStation *st)
|
||||
return rtsTxVector;
|
||||
}
|
||||
|
||||
bool
|
||||
ArfWifiManager::IsLowLatency (void) const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
} //namespace ns3
|
||||
|
||||
@@ -74,7 +74,6 @@ private:
|
||||
void DoReportFinalDataFailed (WifiRemoteStation *station);
|
||||
WifiTxVector DoGetDataTxVector (WifiRemoteStation *station);
|
||||
WifiTxVector DoGetRtsTxVector (WifiRemoteStation *station);
|
||||
bool IsLowLatency (void) const;
|
||||
|
||||
uint32_t m_timerThreshold; ///< timer threshold
|
||||
uint32_t m_successThreshold; ///< success threshold
|
||||
|
||||
@@ -251,10 +251,4 @@ CaraWifiManager::DoNeedRts (WifiRemoteStation *st,
|
||||
return normally || station->m_failed >= m_probeThreshold;
|
||||
}
|
||||
|
||||
bool
|
||||
CaraWifiManager::IsLowLatency (void) const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
} //namespace ns3
|
||||
|
||||
@@ -72,7 +72,6 @@ private:
|
||||
WifiTxVector DoGetRtsTxVector (WifiRemoteStation *station);
|
||||
bool DoNeedRts (WifiRemoteStation *station,
|
||||
Ptr<const Packet> packet, bool normally);
|
||||
bool IsLowLatency (void) const;
|
||||
|
||||
uint32_t m_timerTimeout; ///< timer threshold
|
||||
uint32_t m_successThreshold; ///< success threshold
|
||||
|
||||
@@ -134,10 +134,4 @@ ConstantRateWifiManager::DoGetRtsTxVector (WifiRemoteStation *st)
|
||||
return WifiTxVector (m_ctlMode, GetDefaultTxPowerLevel (), GetPreambleForTransmission (m_ctlMode.GetModulationClass (), GetShortPreambleEnabled (), UseGreenfieldForDestination (GetAddress (st))), ConvertGuardIntervalToNanoSeconds (m_ctlMode, GetShortGuardIntervalSupported (st), NanoSeconds (GetGuardInterval (st))), 1, 1, 0, GetChannelWidthForTransmission (m_ctlMode, GetChannelWidth (st)), GetAggregation (st), false);
|
||||
}
|
||||
|
||||
bool
|
||||
ConstantRateWifiManager::IsLowLatency (void) const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
} //namespace ns3
|
||||
|
||||
@@ -60,7 +60,6 @@ private:
|
||||
void DoReportFinalDataFailed (WifiRemoteStation *station);
|
||||
WifiTxVector DoGetDataTxVector (WifiRemoteStation *station);
|
||||
WifiTxVector DoGetRtsTxVector (WifiRemoteStation *station);
|
||||
bool IsLowLatency (void) const;
|
||||
|
||||
WifiMode m_dataMode; //!< Wifi mode for unicast Data frames
|
||||
WifiMode m_ctlMode; //!< Wifi mode for RTS frames
|
||||
|
||||
@@ -572,10 +572,4 @@ IdealWifiManager::GetLastObservedSnrForChannelWidth (IdealWifiRemoteStation *sta
|
||||
return snr;
|
||||
}
|
||||
|
||||
bool
|
||||
IdealWifiManager::IsLowLatency (void) const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
} //namespace ns3
|
||||
|
||||
@@ -77,7 +77,6 @@ private:
|
||||
void DoReportFinalDataFailed (WifiRemoteStation *station);
|
||||
WifiTxVector DoGetDataTxVector (WifiRemoteStation *station);
|
||||
WifiTxVector DoGetRtsTxVector (WifiRemoteStation *station);
|
||||
bool IsLowLatency (void) const;
|
||||
|
||||
/**
|
||||
* Reset the station, invoked if the maximum amount of retries has failed.
|
||||
|
||||
@@ -1275,15 +1275,13 @@ MacLow::GetCtsDuration (WifiTxVector ctsTxVector) const
|
||||
WifiTxVector
|
||||
MacLow::GetRtsTxVector (Ptr<const WifiMacQueueItem> item) const
|
||||
{
|
||||
Mac48Address to = item->GetHeader ().GetAddr1 ();
|
||||
return m_stationManager->GetRtsTxVector (to, item->GetPacket ());
|
||||
return m_stationManager->GetRtsTxVector (item->GetHeader ().GetAddr1 ());
|
||||
}
|
||||
|
||||
WifiTxVector
|
||||
MacLow::GetDataTxVector (Ptr<const WifiMacQueueItem> item) const
|
||||
{
|
||||
Mac48Address to = item->GetHeader ().GetAddr1 ();
|
||||
return m_stationManager->GetDataTxVector (to, &item->GetHeader (), item->GetPacket ());
|
||||
return m_stationManager->GetDataTxVector (item->GetHeader ());
|
||||
}
|
||||
|
||||
Time
|
||||
|
||||
@@ -1000,12 +1000,6 @@ MinstrelHtWifiManager::CountRetries (MinstrelHtWifiRemoteStation *station)
|
||||
}
|
||||
}
|
||||
|
||||
bool
|
||||
MinstrelHtWifiManager::IsLowLatency (void) const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
uint16_t
|
||||
MinstrelHtWifiManager::GetNextSample (MinstrelHtWifiRemoteStation *station)
|
||||
{
|
||||
|
||||
@@ -239,7 +239,6 @@ private:
|
||||
void DoReportAmpduTxStatus (WifiRemoteStation *station,
|
||||
uint8_t nSuccessfulMpdus, uint8_t nFailedMpdus,
|
||||
double rxSnr, double dataSnr, uint16_t dataChannelWidth);
|
||||
bool IsLowLatency (void) const;
|
||||
bool DoNeedRetransmission (WifiRemoteStation *st, Ptr<const Packet> packet, bool normally);
|
||||
|
||||
/**
|
||||
|
||||
@@ -891,12 +891,6 @@ MinstrelWifiManager::DoNeedRetransmission (WifiRemoteStation *st, Ptr<const Pack
|
||||
}
|
||||
}
|
||||
|
||||
bool
|
||||
MinstrelWifiManager::IsLowLatency (void) const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
uint16_t
|
||||
MinstrelWifiManager::GetNextSample (MinstrelWifiRemoteStation *station)
|
||||
{
|
||||
|
||||
@@ -275,7 +275,6 @@ private:
|
||||
bool DoNeedRetransmission (WifiRemoteStation *st,
|
||||
Ptr<const Packet> packet, bool normally);
|
||||
|
||||
bool IsLowLatency (void) const;
|
||||
|
||||
/**
|
||||
* Estimate the TxTime of a packet with a given mode.
|
||||
|
||||
@@ -38,6 +38,7 @@ NS_LOG_COMPONENT_DEFINE ("OnoeWifiManager");
|
||||
struct OnoeWifiRemoteStation : public WifiRemoteStation
|
||||
{
|
||||
Time m_nextModeUpdate; ///< next mode update
|
||||
bool m_rateBlocked; ///< whether the rate cannot be changed
|
||||
uint32_t m_shortRetry; ///< short retry
|
||||
uint32_t m_longRetry; ///< long retry
|
||||
uint32_t m_tx_ok; ///< transmit OK
|
||||
@@ -113,6 +114,7 @@ OnoeWifiManager::DoCreateStation (void) const
|
||||
NS_LOG_FUNCTION (this);
|
||||
OnoeWifiRemoteStation *station = new OnoeWifiRemoteStation ();
|
||||
station->m_nextModeUpdate = Simulator::Now () + m_updatePeriod;
|
||||
station->m_rateBlocked = false;
|
||||
station->m_shortRetry = 0;
|
||||
station->m_longRetry = 0;
|
||||
station->m_tx_ok = 0;
|
||||
@@ -135,6 +137,7 @@ OnoeWifiManager::DoReportRtsFailed (WifiRemoteStation *st)
|
||||
NS_LOG_FUNCTION (this << st);
|
||||
OnoeWifiRemoteStation *station = static_cast<OnoeWifiRemoteStation*> (st);
|
||||
station->m_shortRetry++;
|
||||
station->m_rateBlocked = true; // do not change rate for retransmission
|
||||
}
|
||||
|
||||
void
|
||||
@@ -143,12 +146,15 @@ OnoeWifiManager::DoReportDataFailed (WifiRemoteStation *st)
|
||||
NS_LOG_FUNCTION (this << st);
|
||||
OnoeWifiRemoteStation *station = static_cast<OnoeWifiRemoteStation*> (st);
|
||||
station->m_longRetry++;
|
||||
station->m_rateBlocked = true; // do not change rate for retransmission
|
||||
}
|
||||
|
||||
void
|
||||
OnoeWifiManager::DoReportRtsOk (WifiRemoteStation *station, double ctsSnr, WifiMode ctsMode, double rtsSnr)
|
||||
OnoeWifiManager::DoReportRtsOk (WifiRemoteStation *st, double ctsSnr, WifiMode ctsMode, double rtsSnr)
|
||||
{
|
||||
NS_LOG_FUNCTION (this << station << ctsSnr << ctsMode << rtsSnr);
|
||||
NS_LOG_FUNCTION (this << st << ctsSnr << ctsMode << rtsSnr);
|
||||
OnoeWifiRemoteStation *station = static_cast<OnoeWifiRemoteStation*> (st);
|
||||
station->m_rateBlocked = true; // do not change rate
|
||||
}
|
||||
|
||||
void
|
||||
@@ -160,6 +166,7 @@ OnoeWifiManager::DoReportDataOk (WifiRemoteStation *st,
|
||||
OnoeWifiRemoteStation *station = static_cast<OnoeWifiRemoteStation*> (st);
|
||||
UpdateRetry (station);
|
||||
station->m_tx_ok++;
|
||||
station->m_rateBlocked = false; // we can change the rate for next packet
|
||||
}
|
||||
|
||||
void
|
||||
@@ -169,6 +176,7 @@ OnoeWifiManager::DoReportFinalRtsFailed (WifiRemoteStation *st)
|
||||
OnoeWifiRemoteStation *station = static_cast<OnoeWifiRemoteStation*> (st);
|
||||
UpdateRetry (station);
|
||||
station->m_tx_err++;
|
||||
station->m_rateBlocked = false; // we can change the rate for next packet
|
||||
}
|
||||
|
||||
void
|
||||
@@ -178,6 +186,7 @@ OnoeWifiManager::DoReportFinalDataFailed (WifiRemoteStation *st)
|
||||
OnoeWifiRemoteStation *station = static_cast<OnoeWifiRemoteStation*> (st);
|
||||
UpdateRetry (station);
|
||||
station->m_tx_err++;
|
||||
station->m_rateBlocked = false; // we can change the rate for next packet
|
||||
}
|
||||
|
||||
void
|
||||
@@ -193,7 +202,7 @@ void
|
||||
OnoeWifiManager::UpdateMode (OnoeWifiRemoteStation *station)
|
||||
{
|
||||
NS_LOG_FUNCTION (this << station);
|
||||
if (Simulator::Now () < station->m_nextModeUpdate)
|
||||
if (Simulator::Now () < station->m_nextModeUpdate || station->m_rateBlocked)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -356,10 +365,4 @@ OnoeWifiManager::DoGetRtsTxVector (WifiRemoteStation *st)
|
||||
return rtsTxVector;
|
||||
}
|
||||
|
||||
bool
|
||||
OnoeWifiManager::IsLowLatency (void) const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
} //namespace ns3
|
||||
|
||||
@@ -72,7 +72,6 @@ private:
|
||||
void DoReportFinalDataFailed (WifiRemoteStation *station);
|
||||
WifiTxVector DoGetDataTxVector (WifiRemoteStation *station);
|
||||
WifiTxVector DoGetRtsTxVector (WifiRemoteStation *station);
|
||||
bool IsLowLatency (void) const;
|
||||
|
||||
/**
|
||||
* Update the number of retry (both short and long).
|
||||
|
||||
@@ -363,10 +363,4 @@ ParfWifiManager::DoGetRtsTxVector (WifiRemoteStation *st)
|
||||
return rtsTxVector;
|
||||
}
|
||||
|
||||
bool
|
||||
ParfWifiManager::IsLowLatency (void) const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
} //namespace ns3
|
||||
|
||||
@@ -72,7 +72,6 @@ private:
|
||||
void DoReportFinalDataFailed (WifiRemoteStation *station);
|
||||
WifiTxVector DoGetDataTxVector (WifiRemoteStation *station);
|
||||
WifiTxVector DoGetRtsTxVector (WifiRemoteStation *station);
|
||||
bool IsLowLatency (void) const;
|
||||
|
||||
/** Check for initializations.
|
||||
*
|
||||
|
||||
@@ -1452,7 +1452,6 @@ QosTxop::PushFront (Ptr<const Packet> packet, const WifiMacHeader &hdr)
|
||||
{
|
||||
NS_LOG_FUNCTION (this << packet << &hdr);
|
||||
WifiMacTrailer fcs;
|
||||
m_stationManager->PrepareForQueue (hdr.GetAddr1 (), packet);
|
||||
m_queue->PushFront (Create<WifiMacQueueItem> (packet, hdr));
|
||||
StartAccessIfNeeded ();
|
||||
}
|
||||
|
||||
@@ -473,10 +473,4 @@ RraaWifiManager::GetThresholds (RraaWifiRemoteStation *station, uint8_t index) c
|
||||
return GetThresholds (station, mode);
|
||||
}
|
||||
|
||||
bool
|
||||
RraaWifiManager::IsLowLatency (void) const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
} //namespace ns3
|
||||
|
||||
@@ -91,7 +91,6 @@ private:
|
||||
WifiTxVector DoGetRtsTxVector (WifiRemoteStation *station);
|
||||
bool DoNeedRts (WifiRemoteStation *st,
|
||||
Ptr<const Packet> packet, bool normally);
|
||||
bool IsLowLatency (void) const;
|
||||
|
||||
/**
|
||||
* Check for initializations.
|
||||
|
||||
@@ -611,10 +611,4 @@ RrpaaWifiManager::GetThresholds (RrpaaWifiRemoteStation *station, uint8_t index)
|
||||
return GetThresholds (station, mode);
|
||||
}
|
||||
|
||||
bool
|
||||
RrpaaWifiManager::IsLowLatency (void) const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace ns3
|
||||
|
||||
@@ -116,7 +116,6 @@ private:
|
||||
virtual WifiTxVector DoGetRtsTxVector (WifiRemoteStation *station);
|
||||
virtual bool DoNeedRts (WifiRemoteStation *st,
|
||||
Ptr<const Packet> packet, bool normally);
|
||||
virtual bool IsLowLatency (void) const;
|
||||
|
||||
/**
|
||||
* Check for initializations.
|
||||
|
||||
@@ -1,197 +0,0 @@
|
||||
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
|
||||
/*
|
||||
* Copyright (c) 2005,2006,2007 INRIA
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation;
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
|
||||
*/
|
||||
|
||||
#include "tx-vector-tag.h"
|
||||
|
||||
/***************************************************************
|
||||
* Packet Mode Tagger
|
||||
***************************************************************/
|
||||
|
||||
namespace ns3 {
|
||||
|
||||
HighLatencyDataTxVectorTag::HighLatencyDataTxVectorTag ()
|
||||
{
|
||||
}
|
||||
|
||||
HighLatencyDataTxVectorTag::HighLatencyDataTxVectorTag (WifiTxVector dataTxVector)
|
||||
: m_dataTxVector (dataTxVector)
|
||||
{
|
||||
}
|
||||
|
||||
WifiTxVector
|
||||
HighLatencyDataTxVectorTag::GetDataTxVector (void) const
|
||||
{
|
||||
return m_dataTxVector;
|
||||
}
|
||||
|
||||
TypeId
|
||||
HighLatencyDataTxVectorTag::GetTypeId (void)
|
||||
{
|
||||
static TypeId tid = TypeId ("ns3::HighLatencyDataTxVectorTag")
|
||||
.SetParent<Tag> ()
|
||||
.SetGroupName ("Wifi")
|
||||
.AddConstructor<HighLatencyDataTxVectorTag> ()
|
||||
;
|
||||
return tid;
|
||||
}
|
||||
|
||||
TypeId
|
||||
HighLatencyDataTxVectorTag::GetInstanceTypeId (void) const
|
||||
{
|
||||
return GetTypeId ();
|
||||
}
|
||||
|
||||
uint32_t
|
||||
HighLatencyDataTxVectorTag::GetSerializedSize (void) const
|
||||
{
|
||||
return sizeof (WifiTxVector);
|
||||
}
|
||||
|
||||
void
|
||||
HighLatencyDataTxVectorTag::Serialize (TagBuffer i) const
|
||||
{
|
||||
i.Write ((uint8_t *)&m_dataTxVector, sizeof (WifiTxVector));
|
||||
}
|
||||
|
||||
void
|
||||
HighLatencyDataTxVectorTag::Deserialize (TagBuffer i)
|
||||
{
|
||||
i.Read ((uint8_t *)&m_dataTxVector, sizeof (WifiTxVector));
|
||||
}
|
||||
|
||||
void
|
||||
HighLatencyDataTxVectorTag::Print (std::ostream &os) const
|
||||
{
|
||||
os << "Data=" << m_dataTxVector;
|
||||
}
|
||||
|
||||
HighLatencyRtsTxVectorTag::HighLatencyRtsTxVectorTag ()
|
||||
{
|
||||
}
|
||||
|
||||
HighLatencyRtsTxVectorTag::HighLatencyRtsTxVectorTag (WifiTxVector rtsTxVector)
|
||||
: m_rtsTxVector (rtsTxVector)
|
||||
{
|
||||
}
|
||||
|
||||
WifiTxVector
|
||||
HighLatencyRtsTxVectorTag::GetRtsTxVector (void) const
|
||||
{
|
||||
return m_rtsTxVector;
|
||||
}
|
||||
|
||||
TypeId
|
||||
HighLatencyRtsTxVectorTag::GetTypeId (void)
|
||||
{
|
||||
static TypeId tid = TypeId ("ns3::HighLatencyRtsTxVectorTag")
|
||||
.SetParent<Tag> ()
|
||||
.SetGroupName ("Wifi")
|
||||
.AddConstructor<HighLatencyRtsTxVectorTag> ()
|
||||
;
|
||||
return tid;
|
||||
}
|
||||
|
||||
TypeId
|
||||
HighLatencyRtsTxVectorTag::GetInstanceTypeId (void) const
|
||||
{
|
||||
return GetTypeId ();
|
||||
}
|
||||
|
||||
uint32_t
|
||||
HighLatencyRtsTxVectorTag::GetSerializedSize (void) const
|
||||
{
|
||||
return sizeof (WifiTxVector);
|
||||
}
|
||||
|
||||
void
|
||||
HighLatencyRtsTxVectorTag::Serialize (TagBuffer i) const
|
||||
{
|
||||
i.Write ((uint8_t *)&m_rtsTxVector, sizeof (WifiTxVector));
|
||||
}
|
||||
|
||||
void
|
||||
HighLatencyRtsTxVectorTag::Deserialize (TagBuffer i)
|
||||
{
|
||||
i.Read ((uint8_t *)&m_rtsTxVector, sizeof (WifiTxVector));
|
||||
}
|
||||
|
||||
void
|
||||
HighLatencyRtsTxVectorTag::Print (std::ostream &os) const
|
||||
{
|
||||
os << "Rts=" << m_rtsTxVector;
|
||||
}
|
||||
|
||||
HighLatencyCtsToSelfTxVectorTag::HighLatencyCtsToSelfTxVectorTag ()
|
||||
{
|
||||
}
|
||||
|
||||
HighLatencyCtsToSelfTxVectorTag::HighLatencyCtsToSelfTxVectorTag (WifiTxVector ctsToSelfTxVector)
|
||||
: m_ctsToSelfTxVector (ctsToSelfTxVector)
|
||||
{
|
||||
}
|
||||
|
||||
WifiTxVector
|
||||
HighLatencyCtsToSelfTxVectorTag::GetCtsToSelfTxVector (void) const
|
||||
{
|
||||
return m_ctsToSelfTxVector;
|
||||
}
|
||||
|
||||
TypeId
|
||||
HighLatencyCtsToSelfTxVectorTag::GetTypeId (void)
|
||||
{
|
||||
static TypeId tid = TypeId ("ns3::HighLatencyCtsToSelfTxVectorTag")
|
||||
.SetParent<Tag> ()
|
||||
.SetGroupName ("Wifi")
|
||||
.AddConstructor<HighLatencyCtsToSelfTxVectorTag> ()
|
||||
;
|
||||
return tid;
|
||||
}
|
||||
|
||||
TypeId
|
||||
HighLatencyCtsToSelfTxVectorTag::GetInstanceTypeId (void) const
|
||||
{
|
||||
return GetTypeId ();
|
||||
}
|
||||
|
||||
uint32_t
|
||||
HighLatencyCtsToSelfTxVectorTag::GetSerializedSize (void) const
|
||||
{
|
||||
return sizeof (WifiTxVector);
|
||||
}
|
||||
|
||||
void
|
||||
HighLatencyCtsToSelfTxVectorTag::Serialize (TagBuffer i) const
|
||||
{
|
||||
i.Write ((uint8_t *)&m_ctsToSelfTxVector, sizeof (WifiTxVector));
|
||||
}
|
||||
|
||||
void
|
||||
HighLatencyCtsToSelfTxVectorTag::Deserialize (TagBuffer i)
|
||||
{
|
||||
i.Read ((uint8_t *)&m_ctsToSelfTxVector, sizeof (WifiTxVector));
|
||||
}
|
||||
|
||||
void
|
||||
HighLatencyCtsToSelfTxVectorTag::Print (std::ostream &os) const
|
||||
{
|
||||
os << "Cts To Self=" << m_ctsToSelfTxVector;
|
||||
}
|
||||
|
||||
} //namespace ns3
|
||||
@@ -1,135 +0,0 @@
|
||||
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
|
||||
/*
|
||||
* Copyright (c) 2005,2006,2007 INRIA
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation;
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
|
||||
*/
|
||||
|
||||
#ifndef TX_VECTOR_TAG_H
|
||||
#define TX_VECTOR_TAG_H
|
||||
|
||||
#include "ns3/tag.h"
|
||||
#include "wifi-tx-vector.h"
|
||||
|
||||
/***************************************************************
|
||||
* Packet Mode Tagger
|
||||
***************************************************************/
|
||||
|
||||
namespace ns3 {
|
||||
|
||||
/**
|
||||
* HighLatencyDataTxVectorTag class
|
||||
*/
|
||||
class HighLatencyDataTxVectorTag : public Tag
|
||||
{
|
||||
public:
|
||||
HighLatencyDataTxVectorTag ();
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* \param dataTxVector TXVECTOR for data frames
|
||||
*/
|
||||
HighLatencyDataTxVectorTag (WifiTxVector dataTxVector);
|
||||
/**
|
||||
* \returns the transmission mode to use to send this packet
|
||||
*/
|
||||
WifiTxVector GetDataTxVector (void) const;
|
||||
|
||||
/**
|
||||
* \brief Get the type ID.
|
||||
* \return the object TypeId
|
||||
*/
|
||||
static TypeId GetTypeId (void);
|
||||
virtual TypeId GetInstanceTypeId (void) const;
|
||||
virtual uint32_t GetSerializedSize (void) const;
|
||||
virtual void Serialize (TagBuffer i) const;
|
||||
virtual void Deserialize (TagBuffer i);
|
||||
virtual void Print (std::ostream &os) const;
|
||||
|
||||
private:
|
||||
WifiTxVector m_dataTxVector; ///< TXVECTOR for data frames
|
||||
};
|
||||
|
||||
/**
|
||||
* HighLatencyRtsTxVectorTag class
|
||||
*/
|
||||
class HighLatencyRtsTxVectorTag : public Tag
|
||||
{
|
||||
public:
|
||||
HighLatencyRtsTxVectorTag ();
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* \param rtsTxVector TXVECTOR for RTS frames
|
||||
*/
|
||||
HighLatencyRtsTxVectorTag (WifiTxVector rtsTxVector);
|
||||
/**
|
||||
* \returns the transmission mode to use to send the RTS prior to the
|
||||
* transmission of the data packet itself.
|
||||
*/
|
||||
WifiTxVector GetRtsTxVector (void) const;
|
||||
|
||||
/**
|
||||
* \brief Get the type ID.
|
||||
* \return the object TypeId
|
||||
*/
|
||||
static TypeId GetTypeId (void);
|
||||
virtual TypeId GetInstanceTypeId (void) const;
|
||||
virtual uint32_t GetSerializedSize (void) const;
|
||||
virtual void Serialize (TagBuffer i) const;
|
||||
virtual void Deserialize (TagBuffer i);
|
||||
virtual void Print (std::ostream &os) const;
|
||||
|
||||
private:
|
||||
WifiTxVector m_rtsTxVector; ///< TXVECTOR for data frames
|
||||
};
|
||||
|
||||
/**
|
||||
* HighLatencyCtsToSelfTxVectorTag class
|
||||
*/
|
||||
class HighLatencyCtsToSelfTxVectorTag : public Tag
|
||||
{
|
||||
public:
|
||||
HighLatencyCtsToSelfTxVectorTag ();
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* \param ctsToSelfTxVector TXVECTOR for CTS-to-self frames
|
||||
*/
|
||||
HighLatencyCtsToSelfTxVectorTag (WifiTxVector ctsToSelfTxVector);
|
||||
/**
|
||||
* \returns the transmission mode to use for the CTS-to-self.
|
||||
*/
|
||||
WifiTxVector GetCtsToSelfTxVector (void) const;
|
||||
|
||||
/**
|
||||
* \brief Get the type ID.
|
||||
* \return the object TypeId
|
||||
*/
|
||||
static TypeId GetTypeId (void);
|
||||
virtual TypeId GetInstanceTypeId (void) const;
|
||||
virtual uint32_t GetSerializedSize (void) const;
|
||||
virtual void Serialize (TagBuffer i) const;
|
||||
virtual void Deserialize (TagBuffer i);
|
||||
virtual void Print (std::ostream &os) const;
|
||||
|
||||
private:
|
||||
WifiTxVector m_ctsToSelfTxVector; ///< TXVECTOR for CTS-to-self frames
|
||||
};
|
||||
|
||||
} //namespace ns3
|
||||
|
||||
#endif /* TX_VECTOR_TAG_H */
|
||||
@@ -319,7 +319,6 @@ Txop::Queue (Ptr<Packet> packet, const WifiMacHeader &hdr)
|
||||
// remove the priority tag attached, if any
|
||||
SocketPriorityTag priorityTag;
|
||||
packet->RemovePacketTag (priorityTag);
|
||||
m_stationManager->PrepareForQueue (hdr.GetAddr1 (), packet);
|
||||
if (m_channelAccessManager->NeedBackoffUponAccess (this))
|
||||
{
|
||||
GenerateBackoff ();
|
||||
|
||||
@@ -33,7 +33,6 @@
|
||||
#include "vht-configuration.h"
|
||||
#include "he-configuration.h"
|
||||
#include "wifi-net-device.h"
|
||||
#include "tx-vector-tag.h"
|
||||
|
||||
namespace ns3 {
|
||||
|
||||
@@ -47,16 +46,6 @@ WifiRemoteStationManager::GetTypeId (void)
|
||||
static TypeId tid = TypeId ("ns3::WifiRemoteStationManager")
|
||||
.SetParent<Object> ()
|
||||
.SetGroupName ("Wifi")
|
||||
.AddAttribute ("IsLowLatency",
|
||||
"If true, we attempt to model a so-called low-latency device: "
|
||||
"a device where decisions about TX parameters can be made on a per-packet basis and "
|
||||
"feedback about the transmission of each packet is obtained before sending the next. "
|
||||
"Otherwise, we model a high-latency device, that is a device where we cannot update "
|
||||
"our decision about TX parameters after every packet transmission.",
|
||||
TypeId::ATTR_GET,
|
||||
BooleanValue (true), //this value is ignored because there is no setter
|
||||
MakeBooleanAccessor (&WifiRemoteStationManager::IsLowLatency),
|
||||
MakeBooleanChecker ())
|
||||
.AddAttribute ("MaxSsrc",
|
||||
"The maximum number of retransmission attempts for any packet with size <= RtsCtsThreshold. "
|
||||
"This value will not have any effect on some rate control algorithms.",
|
||||
@@ -513,39 +502,12 @@ WifiRemoteStationManager::RecordDisassociated (Mac48Address address)
|
||||
LookupState (address)->m_state = WifiRemoteStationState::DISASSOC;
|
||||
}
|
||||
|
||||
void
|
||||
WifiRemoteStationManager::PrepareForQueue (Mac48Address address, Ptr<const Packet> packet)
|
||||
{
|
||||
NS_LOG_FUNCTION (this << address << packet);
|
||||
if (IsLowLatency () || address.IsGroup ())
|
||||
{
|
||||
return;
|
||||
}
|
||||
WifiRemoteStation *station = Lookup (address);
|
||||
WifiTxVector rts = DoGetRtsTxVector (station);
|
||||
WifiTxVector data = DoGetDataTxVector (station);
|
||||
WifiTxVector ctstoself = DoGetCtsToSelfTxVector ();
|
||||
HighLatencyDataTxVectorTag datatag;
|
||||
HighLatencyRtsTxVectorTag rtstag;
|
||||
HighLatencyCtsToSelfTxVectorTag ctstoselftag;
|
||||
//first, make sure that the tag is not here anymore.
|
||||
ConstCast<Packet> (packet)->RemovePacketTag (datatag);
|
||||
ConstCast<Packet> (packet)->RemovePacketTag (rtstag);
|
||||
ConstCast<Packet> (packet)->RemovePacketTag (ctstoselftag);
|
||||
datatag = HighLatencyDataTxVectorTag (data);
|
||||
rtstag = HighLatencyRtsTxVectorTag (rts);
|
||||
ctstoselftag = HighLatencyCtsToSelfTxVectorTag (ctstoself);
|
||||
//and then, add it back
|
||||
packet->AddPacketTag (datatag);
|
||||
packet->AddPacketTag (rtstag);
|
||||
packet->AddPacketTag (ctstoselftag);
|
||||
}
|
||||
|
||||
WifiTxVector
|
||||
WifiRemoteStationManager::GetDataTxVector (Mac48Address address, const WifiMacHeader *header, Ptr<const Packet> packet)
|
||||
WifiRemoteStationManager::GetDataTxVector (const WifiMacHeader &header)
|
||||
{
|
||||
NS_LOG_FUNCTION (this << address << *header << packet);
|
||||
if (!header->IsMgt () && address.IsGroup ())
|
||||
NS_LOG_FUNCTION (this << header);
|
||||
Mac48Address address = header.GetAddr1 ();
|
||||
if (!header.IsMgt () && address.IsGroup ())
|
||||
{
|
||||
WifiMode mode = GetNonUnicastMode ();
|
||||
WifiTxVector v;
|
||||
@@ -560,15 +522,8 @@ WifiRemoteStationManager::GetDataTxVector (Mac48Address address, const WifiMacHe
|
||||
v.SetStbc (0);
|
||||
return v;
|
||||
}
|
||||
if (!IsLowLatency ())
|
||||
{
|
||||
HighLatencyDataTxVectorTag datatag;
|
||||
bool found = ConstCast<Packet> (packet)->PeekPacketTag (datatag);
|
||||
NS_ASSERT (found);
|
||||
return datatag.GetDataTxVector ();
|
||||
}
|
||||
WifiTxVector txVector;
|
||||
if (header->IsMgt ())
|
||||
if (header.IsMgt ())
|
||||
{
|
||||
//Use the lowest basic rate for management frames
|
||||
WifiMode mgtMode;
|
||||
@@ -602,22 +557,7 @@ WifiRemoteStationManager::GetDataTxVector (Mac48Address address, const WifiMacHe
|
||||
}
|
||||
|
||||
WifiTxVector
|
||||
WifiRemoteStationManager::GetCtsToSelfTxVector (const WifiMacHeader *header,
|
||||
Ptr<const Packet> packet)
|
||||
{
|
||||
NS_LOG_FUNCTION (this << *header << packet);
|
||||
if (!IsLowLatency ())
|
||||
{
|
||||
HighLatencyCtsToSelfTxVectorTag ctstoselftag;
|
||||
bool found = ConstCast<Packet> (packet)->PeekPacketTag (ctstoselftag);
|
||||
NS_ASSERT (found);
|
||||
return ctstoselftag.GetCtsToSelfTxVector ();
|
||||
}
|
||||
return DoGetCtsToSelfTxVector ();
|
||||
}
|
||||
|
||||
WifiTxVector
|
||||
WifiRemoteStationManager::DoGetCtsToSelfTxVector (void)
|
||||
WifiRemoteStationManager::GetCtsToSelfTxVector (void)
|
||||
{
|
||||
WifiMode defaultMode = GetDefaultMode ();
|
||||
WifiPreamble defaultPreamble;
|
||||
@@ -651,9 +591,9 @@ WifiRemoteStationManager::DoGetCtsToSelfTxVector (void)
|
||||
}
|
||||
|
||||
WifiTxVector
|
||||
WifiRemoteStationManager::GetRtsTxVector (Mac48Address address, Ptr<const Packet> packet)
|
||||
WifiRemoteStationManager::GetRtsTxVector (Mac48Address address)
|
||||
{
|
||||
NS_LOG_FUNCTION (this << address << packet);
|
||||
NS_LOG_FUNCTION (this << address);
|
||||
if (address.IsGroup ())
|
||||
{
|
||||
WifiMode mode = GetNonUnicastMode ();
|
||||
@@ -669,13 +609,6 @@ WifiRemoteStationManager::GetRtsTxVector (Mac48Address address, Ptr<const Packet
|
||||
v.SetStbc (0);
|
||||
return v;
|
||||
}
|
||||
if (!IsLowLatency ())
|
||||
{
|
||||
HighLatencyRtsTxVectorTag rtstag;
|
||||
bool found = ConstCast<Packet> (packet)->PeekPacketTag (rtstag);
|
||||
NS_ASSERT (found);
|
||||
return rtstag.GetRtsTxVector ();
|
||||
}
|
||||
return DoGetRtsTxVector (Lookup (address));
|
||||
}
|
||||
|
||||
@@ -811,7 +744,7 @@ WifiRemoteStationManager::NeedRts (const WifiMacHeader *header, Ptr<const Packet
|
||||
{
|
||||
NS_LOG_FUNCTION (this << *header << packet);
|
||||
Mac48Address address = header->GetAddr1 ();
|
||||
WifiTxVector txVector = GetDataTxVector (address, header, packet);
|
||||
WifiTxVector txVector = GetDataTxVector (*header);
|
||||
WifiMode mode = txVector.GetMode ();
|
||||
if (address.IsGroup ())
|
||||
{
|
||||
|
||||
@@ -654,42 +654,18 @@ public:
|
||||
void RecordDisassociated (Mac48Address address);
|
||||
|
||||
/**
|
||||
* \param address remote address
|
||||
* \param packet the packet to queue
|
||||
*
|
||||
* This method is typically invoked just before queuing a packet for transmission.
|
||||
* It is a no-op unless the IsLowLatency attribute of the attached ns3::WifiRemoteStationManager
|
||||
* is set to false, in which case, the TX parameters of the packet are calculated and stored in
|
||||
* the packet as a tag. These TX parameters are later retrieved from GetDadaMode and GetRtsMode.
|
||||
*/
|
||||
void PrepareForQueue (Mac48Address address, Ptr<const Packet> packet);
|
||||
|
||||
/**
|
||||
* \param address remote address
|
||||
* \param header MAC header
|
||||
* \param packet the packet to send
|
||||
*
|
||||
* \return the TXVECTOR to use to send this packet
|
||||
*/
|
||||
WifiTxVector GetDataTxVector (Mac48Address address, const WifiMacHeader *header,
|
||||
Ptr<const Packet> packet);
|
||||
WifiTxVector GetDataTxVector (const WifiMacHeader &header);
|
||||
/**
|
||||
* \param address remote address
|
||||
* \param packet the packet to send
|
||||
*
|
||||
* \return the TXVECTOR to use to send the RTS prior to the
|
||||
* transmission of the data packet itself.
|
||||
*/
|
||||
WifiTxVector GetRtsTxVector (Mac48Address address, Ptr<const Packet> packet);
|
||||
/**
|
||||
* \param header MAC header
|
||||
* \param packet the packet to send
|
||||
*
|
||||
* \return the transmission mode to use to send the CTS-to-self prior to the
|
||||
* transmission of the data packet itself.
|
||||
*/
|
||||
WifiTxVector GetCtsToSelfTxVector (const WifiMacHeader *header,
|
||||
Ptr<const Packet> packet);
|
||||
WifiTxVector GetRtsTxVector (Mac48Address address);
|
||||
/**
|
||||
* Since CTS-to-self parameters are not dependent on the station,
|
||||
* it is implemented in wifi remote station manager
|
||||
@@ -697,7 +673,7 @@ public:
|
||||
* \return the transmission mode to use to send the CTS-to-self prior to the
|
||||
* transmission of the data packet itself.
|
||||
*/
|
||||
WifiTxVector DoGetCtsToSelfTxVector (void);
|
||||
WifiTxVector GetCtsToSelfTxVector (void);
|
||||
|
||||
/**
|
||||
* Should be invoked whenever the RtsTimeout associated to a transmission
|
||||
@@ -1122,13 +1098,6 @@ private:
|
||||
*/
|
||||
virtual bool DoNeedFragmentation (WifiRemoteStation *station,
|
||||
Ptr<const Packet> packet, bool normally);
|
||||
/**
|
||||
* \return whether this manager is a manager designed to work in low-latency environments.
|
||||
*
|
||||
* Note: In this context, low vs high latency is defined in <i>IEEE 802.11 Rate Adaptation:
|
||||
* A Practical Approach</i>, by M. Lacage, M.H. Manshaei, and T. Turletti.
|
||||
*/
|
||||
virtual bool IsLowLatency (void) const = 0;
|
||||
/**
|
||||
* \return a new station data structure
|
||||
*/
|
||||
|
||||
@@ -136,6 +136,7 @@ PowerRateAdaptationTest::TestParf ()
|
||||
*/
|
||||
Mac48Address remoteAddress = Mac48Address::Allocate ();
|
||||
WifiMacHeader packetHeader;
|
||||
packetHeader.SetAddr1 (remoteAddress);
|
||||
packetHeader.SetType (WIFI_MAC_DATA);
|
||||
packetHeader.SetQosTid (0);
|
||||
Ptr<Packet> packet = Create<Packet> (10);
|
||||
@@ -152,7 +153,7 @@ PowerRateAdaptationTest::TestParf ()
|
||||
/*
|
||||
* Parf initiates with maximal rate and power.
|
||||
*/
|
||||
WifiTxVector txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
WifiTxVector txVector = manager->GetDataTxVector (packetHeader);
|
||||
WifiMode mode = txVector.GetMode ();
|
||||
int power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -170,7 +171,7 @@ PowerRateAdaptationTest::TestParf ()
|
||||
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, 20, packet->GetSize ());
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -185,7 +186,7 @@ PowerRateAdaptationTest::TestParf ()
|
||||
*/
|
||||
manager->ReportDataFailed (remoteAddress, &packetHeader, packet->GetSize ());
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -205,7 +206,7 @@ PowerRateAdaptationTest::TestParf ()
|
||||
}
|
||||
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, 20, packet->GetSize ());
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -220,7 +221,7 @@ PowerRateAdaptationTest::TestParf ()
|
||||
|
||||
manager->ReportDataFailed (remoteAddress, &packetHeader, packet->GetSize ());
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -236,7 +237,7 @@ PowerRateAdaptationTest::TestParf ()
|
||||
manager->ReportDataFailed (remoteAddress, &packetHeader, packet->GetSize ());
|
||||
manager->ReportDataFailed (remoteAddress, &packetHeader, packet->GetSize ());
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -254,7 +255,7 @@ PowerRateAdaptationTest::TestParf ()
|
||||
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, 20, packet->GetSize ());
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -269,7 +270,7 @@ PowerRateAdaptationTest::TestParf ()
|
||||
|
||||
manager->ReportDataFailed (remoteAddress, &packetHeader, packet->GetSize ());
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -287,7 +288,7 @@ PowerRateAdaptationTest::TestParf ()
|
||||
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, 20, packet->GetSize ());
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -305,7 +306,7 @@ PowerRateAdaptationTest::TestParf ()
|
||||
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, 20, packet->GetSize ());
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -325,7 +326,7 @@ PowerRateAdaptationTest::TestParf ()
|
||||
manager->ReportDataFailed (remoteAddress,&packetHeader, packet->GetSize ());
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -356,6 +357,7 @@ PowerRateAdaptationTest::TestAparf ()
|
||||
*/
|
||||
Mac48Address remoteAddress = Mac48Address::Allocate ();
|
||||
WifiMacHeader packetHeader;
|
||||
packetHeader.SetAddr1 (remoteAddress);
|
||||
packetHeader.SetType (WIFI_MAC_DATA);
|
||||
packetHeader.SetQosTid (0);
|
||||
Ptr<Packet> packet = Create<Packet> (10);
|
||||
@@ -372,7 +374,7 @@ PowerRateAdaptationTest::TestAparf ()
|
||||
/*
|
||||
* Aparf initiates with maximal rate and power.
|
||||
*/
|
||||
WifiTxVector txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
WifiTxVector txVector = manager->GetDataTxVector (packetHeader);
|
||||
WifiMode mode = txVector.GetMode ();
|
||||
int power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -391,7 +393,7 @@ PowerRateAdaptationTest::TestAparf ()
|
||||
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, 20, packet->GetSize ());
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -406,7 +408,7 @@ PowerRateAdaptationTest::TestAparf ()
|
||||
*/
|
||||
manager->ReportDataFailed (remoteAddress, &packetHeader, packet->GetSize ());
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -425,7 +427,7 @@ PowerRateAdaptationTest::TestAparf ()
|
||||
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, 20, packet->GetSize ());
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -444,7 +446,7 @@ PowerRateAdaptationTest::TestAparf ()
|
||||
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, 20, packet->GetSize ());
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -462,7 +464,7 @@ PowerRateAdaptationTest::TestAparf ()
|
||||
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, 20, packet->GetSize ());
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -477,7 +479,7 @@ PowerRateAdaptationTest::TestAparf ()
|
||||
*/
|
||||
manager->ReportDataFailed (remoteAddress,&packetHeader, packet->GetSize ());
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -495,7 +497,7 @@ PowerRateAdaptationTest::TestAparf ()
|
||||
manager->ReportDataFailed (remoteAddress,&packetHeader, packet->GetSize ());
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -511,7 +513,7 @@ PowerRateAdaptationTest::TestAparf ()
|
||||
*/
|
||||
manager->ReportDataFailed (remoteAddress,&packetHeader, packet->GetSize ());
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -529,7 +531,7 @@ PowerRateAdaptationTest::TestAparf ()
|
||||
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, 20, packet->GetSize ());
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -549,7 +551,7 @@ PowerRateAdaptationTest::TestAparf ()
|
||||
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, 20, packet->GetSize ());
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -561,7 +563,7 @@ PowerRateAdaptationTest::TestAparf ()
|
||||
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, 20, packet->GetSize ());
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -598,6 +600,7 @@ PowerRateAdaptationTest::TestRrpaa ()
|
||||
*/
|
||||
Mac48Address remoteAddress = Mac48Address::Allocate ();
|
||||
WifiMacHeader packetHeader;
|
||||
packetHeader.SetAddr1 (remoteAddress);
|
||||
packetHeader.SetType (WIFI_MAC_DATA);
|
||||
packetHeader.SetQosTid (0);
|
||||
Ptr<Packet> packet = Create<Packet> (10);
|
||||
@@ -640,7 +643,7 @@ PowerRateAdaptationTest::TestRrpaa ()
|
||||
/*
|
||||
* RRPAA initiates with minimal rate and maximal power.
|
||||
*/
|
||||
WifiTxVector txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
WifiTxVector txVector = manager->GetDataTxVector (packetHeader);
|
||||
WifiMode mode = txVector.GetMode ();
|
||||
int power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -662,7 +665,7 @@ PowerRateAdaptationTest::TestRrpaa ()
|
||||
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, 20, packet->GetSize ());
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -674,7 +677,7 @@ PowerRateAdaptationTest::TestRrpaa ()
|
||||
*/
|
||||
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, 20, packet->GetSize ());
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -692,7 +695,7 @@ PowerRateAdaptationTest::TestRrpaa ()
|
||||
manager->ReportDataFailed (remoteAddress,&packetHeader, packet->GetSize ());
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -701,7 +704,7 @@ PowerRateAdaptationTest::TestRrpaa ()
|
||||
|
||||
manager->ReportDataFailed (remoteAddress,&packetHeader, packet->GetSize ());
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -719,7 +722,7 @@ PowerRateAdaptationTest::TestRrpaa ()
|
||||
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, 20, packet->GetSize ());
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -731,7 +734,7 @@ PowerRateAdaptationTest::TestRrpaa ()
|
||||
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, 20, packet->GetSize ());
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -743,7 +746,7 @@ PowerRateAdaptationTest::TestRrpaa ()
|
||||
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, 20, packet->GetSize ());
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -755,7 +758,7 @@ PowerRateAdaptationTest::TestRrpaa ()
|
||||
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, 20, packet->GetSize ());
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -767,7 +770,7 @@ PowerRateAdaptationTest::TestRrpaa ()
|
||||
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, 20, packet->GetSize ());
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -779,7 +782,7 @@ PowerRateAdaptationTest::TestRrpaa ()
|
||||
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, 20, packet->GetSize ());
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -791,7 +794,7 @@ PowerRateAdaptationTest::TestRrpaa ()
|
||||
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, 20, packet->GetSize ());
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -811,7 +814,7 @@ PowerRateAdaptationTest::TestRrpaa ()
|
||||
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, 20, packet->GetSize ());
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -820,7 +823,7 @@ PowerRateAdaptationTest::TestRrpaa ()
|
||||
|
||||
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, 20, packet->GetSize ());
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -839,7 +842,7 @@ PowerRateAdaptationTest::TestRrpaa ()
|
||||
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, 20, packet->GetSize ());
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -857,7 +860,7 @@ PowerRateAdaptationTest::TestRrpaa ()
|
||||
manager->ReportDataFailed (remoteAddress,&packetHeader, packet->GetSize ());
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -875,7 +878,7 @@ PowerRateAdaptationTest::TestRrpaa ()
|
||||
manager->ReportDataFailed (remoteAddress,&packetHeader, packet->GetSize ());
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -893,7 +896,7 @@ PowerRateAdaptationTest::TestRrpaa ()
|
||||
manager->ReportDataFailed (remoteAddress,&packetHeader, packet->GetSize ());
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -909,7 +912,7 @@ PowerRateAdaptationTest::TestRrpaa ()
|
||||
manager->ReportDataFailed (remoteAddress,&packetHeader, packet->GetSize ());
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -929,7 +932,7 @@ PowerRateAdaptationTest::TestRrpaa ()
|
||||
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, 20, packet->GetSize ());
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -941,7 +944,7 @@ PowerRateAdaptationTest::TestRrpaa ()
|
||||
manager->ReportDataFailed (remoteAddress,&packetHeader, packet->GetSize ());
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -953,7 +956,7 @@ PowerRateAdaptationTest::TestRrpaa ()
|
||||
manager->ReportDataFailed (remoteAddress,&packetHeader, packet->GetSize ());
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -965,7 +968,7 @@ PowerRateAdaptationTest::TestRrpaa ()
|
||||
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, 20, packet->GetSize ());
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
@@ -991,7 +994,7 @@ PowerRateAdaptationTest::TestRrpaa ()
|
||||
}
|
||||
}
|
||||
|
||||
txVector = manager->GetDataTxVector (remoteAddress, &packetHeader, packet);
|
||||
txVector = manager->GetDataTxVector (packetHeader);
|
||||
mode = txVector.GetMode ();
|
||||
power = (int) txVector.GetTxPowerLevel ();
|
||||
|
||||
|
||||
@@ -18,7 +18,6 @@ def build(bld):
|
||||
'model/yans-wifi-phy.cc',
|
||||
'model/yans-wifi-channel.cc',
|
||||
'model/spectrum-wifi-phy.cc',
|
||||
'model/tx-vector-tag.cc',
|
||||
'model/wifi-spectrum-phy-interface.cc',
|
||||
'model/wifi-spectrum-signal-parameters.cc',
|
||||
'model/wifi-phy-header.cc',
|
||||
@@ -144,7 +143,6 @@ def build(bld):
|
||||
'model/wifi-phy-standard.h',
|
||||
'model/yans-wifi-phy.h',
|
||||
'model/spectrum-wifi-phy.h',
|
||||
'model/tx-vector-tag.h',
|
||||
'model/yans-wifi-channel.h',
|
||||
'model/wifi-phy.h',
|
||||
'model/wifi-spectrum-phy-interface.h',
|
||||
|
||||
Reference in New Issue
Block a user