diff options
author | David S. Miller <davem@davemloft.net> | 2009-11-09 14:17:24 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-11-09 14:17:24 -0500 |
commit | f6d773cd4f3c18c40ab25a5cb92453756237840e (patch) | |
tree | 5631a6ea4495ae2eb5058fb63b25dea3b197d61b /net/wireless | |
parent | d0e1e88d6e7dbd8e1661cb6a058ca30f54ee39e4 (diff) | |
parent | bcb628d579a61d0ab0cac4c6cc8a403de5254920 (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6
Diffstat (limited to 'net/wireless')
-rw-r--r-- | net/wireless/core.c | 3 | ||||
-rw-r--r-- | net/wireless/core.h | 11 | ||||
-rw-r--r-- | net/wireless/debugfs.c | 15 | ||||
-rw-r--r-- | net/wireless/debugfs.h | 3 | ||||
-rw-r--r-- | net/wireless/mlme.c | 2 | ||||
-rw-r--r-- | net/wireless/nl80211.c | 34 | ||||
-rw-r--r-- | net/wireless/scan.c | 6 | ||||
-rw-r--r-- | net/wireless/wext-compat.c | 6 |
8 files changed, 37 insertions, 43 deletions
diff --git a/net/wireless/core.c b/net/wireless/core.c index 07252967be9c..02835172b227 100644 --- a/net/wireless/core.c +++ b/net/wireless/core.c | |||
@@ -546,7 +546,7 @@ void wiphy_unregister(struct wiphy *wiphy) | |||
546 | * First remove the hardware from everywhere, this makes | 546 | * First remove the hardware from everywhere, this makes |
547 | * it impossible to find from userspace. | 547 | * it impossible to find from userspace. |
548 | */ | 548 | */ |
549 | cfg80211_debugfs_rdev_del(rdev); | 549 | debugfs_remove_recursive(rdev->wiphy.debugfsdir); |
550 | list_del(&rdev->list); | 550 | list_del(&rdev->list); |
551 | 551 | ||
552 | /* | 552 | /* |
@@ -569,7 +569,6 @@ void wiphy_unregister(struct wiphy *wiphy) | |||
569 | 569 | ||
570 | cfg80211_rdev_list_generation++; | 570 | cfg80211_rdev_list_generation++; |
571 | device_del(&rdev->wiphy.dev); | 571 | device_del(&rdev->wiphy.dev); |
572 | debugfs_remove(rdev->wiphy.debugfsdir); | ||
573 | 572 | ||
574 | mutex_unlock(&cfg80211_mutex); | 573 | mutex_unlock(&cfg80211_mutex); |
575 | 574 | ||
diff --git a/net/wireless/core.h b/net/wireless/core.h index 68b321997d4c..5aeebb9085f8 100644 --- a/net/wireless/core.h +++ b/net/wireless/core.h | |||
@@ -72,17 +72,6 @@ struct cfg80211_registered_device { | |||
72 | /* current channel */ | 72 | /* current channel */ |
73 | struct ieee80211_channel *channel; | 73 | struct ieee80211_channel *channel; |
74 | 74 | ||
75 | #ifdef CONFIG_CFG80211_DEBUGFS | ||
76 | /* Debugfs entries */ | ||
77 | struct wiphy_debugfsdentries { | ||
78 | struct dentry *rts_threshold; | ||
79 | struct dentry *fragmentation_threshold; | ||
80 | struct dentry *short_retry_limit; | ||
81 | struct dentry *long_retry_limit; | ||
82 | struct dentry *ht40allow_map; | ||
83 | } debugfs; | ||
84 | #endif | ||
85 | |||
86 | /* must be last because of the way we do wiphy_priv(), | 75 | /* must be last because of the way we do wiphy_priv(), |
87 | * and it should at least be aligned to NETDEV_ALIGN */ | 76 | * and it should at least be aligned to NETDEV_ALIGN */ |
88 | struct wiphy wiphy __attribute__((__aligned__(NETDEV_ALIGN))); | 77 | struct wiphy wiphy __attribute__((__aligned__(NETDEV_ALIGN))); |
diff --git a/net/wireless/debugfs.c b/net/wireless/debugfs.c index 13d93d84f902..2e4895615037 100644 --- a/net/wireless/debugfs.c +++ b/net/wireless/debugfs.c | |||
@@ -104,11 +104,7 @@ static const struct file_operations ht40allow_map_ops = { | |||
104 | }; | 104 | }; |
105 | 105 | ||
106 | #define DEBUGFS_ADD(name) \ | 106 | #define DEBUGFS_ADD(name) \ |
107 | rdev->debugfs.name = debugfs_create_file(#name, S_IRUGO, phyd, \ | 107 | debugfs_create_file(#name, S_IRUGO, phyd, &rdev->wiphy, &name## _ops); |
108 | &rdev->wiphy, &name## _ops); | ||
109 | #define DEBUGFS_DEL(name) \ | ||
110 | debugfs_remove(rdev->debugfs.name); \ | ||
111 | rdev->debugfs.name = NULL; | ||
112 | 108 | ||
113 | void cfg80211_debugfs_rdev_add(struct cfg80211_registered_device *rdev) | 109 | void cfg80211_debugfs_rdev_add(struct cfg80211_registered_device *rdev) |
114 | { | 110 | { |
@@ -120,12 +116,3 @@ void cfg80211_debugfs_rdev_add(struct cfg80211_registered_device *rdev) | |||
120 | DEBUGFS_ADD(long_retry_limit); | 116 | DEBUGFS_ADD(long_retry_limit); |
121 | DEBUGFS_ADD(ht40allow_map); | 117 | DEBUGFS_ADD(ht40allow_map); |
122 | } | 118 | } |
123 | |||
124 | void cfg80211_debugfs_rdev_del(struct cfg80211_registered_device *rdev) | ||
125 | { | ||
126 | DEBUGFS_DEL(rts_threshold); | ||
127 | DEBUGFS_DEL(fragmentation_threshold); | ||
128 | DEBUGFS_DEL(short_retry_limit); | ||
129 | DEBUGFS_DEL(long_retry_limit); | ||
130 | DEBUGFS_DEL(ht40allow_map); | ||
131 | } | ||
diff --git a/net/wireless/debugfs.h b/net/wireless/debugfs.h index 6419b6d6ce3e..74fdd3811427 100644 --- a/net/wireless/debugfs.h +++ b/net/wireless/debugfs.h | |||
@@ -3,12 +3,9 @@ | |||
3 | 3 | ||
4 | #ifdef CONFIG_CFG80211_DEBUGFS | 4 | #ifdef CONFIG_CFG80211_DEBUGFS |
5 | void cfg80211_debugfs_rdev_add(struct cfg80211_registered_device *rdev); | 5 | void cfg80211_debugfs_rdev_add(struct cfg80211_registered_device *rdev); |
6 | void cfg80211_debugfs_rdev_del(struct cfg80211_registered_device *rdev); | ||
7 | #else | 6 | #else |
8 | static inline | 7 | static inline |
9 | void cfg80211_debugfs_rdev_add(struct cfg80211_registered_device *rdev) {} | 8 | void cfg80211_debugfs_rdev_add(struct cfg80211_registered_device *rdev) {} |
10 | static inline | ||
11 | void cfg80211_debugfs_rdev_del(struct cfg80211_registered_device *rdev) {} | ||
12 | #endif | 9 | #endif |
13 | 10 | ||
14 | #endif /* __CFG80211_DEBUGFS_H */ | 11 | #endif /* __CFG80211_DEBUGFS_H */ |
diff --git a/net/wireless/mlme.c b/net/wireless/mlme.c index 83c2a288dc63..2610b746effa 100644 --- a/net/wireless/mlme.c +++ b/net/wireless/mlme.c | |||
@@ -62,7 +62,6 @@ void cfg80211_send_rx_assoc(struct net_device *dev, const u8 *buf, size_t len) | |||
62 | u8 *ie = mgmt->u.assoc_resp.variable; | 62 | u8 *ie = mgmt->u.assoc_resp.variable; |
63 | int i, ieoffs = offsetof(struct ieee80211_mgmt, u.assoc_resp.variable); | 63 | int i, ieoffs = offsetof(struct ieee80211_mgmt, u.assoc_resp.variable); |
64 | struct cfg80211_internal_bss *bss = NULL; | 64 | struct cfg80211_internal_bss *bss = NULL; |
65 | bool need_connect_result = true; | ||
66 | 65 | ||
67 | wdev_lock(wdev); | 66 | wdev_lock(wdev); |
68 | 67 | ||
@@ -97,7 +96,6 @@ void cfg80211_send_rx_assoc(struct net_device *dev, const u8 *buf, size_t len) | |||
97 | WARN_ON(!bss); | 96 | WARN_ON(!bss); |
98 | } else if (wdev->conn) { | 97 | } else if (wdev->conn) { |
99 | cfg80211_sme_failed_assoc(wdev); | 98 | cfg80211_sme_failed_assoc(wdev); |
100 | need_connect_result = false; | ||
101 | /* | 99 | /* |
102 | * do not call connect_result() now because the | 100 | * do not call connect_result() now because the |
103 | * sme will schedule work that does it later. | 101 | * sme will schedule work that does it later. |
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index f48394126bf9..8ed62b6c172b 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c | |||
@@ -2988,7 +2988,6 @@ static int nl80211_trigger_scan(struct sk_buff *skb, struct genl_info *info) | |||
2988 | goto out; | 2988 | goto out; |
2989 | } | 2989 | } |
2990 | 2990 | ||
2991 | request->n_channels = n_channels; | ||
2992 | if (n_ssids) | 2991 | if (n_ssids) |
2993 | request->ssids = (void *)&request->channels[n_channels]; | 2992 | request->ssids = (void *)&request->channels[n_channels]; |
2994 | request->n_ssids = n_ssids; | 2993 | request->n_ssids = n_ssids; |
@@ -2999,32 +2998,53 @@ static int nl80211_trigger_scan(struct sk_buff *skb, struct genl_info *info) | |||
2999 | request->ie = (void *)(request->channels + n_channels); | 2998 | request->ie = (void *)(request->channels + n_channels); |
3000 | } | 2999 | } |
3001 | 3000 | ||
3001 | i = 0; | ||
3002 | if (info->attrs[NL80211_ATTR_SCAN_FREQUENCIES]) { | 3002 | if (info->attrs[NL80211_ATTR_SCAN_FREQUENCIES]) { |
3003 | /* user specified, bail out if channel not found */ | 3003 | /* user specified, bail out if channel not found */ |
3004 | request->n_channels = n_channels; | ||
3005 | i = 0; | ||
3006 | nla_for_each_nested(attr, info->attrs[NL80211_ATTR_SCAN_FREQUENCIES], tmp) { | 3004 | nla_for_each_nested(attr, info->attrs[NL80211_ATTR_SCAN_FREQUENCIES], tmp) { |
3007 | request->channels[i] = ieee80211_get_channel(wiphy, nla_get_u32(attr)); | 3005 | struct ieee80211_channel *chan; |
3008 | if (!request->channels[i]) { | 3006 | |
3007 | chan = ieee80211_get_channel(wiphy, nla_get_u32(attr)); | ||
3008 | |||
3009 | if (!chan) { | ||
3009 | err = -EINVAL; | 3010 | err = -EINVAL; |
3010 | goto out_free; | 3011 | goto out_free; |
3011 | } | 3012 | } |
3013 | |||
3014 | /* ignore disabled channels */ | ||
3015 | if (chan->flags & IEEE80211_CHAN_DISABLED) | ||
3016 | continue; | ||
3017 | |||
3018 | request->channels[i] = chan; | ||
3012 | i++; | 3019 | i++; |
3013 | } | 3020 | } |
3014 | } else { | 3021 | } else { |
3015 | /* all channels */ | 3022 | /* all channels */ |
3016 | i = 0; | ||
3017 | for (band = 0; band < IEEE80211_NUM_BANDS; band++) { | 3023 | for (band = 0; band < IEEE80211_NUM_BANDS; band++) { |
3018 | int j; | 3024 | int j; |
3019 | if (!wiphy->bands[band]) | 3025 | if (!wiphy->bands[band]) |
3020 | continue; | 3026 | continue; |
3021 | for (j = 0; j < wiphy->bands[band]->n_channels; j++) { | 3027 | for (j = 0; j < wiphy->bands[band]->n_channels; j++) { |
3022 | request->channels[i] = &wiphy->bands[band]->channels[j]; | 3028 | struct ieee80211_channel *chan; |
3029 | |||
3030 | chan = &wiphy->bands[band]->channels[j]; | ||
3031 | |||
3032 | if (chan->flags & IEEE80211_CHAN_DISABLED) | ||
3033 | continue; | ||
3034 | |||
3035 | request->channels[i] = chan; | ||
3023 | i++; | 3036 | i++; |
3024 | } | 3037 | } |
3025 | } | 3038 | } |
3026 | } | 3039 | } |
3027 | 3040 | ||
3041 | if (!i) { | ||
3042 | err = -EINVAL; | ||
3043 | goto out_free; | ||
3044 | } | ||
3045 | |||
3046 | request->n_channels = i; | ||
3047 | |||
3028 | i = 0; | 3048 | i = 0; |
3029 | if (info->attrs[NL80211_ATTR_SCAN_SSIDS]) { | 3049 | if (info->attrs[NL80211_ATTR_SCAN_SSIDS]) { |
3030 | nla_for_each_nested(attr, info->attrs[NL80211_ATTR_SCAN_SSIDS], tmp) { | 3050 | nla_for_each_nested(attr, info->attrs[NL80211_ATTR_SCAN_SSIDS], tmp) { |
diff --git a/net/wireless/scan.c b/net/wireless/scan.c index 2e8c515f3c5c..e2d344ff6745 100644 --- a/net/wireless/scan.c +++ b/net/wireless/scan.c | |||
@@ -650,9 +650,15 @@ int cfg80211_wext_siwscan(struct net_device *dev, | |||
650 | i = 0; | 650 | i = 0; |
651 | for (band = 0; band < IEEE80211_NUM_BANDS; band++) { | 651 | for (band = 0; band < IEEE80211_NUM_BANDS; band++) { |
652 | int j; | 652 | int j; |
653 | |||
653 | if (!wiphy->bands[band]) | 654 | if (!wiphy->bands[band]) |
654 | continue; | 655 | continue; |
656 | |||
655 | for (j = 0; j < wiphy->bands[band]->n_channels; j++) { | 657 | for (j = 0; j < wiphy->bands[band]->n_channels; j++) { |
658 | /* ignore disabled channels */ | ||
659 | if (wiphy->bands[band]->channels[j].flags & | ||
660 | IEEE80211_CHAN_DISABLED) | ||
661 | continue; | ||
656 | 662 | ||
657 | /* If we have a wireless request structure and the | 663 | /* If we have a wireless request structure and the |
658 | * wireless request specifies frequencies, then search | 664 | * wireless request specifies frequencies, then search |
diff --git a/net/wireless/wext-compat.c b/net/wireless/wext-compat.c index 561a45cf2a6a..41abcbdc5fb9 100644 --- a/net/wireless/wext-compat.c +++ b/net/wireless/wext-compat.c | |||
@@ -904,8 +904,6 @@ static int cfg80211_set_auth_alg(struct wireless_dev *wdev, | |||
904 | 904 | ||
905 | static int cfg80211_set_wpa_version(struct wireless_dev *wdev, u32 wpa_versions) | 905 | static int cfg80211_set_wpa_version(struct wireless_dev *wdev, u32 wpa_versions) |
906 | { | 906 | { |
907 | wdev->wext.connect.crypto.wpa_versions = 0; | ||
908 | |||
909 | if (wpa_versions & ~(IW_AUTH_WPA_VERSION_WPA | | 907 | if (wpa_versions & ~(IW_AUTH_WPA_VERSION_WPA | |
910 | IW_AUTH_WPA_VERSION_WPA2| | 908 | IW_AUTH_WPA_VERSION_WPA2| |
911 | IW_AUTH_WPA_VERSION_DISABLED)) | 909 | IW_AUTH_WPA_VERSION_DISABLED)) |
@@ -933,8 +931,6 @@ static int cfg80211_set_wpa_version(struct wireless_dev *wdev, u32 wpa_versions) | |||
933 | 931 | ||
934 | static int cfg80211_set_cipher_group(struct wireless_dev *wdev, u32 cipher) | 932 | static int cfg80211_set_cipher_group(struct wireless_dev *wdev, u32 cipher) |
935 | { | 933 | { |
936 | wdev->wext.connect.crypto.cipher_group = 0; | ||
937 | |||
938 | if (cipher & IW_AUTH_CIPHER_WEP40) | 934 | if (cipher & IW_AUTH_CIPHER_WEP40) |
939 | wdev->wext.connect.crypto.cipher_group = | 935 | wdev->wext.connect.crypto.cipher_group = |
940 | WLAN_CIPHER_SUITE_WEP40; | 936 | WLAN_CIPHER_SUITE_WEP40; |
@@ -950,6 +946,8 @@ static int cfg80211_set_cipher_group(struct wireless_dev *wdev, u32 cipher) | |||
950 | else if (cipher & IW_AUTH_CIPHER_AES_CMAC) | 946 | else if (cipher & IW_AUTH_CIPHER_AES_CMAC) |
951 | wdev->wext.connect.crypto.cipher_group = | 947 | wdev->wext.connect.crypto.cipher_group = |
952 | WLAN_CIPHER_SUITE_AES_CMAC; | 948 | WLAN_CIPHER_SUITE_AES_CMAC; |
949 | else if (cipher & IW_AUTH_CIPHER_NONE) | ||
950 | wdev->wext.connect.crypto.cipher_group = 0; | ||
953 | else | 951 | else |
954 | return -EINVAL; | 952 | return -EINVAL; |
955 | 953 | ||