From fcaffe8f51020fd3105d3e416352179fddca779b Mon Sep 17 00:00:00 2001 From: Stefano Avallone Date: Wed, 5 Apr 2023 22:39:22 +0200 Subject: [PATCH] wifi: (fixes #880) Init last busy structs at initialization time Otherwise, channel changes done after Install() and before Initialize() do not trigger an update of the last busy structs. --- RELEASE_NOTES.md | 1 + src/wifi/model/channel-access-manager.cc | 7 +++++++ src/wifi/model/channel-access-manager.h | 1 + src/wifi/model/wifi-mac.cc | 8 ++++++++ 4 files changed, 17 insertions(+) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index c4a42664f..2446e1dc2 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -28,6 +28,7 @@ Release 3-dev ### Bugs fixed - (lr-wpan) !1406 - Fixes issues during MAC scan +- (wifi) #880 - Post-install change in WifiPhy::ChannelSettings does not completely reconfigure Wi-Fi Release 3.38 ------------ diff --git a/src/wifi/model/channel-access-manager.cc b/src/wifi/model/channel-access-manager.cc index d83a8783a..f380a1dd5 100644 --- a/src/wifi/model/channel-access-manager.cc +++ b/src/wifi/model/channel-access-manager.cc @@ -139,6 +139,13 @@ ChannelAccessManager::~ChannelAccessManager() m_phyListener = nullptr; } +void +ChannelAccessManager::DoInitialize() +{ + NS_LOG_FUNCTION(this); + InitLastBusyStructs(); +} + void ChannelAccessManager::DoDispose() { diff --git a/src/wifi/model/channel-access-manager.h b/src/wifi/model/channel-access-manager.h index 42f924104..457c44e82 100644 --- a/src/wifi/model/channel-access-manager.h +++ b/src/wifi/model/channel-access-manager.h @@ -261,6 +261,7 @@ class ChannelAccessManager : public Object bool IsBusy() const; protected: + void DoInitialize() override; void DoDispose() override; private: diff --git a/src/wifi/model/wifi-mac.cc b/src/wifi/model/wifi-mac.cc index c5be46c4c..de270f8f8 100644 --- a/src/wifi/model/wifi-mac.cc +++ b/src/wifi/model/wifi-mac.cc @@ -363,6 +363,14 @@ WifiMac::DoInitialize() { it->second->Initialize(); } + + for (auto& link : m_links) + { + if (auto cam = link->channelAccessManager) + { + cam->Initialize(); + } + } } void