diff options
Diffstat (limited to 'net/wireless/mlme.c')
-rw-r--r-- | net/wireless/mlme.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/net/wireless/mlme.c b/net/wireless/mlme.c index 48ead6f0426d..e74a1a2119d3 100644 --- a/net/wireless/mlme.c +++ b/net/wireless/mlme.c | |||
@@ -44,10 +44,10 @@ void cfg80211_send_rx_auth(struct net_device *dev, const u8 *buf, size_t len) | |||
44 | } | 44 | } |
45 | } | 45 | } |
46 | 46 | ||
47 | WARN_ON(!done); | 47 | if (done) { |
48 | 48 | nl80211_send_rx_auth(rdev, dev, buf, len, GFP_KERNEL); | |
49 | nl80211_send_rx_auth(rdev, dev, buf, len, GFP_KERNEL); | 49 | cfg80211_sme_rx_auth(dev, buf, len); |
50 | cfg80211_sme_rx_auth(dev, buf, len); | 50 | } |
51 | 51 | ||
52 | wdev_unlock(wdev); | 52 | wdev_unlock(wdev); |
53 | } | 53 | } |
@@ -827,6 +827,7 @@ int cfg80211_mlme_action(struct cfg80211_registered_device *rdev, | |||
827 | struct net_device *dev, | 827 | struct net_device *dev, |
828 | struct ieee80211_channel *chan, | 828 | struct ieee80211_channel *chan, |
829 | enum nl80211_channel_type channel_type, | 829 | enum nl80211_channel_type channel_type, |
830 | bool channel_type_valid, | ||
830 | const u8 *buf, size_t len, u64 *cookie) | 831 | const u8 *buf, size_t len, u64 *cookie) |
831 | { | 832 | { |
832 | struct wireless_dev *wdev = dev->ieee80211_ptr; | 833 | struct wireless_dev *wdev = dev->ieee80211_ptr; |
@@ -845,8 +846,9 @@ int cfg80211_mlme_action(struct cfg80211_registered_device *rdev, | |||
845 | if (!wdev->current_bss || | 846 | if (!wdev->current_bss || |
846 | memcmp(wdev->current_bss->pub.bssid, mgmt->bssid, | 847 | memcmp(wdev->current_bss->pub.bssid, mgmt->bssid, |
847 | ETH_ALEN) != 0 || | 848 | ETH_ALEN) != 0 || |
848 | memcmp(wdev->current_bss->pub.bssid, mgmt->da, | 849 | (wdev->iftype == NL80211_IFTYPE_STATION && |
849 | ETH_ALEN) != 0) | 850 | memcmp(wdev->current_bss->pub.bssid, mgmt->da, |
851 | ETH_ALEN) != 0)) | ||
850 | return -ENOTCONN; | 852 | return -ENOTCONN; |
851 | } | 853 | } |
852 | 854 | ||
@@ -855,7 +857,7 @@ int cfg80211_mlme_action(struct cfg80211_registered_device *rdev, | |||
855 | 857 | ||
856 | /* Transmit the Action frame as requested by user space */ | 858 | /* Transmit the Action frame as requested by user space */ |
857 | return rdev->ops->action(&rdev->wiphy, dev, chan, channel_type, | 859 | return rdev->ops->action(&rdev->wiphy, dev, chan, channel_type, |
858 | buf, len, cookie); | 860 | channel_type_valid, buf, len, cookie); |
859 | } | 861 | } |
860 | 862 | ||
861 | bool cfg80211_rx_action(struct net_device *dev, int freq, const u8 *buf, | 863 | bool cfg80211_rx_action(struct net_device *dev, int freq, const u8 *buf, |