[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