diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c index 4aa5e893cbaa23671bbedd616f62755cfd510f86..72a0178af737613555636c71e9f9c166573693d7 100644 --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c @@ -3343,8 +3343,14 @@ static int ieee80211_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev, break; case NL80211_IFTYPE_STATION: case NL80211_IFTYPE_P2P_CLIENT: - if (!sdata->u.mgd.associated) + sdata_lock(sdata); + if (!sdata->u.mgd.associated || + (params->offchan && params->wait && + local->ops->remain_on_channel && + memcmp(sdata->u.mgd.associated->bssid, + mgmt->bssid, ETH_ALEN))) need_offchan = true; + sdata_unlock(sdata); break; case NL80211_IFTYPE_P2P_DEVICE: need_offchan = true;