wifi: Avoid unnecessary copies of IEs in Probe Request frames

This commit is contained in:
Stefano Avallone
2022-06-26 15:53:14 +02:00
committed by Stefano Avallone
parent 8191b2a940
commit 9ee5a89599
3 changed files with 105 additions and 29 deletions

View File

@@ -1109,7 +1109,7 @@ ApWifiMac::Receive (Ptr<WifiMacQueueItem> mpdu)
}
MgtProbeRequestHeader probeRequestHeader;
packet->PeekHeader (probeRequestHeader);
Ssid ssid = probeRequestHeader.GetSsid ();
const Ssid& ssid = probeRequestHeader.GetSsid ();
if (ssid == GetSsid () || ssid.IsBroadcast ())
{
NS_LOG_DEBUG ("Probe request received from " << from << ": send probe response");

View File

@@ -37,84 +37,126 @@ MgtProbeRequestHeader::~MgtProbeRequestHeader ()
}
void
MgtProbeRequestHeader::SetSsid (Ssid ssid)
MgtProbeRequestHeader::SetSsid (const Ssid& ssid)
{
m_ssid = ssid;
}
Ssid
void
MgtProbeRequestHeader::SetSsid (Ssid&& ssid)
{
m_ssid = std::move (ssid);
}
const Ssid&
MgtProbeRequestHeader::GetSsid (void) const
{
return m_ssid;
}
void
MgtProbeRequestHeader::SetSupportedRates (SupportedRates rates)
MgtProbeRequestHeader::SetSupportedRates (const SupportedRates& rates)
{
m_rates = rates;
}
void
MgtProbeRequestHeader::SetExtendedCapabilities (ExtendedCapabilities extendedCapabilities)
MgtProbeRequestHeader::SetSupportedRates (SupportedRates&& rates)
{
m_rates = std::move (rates);
}
void
MgtProbeRequestHeader::SetExtendedCapabilities (const ExtendedCapabilities& extendedCapabilities)
{
m_extendedCapability = extendedCapabilities;
}
ExtendedCapabilities
void
MgtProbeRequestHeader::SetExtendedCapabilities (ExtendedCapabilities&& extendedCapabilities)
{
m_extendedCapability = std::move (extendedCapabilities);
}
const ExtendedCapabilities&
MgtProbeRequestHeader::GetExtendedCapabilities (void) const
{
return m_extendedCapability;
}
void
MgtProbeRequestHeader::SetHtCapabilities (HtCapabilities htCapabilities)
MgtProbeRequestHeader::SetHtCapabilities (const HtCapabilities& htCapabilities)
{
m_htCapability = htCapabilities;
}
HtCapabilities
void
MgtProbeRequestHeader::SetHtCapabilities (HtCapabilities&& htCapabilities)
{
m_htCapability = std::move (htCapabilities);
}
const HtCapabilities&
MgtProbeRequestHeader::GetHtCapabilities (void) const
{
return m_htCapability;
}
void
MgtProbeRequestHeader::SetVhtCapabilities (VhtCapabilities vhtCapabilities)
MgtProbeRequestHeader::SetVhtCapabilities (const VhtCapabilities& vhtCapabilities)
{
m_vhtCapability = vhtCapabilities;
}
VhtCapabilities
void
MgtProbeRequestHeader::SetVhtCapabilities (VhtCapabilities&& vhtCapabilities)
{
m_vhtCapability = std::move (vhtCapabilities);
}
const VhtCapabilities&
MgtProbeRequestHeader::GetVhtCapabilities (void) const
{
return m_vhtCapability;
}
void
MgtProbeRequestHeader::SetHeCapabilities (HeCapabilities heCapabilities)
MgtProbeRequestHeader::SetHeCapabilities (const HeCapabilities& heCapabilities)
{
m_heCapability = heCapabilities;
}
HeCapabilities
void
MgtProbeRequestHeader::SetHeCapabilities (HeCapabilities&& heCapabilities)
{
m_heCapability = std::move (heCapabilities);
}
const HeCapabilities&
MgtProbeRequestHeader::GetHeCapabilities (void) const
{
return m_heCapability;
}
void
MgtProbeRequestHeader::SetEhtCapabilities (EhtCapabilities ehtCapabilities)
MgtProbeRequestHeader::SetEhtCapabilities (const EhtCapabilities& ehtCapabilities)
{
m_ehtCapability = ehtCapabilities;
}
EhtCapabilities
void
MgtProbeRequestHeader::SetEhtCapabilities (EhtCapabilities&& ehtCapabilities)
{
m_ehtCapability = std::move (ehtCapabilities);
}
const EhtCapabilities&
MgtProbeRequestHeader::GetEhtCapabilities (void) const
{
return m_ehtCapability;
}
SupportedRates
const SupportedRates&
MgtProbeRequestHeader::GetSupportedRates (void) const
{
return m_rates;

View File

@@ -575,85 +575,119 @@ public:
*
* \param ssid SSID
*/
void SetSsid (Ssid ssid);
void SetSsid (const Ssid& ssid);
/** \copydoc SetSsid */
void SetSsid (Ssid&& ssid);
/**
* Set the supported rates.
*
* \param rates the supported rates
*/
void SetSupportedRates (SupportedRates rates);
void SetSupportedRates (const SupportedRates& rates);
/** \copydoc SetSupportedRates */
void SetSupportedRates (SupportedRates&& rates);
/**
* Set the extended capabilities.
*
* \param extendedCapabilities the extended capabilities
*/
void SetExtendedCapabilities (ExtendedCapabilities extendedCapabilities);
void SetExtendedCapabilities (const ExtendedCapabilities& extendedCapabilities);
/** \copydoc SetExtendedCapabilities */
void SetExtendedCapabilities (ExtendedCapabilities&& extendedCapabilities);
/**
* Set the HT capabilities.
*
* \param htCapabilities HT capabilities
*/
void SetHtCapabilities (HtCapabilities htCapabilities);
void SetHtCapabilities (const HtCapabilities& htCapabilities);
/** \copydoc SetHtCapabilities */
void SetHtCapabilities (HtCapabilities&& htCapabilities);
/**
* Set the VHT capabilities.
*
* \param vhtCapabilities VHT capabilities
*/
void SetVhtCapabilities (VhtCapabilities vhtCapabilities);
void SetVhtCapabilities (const VhtCapabilities& vhtCapabilities);
/** \copydoc SetVhtCapabilities */
void SetVhtCapabilities (VhtCapabilities&& vhtCapabilities);
/**
* Set the HE capabilities.
*
* \param heCapabilities HE capabilities
*/
void SetHeCapabilities (HeCapabilities heCapabilities);
void SetHeCapabilities (const HeCapabilities& heCapabilities);
/** \copydoc SetHeCapabilities */
void SetHeCapabilities (HeCapabilities&& heCapabilities);
/**
* Set the EHT capabilities.
*
* \param ehtCapabilities EHT capabilities
*/
void SetEhtCapabilities (EhtCapabilities ehtCapabilities);
void SetEhtCapabilities (const EhtCapabilities& ehtCapabilities);
/** \copydoc SetEhtCapabilities */
void SetEhtCapabilities (EhtCapabilities&& ehtCapabilities);
/**
* Return the Service Set Identifier (SSID).
*
* \return SSID
*/
Ssid GetSsid (void) const;
const Ssid& GetSsid (void) const;
/**
* Return the supported rates.
*
* \return the supported rates
*/
SupportedRates GetSupportedRates (void) const;
const SupportedRates& GetSupportedRates (void) const;
/**
* Return the extended capabilities.
*
* \return the extended capabilities
*/
ExtendedCapabilities GetExtendedCapabilities (void) const;
const ExtendedCapabilities& GetExtendedCapabilities (void) const;
/**
* Return the HT capabilities.
*
* \return HT capabilities
*/
HtCapabilities GetHtCapabilities (void) const;
const HtCapabilities& GetHtCapabilities (void) const;
/**
* Return the VHT capabilities.
*
* \return VHT capabilities
*/
VhtCapabilities GetVhtCapabilities (void) const;
const VhtCapabilities& GetVhtCapabilities (void) const;
/**
* Return the HE capabilities.
*
* \return HE capabilities
*/
HeCapabilities GetHeCapabilities (void) const;
const HeCapabilities& GetHeCapabilities (void) const;
/**
* Return the EHT capabilities.
*
* \return EHT capabilities
*/
EhtCapabilities GetEhtCapabilities (void) const;
const EhtCapabilities& GetEhtCapabilities (void) const;
/**
* Register this type.