|
@@ -4267,6 +4267,8 @@ static int ieee80211_prep_channel(struct ieee80211_sub_if_data *sdata,
|
|
|
struct ieee80211_supported_band *sband;
|
|
|
struct cfg80211_chan_def chandef;
|
|
|
int ret;
|
|
|
+ u32 i;
|
|
|
+ bool have_80mhz;
|
|
|
|
|
|
sband = local->hw.wiphy->bands[cbss->channel->band];
|
|
|
|
|
@@ -4317,6 +4319,20 @@ static int ieee80211_prep_channel(struct ieee80211_sub_if_data *sdata,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /* Allow VHT if at least one channel on the sband supports 80 MHz */
|
|
|
+ have_80mhz = false;
|
|
|
+ for (i = 0; i < sband->n_channels; i++) {
|
|
|
+ if (sband->channels[i].flags & (IEEE80211_CHAN_DISABLED |
|
|
|
+ IEEE80211_CHAN_NO_80MHZ))
|
|
|
+ continue;
|
|
|
+
|
|
|
+ have_80mhz = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!have_80mhz)
|
|
|
+ ifmgd->flags |= IEEE80211_STA_DISABLE_VHT;
|
|
|
+
|
|
|
ifmgd->flags |= ieee80211_determine_chantype(sdata, sband,
|
|
|
cbss->channel,
|
|
|
ht_cap, ht_oper, vht_oper,
|