wifi: Reuse Minstrel(Ht)WifiManager::DoNeedRetransmission() function
This commit is contained in:
committed by
Stefano Avallone
parent
eb82ff9c6e
commit
5b7eac10f9
@@ -32,6 +32,7 @@
|
||||
#include "ns3/wifi-mac.h"
|
||||
#include "ns3/wifi-net-device.h"
|
||||
#include "ns3/wifi-phy.h"
|
||||
#include "ns3/wifi-psdu.h"
|
||||
|
||||
#include <iomanip>
|
||||
|
||||
@@ -1173,6 +1174,27 @@ MinstrelHtWifiManager::DoGetRtsTxVector(WifiRemoteStation* st)
|
||||
}
|
||||
}
|
||||
|
||||
std::list<Ptr<WifiMpdu>>
|
||||
MinstrelHtWifiManager::DoGetMpdusToDropOnTxFailure(WifiRemoteStation* station, Ptr<WifiPsdu> psdu)
|
||||
{
|
||||
NS_LOG_FUNCTION(this << *psdu);
|
||||
|
||||
std::list<Ptr<WifiMpdu>> mpdusToDrop;
|
||||
|
||||
for (const auto& mpdu : *PeekPointer(psdu))
|
||||
{
|
||||
if (!DoNeedRetransmission(station,
|
||||
mpdu->GetPacket(),
|
||||
(mpdu->GetRetryCount() < GetMac()->GetFrameRetryLimit())))
|
||||
{
|
||||
// this MPDU needs to be dropped
|
||||
mpdusToDrop.push_back(mpdu);
|
||||
}
|
||||
}
|
||||
|
||||
return mpdusToDrop;
|
||||
}
|
||||
|
||||
bool
|
||||
MinstrelHtWifiManager::DoNeedRetransmission(WifiRemoteStation* st,
|
||||
Ptr<const Packet> packet,
|
||||
|
||||
@@ -272,6 +272,8 @@ class MinstrelHtWifiManager : public WifiRemoteStationManager
|
||||
double dataSnr,
|
||||
MHz_u dataChannelWidth,
|
||||
uint8_t dataNss) override;
|
||||
std::list<Ptr<WifiMpdu>> DoGetMpdusToDropOnTxFailure(WifiRemoteStation* station,
|
||||
Ptr<WifiPsdu> psdu) override;
|
||||
bool DoNeedRetransmission(WifiRemoteStation* st,
|
||||
Ptr<const Packet> packet,
|
||||
bool normally) override;
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
#include "ns3/simulator.h"
|
||||
#include "ns3/wifi-mac.h"
|
||||
#include "ns3/wifi-phy.h"
|
||||
#include "ns3/wifi-psdu.h"
|
||||
|
||||
#include <iomanip>
|
||||
|
||||
@@ -936,6 +937,27 @@ MinstrelWifiManager::DoGetRtsTxVector(WifiRemoteStation* st)
|
||||
return GetRtsTxVector(station);
|
||||
}
|
||||
|
||||
std::list<Ptr<WifiMpdu>>
|
||||
MinstrelWifiManager::DoGetMpdusToDropOnTxFailure(WifiRemoteStation* station, Ptr<WifiPsdu> psdu)
|
||||
{
|
||||
NS_LOG_FUNCTION(this << *psdu);
|
||||
|
||||
std::list<Ptr<WifiMpdu>> mpdusToDrop;
|
||||
|
||||
for (const auto& mpdu : *PeekPointer(psdu))
|
||||
{
|
||||
if (!DoNeedRetransmission(station,
|
||||
mpdu->GetPacket(),
|
||||
(mpdu->GetRetryCount() < GetMac()->GetFrameRetryLimit())))
|
||||
{
|
||||
// this MPDU needs to be dropped
|
||||
mpdusToDrop.push_back(mpdu);
|
||||
}
|
||||
}
|
||||
|
||||
return mpdusToDrop;
|
||||
}
|
||||
|
||||
bool
|
||||
MinstrelWifiManager::DoNeedRetransmission(WifiRemoteStation* st,
|
||||
Ptr<const Packet> packet,
|
||||
|
||||
@@ -252,7 +252,8 @@ class MinstrelWifiManager : public WifiRemoteStationManager
|
||||
void DoReportFinalDataFailed(WifiRemoteStation* station) override;
|
||||
WifiTxVector DoGetDataTxVector(WifiRemoteStation* station, MHz_u allowedWidth) override;
|
||||
WifiTxVector DoGetRtsTxVector(WifiRemoteStation* station) override;
|
||||
|
||||
std::list<Ptr<WifiMpdu>> DoGetMpdusToDropOnTxFailure(WifiRemoteStation* station,
|
||||
Ptr<WifiPsdu> psdu) override;
|
||||
bool DoNeedRetransmission(WifiRemoteStation* st,
|
||||
Ptr<const Packet> packet,
|
||||
bool normally) override;
|
||||
|
||||
Reference in New Issue
Block a user