1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-09-15 18:02:04 +03:00
openwrt-xburst/package/mac80211/patches/560-nl80211_get_freq.patch
nbd b3eea0e9a1 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
2010-01-17 03:07:51 +00:00

48 lines
1.6 KiB
Diff

--- 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;