wifi: introduce Extended Capabilities information element to HT and VHT management frames
This commit is contained in:
@@ -39,7 +39,7 @@ cpp_examples = [
|
||||
("ht-wifi-network --simulationTime=0.1 --minExpectedThroughput=5 --maxExpectedThroughput=134", "True", "True"),
|
||||
("vht-wifi-network --simulationTime=0.1 --minExpectedThroughput=5 --maxExpectedThroughput=555", "True", "True"),
|
||||
("he-wifi-network --simulationTime=0.25 --minExpectedThroughput=6.35 --maxExpectedThroughput=754", "True", "True"),
|
||||
("simple-ht-hidden-stations --simulationTime=1 --minExpectedThroughput=16.7 --maxExpectedThroughput=16.8", "True", "True"),
|
||||
("simple-ht-hidden-stations --simulationTime=1 --minExpectedThroughput=16.5 --maxExpectedThroughput=17", "True", "True"),
|
||||
("mixed-network --simulationTime=1", "True", "True"),
|
||||
("wifi-aggregation --simulationTime=1 --verifyResults=1", "True", "True"),
|
||||
("80211e-txop --simulationTime=1 --verifyResults=1", "True", "True"),
|
||||
|
||||
@@ -695,6 +695,7 @@ ApWifiMac::SendProbeResp (Mac48Address to)
|
||||
}
|
||||
if (m_htSupported || m_vhtSupported || m_heSupported)
|
||||
{
|
||||
probe.SetExtendedCapabilities (GetExtendedCapabilities ());
|
||||
probe.SetHtCapabilities (GetHtCapabilities ());
|
||||
probe.SetHtOperation (GetHtOperation ());
|
||||
}
|
||||
@@ -754,6 +755,7 @@ ApWifiMac::SendAssocResp (Mac48Address to, bool success)
|
||||
}
|
||||
if (m_htSupported || m_vhtSupported || m_heSupported)
|
||||
{
|
||||
assoc.SetExtendedCapabilities (GetExtendedCapabilities ());
|
||||
assoc.SetHtCapabilities (GetHtCapabilities ());
|
||||
assoc.SetHtOperation (GetHtOperation ());
|
||||
}
|
||||
@@ -810,6 +812,7 @@ ApWifiMac::SendOneBeacon (void)
|
||||
}
|
||||
if (m_htSupported || m_vhtSupported)
|
||||
{
|
||||
beacon.SetExtendedCapabilities (GetExtendedCapabilities ());
|
||||
beacon.SetHtCapabilities (GetHtCapabilities ());
|
||||
beacon.SetHtOperation (GetHtOperation ());
|
||||
}
|
||||
|
||||
@@ -53,6 +53,18 @@ MgtProbeRequestHeader::SetSupportedRates (SupportedRates rates)
|
||||
m_rates = rates;
|
||||
}
|
||||
|
||||
void
|
||||
MgtProbeRequestHeader::SetExtendedCapabilities (ExtendedCapabilities extendedcapabilities)
|
||||
{
|
||||
m_extendedCapability = extendedcapabilities;
|
||||
}
|
||||
|
||||
ExtendedCapabilities
|
||||
MgtProbeRequestHeader::GetExtendedCapabilities (void) const
|
||||
{
|
||||
return m_extendedCapability;
|
||||
}
|
||||
|
||||
void
|
||||
MgtProbeRequestHeader::SetHtCapabilities (HtCapabilities htcapabilities)
|
||||
{
|
||||
@@ -102,6 +114,7 @@ MgtProbeRequestHeader::GetSerializedSize (void) const
|
||||
size += m_ssid.GetSerializedSize ();
|
||||
size += m_rates.GetSerializedSize ();
|
||||
size += m_rates.extended.GetSerializedSize ();
|
||||
size += m_extendedCapability.GetSerializedSize ();
|
||||
size += m_htCapability.GetSerializedSize ();
|
||||
size += m_vhtCapability.GetSerializedSize ();
|
||||
size += m_heCapability.GetSerializedSize ();
|
||||
@@ -142,6 +155,7 @@ MgtProbeRequestHeader::Serialize (Buffer::Iterator start) const
|
||||
i = m_ssid.Serialize (i);
|
||||
i = m_rates.Serialize (i);
|
||||
i = m_rates.extended.Serialize (i);
|
||||
i = m_extendedCapability.Serialize (i);
|
||||
i = m_htCapability.Serialize (i);
|
||||
i = m_vhtCapability.Serialize (i);
|
||||
i = m_heCapability.Serialize (i);
|
||||
@@ -154,6 +168,7 @@ MgtProbeRequestHeader::Deserialize (Buffer::Iterator start)
|
||||
i = m_ssid.Deserialize (i);
|
||||
i = m_rates.Deserialize (i);
|
||||
i = m_rates.extended.DeserializeIfPresent (i);
|
||||
i = m_extendedCapability.DeserializeIfPresent (i);
|
||||
i = m_htCapability.DeserializeIfPresent (i);
|
||||
i = m_vhtCapability.DeserializeIfPresent (i);
|
||||
i = m_heCapability.DeserializeIfPresent (i);
|
||||
@@ -211,6 +226,18 @@ MgtProbeResponseHeader::GetCapabilities (void) const
|
||||
return m_capability;
|
||||
}
|
||||
|
||||
void
|
||||
MgtProbeResponseHeader::SetExtendedCapabilities (ExtendedCapabilities extendedcapabilities)
|
||||
{
|
||||
m_extendedCapability = extendedcapabilities;
|
||||
}
|
||||
|
||||
ExtendedCapabilities
|
||||
MgtProbeResponseHeader::GetExtendedCapabilities (void) const
|
||||
{
|
||||
return m_extendedCapability;
|
||||
}
|
||||
|
||||
void
|
||||
MgtProbeResponseHeader::SetHtCapabilities (HtCapabilities htcapabilities)
|
||||
{
|
||||
@@ -367,6 +394,7 @@ MgtProbeResponseHeader::GetSerializedSize (void) const
|
||||
size += m_erpInformation.GetSerializedSize ();
|
||||
size += m_rates.extended.GetSerializedSize ();
|
||||
size += m_edcaParameterSet.GetSerializedSize ();
|
||||
size += m_extendedCapability.GetSerializedSize ();
|
||||
size += m_htCapability.GetSerializedSize ();
|
||||
size += m_htOperation.GetSerializedSize ();
|
||||
size += m_vhtCapability.GetSerializedSize ();
|
||||
@@ -412,6 +440,7 @@ MgtProbeResponseHeader::Serialize (Buffer::Iterator start) const
|
||||
i = m_erpInformation.Serialize (i);
|
||||
i = m_rates.extended.Serialize (i);
|
||||
i = m_edcaParameterSet.Serialize (i);
|
||||
i = m_extendedCapability.Serialize (i);
|
||||
i = m_htCapability.Serialize (i);
|
||||
i = m_htOperation.Serialize (i);
|
||||
i = m_vhtCapability.Serialize (i);
|
||||
@@ -434,6 +463,7 @@ MgtProbeResponseHeader::Deserialize (Buffer::Iterator start)
|
||||
i = m_erpInformation.DeserializeIfPresent (i);
|
||||
i = m_rates.extended.DeserializeIfPresent (i);
|
||||
i = m_edcaParameterSet.DeserializeIfPresent (i);
|
||||
i = m_extendedCapability.DeserializeIfPresent (i);
|
||||
i = m_htCapability.DeserializeIfPresent (i);
|
||||
i = m_htOperation.DeserializeIfPresent (i);
|
||||
i = m_vhtCapability.DeserializeIfPresent (i);
|
||||
@@ -508,6 +538,18 @@ MgtAssocRequestHeader::GetCapabilities (void) const
|
||||
return m_capability;
|
||||
}
|
||||
|
||||
void
|
||||
MgtAssocRequestHeader::SetExtendedCapabilities (ExtendedCapabilities extendedcapabilities)
|
||||
{
|
||||
m_extendedCapability = extendedcapabilities;
|
||||
}
|
||||
|
||||
ExtendedCapabilities
|
||||
MgtAssocRequestHeader::GetExtendedCapabilities (void) const
|
||||
{
|
||||
return m_extendedCapability;
|
||||
}
|
||||
|
||||
void
|
||||
MgtAssocRequestHeader::SetHtCapabilities (HtCapabilities htcapabilities)
|
||||
{
|
||||
@@ -588,6 +630,7 @@ MgtAssocRequestHeader::GetSerializedSize (void) const
|
||||
size += m_ssid.GetSerializedSize ();
|
||||
size += m_rates.GetSerializedSize ();
|
||||
size += m_rates.extended.GetSerializedSize ();
|
||||
size += m_extendedCapability.GetSerializedSize ();
|
||||
size += m_htCapability.GetSerializedSize ();
|
||||
size += m_vhtCapability.GetSerializedSize ();
|
||||
size += m_heCapability.GetSerializedSize ();
|
||||
@@ -613,6 +656,7 @@ MgtAssocRequestHeader::Serialize (Buffer::Iterator start) const
|
||||
i = m_ssid.Serialize (i);
|
||||
i = m_rates.Serialize (i);
|
||||
i = m_rates.extended.Serialize (i);
|
||||
i = m_extendedCapability.Serialize (i);
|
||||
i = m_htCapability.Serialize (i);
|
||||
i = m_vhtCapability.Serialize (i);
|
||||
i = m_heCapability.Serialize (i);
|
||||
@@ -627,6 +671,7 @@ MgtAssocRequestHeader::Deserialize (Buffer::Iterator start)
|
||||
i = m_ssid.Deserialize (i);
|
||||
i = m_rates.Deserialize (i);
|
||||
i = m_rates.extended.DeserializeIfPresent (i);
|
||||
i = m_extendedCapability.DeserializeIfPresent (i);
|
||||
i = m_htCapability.DeserializeIfPresent (i);
|
||||
i = m_vhtCapability.DeserializeIfPresent (i);
|
||||
i = m_heCapability.DeserializeIfPresent (i);
|
||||
@@ -685,6 +730,18 @@ MgtAssocResponseHeader::GetCapabilities (void) const
|
||||
return m_capability;
|
||||
}
|
||||
|
||||
void
|
||||
MgtAssocResponseHeader::SetExtendedCapabilities (ExtendedCapabilities extendedcapabilities)
|
||||
{
|
||||
m_extendedCapability = extendedcapabilities;
|
||||
}
|
||||
|
||||
ExtendedCapabilities
|
||||
MgtAssocResponseHeader::GetExtendedCapabilities (void) const
|
||||
{
|
||||
return m_extendedCapability;
|
||||
}
|
||||
|
||||
void
|
||||
MgtAssocResponseHeader::SetHtCapabilities (HtCapabilities htcapabilities)
|
||||
{
|
||||
@@ -809,6 +866,7 @@ MgtAssocResponseHeader::GetSerializedSize (void) const
|
||||
size += m_erpInformation.GetSerializedSize ();
|
||||
size += m_rates.extended.GetSerializedSize ();
|
||||
size += m_edcaParameterSet.GetSerializedSize ();
|
||||
size += m_extendedCapability.GetSerializedSize ();
|
||||
size += m_htCapability.GetSerializedSize ();
|
||||
size += m_htOperation.GetSerializedSize ();
|
||||
size += m_vhtCapability.GetSerializedSize ();
|
||||
@@ -843,6 +901,7 @@ MgtAssocResponseHeader::Serialize (Buffer::Iterator start) const
|
||||
i = m_erpInformation.Serialize (i);
|
||||
i = m_rates.extended.Serialize (i);
|
||||
i = m_edcaParameterSet.Serialize (i);
|
||||
i = m_extendedCapability.Serialize (i);
|
||||
i = m_htCapability.Serialize (i);
|
||||
i = m_htOperation.Serialize (i);
|
||||
i = m_vhtCapability.Serialize (i);
|
||||
@@ -862,6 +921,7 @@ MgtAssocResponseHeader::Deserialize (Buffer::Iterator start)
|
||||
i = m_erpInformation.DeserializeIfPresent (i);
|
||||
i = m_rates.extended.DeserializeIfPresent (i);
|
||||
i = m_edcaParameterSet.DeserializeIfPresent (i);
|
||||
i = m_extendedCapability.DeserializeIfPresent (i);
|
||||
i = m_htCapability.DeserializeIfPresent (i);
|
||||
i = m_htOperation.DeserializeIfPresent (i);
|
||||
i = m_vhtCapability.DeserializeIfPresent (i);
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
#include "supported-rates.h"
|
||||
#include "ssid.h"
|
||||
#include "dsss-parameter-set.h"
|
||||
#include "extended-capabilities.h"
|
||||
#include "ht-capabilities.h"
|
||||
#include "ht-operation.h"
|
||||
#include "vht-capabilities.h"
|
||||
@@ -73,6 +74,12 @@ public:
|
||||
* \param capabilities Capability information
|
||||
*/
|
||||
void SetCapabilities (CapabilityInformation capabilities);
|
||||
/**
|
||||
* Set the Extended Capabilities.
|
||||
*
|
||||
* \param extendedcapabilities the Extended Capabilities
|
||||
*/
|
||||
void SetExtendedCapabilities (ExtendedCapabilities extendedcapabilities);
|
||||
/**
|
||||
* Set the HT capabilities.
|
||||
*
|
||||
@@ -97,6 +104,12 @@ public:
|
||||
* \return Capability information
|
||||
*/
|
||||
CapabilityInformation GetCapabilities (void) const;
|
||||
/**
|
||||
* Return the extended capabilities.
|
||||
*
|
||||
* \return the extended capabilities
|
||||
*/
|
||||
ExtendedCapabilities GetExtendedCapabilities (void) const;
|
||||
/**
|
||||
* Return the HT capabilities.
|
||||
*
|
||||
@@ -150,6 +163,7 @@ private:
|
||||
Ssid m_ssid; //!< Service Set ID (SSID)
|
||||
SupportedRates m_rates; //!< List of supported rates
|
||||
CapabilityInformation m_capability; //!< Capability information
|
||||
ExtendedCapabilities m_extendedCapability; //!< Extended capabilities
|
||||
HtCapabilities m_htCapability; //!< HT capabilities
|
||||
VhtCapabilities m_vhtCapability; //!< VHT capabilities
|
||||
HeCapabilities m_heCapability; //!< HE capabilities
|
||||
@@ -185,6 +199,12 @@ public:
|
||||
* \return Capability information
|
||||
*/
|
||||
CapabilityInformation GetCapabilities (void) const;
|
||||
/**
|
||||
* Return the extended capabilities.
|
||||
*
|
||||
* \return the extended capabilities
|
||||
*/
|
||||
ExtendedCapabilities GetExtendedCapabilities (void) const;
|
||||
/**
|
||||
* Return the HT capabilities.
|
||||
*
|
||||
@@ -239,6 +259,12 @@ public:
|
||||
* \param capabilities Capability information
|
||||
*/
|
||||
void SetCapabilities (CapabilityInformation capabilities);
|
||||
/**
|
||||
* Set the extended capabilities.
|
||||
*
|
||||
* \param extendedcapabilities the extended capabilities
|
||||
*/
|
||||
void SetExtendedCapabilities (ExtendedCapabilities extendedcapabilities);
|
||||
/**
|
||||
* Set the VHT operation.
|
||||
*
|
||||
@@ -317,6 +343,7 @@ private:
|
||||
CapabilityInformation m_capability; //!< Capability information
|
||||
StatusCode m_code; //!< Status code
|
||||
uint16_t m_aid; //!< aid
|
||||
ExtendedCapabilities m_extendedCapability; //!< extended capabilities
|
||||
HtCapabilities m_htCapability; //!< HT capabilities
|
||||
HtOperation m_htOperation; //!< HT operation
|
||||
VhtCapabilities m_vhtCapability; //!< VHT capabilities
|
||||
@@ -349,6 +376,12 @@ public:
|
||||
* \param rates the supported rates
|
||||
*/
|
||||
void SetSupportedRates (SupportedRates rates);
|
||||
/**
|
||||
* Set the extended capabilities.
|
||||
*
|
||||
* \param extendedcapabilities the extended capabilities
|
||||
*/
|
||||
void SetExtendedCapabilities (ExtendedCapabilities extendedcapabilities);
|
||||
/**
|
||||
* Set the HT capabilities.
|
||||
*
|
||||
@@ -379,6 +412,12 @@ public:
|
||||
* \return the supported rates
|
||||
*/
|
||||
SupportedRates GetSupportedRates (void) const;
|
||||
/**
|
||||
* Return the extended capabilities.
|
||||
*
|
||||
* \return the extended capabilities
|
||||
*/
|
||||
ExtendedCapabilities GetExtendedCapabilities (void) const;
|
||||
/**
|
||||
* Return the HT capabilities.
|
||||
*
|
||||
@@ -413,6 +452,7 @@ public:
|
||||
private:
|
||||
Ssid m_ssid; //!< Service Set ID (SSID)
|
||||
SupportedRates m_rates; //!< List of supported rates
|
||||
ExtendedCapabilities m_extendedCapability; //!< extended capabilities
|
||||
HtCapabilities m_htCapability; //!< HT capabilities
|
||||
VhtCapabilities m_vhtCapability; //!< VHT capabilities
|
||||
HeCapabilities m_heCapability; //!< HE capabilities
|
||||
@@ -459,6 +499,12 @@ public:
|
||||
* \return the DSSS Parameter Set
|
||||
*/
|
||||
DsssParameterSet GetDsssParameterSet (void) const;
|
||||
/**
|
||||
* Return the extended capabilities.
|
||||
*
|
||||
* \return the extended capabilities
|
||||
*/
|
||||
ExtendedCapabilities GetExtendedCapabilities (void) const;
|
||||
/**
|
||||
* Return the HT capabilities.
|
||||
*
|
||||
@@ -514,6 +560,12 @@ public:
|
||||
*/
|
||||
void SetCapabilities (CapabilityInformation capabilities);
|
||||
/**
|
||||
* Set the extended capabilities.
|
||||
*
|
||||
* \param extendedcapabilities the extended capabilities
|
||||
*/
|
||||
void SetExtendedCapabilities (ExtendedCapabilities extendedcapabilities);
|
||||
/*
|
||||
* Set the HT capabilities.
|
||||
*
|
||||
* \param htcapabilities HT capabilities
|
||||
@@ -611,6 +663,7 @@ private:
|
||||
SupportedRates m_rates; //!< List of supported rates
|
||||
CapabilityInformation m_capability; //!< Capability information
|
||||
DsssParameterSet m_dsssParameterSet; //!< DSSS Parameter Set
|
||||
ExtendedCapabilities m_extendedCapability; //!< extended capabilities
|
||||
HtCapabilities m_htCapability; //!< HT capabilities
|
||||
HtOperation m_htOperation; //!< HT operation
|
||||
VhtCapabilities m_vhtCapability; //!< VHT capabilities
|
||||
|
||||
@@ -139,6 +139,25 @@ RegularWifiMac::GetWifiRemoteStationManager () const
|
||||
return m_stationManager;
|
||||
}
|
||||
|
||||
ExtendedCapabilities
|
||||
RegularWifiMac::GetExtendedCapabilities (void) const
|
||||
{
|
||||
NS_LOG_FUNCTION (this);
|
||||
ExtendedCapabilities capabilities;
|
||||
if (m_htSupported || m_vhtSupported)
|
||||
{
|
||||
if (m_htSupported)
|
||||
{
|
||||
capabilities.SetHtSupported (1);
|
||||
}
|
||||
if (m_vhtSupported)
|
||||
{
|
||||
capabilities.SetVhtSupported (1);
|
||||
}
|
||||
}
|
||||
return capabilities;
|
||||
}
|
||||
|
||||
HtCapabilities
|
||||
RegularWifiMac::GetHtCapabilities (void) const
|
||||
{
|
||||
@@ -146,7 +165,6 @@ RegularWifiMac::GetHtCapabilities (void) const
|
||||
HtCapabilities capabilities;
|
||||
if (m_htSupported)
|
||||
{
|
||||
capabilities.SetHtSupported (1);
|
||||
capabilities.SetHtSupported (1);
|
||||
capabilities.SetLdpc (m_phy->GetLdpc ());
|
||||
capabilities.SetSupportedChannelWidth (m_phy->GetChannelWidth () >= 40);
|
||||
|
||||
@@ -234,21 +234,27 @@ public:
|
||||
*/
|
||||
Ptr<WifiRemoteStationManager> GetWifiRemoteStationManager (void) const;
|
||||
/**
|
||||
* Return the HT capability of the device.
|
||||
* Return the extended capabilities of the device.
|
||||
*
|
||||
* \return the HT capability that we support
|
||||
* \return the extended capabilities that we support
|
||||
*/
|
||||
ExtendedCapabilities GetExtendedCapabilities (void) const;
|
||||
/**
|
||||
* Return the HT capabilities of the device.
|
||||
*
|
||||
* \return the HT capabilities that we support
|
||||
*/
|
||||
HtCapabilities GetHtCapabilities (void) const;
|
||||
/**
|
||||
* Return the VHT capability of the device.
|
||||
* Return the VHT capabilities of the device.
|
||||
*
|
||||
* \return the VHT capability that we support
|
||||
* \return the VHT capabilities that we support
|
||||
*/
|
||||
VhtCapabilities GetVhtCapabilities (void) const;
|
||||
/**
|
||||
* Return the HE capability of the device.
|
||||
* Return the HE capabilities of the device.
|
||||
*
|
||||
* \return the HE capability that we support
|
||||
* \return the HE capabilities that we support
|
||||
*/
|
||||
HeCapabilities GetHeCapabilities (void) const;
|
||||
|
||||
|
||||
@@ -143,6 +143,7 @@ StaWifiMac::SendProbeRequest (void)
|
||||
probe.SetSupportedRates (GetSupportedRates ());
|
||||
if (m_htSupported || m_vhtSupported || m_heSupported)
|
||||
{
|
||||
probe.SetExtendedCapabilities (GetExtendedCapabilities ());
|
||||
probe.SetHtCapabilities (GetHtCapabilities ());
|
||||
}
|
||||
if (m_vhtSupported || m_heSupported)
|
||||
@@ -188,6 +189,7 @@ StaWifiMac::SendAssociationRequest (void)
|
||||
assoc.SetCapabilities (GetCapabilities ());
|
||||
if (m_htSupported || m_vhtSupported || m_heSupported)
|
||||
{
|
||||
assoc.SetExtendedCapabilities (GetExtendedCapabilities ());
|
||||
assoc.SetHtCapabilities (GetHtCapabilities ());
|
||||
}
|
||||
if (m_vhtSupported || m_heSupported)
|
||||
|
||||
@@ -84,6 +84,7 @@ def build(bld):
|
||||
'model/frame-capture-model.cc',
|
||||
'model/simple-frame-capture-model.cc',
|
||||
'model/he-operation.cc',
|
||||
'model/extended-capabilities.cc',
|
||||
'helper/wifi-radio-energy-model-helper.cc',
|
||||
'helper/vht-wifi-mac-helper.cc',
|
||||
'helper/ht-wifi-mac-helper.cc',
|
||||
@@ -194,6 +195,7 @@ def build(bld):
|
||||
'model/simple-frame-capture-model.h',
|
||||
'model/qos-blocked-destinations.h',
|
||||
'model/he-operation.h',
|
||||
'model/extended-capabilities.h',
|
||||
'helper/wifi-radio-energy-model-helper.h',
|
||||
'helper/vht-wifi-mac-helper.h',
|
||||
'helper/ht-wifi-mac-helper.h',
|
||||
|
||||
Reference in New Issue
Block a user