diff options
Diffstat (limited to 'net/wireless/mlme.c')
-rw-r--r-- | net/wireless/mlme.c | 43 |
1 files changed, 39 insertions, 4 deletions
diff --git a/net/wireless/mlme.c b/net/wireless/mlme.c index 26838d903b9a..aa5df8865ff7 100644 --- a/net/wireless/mlme.c +++ b/net/wireless/mlme.c | |||
@@ -263,6 +263,28 @@ void cfg80211_send_disassoc(struct net_device *dev, const u8 *buf, size_t len) | |||
263 | } | 263 | } |
264 | EXPORT_SYMBOL(cfg80211_send_disassoc); | 264 | EXPORT_SYMBOL(cfg80211_send_disassoc); |
265 | 265 | ||
266 | void cfg80211_send_unprot_deauth(struct net_device *dev, const u8 *buf, | ||
267 | size_t len) | ||
268 | { | ||
269 | struct wireless_dev *wdev = dev->ieee80211_ptr; | ||
270 | struct wiphy *wiphy = wdev->wiphy; | ||
271 | struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy); | ||
272 | |||
273 | nl80211_send_unprot_deauth(rdev, dev, buf, len, GFP_ATOMIC); | ||
274 | } | ||
275 | EXPORT_SYMBOL(cfg80211_send_unprot_deauth); | ||
276 | |||
277 | void cfg80211_send_unprot_disassoc(struct net_device *dev, const u8 *buf, | ||
278 | size_t len) | ||
279 | { | ||
280 | struct wireless_dev *wdev = dev->ieee80211_ptr; | ||
281 | struct wiphy *wiphy = wdev->wiphy; | ||
282 | struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy); | ||
283 | |||
284 | nl80211_send_unprot_disassoc(rdev, dev, buf, len, GFP_ATOMIC); | ||
285 | } | ||
286 | EXPORT_SYMBOL(cfg80211_send_unprot_disassoc); | ||
287 | |||
266 | static void __cfg80211_auth_remove(struct wireless_dev *wdev, const u8 *addr) | 288 | static void __cfg80211_auth_remove(struct wireless_dev *wdev, const u8 *addr) |
267 | { | 289 | { |
268 | int i; | 290 | int i; |
@@ -864,9 +886,9 @@ void cfg80211_mlme_purge_registrations(struct wireless_dev *wdev) | |||
864 | 886 | ||
865 | int cfg80211_mlme_mgmt_tx(struct cfg80211_registered_device *rdev, | 887 | int cfg80211_mlme_mgmt_tx(struct cfg80211_registered_device *rdev, |
866 | struct net_device *dev, | 888 | struct net_device *dev, |
867 | struct ieee80211_channel *chan, | 889 | struct ieee80211_channel *chan, bool offchan, |
868 | enum nl80211_channel_type channel_type, | 890 | enum nl80211_channel_type channel_type, |
869 | bool channel_type_valid, | 891 | bool channel_type_valid, unsigned int wait, |
870 | const u8 *buf, size_t len, u64 *cookie) | 892 | const u8 *buf, size_t len, u64 *cookie) |
871 | { | 893 | { |
872 | struct wireless_dev *wdev = dev->ieee80211_ptr; | 894 | struct wireless_dev *wdev = dev->ieee80211_ptr; |
@@ -946,8 +968,9 @@ int cfg80211_mlme_mgmt_tx(struct cfg80211_registered_device *rdev, | |||
946 | return -EINVAL; | 968 | return -EINVAL; |
947 | 969 | ||
948 | /* Transmit the Action frame as requested by user space */ | 970 | /* Transmit the Action frame as requested by user space */ |
949 | return rdev->ops->mgmt_tx(&rdev->wiphy, dev, chan, channel_type, | 971 | return rdev->ops->mgmt_tx(&rdev->wiphy, dev, chan, offchan, |
950 | channel_type_valid, buf, len, cookie); | 972 | channel_type, channel_type_valid, |
973 | wait, buf, len, cookie); | ||
951 | } | 974 | } |
952 | 975 | ||
953 | bool cfg80211_rx_mgmt(struct net_device *dev, int freq, const u8 *buf, | 976 | bool cfg80211_rx_mgmt(struct net_device *dev, int freq, const u8 *buf, |
@@ -1028,3 +1051,15 @@ void cfg80211_cqm_rssi_notify(struct net_device *dev, | |||
1028 | nl80211_send_cqm_rssi_notify(rdev, dev, rssi_event, gfp); | 1051 | nl80211_send_cqm_rssi_notify(rdev, dev, rssi_event, gfp); |
1029 | } | 1052 | } |
1030 | EXPORT_SYMBOL(cfg80211_cqm_rssi_notify); | 1053 | EXPORT_SYMBOL(cfg80211_cqm_rssi_notify); |
1054 | |||
1055 | void cfg80211_cqm_pktloss_notify(struct net_device *dev, | ||
1056 | const u8 *peer, u32 num_packets, gfp_t gfp) | ||
1057 | { | ||
1058 | struct wireless_dev *wdev = dev->ieee80211_ptr; | ||
1059 | struct wiphy *wiphy = wdev->wiphy; | ||
1060 | struct cfg80211_registered_device *rdev = wiphy_to_dev(wiphy); | ||
1061 | |||
1062 | /* Indicate roaming trigger event to user space */ | ||
1063 | nl80211_send_cqm_pktloss_notify(rdev, dev, peer, num_packets, gfp); | ||
1064 | } | ||
1065 | EXPORT_SYMBOL(cfg80211_cqm_pktloss_notify); | ||