From: Ben Greear <greearb@candelatech.com>
To: Luca Coelho <luca@coelho.fi>, johannes@sipsolutions.net
Cc: linux-wireless@vger.kernel.org
Subject: Re: [PATCH v2] mac80211: add more HT/VHT/HE state logging
Date: Tue, 30 Nov 2021 07:50:08 -0800 [thread overview]
Message-ID: <30293d97-c0bb-1902-7bfd-9af543163caa@candelatech.com> (raw)
In-Reply-To: <iwlwifi.20211130131608.ac51d574458c.If197b45c5b31d2fbd254fa12c2d7c736f304d4ae@changeid>
On 11/30/21 3:16 AM, Luca Coelho wrote:
> From: Johannes Berg <johannes.berg@intel.com>
>
> Add more logging in places that affect HT/VHT/HE state, so
> things get easier to debug.
>
> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
> Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
> ---
>
> In v2:
> * removed "if (vht_cap)" in one of the changes. Merge mistake.
>
> net/mac80211/mlme.c | 45 +++++++++++++++++++++++++++++++++------------
> 1 file changed, 33 insertions(+), 12 deletions(-)
>
> diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
> index 54ab0e1ef6ca..666955ef300f 100644
> --- a/net/mac80211/mlme.c
> +++ b/net/mac80211/mlme.c
> @@ -164,12 +164,15 @@ ieee80211_determine_chantype(struct ieee80211_sub_if_data *sdata,
> chandef->freq1_offset = channel->freq_offset;
>
> if (channel->band == NL80211_BAND_6GHZ) {
> - if (!ieee80211_chandef_he_6ghz_oper(sdata, he_oper, chandef))
> + if (!ieee80211_chandef_he_6ghz_oper(sdata, he_oper, chandef)) {
> + mlme_dbg(sdata,
> + "bad 6 GHz operation, disabling HT/VHT/HE\n");
> ret = IEEE80211_STA_DISABLE_HT |
> IEEE80211_STA_DISABLE_VHT |
> IEEE80211_STA_DISABLE_HE;
> - else
> + } else {
> ret = 0;
> + }
> vht_chandef = *chandef;
> goto out;
> } else if (sband->band == NL80211_BAND_S1GHZ) {
> @@ -190,6 +193,7 @@ ieee80211_determine_chantype(struct ieee80211_sub_if_data *sdata,
> ieee80211_apply_htcap_overrides(sdata, &sta_ht_cap);
>
> if (!ht_oper || !sta_ht_cap.ht_supported) {
> + mlme_dbg(sdata, "HT operation missing / HT not supported\n");
In case you re-spin this, I prefer that you not only have text like that above, but
then also explain what is happening, for instance, add: Disabling HT/VHT/HE,
and maybe print out ht_oper and sta_ht_cap.ht_supported so you can see exactly why
it hit this code path.
Similar suggestions for changes below...
Thanks,
Ben
> ret = IEEE80211_STA_DISABLE_HT |
> IEEE80211_STA_DISABLE_VHT |
> IEEE80211_STA_DISABLE_HE;
> @@ -223,6 +227,7 @@ ieee80211_determine_chantype(struct ieee80211_sub_if_data *sdata,
> if (sta_ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40) {
> ieee80211_chandef_ht_oper(ht_oper, chandef);
> } else {
> + mlme_dbg(sdata, "40 MHz not supported\n");
> /* 40 MHz (and 80 MHz) must be supported for VHT */
> ret = IEEE80211_STA_DISABLE_VHT;
> /* also mark 40 MHz disabled */
> @@ -231,6 +236,7 @@ ieee80211_determine_chantype(struct ieee80211_sub_if_data *sdata,
> }
>
> if (!vht_oper || !sband->vht_cap.vht_supported) {
> + mlme_dbg(sdata, "VHT operation missing / VHT not supported\n");
> ret = IEEE80211_STA_DISABLE_VHT;
> goto out;
> }
> @@ -253,7 +259,7 @@ ieee80211_determine_chantype(struct ieee80211_sub_if_data *sdata,
> &vht_chandef)) {
> if (!(ifmgd->flags & IEEE80211_STA_DISABLE_HE))
> sdata_info(sdata,
> - "HE AP VHT information is invalid, disable HE\n");
> + "HE AP VHT information is invalid, disabling HE\n");
> ret = IEEE80211_STA_DISABLE_HE;
> goto out;
> }
> @@ -263,7 +269,7 @@ ieee80211_determine_chantype(struct ieee80211_sub_if_data *sdata,
> &vht_chandef)) {
> if (!(ifmgd->flags & IEEE80211_STA_DISABLE_VHT))
> sdata_info(sdata,
> - "AP VHT information is invalid, disable VHT\n");
> + "AP VHT information is invalid, disabling VHT\n");
> ret = IEEE80211_STA_DISABLE_VHT;
> goto out;
> }
> @@ -271,7 +277,7 @@ ieee80211_determine_chantype(struct ieee80211_sub_if_data *sdata,
> if (!cfg80211_chandef_valid(&vht_chandef)) {
> if (!(ifmgd->flags & IEEE80211_STA_DISABLE_VHT))
> sdata_info(sdata,
> - "AP VHT information is invalid, disable VHT\n");
> + "AP VHT information is invalid, disabling VHT\n");
> ret = IEEE80211_STA_DISABLE_VHT;
> goto out;
> }
> @@ -284,7 +290,7 @@ ieee80211_determine_chantype(struct ieee80211_sub_if_data *sdata,
> if (!cfg80211_chandef_compatible(chandef, &vht_chandef)) {
> if (!(ifmgd->flags & IEEE80211_STA_DISABLE_VHT))
> sdata_info(sdata,
> - "AP VHT information doesn't match HT, disable VHT\n");
> + "AP VHT information doesn't match HT, disabling VHT\n");
> ret = IEEE80211_STA_DISABLE_VHT;
> goto out;
> }
> @@ -5036,19 +5042,23 @@ static int ieee80211_prep_channel(struct ieee80211_sub_if_data *sdata,
>
> /* disable HT/VHT/HE if we don't support them */
> if (!sband->ht_cap.ht_supported && !is_6ghz) {
> + mlme_dbg(sdata, "HT not supported, disabling HT/VHT/HE\n");
> ifmgd->flags |= IEEE80211_STA_DISABLE_HT;
> ifmgd->flags |= IEEE80211_STA_DISABLE_VHT;
> ifmgd->flags |= IEEE80211_STA_DISABLE_HE;
> }
>
> if (!sband->vht_cap.vht_supported && is_5ghz) {
> + mlme_dbg(sdata, "VHT not supported, disabling VHT/HE\n");
> ifmgd->flags |= IEEE80211_STA_DISABLE_VHT;
> ifmgd->flags |= IEEE80211_STA_DISABLE_HE;
> }
>
> if (!ieee80211_get_he_iftype_cap(sband,
> - ieee80211_vif_type_p2p(&sdata->vif)))
> + ieee80211_vif_type_p2p(&sdata->vif))) {
> + mlme_dbg(sdata, "HE not supported, disabling it\n");
> ifmgd->flags |= IEEE80211_STA_DISABLE_HE;
> + }
>
> if (!(ifmgd->flags & IEEE80211_STA_DISABLE_HT) && !is_6ghz) {
> ht_oper = elems->ht_operation;
> @@ -5072,6 +5082,8 @@ static int ieee80211_prep_channel(struct ieee80211_sub_if_data *sdata,
> }
>
> if (!elems->vht_cap_elem) {
> + sdata_info(sdata,
> + "bad VHT capabilities, disabling VHT\n");
> ifmgd->flags |= IEEE80211_STA_DISABLE_VHT;
> vht_oper = NULL;
> }
> @@ -5119,8 +5131,10 @@ static int ieee80211_prep_channel(struct ieee80211_sub_if_data *sdata,
> break;
> }
>
> - if (!have_80mhz)
> + if (!have_80mhz) {
> + sdata_info(sdata, "80 MHz not supported, disabling VHT\n");
> ifmgd->flags |= IEEE80211_STA_DISABLE_VHT;
> + }
>
> if (sband->band == NL80211_BAND_S1GHZ) {
> s1g_oper = elems->s1g_oper;
> @@ -5684,12 +5698,14 @@ int ieee80211_mgd_assoc(struct ieee80211_sub_if_data *sdata,
> else if (!is_6ghz)
> ifmgd->flags |= IEEE80211_STA_DISABLE_HT;
> vht_elem = ieee80211_bss_get_elem(req->bss, WLAN_EID_VHT_CAPABILITY);
> - if (vht_elem && vht_elem->datalen >= sizeof(struct ieee80211_vht_cap))
> + if (vht_elem && vht_elem->datalen >= sizeof(struct ieee80211_vht_cap)) {
> memcpy(&assoc_data->ap_vht_cap, vht_elem->data,
> sizeof(struct ieee80211_vht_cap));
> - else if (is_5ghz)
> + } else if (is_5ghz) {
> + sdata_info(sdata, "VHT capa missing/short, disabling VHT/HE\n");
> ifmgd->flags |= IEEE80211_STA_DISABLE_VHT |
> IEEE80211_STA_DISABLE_HE;
> + }
> rcu_read_unlock();
>
> if (WARN((sdata->vif.driver_flags & IEEE80211_VIF_SUPPORTS_UAPSD) &&
> @@ -5763,16 +5779,21 @@ int ieee80211_mgd_assoc(struct ieee80211_sub_if_data *sdata,
> }
>
> if (req->flags & ASSOC_REQ_DISABLE_HT) {
> + mlme_dbg(sdata, "HT disabled by flag, disabling HT/VHT/HE\n");
> ifmgd->flags |= IEEE80211_STA_DISABLE_HT;
> ifmgd->flags |= IEEE80211_STA_DISABLE_VHT;
> ifmgd->flags |= IEEE80211_STA_DISABLE_HE;
> }
>
> - if (req->flags & ASSOC_REQ_DISABLE_VHT)
> + if (req->flags & ASSOC_REQ_DISABLE_VHT) {
> + mlme_dbg(sdata, "VHT disabled by flag, disabling VHT\n");
> ifmgd->flags |= IEEE80211_STA_DISABLE_VHT;
> + }
>
> - if (req->flags & ASSOC_REQ_DISABLE_HE)
> + if (req->flags & ASSOC_REQ_DISABLE_HE) {
> + mlme_dbg(sdata, "HE disabled by flag, disabling VHT\n");
> ifmgd->flags |= IEEE80211_STA_DISABLE_HE;
> + }
>
> err = ieee80211_prep_connection(sdata, req->bss, true, override);
> if (err)
>
--
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc http://www.candelatech.com
next prev parent reply other threads:[~2021-11-30 15:53 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-29 13:32 [PATCH 00/16] cfg80211/mac80211 patches from our internal tree 2021-11-29 Luca Coelho
2021-11-29 13:32 ` [PATCH 01/16] mac80211: add more HT/VHT/HE state logging Luca Coelho
2021-11-30 11:15 ` Luca Coelho
2021-11-30 11:16 ` [PATCH v2] " Luca Coelho
2021-11-30 15:50 ` Ben Greear [this message]
2021-11-29 13:32 ` [PATCH 02/16] cfg80211: Add support for notifying association comeback Luca Coelho
2021-11-29 13:32 ` [PATCH 03/16] mac80211: Notify cfg80211 about " Luca Coelho
2021-11-29 13:32 ` [PATCH 04/16] cfg80211: Use the HE operation IE to determine a 6GHz BSS channel Luca Coelho
2021-12-02 12:28 ` Luca Coelho
2021-12-02 12:36 ` [PATCH v2] " Luca Coelho
2021-11-29 13:32 ` [PATCH 05/16] [BUGFIX] cfg80211: check fixed size before ieee80211_he_oper_size() Luca Coelho
2021-11-29 13:32 ` [PATCH 06/16] mac80211: introduce channel switch disconnect function Luca Coelho
2021-11-29 13:32 ` [PATCH 07/16] mac80211: mark TX-during-stop for TX in in_reconfig Luca Coelho
2021-11-29 13:32 ` [PATCH 08/16] mac80211: do drv_reconfig_complete() before restarting all Luca Coelho
2021-11-29 13:32 ` [PATCH 09/16] cfg80211: Fix order of enum nl80211_band_iftype_attr documentation Luca Coelho
2021-11-29 13:32 ` [PATCH 10/16] mac80211: update channel context before station state Luca Coelho
2021-11-29 13:32 ` [PATCH 11/16] cfg80211: simplify cfg80211_chandef_valid() Luca Coelho
2021-11-29 13:32 ` [PATCH 12/16] mac80211: Remove a couple of obsolete TODO Luca Coelho
2021-11-29 13:32 ` [PATCH 13/16] mac80211: Fix the size used for building probe request Luca Coelho
2021-11-29 13:32 ` [PATCH 14/16] mac80211: fix lookup when adding AddBA extension element Luca Coelho
2021-11-29 13:32 ` [PATCH 15/16] mac80211: agg-tx: don't schedule_and_wake_txq() under sta->lock Luca Coelho
2021-11-29 13:54 ` Toke Høiland-Jørgensen
2021-11-30 11:12 ` Luca Coelho
2021-11-30 11:32 ` Toke Høiland-Jørgensen
2021-11-30 11:52 ` Johannes Berg
2021-11-30 11:56 ` Toke Høiland-Jørgensen
2021-11-30 11:57 ` Luca Coelho
2021-11-30 12:08 ` Johannes Berg
2021-12-02 13:26 ` [PATCH v2] " Luca Coelho
2021-11-29 13:32 ` [PATCH 16/16] cfg80211: Acquire wiphy mutex on regulatory work Luca Coelho
2021-12-01 13:47 ` Kalle Valo
2021-12-02 13:27 ` Luca Coelho
2021-12-02 13:28 ` [PATCH v2] " Luca Coelho
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=30293d97-c0bb-1902-7bfd-9af543163caa@candelatech.com \
--to=greearb@candelatech.com \
--cc=johannes@sipsolutions.net \
--cc=linux-wireless@vger.kernel.org \
--cc=luca@coelho.fi \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).