From 6f4be088055801bf633fc6ce3187b1df23b4c367 Mon Sep 17 00:00:00 2001 From: Stefano Avallone Date: Mon, 20 Jan 2025 16:57:10 +0100 Subject: [PATCH] wifi: Generate in-device interference for all PHY interfaces of a PHY --- .../model/eht/eht-frame-exchange-manager.cc | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/src/wifi/model/eht/eht-frame-exchange-manager.cc b/src/wifi/model/eht/eht-frame-exchange-manager.cc index 72fc96b6e..bc3f4d5e3 100644 --- a/src/wifi/model/eht/eht-frame-exchange-manager.cc +++ b/src/wifi/model/eht/eht-frame-exchange-manager.cc @@ -532,16 +532,27 @@ EhtFrameExchangeManager::GenerateInDeviceInterference(Ptr phy, auto txPhy = DynamicCast(m_phy); NS_ASSERT(txPhy); - auto psd = Create(rxPhy->GetCurrentInterface()->GetRxSpectrumModel()); - *psd = txPower; + for (const auto& [range, interface] : rxPhy->GetSpectrumPhyInterfaces()) + { + if (!interface->GetRxSpectrumModel()) + { + // we may have created a PHY interface but never set a frequency channel comprised + // in the frequency range associated with that PHY interface, thus the RX spectrum + // model may have not been created + continue; + } - auto spectrumSignalParams = Create(); - spectrumSignalParams->duration = duration; - spectrumSignalParams->txPhy = txPhy->GetCurrentInterface(); - spectrumSignalParams->txAntenna = txPhy->GetAntenna(); - spectrumSignalParams->psd = psd; + auto psd = Create(interface->GetRxSpectrumModel()); + *psd = txPower; - rxPhy->StartRx(spectrumSignalParams, rxPhy->GetCurrentInterface()); + auto spectrumSignalParams = Create(); + spectrumSignalParams->duration = duration; + spectrumSignalParams->txPhy = txPhy->GetCurrentInterface(); + spectrumSignalParams->txAntenna = txPhy->GetAntenna(); + spectrumSignalParams->psd = psd; + + rxPhy->StartRx(spectrumSignalParams, interface); + } } void