Bug 2003 [wifi] - Missing DSSS short PLCP preamble

This commit is contained in:
Sébastien Deronne
2015-09-30 22:24:08 +02:00
parent cfccf23b06
commit 5aa0f567df
17 changed files with 287 additions and 36 deletions

View File

@@ -27,6 +27,7 @@ Bugs fixed
----------
- Bug 1132 - useless for loops in block-ack-test-suite.cc
- Bug 2183 - LiIonEnergySourceHelper is not in the energy wscript
- Bug 2003 - Missing DSSS short PLCP preamble
Known issues
------------

View File

@@ -334,6 +334,14 @@ ApWifiMac::GetSupportedRates (void) const
return rates;
}
CapabilityInformation
ApWifiMac::GetCapabilities (void) const
{
CapabilityInformation capabilities;
capabilities.SetShortPreamble (m_phy->GetShortPlcpPreamble ());
return capabilities;
}
HtCapabilities
ApWifiMac::GetHtCapabilities (void) const
{
@@ -417,6 +425,7 @@ ApWifiMac::SendProbeResp (Mac48Address to)
probe.SetSsid (GetSsid ());
probe.SetSupportedRates (GetSupportedRates ());
probe.SetBeaconIntervalUs (m_beaconInterval.GetMicroSeconds ());
probe.SetCapabilities (GetCapabilities ());
if (m_htSupported || m_vhtSupported)
{
probe.SetHtCapabilities (GetHtCapabilities ());
@@ -459,7 +468,7 @@ ApWifiMac::SendAssocResp (Mac48Address to, bool success)
}
assoc.SetSupportedRates (GetSupportedRates ());
assoc.SetStatusCode (code);
assoc.SetCapabilities (GetCapabilities ());
if (m_htSupported || m_vhtSupported)
{
assoc.SetHtCapabilities (GetHtCapabilities ());
@@ -494,6 +503,7 @@ ApWifiMac::SendOneBeacon (void)
beacon.SetSsid (GetSsid ());
beacon.SetSupportedRates (GetSupportedRates ());
beacon.SetBeaconIntervalUs (m_beaconInterval.GetMicroSeconds ());
beacon.SetCapabilities (GetCapabilities ());
if (m_htSupported || m_vhtSupported)
{
beacon.SetHtCapabilities (GetHtCapabilities ());
@@ -630,6 +640,8 @@ ApWifiMac::Receive (Ptr<Packet> packet, const WifiMacHeader *hdr)
//rate set is compatible with our Basic Rate set
MgtAssocRequestHeader assocReq;
packet->RemoveHeader (assocReq);
CapabilityInformation capabilities = assocReq.GetCapabilities ();
m_stationManager->AddSupportedPlcpPreamble (from, capabilities.IsShortPreamble ());
SupportedRates rates = assocReq.GetSupportedRates ();
bool problem = false;
for (uint32_t i = 0; i < m_stationManager->GetNBasicModes (); i++)

View File

@@ -24,11 +24,12 @@
#define AP_WIFI_MAC_H
#include "regular-wifi-mac.h"
#include "capability-information.h"
#include "ht-capabilities.h"
#include "vht-capabilities.h"
#include "amsdu-subframe-header.h"
#include "supported-rates.h"
#include "ns3/random-variable-stream.h"
#include "vht-capabilities.h"
namespace ns3 {
@@ -180,6 +181,12 @@ private:
* Forward a beacon packet to the beacon special DCF.
*/
void SendOneBeacon (void);
/**
* Return the Capability information of the current AP.
*
* \return the Capability information that we support
*/
CapabilityInformation GetCapabilities (void) const;
/**
* Return the HT capability of the current AP.
*

View File

@@ -47,6 +47,16 @@ CapabilityInformation::SetIbss (void)
Set (1);
}
void
CapabilityInformation::SetShortPreamble (bool shortPreamble)
{
NS_LOG_FUNCTION (this);
if (shortPreamble)
{
Set (5);
}
}
bool
CapabilityInformation::IsEss (void) const
{
@@ -61,6 +71,13 @@ CapabilityInformation::IsIbss (void) const
return Is (1);
}
bool
CapabilityInformation::IsShortPreamble (void) const
{
NS_LOG_FUNCTION (this);
return Is (5);
}
void
CapabilityInformation::Set (uint8_t n)
{

View File

@@ -46,6 +46,14 @@ public:
* in the capability information field.
*/
void SetIbss (void);
/**
* Set the short preamble bit
* in the capability information field.
*
* shortPreamble the short preamble bit
*
*/
void SetShortPreamble (bool shortPreamble);
/**
* Check if the Extended Service Set (ESS) bit
@@ -63,6 +71,14 @@ public:
* field is set to 1
*/
bool IsIbss (void) const;
/**
* Check if the short preamble bit
* in the capability information field is set to 1.
*
* \return short preamble bit in the capability information
* field is set to 1
*/
bool IsShortPreamble (void) const;
/**
* Return the serialized size of capability

View File

@@ -1422,6 +1422,10 @@ MacLow::CalculateOverallTxTime (Ptr<const Packet> packet,
{
preamble = WIFI_PREAMBLE_HT_MF;
}
else if (m_phy->GetShortPlcpPreamble () && m_stationManager->GetShortPreambleSupported (m_currentHdr.GetAddr1 ()))
{
preamble = WIFI_PREAMBLE_SHORT;
}
else
{
preamble = WIFI_PREAMBLE_LONG;
@@ -1458,6 +1462,10 @@ MacLow::CalculateTransmissionTime (Ptr<const Packet> packet,
{
preamble = WIFI_PREAMBLE_HT_MF;
}
else if (m_phy->GetShortPlcpPreamble () && m_stationManager->GetShortPreambleSupported (m_currentHdr.GetAddr1 ()))
{
preamble = WIFI_PREAMBLE_SHORT;
}
else
{
preamble = WIFI_PREAMBLE_LONG;
@@ -1862,6 +1870,10 @@ MacLow::StartDataTxTimers (WifiTxVector dataTxVector)
{
preamble = WIFI_PREAMBLE_HT_MF;
}
else if (m_phy->GetShortPlcpPreamble () && m_stationManager->GetShortPreambleSupported (m_currentHdr.GetAddr1 ()))
{
preamble = WIFI_PREAMBLE_SHORT;
}
else
{
preamble = WIFI_PREAMBLE_LONG;
@@ -1946,6 +1958,10 @@ MacLow::SendDataPacket (void)
{
preamble = WIFI_PREAMBLE_HT_MF;
}
else if (m_phy->GetShortPlcpPreamble () && m_stationManager->GetShortPreambleSupported (m_currentHdr.GetAddr1 ()))
{
preamble = WIFI_PREAMBLE_SHORT;
}
else
{
preamble = WIFI_PREAMBLE_LONG;
@@ -2176,6 +2192,10 @@ MacLow::SendDataAfterCts (Mac48Address source, Time duration)
{
preamble = WIFI_PREAMBLE_HT_MF;
}
else if (m_phy->GetShortPlcpPreamble () && m_stationManager->GetShortPreambleSupported (m_currentHdr.GetAddr1 ()))
{
preamble = WIFI_PREAMBLE_SHORT;
}
else
{
preamble = WIFI_PREAMBLE_LONG;
@@ -2814,6 +2834,10 @@ MacLow::StopMpduAggregation (Ptr<const Packet> peekedPacket, WifiMacHeader peeke
{
preamble = WIFI_PREAMBLE_HT_MF;
}
else if (m_phy->GetShortPlcpPreamble () && m_stationManager->GetShortPreambleSupported (m_currentHdr.GetAddr1 ()))
{
preamble = WIFI_PREAMBLE_SHORT;
}
else
{
preamble = WIFI_PREAMBLE_LONG;

View File

@@ -185,6 +185,18 @@ MgtProbeResponseHeader::GetSupportedRates (void) const
return m_rates;
}
void
MgtProbeResponseHeader::SetCapabilities (CapabilityInformation capabilities)
{
m_capability = capabilities;
}
CapabilityInformation
MgtProbeResponseHeader::GetCapabilities (void) const
{
return m_capability;
}
void
MgtProbeResponseHeader::SetHtCapabilities (HtCapabilities htcapabilities)
{
@@ -357,16 +369,34 @@ MgtAssocRequestHeader::SetSupportedRates (SupportedRates rates)
m_rates = rates;
}
void
MgtAssocRequestHeader::SetListenInterval (uint16_t interval)
{
m_listenInterval = interval;
}
void
MgtAssocRequestHeader::SetCapabilities (CapabilityInformation capabilities)
{
m_capability = capabilities;
}
CapabilityInformation
MgtAssocRequestHeader::GetCapabilities (void) const
{
return m_capability;
}
void
MgtAssocRequestHeader::SetHtCapabilities (HtCapabilities htcapabilities)
{
m_htCapability = htcapabilities;
}
void
MgtAssocRequestHeader::SetListenInterval (uint16_t interval)
HtCapabilities
MgtAssocRequestHeader::GetHtCapabilities (void) const
{
m_listenInterval = interval;
return m_htCapability;
}
void
@@ -381,12 +411,6 @@ MgtAssocRequestHeader::GetVhtCapabilities (void) const
return m_vhtCapability;
}
HtCapabilities
MgtAssocRequestHeader::GetHtCapabilities (void) const
{
return m_htCapability;
}
Ssid
MgtAssocRequestHeader::GetSsid (void) const
{
@@ -512,6 +536,18 @@ MgtAssocResponseHeader::SetSupportedRates (SupportedRates rates)
m_rates = rates;
}
void
MgtAssocResponseHeader::SetCapabilities (CapabilityInformation capabilities)
{
m_capability = capabilities;
}
CapabilityInformation
MgtAssocResponseHeader::GetCapabilities (void) const
{
return m_capability;
}
void
MgtAssocResponseHeader::SetHtCapabilities (HtCapabilities htcapabilities)
{

View File

@@ -31,7 +31,6 @@
#include "supported-rates.h"
#include "ssid.h"
#include "ht-capabilities.h"
#include "ht-capabilities.h"
#include "vht-capabilities.h"
namespace ns3 {
@@ -64,6 +63,12 @@ public:
* \param interval the listen interval
*/
void SetListenInterval (uint16_t interval);
/**
* Set the Capability information.
*
* \param capabilities Capability information
*/
void SetCapabilities (CapabilityInformation capabilities);
/**
* Set the HT capabilities.
*
@@ -77,18 +82,23 @@ public:
*/
void SetVhtCapabilities (VhtCapabilities vhtcapabilities);
/**
* Return the VHT capabilities.
*
* \return VHT capabilities
*/
VhtCapabilities GetVhtCapabilities (void) const;
* Return the Capability information.
*
* \return Capability information
*/
CapabilityInformation GetCapabilities (void) const;
/**
* Return the HT capabilities.
*
* \return HT capabilities
*/
HtCapabilities GetHtCapabilities (void) const;
/**
* Return the VHT capabilities.
*
* \return VHT capabilities
*/
VhtCapabilities GetVhtCapabilities (void) const;
/**
* Return the Service Set Identifier (SSID).
@@ -153,6 +163,18 @@ public:
* \return the supported rates
*/
SupportedRates GetSupportedRates (void);
/**
* Return the Capability information.
*
* \return Capability information
*/
CapabilityInformation GetCapabilities (void) const;
/**
* Set the Capability information.
*
* \param capabilities Capability information
*/
void SetCapabilities (CapabilityInformation capabilities);
/**
* Return the HT capabilities.
*
@@ -318,30 +340,42 @@ public:
* \return the supported rates
*/
SupportedRates GetSupportedRates (void) const;
/**
* Return the Capability information.
*
* \return Capability information
*/
CapabilityInformation GetCapabilities (void) const;
/**
* Return the HT capabilities.
*
* \return HT capabilities
*/
HtCapabilities GetHtCapabilities (void) const;
/**
* Set the VHT capabilities.
*
* \param vhtcapabilities VHT capabilities
*/
void SetVhtCapabilities (VhtCapabilities vhtcapabilities);
/**
* Return the VHT capabilities.
*
* \return VHT capabilities
*/
VhtCapabilities GetVhtCapabilities (void) const;
/**
* Set the Capability information.
*
* \param capabilities Capability information
*/
void SetCapabilities (CapabilityInformation capabilities);
/**
* Set the HT capabilities.
*
* \param htcapabilities HT capabilities
*/
void SetHtCapabilities (HtCapabilities htcapabilities);
/**
* Set the VHT capabilities.
*
* \param vhtcapabilities VHT capabilities
*/
void SetVhtCapabilities (VhtCapabilities vhtcapabilities);
/**
* Set the Service Set Identifier (SSID).
*

View File

@@ -222,6 +222,7 @@ StaWifiMac::SendAssociationRequest (void)
MgtAssocRequestHeader assoc;
assoc.SetSsid (GetSsid ());
assoc.SetSupportedRates (GetSupportedRates ());
assoc.SetCapabilities (GetCapabilities ());
if (m_htSupported || m_vhtSupported)
{
assoc.SetHtCapabilities (GetHtCapabilities ());
@@ -558,6 +559,8 @@ StaWifiMac::Receive (Ptr<Packet> packet, const WifiMacHeader *hdr)
{
MgtAssocResponseHeader assocResp;
packet->RemoveHeader (assocResp);
CapabilityInformation capabilities = assocResp.GetCapabilities ();
m_stationManager->AddSupportedPlcpPreamble (hdr->GetAddr2 (), capabilities.IsShortPreamble ());
if (m_assocRequestEvent.IsRunning ())
{
m_assocRequestEvent.Cancel ();
@@ -655,6 +658,14 @@ StaWifiMac::GetSupportedRates (void) const
return rates;
}
CapabilityInformation
StaWifiMac::GetCapabilities (void) const
{
CapabilityInformation capabilities;
capabilities.SetShortPreamble (m_phy->GetShortPlcpPreamble ());
return capabilities;
}
HtCapabilities
StaWifiMac::GetHtCapabilities (void) const
{

View File

@@ -28,6 +28,7 @@
#include "ns3/traced-callback.h"
#include "supported-rates.h"
#include "amsdu-subframe-header.h"
#include "capability-information.h"
namespace ns3 {
@@ -171,13 +172,19 @@ private:
*/
void SetState (enum MacState value);
/**
* Return the HT capability of the current AP.
* Return the Capability information of the current STA.
*
* \return the Capability information that we support
*/
CapabilityInformation GetCapabilities (void) const;
/**
* Return the HT capability of the current STA.
*
* \return the HT capability that we support
*/
HtCapabilities GetHtCapabilities (void) const;
/**
* Return the VHT capability of the current AP.
* Return the VHT capability of the current STA.
*
* \return the VHT capability that we support
*/

View File

@@ -262,7 +262,7 @@ WifiPhy::GetPlcpHeaderMode (WifiMode payloadMode, WifiPreamble preamble, WifiTxV
return WifiPhy::GetErpOfdmRate6Mbps ();
case WIFI_MOD_CLASS_DSSS:
case WIFI_MOD_CLASS_HR_DSSS:
if (preamble == WIFI_PREAMBLE_LONG)
if (preamble == WIFI_PREAMBLE_LONG || payloadMode == WifiPhy::GetDsssRate1Mbps ())
{
//(Section 16.2.3 "PLCP field definitions" and Section 17.2.2.2 "Long PPDU format"; IEEE Std 802.11-2012)
return WifiPhy::GetDsssRate1Mbps ();
@@ -326,7 +326,7 @@ WifiPhy::GetPlcpHeaderDuration (WifiTxVector txVector, WifiPreamble preamble)
return MicroSeconds (4);
case WIFI_MOD_CLASS_DSSS:
case WIFI_MOD_CLASS_HR_DSSS:
if (preamble == WIFI_PREAMBLE_SHORT)
if ((preamble == WIFI_PREAMBLE_SHORT) && (txVector.GetMode ().GetDataRate (22, 0, 1) > 1000000))
{
//(Section 17.2.2.3 "Short PPDU format" and Figure 17-2 "Short PPDU format"; IEEE Std 802.11-2012)
return MicroSeconds (24);
@@ -378,7 +378,7 @@ WifiPhy::GetPlcpPreambleDuration (WifiTxVector txVector, WifiPreamble preamble)
return MicroSeconds (16);
case WIFI_MOD_CLASS_DSSS:
case WIFI_MOD_CLASS_HR_DSSS:
if (preamble == WIFI_PREAMBLE_SHORT)
if ((preamble == WIFI_PREAMBLE_SHORT) && (txVector.GetMode ().GetDataRate (22, 0, 1) > 1000000))
{
//(Section 17.2.2.3 "Short PPDU format)" Figure 17-2 "Short PPDU format"; IEEE Std 802.11-2012)
return MicroSeconds (72);

View File

@@ -1219,6 +1219,14 @@ public:
* \return true if Greenfield is supported, false otherwise
*/
virtual bool GetGreenfield (void) const = 0;
/**
* \param shortPreamble Enable or disable short PLCP preamble
*/
virtual void SetShortPlcpPreamble (bool shortPreamble) = 0;
/**
* \return true if short PLCP preamble is supported, false otherwise
*/
virtual bool GetShortPlcpPreamble (void) const = 0;
/**
* \return the channel width
*/

View File

@@ -479,6 +479,15 @@ WifiRemoteStationManager::Reset (Mac48Address address)
AddSupportedMcs (address, GetDefaultMcs ());
}
void
WifiRemoteStationManager::AddSupportedPlcpPreamble (Mac48Address address, bool isShortPreambleSupported)
{
NS_LOG_FUNCTION (this << address << isShortPreambleSupported);
NS_ASSERT (!address.IsGroup ());
WifiRemoteStationState *state = LookupState (address);
state->m_shortPreamble = isShortPreambleSupported;
}
void
WifiRemoteStationManager::AddSupportedMode (Mac48Address address, WifiMode mode)
{
@@ -1305,6 +1314,7 @@ WifiRemoteStationManager::LookupState (Mac48Address address) const
state->m_channelWidth = m_wifiPhy->GetChannelWidth ();
state->m_shortGuardInterval = m_wifiPhy->GetGuardInterval ();
state->m_greenfield = m_wifiPhy->GetGreenfield ();
state->m_shortPreamble = m_wifiPhy->GetShortPlcpPreamble ();
state->m_rx = 1;
state->m_tx = 1;
state->m_ness = 0;
@@ -1401,6 +1411,12 @@ WifiRemoteStationManager::GetGreenfieldSupported (Mac48Address address) const
return LookupState (address)->m_greenfield;
}
bool
WifiRemoteStationManager::GetShortPreambleSupported (Mac48Address address) const
{
return LookupState (address)->m_shortPreamble;
}
WifiMode
WifiRemoteStationManager::GetDefaultMode (void) const
{
@@ -1560,6 +1576,12 @@ WifiRemoteStationManager::GetGreenfield (const WifiRemoteStation *station) const
return station->m_state->m_greenfield;
}
bool
WifiRemoteStationManager::GetShortPreamble (const WifiRemoteStation *station) const
{
return station->m_state->m_shortPreamble;
}
bool
WifiRemoteStationManager::GetAggregation (const WifiRemoteStation *station) const
{

View File

@@ -243,6 +243,15 @@ public:
* false otherwise
*/
bool GetGreenfieldSupported (Mac48Address address) const;
/**
* Return whether the station supports short PLCP preamble or not.
*
* \param address the address of the station
*
* \return true if short PLCP preamble is supported by the station,
* false otherwise
*/
bool GetShortPreambleSupported (Mac48Address address) const;
/**
* Add a given Modulation and Coding Scheme (MCS) index to
* the set of basic MCS.
@@ -285,7 +294,6 @@ public:
*/
WifiMode GetNonUnicastMode (void) const;
/**
* Invoked in an AP upon disassociation of a
* specific STA.
@@ -314,6 +322,14 @@ public:
*/
void AddAllSupportedModes (Mac48Address address);
/**
* Record whether the short PLCP preamble is supported by the station.
*
* \param address the address of the station
* \param isShortPreambleSupported whether or not short PLCP preamble is supported by the station
*/
void AddSupportedPlcpPreamble (Mac48Address address, bool isShortPreambleSupported);
/**
* Return whether the station state is brand new.
*
@@ -712,6 +728,15 @@ protected:
* false otherwise
*/
bool GetGreenfield (const WifiRemoteStation *station) const;
/**
* Return whether the station supports short PLCP preamble or not.
*
* \param station the station being queried
*
* \return true if short PLCP preamble is supported by the station,
* false otherwise
*/
bool GetShortPreamble (const WifiRemoteStation *station) const;
/**
* Return the number of receive antennas the station has.
*
@@ -1114,7 +1139,8 @@ struct WifiRemoteStationState
uint32_t m_ness; //!< Number of streams in beamforming of the remote station
bool m_stbc; //!< Flag if STBC is used by the remote station
bool m_aggregation; //!< Flag if MPDU aggregation is used by the remote station
bool m_greenfield; //!< Flag if green field is used by the remote station
bool m_greenfield; //!< Flag if greenfield is used by the remote station
bool m_shortPreamble; //!< Flag if short PLCP preamble is used by the remote station
};
/**

View File

@@ -167,6 +167,12 @@ YansWifiPhy::GetTypeId (void)
MakeBooleanAccessor (&YansWifiPhy::GetGreenfield,
&YansWifiPhy::SetGreenfield),
MakeBooleanChecker ())
.AddAttribute ("ShortPlcpPreambleEnabled",
"Whether or not short PLCP preamble is enabled.",
BooleanValue (false),
MakeBooleanAccessor (&YansWifiPhy::GetShortPlcpPreamble,
&YansWifiPhy::SetShortPlcpPreamble),
MakeBooleanChecker ())
.AddAttribute ("ChannelWidth",
"Whether 5MHz, 10MHz, 20MHz, 22MHz, 40MHz, 80 MHz or 160 MHz.",
UintegerValue (20),
@@ -1278,6 +1284,18 @@ YansWifiPhy::GetGreenfield (void) const
return m_greenfield;
}
bool
YansWifiPhy::GetShortPlcpPreamble (void) const
{
return m_plcpPreamble;
}
void
YansWifiPhy::SetShortPlcpPreamble (bool preamble)
{
m_plcpPreamble = preamble;
}
void
YansWifiPhy::SetChannelWidth (uint32_t channelwidth)
{

View File

@@ -386,6 +386,18 @@ public:
* \return true if Greenfield is supported, false otherwise
*/
virtual bool GetGreenfield (void) const;
/**
* Enable or disable short PLCP preamble.
*
* \param sets short PLCP preamble is supported or not
*/
virtual void SetShortPlcpPreamble (bool preamble);
/**
* Return whether short PLCP preamble is supported.
*
* \returns if short PLCP preamble is supported or not
*/
virtual bool GetShortPlcpPreamble (void) const;
/**
* Return channel width.
*
@@ -528,7 +540,7 @@ private:
bool m_greenfield; //!< Flag if GreenField format is supported
bool m_guardInterval; //!< Flag if short guard interval is used
uint32_t m_channelWidth; //!< Channel width
bool m_plcpPreamble; //!< Flag if short PLCP preamble is used
/**
* This vector holds the set of transmission modes that this

View File

@@ -223,10 +223,10 @@ TxDurationTest::DoRun (void)
&& CheckTxDuration (1024, WifiPhy::GetDsssRate2Mbps (), 22, false, WIFI_PREAMBLE_LONG, 4096 + 192)
&& CheckTxDuration (1025, WifiPhy::GetDsssRate2Mbps (), 22, false, WIFI_PREAMBLE_LONG, 4100 + 192)
&& CheckTxDuration (1026, WifiPhy::GetDsssRate2Mbps (), 22, false, WIFI_PREAMBLE_LONG, 4104 + 192)
&& CheckTxDuration (1023, WifiPhy::GetDsssRate1Mbps (), 22, false, WIFI_PREAMBLE_SHORT, 8184 + 96)
&& CheckTxDuration (1024, WifiPhy::GetDsssRate1Mbps (), 22, false, WIFI_PREAMBLE_SHORT, 8192 + 96)
&& CheckTxDuration (1025, WifiPhy::GetDsssRate1Mbps (), 22, false, WIFI_PREAMBLE_SHORT, 8200 + 96)
&& CheckTxDuration (1026, WifiPhy::GetDsssRate1Mbps (), 22, false, WIFI_PREAMBLE_SHORT, 8208 + 96)
&& CheckTxDuration (1023, WifiPhy::GetDsssRate1Mbps (), 22, false, WIFI_PREAMBLE_SHORT, 8184 + 192)
&& CheckTxDuration (1024, WifiPhy::GetDsssRate1Mbps (), 22, false, WIFI_PREAMBLE_SHORT, 8192 + 192)
&& CheckTxDuration (1025, WifiPhy::GetDsssRate1Mbps (), 22, false, WIFI_PREAMBLE_SHORT, 8200 + 192)
&& CheckTxDuration (1026, WifiPhy::GetDsssRate1Mbps (), 22, false, WIFI_PREAMBLE_SHORT, 8208 + 192)
&& CheckTxDuration (1023, WifiPhy::GetDsssRate1Mbps (), 22, false, WIFI_PREAMBLE_LONG, 8184 + 192)
&& CheckTxDuration (1024, WifiPhy::GetDsssRate1Mbps (), 22, false, WIFI_PREAMBLE_LONG, 8192 + 192)
&& CheckTxDuration (1025, WifiPhy::GetDsssRate1Mbps (), 22, false, WIFI_PREAMBLE_LONG, 8200 + 192)