mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-25 02:09:42 +00:00
cfg80211/mac80211: allow any interface to send channel switch notifications
For multi-vif channel switches, we want to send NL80211_CMD_CH_SWITCH_NOTIFY to the userspace to let it decide whether other interfaces need to be moved as well. This is needed when we want a P2P GO interface to follow the channel of a station, for example. Modify the code so that all interfaces can send CSA notifications. Additionally, send notifications for STA CSA as well. Signed-off-by: Luciano Coelho <luciano.coelho@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
2f4572930d
commit
d04b5ac9e7
3 changed files with 5 additions and 7 deletions
|
@ -643,7 +643,9 @@
|
|||
* @NL80211_CMD_CH_SWITCH_NOTIFY: An AP or GO may decide to switch channels
|
||||
* independently of the userspace SME, send this event indicating
|
||||
* %NL80211_ATTR_IFINDEX is now on %NL80211_ATTR_WIPHY_FREQ and the
|
||||
* attributes determining channel width.
|
||||
* attributes determining channel width. This indication may also be
|
||||
* sent when a remotely-initiated switch (e.g., when a STA receives a CSA
|
||||
* from the remote AP) is completed;
|
||||
*
|
||||
* @NL80211_CMD_CH_SWITCH_STARTED_NOTIFY: Notify that a channel switch
|
||||
* has been started on an interface, regardless of the initiator
|
||||
|
|
|
@ -1049,6 +1049,8 @@ static void ieee80211_chswitch_post_beacon(struct ieee80211_sub_if_data *sdata)
|
|||
sdata->csa_block_tx = false;
|
||||
}
|
||||
|
||||
cfg80211_ch_switch_notify(sdata->dev, &sdata->reserved_chandef);
|
||||
|
||||
sdata->vif.csa_active = false;
|
||||
ifmgd->csa_waiting_bcn = false;
|
||||
|
||||
|
|
|
@ -11702,12 +11702,6 @@ void cfg80211_ch_switch_notify(struct net_device *dev,
|
|||
|
||||
trace_cfg80211_ch_switch_notify(dev, chandef);
|
||||
|
||||
if (WARN_ON(wdev->iftype != NL80211_IFTYPE_AP &&
|
||||
wdev->iftype != NL80211_IFTYPE_P2P_GO &&
|
||||
wdev->iftype != NL80211_IFTYPE_ADHOC &&
|
||||
wdev->iftype != NL80211_IFTYPE_MESH_POINT))
|
||||
return;
|
||||
|
||||
wdev->chandef = *chandef;
|
||||
wdev->preset_chandef = *chandef;
|
||||
nl80211_ch_switch_notify(rdev, dev, chandef, GFP_KERNEL,
|
||||
|
|
Loading…
Reference in a new issue