|
|
@@ -1,47 +0,0 @@
|
|
|
---- 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;
|