diff options
author | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2010-01-17 03:07:51 +0000 |
---|---|---|
committer | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2010-01-17 03:07:51 +0000 |
commit | b3eea0e9a17679a580b13bf586018cb07f0f9b29 (patch) | |
tree | dd819f8fc171c8515a4d3f4ea3267b378e7db176 /package/mac80211 | |
parent | d9d6100edd9b4229398ffc177bd3aff826308377 (diff) |
mac80211: allow user space to query the current operating frequency
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@19178 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/mac80211')
-rw-r--r-- | package/mac80211/patches/560-nl80211_get_freq.patch | 47 | ||||
-rw-r--r-- | package/mac80211/patches/570-mac80211_get_freq.patch | 29 |
2 files changed, 76 insertions, 0 deletions
diff --git a/package/mac80211/patches/560-nl80211_get_freq.patch b/package/mac80211/patches/560-nl80211_get_freq.patch new file mode 100644 index 0000000000..25d915473c --- /dev/null +++ b/package/mac80211/patches/560-nl80211_get_freq.patch @@ -0,0 +1,47 @@ +--- a/include/net/cfg80211.h ++++ b/include/net/cfg80211.h +@@ -954,6 +954,8 @@ struct cfg80211_pmksa { + * + * @set_txq_params: Set TX queue parameters + * ++ * @get_channel: Get operating channel ++ * + * @set_channel: Set channel + * + * @scan: Request to do a scan. If returning zero, the scan request is given +@@ -1079,6 +1081,10 @@ struct cfg80211_ops { + int (*set_txq_params)(struct wiphy *wiphy, + struct ieee80211_txq_params *params); + ++ int (*get_channel)(struct wiphy *wiphy, ++ struct ieee80211_channel **chan, ++ enum nl80211_channel_type *channel_type); ++ + int (*set_channel)(struct wiphy *wiphy, + struct ieee80211_channel *chan, + enum nl80211_channel_type channel_type); +--- a/net/wireless/nl80211.c ++++ b/net/wireless/nl80211.c +@@ -427,7 +427,8 @@ static int nl80211_send_wiphy(struct sk_ + struct nlattr *nl_modes; + struct nlattr *nl_cmds; + enum ieee80211_band band; +- struct ieee80211_channel *chan; ++ struct ieee80211_channel *chan = NULL; ++ enum nl80211_channel_type chan_type; + struct ieee80211_rate *rate; + int i; + u16 ifmodes = dev->wiphy.interface_modes; +@@ -465,6 +466,12 @@ static int nl80211_send_wiphy(struct sk_ + NLA_PUT_U8(msg, NL80211_ATTR_MAX_NUM_PMKIDS, + dev->wiphy.max_num_pmkids); + ++ if (dev->ops->get_channel && ++ dev->ops->get_channel(&dev->wiphy, &chan, &chan_type) == 0) { ++ NLA_PUT_U32(msg, NL80211_ATTR_WIPHY_FREQ, chan->center_freq); ++ NLA_PUT_U32(msg, NL80211_ATTR_WIPHY_CHANNEL_TYPE, chan_type); ++ } ++ + nl_modes = nla_nest_start(msg, NL80211_ATTR_SUPPORTED_IFTYPES); + if (!nl_modes) + goto nla_put_failure; diff --git a/package/mac80211/patches/570-mac80211_get_freq.patch b/package/mac80211/patches/570-mac80211_get_freq.patch new file mode 100644 index 0000000000..073fe6386c --- /dev/null +++ b/package/mac80211/patches/570-mac80211_get_freq.patch @@ -0,0 +1,29 @@ +--- a/net/mac80211/cfg.c ++++ b/net/mac80211/cfg.c +@@ -1154,6 +1154,18 @@ static int ieee80211_set_txq_params(stru + return 0; + } + ++static int ieee80211_get_oper_channel(struct wiphy *wiphy, ++ struct ieee80211_channel **chan, ++ enum nl80211_channel_type *channel_type) ++{ ++ struct ieee80211_local *local = wiphy_priv(wiphy); ++ ++ *chan = local->oper_channel; ++ *channel_type = local->oper_channel_type; ++ ++ return 0; ++} ++ + static int ieee80211_set_channel(struct wiphy *wiphy, + struct ieee80211_channel *chan, + enum nl80211_channel_type channel_type) +@@ -1494,6 +1506,7 @@ struct cfg80211_ops mac80211_config_ops + #endif + .change_bss = ieee80211_change_bss, + .set_txq_params = ieee80211_set_txq_params, ++ .get_channel = ieee80211_get_oper_channel, + .set_channel = ieee80211_set_channel, + .suspend = ieee80211_suspend, + .resume = ieee80211_resume, |