diff --git a/src/wifi/model/eht/eht-capabilities.cc b/src/wifi/model/eht/eht-capabilities.cc index 973cc25a1..30edaeca9 100644 --- a/src/wifi/model/eht/eht-capabilities.cc +++ b/src/wifi/model/eht/eht-capabilities.cc @@ -598,6 +598,22 @@ EhtCapabilities::SetSupportedTxEhtMcsAndNss(EhtMcsAndNssSet::EhtMcsMapType mapTy } } +void +EhtCapabilities::SetPpeThresholds(uint8_t nssPe, + uint8_t ruIndexBitmask, + const std::vector>& ppeThresholds) +{ + NS_ASSERT(ppeThresholds.size() == (std::bitset<5>(ruIndexBitmask).count() * (nssPe + 1))); + m_phyCapabilities.ppeThresholdsPresent = 1; + m_ppeThresholds.nssPe = nssPe; + m_ppeThresholds.ruIndexBitmask = ruIndexBitmask; + m_ppeThresholds.ppeThresholdsInfo.clear(); + for (const auto& [ppetMax, ppet8] : ppeThresholds) + { + m_ppeThresholds.ppeThresholdsInfo.push_back({ppetMax, ppet8}); + } +} + void EhtCapabilities::SerializeInformationField(Buffer::Iterator start) const { diff --git a/src/wifi/model/eht/eht-capabilities.h b/src/wifi/model/eht/eht-capabilities.h index f7de2175a..461c8e662 100644 --- a/src/wifi/model/eht/eht-capabilities.h +++ b/src/wifi/model/eht/eht-capabilities.h @@ -310,6 +310,17 @@ class EhtCapabilities : public WifiInformationElement uint8_t upperMcs, uint8_t maxNss); + /** + * Set the EHT PPE threshold info subfield + * + * \param nssPe the NSS_PE subfield + * \param ruIndexBitmask the RU Index Bitmask subfield + * \param ppeThresholds the PPE thresholds made of pairs (PPETmax, PPET8) + */ + void SetPpeThresholds(uint8_t nssPe, + uint8_t ruIndexBitmask, + const std::vector>& ppeThresholds); + EhtMacCapabilities m_macCapabilities; //!< EHT MAC Capabilities Info subfield EhtPhyCapabilities m_phyCapabilities; //!< EHT PHY Capabilities Info subfield EhtMcsAndNssSet m_supportedEhtMcsAndNssSet; //!< Supported EHT-MCS And NSS Set subfield