|
@@ -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;
|