wifi: WifiRemoteStationManager makes use of WifiMacQueueItems

This commit is contained in:
Stefano Avallone
2020-04-24 23:20:10 +02:00
parent c43ac51919
commit 336cbc6a9d
6 changed files with 192 additions and 224 deletions

View File

@@ -823,7 +823,7 @@ MacLow::ReceiveOk (Ptr<WifiMacQueueItem> mpdu, double rxSnr, WifiTxVector txVect
packet->RemovePacketTag (tag);
m_stationManager->ReportRxOk (m_currentPacket->GetAddr1 (),
rxSnr, txVector.GetMode ());
m_stationManager->ReportRtsOk (m_currentPacket->GetAddr1 (), &m_currentPacket->GetHeader (0),
m_stationManager->ReportRtsOk (m_currentPacket->GetHeader (0),
rxSnr, txVector.GetMode (), tag.Get ());
m_ctsTimeoutEvent.Cancel ();
@@ -846,9 +846,9 @@ MacLow::ReceiveOk (Ptr<WifiMacQueueItem> mpdu, double rxSnr, WifiTxVector txVect
{
m_stationManager->ReportRxOk (m_currentPacket->GetAddr1 (),
rxSnr, txVector.GetMode ());
m_stationManager->ReportDataOk (m_currentPacket->GetAddr1 (), &m_currentPacket->GetHeader (0),
m_stationManager->ReportDataOk (*m_currentPacket->begin (),
rxSnr, txVector.GetMode (), tag.Get (),
m_currentTxVector, m_currentPacket->GetSize ());
m_currentTxVector);
}
// cancel the Normal Ack timer
m_normalAckTimeoutEvent.Cancel ();
@@ -1500,7 +1500,7 @@ MacLow::CtsTimeout (void)
/// \todo should check that there was no RX start before now.
/// we should restart a new CTS timeout now until the expected
/// end of RX if there was a RX start before now.
m_stationManager->ReportRtsFailed (m_currentPacket->GetAddr1 (), &m_currentPacket->GetHeader (0));
m_stationManager->ReportRtsFailed (m_currentPacket->GetHeader (0));
Ptr<QosTxop> qosTxop = DynamicCast<QosTxop> (m_currentTxop);
if (qosTxop != 0)

View File

@@ -656,11 +656,11 @@ void QosTxop::NotifyInternalCollision (void)
if (!NeedRtsRetransmission (packet, header))
{
resetTxop = true;
m_stationManager->ReportFinalRtsFailed (header.GetAddr1 (), &header);
m_stationManager->ReportFinalRtsFailed (header);
}
else
{
m_stationManager->ReportRtsFailed (header.GetAddr1 (), &header);
m_stationManager->ReportRtsFailed (header);
}
}
else if (header.GetAddr1 () == Mac48Address::GetBroadcast ())
@@ -672,11 +672,11 @@ void QosTxop::NotifyInternalCollision (void)
if (!NeedDataRetransmission (packet, header))
{
resetTxop = true;
m_stationManager->ReportFinalDataFailed (header.GetAddr1 (), &header, packet->GetSize ());
m_stationManager->ReportFinalDataFailed (Create<const WifiMacQueueItem> (packet, header));
}
else
{
m_stationManager->ReportDataFailed (header.GetAddr1 (), &header, packet->GetSize ());
m_stationManager->ReportDataFailed (Create<const WifiMacQueueItem> (packet, header));
}
}
if (resetTxop)
@@ -717,7 +717,7 @@ QosTxop::NotifyMissedCts (std::list<Ptr<WifiMacQueueItem>> mpduList)
if (!NeedRtsRetransmission (m_currentPacket, m_currentHdr))
{
NS_LOG_DEBUG ("Cts Fail");
m_stationManager->ReportFinalRtsFailed (m_currentHdr.GetAddr1 (), &m_currentHdr);
m_stationManager->ReportFinalRtsFailed (m_currentHdr);
if (!m_txFailedCallback.IsNull ())
{
m_txFailedCallback (m_currentHdr);
@@ -822,8 +822,8 @@ QosTxop::MissedAck (void)
if (!NeedDataRetransmission (m_currentPacket, m_currentHdr))
{
NS_LOG_DEBUG ("Ack Fail");
m_stationManager->ReportFinalDataFailed (m_currentHdr.GetAddr1 (), &m_currentHdr,
m_currentPacket->GetSize ());
m_stationManager->ReportFinalDataFailed (Create<const WifiMacQueueItem> (m_currentPacket,
m_currentHdr));
if (!m_txFailedCallback.IsNull ())
{
m_txFailedCallback (m_currentHdr);
@@ -854,8 +854,8 @@ QosTxop::MissedAck (void)
else
{
NS_LOG_DEBUG ("Retransmit");
m_stationManager->ReportDataFailed (m_currentHdr.GetAddr1 (), &m_currentHdr,
m_currentPacket->GetSize ());
m_stationManager->ReportDataFailed (Create<const WifiMacQueueItem> (m_currentPacket,
m_currentHdr));
m_currentHdr.SetRetry ();
if (m_currentHdr.IsQosData () && GetBaAgreementEstablished (m_currentHdr.GetAddr1 (), m_currentHdr.GetQosTid ()))
{
@@ -905,8 +905,8 @@ QosTxop::MissedBlockAck (uint8_t nMpdus)
NS_LOG_DEBUG ("Block Ack Request Fail");
// if a BA agreement exists, we can get here if there is no outstanding
// MPDU whose lifetime has not expired yet.
m_stationManager->ReportFinalDataFailed (m_currentHdr.GetAddr1 (), &m_currentHdr,
m_currentPacket->GetSize ());
m_stationManager->ReportFinalDataFailed (Create<const WifiMacQueueItem> (m_currentPacket,
m_currentHdr));
if (m_baManager->ExistsAgreementInState (m_currentHdr.GetAddr1 (), tid,
OriginatorBlockAckAgreement::ESTABLISHED))
{
@@ -942,8 +942,8 @@ QosTxop::MissedBlockAck (uint8_t nMpdus)
if (!NeedDataRetransmission (m_currentPacket, m_currentHdr))
{
NS_LOG_DEBUG ("Block Ack Fail");
m_stationManager->ReportFinalDataFailed (m_currentHdr.GetAddr1 (), &m_currentHdr,
m_currentPacket->GetSize ());
m_stationManager->ReportFinalDataFailed (Create<const WifiMacQueueItem> (m_currentPacket,
m_currentHdr));
if (!m_txFailedCallback.IsNull ())
{
m_txFailedCallback (m_currentHdr);
@@ -972,7 +972,7 @@ QosTxop::MissedBlockAck (uint8_t nMpdus)
else
{
NS_LOG_DEBUG ("Retransmit");
m_stationManager->ReportDataFailed (m_currentHdr.GetAddr1 (), &m_currentHdr, m_currentPacket->GetSize ());
m_stationManager->ReportDataFailed (Create<const WifiMacQueueItem> (m_currentPacket, m_currentHdr));
m_baManager->NotifyMissedBlockAck (m_currentHdr.GetAddr1 (), tid);
m_currentPacket = 0;
UpdateFailedCw ();
@@ -1202,7 +1202,7 @@ QosTxop::NeedFragmentation (void) const
{
needTxopFragmentation = (GetLow ()->CalculateOverallTxTime (m_currentPacket, &m_currentHdr, m_currentParams) > GetTxopLimit ());
}
return (needTxopFragmentation || m_stationManager->NeedFragmentation (m_currentHdr.GetAddr1 (), &m_currentHdr, m_currentPacket));
return (needTxopFragmentation || m_stationManager->NeedFragmentation (Create<const WifiMacQueueItem> (m_currentPacket, m_currentHdr)));
}
bool
@@ -1212,8 +1212,8 @@ QosTxop::IsTxopFragmentation (void) const
{
return false;
}
if (!m_stationManager->NeedFragmentation (m_currentHdr.GetAddr1 (), &m_currentHdr, m_currentPacket)
|| (GetTxopFragmentSize () < m_stationManager->GetFragmentSize (m_currentHdr.GetAddr1 (), &m_currentHdr,m_currentPacket, 0)))
if (!m_stationManager->NeedFragmentation (Create<const WifiMacQueueItem> (m_currentPacket, m_currentHdr))
|| (GetTxopFragmentSize () < m_stationManager->GetFragmentSize (Create<const WifiMacQueueItem> (m_currentPacket, m_currentHdr), 0)))
{
return true;
}
@@ -1321,7 +1321,7 @@ QosTxop::GetFragmentSize (void) const
}
else
{
size = m_stationManager->GetFragmentSize (m_currentHdr.GetAddr1 (), &m_currentHdr,m_currentPacket, m_fragmentNumber);
size = m_stationManager->GetFragmentSize (Create<const WifiMacQueueItem> (m_currentPacket, m_currentHdr), m_fragmentNumber);
}
return size;
}
@@ -1336,7 +1336,7 @@ QosTxop::GetNextFragmentSize (void) const
}
else
{
size = m_stationManager->GetFragmentSize (m_currentHdr.GetAddr1 (), &m_currentHdr,m_currentPacket, m_fragmentNumber + 1);
size = m_stationManager->GetFragmentSize (Create<const WifiMacQueueItem> (m_currentPacket, m_currentHdr), m_fragmentNumber + 1);
}
return size;
}
@@ -1351,8 +1351,8 @@ QosTxop::GetFragmentOffset (void) const
}
else
{
offset = m_stationManager->GetFragmentOffset (m_currentHdr.GetAddr1 (), &m_currentHdr,
m_currentPacket, m_fragmentNumber);
offset = m_stationManager->GetFragmentOffset (Create<const WifiMacQueueItem> (m_currentPacket,
m_currentHdr), m_fragmentNumber);
}
return offset;
}
@@ -1367,8 +1367,8 @@ QosTxop::IsLastFragment (void) const
}
else
{
isLastFragment = m_stationManager->IsLastFragment (m_currentHdr.GetAddr1 (), &m_currentHdr,
m_currentPacket, m_fragmentNumber);
isLastFragment = m_stationManager->IsLastFragment (Create<const WifiMacQueueItem> (m_currentPacket,
m_currentHdr), m_fragmentNumber);
}
return isLastFragment;
}

View File

@@ -381,22 +381,21 @@ bool
Txop::NeedRtsRetransmission (Ptr<const Packet> packet, const WifiMacHeader &hdr)
{
NS_LOG_FUNCTION (this);
return m_stationManager->NeedRetransmission (hdr.GetAddr1 (), &hdr, packet);
return m_stationManager->NeedRetransmission (Create<const WifiMacQueueItem> (packet, hdr));
}
bool
Txop::NeedDataRetransmission (Ptr<const Packet> packet, const WifiMacHeader &hdr)
{
NS_LOG_FUNCTION (this);
return m_stationManager->NeedRetransmission (hdr.GetAddr1 (), &hdr, packet);
return m_stationManager->NeedRetransmission (Create<const WifiMacQueueItem> (packet, hdr));
}
bool
Txop::NeedFragmentation (void) const
{
NS_LOG_FUNCTION (this);
return m_stationManager->NeedFragmentation (m_currentHdr.GetAddr1 (), &m_currentHdr,
m_currentPacket);
return m_stationManager->NeedFragmentation (Create<const WifiMacQueueItem> (m_currentPacket, m_currentHdr));
}
void
@@ -410,32 +409,32 @@ uint32_t
Txop::GetFragmentSize (void) const
{
NS_LOG_FUNCTION (this);
return m_stationManager->GetFragmentSize (m_currentHdr.GetAddr1 (), &m_currentHdr,
m_currentPacket, m_fragmentNumber);
return m_stationManager->GetFragmentSize (Create<const WifiMacQueueItem> (m_currentPacket,
m_currentHdr), m_fragmentNumber);
}
bool
Txop::IsLastFragment (void) const
{
NS_LOG_FUNCTION (this);
return m_stationManager->IsLastFragment (m_currentHdr.GetAddr1 (), &m_currentHdr,
m_currentPacket, m_fragmentNumber);
return m_stationManager->IsLastFragment (Create<const WifiMacQueueItem> (m_currentPacket,
m_currentHdr), m_fragmentNumber);
}
uint32_t
Txop::GetNextFragmentSize (void) const
{
NS_LOG_FUNCTION (this);
return m_stationManager->GetFragmentSize (m_currentHdr.GetAddr1 (), &m_currentHdr,
m_currentPacket, m_fragmentNumber + 1);
return m_stationManager->GetFragmentSize (Create<const WifiMacQueueItem> (m_currentPacket,
m_currentHdr), m_fragmentNumber + 1);
}
uint32_t
Txop::GetFragmentOffset (void) const
{
NS_LOG_FUNCTION (this);
return m_stationManager->GetFragmentOffset (m_currentHdr.GetAddr1 (), &m_currentHdr,
m_currentPacket, m_fragmentNumber);
return m_stationManager->GetFragmentOffset (Create<const WifiMacQueueItem> (m_currentPacket,
m_currentHdr), m_fragmentNumber);
}
Ptr<Packet>
@@ -615,7 +614,7 @@ Txop::MissedCts (void)
if (!NeedRtsRetransmission (m_currentPacket, m_currentHdr))
{
NS_LOG_DEBUG ("Cts Fail");
m_stationManager->ReportFinalRtsFailed (m_currentHdr.GetAddr1 (), &m_currentHdr);
m_stationManager->ReportFinalRtsFailed (m_currentHdr);
if (!m_txFailedCallback.IsNull ())
{
m_txFailedCallback (m_currentHdr);
@@ -670,8 +669,8 @@ Txop::MissedAck (void)
if (!NeedDataRetransmission (m_currentPacket, m_currentHdr))
{
NS_LOG_DEBUG ("Ack Fail");
m_stationManager->ReportFinalDataFailed (m_currentHdr.GetAddr1 (), &m_currentHdr,
m_currentPacket->GetSize ());
m_stationManager->ReportFinalDataFailed (Create<const WifiMacQueueItem> (m_currentPacket,
m_currentHdr));
if (!m_txFailedCallback.IsNull ())
{
m_txFailedCallback (m_currentHdr);
@@ -684,8 +683,8 @@ Txop::MissedAck (void)
else
{
NS_LOG_DEBUG ("Retransmit");
m_stationManager->ReportDataFailed (m_currentHdr.GetAddr1 (), &m_currentHdr,
m_currentPacket->GetSize ());
m_stationManager->ReportDataFailed (Create<const WifiMacQueueItem> (m_currentPacket,
m_currentHdr));
m_currentHdr.SetRetry ();
UpdateFailedCw ();
m_cwTrace = GetCw ();
@@ -718,8 +717,8 @@ Txop::MissedCfPollResponse (bool expectedCfAck)
if (!NeedDataRetransmission (m_currentPacket, m_currentHdr))
{
NS_LOG_DEBUG ("Ack Fail");
m_stationManager->ReportFinalDataFailed (m_currentHdr.GetAddr1 (), &m_currentHdr,
m_currentPacket->GetSize ());
m_stationManager->ReportFinalDataFailed (Create<const WifiMacQueueItem> (m_currentPacket,
m_currentHdr));
m_currentPacket = 0;
}
else
@@ -788,8 +787,8 @@ Txop::SendCfFrame (WifiMacType frameType, Mac48Address addr)
{
if (!NeedDataRetransmission (m_currentPacket, m_currentHdr))
{
m_stationManager->ReportFinalDataFailed (m_currentHdr.GetAddr1 (), &m_currentHdr,
m_currentPacket->GetSize ());
m_stationManager->ReportFinalDataFailed (Create<const WifiMacQueueItem> (m_currentPacket,
m_currentHdr));
m_currentPacket = 0;
}
else

View File

@@ -27,6 +27,7 @@
#include "wifi-phy.h"
#include "wifi-mac.h"
#include "wifi-mac-header.h"
#include "wifi-mac-queue-item.h"
#include "wifi-mac-trailer.h"
#include "ht-configuration.h"
#include "vht-configuration.h"
@@ -799,24 +800,23 @@ WifiRemoteStationManager::GetControlAnswerMode (WifiMode reqMode) const
}
void
WifiRemoteStationManager::ReportRtsFailed (Mac48Address address, const WifiMacHeader *header)
WifiRemoteStationManager::ReportRtsFailed (const WifiMacHeader& header)
{
NS_LOG_FUNCTION (this << address << *header);
NS_ASSERT (!address.IsGroup ());
AcIndex ac = QosUtilsMapTidToAc ((header->IsQosData ()) ? header->GetQosTid () : 0);
NS_LOG_FUNCTION (this << header);
NS_ASSERT (!header.GetAddr1 ().IsGroup ());
AcIndex ac = QosUtilsMapTidToAc ((header.IsQosData ()) ? header.GetQosTid () : 0);
m_ssrc[ac]++;
m_macTxRtsFailed (address);
DoReportRtsFailed (Lookup (address));
m_macTxRtsFailed (header.GetAddr1 ());
DoReportRtsFailed (Lookup (header.GetAddr1 ()));
}
void
WifiRemoteStationManager::ReportDataFailed (Mac48Address address, const WifiMacHeader *header,
uint32_t packetSize)
WifiRemoteStationManager::ReportDataFailed (Ptr<const WifiMacQueueItem> mpdu)
{
NS_LOG_FUNCTION (this << address << *header);
NS_ASSERT (!address.IsGroup ());
AcIndex ac = QosUtilsMapTidToAc ((header->IsQosData ()) ? header->GetQosTid () : 0);
bool longMpdu = (packetSize + header->GetSize () + WIFI_MAC_FCS_LENGTH) > m_rtsCtsThreshold;
NS_LOG_FUNCTION (this << *mpdu);
NS_ASSERT (!mpdu->GetHeader ().GetAddr1 ().IsGroup ());
AcIndex ac = QosUtilsMapTidToAc ((mpdu->GetHeader ().IsQosData ()) ? mpdu->GetHeader ().GetQosTid () : 0);
bool longMpdu = (mpdu->GetSize () > m_rtsCtsThreshold);
if (longMpdu)
{
m_slrc[ac]++;
@@ -825,33 +825,33 @@ WifiRemoteStationManager::ReportDataFailed (Mac48Address address, const WifiMacH
{
m_ssrc[ac]++;
}
m_macTxDataFailed (address);
DoReportDataFailed (Lookup (address));
m_macTxDataFailed (mpdu->GetHeader ().GetAddr1 ());
DoReportDataFailed (Lookup (mpdu->GetHeader ().GetAddr1 ()));
}
void
WifiRemoteStationManager::ReportRtsOk (Mac48Address address, const WifiMacHeader *header,
WifiRemoteStationManager::ReportRtsOk (const WifiMacHeader& header,
double ctsSnr, WifiMode ctsMode, double rtsSnr)
{
NS_LOG_FUNCTION (this << address << *header << ctsSnr << ctsMode << rtsSnr);
NS_ASSERT (!address.IsGroup ());
WifiRemoteStation *station = Lookup (address);
AcIndex ac = QosUtilsMapTidToAc ((header->IsQosData ()) ? header->GetQosTid () : 0);
NS_LOG_FUNCTION (this << header << ctsSnr << ctsMode << rtsSnr);
NS_ASSERT (!header.GetAddr1 ().IsGroup ());
WifiRemoteStation *station = Lookup (header.GetAddr1 ());
AcIndex ac = QosUtilsMapTidToAc ((header.IsQosData ()) ? header.GetQosTid () : 0);
station->m_state->m_info.NotifyTxSuccess (m_ssrc[ac]);
m_ssrc[ac] = 0;
DoReportRtsOk (station, ctsSnr, ctsMode, rtsSnr);
}
void
WifiRemoteStationManager::ReportDataOk (Mac48Address address, const WifiMacHeader *header,
double ackSnr, WifiMode ackMode, double dataSnr,
WifiTxVector dataTxVector, uint32_t packetSize)
WifiRemoteStationManager::ReportDataOk (Ptr<const WifiMacQueueItem> mpdu, double ackSnr,
WifiMode ackMode, double dataSnr, WifiTxVector dataTxVector)
{
NS_LOG_FUNCTION (this << address << *header << ackSnr << ackMode << dataSnr << dataTxVector << packetSize);
NS_ASSERT (!address.IsGroup ());
WifiRemoteStation *station = Lookup (address);
AcIndex ac = QosUtilsMapTidToAc ((header->IsQosData ()) ? header->GetQosTid () : 0);
bool longMpdu = (packetSize + header->GetSize () + WIFI_MAC_FCS_LENGTH) > m_rtsCtsThreshold;
NS_LOG_FUNCTION (this << *mpdu << ackSnr << ackMode << dataSnr << dataTxVector);
const WifiMacHeader& hdr = mpdu->GetHeader ();
NS_ASSERT (!hdr.GetAddr1 ().IsGroup ());
WifiRemoteStation *station = Lookup (hdr.GetAddr1 ());
AcIndex ac = QosUtilsMapTidToAc ((hdr.IsQosData ()) ? hdr.GetQosTid () : 0);
bool longMpdu = (mpdu->GetSize () > m_rtsCtsThreshold);
if (longMpdu)
{
station->m_state->m_info.NotifyTxSuccess (m_slrc[ac]);
@@ -866,28 +866,27 @@ WifiRemoteStationManager::ReportDataOk (Mac48Address address, const WifiMacHeade
}
void
WifiRemoteStationManager::ReportFinalRtsFailed (Mac48Address address, const WifiMacHeader *header)
WifiRemoteStationManager::ReportFinalRtsFailed (const WifiMacHeader& header)
{
NS_LOG_FUNCTION (this << address << *header);
NS_ASSERT (!address.IsGroup ());
WifiRemoteStation *station = Lookup (address);
AcIndex ac = QosUtilsMapTidToAc ((header->IsQosData ()) ? header->GetQosTid () : 0);
NS_LOG_FUNCTION (this << header);
NS_ASSERT (!header.GetAddr1 ().IsGroup ());
WifiRemoteStation *station = Lookup (header.GetAddr1 ());
AcIndex ac = QosUtilsMapTidToAc ((header.IsQosData ()) ? header.GetQosTid () : 0);
station->m_state->m_info.NotifyTxFailed ();
m_ssrc[ac] = 0;
m_macTxFinalRtsFailed (address);
m_macTxFinalRtsFailed (header.GetAddr1 ());
DoReportFinalRtsFailed (station);
}
void
WifiRemoteStationManager::ReportFinalDataFailed (Mac48Address address, const WifiMacHeader *header,
uint32_t packetSize)
WifiRemoteStationManager::ReportFinalDataFailed (Ptr<const WifiMacQueueItem> mpdu)
{
NS_LOG_FUNCTION (this << address << *header);
NS_ASSERT (!address.IsGroup ());
WifiRemoteStation *station = Lookup (address);
AcIndex ac = QosUtilsMapTidToAc ((header->IsQosData ()) ? header->GetQosTid () : 0);
NS_LOG_FUNCTION (this << *mpdu);
NS_ASSERT (!mpdu->GetHeader ().GetAddr1 ().IsGroup ());
WifiRemoteStation *station = Lookup (mpdu->GetHeader ().GetAddr1 ());
AcIndex ac = QosUtilsMapTidToAc ((mpdu->GetHeader ().IsQosData ()) ? mpdu->GetHeader ().GetQosTid () : 0);
station->m_state->m_info.NotifyTxFailed ();
bool longMpdu = (packetSize + header->GetSize () + WIFI_MAC_FCS_LENGTH) > m_rtsCtsThreshold;
bool longMpdu = (mpdu->GetSize () > m_rtsCtsThreshold);
if (longMpdu)
{
m_slrc[ac] = 0;
@@ -896,7 +895,7 @@ WifiRemoteStationManager::ReportFinalDataFailed (Mac48Address address, const Wif
{
m_ssrc[ac] = 0;
}
m_macTxFinalDataFailed (address);
m_macTxFinalDataFailed (mpdu->GetHeader ().GetAddr1 ());
DoReportFinalDataFailed (station);
}
@@ -1052,13 +1051,12 @@ WifiRemoteStationManager::GetUseGreenfieldProtection (void) const
}
bool
WifiRemoteStationManager::NeedRetransmission (Mac48Address address, const WifiMacHeader *header,
Ptr<const Packet> packet)
WifiRemoteStationManager::NeedRetransmission (Ptr<const WifiMacQueueItem> mpdu)
{
NS_LOG_FUNCTION (this << address << packet << *header);
NS_ASSERT (!address.IsGroup ());
AcIndex ac = QosUtilsMapTidToAc ((header->IsQosData ()) ? header->GetQosTid () : 0);
bool longMpdu = (packet->GetSize () + header->GetSize () + WIFI_MAC_FCS_LENGTH) > m_rtsCtsThreshold;
NS_LOG_FUNCTION (this << *mpdu);
NS_ASSERT (!mpdu->GetHeader ().GetAddr1 ().IsGroup ());
AcIndex ac = QosUtilsMapTidToAc ((mpdu->GetHeader ().IsQosData ()) ? mpdu->GetHeader ().GetQosTid () : 0);
bool longMpdu = (mpdu->GetSize () > m_rtsCtsThreshold);
uint32_t retryCount, maxRetryCount;
if (longMpdu)
{
@@ -1072,21 +1070,20 @@ WifiRemoteStationManager::NeedRetransmission (Mac48Address address, const WifiMa
}
bool normally = retryCount < maxRetryCount;
NS_LOG_DEBUG ("WifiRemoteStationManager::NeedRetransmission count: " << retryCount << " result: " << std::boolalpha << normally);
return DoNeedRetransmission (Lookup (address), packet, normally);
return DoNeedRetransmission (Lookup (mpdu->GetHeader ().GetAddr1 ()), mpdu->GetPacket (), normally);
}
bool
WifiRemoteStationManager::NeedFragmentation (Mac48Address address, const WifiMacHeader *header,
Ptr<const Packet> packet)
WifiRemoteStationManager::NeedFragmentation (Ptr<const WifiMacQueueItem> mpdu)
{
NS_LOG_FUNCTION (this << address << packet << *header);
if (address.IsGroup ())
NS_LOG_FUNCTION (this << *mpdu);
if (mpdu->GetHeader ().GetAddr1 ().IsGroup ())
{
return false;
}
bool normally = (packet->GetSize () + header->GetSize () + WIFI_MAC_FCS_LENGTH) > GetFragmentationThreshold ();
bool normally = mpdu->GetSize () > GetFragmentationThreshold ();
NS_LOG_DEBUG ("WifiRemoteStationManager::NeedFragmentation result: " << std::boolalpha << normally);
return DoNeedFragmentation (Lookup (address), packet, normally);
return DoNeedFragmentation (Lookup (mpdu->GetHeader ().GetAddr1 ()), mpdu->GetPacket (), normally);
}
void
@@ -1132,14 +1129,14 @@ WifiRemoteStationManager::DoGetFragmentationThreshold (void) const
}
uint32_t
WifiRemoteStationManager::GetNFragments (const WifiMacHeader *header, Ptr<const Packet> packet)
WifiRemoteStationManager::GetNFragments (Ptr<const WifiMacQueueItem> mpdu)
{
NS_LOG_FUNCTION (this << *header << packet);
NS_LOG_FUNCTION (this << *mpdu);
//The number of bytes a fragment can support is (Threshold - WIFI_HEADER_SIZE - WIFI_FCS).
uint32_t nFragments = (packet->GetSize () / (GetFragmentationThreshold () - header->GetSize () - WIFI_MAC_FCS_LENGTH));
uint32_t nFragments = (mpdu->GetPacket ()->GetSize () / (GetFragmentationThreshold () - mpdu->GetHeader ().GetSize () - WIFI_MAC_FCS_LENGTH));
//If the size of the last fragment is not 0.
if ((packet->GetSize () % (GetFragmentationThreshold () - header->GetSize () - WIFI_MAC_FCS_LENGTH)) > 0)
if ((mpdu->GetPacket ()->GetSize () % (GetFragmentationThreshold () - mpdu->GetHeader ().GetSize () - WIFI_MAC_FCS_LENGTH)) > 0)
{
nFragments++;
}
@@ -1148,12 +1145,11 @@ WifiRemoteStationManager::GetNFragments (const WifiMacHeader *header, Ptr<const
}
uint32_t
WifiRemoteStationManager::GetFragmentSize (Mac48Address address, const WifiMacHeader *header,
Ptr<const Packet> packet, uint32_t fragmentNumber)
WifiRemoteStationManager::GetFragmentSize (Ptr<const WifiMacQueueItem> mpdu, uint32_t fragmentNumber)
{
NS_LOG_FUNCTION (this << address << *header << packet << fragmentNumber);
NS_ASSERT (!address.IsGroup ());
uint32_t nFragment = GetNFragments (header, packet);
NS_LOG_FUNCTION (this << *mpdu << fragmentNumber);
NS_ASSERT (!mpdu->GetHeader ().GetAddr1 ().IsGroup ());
uint32_t nFragment = GetNFragments (mpdu);
if (fragmentNumber >= nFragment)
{
NS_LOG_DEBUG ("WifiRemoteStationManager::GetFragmentSize returning 0");
@@ -1162,38 +1158,36 @@ WifiRemoteStationManager::GetFragmentSize (Mac48Address address, const WifiMacHe
//Last fragment
if (fragmentNumber == nFragment - 1)
{
uint32_t lastFragmentSize = packet->GetSize () - (fragmentNumber * (GetFragmentationThreshold () - header->GetSize () - WIFI_MAC_FCS_LENGTH));
uint32_t lastFragmentSize = mpdu->GetPacket ()->GetSize () - (fragmentNumber * (GetFragmentationThreshold () - mpdu->GetHeader ().GetSize () - WIFI_MAC_FCS_LENGTH));
NS_LOG_DEBUG ("WifiRemoteStationManager::GetFragmentSize returning " << lastFragmentSize);
return lastFragmentSize;
}
//All fragments but the last, the number of bytes is (Threshold - WIFI_HEADER_SIZE - WIFI_FCS).
else
{
uint32_t fragmentSize = GetFragmentationThreshold () - header->GetSize () - WIFI_MAC_FCS_LENGTH;
uint32_t fragmentSize = GetFragmentationThreshold () - mpdu->GetHeader ().GetSize () - WIFI_MAC_FCS_LENGTH;
NS_LOG_DEBUG ("WifiRemoteStationManager::GetFragmentSize returning " << fragmentSize);
return fragmentSize;
}
}
uint32_t
WifiRemoteStationManager::GetFragmentOffset (Mac48Address address, const WifiMacHeader *header,
Ptr<const Packet> packet, uint32_t fragmentNumber)
WifiRemoteStationManager::GetFragmentOffset (Ptr<const WifiMacQueueItem> mpdu, uint32_t fragmentNumber)
{
NS_LOG_FUNCTION (this << address << *header << packet << fragmentNumber);
NS_ASSERT (!address.IsGroup ());
NS_ASSERT (fragmentNumber < GetNFragments (header, packet));
uint32_t fragmentOffset = fragmentNumber * (GetFragmentationThreshold () - header->GetSize () - WIFI_MAC_FCS_LENGTH);
NS_LOG_FUNCTION (this << *mpdu << fragmentNumber);
NS_ASSERT (!mpdu->GetHeader ().GetAddr1 ().IsGroup ());
NS_ASSERT (fragmentNumber < GetNFragments (mpdu));
uint32_t fragmentOffset = fragmentNumber * (GetFragmentationThreshold () - mpdu->GetHeader ().GetSize () - WIFI_MAC_FCS_LENGTH);
NS_LOG_DEBUG ("WifiRemoteStationManager::GetFragmentOffset returning " << fragmentOffset);
return fragmentOffset;
}
bool
WifiRemoteStationManager::IsLastFragment (Mac48Address address, const WifiMacHeader *header,
Ptr<const Packet> packet, uint32_t fragmentNumber)
WifiRemoteStationManager::IsLastFragment (Ptr<const WifiMacQueueItem> mpdu, uint32_t fragmentNumber)
{
NS_LOG_FUNCTION (this << address << *header << packet << fragmentNumber);
NS_ASSERT (!address.IsGroup ());
bool isLast = fragmentNumber == (GetNFragments (header, packet) - 1);
NS_LOG_FUNCTION (this << *mpdu << fragmentNumber);
NS_ASSERT (!mpdu->GetHeader ().GetAddr1 ().IsGroup ());
bool isLast = fragmentNumber == (GetNFragments (mpdu) - 1);
NS_LOG_DEBUG ("WifiRemoteStationManager::IsLastFragment returning " << std::boolalpha << isLast);
return isLast;
}

View File

@@ -40,6 +40,7 @@ class WifiPhy;
class WifiMac;
class WifiMacHeader;
class Packet;
class WifiMacQueueItem;
class WifiTxVector;
struct WifiRemoteStationState;
@@ -715,67 +716,54 @@ public:
* Should be invoked whenever the RtsTimeout associated to a transmission
* attempt expires.
*
* \param address the address of the receiver
* \param header MAC header of the DATA packet
*/
void ReportRtsFailed (Mac48Address address, const WifiMacHeader *header);
void ReportRtsFailed (const WifiMacHeader& header);
/**
* Should be invoked whenever the AckTimeout associated to a transmission
* attempt expires.
*
* \param address the address of the receiver
* \param header MAC header of the DATA packet
* \param packetSize the size of the DATA packet
* \param mpdu the MPDU whose transmission failed
*/
void ReportDataFailed (Mac48Address address, const WifiMacHeader *header,
uint32_t packetSize);
void ReportDataFailed (Ptr<const WifiMacQueueItem> mpdu);
/**
* Should be invoked whenever we receive the CTS associated to an RTS
* we just sent. Note that we also get the SNR of the RTS we sent since
* the receiver put a SnrTag in the CTS.
*
* \param address the address of the receiver
* \param header MAC header of the DATA packet
* \param ctsSnr the SNR of the CTS we received
* \param ctsMode the WifiMode the receiver used to send the CTS
* \param rtsSnr the SNR of the RTS we sent
*/
void ReportRtsOk (Mac48Address address, const WifiMacHeader *header,
void ReportRtsOk (const WifiMacHeader& header,
double ctsSnr, WifiMode ctsMode, double rtsSnr);
/**
* Should be invoked whenever we receive the ACK associated to a data packet
* we just sent.
*
* \param address the address of the receiver
* \param header MAC header of the DATA packet
* \param mpdu the MPDU
* \param ackSnr the SNR of the ACK we received
* \param ackMode the WifiMode the receiver used to send the ACK
* \param dataSnr the SNR of the DATA we sent
* \param dataTxVector the TXVECTOR of the DATA we sent
* \param packetSize the size of the DATA packet
*/
void ReportDataOk (Mac48Address address, const WifiMacHeader *header,
double ackSnr, WifiMode ackMode,
double dataSnr, WifiTxVector dataTxVector,
uint32_t packetSize);
void ReportDataOk (Ptr<const WifiMacQueueItem> mpdu, double ackSnr,
WifiMode ackMode, double dataSnr, WifiTxVector dataTxVector);
/**
* Should be invoked after calling ReportRtsFailed if
* NeedRetransmission returns false
*
* \param address the address of the receiver
* \param header MAC header of the DATA packet
*/
void ReportFinalRtsFailed (Mac48Address address, const WifiMacHeader *header);
void ReportFinalRtsFailed (const WifiMacHeader& header);
/**
* Should be invoked after calling ReportDataFailed if
* NeedRetransmission returns false
*
* \param address the address of the receiver
* \param header MAC header of the DATA packet
* \param packetSize the size of the DATA packet
* \param mpdu the MPDU which was discarded
*/
void ReportFinalDataFailed (Mac48Address address, const WifiMacHeader *header,
uint32_t packetSize);
void ReportFinalDataFailed (Ptr<const WifiMacQueueItem> mpdu);
/**
* Typically called per A-MPDU, either when a Block ACK was successfully
* received or when a BlockAckTimeout has elapsed.
@@ -819,55 +807,40 @@ public:
bool NeedCtsToSelf (WifiTxVector txVector);
/**
* \param address remote address
* \param header MAC header
* \param packet the packet to send
* \param mpdu the MPDU to send
*
* \return true if we want to resend a packet after a failed transmission attempt,
* false otherwise.
*/
bool NeedRetransmission (Mac48Address address, const WifiMacHeader *header,
Ptr<const Packet> packet);
bool NeedRetransmission (Ptr<const WifiMacQueueItem> mpdu);
/**
* \param address remote address
* \param header MAC header
* \param packet the packet to send
* \param mpdu the MPDU to send
*
* \return true if this packet should be fragmented,
* false otherwise.
*/
bool NeedFragmentation (Mac48Address address, const WifiMacHeader *header,
Ptr<const Packet> packet);
bool NeedFragmentation (Ptr<const WifiMacQueueItem> mpdu);
/**
* \param address remote address
* \param header MAC header
* \param packet the packet to send
* \param mpdu the MPDU to send
* \param fragmentNumber the fragment index of the next fragment to send (starts at zero).
*
* \return the size of the corresponding fragment.
*/
uint32_t GetFragmentSize (Mac48Address address, const WifiMacHeader *header,
Ptr<const Packet> packet, uint32_t fragmentNumber);
uint32_t GetFragmentSize (Ptr<const WifiMacQueueItem> mpdu, uint32_t fragmentNumber);
/**
* \param address remote address
* \param header MAC header
* \param packet the packet to send
* \param mpdu the packet to send
* \param fragmentNumber the fragment index of the next fragment to send (starts at zero).
*
* \return the offset within the original packet where this fragment starts.
*/
uint32_t GetFragmentOffset (Mac48Address address, const WifiMacHeader *header,
Ptr<const Packet> packet, uint32_t fragmentNumber);
uint32_t GetFragmentOffset (Ptr<const WifiMacQueueItem> mpdu, uint32_t fragmentNumber);
/**
* \param address remote address
* \param header MAC header
* \param packet the packet to send
* \param mpdu the packet to send
* \param fragmentNumber the fragment index of the next fragment to send (starts at zero).
*
* \return true if this is the last fragment, false otherwise.
*/
bool IsLastFragment (Mac48Address address, const WifiMacHeader *header,
Ptr<const Packet> packet, uint32_t fragmentNumber);
bool IsLastFragment (Ptr<const WifiMacQueueItem> mpdu, uint32_t fragmentNumber);
/**
* \return the default transmission power
@@ -1277,12 +1250,11 @@ private:
/**
* Return the number of fragments needed for the given packet.
*
* \param header MAC header
* \param packet the packet to be fragmented
* \param mpdu the packet to be fragmented
*
* \return the number of fragments needed
*/
uint32_t GetNFragments (const WifiMacHeader *header, Ptr<const Packet> packet);
uint32_t GetNFragments (Ptr<const WifiMacQueueItem> mpdu);
/**
* This is a pointer to the WifiPhy associated with this

View File

@@ -140,6 +140,7 @@ PowerRateAdaptationTest::TestParf ()
packetHeader.SetType (WIFI_MAC_DATA);
packetHeader.SetQosTid (0);
Ptr<Packet> packet = Create<Packet> (10);
Ptr<WifiMacQueueItem> mpdu = Create<WifiMacQueueItem> (packet, packetHeader);
WifiMode ackMode;
/*
@@ -168,7 +169,7 @@ PowerRateAdaptationTest::TestParf ()
*/
for (int i = 0; i < 10; i++)
{
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->GetSize ());
manager->ReportDataOk (mpdu, 0, ackMode, 0, txVector);
}
txVector = manager->GetDataTxVector (packetHeader);
@@ -184,7 +185,7 @@ PowerRateAdaptationTest::TestParf ()
* As we are using recovery power, one failure make power increase.
*
*/
manager->ReportDataFailed (remoteAddress, &packetHeader, packet->GetSize ());
manager->ReportDataFailed (mpdu);
txVector = manager->GetDataTxVector (packetHeader);
mode = txVector.GetMode ();
@@ -201,10 +202,10 @@ PowerRateAdaptationTest::TestParf ()
*/
for (int i = 0; i < 7; i++)
{
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->GetSize ());
manager->ReportDataFailed (remoteAddress, &packetHeader, packet->GetSize ());
manager->ReportDataOk (mpdu, 0, ackMode, 0, txVector);
manager->ReportDataFailed (mpdu);
}
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->GetSize ());
manager->ReportDataOk (mpdu, 0, ackMode, 0, txVector);
txVector = manager->GetDataTxVector (packetHeader);
mode = txVector.GetMode ();
@@ -219,7 +220,7 @@ PowerRateAdaptationTest::TestParf ()
* As we are using recovery power, one failure make power increase. recoveryPower=false.
*/
manager->ReportDataFailed (remoteAddress, &packetHeader, packet->GetSize ());
manager->ReportDataFailed (mpdu);
txVector = manager->GetDataTxVector (packetHeader);
mode = txVector.GetMode ();
@@ -234,8 +235,8 @@ PowerRateAdaptationTest::TestParf ()
* After two consecutive fails the rate is decreased or the power increased.
* As we are at maximal power, the rate should be decreased.
*/
manager->ReportDataFailed (remoteAddress, &packetHeader, packet->GetSize ());
manager->ReportDataFailed (remoteAddress, &packetHeader, packet->GetSize ());
manager->ReportDataFailed (mpdu);
manager->ReportDataFailed (mpdu);
txVector = manager->GetDataTxVector (packetHeader);
mode = txVector.GetMode ();
@@ -252,7 +253,7 @@ PowerRateAdaptationTest::TestParf ()
*/
for (int i = 0; i < 10; i++)
{
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->GetSize ());
manager->ReportDataOk (mpdu, 0, ackMode, 0, txVector);
}
txVector = manager->GetDataTxVector (packetHeader);
@@ -268,7 +269,7 @@ PowerRateAdaptationTest::TestParf ()
* As we are using recovery rate, one failure make rate decrease. recoveryRate=false.
*/
manager->ReportDataFailed (remoteAddress, &packetHeader, packet->GetSize ());
manager->ReportDataFailed (mpdu);
txVector = manager->GetDataTxVector (packetHeader);
mode = txVector.GetMode ();
@@ -285,7 +286,7 @@ PowerRateAdaptationTest::TestParf ()
*/
for (int i = 0; i < 10; i++)
{
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->GetSize ());
manager->ReportDataOk (mpdu, 0, ackMode, 0, txVector);
}
txVector = manager->GetDataTxVector (packetHeader);
@@ -303,7 +304,7 @@ PowerRateAdaptationTest::TestParf ()
*/
for (int i = 0; i < 10; i++)
{
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->GetSize ());
manager->ReportDataOk (mpdu, 0, ackMode, 0, txVector);
}
txVector = manager->GetDataTxVector (packetHeader);
@@ -319,11 +320,11 @@ PowerRateAdaptationTest::TestParf ()
* One successful transmissions after a power decrease make recoverPower=false.
* So we need two consecutive failures to increase power again.
*/
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->GetSize ());
manager->ReportDataOk (mpdu, 0, ackMode, 0, txVector);
for (int i = 0; i < 2; i++)
{
manager->ReportDataFailed (remoteAddress,&packetHeader, packet->GetSize ());
manager->ReportDataFailed (mpdu);
}
txVector = manager->GetDataTxVector (packetHeader);
@@ -361,6 +362,7 @@ PowerRateAdaptationTest::TestAparf ()
packetHeader.SetType (WIFI_MAC_DATA);
packetHeader.SetQosTid (0);
Ptr<Packet> packet = Create<Packet> (10);
Ptr<WifiMacQueueItem> mpdu = Create<WifiMacQueueItem> (packet, packetHeader);
WifiMode ackMode;
/*
@@ -390,7 +392,7 @@ PowerRateAdaptationTest::TestAparf ()
*/
for (int i = 0; i < 3; i++)
{
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->GetSize ());
manager->ReportDataOk (mpdu, 0, ackMode, 0, txVector);
}
txVector = manager->GetDataTxVector (packetHeader);
@@ -406,7 +408,7 @@ PowerRateAdaptationTest::TestAparf ()
* One failure make the power to be increased again.
* Change to state Low.
*/
manager->ReportDataFailed (remoteAddress, &packetHeader, packet->GetSize ());
manager->ReportDataFailed (mpdu);
txVector = manager->GetDataTxVector (packetHeader);
mode = txVector.GetMode ();
@@ -424,7 +426,7 @@ PowerRateAdaptationTest::TestAparf ()
*/
for (int i = 0; i < 10; i++)
{
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->GetSize ());
manager->ReportDataOk (mpdu, 0, ackMode, 0, txVector);
}
txVector = manager->GetDataTxVector (packetHeader);
@@ -443,7 +445,7 @@ PowerRateAdaptationTest::TestAparf ()
for (int i = 0; i < 3; i++)
{
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->GetSize ());
manager->ReportDataOk (mpdu, 0, ackMode, 0, txVector);
}
txVector = manager->GetDataTxVector (packetHeader);
@@ -461,7 +463,7 @@ PowerRateAdaptationTest::TestAparf ()
*/
for (int i = 0; i < 16 * 3; i++)
{
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->GetSize ());
manager->ReportDataOk (mpdu, 0, ackMode, 0, txVector);
}
txVector = manager->GetDataTxVector (packetHeader);
@@ -477,7 +479,7 @@ PowerRateAdaptationTest::TestAparf ()
* After one fail the rate is decreased or the power increased.
* As we are at minimal power, the power should be increased.
*/
manager->ReportDataFailed (remoteAddress,&packetHeader, packet->GetSize ());
manager->ReportDataFailed (mpdu);
txVector = manager->GetDataTxVector (packetHeader);
mode = txVector.GetMode ();
@@ -494,7 +496,7 @@ PowerRateAdaptationTest::TestAparf ()
*/
for (int i = 0; i < 16; i++)
{
manager->ReportDataFailed (remoteAddress,&packetHeader, packet->GetSize ());
manager->ReportDataFailed (mpdu);
}
txVector = manager->GetDataTxVector (packetHeader);
@@ -511,7 +513,7 @@ PowerRateAdaptationTest::TestAparf ()
* As we are at maximal power, the rate should be decreased.
* Set critical rate to 54 Mbps.
*/
manager->ReportDataFailed (remoteAddress,&packetHeader, packet->GetSize ());
manager->ReportDataFailed (mpdu);
txVector = manager->GetDataTxVector (packetHeader);
mode = txVector.GetMode ();
@@ -528,7 +530,7 @@ PowerRateAdaptationTest::TestAparf ()
*/
for (int i = 0; i < 3; i++)
{
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->GetSize ());
manager->ReportDataOk (mpdu, 0, ackMode, 0, txVector);
}
txVector = manager->GetDataTxVector (packetHeader);
@@ -548,7 +550,7 @@ PowerRateAdaptationTest::TestAparf ()
*/
for (int i = 0; i < 9 * 3; i++)
{
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->GetSize ());
manager->ReportDataOk (mpdu, 0, ackMode, 0, txVector);
}
txVector = manager->GetDataTxVector (packetHeader);
@@ -560,7 +562,7 @@ PowerRateAdaptationTest::TestAparf ()
for (int i = 0; i < 3; i++)
{
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->GetSize ());
manager->ReportDataOk (mpdu, 0, ackMode, 0, txVector);
}
txVector = manager->GetDataTxVector (packetHeader);
@@ -604,6 +606,7 @@ PowerRateAdaptationTest::TestRrpaa ()
packetHeader.SetType (WIFI_MAC_DATA);
packetHeader.SetQosTid (0);
Ptr<Packet> packet = Create<Packet> (10);
Ptr<WifiMacQueueItem> mpdu = Create<WifiMacQueueItem> (packet, packetHeader);
WifiMode ackMode;
/*
@@ -662,7 +665,7 @@ PowerRateAdaptationTest::TestRrpaa ()
*/
for (int i = 0; i < 6; i++)
{
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->GetSize ());
manager->ReportDataOk (mpdu, 0, ackMode, 0, txVector);
}
txVector = manager->GetDataTxVector (packetHeader);
@@ -675,7 +678,7 @@ PowerRateAdaptationTest::TestRrpaa ()
/**
* Test that 7 is enough.
*/
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->GetSize ());
manager->ReportDataOk (mpdu, 0, ackMode, 0, txVector);
txVector = manager->GetDataTxVector (packetHeader);
mode = txVector.GetMode ();
@@ -692,7 +695,7 @@ PowerRateAdaptationTest::TestRrpaa ()
*/
for (int i = 0; i < 4; i++)
{
manager->ReportDataFailed (remoteAddress,&packetHeader, packet->GetSize ());
manager->ReportDataFailed (mpdu);
}
txVector = manager->GetDataTxVector (packetHeader);
@@ -702,7 +705,7 @@ PowerRateAdaptationTest::TestRrpaa ()
NS_TEST_ASSERT_MSG_EQ (mode.GetDataRate (txVector.GetChannelWidth (), txVector.GetGuardInterval (), 1), 9000000, "RRPAA: Incorrect vale of data rate");
NS_TEST_ASSERT_MSG_EQ (power, 17, "RRPAA: Incorrect value of power level");
manager->ReportDataFailed (remoteAddress,&packetHeader, packet->GetSize ());
manager->ReportDataFailed (mpdu);
txVector = manager->GetDataTxVector (packetHeader);
mode = txVector.GetMode ();
@@ -719,7 +722,7 @@ PowerRateAdaptationTest::TestRrpaa ()
for (int i = 0; i < 7; i++)
{
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->GetSize ());
manager->ReportDataOk (mpdu, 0, ackMode, 0, txVector);
}
txVector = manager->GetDataTxVector (packetHeader);
@@ -731,7 +734,7 @@ PowerRateAdaptationTest::TestRrpaa ()
for (int i = 0; i < 10; i++)
{
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->GetSize ());
manager->ReportDataOk (mpdu, 0, ackMode, 0, txVector);
}
txVector = manager->GetDataTxVector (packetHeader);
@@ -743,7 +746,7 @@ PowerRateAdaptationTest::TestRrpaa ()
for (int i = 0; i < 13; i++)
{
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->GetSize ());
manager->ReportDataOk (mpdu, 0, ackMode, 0, txVector);
}
txVector = manager->GetDataTxVector (packetHeader);
@@ -755,7 +758,7 @@ PowerRateAdaptationTest::TestRrpaa ()
for (int i = 0; i < 19; i++)
{
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->GetSize ());
manager->ReportDataOk (mpdu, 0, ackMode, 0, txVector);
}
txVector = manager->GetDataTxVector (packetHeader);
@@ -767,7 +770,7 @@ PowerRateAdaptationTest::TestRrpaa ()
for (int i = 0; i < 23; i++)
{
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->GetSize ());
manager->ReportDataOk (mpdu, 0, ackMode, 0, txVector);
}
txVector = manager->GetDataTxVector (packetHeader);
@@ -779,7 +782,7 @@ PowerRateAdaptationTest::TestRrpaa ()
for (int i = 0; i < 33; i++)
{
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->GetSize ());
manager->ReportDataOk (mpdu, 0, ackMode, 0, txVector);
}
txVector = manager->GetDataTxVector (packetHeader);
@@ -791,7 +794,7 @@ PowerRateAdaptationTest::TestRrpaa ()
for (int i = 0; i < 43; i++)
{
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->GetSize ());
manager->ReportDataOk (mpdu, 0, ackMode, 0, txVector);
}
txVector = manager->GetDataTxVector (packetHeader);
@@ -811,7 +814,7 @@ PowerRateAdaptationTest::TestRrpaa ()
for (int i = 0; i < 49; i++)
{
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->GetSize ());
manager->ReportDataOk (mpdu, 0, ackMode, 0, txVector);
}
txVector = manager->GetDataTxVector (packetHeader);
@@ -821,7 +824,7 @@ PowerRateAdaptationTest::TestRrpaa ()
NS_TEST_ASSERT_MSG_EQ (mode.GetDataRate (txVector.GetChannelWidth (), txVector.GetGuardInterval (), 1), 54000000, "RRPAA: Incorrect vale of data rate");
NS_TEST_ASSERT_MSG_EQ (power, 17, "RRPAA: Incorrect value of power level");
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->GetSize ());
manager->ReportDataOk (mpdu, 0, ackMode, 0, txVector);
txVector = manager->GetDataTxVector (packetHeader);
mode = txVector.GetMode ();
@@ -839,7 +842,7 @@ PowerRateAdaptationTest::TestRrpaa ()
for (int i = 0; i < 16 * 50; i++)
{
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->GetSize ());
manager->ReportDataOk (mpdu, 0, ackMode, 0, txVector);
}
txVector = manager->GetDataTxVector (packetHeader);
@@ -857,7 +860,7 @@ PowerRateAdaptationTest::TestRrpaa ()
for (int i = 0; i < 6; i++)
{
manager->ReportDataFailed (remoteAddress,&packetHeader, packet->GetSize ());
manager->ReportDataFailed (mpdu);
}
txVector = manager->GetDataTxVector (packetHeader);
@@ -875,7 +878,7 @@ PowerRateAdaptationTest::TestRrpaa ()
for (int i = 0; i < 16 * 6; i++)
{
manager->ReportDataFailed (remoteAddress,&packetHeader, packet->GetSize ());
manager->ReportDataFailed (mpdu);
}
txVector = manager->GetDataTxVector (packetHeader);
@@ -893,7 +896,7 @@ PowerRateAdaptationTest::TestRrpaa ()
for (int i = 0; i < 6; i++)
{
manager->ReportDataFailed (remoteAddress,&packetHeader, packet->GetSize ());
manager->ReportDataFailed (mpdu);
}
txVector = manager->GetDataTxVector (packetHeader);
@@ -909,7 +912,7 @@ PowerRateAdaptationTest::TestRrpaa ()
for (int i = 0; i < 11; i++)
{
manager->ReportDataFailed (remoteAddress,&packetHeader, packet->GetSize ());
manager->ReportDataFailed (mpdu);
}
txVector = manager->GetDataTxVector (packetHeader);
@@ -929,7 +932,7 @@ PowerRateAdaptationTest::TestRrpaa ()
for (int i = 0; i < 25; i++)
{
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->GetSize ());
manager->ReportDataOk (mpdu, 0, ackMode, 0, txVector);
}
txVector = manager->GetDataTxVector (packetHeader);
@@ -941,7 +944,7 @@ PowerRateAdaptationTest::TestRrpaa ()
for (int i = 0; i < 5; i++)
{
manager->ReportDataFailed (remoteAddress,&packetHeader, packet->GetSize ());
manager->ReportDataFailed (mpdu);
}
txVector = manager->GetDataTxVector (packetHeader);
@@ -953,7 +956,7 @@ PowerRateAdaptationTest::TestRrpaa ()
for (int i = 0; i < 5; i++)
{
manager->ReportDataFailed (remoteAddress,&packetHeader, packet->GetSize ());
manager->ReportDataFailed (mpdu);
}
txVector = manager->GetDataTxVector (packetHeader);
@@ -965,7 +968,7 @@ PowerRateAdaptationTest::TestRrpaa ()
for (int i = 0; i < 25; i++)
{
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->GetSize ());
manager->ReportDataOk (mpdu, 0, ackMode, 0, txVector);
}
txVector = manager->GetDataTxVector (packetHeader);
@@ -985,12 +988,12 @@ PowerRateAdaptationTest::TestRrpaa ()
{
for (int j = 0; j < 25; j++)
{
manager->ReportDataOk (remoteAddress, &packetHeader, 0, ackMode, 0, txVector, packet->GetSize ());
manager->ReportDataOk (mpdu, 0, ackMode, 0, txVector);
}
for (int j = 0; j < 5; j++)
{
manager->ReportDataFailed (remoteAddress,&packetHeader, packet->GetSize ());
manager->ReportDataFailed (mpdu);
}
}