From patchwork Thu Dec 1 14:13:57 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bitterblue Smith X-Patchwork-Id: 630182 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 89CBDC43217 for ; Thu, 1 Dec 2022 14:14:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231360AbiLAOOC (ORCPT ); Thu, 1 Dec 2022 09:14:02 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57972 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231152AbiLAOOA (ORCPT ); Thu, 1 Dec 2022 09:14:00 -0500 Received: from mail-ej1-x631.google.com (mail-ej1-x631.google.com [IPv6:2a00:1450:4864:20::631]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C853DBD89D for ; Thu, 1 Dec 2022 06:13:59 -0800 (PST) Received: by mail-ej1-x631.google.com with SMTP id bj12so4451495ejb.13 for ; Thu, 01 Dec 2022 06:13:59 -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=gP9wXMR0shhgXMeuLo4ZgWYfP0ciEq02yuGTKP8ReXo=; b=Eajf0z2hPEqJ+zN15jWVzf010FduhiZ0wCbmXwGTXicF/sFeygvLB1qq6yZuRffBs0 wL82qhpYL3Ya0y9M/HbqE1VBqeY4zMxJH0Uj8ArU4DqxRr11nDxF2WH8dGWpfMQWCnJV gj3gsVeFeK+68hjMQaNGzd49q9vE/EtEUBd8LTF3vfCrtS8yZCAE4evEhd+6MBrTr1AQ GGZ+iJI38Vx1ggLTYDxo0SKdOgG+JspIo2QeSCc7AdmfU/EtTfJSLun3WCcEcPcF5pfs NBMctSrryZmUD+dl4NVeRLX0YYFRBV5YxcRryatjRKb4FpaZe51RyA7XcOefo+F50RGc aOnA== 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=gP9wXMR0shhgXMeuLo4ZgWYfP0ciEq02yuGTKP8ReXo=; b=PrRZQz3PJAgMoVKme/RAw8XaFJshqB/vcHCo0hw4GYSn8CBr0r6bHKMdlJw5FdFKrZ mHNgoxhyJThI6o7pNZLzf6WK1HBcvQXyYMHeky5/DY5obeSlk0DUp+VFd97u4Iu7Lu9k zzCFi//fW63vnS+bMhZPX+vg5XB0MpyVYvzxEa0fA+zbMMDMB5VjB3YBfesVixjJ0OH7 UUjlEIqvEBjds/8buoD+90nsEkfUE6B+ck64lTkHAs0npkStR3ZMbuCOCHxewjN88jNP TDVtfeJD6PFCHC+CLTtjQb2kAqTuQ8xytll9boittON53PCs9zvqgywCnYrC5Dl+AQxf Rcuw== X-Gm-Message-State: ANoB5plFALSlJZ3uiO3deOUyiAjaf/0muuuGSgCFOfNWIvolCMoeWexO R3ZGS5XzQhg/+f+IA4dG2Zu8Q99bdM8= X-Google-Smtp-Source: AA0mqf62d240L3Q3vQoueeVntlcKaynDcvO9nJ5mj1fdJBtnsKywlbvveRf7CrB1DxfU/Fo9npXwjg== X-Received: by 2002:a17:906:5a71:b0:7c0:b882:7ea with SMTP id my49-20020a1709065a7100b007c0b88207eamr1005137ejc.768.1669904038403; Thu, 01 Dec 2022 06:13:58 -0800 (PST) Received: from [192.168.1.50] ([79.119.240.254]) by smtp.gmail.com with ESMTPSA id i15-20020a170906264f00b007aa239cf4d9sm1822530ejc.89.2022.12.01.06.13.57 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 01 Dec 2022 06:13:58 -0800 (PST) Message-ID: <1a270918-da22-ff5f-29fc-7855f740c5ba@gmail.com> Date: Thu, 1 Dec 2022 16:13:57 +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 v4 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 Reviewed-by: Ping-Ke Shih Reviewed-by: Ping-Ke Shih --- v4: - No change. 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 Thu Dec 1 14:15:08 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bitterblue Smith X-Patchwork-Id: 630181 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 A55BEC43217 for ; Thu, 1 Dec 2022 14:15:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231586AbiLAOPN (ORCPT ); Thu, 1 Dec 2022 09:15:13 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58570 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231324AbiLAOPM (ORCPT ); Thu, 1 Dec 2022 09:15:12 -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 860D9AC19D for ; Thu, 1 Dec 2022 06:15:11 -0800 (PST) Received: by mail-ej1-x632.google.com with SMTP id b2so4504811eja.7 for ; Thu, 01 Dec 2022 06:15:11 -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=ZSZ94s+QaNvY6jxnG+UIbHxcBW6vYxNV9Ku2eR9SMas=; b=I89LXcBKEf36dQ9tacYbuaD6/2Hyh27/Lq7lcJ8DGmsMYlgdIWHWqu8yJlNYXg47jB ADCNUqZiyYf4sDgOLn8eHBV+2XFfmcln6vXBWeRa55TprfGc/NrZB7ENUVZGvm99Hiej YiqvyAi1UnCaVjPYxN3YK79cteXFckUpsqwwEre9eMMUuMPiSDOFjJyotc9MJlFyswZs VrZz4WMb6breSrGirRQ5La6IfV41/SHIm0UObiIoj50veu3LlUhcJGGkO1pivHaEBq2+ 7ZNq/rkCSK5rIoCqKjVpHOVJnpDFhzibhuj3J/jsgyLpZ+6a7o/kmcrMR6Pm8aJ1/nmE g0Qw== 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=ZSZ94s+QaNvY6jxnG+UIbHxcBW6vYxNV9Ku2eR9SMas=; b=s7HsrcLjNRQCPbbWcf65GuJC4wRPtqMHkumPXzaexlKeZ84yLt22oSFPCluXe35M1o JkAs7KBuYYfHWPZQZtxHBkSt+CwpOhhfy8qzHjzEPJtpw02alhtQfnDNeBNcbziZ6H62 XfZk1CazOheH55loGK0UZgHPZhT60bPoNfXcmVxfoSBOwNTXdlmxBD0qUu045n4XGEjS dCezp81NxIbPv7grtor5IrY2GovrbpFm1Ula8MDRma34sISDKrGjfQ1dFptPxSYoCVK4 DO6ChoTiI8e/IGvEY+m8pj6xPdjUmDgLW2PHBC3ykB/GcYcoyTZTOEsnt9CcA712/TPD ENlw== X-Gm-Message-State: ANoB5pnM7M4bObZxEXsz8C2bdky83IlNrSIGQjJq4H9ocfDZXfTrlMll JEDyvPaLz1g7gvvWihO6yzsI6yIsQWI= X-Google-Smtp-Source: AA0mqf6/4LwwWT87ji3K1xQfjEPtkV98NPt6xs18FQxc3Q/5Tj57/QLkQ9oUMTg/RTKDv0vStYYt9A== X-Received: by 2002:a17:906:8465:b0:7bd:7253:457a with SMTP id hx5-20020a170906846500b007bd7253457amr2129091ejc.81.1669904110057; Thu, 01 Dec 2022 06:15:10 -0800 (PST) Received: from [192.168.1.50] ([79.119.240.254]) by smtp.gmail.com with ESMTPSA id p4-20020a056402074400b0046267f8150csm1782324edy.19.2022.12.01.06.15.09 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 01 Dec 2022 06:15:09 -0800 (PST) Message-ID: <5b41f1ae-72e7-6b7a-2459-b736399a1c40@gmail.com> Date: Thu, 1 Dec 2022 16:15:08 +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 v4 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: <1a270918-da22-ff5f-29fc-7855f740c5ba@gmail.com> In-Reply-To: <1a270918-da22-ff5f-29fc-7855f740c5ba@gmail.com> 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 --- v4: - Use the more convenient offsetofend macro. v3: - Don't assume bw will always be 1 byte. v2: - Eliminate the magic numbers. --- drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 10 +++++++--- 1 file changed, 7 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..7ca46fb77a3b 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,13 @@ 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 >= offsetofend(typeof(*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 Thu Dec 1 14:16:46 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bitterblue Smith X-Patchwork-Id: 630625 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 79FBFC43217 for ; Thu, 1 Dec 2022 14:17:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231887AbiLAORJ (ORCPT ); Thu, 1 Dec 2022 09:17:09 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59910 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231827AbiLAOQz (ORCPT ); Thu, 1 Dec 2022 09:16:55 -0500 Received: from mail-ej1-x630.google.com (mail-ej1-x630.google.com [IPv6:2a00:1450:4864:20::630]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4C366C772E for ; Thu, 1 Dec 2022 06:16:50 -0800 (PST) Received: by mail-ej1-x630.google.com with SMTP id n21so4503487ejb.9 for ; Thu, 01 Dec 2022 06:16:50 -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=STb+sPRtYWrwfCr/0tHysWYugsD8ylDQo+47qVzVecE=; b=k2oClJXUSNuu+qb3t+Q92hx/T/GSNcULDQzlFewr+cGazX/+cESA4plcQxiOT3oOrv 7SBXxlKumuxAwB7NkLEkt7bkbI/KGSxVskWm3ptA0by/rjC5QEpXeNqmn0knEiFuMCTh Sv09i5mVPLnuwUGxDc9LxbViwDnj/hD/FfkTgy3SfxNmwk0gxrxPYPm5nV4A6wNhJbtU L1qJSSPg4wZ3rxvZKcBj6/cDmfvPU+u8yJMo9lfDOc4ggsS63FUpiljiaUF0jak+0C2j wIbb45wuIUALRxFBGEvlvZK5aS88LW/uHdDNpbSKB0ngDWiAsHdYznZJoSQtzdRr0i6l slwA== 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=STb+sPRtYWrwfCr/0tHysWYugsD8ylDQo+47qVzVecE=; b=ZqU9rVBe8rG7nk7FAT0A4sMbgV+segbzJ3kM0AbTWr89pJk06ZAd0IWLJT3Y9LGAEb OVhBuUCd5ikcs2xkFuJ569Bo0GnbO75v3G4v6aA/8sxTDuuhv1hOgeAhdMWMzxJJw1oK SY8498gHWd4ayNnzUf7ugUuqQOt3zJqNWF+8HkuDzYTMlrwFwvB5qqn56/5uwOXepTU2 RfVywFPUG2KbIs/G861D04GZ4j1liS54AUXDqB2I2GNHQrUJ04C2Zc6vy1wXWQ+p2x71 YcED77za5XVgSlrMJhU7OrUwV0yPU8OBw4I03ZF128JjZzF+LA1PT5xR1cDpUTaPXp3s iKEg== X-Gm-Message-State: ANoB5pnyhOQ2liml0+jf2zTqNymz16703EDtcjHxLNyJ5d7y56yMTxG/ eVSp2QuuqaRh1Ugf20D8Oa8ygwTW3p8= X-Google-Smtp-Source: AA0mqf7hIkODKIbvW/qs6F3UWEKQ3Sj3dlQNy6svExBXGhTADmkwZHHPSWtlgNJ2O2aDSVgEI/fyFg== X-Received: by 2002:a17:906:a11a:b0:7c0:9cb9:bac8 with SMTP id t26-20020a170906a11a00b007c09cb9bac8mr7652840ejy.25.1669904207066; Thu, 01 Dec 2022 06:16:47 -0800 (PST) Received: from [192.168.1.50] ([79.119.240.254]) by smtp.gmail.com with ESMTPSA id j3-20020a170906410300b0077a201f6d1esm1821403ejk.87.2022.12.01.06.16.46 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 01 Dec 2022 06:16:46 -0800 (PST) Message-ID: <0777ad35-fe03-473c-2e02-e3390bef5dd0@gmail.com> Date: Thu, 1 Dec 2022 16:16:46 +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 v4 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: <1a270918-da22-ff5f-29fc-7855f740c5ba@gmail.com> In-Reply-To: <1a270918-da22-ff5f-29fc-7855f740c5ba@gmail.com> 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 --- v4: - No change. v3: - No change. v2: - Compare against DESC_RATE_54M instead of DESC_RATE_MCS0. --- .../wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 105 ++++++++---------- 1 file changed, 45 insertions(+), 60 deletions(-) diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c index 7ca46fb77a3b..3ed435401e57 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,36 +5570,17 @@ 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 >= offsetofend(typeof(*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 >= offsetofend(typeof(*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;