--- zzzz-none-000/linux-4.19.183/net/wireless/chan.c 2021-03-24 10:07:39.000000000 +0000 +++ bcm63-7530ax-756/linux-4.19.183/net/wireless/chan.c 2023-06-28 08:54:21.000000000 +0000 @@ -745,7 +745,12 @@ width = 10; break; case NL80211_CHAN_WIDTH_20: +#ifndef CONFIG_BCM_KF_MISC_BACKPORTS if (!ht_cap->ht_supported) +#else + if (!ht_cap->ht_supported && + chandef->chan->band != NL80211_BAND_6GHZ) +#endif /* CONFIG_BCM_KF_MISC_BACKPORTS */ return false; case NL80211_CHAN_WIDTH_20_NOHT: prohibited_flags |= IEEE80211_CHAN_NO_20MHZ; @@ -753,6 +758,10 @@ break; case NL80211_CHAN_WIDTH_40: width = 40; +#ifdef CONFIG_BCM_KF_MISC_BACKPORTS + if (chandef->chan->band == NL80211_BAND_6GHZ) + break; +#endif /* CONFIG_BCM_KF_MISC_BACKPORTS */ if (!ht_cap->ht_supported) return false; if (!(ht_cap->cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40) || @@ -767,23 +776,44 @@ break; case NL80211_CHAN_WIDTH_80P80: cap = vht_cap->cap & IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_MASK; +#ifndef CONFIG_BCM_KF_MISC_BACKPORTS if (cap != IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160_80PLUS80MHZ) +#else + if (chandef->chan->band != NL80211_BAND_6GHZ && + cap != IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160_80PLUS80MHZ) +#endif /* CONFIG_BCM_KF_MISC_BACKPORTS */ return false; case NL80211_CHAN_WIDTH_80: +#ifndef CONFIG_BCM_KF_MISC_BACKPORTS if (!vht_cap->vht_supported) return false; +#endif /* CONFIG_BCM_KF_MISC_BACKPORTS */ prohibited_flags |= IEEE80211_CHAN_NO_80MHZ; width = 80; +#ifdef CONFIG_BCM_KF_MISC_BACKPORTS + if (chandef->chan->band == NL80211_BAND_6GHZ) + break; + if (!vht_cap->vht_supported) + return false; +#endif /* CONFIG_BCM_KF_MISC_BACKPORTS */ break; case NL80211_CHAN_WIDTH_160: +#ifdef CONFIG_BCM_KF_MISC_BACKPORTS + prohibited_flags |= IEEE80211_CHAN_NO_160MHZ; + width = 160; + if (chandef->chan->band == NL80211_BAND_6GHZ) + break; +#endif /* CONFIG_BCM_KF_MISC_BACKPORTS */ if (!vht_cap->vht_supported) return false; cap = vht_cap->cap & IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_MASK; if (cap != IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160MHZ && cap != IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160_80PLUS80MHZ) return false; +#ifndef CONFIG_BCM_KF_MISC_BACKPORTS prohibited_flags |= IEEE80211_CHAN_NO_160MHZ; width = 160; +#endif /* CONFIG_BCM_KF_MISC_BACKPORTS */ break; default: WARN_ON_ONCE(1);