wifi: (fixes #2826) Use lowest basic rate for management frames

This commit is contained in:
Sébastien Deronne
2018-03-02 23:46:11 +01:00
parent 3b1e77857e
commit 4bc502dd5b
17 changed files with 27 additions and 6 deletions

View File

@@ -53,8 +53,9 @@ Bugs fixed
- Bug 2813 - wifi: OFDM 10 MHz and 5 MHz PHYs do not have correct subcarrier frequency spacings
- Bug 2820 - wifi: segmentation fault when Rrpaa wifi manager is used
- Bug 2824 - ICMP opcode fr fragment timeout drop is wrong
- Bug 2828 - OLSR simple P2P example produces wrong results
- Bug 2826 - wifi: Management frames should be sent using the lowest basic rate
- Bug 2827 - wifi: Active scanning not working with 802.11n/ac/ax
- Bug 2828 - OLSR simple P2P example produces wrong results
- Bug 2831 - wifi: runtime channel width switch has no effect
- Bug 2836 - wifi: Missing VHT information in radiotap header when A-MPDU is used
- Bug 2838 - wifi: ht-wifi-network crashes with RTS/CTS enabled and frequency set to 2.4GHz

View File

@@ -45,7 +45,7 @@ cpp_examples = [
("he-wifi-network --simulationTime=0.25 --frequency=5 --useRts=0 --minExpectedThroughput=6 --maxExpectedThroughput=754", "True", "True"),
("he-wifi-network --simulationTime=0.3 --frequency=5 --useRts=1 --minExpectedThroughput=6 --maxExpectedThroughput=639", "True", "True"),
("he-wifi-network --simulationTime=0.25 --frequency=2.4 --useRts=0 --minExpectedThroughput=6 --maxExpectedThroughput=238", "True", "True"),
("he-wifi-network --simulationTime=0.25 --frequency=2.4 --useRts=1 --minExpectedThroughput=6 --maxExpectedThroughput=224", "True", "True"),
("he-wifi-network --simulationTime=0.3 --frequency=2.4 --useRts=1 --minExpectedThroughput=6 --maxExpectedThroughput=224", "True", "True"),
("simple-ht-hidden-stations --simulationTime=1 --minExpectedThroughput=22 --maxExpectedThroughput=22.5", "True", "True"),
("mixed-network --simulationTime=1", "True", "True"),
("wifi-aggregation --simulationTime=1 --verifyResults=1", "True", "True"),

View File

@@ -176,15 +176,17 @@ The following details pertain to the physical layer and channel models:
* PLCP preamble reception is not modeled
* PHY_RXSTART is not supported
* The current implementation assumes that secondary channels are always higher than primary channels
* Cases where RTS/CTS and ACK are transmitted using HT/VHT/HE formats are not supported
At the MAC layer, most of the main functions found in deployed Wi-Fi
equipment for 802.11a/b/e/g/n/ac/ax are implemented, but there are scattered instances
where some limitations in the models exist.Support for 802.11n and ac is evolving.
Some additional details are as follows:
where some limitations in the models exist. Support for 802.11n and ac is evolving.
Some implementation choices that are not imposed by the standard are listed below:
* BSSBasicRateSet for 802.11b has been assumed to be 1-2 Mbit/s
* BSSBasicRateSet for 802.11a/g has been assumed to be 6-12-24 Mbit/s
* cases where RTS/CTS and ACK are transmitted using HT/VHT/HE formats are not supported
* The wifi manager always selects the lowest basic rate for management frames.
Design Details
**************

View File

@@ -859,7 +859,25 @@ WifiRemoteStationManager::GetDataTxVector (Mac48Address address, const WifiMacHe
(void) found;
return datatag.GetDataTxVector ();
}
return DoGetDataTxVector (Lookup (address, header));
WifiTxVector txVector = DoGetDataTxVector (Lookup (address, header));
if (header->IsMgt ())
{
//Use the lowest basic rate for management frames
WifiMode mgtMode;
if (GetNBasicModes () > 0)
{
mgtMode = GetBasicMode (0);
}
else
{
mgtMode = GetDefaultMode ();
}
txVector.SetMode (mgtMode);
txVector.SetPreambleType (GetPreambleForTransmission (mgtMode, address));
txVector.SetChannelWidth (GetChannelWidthForTransmission (mgtMode, m_wifiPhy->GetChannelWidth ()));
txVector.SetGuardInterval (ConvertGuardIntervalToNanoSeconds (mgtMode, m_wifiPhy->GetShortGuardInterval (), m_wifiPhy->GetGuardInterval ()));
}
return txVector;
}
WifiTxVector