On 3/7/2023 3:52 PM, Johannes Berg wrote:
---
So this is the patch I ended up with after some cleanups, but
then at the end I noticed you didn't unset the temp address
when the remain-on-channel expires, and wasn't sure exactly
how that should be handled, and you probably have the better
test setup right now too ...
johannes
---
Apologies for the delayed response. Thanks for the cleaning up the patch.
Regarding the comment on clearing temp address, I think the temp address
should get cleared with below changes added in
ieee80211_roc_notify_destroy() when remain-on-channel expires. Please
let me know if I am missing something.
diff --git a/net/mac80211/offchannel.c b/net/mac80211/offchannel.c
index d78c82d6b696..74d2b826916a 100644
--- a/net/mac80211/offchannel.c
+++ b/net/mac80211/offchannel.c
@@ -187,6 +187,12 @@ static void ieee80211_roc_notify_destroy(struct ieee80211_roc_work *roc)
roc->mgmt_tx_cookie,
roc->chan, GFP_KERNEL);
+ if (!is_zero_ether_addr(roc->sdata->vif.cfg.temp_addr)) {
+ eth_zero_addr(roc->sdata->vif.cfg.temp_addr);
+ ieee80211_vif_cfg_change_notify(roc->sdata,
+ BSS_CHANGED_TEMP_ADDR);
+ }
+
list_del(&roc->list);
kfree(roc);
}
--
veeru