diff options
Diffstat (limited to 'net/wireless/wext-compat.c')
-rw-r--r-- | net/wireless/wext-compat.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/net/wireless/wext-compat.c b/net/wireless/wext-compat.c index 6a6181a673ca..494379eb464f 100644 --- a/net/wireless/wext-compat.c +++ b/net/wireless/wext-compat.c | |||
@@ -796,7 +796,15 @@ static int cfg80211_wext_siwfreq(struct net_device *dev, | |||
796 | case NL80211_IFTYPE_ADHOC: | 796 | case NL80211_IFTYPE_ADHOC: |
797 | return cfg80211_ibss_wext_siwfreq(dev, info, wextfreq, extra); | 797 | return cfg80211_ibss_wext_siwfreq(dev, info, wextfreq, extra); |
798 | case NL80211_IFTYPE_MONITOR: | 798 | case NL80211_IFTYPE_MONITOR: |
799 | case NL80211_IFTYPE_WDS: | 799 | freq = cfg80211_wext_freq(wdev->wiphy, wextfreq); |
800 | if (freq < 0) | ||
801 | return freq; | ||
802 | if (freq == 0) | ||
803 | return -EINVAL; | ||
804 | mutex_lock(&rdev->devlist_mtx); | ||
805 | err = cfg80211_set_monitor_channel(rdev, freq, NL80211_CHAN_NO_HT); | ||
806 | mutex_unlock(&rdev->devlist_mtx); | ||
807 | return err; | ||
800 | case NL80211_IFTYPE_MESH_POINT: | 808 | case NL80211_IFTYPE_MESH_POINT: |
801 | freq = cfg80211_wext_freq(wdev->wiphy, wextfreq); | 809 | freq = cfg80211_wext_freq(wdev->wiphy, wextfreq); |
802 | if (freq < 0) | 810 | if (freq < 0) |
@@ -804,9 +812,8 @@ static int cfg80211_wext_siwfreq(struct net_device *dev, | |||
804 | if (freq == 0) | 812 | if (freq == 0) |
805 | return -EINVAL; | 813 | return -EINVAL; |
806 | mutex_lock(&rdev->devlist_mtx); | 814 | mutex_lock(&rdev->devlist_mtx); |
807 | wdev_lock(wdev); | 815 | err = cfg80211_set_mesh_freq(rdev, wdev, freq, |
808 | err = cfg80211_set_freq(rdev, wdev, freq, NL80211_CHAN_NO_HT); | 816 | NL80211_CHAN_NO_HT); |
809 | wdev_unlock(wdev); | ||
810 | mutex_unlock(&rdev->devlist_mtx); | 817 | mutex_unlock(&rdev->devlist_mtx); |
811 | return err; | 818 | return err; |
812 | default: | 819 | default: |
@@ -832,18 +839,14 @@ static int cfg80211_wext_giwfreq(struct net_device *dev, | |||
832 | if (!rdev->ops->get_channel) | 839 | if (!rdev->ops->get_channel) |
833 | return -EINVAL; | 840 | return -EINVAL; |
834 | 841 | ||
835 | chan = rdev->ops->get_channel(wdev->wiphy, &channel_type); | 842 | chan = rdev->ops->get_channel(wdev->wiphy, wdev, &channel_type); |
836 | if (!chan) | 843 | if (!chan) |
837 | return -EINVAL; | 844 | return -EINVAL; |
838 | freq->m = chan->center_freq; | 845 | freq->m = chan->center_freq; |
839 | freq->e = 6; | 846 | freq->e = 6; |
840 | return 0; | 847 | return 0; |
841 | default: | 848 | default: |
842 | if (!wdev->channel) | 849 | return -EINVAL; |
843 | return -EINVAL; | ||
844 | freq->m = wdev->channel->center_freq; | ||
845 | freq->e = 6; | ||
846 | return 0; | ||
847 | } | 850 | } |
848 | } | 851 | } |
849 | 852 | ||