wifi: Reuse Minstrel(Ht)WifiManager::DoNeedRetransmission() function

This commit is contained in:
Stefano Avallone
2024-08-14 16:15:05 +02:00
committed by Stefano Avallone
parent eb82ff9c6e
commit 5b7eac10f9
4 changed files with 48 additions and 1 deletions

View File

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

View File

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

View File

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

View File

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