wifi: mt76: abort ROC on chanctx changes

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.

Signed-off-by: Felix Fietkau <[email protected]>
This commit is contained in:
Felix Fietkau
2026-03-07 13:51:42 +00:00
parent 35e79a5bb1
commit 42955db08a
+3
View File
@@ -88,6 +88,9 @@ void mt76_change_chanctx(struct ieee80211_hw *hw,
IEEE80211_CHANCTX_CHANGE_RADAR))) IEEE80211_CHANCTX_CHANGE_RADAR)))
return; return;
if (phy->roc_vif)
mt76_abort_roc(phy);
cancel_delayed_work_sync(&phy->mac_work); cancel_delayed_work_sync(&phy->mac_work);
mutex_lock(&dev->mutex); mutex_lock(&dev->mutex);