summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2010-01-17 03:07:51 +0000
committerFelix Fietkau <nbd@openwrt.org>2010-01-17 03:07:51 +0000
commit9f0c2d0a5b114e1988f540c8fe2d8d88206c2ee0 (patch)
treee729dda11e67db4d8349ba46992527606c4910c2
parent8bdee4acf7fac4a8dc0661cf6addbadfa020b959 (diff)
downloadmtk-20170518-9f0c2d0a5b114e1988f540c8fe2d8d88206c2ee0.zip
mtk-20170518-9f0c2d0a5b114e1988f540c8fe2d8d88206c2ee0.tar.gz
mtk-20170518-9f0c2d0a5b114e1988f540c8fe2d8d88206c2ee0.tar.bz2
mac80211: allow user space to query the current operating frequency
SVN-Revision: 19178
-rw-r--r--package/mac80211/patches/560-nl80211_get_freq.patch47
-rw-r--r--package/mac80211/patches/570-mac80211_get_freq.patch29
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 0000000..25d9154
--- /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 0000000..073fe63
--- /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,