wifi: Remove high latency TX vector tags
This commit is contained in:
@@ -88,6 +88,7 @@ transmitted.</li>
|
||||
<li>The preferred way to declare instances of <b>CommandLine</b> is now through a macro: <b>COMMANDLINE (cmd)</b>. This enables us to add the <b>CommandLine::Usage()</b> message to the Doxygen for the program.</li>
|
||||
<li>New <b>...FailSafe ()</b> variants of the <b> Config </b> is used to connect PDCP TraceSources of eNB and UE in <b>RadioBearerStatsConnector</b> class. It is required for the simulations using RLC SM where PDCP objects are not created for data radio bearers.</li>
|
||||
<li><b>T310</b> timer in <b>LteUeRrc</b> class is stopped if the UE receives <b>RRCConnectionReconfiguration</b> including the <b>mobilityControlInfo</b>. This change is introduced following the 3GPP standard TS36331 sec 5.3.5.4.</li>
|
||||
<li>The wifi High Latency tags have been removed. They required quite some hacks and were not really needed. The only rate manager (Onoe) that was making use of them has been adjusted to get rid of them.</li>
|
||||
</ul>
|
||||
<h2>Changes to build system:</h2>
|
||||
<ul>
|
||||
|
||||
@@ -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