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

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