diff options
Diffstat (limited to 'net/wireless')
-rw-r--r-- | net/wireless/nl80211.c | 16 | ||||
-rw-r--r-- | net/wireless/wext-compat.c | 9 |
2 files changed, 18 insertions, 7 deletions
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index 079fc49e397..6b001e44571 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c | |||
@@ -1759,11 +1759,17 @@ static int nl80211_send_iface(struct sk_buff *msg, u32 pid, u32 seq, int flags, | |||
1759 | (cfg80211_rdev_list_generation << 2))) | 1759 | (cfg80211_rdev_list_generation << 2))) |
1760 | goto nla_put_failure; | 1760 | goto nla_put_failure; |
1761 | 1761 | ||
1762 | if (rdev->monitor_channel) { | 1762 | if (rdev->ops->get_channel) { |
1763 | if (nla_put_u32(msg, NL80211_ATTR_WIPHY_FREQ, | 1763 | struct ieee80211_channel *chan; |
1764 | rdev->monitor_channel->center_freq) || | 1764 | enum nl80211_channel_type channel_type; |
1765 | nla_put_u32(msg, NL80211_ATTR_WIPHY_CHANNEL_TYPE, | 1765 | |
1766 | rdev->monitor_channel_type)) | 1766 | chan = rdev->ops->get_channel(&rdev->wiphy, wdev, |
1767 | &channel_type); | ||
1768 | if (chan && | ||
1769 | (nla_put_u32(msg, NL80211_ATTR_WIPHY_FREQ, | ||
1770 | chan->center_freq) || | ||
1771 | nla_put_u32(msg, NL80211_ATTR_WIPHY_CHANNEL_TYPE, | ||
1772 | channel_type))) | ||
1767 | goto nla_put_failure; | 1773 | goto nla_put_failure; |
1768 | } | 1774 | } |
1769 | 1775 | ||
diff --git a/net/wireless/wext-compat.c b/net/wireless/wext-compat.c index 7df42f54187..494379eb464 100644 --- a/net/wireless/wext-compat.c +++ b/net/wireless/wext-compat.c | |||
@@ -827,6 +827,8 @@ static int cfg80211_wext_giwfreq(struct net_device *dev, | |||
827 | { | 827 | { |
828 | struct wireless_dev *wdev = dev->ieee80211_ptr; | 828 | struct wireless_dev *wdev = dev->ieee80211_ptr; |
829 | struct cfg80211_registered_device *rdev = wiphy_to_dev(wdev->wiphy); | 829 | struct cfg80211_registered_device *rdev = wiphy_to_dev(wdev->wiphy); |
830 | struct ieee80211_channel *chan; | ||
831 | enum nl80211_channel_type channel_type; | ||
830 | 832 | ||
831 | switch (wdev->iftype) { | 833 | switch (wdev->iftype) { |
832 | case NL80211_IFTYPE_STATION: | 834 | case NL80211_IFTYPE_STATION: |
@@ -834,10 +836,13 @@ static int cfg80211_wext_giwfreq(struct net_device *dev, | |||
834 | case NL80211_IFTYPE_ADHOC: | 836 | case NL80211_IFTYPE_ADHOC: |
835 | return cfg80211_ibss_wext_giwfreq(dev, info, freq, extra); | 837 | return cfg80211_ibss_wext_giwfreq(dev, info, freq, extra); |
836 | case NL80211_IFTYPE_MONITOR: | 838 | case NL80211_IFTYPE_MONITOR: |
837 | if (!rdev->monitor_channel) | 839 | if (!rdev->ops->get_channel) |
838 | return -EINVAL; | 840 | return -EINVAL; |
839 | 841 | ||
840 | freq->m = rdev->monitor_channel->center_freq; | 842 | chan = rdev->ops->get_channel(wdev->wiphy, wdev, &channel_type); |
843 | if (!chan) | ||
844 | return -EINVAL; | ||
845 | freq->m = chan->center_freq; | ||
841 | freq->e = 6; | 846 | freq->e = 6; |
842 | return 0; | 847 | return 0; |
843 | default: | 848 | default: |