struct net_device *dev,
                                  u16 noack_map);
 
-       struct ieee80211_channel *(*get_channel)(struct wiphy *wiphy);
+       struct ieee80211_channel *(*get_channel)(struct wiphy *wiphy,
+                                              enum nl80211_channel_type *type);
 };
 
 /*
 
 }
 
 static struct ieee80211_channel *
-ieee80211_wiphy_get_channel(struct wiphy *wiphy)
+ieee80211_wiphy_get_channel(struct wiphy *wiphy,
+                           enum nl80211_channel_type *type)
 {
        struct ieee80211_local *local = wiphy_priv(wiphy);
 
+       *type = local->_oper_channel_type;
        return local->oper_channel;
 }
 
 
                    rdev->devlist_generation ^
                        (cfg80211_rdev_list_generation << 2));
 
+       if (rdev->ops->get_channel) {
+               struct ieee80211_channel *chan;
+               enum nl80211_channel_type channel_type;
+
+               chan = rdev->ops->get_channel(&rdev->wiphy, &channel_type);
+               if (chan) {
+                       NLA_PUT_U32(msg, NL80211_ATTR_WIPHY_FREQ,
+                                   chan->center_freq);
+                       NLA_PUT_U32(msg, NL80211_ATTR_WIPHY_CHANNEL_TYPE,
+                                   channel_type);
+               }
+       }
+
        return genlmsg_end(msg, hdr);
 
  nla_put_failure:
 
        struct wireless_dev *wdev = dev->ieee80211_ptr;
        struct cfg80211_registered_device *rdev = wiphy_to_dev(wdev->wiphy);
        struct ieee80211_channel *chan;
+       enum nl80211_channel_type channel_type;
 
        switch (wdev->iftype) {
        case NL80211_IFTYPE_STATION:
                if (!rdev->ops->get_channel)
                        return -EINVAL;
 
-               chan = rdev->ops->get_channel(wdev->wiphy);
+               chan = rdev->ops->get_channel(wdev->wiphy, &channel_type);
                if (!chan)
                        return -EINVAL;
                freq->m = chan->center_freq;