diff --git a/RELEASE_NOTES b/RELEASE_NOTES index e28d7ce26..7bb0d7c40 100644 --- a/RELEASE_NOTES +++ b/RELEASE_NOTES @@ -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 diff --git a/examples/wireless/examples-to-run.py b/examples/wireless/examples-to-run.py index db5c1cd80..3eafa360c 100755 --- a/examples/wireless/examples-to-run.py +++ b/examples/wireless/examples-to-run.py @@ -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"), diff --git a/src/mesh/test/dot11s/hwmp-proactive-regression-test-0-1.pcap b/src/mesh/test/dot11s/hwmp-proactive-regression-test-0-1.pcap index 5559072a2..93d6c3e22 100644 Binary files a/src/mesh/test/dot11s/hwmp-proactive-regression-test-0-1.pcap and b/src/mesh/test/dot11s/hwmp-proactive-regression-test-0-1.pcap differ diff --git a/src/mesh/test/dot11s/hwmp-proactive-regression-test-1-1.pcap b/src/mesh/test/dot11s/hwmp-proactive-regression-test-1-1.pcap index 24d4adc6e..e1c4dafaf 100644 Binary files a/src/mesh/test/dot11s/hwmp-proactive-regression-test-1-1.pcap and b/src/mesh/test/dot11s/hwmp-proactive-regression-test-1-1.pcap differ diff --git a/src/mesh/test/dot11s/hwmp-proactive-regression-test-2-1.pcap b/src/mesh/test/dot11s/hwmp-proactive-regression-test-2-1.pcap index 21b1ec529..046fe171f 100644 Binary files a/src/mesh/test/dot11s/hwmp-proactive-regression-test-2-1.pcap and b/src/mesh/test/dot11s/hwmp-proactive-regression-test-2-1.pcap differ diff --git a/src/mesh/test/dot11s/hwmp-proactive-regression-test-3-1.pcap b/src/mesh/test/dot11s/hwmp-proactive-regression-test-3-1.pcap index 1ad4dba49..c44977a08 100644 Binary files a/src/mesh/test/dot11s/hwmp-proactive-regression-test-3-1.pcap and b/src/mesh/test/dot11s/hwmp-proactive-regression-test-3-1.pcap differ diff --git a/src/mesh/test/dot11s/hwmp-proactive-regression-test-4-1.pcap b/src/mesh/test/dot11s/hwmp-proactive-regression-test-4-1.pcap index d018de8d7..fc9658aa9 100644 Binary files a/src/mesh/test/dot11s/hwmp-proactive-regression-test-4-1.pcap and b/src/mesh/test/dot11s/hwmp-proactive-regression-test-4-1.pcap differ diff --git a/src/mesh/test/dot11s/hwmp-reactive-regression-test-0-1.pcap b/src/mesh/test/dot11s/hwmp-reactive-regression-test-0-1.pcap index 8e1ca74fe..521cdaf8b 100644 Binary files a/src/mesh/test/dot11s/hwmp-reactive-regression-test-0-1.pcap and b/src/mesh/test/dot11s/hwmp-reactive-regression-test-0-1.pcap differ diff --git a/src/mesh/test/dot11s/hwmp-reactive-regression-test-1-1.pcap b/src/mesh/test/dot11s/hwmp-reactive-regression-test-1-1.pcap index ebc9ace8b..da3ef8fb4 100644 Binary files a/src/mesh/test/dot11s/hwmp-reactive-regression-test-1-1.pcap and b/src/mesh/test/dot11s/hwmp-reactive-regression-test-1-1.pcap differ diff --git a/src/mesh/test/dot11s/hwmp-reactive-regression-test-2-1.pcap b/src/mesh/test/dot11s/hwmp-reactive-regression-test-2-1.pcap index 468991eac..124e2856b 100644 Binary files a/src/mesh/test/dot11s/hwmp-reactive-regression-test-2-1.pcap and b/src/mesh/test/dot11s/hwmp-reactive-regression-test-2-1.pcap differ diff --git a/src/mesh/test/dot11s/hwmp-reactive-regression-test-3-1.pcap b/src/mesh/test/dot11s/hwmp-reactive-regression-test-3-1.pcap index 8b392a949..8a9e53ca6 100644 Binary files a/src/mesh/test/dot11s/hwmp-reactive-regression-test-3-1.pcap and b/src/mesh/test/dot11s/hwmp-reactive-regression-test-3-1.pcap differ diff --git a/src/mesh/test/dot11s/hwmp-reactive-regression-test-4-1.pcap b/src/mesh/test/dot11s/hwmp-reactive-regression-test-4-1.pcap index 9282eed86..4c4f75ac8 100644 Binary files a/src/mesh/test/dot11s/hwmp-reactive-regression-test-4-1.pcap and b/src/mesh/test/dot11s/hwmp-reactive-regression-test-4-1.pcap differ diff --git a/src/mesh/test/dot11s/hwmp-reactive-regression-test-5-1.pcap b/src/mesh/test/dot11s/hwmp-reactive-regression-test-5-1.pcap index cae47aabf..0f1667764 100644 Binary files a/src/mesh/test/dot11s/hwmp-reactive-regression-test-5-1.pcap and b/src/mesh/test/dot11s/hwmp-reactive-regression-test-5-1.pcap differ diff --git a/src/mesh/test/dot11s/hwmp-simplest-regression-test-0-1.pcap b/src/mesh/test/dot11s/hwmp-simplest-regression-test-0-1.pcap index c7ffa5b10..b4cfafddf 100644 Binary files a/src/mesh/test/dot11s/hwmp-simplest-regression-test-0-1.pcap and b/src/mesh/test/dot11s/hwmp-simplest-regression-test-0-1.pcap differ diff --git a/src/mesh/test/dot11s/hwmp-simplest-regression-test-1-1.pcap b/src/mesh/test/dot11s/hwmp-simplest-regression-test-1-1.pcap index 7c5e35d88..6cc783fce 100644 Binary files a/src/mesh/test/dot11s/hwmp-simplest-regression-test-1-1.pcap and b/src/mesh/test/dot11s/hwmp-simplest-regression-test-1-1.pcap differ diff --git a/src/wifi/doc/source/wifi-design.rst b/src/wifi/doc/source/wifi-design.rst index 85ed7401f..dcabb3497 100644 --- a/src/wifi/doc/source/wifi-design.rst +++ b/src/wifi/doc/source/wifi-design.rst @@ -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 ************** diff --git a/src/wifi/model/wifi-remote-station-manager.cc b/src/wifi/model/wifi-remote-station-manager.cc index df93b7490..41298edff 100644 --- a/src/wifi/model/wifi-remote-station-manager.cc +++ b/src/wifi/model/wifi-remote-station-manager.cc @@ -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