mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Hector Martin <marcan@marcan.st>
To: Arend van Spriel <arend.vanspriel@broadcom.com>,
	Daniel Berlin <dberlin@dberlin.org>,
	Arend van Spriel <aspriel@gmail.com>,
	Franky Lin <franky.lin@broadcom.com>,
	Hante Meuleman <hante.meuleman@broadcom.com>
Cc: linux-wireless@vger.kernel.org,
	brcm80211-dev-list.pdl@broadcom.com,
	SHA-cyfmac-dev-list@infineon.com, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 4/5] wifi: brcmfmac: Support bss_info up to v112
Date: Tue, 7 Nov 2023 20:11:16 +0900	[thread overview]
Message-ID: <26a081e6-032a-b58d-851c-eaac745e7c87@marcan.st> (raw)
In-Reply-To: <b907f696-c966-54ef-3267-12833c6f5d91@broadcom.com>

On 20/10/2023 18.59, Arend van Spriel wrote:
> On 10/19/2023 3:42 AM, Daniel Berlin wrote:
>> From: Hector Martin <marcan@marcan.st>
>>
>> The structures are compatible and just add fields, so we can just treat
>> it as always v112. If we start using new fields, that will have to be
>> gated on the version.
> 
> Seems EHT is creeping in here.
> 
> Having doubts about compatibility statement (see below)...
> 
>> Signed-off-by: Hector Martin <marcan@marcan.st>
>> ---
>>   .../broadcom/brcm80211/brcmfmac/cfg80211.c    |  5 ++-
>>   .../broadcom/brcm80211/brcmfmac/fwil_types.h  | 37 +++++++++++++++++--
>>   2 files changed, 36 insertions(+), 6 deletions(-)
>>
>> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
>> index 4cf728368892..bc8355d7f9b5 100644
>> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
>> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
>> @@ -3496,8 +3496,9 @@ static s32 brcmf_inform_bss(struct brcmf_cfg80211_info *cfg)
>>   
>>   	bss_list = (struct brcmf_scan_results *)cfg->escan_info.escan_buf;
>>   	if (bss_list->count != 0 &&
>> -	    bss_list->version != BRCMF_BSS_INFO_VERSION) {
>> -		bphy_err(drvr, "Version %d != WL_BSS_INFO_VERSION\n",
>> +	    (bss_list->version < BRCMF_BSS_INFO_MIN_VERSION ||
>> +	    bss_list->version > BRCMF_BSS_INFO_MAX_VERSION)) {
>> +		bphy_err(drvr, "BSS info version %d unsupported\n",
>>   			 bss_list->version);
>>   		return -EOPNOTSUPP;
>>   	}
>> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil_types.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil_types.h
>> index 1077e6f1d61a..81f2d77cb004 100644
>> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil_types.h
>> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil_types.h
>> @@ -18,7 +18,8 @@
>>   #define BRCMF_ARP_OL_HOST_AUTO_REPLY	0x00000004
>>   #define BRCMF_ARP_OL_PEER_AUTO_REPLY	0x00000008
>>   
>> -#define	BRCMF_BSS_INFO_VERSION	109 /* curr ver of brcmf_bss_info_le struct */
>> +#define	BRCMF_BSS_INFO_MIN_VERSION	109 /* min ver of brcmf_bss_info_le struct */
>> +#define	BRCMF_BSS_INFO_MAX_VERSION	112 /* max ver of brcmf_bss_info_le struct */
>>   #define BRCMF_BSS_RSSI_ON_CHANNEL	0x0004
>>   
>>   #define BRCMF_STA_BRCM			0x00000001	/* Running a Broadcom driver */
>> @@ -323,28 +324,56 @@ struct brcmf_bss_info_le {
>>   	__le16 capability;	/* Capability information */
>>   	u8 SSID_len;
>>   	u8 SSID[32];
>> +	u8 bcnflags;		/* additional flags w.r.t. beacon */
> 
> Ehm. Coming back to your statement "structures are compatible and just 
> add fields". How are they compatible? You now treat v109 struct as v112 
> so fields below are shifted because of bcnflags. So you read invalid 
> information. This does not fly or I am missing something here.

bcmflags was previously an implied padding byte. If you actually check
the offsets of the subsequent fields, you'll see they haven't changed.
In fact this was added at some point in the past and just missing here,
and is a general case of "padding bytes were not explicitly specified"
which is arguably an anti-pattern and should never have been the case.

Had all the padding been specified correctly from the get go, it would
have been clear that this field was taking over an existing padding
byte, not adding anything nor shifting the offsets of subsequent fields.

> 
>>   	struct {
>>   		__le32 count;   /* # rates in this set */
>>   		u8 rates[16]; /* rates in 500kbps units w/hi bit set if basic */
>>   	} rateset;		/* supported rates */
>>   	__le16 chanspec;	/* chanspec for bss */
>>   	__le16 atim_window;	/* units are Kusec */
> 
> [...]

- Hector


  parent reply	other threads:[~2023-11-07 11:11 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <cover.1697650207.git.dberlin@dberlin.org>
     [not found] ` <0b95944fcf047b3ec83cecb0c65ca24de43810fd.1697650207.git.dberlin@dberlin.org>
2023-10-20  9:57   ` [PATCH 1/5] [brcmfmac] Add support for encoding/decoding 6g chanspecs Arend van Spriel
2023-10-20 16:36     ` Daniel Berlin
2023-10-20 21:46     ` Jeff Johnson
2023-10-21 18:27       ` Arend van Spriel
     [not found] ` <52c993fd93e13ac015be935a5284294c9a74ea8e.1697650207.git.dberlin@dberlin.org>
2023-10-20  9:58   ` [PATCH 2/5] [brcmfmac] Add support for 6G bands Arend van Spriel
2023-10-20 16:35     ` Daniel Berlin
2023-10-20 18:37       ` Arend van Spriel
2023-10-23 11:41       ` Daniel Berlin
2023-10-23 18:06         ` Arend Van Spriel
2023-10-23 18:09           ` Arend Van Spriel
     [not found] ` <9bb36bcc0dbbbe6f991be30ec404b6e5197238ac.1697650207.git.dberlin@dberlin.org>
2023-10-20  9:58   ` [PATCH 3/5] wifi: brcmfmac: Add support for SCAN_V3 Arend van Spriel
     [not found] ` <079882bf4a7c026547ecf8ad50a2b7a49ade7130.1697650207.git.dberlin@dberlin.org>
2023-10-20  9:59   ` [PATCH 4/5] wifi: brcmfmac: Support bss_info up to v112 Arend van Spriel
2023-10-20 17:31     ` Daniel Berlin
2023-10-31 14:04       ` Daniel Berlin
2023-10-31 16:27         ` Arend Van Spriel
2023-11-07 11:11     ` Hector Martin [this message]
2023-11-07 11:51       ` Arend van Spriel
2023-11-07 12:00         ` Daniel Berlin
2023-11-07 19:28           ` Arend van Spriel
     [not found] ` <791863a231dca48234a3468b299d0bc71a85b6b0.1697650207.git.dberlin@dberlin.org>
2023-10-20  9:59   ` [PATCH 5/5] [brcmfmac] Add remaining support for 6G by supporting new scan structures Arend van Spriel

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=26a081e6-032a-b58d-851c-eaac745e7c87@marcan.st \
    --to=marcan@marcan.st \
    --cc=SHA-cyfmac-dev-list@infineon.com \
    --cc=arend.vanspriel@broadcom.com \
    --cc=aspriel@gmail.com \
    --cc=brcm80211-dev-list.pdl@broadcom.com \
    --cc=dberlin@dberlin.org \
    --cc=franky.lin@broadcom.com \
    --cc=hante.meuleman@broadcom.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    /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

all inboxes | Powered by JetHome®