All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
To: Ping-Ke Shih <pkshih@realtek.com>,
	"linux-wireless@vger.kernel.org" <linux-wireless@vger.kernel.org>
Cc: Jes Sorensen <Jes.Sorensen@gmail.com>
Subject: Re: [PATCH v2 2/3] wifi: rtl8xxxu: Fix the channel width reporting
Date: Tue, 29 Nov 2022 16:18:41 +0200	[thread overview]
Message-ID: <bbb288a9-c957-76ce-e81a-cb20656ca241@gmail.com> (raw)
In-Reply-To: <c18a1ea252c340b8a876a62bc735c19e@realtek.com>

On 29/11/2022 03:22, Ping-Ke Shih wrote:
> 
> 
>> -----Original Message-----
>> From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
>> Sent: Tuesday, November 29, 2022 3:30 AM
>> To: linux-wireless@vger.kernel.org
>> Cc: Jes Sorensen <Jes.Sorensen@gmail.com>; Ping-Ke Shih <pkshih@realtek.com>
>> Subject: [PATCH v2 2/3] wifi: rtl8xxxu: Fix the channel width reporting
>>
>> The gen 2 chips RTL8192EU and RTL8188FU periodically send the driver
>> reports about the TX rate, and the driver passes these reports to
>> sta_statistics. The reports from RTL8192EU may or may not include the
>> channel width. The reports from RTL8188FU do not include it.
>>
>> Only access the c2h->ra_report.bw field if the report (skb) is big
>> enough.
>>
>> The other problem fixed here is that the code was actually never
>> changing the channel width initially reported by
>> rtl8xxxu_bss_info_changed because the value of RATE_INFO_BW_20 is 0.
>>
>> Fixes: 0985d3a410ac ("rtl8xxxu: Feed current txrate information for mac80211")
>> Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
>> ---
>> v2:
>>  - Eliminate the magic numbers.
>> ---
>>  drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h      |  2 ++
>>  drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 11 ++++++++---
>>  2 files changed, 10 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
>> b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
>> index d26df4095da0..9be53e0f25cc 100644
>> --- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
>> +++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h
>> @@ -1187,6 +1187,8 @@ enum rtl8xxxu_bw_mode {
>>  	RTL8XXXU_CHANNEL_WIDTH_MAX = 5,
>>  };
>>
>> +#define RTL8XXXU_C2H_HDR_LEN	2 /* id and seq */
>> +
>>  struct rtl8723bu_c2h {
>>  	u8 id;
>>  	u8 seq;
>> diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
>> b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
>> index 28f136064297..352779fe4b78 100644
>> --- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
>> +++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
>> @@ -5569,7 +5569,6 @@ static void rtl8xxxu_c2hcmd_callback(struct work_struct *work)
>>  			rarpt->txrate.flags = 0;
>>  			rate = c2h->ra_report.rate;
>>  			sgi = c2h->ra_report.sgi;
>> -			bw = c2h->ra_report.bw;
>>
>>  			if (rate < DESC_RATE_MCS0) {
>>  				rarpt->txrate.legacy =
>> @@ -5586,8 +5585,14 @@ static void rtl8xxxu_c2hcmd_callback(struct work_struct *work)
>>  						RATE_INFO_FLAGS_SHORT_GI;
>>  				}
>>
>> -				if (bw == RATE_INFO_BW_20)
>> -					rarpt->txrate.bw |= RATE_INFO_BW_20;
>> +				if (skb->len > RTL8XXXU_C2H_HDR_LEN +
>> +					       offsetof(typeof(c2h->ra_report), bw)) {
> 
> I think this is not very intuitive, because this logic is correct only if 'bw' is u8.
> 
> Then, this option may be not bad:
> if (skb->len >= RTL8XXXU_C2H_HDR_LEN + offsetof(typeof(c2h->ra_report), bw) + sizeof(c2h->ra_report.bw))
> 
> or 
> Not need RTL8XXXU_C2H_HDR_LEN. Just use offsetof() to calculate: 
> if (skb->len >= offsetof(typeof(*c2h), ra_report.bw) + sizeof(c2h->ra_report.bw))
> 
Nice! I didn't know offsetof can do that.


  reply	other threads:[~2022-11-29 14:21 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-28 19:27 [PATCH v2 1/3] wifi: rtl8xxxu: Add __packed to struct rtl8723bu_c2h Bitterblue Smith
2022-11-28 19:30 ` [PATCH v2 2/3] wifi: rtl8xxxu: Fix the channel width reporting Bitterblue Smith
2022-11-29  1:22   ` Ping-Ke Shih
2022-11-29 14:18     ` Bitterblue Smith [this message]
2022-11-28 19:31 ` [PATCH v2 3/3] wifi: rtl8xxxu: Introduce rtl8xxxu_update_ra_report Bitterblue Smith

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=bbb288a9-c957-76ce-e81a-cb20656ca241@gmail.com \
    --to=rtl8821cerfe2@gmail.com \
    --cc=Jes.Sorensen@gmail.com \
    --cc=linux-wireless@vger.kernel.org \
    --cc=pkshih@realtek.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.