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