iwinfo: don't report AC capabilities on 2GHz-only interfaces
authorImre Kaloz <kaloz@openwrt.org>
Fri, 20 Mar 2015 14:36:04 +0000 (15:36 +0100)
committerFelix Fietkau <nbd@openwrt.org>
Fri, 20 Mar 2015 15:50:21 +0000 (16:50 +0100)
If a 802.11ac capable chip is in 2GHz-only mode, the hwmode
reported should be 802.11bgn.

Signed-off-by: Imre Kaloz <kaloz@openwrt.org>
iwinfo_nl80211.c

index be58c56..e090052 100644 (file)
@@ -2383,13 +2383,6 @@ static int nl80211_get_hwmodelist_cb(struct nl_msg *msg, void *arg)
                        if (caps > 0)
                                *modes |= IWINFO_80211_N;
 
                        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)
                        {
                        nla_for_each_nested(freq, bands[NL80211_BAND_ATTR_FREQS],
                                            freqs_remain)
                        {
@@ -2404,6 +2397,14 @@ static int nl80211_get_hwmodelist_cb(struct nl_msg *msg, void *arg)
                                        *modes |= IWINFO_80211_B;
                                        *modes |= IWINFO_80211_G;
                                }
                                        *modes |= IWINFO_80211_B;
                                        *modes |= IWINFO_80211_G;
                                }
+                               else 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;
+                               }
                                else if (!(*modes & IWINFO_80211_AC))
                                {
                                        *modes |= IWINFO_80211_A;
                                else if (!(*modes & IWINFO_80211_AC))
                                {
                                        *modes |= IWINFO_80211_A;