From patchwork Mon Oct 24 11:28:58 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Greg KH X-Patchwork-Id: 9348 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp467022wru; Mon, 24 Oct 2022 06:56:30 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5JS+zJ8wyyzXVtnktF7RQtBTitYPVskJgeCuijcdIX4ySGJLATYzDNjhzfBlaN0AT19O6P X-Received: by 2002:a05:6a00:1d89:b0:56c:a2b:f1c2 with SMTP id z9-20020a056a001d8900b0056c0a2bf1c2mr721549pfw.45.1666619789981; Mon, 24 Oct 2022 06:56:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666619789; cv=none; d=google.com; s=arc-20160816; b=d/+q+FRfFKnMTxsFDjZextvHcciFEik00DFHsSJc+qJUf3EaW+JhzLGeejjyDweEde 2Zz3QytjHu5cmsi1txolU6yIt3e8UoKGMkuRBzuGb7h0/A6GPmEVljrvLuofrwXvs18i f0BfSvQB9t4cSNXb3Jnan5Iv2yoSndZQVMtrMP9fYLo/UZoWWNyLJBu9/o3G8D7WWo6r 0xBTkqJ/z2JEFVp2ixP2Z9TtFoHsZSoQtEVWR6xSfAKyPjsEPvN/FxQIuCeyQB+tYf0K zSBzbtoBDoaw9XFvNY73FtVFuJ1GYdQgfjdkPxEjUdKmOh4RcRPtYomzUzbOjuWyzQ9P teqA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=1w/N9/StQKBSDFx/QkT30CILLi/UH3vqmlbP5rD/2zE=; b=AA6pQjJAw62Dr3hYUcX50g34ZwvslZkvfG0l35EzBfauVuZkjLKC5frNfccqjD2Vep S94qSYc3UMjp4IYySWkuNlofTNTei+h43tw+qsLLLEiHS29xk1IaZ0GTqVbCYwoF67QH u9ikt1f0iEjlzCMg8Ouf1E4v1U3ebOe+1QZjWfynV30EsX6L1gD1qt0xfxBMd/jenxq+ HcZohwKhaIxcZalILunfDf27M6jpbGM47nRROFDEOF2NrttmYSdJoqaM5zDN2Y3TxS05 FZpZVXjyF4d25ySJ5/17JNoH6XBCK2oGjrc7/PbaZ3gyy/R0ZyKfVBVIgtDh8ZjoaU1W TbMw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=ChU5BYqR; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k7-20020a056a00134700b005635c47d783si37634200pfu.357.2022.10.24.06.56.16; Mon, 24 Oct 2022 06:56:29 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=ChU5BYqR; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236774AbiJXN4B (ORCPT + 99 others); Mon, 24 Oct 2022 09:56:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33698 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236759AbiJXNyC (ORCPT ); Mon, 24 Oct 2022 09:54:02 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7E56E8D0FF; Mon, 24 Oct 2022 05:43:42 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 64A7C612DB; Mon, 24 Oct 2022 12:43:18 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 774D0C433D6; Mon, 24 Oct 2022 12:43:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1666615397; bh=fdoR0xvzYT9V9vLf+cdHsA/B+SRWhC/HM+ZFo35VXrE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ChU5BYqR7Pk+95lesD1TzvfWbF0AUdTskL6Ww5xLnW7Rlxe4/7Xjc8T61ll2eNaI3 9tAMYOl7xsrVMQ7SQ6xjqMGCwNyNxEBaFBOwxfCt+/0ES52foGyitHWojJsqOXql3F EzuOaOY7rPWZCQKSWNRWpQw++PxlAPZ6mjLI8Awo= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Bitterblue Smith , Jes Sorensen , Kalle Valo , Sasha Levin Subject: [PATCH 5.15 194/530] wifi: rtl8xxxu: Fix AIFS written to REG_EDCA_*_PARAM Date: Mon, 24 Oct 2022 13:28:58 +0200 Message-Id: <20221024113053.824788491@linuxfoundation.org> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221024113044.976326639@linuxfoundation.org> References: <20221024113044.976326639@linuxfoundation.org> User-Agent: quilt/0.67 MIME-Version: 1.0 X-Spam-Status: No, score=-7.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1747577512933906814?= X-GMAIL-MSGID: =?utf-8?q?1747577512933906814?= From: Bitterblue Smith [ Upstream commit 5574d3290449916397f3092dcd2bac92415498e1 ] ieee80211_tx_queue_params.aifs is not supposed to be written directly to the REG_EDCA_*_PARAM registers. Instead process it like the vendor drivers do. It's kinda hacky but it works. This change boosts the download speed and makes it more stable. Tested with RTL8188FU but all the other supported chips should also benefit. Fixes: 26f1fad29ad9 ("New driver: rtl8xxxu (mac80211)") Signed-off-by: Bitterblue Smith Acked-by: Jes Sorensen Signed-off-by: Kalle Valo Link: https://lore.kernel.org/r/038cc03f-3567-77ba-a7bd-c4930e3b2fad@gmail.com Signed-off-by: Sasha Levin --- .../wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c index fb2a5fc1a4e6..e74c885a04e5 100644 --- a/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c +++ b/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c @@ -4507,6 +4507,53 @@ rtl8xxxu_wireless_mode(struct ieee80211_hw *hw, struct ieee80211_sta *sta) return network_type; } +static void rtl8xxxu_set_aifs(struct rtl8xxxu_priv *priv, u8 slot_time) +{ + u32 reg_edca_param[IEEE80211_NUM_ACS] = { + [IEEE80211_AC_VO] = REG_EDCA_VO_PARAM, + [IEEE80211_AC_VI] = REG_EDCA_VI_PARAM, + [IEEE80211_AC_BE] = REG_EDCA_BE_PARAM, + [IEEE80211_AC_BK] = REG_EDCA_BK_PARAM, + }; + u32 val32; + u16 wireless_mode = 0; + u8 aifs, aifsn, sifs; + int i; + + if (priv->vif) { + struct ieee80211_sta *sta; + + rcu_read_lock(); + sta = ieee80211_find_sta(priv->vif, priv->vif->bss_conf.bssid); + if (sta) + wireless_mode = rtl8xxxu_wireless_mode(priv->hw, sta); + rcu_read_unlock(); + } + + if (priv->hw->conf.chandef.chan->band == NL80211_BAND_5GHZ || + (wireless_mode & WIRELESS_MODE_N_24G)) + sifs = 16; + else + sifs = 10; + + for (i = 0; i < IEEE80211_NUM_ACS; i++) { + val32 = rtl8xxxu_read32(priv, reg_edca_param[i]); + + /* It was set in conf_tx. */ + aifsn = val32 & 0xff; + + /* aifsn not set yet or already fixed */ + if (aifsn < 2 || aifsn > 15) + continue; + + aifs = aifsn * slot_time + sifs; + + val32 &= ~0xff; + val32 |= aifs; + rtl8xxxu_write32(priv, reg_edca_param[i], val32); + } +} + static void rtl8xxxu_bss_info_changed(struct ieee80211_hw *hw, struct ieee80211_vif *vif, struct ieee80211_bss_conf *bss_conf, u32 changed) @@ -4592,6 +4639,8 @@ rtl8xxxu_bss_info_changed(struct ieee80211_hw *hw, struct ieee80211_vif *vif, else val8 = 20; rtl8xxxu_write8(priv, REG_SLOT, val8); + + rtl8xxxu_set_aifs(priv, val8); } if (changed & BSS_CHANGED_BSSID) {