From 359b6d873cbc21ea44d4e4faea953611449f8a14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Deronne?= Date: Mon, 22 Aug 2022 21:26:30 +0200 Subject: [PATCH] wifi: Add function set PPE thresholds in EHT capabilities --- src/wifi/model/eht/eht-capabilities.cc | 16 ++++++++++++++++ src/wifi/model/eht/eht-capabilities.h | 11 +++++++++++ 2 files changed, 27 insertions(+) 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