]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: mt76: abort ROC on chanctx changes
authorFelix Fietkau <nbd@nbd.name>
Mon, 9 Mar 2026 06:07:24 +0000 (06:07 +0000)
committerFelix Fietkau <nbd@nbd.name>
Tue, 24 Mar 2026 15:49:31 +0000 (15:49 +0000)
mt76_change_chanctx() calls mt76_phy_update_channel() which switches
the hardware channel. If ROC is active on the same phy, this switches
away from the ROC channel and clears offchannel, but leaves ROC state
intact. Mac80211 still thinks the phy is on the ROC channel.

Abort any active ROC before proceeding, matching the pattern already
used in add, remove, assign, unassign, and switch chanctx functions.

Link: https://patch.msgid.link/20260309060730.87840-5-nbd@nbd.name
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/channel.c

index cfff50892a6ed58c1f4f023d61d6dcc1fab94a8e..8d2e72c68c6b899fcd61caadc30a75e85e3df22a 100644 (file)
@@ -88,6 +88,9 @@ void mt76_change_chanctx(struct ieee80211_hw *hw,
                         IEEE80211_CHANCTX_CHANGE_RADAR)))
                return;
 
+       if (phy->roc_vif)
+               mt76_abort_roc(phy);
+
        cancel_delayed_work_sync(&phy->mac_work);
 
        mutex_lock(&dev->mutex);