nl80211: export HT capabilities
authorJohannes Berg <johannes@sipsolutions.net>
Thu, 9 Oct 2008 10:20:13 +0000 (12:20 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 31 Oct 2008 23:00:13 +0000 (19:00 -0400)
This exports the local HT capabilities in nl80211.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
include/linux/nl80211.h
net/wireless/nl80211.c

index 9bad65400fba76cad80e742b3784adbd4ca50637..41720d47d618cfcb1fc75f844c042bc3cba1988f 100644 (file)
@@ -452,17 +452,29 @@ enum nl80211_mpath_info {
  *     an array of nested frequency attributes
  * @NL80211_BAND_ATTR_RATES: supported bitrates in this band,
  *     an array of nested bitrate attributes
+ * @NL80211_BAND_ATTR_HT_MCS_SET: 16-byte attribute containing the MCS set as
+ *     defined in 802.11n
+ * @NL80211_BAND_ATTR_HT_CAPA: HT capabilities, as in the HT information IE
+ * @NL80211_BAND_ATTR_HT_AMPDU_FACTOR: A-MPDU factor, as in 11n
+ * @NL80211_BAND_ATTR_HT_AMPDU_DENSITY: A-MPDU density, as in 11n
  */
 enum nl80211_band_attr {
        __NL80211_BAND_ATTR_INVALID,
        NL80211_BAND_ATTR_FREQS,
        NL80211_BAND_ATTR_RATES,
 
+       NL80211_BAND_ATTR_HT_MCS_SET,
+       NL80211_BAND_ATTR_HT_CAPA,
+       NL80211_BAND_ATTR_HT_AMPDU_FACTOR,
+       NL80211_BAND_ATTR_HT_AMPDU_DENSITY,
+
        /* keep last */
        __NL80211_BAND_ATTR_AFTER_LAST,
        NL80211_BAND_ATTR_MAX = __NL80211_BAND_ATTR_AFTER_LAST - 1
 };
 
+#define NL80211_BAND_ATTR_HT_CAPA NL80211_BAND_ATTR_HT_CAPA
+
 /**
  * enum nl80211_frequency_attr - frequency attributes
  * @NL80211_FREQUENCY_ATTR_FREQ: Frequency in MHz
index 572793c8c7ab6b576dae03753b69503ee05f04cf..4d12e885170e79f4d67ed9782c34b6b7d27f7b40 100644 (file)
@@ -157,6 +157,19 @@ static int nl80211_send_wiphy(struct sk_buff *msg, u32 pid, u32 seq, int flags,
                if (!nl_band)
                        goto nla_put_failure;
 
+               /* add HT info */
+               if (dev->wiphy.bands[band]->ht_cap.ht_supported) {
+                       NLA_PUT(msg, NL80211_BAND_ATTR_HT_MCS_SET,
+                               sizeof(dev->wiphy.bands[band]->ht_cap.mcs),
+                               &dev->wiphy.bands[band]->ht_cap.mcs);
+                       NLA_PUT_U16(msg, NL80211_BAND_ATTR_HT_CAPA,
+                               dev->wiphy.bands[band]->ht_cap.cap);
+                       NLA_PUT_U8(msg, NL80211_BAND_ATTR_HT_AMPDU_FACTOR,
+                               dev->wiphy.bands[band]->ht_cap.ampdu_factor);
+                       NLA_PUT_U8(msg, NL80211_BAND_ATTR_HT_AMPDU_DENSITY,
+                               dev->wiphy.bands[band]->ht_cap.ampdu_density);
+               }
+
                /* add frequencies */
                nl_freqs = nla_nest_start(msg, NL80211_BAND_ATTR_FREQS);
                if (!nl_freqs)