|
|
@@ -2159,6 +2159,7 @@ static int nl80211_get_hwmodelist_cb(struct nl_msg *msg, void *arg)
|
|
|
int *modes = arg;
|
|
|
int bands_remain, freqs_remain;
|
|
|
uint16_t caps = 0;
|
|
|
+ uint32_t vht_caps = 0;
|
|
|
struct nlattr **attr = nl80211_parse(msg);
|
|
|
struct nlattr *bands[NL80211_BAND_ATTR_MAX + 1];
|
|
|
struct nlattr *freqs[NL80211_FREQUENCY_ATTR_MAX + 1];
|
|
|
@@ -2180,6 +2181,13 @@ static int nl80211_get_hwmodelist_cb(struct nl_msg *msg, void *arg)
|
|
|
if (caps > 0)
|
|
|
*modes |= IWINFO_80211_N;
|
|
|
|
|
|
+ if (bands[NL80211_BAND_ATTR_VHT_CAPA])
|
|
|
+ vht_caps = nla_get_u32(bands[NL80211_BAND_ATTR_VHT_CAPA]);
|
|
|
+
|
|
|
+ /* Treat any nonzero capability as 11ac */
|
|
|
+ if (vht_caps > 0)
|
|
|
+ *modes |= IWINFO_80211_AC;
|
|
|
+
|
|
|
nla_for_each_nested(freq, bands[NL80211_BAND_ATTR_FREQS],
|
|
|
freqs_remain)
|
|
|
{
|
|
|
@@ -2194,7 +2202,7 @@ static int nl80211_get_hwmodelist_cb(struct nl_msg *msg, void *arg)
|
|
|
*modes |= IWINFO_80211_B;
|
|
|
*modes |= IWINFO_80211_G;
|
|
|
}
|
|
|
- else
|
|
|
+ else if (!(*modes & IWINFO_80211_AC))
|
|
|
{
|
|
|
*modes |= IWINFO_80211_A;
|
|
|
}
|