@ -2159,6 +2159,7 @@ static int nl80211_get_hwmodelist_cb(struct nl_msg *msg, void *arg)
int * modes = arg ;
int * modes = arg ;
int bands_remain , freqs_remain ;
int bands_remain , freqs_remain ;
uint16_t caps = 0 ;
uint16_t caps = 0 ;
uint32_t vht_caps = 0 ;
struct nlattr * * attr = nl80211_parse ( msg ) ;
struct nlattr * * attr = nl80211_parse ( msg ) ;
struct nlattr * bands [ NL80211_BAND_ATTR_MAX + 1 ] ;
struct nlattr * bands [ NL80211_BAND_ATTR_MAX + 1 ] ;
struct nlattr * freqs [ NL80211_FREQUENCY_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 )
if ( caps > 0 )
* modes | = IWINFO_80211_N ;
* 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 ] ,
nla_for_each_nested ( freq , bands [ NL80211_BAND_ATTR_FREQS ] ,
freqs_remain )
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_B ;
* modes | = IWINFO_80211_G ;
* modes | = IWINFO_80211_G ;
}
}
else
else if ( ! ( * modes & IWINFO_80211_AC ) )
{
{
* modes | = IWINFO_80211_A ;
* modes | = IWINFO_80211_A ;
}
}