[PATCH v2 13/24] mac80211: determine chandef from HE 6 GHz operation
Wen Gong
wgong at codeaurora.org
Fri Sep 11 05:29:59 EDT 2020
On 2020-05-29 03:34, Johannes Berg wrote:
> From: Johannes Berg <johannes.berg at intel.com>
>
> Support connecting to HE 6 GHz APs and mesh networks on 6 GHz,
> where the HT/VHT information is missing but instead the HE 6 GHz
> band capability is present, and the 6 GHz Operation information
> field is used to encode the channel configuration instead of the
> HT/VHT operation elements.
>
> Also add some other bits needed to connect to 6 GHz networks.
>
> Link:
> https://lore.kernel.org/r/1589399105-25472-10-git-send-email-rmanohar@codeaurora.org
> Co-developed-by: Rajkumar Manoharan <rmanohar at codeaurora.org>
> Signed-off-by: Rajkumar Manoharan <rmanohar at codeaurora.org>
> Signed-off-by: Johannes Berg <johannes.berg at intel.com>
> ---
> net/mac80211/ieee80211_i.h | 3 ++
> net/mac80211/mesh.c | 1 +
> net/mac80211/mlme.c | 69 +++++++++++++++++-------
> net/mac80211/util.c | 106 +++++++++++++++++++++++++++++++++++++
> 4 files changed, 160 insertions(+), 19 deletions(-)
>
[...]
> @@ -4838,21 +4860,23 @@ static int ieee80211_prep_channel(struct
> ieee80211_sub_if_data *sdata,
> IEEE80211_STA_DISABLE_160MHZ);
>
> /* disable HT/VHT/HE if we don't support them */
> - if (!sband->ht_cap.ht_supported) {
> + if (!sband->ht_cap.ht_supported && !is_6ghz) {
> ifmgd->flags |= IEEE80211_STA_DISABLE_HT;
> ifmgd->flags |= IEEE80211_STA_DISABLE_VHT;
> ifmgd->flags |= IEEE80211_STA_DISABLE_HE;
> }
>
> - if (!sband->vht_cap.vht_supported)
> + if (!sband->vht_cap.vht_supported && !is_6ghz) {
> ifmgd->flags |= IEEE80211_STA_DISABLE_VHT;
> + ifmgd->flags |= IEEE80211_STA_DISABLE_HE;
> + }
when connec to NL80211_BAND_2GHZ, it does not support vht, then it
failed for HE and connected with HT mode.
I tesed with below change, it fix the issue, it connected with HE mode
for NL80211_BAND_2GHZ with an HE mode 11AX AP.
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index b2a9d47cf86d..c85186799d05 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -4853,6 +4853,7 @@ static int ieee80211_prep_channel(struct
ieee80211_sub_if_data *sdata,
struct ieee80211_supported_band *sband;
struct cfg80211_chan_def chandef;
bool is_6ghz = cbss->channel->band == NL80211_BAND_6GHZ;
+ bool is_5ghz = cbss->channel->band == NL80211_BAND_5GHZ;
struct ieee80211_bss *bss = (void *)cbss->priv;
int ret;
u32 i;
@@ -4871,7 +4872,7 @@ static int ieee80211_prep_channel(struct
ieee80211_sub_if_data *sdata,
ifmgd->flags |= IEEE80211_STA_DISABLE_HE;
}
- if (!sband->vht_cap.vht_supported && !is_6ghz) {
+ if (!sband->vht_cap.vht_supported && is_5ghz) {
ifmgd->flags |= IEEE80211_STA_DISABLE_VHT;
ifmgd->flags |= IEEE80211_STA_DISABLE_HE;
}
>
> if (!ieee80211_get_he_sta_cap(sband))
> ifmgd->flags |= IEEE80211_STA_DISABLE_HE;
>
> rcu_read_lock();
>
> - if (!(ifmgd->flags & IEEE80211_STA_DISABLE_HT)) {
> + if (!(ifmgd->flags & IEEE80211_STA_DISABLE_HT) && !is_6ghz) {
> const u8 *ht_oper_ie, *ht_cap_ie;
>
> ht_oper_ie = ieee80211_bss_get_ie(cbss, WLAN_EID_HT_OPERATION);
[...]
More information about the ath11k
mailing list