wifi: Remove high latency TX vector tags

This commit is contained in:
Stefano Avallone
2020-05-21 12:59:23 +02:00
parent 979b0713c0
commit 737e283988
39 changed files with 78 additions and 599 deletions

View File

@@ -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>

View File

@@ -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)

View File

@@ -292,10 +292,4 @@ AarfWifiManager::DoGetRtsTxVector (WifiRemoteStation *st)
return rtsTxVector;
}
bool
AarfWifiManager::IsLowLatency (void) const
{
return true;
}
} //namespace ns3

View File

@@ -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

View File

@@ -371,12 +371,6 @@ AarfcdWifiManager::DoNeedRts (WifiRemoteStation *st,
return station->m_rtsOn;
}
bool
AarfcdWifiManager::IsLowLatency (void) const
{
return true;
}
void
AarfcdWifiManager::CheckRts (AarfcdWifiRemoteStation *station)
{

View File

@@ -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.

View File

@@ -403,10 +403,4 @@ AmrrWifiManager::DoGetRtsTxVector (WifiRemoteStation *st)
return rtsTxVector;
}
bool
AmrrWifiManager::IsLowLatency (void) const
{
return true;
}
} //namespace ns3

View File

@@ -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.

View File

@@ -391,10 +391,4 @@ AparfWifiManager::DoGetRtsTxVector (WifiRemoteStation *st)
return rtsTxVector;
}
bool
AparfWifiManager::IsLowLatency (void) const
{
return true;
}
} //namespace ns3

View File

@@ -84,7 +84,6 @@ private:
void DoReportFinalDataFailed (WifiRemoteStation *station);
WifiTxVector DoGetDataTxVector (WifiRemoteStation *station);
WifiTxVector DoGetRtsTxVector (WifiRemoteStation *station);
bool IsLowLatency (void) const;
/** Check for initializations.
*

View File

@@ -269,10 +269,4 @@ ArfWifiManager::DoGetRtsTxVector (WifiRemoteStation *st)
return rtsTxVector;
}
bool
ArfWifiManager::IsLowLatency (void) const
{
return true;
}
} //namespace ns3

View File

@@ -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

View File

@@ -251,10 +251,4 @@ CaraWifiManager::DoNeedRts (WifiRemoteStation *st,
return normally || station->m_failed >= m_probeThreshold;
}
bool
CaraWifiManager::IsLowLatency (void) const
{
return true;
}
} //namespace ns3

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -572,10 +572,4 @@ IdealWifiManager::GetLastObservedSnrForChannelWidth (IdealWifiRemoteStation *sta
return snr;
}
bool
IdealWifiManager::IsLowLatency (void) const
{
return true;
}
} //namespace ns3

View File

@@ -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.

View File

@@ -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

View File

@@ -1000,12 +1000,6 @@ MinstrelHtWifiManager::CountRetries (MinstrelHtWifiRemoteStation *station)
}
}
bool
MinstrelHtWifiManager::IsLowLatency (void) const
{
return true;
}
uint16_t
MinstrelHtWifiManager::GetNextSample (MinstrelHtWifiRemoteStation *station)
{

View File

@@ -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);
/**

View File

@@ -891,12 +891,6 @@ MinstrelWifiManager::DoNeedRetransmission (WifiRemoteStation *st, Ptr<const Pack
}
}
bool
MinstrelWifiManager::IsLowLatency (void) const
{
return true;
}
uint16_t
MinstrelWifiManager::GetNextSample (MinstrelWifiRemoteStation *station)
{

View File

@@ -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.

View File

@@ -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

View File

@@ -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).

View File

@@ -363,10 +363,4 @@ ParfWifiManager::DoGetRtsTxVector (WifiRemoteStation *st)
return rtsTxVector;
}
bool
ParfWifiManager::IsLowLatency (void) const
{
return true;
}
} //namespace ns3

View File

@@ -72,7 +72,6 @@ private:
void DoReportFinalDataFailed (WifiRemoteStation *station);
WifiTxVector DoGetDataTxVector (WifiRemoteStation *station);
WifiTxVector DoGetRtsTxVector (WifiRemoteStation *station);
bool IsLowLatency (void) const;
/** Check for initializations.
*

View File

@@ -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 ();
}

View File

@@ -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

View File

@@ -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.

View File

@@ -611,10 +611,4 @@ RrpaaWifiManager::GetThresholds (RrpaaWifiRemoteStation *station, uint8_t index)
return GetThresholds (station, mode);
}
bool
RrpaaWifiManager::IsLowLatency (void) const
{
return true;
}
} // namespace ns3

View File

@@ -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.

View File

@@ -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

View File

@@ -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 */

View File

@@ -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 ();

View File

@@ -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 ())
{

View File

@@ -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
*/

View File

@@ -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 ();

View File

@@ -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',