diff options
Diffstat (limited to 'net/wireless/wext-compat.c')
-rw-r--r-- | net/wireless/wext-compat.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/net/wireless/wext-compat.c b/net/wireless/wext-compat.c index 3e5dbd4e4cd5..0bf169bb770e 100644 --- a/net/wireless/wext-compat.c +++ b/net/wireless/wext-compat.c | |||
@@ -267,9 +267,12 @@ int cfg80211_wext_freq(struct wiphy *wiphy, struct iw_freq *freq) | |||
267 | * -EINVAL for impossible things. | 267 | * -EINVAL for impossible things. |
268 | */ | 268 | */ |
269 | if (freq->e == 0) { | 269 | if (freq->e == 0) { |
270 | enum ieee80211_band band = IEEE80211_BAND_2GHZ; | ||
270 | if (freq->m < 0) | 271 | if (freq->m < 0) |
271 | return 0; | 272 | return 0; |
272 | return ieee80211_channel_to_frequency(freq->m); | 273 | if (freq->m > 14) |
274 | band = IEEE80211_BAND_5GHZ; | ||
275 | return ieee80211_channel_to_frequency(freq->m, band); | ||
273 | } else { | 276 | } else { |
274 | int i, div = 1000000; | 277 | int i, div = 1000000; |
275 | for (i = 0; i < freq->e; i++) | 278 | for (i = 0; i < freq->e; i++) |
@@ -802,11 +805,11 @@ int cfg80211_wext_siwfreq(struct net_device *dev, | |||
802 | return freq; | 805 | return freq; |
803 | if (freq == 0) | 806 | if (freq == 0) |
804 | return -EINVAL; | 807 | return -EINVAL; |
805 | wdev_lock(wdev); | ||
806 | mutex_lock(&rdev->devlist_mtx); | 808 | mutex_lock(&rdev->devlist_mtx); |
809 | wdev_lock(wdev); | ||
807 | err = cfg80211_set_freq(rdev, wdev, freq, NL80211_CHAN_NO_HT); | 810 | err = cfg80211_set_freq(rdev, wdev, freq, NL80211_CHAN_NO_HT); |
808 | mutex_unlock(&rdev->devlist_mtx); | ||
809 | wdev_unlock(wdev); | 811 | wdev_unlock(wdev); |
812 | mutex_unlock(&rdev->devlist_mtx); | ||
810 | return err; | 813 | return err; |
811 | default: | 814 | default: |
812 | return -EOPNOTSUPP; | 815 | return -EOPNOTSUPP; |