--- a/src/wifi/model/parf-wifi-manager.cc Wed Sep 02 16:37:05 2015 -0700
+++ b/src/wifi/model/parf-wifi-manager.cc Thu Sep 03 22:16:49 2015 +0200
@@ -294,8 +294,14 @@
{
NS_LOG_FUNCTION (this << st << size);
ParfWifiRemoteStation *station = (ParfWifiRemoteStation *) st;
+ uint32_t channelWidth = GetChannelWidth (station);
+ if (channelWidth >= 40)
+ {
+ //avoid to use legacy rate adaptation algorithms for IEEE 802.11n/ac
+ channelWidth = 20;
+ }
CheckInit (station);
- return WifiTxVector (GetSupported (station, station->m_currentRate), station->m_currentPower, GetLongRetryCount (station), GetShortGuardInterval (station), Min (GetNumberOfReceiveAntennas (station), GetNumberOfTransmitAntennas ()), GetNumberOfTransmitAntennas (station), GetAggregation (station), GetStbc (station));
+ return WifiTxVector (GetSupported (station, station->m_currentRate), station->m_currentPower, GetLongRetryCount (station), false, 1, 0, channelWidth, GetAggregation (station), false);
}
WifiTxVector
@@ -305,7 +311,13 @@
/// \todo we could/should implement the Arf algorithm for
/// RTS only by picking a single rate within the BasicRateSet.
ParfWifiRemoteStation *station = (ParfWifiRemoteStation *) st;
- return WifiTxVector (GetSupported (station, 0), GetDefaultTxPowerLevel (), GetShortRetryCount (station), GetShortGuardInterval (station), Min (GetNumberOfReceiveAntennas (station), GetNumberOfTransmitAntennas ()), GetNumberOfTransmitAntennas (station), GetAggregation (station), GetStbc (station));
+ uint32_t channelWidth = GetChannelWidth (station);
+ if (channelWidth >= 40)
+ {
+ //avoid to use legacy rate adaptation algorithms for IEEE 802.11n/ac
+ channelWidth = 20;
+ }
+ return WifiTxVector (GetSupported (station, 0), GetDefaultTxPowerLevel (), GetShortRetryCount (station), false, 1, 0, channelWidth, GetAggregation (station), false);
}
bool