From patchwork Tue Nov 29 19:04:49 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bitterblue Smith X-Patchwork-Id: 13058999 X-Patchwork-Delegate: kvalo@adurom.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 75397C4332F for ; Tue, 29 Nov 2022 19:04:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236181AbiK2TE5 (ORCPT ); Tue, 29 Nov 2022 14:04:57 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44456 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235857AbiK2TEy (ORCPT ); Tue, 29 Nov 2022 14:04:54 -0500 Received: from mail-ed1-x535.google.com (mail-ed1-x535.google.com [IPv6:2a00:1450:4864:20::535]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1E9E228F for ; Tue, 29 Nov 2022 11:04:53 -0800 (PST) Received: by mail-ed1-x535.google.com with SMTP id z92so10642234ede.1 for ; Tue, 29 Nov 2022 11:04:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:subject:from:cc:to:content-language :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=Dto71+1AW6DPHc08fRXPWafxvoj/KBDVmSCOIv0eqEE=; b=Gp6KT7371ApX7OM8Bj9XYsG2xfNtUFKnZuWAFNG2ZqbyrLFF5WbKALs7jNVsnQPGG0 uBN5m+cOFF2SBev/8V4qbSmd8svLmFZgTOCsBnCTTr7YIccUvLGviJBX23eTgGfpDNk5 Ab6ZLJqwyVwQUnfmiQPxu3s7La0AvZRy6IOBlrIX7HAkJSH4nJ1vujxVcX4lcXAC7dDG /4zxWLd1pKrG37h5TErd2EJrhixeoMqOk7J9kgmXdlQui4zFnQEHUbHniV4go8djDOcS gXnPTZkxZGJbI+2b2dMNe4KX1VMGxjrqqPJdtXYssj0KTY72tjOnlXpkfKefeP2tqGsi rcCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:subject:from:cc:to:content-language :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Dto71+1AW6DPHc08fRXPWafxvoj/KBDVmSCOIv0eqEE=; b=rkdVsLEn60VPImrqazFL/tPwJgqDEc37asY0+oQ5A+rdmeDFoDQ99z2MomA6DAne0g Powd3sUacHW8S9k96TsW42qunbpDrA+zCaUmHdRH6GX2VMnUtzPzOt9dXYoelYVkGcXt OBncuCCIUU7J69bW009jLc2h/3Olm4/41fHIPwuw2wti9wDLKZAwzHUK5m6L/I7lPBkO 7sVmsjZsf7Sb4CpteyOmWfUJCz3HR+vDvc+8k+YC8rmWUpVUq6n8nkjKeiVPK4DpI8Ej YdhAv05XbAjbt3g9Y/GrR2bJ4Zr8WluXS7GWjTRshAvT9gwyueCVgiESdWN76bkCKJjh 6nlw== X-Gm-Message-State: ANoB5pkuBlsK+gy1vujrJDbT++0Jf6126h2LhdXEC64eH8JhAU0HxGM8 7i86ON3HqXjMrmXU2rvT3kDDu5dmnoQ= X-Google-Smtp-Source: AA0mqf4WZx7V1saNaCJCpppto2OXcZy5IprBBJcMIDCtYEou5BpWyYmi4Pv3MTmMMzRu3F9nwvCIQg== X-Received: by 2002:a50:fc02:0:b0:46b:7ba0:dace with SMTP id i2-20020a50fc02000000b0046b7ba0dacemr4384422edr.243.1669748691585; Tue, 29 Nov 2022 11:04:51 -0800 (PST) Received: from [192.168.1.50] ([79.119.240.254]) by smtp.gmail.com with ESMTPSA id f19-20020a056402005300b0046b94e67b4bsm705591edu.86.2022.11.29.11.04.50 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 29 Nov 2022 11:04:51 -0800 (PST) Message-ID: Date: Tue, 29 Nov 2022 21:04:49 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.3.3 Content-Language: en-US To: "linux-wireless@vger.kernel.org" Cc: Jes Sorensen , Ping-Ke Shih From: Bitterblue Smith Subject: [PATCH v3 1/3] wifi: rtl8xxxu: Add __packed to struct rtl8723bu_c2h Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org This struct is used to access a sequence of bytes received from the wifi chip. It must not have any padding bytes between the members. This doesn't change anything on my system, possibly because currently none of the members need more than byte alignment. Fixes: b2b43b7837ba ("rtl8xxxu: Initial functionality to handle C2H events for 8723bu") Signed-off-by: Bitterblue Smith --- v3: - No change. v2: - Patch is new in v2. --- drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h index 136992f0200c..d26df4095da0 100644 --- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h +++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h @@ -1240,7 +1240,7 @@ struct rtl8723bu_c2h { u8 bw; } __packed ra_report; }; -}; +} __packed; struct rtl8xxxu_fileops; From patchwork Tue Nov 29 19:06:21 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bitterblue Smith X-Patchwork-Id: 13059000 X-Patchwork-Delegate: kvalo@adurom.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9924CC433FE for ; Tue, 29 Nov 2022 19:06:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236154AbiK2TG0 (ORCPT ); Tue, 29 Nov 2022 14:06:26 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44812 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235857AbiK2TGZ (ORCPT ); Tue, 29 Nov 2022 14:06:25 -0500 Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com [IPv6:2a00:1450:4864:20::632]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2181B28F for ; Tue, 29 Nov 2022 11:06:24 -0800 (PST) Received: by mail-ej1-x632.google.com with SMTP id n20so36210513ejh.0 for ; Tue, 29 Nov 2022 11:06:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:in-reply-to:references:cc:to:from :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=PIsv3FNKXbmn1ZiV9cEXAumjRE9U/5PO6zKLBJYdikI=; b=Pcr29i9RvOKqzR93gDb4J2t7XoUP4KUqWPdq8fnGPPoiF6+2NA6iUFLOdceHllqcNT DWiWA5YCIl2T11WeBbqX0iRXlCcNpOq8YXJEpJUdP5UldofSh7fKU4GA2hiPIJYb2t73 YMONHcqYFm1fylX+G1qzPgkN0iM1u+Cm7vuzJQ+CJsPtFGqjQzp5pxBeDODOQRObacU5 p2BD3l7jBXbBNCOrtpWRp31CZ5FABQnc0v5GcYagwDtGtXGlVthnAgJ8MEmleBaBJ+XY tMHswWPLU7gPIdQnN2TeP0eewMz48PwsbDtac0QqC7jTryWlHbIAyyZtrCh4mdS49xlw hejg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:references:cc:to:from :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=PIsv3FNKXbmn1ZiV9cEXAumjRE9U/5PO6zKLBJYdikI=; b=HghXMADdeW59PjNILfcBKH9dED6Aon0J1jcR63SM6W4IJq1UfWxpFiF8Y/iEI5danB mX627lkZMpQZwpWETH1x+HXEk7HfQWIsjAqOmKbbzDb2Op8pSYYmcCGfVz7ZqydhTacS n54jz8cpD9XmNgdlfQOjcKA6m5Kg49uRE4rV+6fvfe7GzMJN8b48xqV9HRD9lFwgINjF ArdgkgrHIlHQnd9N5LUUPrhAMhR9j1N7e/46xUm/V8LktcCiAgSd5B5GdtSkq7Hs/8Ba QKpGwU/JzsR9E3GnCEtK8NhBaJoxyR63KqNwHdTq4Ngw5YAym2kWqtlq51NkDp0I8DZ0 y/9w== X-Gm-Message-State: ANoB5pm5etT+nRA2Y4Vaz7iTDEYjDJNGhh+yWmXKkMq3pu5fcsm4d3tg eAc7N4bId+J44TQBVsR7KAjUCOmS9rE= X-Google-Smtp-Source: AA0mqf5NO2UsllptvQc34NkE75X/TRdWfqkJF7NploSKFLd/f27hmvxZhU4O+EYOgG473/NircaHog== X-Received: by 2002:a17:906:8994:b0:7ae:ea4:583c with SMTP id gg20-20020a170906899400b007ae0ea4583cmr49103337ejc.587.1669748782705; Tue, 29 Nov 2022 11:06:22 -0800 (PST) Received: from [192.168.1.50] ([79.119.240.254]) by smtp.gmail.com with ESMTPSA id b15-20020a17090630cf00b007a9c3831409sm6415447ejb.137.2022.11.29.11.06.21 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 29 Nov 2022 11:06:22 -0800 (PST) Message-ID: Date: Tue, 29 Nov 2022 21:06:21 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.3.3 Subject: [PATCH v3 2/3] wifi: rtl8xxxu: Fix the channel width reporting Content-Language: en-US From: Bitterblue Smith To: "linux-wireless@vger.kernel.org" Cc: Jes Sorensen , Ping-Ke Shih References: In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org 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 --- v3: - Don't assume bw will always be 1 byte. v2: - Eliminate the magic numbers. --- drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c index 28f136064297..9799bc5ed60a 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 >= offsetof(typeof(*c2h), ra_report.bw) + + sizeof(c2h->ra_report.bw)) { + if (c2h->ra_report.bw == RTL8XXXU_CHANNEL_WIDTH_40) + bw = RATE_INFO_BW_40; + else + bw = RATE_INFO_BW_20; + rarpt->txrate.bw = bw; + } } bit_rate = cfg80211_calculate_bitrate(&rarpt->txrate); rarpt->bit_rate = bit_rate; From patchwork Tue Nov 29 19:07:14 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bitterblue Smith X-Patchwork-Id: 13059001 X-Patchwork-Delegate: kvalo@adurom.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4726EC433FE for ; Tue, 29 Nov 2022 19:07:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236232AbiK2THU (ORCPT ); Tue, 29 Nov 2022 14:07:20 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44910 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235854AbiK2THT (ORCPT ); Tue, 29 Nov 2022 14:07:19 -0500 Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com [IPv6:2a00:1450:4864:20::62a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 16F60FFC for ; Tue, 29 Nov 2022 11:07:18 -0800 (PST) Received: by mail-ej1-x62a.google.com with SMTP id e27so36124868ejc.12 for ; Tue, 29 Nov 2022 11:07:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:in-reply-to:references:cc:to:from :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=kuPtq8pzsW6ybRpgSRd3GrQ5rtgTcgbSUM51JlMdaVs=; b=WypPtjviVZBij8WJZ+sLnmv/eGAFe3HE1L7DoY7y0N8RGGVx5iTHA7ozupJeR5NXB+ Z1iYoR+a/Ib3UXmXho6BxGh/DWDB8ebDUUcvn10kdWeKqCY6x+0UFAvFzjCNtWbXdMd5 BcsmML5ncH8MmN0vXtzQKpz2q6ASQkmZqEDTCOmVWpFHkXX8VeiPSMaQu6iPK2IE3Bib CNsG/+S9p+QqlHDx+UXHzcAQUwo9afTgpXZO1v76pBxwSNqYCZtpzeaZFurO91e9z3Iv FTIGb8MZrDCU4f60xdBF/ewKbbRItqmGcGEpN0iIXd0JKAsAwJxjC/JAeMbRuarbqSFK YkXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:references:cc:to:from :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=kuPtq8pzsW6ybRpgSRd3GrQ5rtgTcgbSUM51JlMdaVs=; b=gYq+FawT1X2quCOw+FFPIqS6rI/6ON20XqkzDSQ28w0ltURSo424kDY5pjGWQ0vQ8O Yvcl6ZOobaI1tL/11OKctO5iv5lIri3zLzwd4X5ZeOr5T2k90eUWCfaKbDhJ+dhF9n4A A/3uODWLjbELVyEum3PpFq+3IUrB+ugFOSYMt6JgJ+xCalEb2ygLMQLD2PyuNeOhc+33 wJPAnzTke7tadVv8PT2yEQTrwMKrY/ZNKjAd+C8fn2RFVWCYW+oeATXxvxZ/P32MgGP7 Z2hQBS1qIMRkY2lgkznAHuGGJSfbGGetLxSHFvsDyDlQutJck6ZrN1mOLLjW1BrKfMep nvZw== X-Gm-Message-State: ANoB5plq0P5xhj5Kdqd2/wq0CS1MO+tDdX5+TXUyNBVPfV4ds0KzWQlp 0x2tct/SCq8KiILxfgCnveWFv6laUSM= X-Google-Smtp-Source: AA0mqf5739ZuZ2etVl340+Y38/aloRZm7Yj1Etf26ZZAr6HDgKhXo5/BlsjwNnu2zYGUsHRSUyfmdw== X-Received: by 2002:a17:907:cf92:b0:7bf:7a65:b242 with SMTP id ux18-20020a170907cf9200b007bf7a65b242mr10448870ejc.356.1669748836502; Tue, 29 Nov 2022 11:07:16 -0800 (PST) Received: from [192.168.1.50] ([79.119.240.254]) by smtp.gmail.com with ESMTPSA id 13-20020a170906328d00b007b27fc3a1ffsm4636449ejw.121.2022.11.29.11.07.15 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 29 Nov 2022 11:07:16 -0800 (PST) Message-ID: <6321862a-3362-95b9-bbd1-be0d5fb97f7f@gmail.com> Date: Tue, 29 Nov 2022 21:07:14 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.3.3 Subject: [PATCH v3 3/3] wifi: rtl8xxxu: Introduce rtl8xxxu_update_ra_report Content-Language: en-US From: Bitterblue Smith To: "linux-wireless@vger.kernel.org" Cc: Jes Sorensen , Ping-Ke Shih References: In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org The ra_report struct is used for reporting the TX rate via sta_statistics. The code which fills it out is duplicated in two places, and the RTL8188EU will need it in a third place. Move this code into a new function rtl8xxxu_update_ra_report. Signed-off-by: Bitterblue Smith --- v3: - No change. v2: - Compare against DESC_RATE_54M instead of DESC_RATE_MCS0. --- .../wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 107 ++++++++---------- 1 file changed, 46 insertions(+), 61 deletions(-) diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c index 9799bc5ed60a..7580ec8a5562 100644 --- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c +++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c @@ -4598,6 +4598,32 @@ static void rtl8xxxu_set_aifs(struct rtl8xxxu_priv *priv, u8 slot_time) } } +static void rtl8xxxu_update_ra_report(struct rtl8xxxu_ra_report *rarpt, + u8 rate, u8 sgi, u8 bw) +{ + u8 mcs, nss; + + rarpt->txrate.flags = 0; + + if (rate <= DESC_RATE_54M) { + rarpt->txrate.legacy = rtl8xxxu_legacy_ratetable[rate].bitrate; + } else { + rtl8xxxu_desc_to_mcsrate(rate, &mcs, &nss); + rarpt->txrate.flags |= RATE_INFO_FLAGS_MCS; + + rarpt->txrate.mcs = mcs; + rarpt->txrate.nss = nss; + + if (sgi) + rarpt->txrate.flags |= RATE_INFO_FLAGS_SHORT_GI; + + rarpt->txrate.bw = bw; + } + + rarpt->bit_rate = cfg80211_calculate_bitrate(&rarpt->txrate); + rarpt->desc_rate = rate; +} + static void rtl8xxxu_bss_info_changed(struct ieee80211_hw *hw, struct ieee80211_vif *vif, struct ieee80211_bss_conf *bss_conf, u64 changed) @@ -4620,9 +4646,7 @@ rtl8xxxu_bss_info_changed(struct ieee80211_hw *hw, struct ieee80211_vif *vif, u32 ramask; int sgi = 0; u8 highest_rate; - u8 mcs = 0, nss = 0; - u32 bit_rate; - + u8 bw; rcu_read_lock(); sta = ieee80211_find_sta(vif, bss_conf->bssid); @@ -4647,37 +4671,19 @@ rtl8xxxu_bss_info_changed(struct ieee80211_hw *hw, struct ieee80211_vif *vif, sgi = 1; highest_rate = fls(ramask) - 1; - if (highest_rate < DESC_RATE_MCS0) { - rarpt->txrate.legacy = - rtl8xxxu_legacy_ratetable[highest_rate].bitrate; - } else { - rtl8xxxu_desc_to_mcsrate(highest_rate, - &mcs, &nss); - rarpt->txrate.flags |= RATE_INFO_FLAGS_MCS; - - rarpt->txrate.mcs = mcs; - rarpt->txrate.nss = nss; - - if (sgi) { - rarpt->txrate.flags |= - RATE_INFO_FLAGS_SHORT_GI; - } - - if (rtl8xxxu_ht40_2g && - (sta->deflink.ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40)) - rarpt->txrate.bw = RATE_INFO_BW_40; - else - rarpt->txrate.bw = RATE_INFO_BW_20; - } + if (rtl8xxxu_ht40_2g && + (sta->deflink.ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40)) + bw = RATE_INFO_BW_40; + else + bw = RATE_INFO_BW_20; rcu_read_unlock(); - bit_rate = cfg80211_calculate_bitrate(&rarpt->txrate); - rarpt->bit_rate = bit_rate; - rarpt->desc_rate = highest_rate; + + rtl8xxxu_update_ra_report(rarpt, highest_rate, sgi, bw); priv->vif = vif; priv->rssi_level = RTL8XXXU_RATR_STA_INIT; - priv->fops->update_rate_mask(priv, ramask, 0, sgi, rarpt->txrate.bw == RATE_INFO_BW_40); + priv->fops->update_rate_mask(priv, ramask, 0, sgi, bw == RATE_INFO_BW_40); rtl8xxxu_write8(priv, REG_BCN_MAX_ERR, 0xff); @@ -5538,9 +5544,7 @@ static void rtl8xxxu_c2hcmd_callback(struct work_struct *work) u8 bt_info = 0; struct rtl8xxxu_btcoex *btcoex; struct rtl8xxxu_ra_report *rarpt; - u8 rate, sgi, bw; - u32 bit_rate; - u8 mcs = 0, nss = 0; + u8 bw; priv = container_of(work, struct rtl8xxxu_priv, c2hcmd_work); btcoex = &priv->bt_coex; @@ -5566,37 +5570,18 @@ static void rtl8xxxu_c2hcmd_callback(struct work_struct *work) rtl8723bu_handle_bt_info(priv); break; case C2H_8723B_RA_REPORT: - rarpt->txrate.flags = 0; - rate = c2h->ra_report.rate; - sgi = c2h->ra_report.sgi; - - if (rate < DESC_RATE_MCS0) { - rarpt->txrate.legacy = - rtl8xxxu_legacy_ratetable[rate].bitrate; - } else { - rtl8xxxu_desc_to_mcsrate(rate, &mcs, &nss); - rarpt->txrate.flags |= RATE_INFO_FLAGS_MCS; + bw = rarpt->txrate.bw; - rarpt->txrate.mcs = mcs; - rarpt->txrate.nss = nss; - - if (sgi) { - rarpt->txrate.flags |= - RATE_INFO_FLAGS_SHORT_GI; - } - - if (skb->len >= offsetof(typeof(*c2h), ra_report.bw) + - sizeof(c2h->ra_report.bw)) { - if (c2h->ra_report.bw == RTL8XXXU_CHANNEL_WIDTH_40) - bw = RATE_INFO_BW_40; - else - bw = RATE_INFO_BW_20; - rarpt->txrate.bw = bw; - } + if (skb->len >= offsetof(typeof(*c2h), ra_report.bw) + + sizeof(c2h->ra_report.bw)) { + if (c2h->ra_report.bw == RTL8XXXU_CHANNEL_WIDTH_40) + bw = RATE_INFO_BW_40; + else + bw = RATE_INFO_BW_20; } - bit_rate = cfg80211_calculate_bitrate(&rarpt->txrate); - rarpt->bit_rate = bit_rate; - rarpt->desc_rate = rate; + + rtl8xxxu_update_ra_report(rarpt, c2h->ra_report.rate, + c2h->ra_report.sgi, bw); break; default: break;