From patchwork Tue Feb 4 18:36:56 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bitterblue Smith X-Patchwork-Id: 13959581 X-Patchwork-Delegate: pkshih@realtek.com Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 87F96217F53 for ; Tue, 4 Feb 2025 18:37:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738694222; cv=none; b=TcvhBHE/fDJw7aMtmsN8sPqd9mg2+sVus1N4HvYlvyOYRoR9g3sS89C1cSAtPnRem8/ouuuzgzVVKkmq4SH46y0TpTYe0S0tXAGQJ2Fo0+VfJ+VwzXRC2jNvlUCBCsSvjrJTH8a/folNyQ+dYvs859l7VEaX23NI2hHfkZ5xK+c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738694222; c=relaxed/simple; bh=zi7VfPwdiah/6OHuVN652JFehCKRXYhwDYtlU3t1vkA=; h=Message-ID:Date:MIME-Version:Subject:From:To:Cc:References: In-Reply-To:Content-Type; b=kA3mKhjES8zBmZJABq2wHpbxGeShn5JL2yyJNifXv1bXZjecrxipUB1sOcX9uoDxlN6IQmJLbWlrTSVl5hefyZZk6CNW07shMuQwqS2nVzpFcTXKiO8EMiwJBNs7/u5XSfdIOL+xXLkdzzYblVm7jDKuFhdCwmeVGs2ixuC2W8M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Vsp3mc9E; arc=none smtp.client-ip=209.85.218.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Vsp3mc9E" Received: by mail-ej1-f44.google.com with SMTP id a640c23a62f3a-ab68a4ab074so720334166b.0 for ; Tue, 04 Feb 2025 10:37:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738694219; x=1739299019; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id:from:to :cc:subject:date:message-id:reply-to; bh=SfZ+8udk5apdH5a/livDU4AwIo1+sDU7dep3IDErhIY=; b=Vsp3mc9EStLOAqQ3IMl9J1Dt1yHW+oBd1YX7EtDOAeI9sfcViDnB9CJSQMepQui5C9 It9Qh3MN5d9a+AY6qZrE0p568iOZBot42hDhgGDYJvL12xM53z+EzQCbfbHPixQA7k/r WziMmhT/kSXXib3kkYSwdAxKzKs0tdTsVmQwoQbDyNeqPdceVDDzCbtTmmqlV7BnE0Ji F+5JcTWY8fzvM4NWMDyFb0YPmV1YzKGva5OMJRw6mIPZRyUJPFRsS93PJp+xIv2Scsn2 dYo8eAjcP7Mjf3FFLtv0n2ScvYQhM7axSJ0HD66ZGWkCTIHqD0sxpJMXjGBm7icqPgyN nxww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738694219; x=1739299019; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=SfZ+8udk5apdH5a/livDU4AwIo1+sDU7dep3IDErhIY=; b=IK4TOt6AAE3pCVIBON3JQSV6mbG3k6o/I/8JJ375D3Y+6UrpadA4VoWnB1M2NYfyaB BxzUJYgRqeGj0C+isklhGgaY9NiM1eEd9AfEVMPJsuEV3fXQXQjYRQb7xZVY1226bOmh 74LjYBELVHyZeCrzDBVcnhRK2vXNa9+hk4Az/ObFtGy7ETRf+BNA0iM5IJumiSO08jLK zaijPPd824O7Wxb4SaWhvY3CkK49tBXtE1UigFcnqx202nTpdcTAGlJoksuTKLngzEse lFn+je/U+jYagWBPNVX2OytWeYfXcvPctB3oOh3ED+X/ZRV3xiXRwFhnqItFG53zcmDq o0qg== X-Gm-Message-State: AOJu0YwQMy9gR+BXD4TOqQMcml0tRFon1mq38VrBK7NexIM2f8WqvKAC k/uJruWbUCUMno9HPU2NkVaixV5BteSuqyzctx8QVagFJenl6gDh0xcy7w== X-Gm-Gg: ASbGncvmX4trOspWIxQOYX2JdGgiqUOa3hzQ+h31P3xg1aJutnYQzo2Xtntb2cYzuEK c1Fv1OrYKR/vQgTFusRTAq8ijyEmxVL6iU5xp0R4dvflSv/coRKzhJn7ZcgEA4/Vixvbh2PI4A9 5im2B44kcrGnbSoGYTX53x0m/V7mEXrcYyIxJgrEQCGT8KdDRoJPmo+oBbs4+fP7d2AtknrxF8Z 5Yp9lF1pCwDkIP1SMKd+wjpHRox1wd3IKTpDZFrs2IsU47N8fMQc3MgphQ+GjAu9DEKFcp1MQa1 fOZd+zGuKKiHYeytqzxA77k6 X-Google-Smtp-Source: AGHT+IH+0bzYEqPHOy1U029Gg7iZzdcVdqCtPNeBY24lIY5n5XoKnSpr49SRK8SPaLUbUBWNS1qxuQ== X-Received: by 2002:a05:6402:51ce:b0:5dc:d11d:702a with SMTP id 4fb4d7f45d1cf-5dcdb70e046mr186473a12.8.1738694218445; Tue, 04 Feb 2025 10:36:58 -0800 (PST) Received: from [192.168.0.50] ([79.119.240.253]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ab6e47a7ea7sm952813366b.5.2025.02.04.10.36.57 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 04 Feb 2025 10:36:58 -0800 (PST) Message-ID: <55b5641f-094e-4f94-9f79-ac053733f2cf@gmail.com> Date: Tue, 4 Feb 2025 20:36:56 +0200 Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 1/9] wifi: rtw88: Fix __rtw_download_firmware() for RTL8814AU From: Bitterblue Smith To: "linux-wireless@vger.kernel.org" Cc: Ping-Ke Shih References: <9fc518ae-7708-42c6-99ca-56ee307555b6@gmail.com> Content-Language: en-US In-Reply-To: <9fc518ae-7708-42c6-99ca-56ee307555b6@gmail.com> Don't call ltecoex_read_reg() and ltecoex_reg_write() when the ltecoex_addr member of struct rtw_chip_info is NULL. The RTL8814AU doesn't have this feature. Signed-off-by: Bitterblue Smith --- v2: - No change. --- drivers/net/wireless/realtek/rtw88/mac.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw88/mac.c b/drivers/net/wireless/realtek/rtw88/mac.c index cae9cca6dca3..63edf6461de8 100644 --- a/drivers/net/wireless/realtek/rtw88/mac.c +++ b/drivers/net/wireless/realtek/rtw88/mac.c @@ -784,7 +784,8 @@ static int __rtw_download_firmware(struct rtw_dev *rtwdev, if (!check_firmware_size(data, size)) return -EINVAL; - if (!ltecoex_read_reg(rtwdev, 0x38, <ecoex_bckp)) + if (rtwdev->chip->ltecoex_addr && + !ltecoex_read_reg(rtwdev, 0x38, <ecoex_bckp)) return -EBUSY; wlan_cpu_enable(rtwdev, false); @@ -802,7 +803,8 @@ static int __rtw_download_firmware(struct rtw_dev *rtwdev, wlan_cpu_enable(rtwdev, true); - if (!ltecoex_reg_write(rtwdev, 0x38, ltecoex_bckp)) { + if (rtwdev->chip->ltecoex_addr && + !ltecoex_reg_write(rtwdev, 0x38, ltecoex_bckp)) { ret = -EBUSY; goto dlfw_fail; } From patchwork Tue Feb 4 18:37:36 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bitterblue Smith X-Patchwork-Id: 13959582 X-Patchwork-Delegate: pkshih@realtek.com Received: from mail-ed1-f43.google.com (mail-ed1-f43.google.com [209.85.208.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id ECD6E217707 for ; Tue, 4 Feb 2025 18:37:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738694263; cv=none; b=awM1EZh7jKy6lS22PMGNkZYWK3tOX0cMwC8qHRXt/CCBf21IVbuBwjys306hzWK8qbuoe3lwMCM33+7B0OPriDxiyH+iwjbfP0MvRBAtyeb/b8lyu5beA7QD6INlbQ69GQbIJQQvwqGoOkxz323eT8pVdX8VpkwLtD8AemF32EQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738694263; c=relaxed/simple; bh=BSrhwGOmjWtgncnrT3poKLtEHwfaQljxfAYN5aYfiXs=; h=Message-ID:Date:MIME-Version:Subject:From:To:Cc:References: In-Reply-To:Content-Type; b=pnMKrawanp4l+b8KsGqR2oqqybzxKO1WyyRJztc8vKce5vazNtsW3bJ7i6ApMKTEfQoKvTPapdBijkiD08i6Kp4gRGXKRY0VBY9Ctyf6/Pcn00gvXFhUpXyjRQ4wf8M/O8YmtBVBmg9wVDGCeMHQBpHjA6OdKJnffhPXe+8F5so= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=YcndSUMy; arc=none smtp.client-ip=209.85.208.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="YcndSUMy" Received: by mail-ed1-f43.google.com with SMTP id 4fb4d7f45d1cf-5d3bbb0f09dso10494975a12.2 for ; Tue, 04 Feb 2025 10:37:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738694260; x=1739299060; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id:from:to :cc:subject:date:message-id:reply-to; bh=j7e3klw5/TX1fq9HF+hwiRrL8MCe2E/h6BKFpxhVBwo=; b=YcndSUMy7VfBmXfwMJqMi9u9j3ZNR5xrEACj2fwty/qoZY5WiCko2S81SCzKXsdGYr nDM5q1hePRX837zWrZp4/O+xNxoi+6FQi8eag8Z63fJRkE3Mw1qRPbshKZqE50pv2VJP uXNE4MK4Y1MvKuLZTklFVoVcUMHeVqw+Ouab8GsSaNADPkaK1hE29/HMvNt+hEu94zo/ pyohTAMDGlAtT2QR9IVs8/kK4q/oOPVxNzI5xYmSBkSDpf74r+KbouWEhKL5xDsmPDbf 1LJIPjQNo2h5u4iUUbMfFS3PmAJn0qj3KiMwsFuRBzwERAFeIj/zuDZwVuEQfVGi/r0I EdXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738694260; x=1739299060; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=j7e3klw5/TX1fq9HF+hwiRrL8MCe2E/h6BKFpxhVBwo=; b=wjdoNfajsHIy2v0BuHGM+Q9HAR1ACC+msTUgb8uQrjhSEXlwSBfJBxW7pPFqJTfRJ8 C4xiZFdshIWPzeiu1Uh0VjhyWZBZz21USmUKGKoCurLcxj0Ka3dZmrCwJBYmA1f5veNi O1UH/Hluyk8hkBrU+wppqqsMz2VYtU18r81lqR5oFDQZVmBuPqRnZEJO/uHzWZG2FfOn qdqg+3TMjZloQzGaycT9YPJ6ZSuM7I3tKJsDkInjpr2NU1igBo/M4j7ZY288mSrKiKa/ x3CzCCSQzL/DJ23R3ZpS3/4N8RAxm796LbcaJ+2VLKkwSyZYgbnBqGtKiaUD+pAx0+hs Dv5A== X-Gm-Message-State: AOJu0YxmwxJKNPfsF91681mWswPi9zUYMuH5D1oKrMQy0gdSkyYK3VfD KuXsZwgMxoMVvQxrtZegwPE5oG9rcakh8/H2IRnEiPqL04QIHB4UdFNL+g== X-Gm-Gg: ASbGncsxvVfnl0r0xkSgrpSWgozjAfjon+RD4ru21m66P+NMvEw2Asqaf00EQMe4ThI lxWDAkpWxvvpVrYyfRVlf4ixh9zO8NIpoyZvcMOlKQvvn220WXrUb9O+IlZZg2p2jYTVVlWn6j/ ZNvZjN/qUaBVQPInNRO19aCrZ6lBHKa4Rx4Zleotn3r0531LQaR9FareqkqLVV9SubWwGIScmke J+9me3PB0tVCHDTu0f81RV+c2lLQGz1ldiEpTySTh/AhJS+oOIkTqrKbO8BdlOmSey2x4ppTkOU uSev8YhLfkQ4uDwjq++Tz3s7 X-Google-Smtp-Source: AGHT+IFLniBwsL/SbTatxv+LF+XZLtLhZEIeN+feUmAaHSp5IlesfT4rz5eGGpxkssDTDMHPp07+Sg== X-Received: by 2002:a17:907:944e:b0:ab7:5a5f:115 with SMTP id a640c23a62f3a-ab75a5f0b85mr79521666b.49.1738694259958; Tue, 04 Feb 2025 10:37:39 -0800 (PST) Received: from [192.168.0.50] ([79.119.240.253]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ab6e49ff719sm963081166b.114.2025.02.04.10.37.37 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 04 Feb 2025 10:37:38 -0800 (PST) Message-ID: <049d2887-22fc-47b7-9e59-62627cb525f8@gmail.com> Date: Tue, 4 Feb 2025 20:37:36 +0200 Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 2/9] wifi: rtw88: Fix download_firmware_validate() for RTL8814AU From: Bitterblue Smith To: "linux-wireless@vger.kernel.org" Cc: Ping-Ke Shih References: <9fc518ae-7708-42c6-99ca-56ee307555b6@gmail.com> Content-Language: en-US In-Reply-To: <9fc518ae-7708-42c6-99ca-56ee307555b6@gmail.com> After the firmware is uploaded, download_firmware_validate() checks some bits in REG_MCUFW_CTRL to see if everything went okay. The RTL8814AU power on sequence sets bits 13 and 12 to 2, which this function does not expect, so it thinks the firmware upload failed. Make download_firmware_validate() ignore bits 13 and 12. Signed-off-by: Bitterblue Smith --- v2: - No change. --- drivers/net/wireless/realtek/rtw88/reg.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/realtek/rtw88/reg.h b/drivers/net/wireless/realtek/rtw88/reg.h index e438405fba56..209b6fc08a73 100644 --- a/drivers/net/wireless/realtek/rtw88/reg.h +++ b/drivers/net/wireless/realtek/rtw88/reg.h @@ -130,6 +130,7 @@ #define BIT_SHIFT_ROM_PGE 16 #define BIT_FW_INIT_RDY BIT(15) #define BIT_FW_DW_RDY BIT(14) +#define BIT_CPU_CLK_SEL (BIT(12) | BIT(13)) #define BIT_RPWM_TOGGLE BIT(7) #define BIT_RAM_DL_SEL BIT(7) /* legacy only */ #define BIT_DMEM_CHKSUM_OK BIT(6) @@ -147,7 +148,7 @@ BIT_CHECK_SUM_OK) #define FW_READY_LEGACY (BIT_MCUFWDL_RDY | BIT_FWDL_CHK_RPT | \ BIT_WINTINI_RDY | BIT_RAM_DL_SEL) -#define FW_READY_MASK 0xffff +#define FW_READY_MASK (0xffff & ~BIT_CPU_CLK_SEL) #define REG_MCU_TST_CFG 0x84 #define VAL_FW_TRIGGER 0x1 From patchwork Tue Feb 4 18:38:17 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bitterblue Smith X-Patchwork-Id: 13959583 X-Patchwork-Delegate: pkshih@realtek.com Received: from mail-ed1-f41.google.com (mail-ed1-f41.google.com [209.85.208.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5A0BD21884A for ; Tue, 4 Feb 2025 18:38:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738694303; cv=none; b=GBgqZHoHlA7MpgwYZ/k/WOs14eCp8EQkSaqxNk3YDVJejUHgTMGJE4iDnE1JwBfaQNWgk5O6Lv2SyRvNuh1sPWL11UJwFDy+fXYwhmNjSo1BBjqLMe0EZXru/OlOyhxOT8Zuk7dCEyiJ+IUyivgp8zP8tq9eP/eVDqViRKCIvKU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738694303; c=relaxed/simple; bh=WaUoJ7nAxfMGMkoq7OlRIrphgSmbqgUh+p0083ImoUw=; h=Message-ID:Date:MIME-Version:Subject:From:To:Cc:References: In-Reply-To:Content-Type; b=kEXIrGvVRSBrM1/LJO51E9C4L260uDO/RwRP8MMv6lMDpyd61u/XDHemS2tkKl7ScNk6OUCFKyovFC60eqHQczrFTB8+hMhCBpk42oARE5k0/kIG9E1Sb7RGET2yBMHXNOcXoWuTacDEVCARbwfmK+IJNqZG59c7WsTQGWHOfpw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=b9XHETtz; arc=none smtp.client-ip=209.85.208.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="b9XHETtz" Received: by mail-ed1-f41.google.com with SMTP id 4fb4d7f45d1cf-5d3cf094768so10769457a12.0 for ; Tue, 04 Feb 2025 10:38:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738694299; x=1739299099; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id:from:to :cc:subject:date:message-id:reply-to; bh=yv92xnSMtNnA1M6tJ/JX7RQB+vjsOFOK5K4t3ha3PCw=; b=b9XHETtznCs8iE4PDDLnaNFZlQn70yK6pPC+9WJZLsyFH4mYVhti8IUTkuXptNWG2O 2Wh72aE35U4bmbzxNUkapoQntx2tLqpYQwuAet1Ad3wl0khGbyNpHIBz4rFum76eQa4Y p7Ku0FUq1lrdelHY/XxGYyNZ8hh0zs00o3HVhRrgqi+BBqbyHcpqZ3k0UEcZUu+bs9BK ObiCyNrJ/RMJ1H0WhcB7hiwGgresy+s7GQz4c5r7d00UTH8qz2x9lmgqJVzHC7pmiviE O9nL7SP6nI4UXXr4/ss6l+PVTYRh1zD3ExviQe58L8XRgccT2T/Ps32H3vE3hubxhA93 AULA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738694299; x=1739299099; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=yv92xnSMtNnA1M6tJ/JX7RQB+vjsOFOK5K4t3ha3PCw=; b=P9NjlcNUh/6Pmrv/7TMS4X6Gd65BkdhAwRt/SQjSiPlGHaKoE8Di4bg6SH9ZnLMfq1 LZDzZdWQScKNbhkmFegauPeeNwdltSMRsS/YepXMq5VK+nyjxpXbpvvqIuJhj4ISnAJq LHUgpFlGo0RmJXaWROFLUg7sxVZzRr1yuk3BZDzk5u1LPycGTN+DvT415SmwkxTRJ/uO gW1aush7ymq22DtscAULzSlQ7biHV6dPHEHGV32Xt3f7qlqyWhmPLENcG/JmoE5B4ow3 nG83PPJefzkqNSG0bWUeWfzTHOoV6lCHdvI7v2YOHYfc+Nj4mai8+5VZrDOo9y2EM0JD z9FQ== X-Gm-Message-State: AOJu0Ywz5urvdHRCxNmPhVGlwqEhkVt2booa1QYoWAI6JZqSfsnbph/a FzoQD280NKSzu/aLoVgkPU81ByNFM8Mtjr+nT4U3ck3CchaFCczh7cSEAA== X-Gm-Gg: ASbGncs/55PjanlNapEsC3jcJTb0DTNWsR5bq7ukAmJ59HMe6jQIqdg4j+DYvg+12/5 Klinz6ljKyLJIf2tkrmrhrcQoHm7thDBIcuafxyGbMFXNzh9RJdAITYosaJ1BtPESk4Bis050uv NC+rtQEavudEm4mIMRxs6dcDS/eqlnxWKsWKjq+W1XsujVuFIZWFgmsDAknrOxp5gXfkhW7JBh+ 3+GUgtUk0DY4npXQCUEX9zFZa5qf5Oz96JF3ftF1TcWLaWu9waLn4riW7GeoUcEVG+rsbZblFbe A1NwVWdA4GUQBo4dIpZjkKvW X-Google-Smtp-Source: AGHT+IEnhmVXyAnTG7IKe8ANVwsOaf46JjmhDGg1iD3AoTDHdWIAJmsc4p821Zow2YtOwKxUuEYoZA== X-Received: by 2002:a05:6402:5d0:b0:5dc:da2f:9cd1 with SMTP id 4fb4d7f45d1cf-5dcdb733704mr94768a12.14.1738694299264; Tue, 04 Feb 2025 10:38:19 -0800 (PST) Received: from [192.168.0.50] ([79.119.240.253]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5dc723e4ceasm9710496a12.21.2025.02.04.10.38.18 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 04 Feb 2025 10:38:18 -0800 (PST) Message-ID: Date: Tue, 4 Feb 2025 20:38:17 +0200 Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 3/9] wifi: rtw88: Extend struct rtw_pwr_track_tbl for RTL8814AU From: Bitterblue Smith To: "linux-wireless@vger.kernel.org" Cc: Ping-Ke Shih References: <9fc518ae-7708-42c6-99ca-56ee307555b6@gmail.com> Content-Language: en-US In-Reply-To: <9fc518ae-7708-42c6-99ca-56ee307555b6@gmail.com> Currently this struct has the members required for chips with 2 RF paths. Add more members to support chips with 4 RF paths, like the RTL8814AU. Signed-off-by: Bitterblue Smith --- v2: - No change. --- drivers/net/wireless/realtek/rtw88/main.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/net/wireless/realtek/rtw88/main.h b/drivers/net/wireless/realtek/rtw88/main.h index 62cd4c526301..e40e62302984 100644 --- a/drivers/net/wireless/realtek/rtw88/main.h +++ b/drivers/net/wireless/realtek/rtw88/main.h @@ -1130,14 +1130,26 @@ struct rtw_rfe_def { * For 2G there are cck rate and ofdm rate with different settings. */ struct rtw_pwr_track_tbl { + const u8 *pwrtrk_5gd_n[RTW_PWR_TRK_5G_NUM]; + const u8 *pwrtrk_5gd_p[RTW_PWR_TRK_5G_NUM]; + const u8 *pwrtrk_5gc_n[RTW_PWR_TRK_5G_NUM]; + const u8 *pwrtrk_5gc_p[RTW_PWR_TRK_5G_NUM]; const u8 *pwrtrk_5gb_n[RTW_PWR_TRK_5G_NUM]; const u8 *pwrtrk_5gb_p[RTW_PWR_TRK_5G_NUM]; const u8 *pwrtrk_5ga_n[RTW_PWR_TRK_5G_NUM]; const u8 *pwrtrk_5ga_p[RTW_PWR_TRK_5G_NUM]; + const u8 *pwrtrk_2gd_n; + const u8 *pwrtrk_2gd_p; + const u8 *pwrtrk_2gc_n; + const u8 *pwrtrk_2gc_p; const u8 *pwrtrk_2gb_n; const u8 *pwrtrk_2gb_p; const u8 *pwrtrk_2ga_n; const u8 *pwrtrk_2ga_p; + const u8 *pwrtrk_2g_cckd_n; + const u8 *pwrtrk_2g_cckd_p; + const u8 *pwrtrk_2g_cckc_n; + const u8 *pwrtrk_2g_cckc_p; const u8 *pwrtrk_2g_cckb_n; const u8 *pwrtrk_2g_cckb_p; const u8 *pwrtrk_2g_ccka_n; From patchwork Tue Feb 4 18:38:43 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bitterblue Smith X-Patchwork-Id: 13959584 X-Patchwork-Delegate: pkshih@realtek.com Received: from mail-ed1-f45.google.com (mail-ed1-f45.google.com [209.85.208.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F41CB217707 for ; Tue, 4 Feb 2025 18:38:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738694329; cv=none; b=SZlwTZYkGpZd2pMLX2r+k0u5jFadAyFHs6mbq0d4aYOqjGQrx5/1rUpLS9est23tdvKXMc+4ZKo7cCR1hv+IYZJ9mP39l76biWbjuTB06xqkrKkScwij2YaOJUD6LwknsaRh2LJ6UJA2ZSgxG9e9eZG5rNWqy36z3xvM86F7Z4I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738694329; c=relaxed/simple; bh=bV3uiyEgw8EyN8v00JYZYJwspWeSWZnQkEiZzgobk5c=; h=Message-ID:Date:MIME-Version:Subject:From:To:Cc:References: In-Reply-To:Content-Type; b=Jr34tJPnja1tl/cKR7X03RVF5kQqFauvb00X2pSU42p/lu0daxRS+zoFekkeDkcyAB+N3kk36Lt5RoPVneGm9Bfj+OOamFcaWGmtye4+jK21+m+XpQCkUX4WS0X6FuV683+2TIkVfb0dKLbAQJzUh+esCcqS2t7+cejQWMTh5jU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=R5bDCnwD; arc=none smtp.client-ip=209.85.208.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="R5bDCnwD" Received: by mail-ed1-f45.google.com with SMTP id 4fb4d7f45d1cf-5d96944401dso9785210a12.0 for ; Tue, 04 Feb 2025 10:38:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738694326; x=1739299126; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id:from:to :cc:subject:date:message-id:reply-to; bh=1sq3uKwD1L8bvoGUiSz7+RcF40cxN5tzlwbdt0iRXmc=; b=R5bDCnwDCghe9JmCY6EA5RkJtIbORZm3UMT4CqrFoLHwe3r7ZaJRwxDrupgqAPLyMg 4OUo0rUuILC2b2LHB47Da9uuVq6Zt3Eoi3oSd/P+4N8fyDEG4W3giqulK26x8HUOHwiC wB6vxZlSmzXUYFjhHbeIwQXOZuUvnyecktGEKFEPsOvA1r64cb1ED2T9DpxCCB3JRIdE axlC42sqB+3+4NJLC4v+ot9ih3e1ry/HVm1CL37uPqK4CEDBiIuZ9jb7wDZeje4FDau/ MvBdWALS2EFWD2ZfwUNDwSyNU6XHASbsFMlJWJW3L8MOqPCBzHp2BtKm9AFZtI7Z/YgS BjEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738694326; x=1739299126; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=1sq3uKwD1L8bvoGUiSz7+RcF40cxN5tzlwbdt0iRXmc=; b=AhoWcRmCESNqcthUkaBn26spN4qlz7vyWYmew9/jwwsha1b2GCbNxSywuQiHv7fviA 14tOqlm36FLpkjklphyVUOwaxmYOPF1WfhRDXSJsKIfGEtQc98dZiANhRUzS05yinCXo Vh0ukH8LrL6qEcpWZAXOvYTvEgJDKnvWD01jfL05W16tI6/u4Fb9kWtQdkxqddMuQ7lF Y/Ak7+Q9pcMO2QPPY3VK7n5Axalwnmr+GW7pg00QcdCPcNeMA1/jqWReuhDgxvAdj8Xm qL77pzGn8+pS0b6AmKbtGQ2CglSrTCNQtk6vBB9HCldKlRWyRDOAeVJ8DGvhvfVqz8d4 9WEw== X-Gm-Message-State: AOJu0YzqSE/4StMnGSpZLMD22R9czG8fToUgEGJdNh9uv2cgg4dwyoNm IHDH3d+29EaIPo1WqafN1dvz6EeyapYjYai8GhBy68jUV3pqQhbAtZd8OQ== X-Gm-Gg: ASbGncvSWSJOIsrw5cUDAF26EoWinHgRz+2laJAo4YijdfE29FW0Ix0xB4RHNDrMJeU udqr9b5c6l/Ej3xJ3qigHsX4OzG+ANqdLGbmog+//YWDcqdHQ3f0xigDgtq5n9ttw1AIF0LxBZM PUKvwwseObNr8owyaVh21L4FoRMlq5GKsDJrhMHRYRy7bZKzgTVl24UQBPfHV3equmeMELAmZho mSPUmvL2+ZrsEC8pwEMc54MP7h8IoFdxF8ri3NWC3+Qc81g4rx87e62I4RKbp1MxbAVWD/T9C8m mIsLpTTEm6aLNctOlETcn9uw X-Google-Smtp-Source: AGHT+IE2DB63UwlxaERmoXPoAcL4ipOCbTnK46pq8vEgQSwogam3V6y3LndxP+YzDIiEMeCT/IVY5Q== X-Received: by 2002:a17:906:f598:b0:ab7:4641:a72d with SMTP id a640c23a62f3a-ab74641a76cmr662988966b.51.1738694325924; Tue, 04 Feb 2025 10:38:45 -0800 (PST) Received: from [192.168.0.50] ([79.119.240.253]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ab6e4a567d3sm957167966b.169.2025.02.04.10.38.44 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 04 Feb 2025 10:38:45 -0800 (PST) Message-ID: <7a4d8209-b8af-4943-b5de-f53d6edf591a@gmail.com> Date: Tue, 4 Feb 2025 20:38:43 +0200 Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 4/9] wifi: rtw88: Extend rf_base_addr and rf_sipi_addr for RTL8814AU From: Bitterblue Smith To: "linux-wireless@vger.kernel.org" Cc: Ping-Ke Shih References: <9fc518ae-7708-42c6-99ca-56ee307555b6@gmail.com> Content-Language: en-US In-Reply-To: <9fc518ae-7708-42c6-99ca-56ee307555b6@gmail.com> These members of struct rtw_chip_info each have a size of 2. Increase their size to 4, which is the number of RF paths the RTL8814AU has. This is required to read and write the RF registers of the RTL8814AU. Signed-off-by: Bitterblue Smith --- v2: - No change. --- drivers/net/wireless/realtek/rtw88/main.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw88/main.h b/drivers/net/wireless/realtek/rtw88/main.h index e40e62302984..ba64d269521a 100644 --- a/drivers/net/wireless/realtek/rtw88/main.h +++ b/drivers/net/wireless/realtek/rtw88/main.h @@ -1239,8 +1239,8 @@ struct rtw_chip_info { const struct rtw_hw_reg *dig; const struct rtw_hw_reg *dig_cck; - u32 rf_base_addr[2]; - u32 rf_sipi_addr[2]; + u32 rf_base_addr[RTW_RF_PATH_MAX]; + u32 rf_sipi_addr[RTW_RF_PATH_MAX]; const struct rtw_rf_sipi_addr *rf_sipi_read_addr; u8 fix_rf_phy_num; const struct rtw_ltecoex_addr *ltecoex_addr; From patchwork Tue Feb 4 18:39:29 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bitterblue Smith X-Patchwork-Id: 13959614 X-Patchwork-Delegate: pkshih@realtek.com Received: from mail-ed1-f41.google.com (mail-ed1-f41.google.com [209.85.208.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 86E91218580 for ; Tue, 4 Feb 2025 18:39:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738694377; cv=none; b=MIiSnoOAve4tx+ZjspzH0EpSFrlq/ITMNl4KOCMXiU4c4g1tUG8yDx8CzbLlQncGoxEFuImZGhjxGuD1KZf+jMb/zEfWDBoW35QRtk8/tiZEEq4c40dqstgKA/+ndtxtErtLJAnQypOmBcSH5LlaEXkciCak6CIADL3CxBjvOE4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738694377; c=relaxed/simple; bh=ffz1F4mAPu5eyCMwxAc+TfyaXVkccADNd14Zw3OdtCs=; h=Message-ID:Date:MIME-Version:Subject:From:To:Cc:References: In-Reply-To:Content-Type; b=kJVWlftP2f6c5KbsF6c3z4igZOA+KfhZmIJZiA037vBwML4cgKVAWxEj7crJBKG6C6aZx99NCcPw3DZXnkN+nFpfXnICPzor1shhfm9990q6x4qPi8i25b7eX2xxLWUYV7b8y8nK6Z3YMauips0uj3G5nwWgy6AY72Wxm7DDQR0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ApPQd6nO; arc=none smtp.client-ip=209.85.208.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ApPQd6nO" Received: by mail-ed1-f41.google.com with SMTP id 4fb4d7f45d1cf-5d982de9547so11485643a12.2 for ; Tue, 04 Feb 2025 10:39:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738694372; x=1739299172; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id:from:to :cc:subject:date:message-id:reply-to; bh=H5+7a8Re4dKW+BMIEI30vWTlU1os+zYewlN6x9QsUNY=; b=ApPQd6nOL6h0j/5+hAgYHRxKr1tGN21kZioK8XepueluVmmYkeZrPWZQZrtaMRGBPh 2/xxvmTY4Q9ouVgYKpTj6xM6pnSCQmK2Up+nZIT6ehI/J4Xp4hEDLBTB0eNObYqxS+Uz 24FvWdQWmGzMC9xim2a6uB7kIY8lZtCjpL6Pi5bx7zGAfezZ4JYX12CAXRAM+xsqcwpJ eTqvQR/MMH8NCNU4C2bzT/tBUPwa8UhMkTaNhSuuVa90SPkbW8hBYI/al5JTAozPS0CF 1ZhdNaQ17QqUy17wvZ1oSc3n5P2DGmhqA/02SEwu+saf9FuMN/m4GXb3uiOFwD2C1u/7 sLPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738694372; x=1739299172; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=H5+7a8Re4dKW+BMIEI30vWTlU1os+zYewlN6x9QsUNY=; b=pMDHuxZeqjgWL6RexoOGzwoBbjdbEOZPBb/VOa3UaaU7D2Q0limdaGE0YIBJBkJJv4 7D6lp3xaOXAlfazXX2U33Fr6q39Qct4bCVCj0G6vmhdW2xnu5ILRRVwBVTCJVZYicedM tLhahpIou4Q0/AsvbNfxob+90rVxXjcYviXV7HmkeAB//6cLtkvFE/EceafEdaIOTqkx xVsVD9ZeoZy00vZ/6OUc9hl4wtuNLGDQSeDnCaWxL/eoPzaubNnxoTdkPkinPmCwptLT lh/JwshiGyKxYvcj36yeoi4B/rL9ag6PEi9K+/R6Cg7mMnIp2jJmoF0tVIlARQ3n3BDx h9dQ== X-Gm-Message-State: AOJu0Yy0Yew8URFvF1oqHfZtVESWAkDiA6of2gcas+BPNvwtzvXGbTIQ yqaPt81u2tV+aGgwAyWYSfGcdxeDnLJSiUwjqY0c++RbiyTZjVvca2uGbQ== X-Gm-Gg: ASbGncsdgRwVnWAJB0b5zTY01ckl6BfUaLSmCVegYV80GLQ/a2g1a6h6TmaNXfHszgz 3r9HzHPK3xJVC20A2kDpFf+66tXUSvqCSFhVVB9uLEPq0FnhxiK3+x8n1YnGQLmC1TTFDQgTOzL 5jYzWkDo/3amPG3rXZQ5EFiTyylbvqXPNXHOWgW8uvruojl+YG6y7gcwh4AGFtdNDFBPik2InvE 2LOAQhi1SVeUogWk2++PBsduYQujSYt4+n/PeNKJWbsprxxau5NIw1ZvaSOzzNAHb2nRGfAzmO0 UMZBlvYlVkGQAMBB7T17sv/N X-Google-Smtp-Source: AGHT+IE/5tEToOwa2D+v7Lr9ixLDMX38ncYEN9qU9E6NhzCLe+JRlzco+Hzmp6aGHs4UZi8FURECzQ== X-Received: by 2002:a17:907:c0d:b0:aac:4325:a604 with SMTP id a640c23a62f3a-ab6cfe25cd0mr2923895666b.49.1738694371658; Tue, 04 Feb 2025 10:39:31 -0800 (PST) Received: from [192.168.0.50] ([79.119.240.253]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ab6e4a2fa50sm958516466b.128.2025.02.04.10.39.30 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 04 Feb 2025 10:39:31 -0800 (PST) Message-ID: <08e2f328-1aab-4e50-93ac-c1e5dd9541ac@gmail.com> Date: Tue, 4 Feb 2025 20:39:29 +0200 Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 5/9] wifi: rtw88: Extend rtw_fw_send_ra_info() for RTL8814AU From: Bitterblue Smith To: "linux-wireless@vger.kernel.org" Cc: Ping-Ke Shih References: <9fc518ae-7708-42c6-99ca-56ee307555b6@gmail.com> Content-Language: en-US In-Reply-To: <9fc518ae-7708-42c6-99ca-56ee307555b6@gmail.com> The existing code is suitable for chips with up to 2 spatial streams. Inform the firmware about the rates it's allowed to use when transmitting 3 spatial streams. Signed-off-by: Bitterblue Smith --- v2: - Add RTW_CHIP_TYPE_8814A enum. - Check the chip type instead of the presence of RF path C. - Reduce indentation. --- drivers/net/wireless/realtek/rtw88/fw.c | 15 +++++++++++++++ drivers/net/wireless/realtek/rtw88/fw.h | 1 + drivers/net/wireless/realtek/rtw88/main.h | 1 + 3 files changed, 17 insertions(+) diff --git a/drivers/net/wireless/realtek/rtw88/fw.c b/drivers/net/wireless/realtek/rtw88/fw.c index 02389b7c6876..6b563ac489a7 100644 --- a/drivers/net/wireless/realtek/rtw88/fw.c +++ b/drivers/net/wireless/realtek/rtw88/fw.c @@ -735,6 +735,7 @@ void rtw_fw_send_ra_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si, { u8 h2c_pkt[H2C_PKT_SIZE] = {0}; bool disable_pt = true; + u32 mask_hi; SET_H2C_CMD_ID_CLASS(h2c_pkt, H2C_CMD_RA_INFO); @@ -755,6 +756,20 @@ void rtw_fw_send_ra_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si, si->init_ra_lv = 0; rtw_fw_send_h2c_command(rtwdev, h2c_pkt); + + if (rtwdev->chip->id != RTW_CHIP_TYPE_8814A) + return; + + SET_H2C_CMD_ID_CLASS(h2c_pkt, H2C_CMD_RA_INFO_HI); + + mask_hi = si->ra_mask >> 32; + + SET_RA_INFO_RA_MASK0(h2c_pkt, (mask_hi & 0xff)); + SET_RA_INFO_RA_MASK1(h2c_pkt, (mask_hi & 0xff00) >> 8); + SET_RA_INFO_RA_MASK2(h2c_pkt, (mask_hi & 0xff0000) >> 16); + SET_RA_INFO_RA_MASK3(h2c_pkt, (mask_hi & 0xff000000) >> 24); + + rtw_fw_send_h2c_command(rtwdev, h2c_pkt); } void rtw_fw_media_status_report(struct rtw_dev *rtwdev, u8 mac_id, bool connect) diff --git a/drivers/net/wireless/realtek/rtw88/fw.h b/drivers/net/wireless/realtek/rtw88/fw.h index 404de1b0c407..48ad9ceab6ea 100644 --- a/drivers/net/wireless/realtek/rtw88/fw.h +++ b/drivers/net/wireless/realtek/rtw88/fw.h @@ -557,6 +557,7 @@ static inline void rtw_h2c_pkt_set_header(u8 *h2c_pkt, u8 sub_id) #define H2C_CMD_DEFAULT_PORT 0x2c #define H2C_CMD_RA_INFO 0x40 #define H2C_CMD_RSSI_MONITOR 0x42 +#define H2C_CMD_RA_INFO_HI 0x46 #define H2C_CMD_BCN_FILTER_OFFLOAD_P0 0x56 #define H2C_CMD_BCN_FILTER_OFFLOAD_P1 0x57 #define H2C_CMD_WL_PHY_INFO 0x58 diff --git a/drivers/net/wireless/realtek/rtw88/main.h b/drivers/net/wireless/realtek/rtw88/main.h index ba64d269521a..993c381e734b 100644 --- a/drivers/net/wireless/realtek/rtw88/main.h +++ b/drivers/net/wireless/realtek/rtw88/main.h @@ -191,6 +191,7 @@ enum rtw_chip_type { RTW_CHIP_TYPE_8703B, RTW_CHIP_TYPE_8821A, RTW_CHIP_TYPE_8812A, + RTW_CHIP_TYPE_8814A, }; enum rtw_tx_queue_type { From patchwork Tue Feb 4 18:40:22 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bitterblue Smith X-Patchwork-Id: 13959615 X-Patchwork-Delegate: pkshih@realtek.com Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com [209.85.218.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6211A20DD4B for ; Tue, 4 Feb 2025 18:40:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738694428; cv=none; b=OIiyGTkb2HYtm6IGmlp8vu7pYu65gEuBSgCM5aNLYczJl+YxDFRMKlgVZDVICHaXd4fPSkGb5ZcJduOHofkR0fCJ8aLyWKOT3LQbjcNBZAn+oQjpRJlESZbU6+Ryt4uJ62AiSUhjDDUtbWUqZ0lgRasK5UqJkxXnOMKKhKUU8Z4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738694428; c=relaxed/simple; bh=bI0BBcokIzF/80LySoS6lvWJzFpPwj8i8zQsLC5yz20=; h=Message-ID:Date:MIME-Version:Subject:From:To:Cc:References: In-Reply-To:Content-Type; b=afm1rvj93voVBPu6vtNeOT992vukhOFc7BxyarwfEcfZIfR+hOgEEVbp+oKfwYvtdYRRD6x+Ilj+WRJFgCPrqmgpFo7C4Msm56uEeHjGQ8W6mNxaWxUgXiAIM3yoFOooHG5EN2+iHy1xPrdaMZFSabuIuuxUGi1KRzoEs/wF44U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=VjWrqpkR; arc=none smtp.client-ip=209.85.218.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="VjWrqpkR" Received: by mail-ej1-f51.google.com with SMTP id a640c23a62f3a-ab7157cf352so16014166b.0 for ; Tue, 04 Feb 2025 10:40:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738694424; x=1739299224; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id:from:to :cc:subject:date:message-id:reply-to; bh=MKeFxva4ey5PYa+BWeditG9GTrM3RNTkIf+AqRrPRWg=; b=VjWrqpkRM3EOc1/EeOn741OqwKF4O5sLTrFY6OXnfMFxA2/c1dYi0sS2PjQYEvOzWR QWIGvtdxQSwERHRkkPXOra5Gc2UsJ1B7yKk7esQS1q381UIWSH+Ex9ABVwEm1BhxtOD3 IYnFMZUuElD2oMP1wvcBiV9GA6no+kO5inXHBGzLrkCtP9jcQTPuq9e8Jn2NWBOLRDQ4 vgAUIRWrb+Fy+lAit8nflD+FnhmbVA9SEi8aw8/yg5/NAGShGjf9ZfAuSgY/Y/okWf3h SuC1osmsdf/o5Lo3jXYuRn+fQeMgRE5ocEvdqXouXLPlGc3i6LqIC/N3hvVzq/S5zw5P M9fg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738694425; x=1739299225; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=MKeFxva4ey5PYa+BWeditG9GTrM3RNTkIf+AqRrPRWg=; b=U751ndnaTJSs7eaWbUPuEuNXLdB1CIEjhoFV9DXNzDXFh3P0ZdfDaZm/7j7Vespyj9 YpX3PLAnEeZTDWdUNP3w3EJnbwEaUw3dnkbm2iGphKe2SD0zNjXcOMvgmkvbiqOVbU6f mb2jJc+0P3B/F/+Z/gShKaiNiFWYuJwq9749K7MY+2TYVngYndU5qPSkTpFvXdryb5Ue DAzWJS/t8Lq1w+A6aHCd4Hc6q35IPNSThdVPDBbCXf2TT/A+g/f+IndFhBgIP2wTHV16 TGxzYoZH4Uws/m5YF5kofxkXyV5OHLUj2QldtGiniD6L953at8BOP433VQ3H3baOs1U2 642g== X-Gm-Message-State: AOJu0Yw3zhKajx+TR7ubL9FARnylB3dydBkdAaAF3toePPRogA0aLJif EN+fbIr6cFnXU38GFoLmp5rkQbtZF6lg4nuPM1Nc72ByChCImauREqYiFQ== X-Gm-Gg: ASbGnctjzuYz3Jp9u7CLer0GVpBrvQuiyp9/v9h7jK0Zr09ceiOt9svL6GUI6wSYdgx PK9bGBQGRg5/KS3aR+8l027U9iuvsnd85p3qJQhGDnUwwPYwoNJJXeYRsCL9bSD1lCP/ZHaFtIc YZ7f6iY757Kqhsab39t770S93jo9Zzx8bd1OyiFqBUvu7nhT9uLVpebpr+3vbPlSVMSc6WwKMSJ IZ0ABixF3HkC4eVpckp7VgpR6JVD04kDncdP9b60obJjHA5DXBBN+9mEkFDkD3wtYY3+t8HiCTP ptGV3hjQVhbQ4dvid23gdzMK X-Google-Smtp-Source: AGHT+IFKfynLQHr5hTfFgrBEKGzZAkdwfUZm5EMsQhwuMrPtQW3hpBpF5yu9ov+30wWnZTdFITDhIg== X-Received: by 2002:a17:907:da7:b0:ab3:3b92:8ca5 with SMTP id a640c23a62f3a-ab7483fba3cmr479689766b.12.1738694424433; Tue, 04 Feb 2025 10:40:24 -0800 (PST) Received: from [192.168.0.50] ([79.119.240.253]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ab7008b2c04sm759143466b.33.2025.02.04.10.40.23 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 04 Feb 2025 10:40:24 -0800 (PST) Message-ID: <502f124e-ccf3-4c09-80a4-1e5c5304822b@gmail.com> Date: Tue, 4 Feb 2025 20:40:22 +0200 Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 6/9] wifi: rtw88: Constify some more structs and arrays From: Bitterblue Smith To: "linux-wireless@vger.kernel.org" Cc: Ping-Ke Shih References: <9fc518ae-7708-42c6-99ca-56ee307555b6@gmail.com> Content-Language: en-US In-Reply-To: <9fc518ae-7708-42c6-99ca-56ee307555b6@gmail.com> These structs and arrays are never modified, so make them const: rtw_band_2ghz rtw_band_5ghz rtw_pci_tx_queue_idx_addr rtw_pci_ops rtw_cck_rates rtw_ofdm_rates rtw_ht_1s_rates rtw_ht_2s_rates rtw_vht_1s_rates rtw_vht_2s_rates rtw_rate_section rtw_rate_size rtw_sdio_ops rtw_usb_ops Signed-off-by: Bitterblue Smith --- v2: - Patch is new in v2. --- drivers/net/wireless/realtek/rtw88/main.c | 4 ++-- drivers/net/wireless/realtek/rtw88/main.h | 2 +- drivers/net/wireless/realtek/rtw88/pci.c | 4 ++-- drivers/net/wireless/realtek/rtw88/phy.c | 26 ++++++++++++++--------- drivers/net/wireless/realtek/rtw88/phy.h | 16 +++++++------- drivers/net/wireless/realtek/rtw88/sdio.c | 2 +- drivers/net/wireless/realtek/rtw88/usb.c | 2 +- 7 files changed, 31 insertions(+), 25 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw88/main.c b/drivers/net/wireless/realtek/rtw88/main.c index 0cee0fd8c0ef..8d22df293e78 100644 --- a/drivers/net/wireless/realtek/rtw88/main.c +++ b/drivers/net/wireless/realtek/rtw88/main.c @@ -136,7 +136,7 @@ u16 rtw_desc_to_bitrate(u8 desc_rate) return rate.bitrate; } -static struct ieee80211_supported_band rtw_band_2ghz = { +static const struct ieee80211_supported_band rtw_band_2ghz = { .band = NL80211_BAND_2GHZ, .channels = rtw_channeltable_2g, @@ -149,7 +149,7 @@ static struct ieee80211_supported_band rtw_band_2ghz = { .vht_cap = {0}, }; -static struct ieee80211_supported_band rtw_band_5ghz = { +static const struct ieee80211_supported_band rtw_band_5ghz = { .band = NL80211_BAND_5GHZ, .channels = rtw_channeltable_5g, diff --git a/drivers/net/wireless/realtek/rtw88/main.h b/drivers/net/wireless/realtek/rtw88/main.h index 993c381e734b..c982d9d3c5d7 100644 --- a/drivers/net/wireless/realtek/rtw88/main.h +++ b/drivers/net/wireless/realtek/rtw88/main.h @@ -61,7 +61,7 @@ enum rtw_hci_type { }; struct rtw_hci { - struct rtw_hci_ops *ops; + const struct rtw_hci_ops *ops; enum rtw_hci_type type; u32 rpwm_addr; diff --git a/drivers/net/wireless/realtek/rtw88/pci.c b/drivers/net/wireless/realtek/rtw88/pci.c index 0ecaefc4c83d..bb4c4ccb31d4 100644 --- a/drivers/net/wireless/realtek/rtw88/pci.c +++ b/drivers/net/wireless/realtek/rtw88/pci.c @@ -20,7 +20,7 @@ module_param_named(disable_aspm, rtw_pci_disable_aspm, bool, 0644); MODULE_PARM_DESC(disable_msi, "Set Y to disable MSI interrupt support"); MODULE_PARM_DESC(disable_aspm, "Set Y to disable PCI ASPM support"); -static u32 rtw_pci_tx_queue_idx_addr[] = { +static const u32 rtw_pci_tx_queue_idx_addr[] = { [RTW_TX_QUEUE_BK] = RTK_PCI_TXBD_IDX_BKQ, [RTW_TX_QUEUE_BE] = RTK_PCI_TXBD_IDX_BEQ, [RTW_TX_QUEUE_VI] = RTK_PCI_TXBD_IDX_VIQ, @@ -1591,7 +1591,7 @@ static void rtw_pci_destroy(struct rtw_dev *rtwdev, struct pci_dev *pdev) rtw_pci_io_unmapping(rtwdev, pdev); } -static struct rtw_hci_ops rtw_pci_ops = { +static const struct rtw_hci_ops rtw_pci_ops = { .tx_write = rtw_pci_tx_write, .tx_kick_off = rtw_pci_tx_kick_off, .flush_queues = rtw_pci_flush_queues, diff --git a/drivers/net/wireless/realtek/rtw88/phy.c b/drivers/net/wireless/realtek/rtw88/phy.c index 8ed20c89d216..f6528016973d 100644 --- a/drivers/net/wireless/realtek/rtw88/phy.c +++ b/drivers/net/wireless/realtek/rtw88/phy.c @@ -52,44 +52,50 @@ static const u32 db_invert_table[12][8] = { 1995262315, 2511886432U, 3162277660U, 3981071706U} }; -u8 rtw_cck_rates[] = { DESC_RATE1M, DESC_RATE2M, DESC_RATE5_5M, DESC_RATE11M }; -u8 rtw_ofdm_rates[] = { +const u8 rtw_cck_rates[] = { DESC_RATE1M, DESC_RATE2M, DESC_RATE5_5M, DESC_RATE11M }; + +const u8 rtw_ofdm_rates[] = { DESC_RATE6M, DESC_RATE9M, DESC_RATE12M, DESC_RATE18M, DESC_RATE24M, DESC_RATE36M, DESC_RATE48M, DESC_RATE54M }; -u8 rtw_ht_1s_rates[] = { + +const u8 rtw_ht_1s_rates[] = { DESC_RATEMCS0, DESC_RATEMCS1, DESC_RATEMCS2, DESC_RATEMCS3, DESC_RATEMCS4, DESC_RATEMCS5, DESC_RATEMCS6, DESC_RATEMCS7 }; -u8 rtw_ht_2s_rates[] = { + +const u8 rtw_ht_2s_rates[] = { DESC_RATEMCS8, DESC_RATEMCS9, DESC_RATEMCS10, DESC_RATEMCS11, DESC_RATEMCS12, DESC_RATEMCS13, DESC_RATEMCS14, DESC_RATEMCS15 }; -u8 rtw_vht_1s_rates[] = { + +const u8 rtw_vht_1s_rates[] = { DESC_RATEVHT1SS_MCS0, DESC_RATEVHT1SS_MCS1, DESC_RATEVHT1SS_MCS2, DESC_RATEVHT1SS_MCS3, DESC_RATEVHT1SS_MCS4, DESC_RATEVHT1SS_MCS5, DESC_RATEVHT1SS_MCS6, DESC_RATEVHT1SS_MCS7, DESC_RATEVHT1SS_MCS8, DESC_RATEVHT1SS_MCS9 }; -u8 rtw_vht_2s_rates[] = { + +const u8 rtw_vht_2s_rates[] = { DESC_RATEVHT2SS_MCS0, DESC_RATEVHT2SS_MCS1, DESC_RATEVHT2SS_MCS2, DESC_RATEVHT2SS_MCS3, DESC_RATEVHT2SS_MCS4, DESC_RATEVHT2SS_MCS5, DESC_RATEVHT2SS_MCS6, DESC_RATEVHT2SS_MCS7, DESC_RATEVHT2SS_MCS8, DESC_RATEVHT2SS_MCS9 }; -u8 *rtw_rate_section[RTW_RATE_SECTION_MAX] = { + +const u8 * const rtw_rate_section[RTW_RATE_SECTION_MAX] = { rtw_cck_rates, rtw_ofdm_rates, rtw_ht_1s_rates, rtw_ht_2s_rates, rtw_vht_1s_rates, rtw_vht_2s_rates }; EXPORT_SYMBOL(rtw_rate_section); -u8 rtw_rate_size[RTW_RATE_SECTION_MAX] = { +const u8 rtw_rate_size[RTW_RATE_SECTION_MAX] = { ARRAY_SIZE(rtw_cck_rates), ARRAY_SIZE(rtw_ofdm_rates), ARRAY_SIZE(rtw_ht_1s_rates), @@ -2214,7 +2220,7 @@ static void rtw_phy_set_tx_power_index_by_rs(struct rtw_dev *rtwdev, { struct rtw_hal *hal = &rtwdev->hal; u8 regd = rtw_regd_get(rtwdev); - u8 *rates; + const u8 *rates; u8 size; u8 rate; u8 pwr_idx; @@ -2274,7 +2280,7 @@ EXPORT_SYMBOL(rtw_phy_set_tx_power_level); static void rtw_phy_tx_power_by_rate_config_by_path(struct rtw_hal *hal, u8 path, - u8 rs, u8 size, u8 *rates) + u8 rs, u8 size, const u8 *rates) { u8 rate; u8 base_idx, rate_idx; diff --git a/drivers/net/wireless/realtek/rtw88/phy.h b/drivers/net/wireless/realtek/rtw88/phy.h index ccfcbd3ced03..ce6ee16a77dc 100644 --- a/drivers/net/wireless/realtek/rtw88/phy.h +++ b/drivers/net/wireless/realtek/rtw88/phy.h @@ -7,14 +7,14 @@ #include "debug.h" -extern u8 rtw_cck_rates[]; -extern u8 rtw_ofdm_rates[]; -extern u8 rtw_ht_1s_rates[]; -extern u8 rtw_ht_2s_rates[]; -extern u8 rtw_vht_1s_rates[]; -extern u8 rtw_vht_2s_rates[]; -extern u8 *rtw_rate_section[]; -extern u8 rtw_rate_size[]; +extern const u8 rtw_cck_rates[]; +extern const u8 rtw_ofdm_rates[]; +extern const u8 rtw_ht_1s_rates[]; +extern const u8 rtw_ht_2s_rates[]; +extern const u8 rtw_vht_1s_rates[]; +extern const u8 rtw_vht_2s_rates[]; +extern const u8 * const rtw_rate_section[]; +extern const u8 rtw_rate_size[]; void rtw_phy_init(struct rtw_dev *rtwdev); void rtw_phy_dynamic_mechanism(struct rtw_dev *rtwdev); diff --git a/drivers/net/wireless/realtek/rtw88/sdio.c b/drivers/net/wireless/realtek/rtw88/sdio.c index e024061bdbf7..6209a49312f1 100644 --- a/drivers/net/wireless/realtek/rtw88/sdio.c +++ b/drivers/net/wireless/realtek/rtw88/sdio.c @@ -1147,7 +1147,7 @@ static void rtw_sdio_declaim(struct rtw_dev *rtwdev, sdio_release_host(sdio_func); } -static struct rtw_hci_ops rtw_sdio_ops = { +static const struct rtw_hci_ops rtw_sdio_ops = { .tx_write = rtw_sdio_tx_write, .tx_kick_off = rtw_sdio_tx_kick_off, .setup = rtw_sdio_setup, diff --git a/drivers/net/wireless/realtek/rtw88/usb.c b/drivers/net/wireless/realtek/rtw88/usb.c index c4908db4ff0e..c8092fa0d9f1 100644 --- a/drivers/net/wireless/realtek/rtw88/usb.c +++ b/drivers/net/wireless/realtek/rtw88/usb.c @@ -881,7 +881,7 @@ static void rtw_usb_dynamic_rx_agg(struct rtw_dev *rtwdev, bool enable) } } -static struct rtw_hci_ops rtw_usb_ops = { +static const struct rtw_hci_ops rtw_usb_ops = { .tx_write = rtw_usb_tx_write, .tx_kick_off = rtw_usb_tx_kick_off, .setup = rtw_usb_setup, From patchwork Tue Feb 4 18:40:58 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bitterblue Smith X-Patchwork-Id: 13959616 X-Patchwork-Delegate: pkshih@realtek.com Received: from mail-ed1-f49.google.com (mail-ed1-f49.google.com [209.85.208.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0DF742185BB for ; Tue, 4 Feb 2025 18:41:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738694465; cv=none; b=PHX7v8xVa5WObxeaW27af7MA7ylV6Sl1d8OOLY4B72kWvhhV7R0KxRid++DqVTEBBaew101MKAlsJIq7+aRG1bTdd4QOvXDAwpZkGfjnbaxfeSx77kBwJtbUCBxctbI4xeEhHBKPku1mpgj9YO7jhwNAPI5mlovdGqpIonXx5m4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738694465; c=relaxed/simple; bh=24LKBN5DV5VCd98f1n2/HWgbek8zHRlXR4HpYMY4OnI=; h=Message-ID:Date:MIME-Version:Subject:From:To:Cc:References: In-Reply-To:Content-Type; b=Y9pkRRnsmwGWNvP+nohx1KV2m0JdHK4EyxgkBGiB4X9av8dhURgYPfFAcOl/p0MKcWzWYAqM1OtQfvXUVQ4AZ2prOHubvsz3MLHUavQloO6fDf2meVq0RHOhcE2f9UARrvLusDVcGpTYvGsTpCxFzAlbZuwUukBGSQKK7MvGijU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=FcafSBA4; arc=none smtp.client-ip=209.85.208.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="FcafSBA4" Received: by mail-ed1-f49.google.com with SMTP id 4fb4d7f45d1cf-5da12292b67so9718433a12.3 for ; Tue, 04 Feb 2025 10:41:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738694461; x=1739299261; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id:from:to :cc:subject:date:message-id:reply-to; bh=QTpOiXdIa6atYdsGoHk/XwVWizf68gFzsv9hdAUZUE4=; b=FcafSBA4KNP4PCU1eMHa8RdW9695rJE7Vwz659Rf1u8D4+pHiL01Dfdem//4Eznmy6 VSXwfq+Qx7/jcFcCGBBZEa8Rn/UujN1HNufUvDszFRFTiH3k+qDt8uVojIShInYzOiGX 3PwFF4TVY4AJIXhtEniipCg/FZyBb6TorwmGPmDihy+bOJF48WKX9jbGpCnK7df+ivbX Y7FsNsAOjlKjw20+J4NyVcZClbBpg2tvcYcsFrB2SAGHjSEJZUvacMX0nyR9IHhYauNN vrfofyFjSAI1UTSgybeYLjHcKPMy1bnD02jGg9iqgY8XI/IBxjOqr9YD/Oe5Swzq8GOT hg9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738694461; x=1739299261; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=QTpOiXdIa6atYdsGoHk/XwVWizf68gFzsv9hdAUZUE4=; b=BK1+x5NU3n7OVyC0exGJUa9PZO+wfA5PTPfty9kaF/5ltcAlWDxTvKAmhoDk5fMO9m Ah363eN9b03FAs5yeDVhLkjE+kAFXxODUde3FAybg64WuyTPoF8ExRY0zGc9cyPt/iX6 mtoIgh2dixwjz3emsIR2A+NksBZ2/aGMQV5lmhCyyKzp+WwYqxXygLnuIernE1tq1NFC wFFZKF3X7G2Oup/9MleRRatKhjPBouk55I5sUzGgAZdTVrnYpfPz513YzyqsLjhs04NV COgK2WO3P8oWYKJD5xVQpG7lceS0QEp730BdpvklrsyrcYHNiBoX1LUOwwSKl55fz0p9 T7RQ== X-Gm-Message-State: AOJu0YyllkZu6+ODpz/Q7DpIAyoXNnP4vHKG4iNnv8wHDboOoEoxlqWL kTWGihkKJAT5BpgZq7GgJc28WSuHNXQoyoPNASP/Ejt/n4aepCG9BNdnOQ== X-Gm-Gg: ASbGncvKCS/UhIwVW3nB4RDQWZ/SEuXHE1xID4kDrbFvjx1rP86yenrO3tCAO3jbdcA 5ZRIncVoKccN4BgUrItmuWY4CYiv8M8MApUwlQ8uk2s52J80nlsXqspKNdAPBszoVoyEOAqS7k3 shMfqM0k9rRcmcRApdMSdBYCj6fox2p7OSPwKYOflb6p8u0/r5iH0yMLkVJCmlsYhp4aYUZD6HV 0SVNlanvOP585fiDg1DCn6E6hhUQyIo48T7dMM9TBwQOBGJ7f+jj9K8hp6xbKyac87dt1Lrp9y/ 370cWwP2VMDlWpmjaimywKAF X-Google-Smtp-Source: AGHT+IGC71gPVuBMm5lsFR+wJiNL6ZMuTYiT1hWWxfGfGiBU0y8cNzpn33oY0x2jVLjuQk2ZWdxJaQ== X-Received: by 2002:a05:6402:40d2:b0:5dc:740b:3cdb with SMTP id 4fb4d7f45d1cf-5dcdb7758e5mr165939a12.29.1738694460886; Tue, 04 Feb 2025 10:41:00 -0800 (PST) Received: from [192.168.0.50] ([79.119.240.253]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ab7106178ccsm611483166b.9.2025.02.04.10.40.59 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 04 Feb 2025 10:41:00 -0800 (PST) Message-ID: <5a1c5a46-8ebb-43b0-9ab1-b78e2a22b3d2@gmail.com> Date: Tue, 4 Feb 2025 20:40:58 +0200 Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 7/9] wifi: rtw88: Rename RTW_RATE_SECTION_MAX to RTW_RATE_SECTION_NUM From: Bitterblue Smith To: "linux-wireless@vger.kernel.org" Cc: Ping-Ke Shih References: <9fc518ae-7708-42c6-99ca-56ee307555b6@gmail.com> Content-Language: en-US In-Reply-To: <9fc518ae-7708-42c6-99ca-56ee307555b6@gmail.com> It fits the meaning of the enum better. Signed-off-by: Bitterblue Smith --- v2: - Patch is new in v2. --- drivers/net/wireless/realtek/rtw88/main.h | 12 +++++----- drivers/net/wireless/realtek/rtw88/phy.c | 24 +++++++++---------- drivers/net/wireless/realtek/rtw88/rtw8821c.c | 2 +- drivers/net/wireless/realtek/rtw88/rtw8822b.c | 2 +- drivers/net/wireless/realtek/rtw88/rtw8822c.c | 2 +- drivers/net/wireless/realtek/rtw88/rtw88xxa.c | 2 +- drivers/net/wireless/realtek/rtw88/sar.c | 2 +- 7 files changed, 23 insertions(+), 23 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw88/main.h b/drivers/net/wireless/realtek/rtw88/main.h index c982d9d3c5d7..057141e196e6 100644 --- a/drivers/net/wireless/realtek/rtw88/main.h +++ b/drivers/net/wireless/realtek/rtw88/main.h @@ -168,7 +168,7 @@ enum rtw_rate_section { RTW_RATE_SECTION_VHT_2S, /* keep last */ - RTW_RATE_SECTION_MAX, + RTW_RATE_SECTION_NUM, }; enum rtw_wireless_set { @@ -1937,7 +1937,7 @@ union rtw_sar_cfg { struct rtw_sar { enum rtw_sar_sources src; - union rtw_sar_cfg cfg[RTW_RF_PATH_MAX][RTW_RATE_SECTION_MAX]; + union rtw_sar_cfg cfg[RTW_RF_PATH_MAX][RTW_RATE_SECTION_NUM]; }; struct rtw_hal { @@ -1981,16 +1981,16 @@ struct rtw_hal { s8 tx_pwr_by_rate_offset_5g[RTW_RF_PATH_MAX] [DESC_RATE_MAX]; s8 tx_pwr_by_rate_base_2g[RTW_RF_PATH_MAX] - [RTW_RATE_SECTION_MAX]; + [RTW_RATE_SECTION_NUM]; s8 tx_pwr_by_rate_base_5g[RTW_RF_PATH_MAX] - [RTW_RATE_SECTION_MAX]; + [RTW_RATE_SECTION_NUM]; s8 tx_pwr_limit_2g[RTW_REGD_MAX] [RTW_CHANNEL_WIDTH_MAX] - [RTW_RATE_SECTION_MAX] + [RTW_RATE_SECTION_NUM] [RTW_MAX_CHANNEL_NUM_2G]; s8 tx_pwr_limit_5g[RTW_REGD_MAX] [RTW_CHANNEL_WIDTH_MAX] - [RTW_RATE_SECTION_MAX] + [RTW_RATE_SECTION_NUM] [RTW_MAX_CHANNEL_NUM_5G]; s8 tx_pwr_tbl[RTW_RF_PATH_MAX] [DESC_RATE_MAX]; diff --git a/drivers/net/wireless/realtek/rtw88/phy.c b/drivers/net/wireless/realtek/rtw88/phy.c index f6528016973d..e3a5f8e1e30a 100644 --- a/drivers/net/wireless/realtek/rtw88/phy.c +++ b/drivers/net/wireless/realtek/rtw88/phy.c @@ -88,14 +88,14 @@ const u8 rtw_vht_2s_rates[] = { DESC_RATEVHT2SS_MCS8, DESC_RATEVHT2SS_MCS9 }; -const u8 * const rtw_rate_section[RTW_RATE_SECTION_MAX] = { +const u8 * const rtw_rate_section[RTW_RATE_SECTION_NUM] = { rtw_cck_rates, rtw_ofdm_rates, rtw_ht_1s_rates, rtw_ht_2s_rates, rtw_vht_1s_rates, rtw_vht_2s_rates }; EXPORT_SYMBOL(rtw_rate_section); -const u8 rtw_rate_size[RTW_RATE_SECTION_MAX] = { +const u8 rtw_rate_size[RTW_RATE_SECTION_NUM] = { ARRAY_SIZE(rtw_cck_rates), ARRAY_SIZE(rtw_ofdm_rates), ARRAY_SIZE(rtw_ht_1s_rates), @@ -1596,7 +1596,7 @@ static void rtw_phy_set_tx_power_limit(struct rtw_dev *rtwdev, u8 regd, u8 band, ch_idx = rtw_channel_to_idx(band, ch); if (regd >= RTW_REGD_MAX || bw >= RTW_CHANNEL_WIDTH_MAX || - rs >= RTW_RATE_SECTION_MAX || ch_idx < 0) { + rs >= RTW_RATE_SECTION_NUM || ch_idx < 0) { WARN(1, "wrong txpwr_lmt regd=%u, band=%u bw=%u, rs=%u, ch_idx=%u, pwr_limit=%d\n", regd, band, bw, rs, ch_idx, pwr_limit); @@ -1701,7 +1701,7 @@ rtw_cfg_txpwr_lmt_by_alt(struct rtw_dev *rtwdev, u8 regd, u8 regd_alt) u8 bw, rs; for (bw = 0; bw < RTW_CHANNEL_WIDTH_MAX; bw++) - for (rs = 0; rs < RTW_RATE_SECTION_MAX; rs++) + for (rs = 0; rs < RTW_RATE_SECTION_NUM; rs++) __cfg_txpwr_lmt_by_alt(&rtwdev->hal, regd, regd_alt, bw, rs); } @@ -2060,7 +2060,7 @@ static u8 rtw_phy_get_5g_tx_power_index(struct rtw_dev *rtwdev, return tx_power; } -/* return RTW_RATE_SECTION_MAX to indicate rate is invalid */ +/* return RTW_RATE_SECTION_NUM to indicate rate is invalid */ static u8 rtw_phy_rate_to_rate_section(u8 rate) { if (rate >= DESC_RATE1M && rate <= DESC_RATE11M) @@ -2076,7 +2076,7 @@ static u8 rtw_phy_rate_to_rate_section(u8 rate) else if (rate >= DESC_RATEVHT2SS_MCS0 && rate <= DESC_RATEVHT2SS_MCS9) return RTW_RATE_SECTION_VHT_2S; else - return RTW_RATE_SECTION_MAX; + return RTW_RATE_SECTION_NUM; } static s8 rtw_phy_get_tx_power_limit(struct rtw_dev *rtwdev, u8 band, @@ -2094,7 +2094,7 @@ static s8 rtw_phy_get_tx_power_limit(struct rtw_dev *rtwdev, u8 band, if (regd > RTW_REGD_WW) return power_limit; - if (rs == RTW_RATE_SECTION_MAX) + if (rs == RTW_RATE_SECTION_NUM) goto err; /* only 20M BW with cck and ofdm */ @@ -2138,7 +2138,7 @@ static s8 rtw_phy_get_tx_power_sar(struct rtw_dev *rtwdev, u8 sar_band, .rs = rs, }; - if (rs == RTW_RATE_SECTION_MAX) + if (rs == RTW_RATE_SECTION_NUM) goto err; return rtw_query_sar(rtwdev, &arg); @@ -2227,7 +2227,7 @@ static void rtw_phy_set_tx_power_index_by_rs(struct rtw_dev *rtwdev, u8 bw; int i; - if (rs >= RTW_RATE_SECTION_MAX) + if (rs >= RTW_RATE_SECTION_NUM) return; rates = rtw_rate_section[rs]; @@ -2258,7 +2258,7 @@ static void rtw_phy_set_tx_power_level_by_path(struct rtw_dev *rtwdev, else rs = RTW_RATE_SECTION_OFDM; - for (; rs < RTW_RATE_SECTION_MAX; rs++) + for (; rs < RTW_RATE_SECTION_NUM; rs++) rtw_phy_set_tx_power_index_by_rs(rtwdev, ch, path, rs); } @@ -2353,7 +2353,7 @@ void rtw_phy_tx_power_limit_config(struct rtw_hal *hal) for (regd = 0; regd < RTW_REGD_MAX; regd++) for (bw = 0; bw < RTW_CHANNEL_WIDTH_MAX; bw++) - for (rs = 0; rs < RTW_RATE_SECTION_MAX; rs++) + for (rs = 0; rs < RTW_RATE_SECTION_NUM; rs++) __rtw_phy_tx_power_limit_config(hal, regd, bw, rs); } @@ -2389,7 +2389,7 @@ void rtw_phy_init_tx_power(struct rtw_dev *rtwdev) /* init tx power limit */ for (regd = 0; regd < RTW_REGD_MAX; regd++) for (bw = 0; bw < RTW_CHANNEL_WIDTH_MAX; bw++) - for (rs = 0; rs < RTW_RATE_SECTION_MAX; rs++) + for (rs = 0; rs < RTW_RATE_SECTION_NUM; rs++) rtw_phy_init_tx_power_limit(rtwdev, regd, bw, rs); } diff --git a/drivers/net/wireless/realtek/rtw88/rtw8821c.c b/drivers/net/wireless/realtek/rtw88/rtw8821c.c index cc152248407c..6abb21067aed 100644 --- a/drivers/net/wireless/realtek/rtw88/rtw8821c.c +++ b/drivers/net/wireless/realtek/rtw88/rtw8821c.c @@ -709,7 +709,7 @@ static void rtw8821c_set_tx_power_index(struct rtw_dev *rtwdev) int rs, path; for (path = 0; path < hal->rf_path_num; path++) { - for (rs = 0; rs < RTW_RATE_SECTION_MAX; rs++) { + for (rs = 0; rs < RTW_RATE_SECTION_NUM; rs++) { if (rs == RTW_RATE_SECTION_HT_2S || rs == RTW_RATE_SECTION_VHT_2S) continue; diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822b.c b/drivers/net/wireless/realtek/rtw88/rtw8822b.c index 23a29019752d..742a2a05632e 100644 --- a/drivers/net/wireless/realtek/rtw88/rtw8822b.c +++ b/drivers/net/wireless/realtek/rtw88/rtw8822b.c @@ -964,7 +964,7 @@ static void rtw8822b_set_tx_power_index(struct rtw_dev *rtwdev) int rs, path; for (path = 0; path < hal->rf_path_num; path++) { - for (rs = 0; rs < RTW_RATE_SECTION_MAX; rs++) + for (rs = 0; rs < RTW_RATE_SECTION_NUM; rs++) rtw8822b_set_tx_power_index_by_rate(rtwdev, path, rs, &phy_pwr_idx); } diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822c.c b/drivers/net/wireless/realtek/rtw88/rtw8822c.c index ec362a817f5f..2314d160292a 100644 --- a/drivers/net/wireless/realtek/rtw88/rtw8822c.c +++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.c @@ -2746,7 +2746,7 @@ static void rtw8822c_set_tx_power_index(struct rtw_dev *rtwdev) s8 diff_idx[4]; rtw8822c_set_write_tx_power_ref(rtwdev, pwr_ref_cck, pwr_ref_ofdm); - for (rs = 0; rs < RTW_RATE_SECTION_MAX; rs++) { + for (rs = 0; rs < RTW_RATE_SECTION_NUM; rs++) { for (j = 0; j < rtw_rate_size[rs]; j++) { rate = rtw_rate_section[rs][j]; pwr_a = hal->tx_pwr_tbl[RF_PATH_A][rate]; diff --git a/drivers/net/wireless/realtek/rtw88/rtw88xxa.c b/drivers/net/wireless/realtek/rtw88/rtw88xxa.c index 71e61b9c0bec..109ff42eda82 100644 --- a/drivers/net/wireless/realtek/rtw88/rtw88xxa.c +++ b/drivers/net/wireless/realtek/rtw88/rtw88xxa.c @@ -1637,7 +1637,7 @@ void rtw88xxa_set_tx_power_index(struct rtw_dev *rtwdev) int rs, path; for (path = 0; path < hal->rf_path_num; path++) { - for (rs = 0; rs < RTW_RATE_SECTION_MAX; rs++) { + for (rs = 0; rs < RTW_RATE_SECTION_NUM; rs++) { if (hal->rf_path_num == 1 && (rs == RTW_RATE_SECTION_HT_2S || rs == RTW_RATE_SECTION_VHT_2S)) diff --git a/drivers/net/wireless/realtek/rtw88/sar.c b/drivers/net/wireless/realtek/rtw88/sar.c index c472f1502b82..50b9c2412bb1 100644 --- a/drivers/net/wireless/realtek/rtw88/sar.c +++ b/drivers/net/wireless/realtek/rtw88/sar.c @@ -97,7 +97,7 @@ int rtw_set_sar_specs(struct rtw_dev *rtwdev, power, BIT(RTW_COMMON_SAR_FCT)); for (j = 0; j < RTW_RF_PATH_MAX; j++) { - for (k = 0; k < RTW_RATE_SECTION_MAX; k++) { + for (k = 0; k < RTW_RATE_SECTION_NUM; k++) { arg = (struct rtw_sar_arg){ .sar_band = idx, .path = j, From patchwork Tue Feb 4 18:41:43 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bitterblue Smith X-Patchwork-Id: 13959617 X-Patchwork-Delegate: pkshih@realtek.com Received: from mail-ed1-f53.google.com (mail-ed1-f53.google.com [209.85.208.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B9542212FA5 for ; Tue, 4 Feb 2025 18:41:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738694509; cv=none; b=JdNWECYl38uUM3BSQ7fFSrPnmjmAJzQl3MZQ7Tgbe1xUb4xKCCpov0KUGvoh6BfVma+3SHlrYJV7z05ZGqLrHQUcYtXqkm3D7MrvK/n466b8UmHr7yNSZR8kBVkcsnLk5uaYpc+YEGILkLtDEt2LPK/vN+sOBOo3RKpq9cL4hVI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738694509; c=relaxed/simple; bh=Y4hCgk7oHIpGayPx/69n9voq2LG3ZM/MuxfCme7C6Bw=; h=Message-ID:Date:MIME-Version:Subject:From:To:Cc:References: In-Reply-To:Content-Type; b=JbH1ONTID/oWhumo6dbIJx07m/DorC8kN+6GlW1lLnVP/HiQZYthXnaks9miCJ2TeNDLFxxBGPhW8rTsKMV9/Ms3dw4pRXLXu/12/0tCZEp4Y7sI9QmVzJb65LQy5hcKlULu2PXDfmoChmpyg3bpxIQd7P7LgPqsB2MdVns50Zc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=RR9mG/xK; arc=none smtp.client-ip=209.85.208.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="RR9mG/xK" Received: by mail-ed1-f53.google.com with SMTP id 4fb4d7f45d1cf-5dcca17340fso1631614a12.2 for ; Tue, 04 Feb 2025 10:41:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738694506; x=1739299306; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id:from:to :cc:subject:date:message-id:reply-to; bh=r3pp+q63a7sQf0LCKZr8ksKYVF3o87wD/ONEpTh5Wp0=; b=RR9mG/xKf007Hqm+Z2Mv2+iWUnIqQ72HrtqB5LTMjW27YiMffdgtGLYlu3TgRaV0+d 8A80iDZqbX4f3kUdepzAZA4rOlKybwuYeoLGSSTBkaZngaYWsJk05mMA3P83pZUbQ2Js 6Tf866cNsLspvGero8QUMKjb7wDBU/3xX6oPoGDkYeQsFsH7hRghVRpBmxV4D0XPJsw9 u1byafi4rZi3WeuHJqhYz+0oBMJOTs96Elz8sRp1TByvjh1F4ch/Y81mo0mZ2aHgKWR4 sxDn9D2Eh5MhSCtZuuF54M3VygIjoqmWLCkHwIKREy0LTM0CiLb2peo+RLDpvDV9Vpo3 rt4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738694506; x=1739299306; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=r3pp+q63a7sQf0LCKZr8ksKYVF3o87wD/ONEpTh5Wp0=; b=kKS3PxFjqo0b+mph6yib2NQAWNPWg+EAdP/BVQoYdU1Dk8b+K07vH3pPWn8j7SEfIm TLxPjbaevR8CPFf4Cy4IQAuUC2t2EhiVEpl+M/XQvb6NJfVOWYfz9GaDXkb/lDDpELLK UyAtRMz2111skBSk1AI4p204PmbMdQyX5V1P5ftlW6l8FObqmbV4UKO0GXB5W+vlEFlw sxQ9QpeLUstO72BS1nZCKqr5TcIQml1YlMPcFD3yiyy1fndxOGZrp620SBdQuTmBKpkO hkiHnBgnJ48JVaNBgTXb2aAFrYU1kh/uX2GTaOEg6qy0+FUOgoZjRT9qGhgAQ6dd8V7P 9eOA== X-Gm-Message-State: AOJu0YxMMOzL+uDE1ZoOzUnL8P5N/xthFKA1sZNAP67UlA9M7bU9ABNY JgH0Vkl73TyUFWBOl9X6uVgNcrEkAvFG4r+dVUOTUXJhPIXB6k5B4z39kA== X-Gm-Gg: ASbGncsazaB8EfPsTCjvNGx3+xDNWb+LQAcQnya3FFtoCOCyBAZyDDZRwAwg6NPP5fy /R4IUBMjOB/w2iGmAhYlvNgYs4otDaovL/fiI99PmOgQifWGN2Y3kJ0wPaSeNOKTswRlvJSDz59 nVjmPHjt8CW5MMebPohb9c7LsXEJjxCTEwZiMe87br54TDUBMIt0lsnCl5c8iyBmAbusrizGS/0 Vfe6CQwb4Lirm1d2fu6FQ6u6unNUqXmAWUcUyqMXmC8z3vDO6vgrZMQI1lFRN+Lc5bTVYhgj9HE vieYK1YlZyCOyYfiMoZegIX+ X-Google-Smtp-Source: AGHT+IFfbiU44x4XqYGpJAI+WEPpJ9DtZEwvhmpzyG2ESM9msu5jIjBmLm9/Adwu/0GAh6t8I8jblg== X-Received: by 2002:a05:6402:360e:b0:5dc:5860:6881 with SMTP id 4fb4d7f45d1cf-5dcdb732ffemr105524a12.19.1738694505680; Tue, 04 Feb 2025 10:41:45 -0800 (PST) Received: from [192.168.0.50] ([79.119.240.253]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5dc724055e5sm10155677a12.45.2025.02.04.10.41.43 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 04 Feb 2025 10:41:44 -0800 (PST) Message-ID: Date: Tue, 4 Feb 2025 20:41:43 +0200 Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 8/9] wifi: rtw88: Extend TX power stuff for 3-4 spatial streams From: Bitterblue Smith To: "linux-wireless@vger.kernel.org" Cc: Ping-Ke Shih References: <9fc518ae-7708-42c6-99ca-56ee307555b6@gmail.com> Content-Language: en-US In-Reply-To: <9fc518ae-7708-42c6-99ca-56ee307555b6@gmail.com> Although the RTL8814AU only has 3 spatial streams, maybe some other chip has 4. Correct the TX power index and TX power limit calculations for 3SS and 4SS HT/VHT rates. With this the RTL8814AU can set the TX power correctly. Signed-off-by: Bitterblue Smith --- v2: - Constify the new arrays rtw_ht_3s_rates, rtw_ht_4s_rates, rtw_vht_3s_rates, rtw_vht_4s_rates. - Make rs_cmp static const. - Introduce __RTW_RATE_SECTION_2SS_MAX instead of using RTW_RATE_SECTION_HT_3S in for loops. --- drivers/net/wireless/realtek/rtw88/main.h | 5 + drivers/net/wireless/realtek/rtw88/phy.c | 145 ++++++++++++------ drivers/net/wireless/realtek/rtw88/phy.h | 4 + drivers/net/wireless/realtek/rtw88/rtw8821c.c | 2 +- drivers/net/wireless/realtek/rtw88/rtw8822b.c | 2 +- drivers/net/wireless/realtek/rtw88/rtw8822c.c | 2 +- drivers/net/wireless/realtek/rtw88/rtw88xxa.c | 2 +- 7 files changed, 111 insertions(+), 51 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw88/main.h b/drivers/net/wireless/realtek/rtw88/main.h index 057141e196e6..24ac749271cc 100644 --- a/drivers/net/wireless/realtek/rtw88/main.h +++ b/drivers/net/wireless/realtek/rtw88/main.h @@ -166,6 +166,11 @@ enum rtw_rate_section { RTW_RATE_SECTION_HT_2S, RTW_RATE_SECTION_VHT_1S, RTW_RATE_SECTION_VHT_2S, + __RTW_RATE_SECTION_2SS_MAX = RTW_RATE_SECTION_VHT_2S, + RTW_RATE_SECTION_HT_3S, + RTW_RATE_SECTION_HT_4S, + RTW_RATE_SECTION_VHT_3S, + RTW_RATE_SECTION_VHT_4S, /* keep last */ RTW_RATE_SECTION_NUM, diff --git a/drivers/net/wireless/realtek/rtw88/phy.c b/drivers/net/wireless/realtek/rtw88/phy.c index e3a5f8e1e30a..b487457d2215 100644 --- a/drivers/net/wireless/realtek/rtw88/phy.c +++ b/drivers/net/wireless/realtek/rtw88/phy.c @@ -88,10 +88,40 @@ const u8 rtw_vht_2s_rates[] = { DESC_RATEVHT2SS_MCS8, DESC_RATEVHT2SS_MCS9 }; +const u8 rtw_ht_3s_rates[] = { + DESC_RATEMCS16, DESC_RATEMCS17, DESC_RATEMCS18, + DESC_RATEMCS19, DESC_RATEMCS20, DESC_RATEMCS21, + DESC_RATEMCS22, DESC_RATEMCS23 +}; + +const u8 rtw_ht_4s_rates[] = { + DESC_RATEMCS24, DESC_RATEMCS25, DESC_RATEMCS26, + DESC_RATEMCS27, DESC_RATEMCS28, DESC_RATEMCS29, + DESC_RATEMCS30, DESC_RATEMCS31 +}; + +const u8 rtw_vht_3s_rates[] = { + DESC_RATEVHT3SS_MCS0, DESC_RATEVHT3SS_MCS1, + DESC_RATEVHT3SS_MCS2, DESC_RATEVHT3SS_MCS3, + DESC_RATEVHT3SS_MCS4, DESC_RATEVHT3SS_MCS5, + DESC_RATEVHT3SS_MCS6, DESC_RATEVHT3SS_MCS7, + DESC_RATEVHT3SS_MCS8, DESC_RATEVHT3SS_MCS9 +}; + +const u8 rtw_vht_4s_rates[] = { + DESC_RATEVHT4SS_MCS0, DESC_RATEVHT4SS_MCS1, + DESC_RATEVHT4SS_MCS2, DESC_RATEVHT4SS_MCS3, + DESC_RATEVHT4SS_MCS4, DESC_RATEVHT4SS_MCS5, + DESC_RATEVHT4SS_MCS6, DESC_RATEVHT4SS_MCS7, + DESC_RATEVHT4SS_MCS8, DESC_RATEVHT4SS_MCS9 +}; + const u8 * const rtw_rate_section[RTW_RATE_SECTION_NUM] = { rtw_cck_rates, rtw_ofdm_rates, rtw_ht_1s_rates, rtw_ht_2s_rates, - rtw_vht_1s_rates, rtw_vht_2s_rates + rtw_vht_1s_rates, rtw_vht_2s_rates, + rtw_ht_3s_rates, rtw_ht_4s_rates, + rtw_vht_3s_rates, rtw_vht_4s_rates }; EXPORT_SYMBOL(rtw_rate_section); @@ -101,17 +131,14 @@ const u8 rtw_rate_size[RTW_RATE_SECTION_NUM] = { ARRAY_SIZE(rtw_ht_1s_rates), ARRAY_SIZE(rtw_ht_2s_rates), ARRAY_SIZE(rtw_vht_1s_rates), - ARRAY_SIZE(rtw_vht_2s_rates) + ARRAY_SIZE(rtw_vht_2s_rates), + ARRAY_SIZE(rtw_ht_3s_rates), + ARRAY_SIZE(rtw_ht_4s_rates), + ARRAY_SIZE(rtw_vht_3s_rates), + ARRAY_SIZE(rtw_vht_4s_rates) }; EXPORT_SYMBOL(rtw_rate_size); -static const u8 rtw_cck_size = ARRAY_SIZE(rtw_cck_rates); -static const u8 rtw_ofdm_size = ARRAY_SIZE(rtw_ofdm_rates); -static const u8 rtw_ht_1s_size = ARRAY_SIZE(rtw_ht_1s_rates); -static const u8 rtw_ht_2s_size = ARRAY_SIZE(rtw_ht_2s_rates); -static const u8 rtw_vht_1s_size = ARRAY_SIZE(rtw_vht_1s_rates); -static const u8 rtw_vht_2s_size = ARRAY_SIZE(rtw_vht_2s_rates); - enum rtw_phy_band_type { PHY_BAND_2G = 0, PHY_BAND_5G = 1, @@ -1640,11 +1667,15 @@ rtw_xref_5g_txpwr_lmt(struct rtw_dev *rtwdev, u8 regd, static void rtw_xref_txpwr_lmt_by_rs(struct rtw_dev *rtwdev, u8 regd, u8 bw, u8 ch_idx) { + static const u8 rs_cmp[4][2] = { + {RTW_RATE_SECTION_HT_1S, RTW_RATE_SECTION_VHT_1S}, + {RTW_RATE_SECTION_HT_2S, RTW_RATE_SECTION_VHT_2S}, + {RTW_RATE_SECTION_HT_3S, RTW_RATE_SECTION_VHT_3S}, + {RTW_RATE_SECTION_HT_4S, RTW_RATE_SECTION_VHT_4S} + }; u8 rs_idx, rs_ht, rs_vht; - u8 rs_cmp[2][2] = {{RTW_RATE_SECTION_HT_1S, RTW_RATE_SECTION_VHT_1S}, - {RTW_RATE_SECTION_HT_2S, RTW_RATE_SECTION_VHT_2S} }; - for (rs_idx = 0; rs_idx < 2; rs_idx++) { + for (rs_idx = 0; rs_idx < 4; rs_idx++) { rs_ht = rs_cmp[rs_idx][0]; rs_vht = rs_cmp[rs_idx][1]; @@ -1965,10 +1996,10 @@ static u8 rtw_phy_get_2g_tx_power_index(struct rtw_dev *rtwdev, u8 rate, u8 group) { const struct rtw_chip_info *chip = rtwdev->chip; - u8 tx_power; - bool mcs_rate; - bool above_2ss; + bool above_2ss, above_3ss, above_4ss; u8 factor = chip->txgi_factor; + bool mcs_rate; + u8 tx_power; if (rate <= DESC_RATE11M) tx_power = pwr_idx_2g->cck_base[group]; @@ -1978,11 +2009,15 @@ static u8 rtw_phy_get_2g_tx_power_index(struct rtw_dev *rtwdev, if (rate >= DESC_RATE6M && rate <= DESC_RATE54M) tx_power += pwr_idx_2g->ht_1s_diff.ofdm * factor; - mcs_rate = (rate >= DESC_RATEMCS0 && rate <= DESC_RATEMCS15) || + mcs_rate = (rate >= DESC_RATEMCS0 && rate <= DESC_RATEMCS31) || (rate >= DESC_RATEVHT1SS_MCS0 && - rate <= DESC_RATEVHT2SS_MCS9); - above_2ss = (rate >= DESC_RATEMCS8 && rate <= DESC_RATEMCS15) || + rate <= DESC_RATEVHT4SS_MCS9); + above_2ss = (rate >= DESC_RATEMCS8 && rate <= DESC_RATEMCS31) || (rate >= DESC_RATEVHT2SS_MCS0); + above_3ss = (rate >= DESC_RATEMCS16 && rate <= DESC_RATEMCS31) || + (rate >= DESC_RATEVHT3SS_MCS0); + above_4ss = (rate >= DESC_RATEMCS24 && rate <= DESC_RATEMCS31) || + (rate >= DESC_RATEVHT4SS_MCS0); if (!mcs_rate) return tx_power; @@ -1995,11 +2030,19 @@ static u8 rtw_phy_get_2g_tx_power_index(struct rtw_dev *rtwdev, tx_power += pwr_idx_2g->ht_1s_diff.bw20 * factor; if (above_2ss) tx_power += pwr_idx_2g->ht_2s_diff.bw20 * factor; + if (above_3ss) + tx_power += pwr_idx_2g->ht_3s_diff.bw20 * factor; + if (above_4ss) + tx_power += pwr_idx_2g->ht_4s_diff.bw20 * factor; break; case RTW_CHANNEL_WIDTH_40: /* bw40 is the base power */ if (above_2ss) tx_power += pwr_idx_2g->ht_2s_diff.bw40 * factor; + if (above_3ss) + tx_power += pwr_idx_2g->ht_3s_diff.bw40 * factor; + if (above_4ss) + tx_power += pwr_idx_2g->ht_4s_diff.bw40 * factor; break; } @@ -2012,19 +2055,23 @@ static u8 rtw_phy_get_5g_tx_power_index(struct rtw_dev *rtwdev, u8 rate, u8 group) { const struct rtw_chip_info *chip = rtwdev->chip; - u8 tx_power; + bool above_2ss, above_3ss, above_4ss; + u8 factor = chip->txgi_factor; u8 upper, lower; bool mcs_rate; - bool above_2ss; - u8 factor = chip->txgi_factor; + u8 tx_power; tx_power = pwr_idx_5g->bw40_base[group]; - mcs_rate = (rate >= DESC_RATEMCS0 && rate <= DESC_RATEMCS15) || + mcs_rate = (rate >= DESC_RATEMCS0 && rate <= DESC_RATEMCS31) || (rate >= DESC_RATEVHT1SS_MCS0 && - rate <= DESC_RATEVHT2SS_MCS9); - above_2ss = (rate >= DESC_RATEMCS8 && rate <= DESC_RATEMCS15) || + rate <= DESC_RATEVHT4SS_MCS9); + above_2ss = (rate >= DESC_RATEMCS8 && rate <= DESC_RATEMCS31) || (rate >= DESC_RATEVHT2SS_MCS0); + above_3ss = (rate >= DESC_RATEMCS16 && rate <= DESC_RATEMCS31) || + (rate >= DESC_RATEVHT3SS_MCS0); + above_4ss = (rate >= DESC_RATEMCS24 && rate <= DESC_RATEMCS31) || + (rate >= DESC_RATEVHT4SS_MCS0); if (!mcs_rate) { tx_power += pwr_idx_5g->ht_1s_diff.ofdm * factor; @@ -2039,11 +2086,19 @@ static u8 rtw_phy_get_5g_tx_power_index(struct rtw_dev *rtwdev, tx_power += pwr_idx_5g->ht_1s_diff.bw20 * factor; if (above_2ss) tx_power += pwr_idx_5g->ht_2s_diff.bw20 * factor; + if (above_3ss) + tx_power += pwr_idx_5g->ht_3s_diff.bw20 * factor; + if (above_4ss) + tx_power += pwr_idx_5g->ht_4s_diff.bw20 * factor; break; case RTW_CHANNEL_WIDTH_40: /* bw40 is the base power */ if (above_2ss) tx_power += pwr_idx_5g->ht_2s_diff.bw40 * factor; + if (above_3ss) + tx_power += pwr_idx_5g->ht_3s_diff.bw40 * factor; + if (above_4ss) + tx_power += pwr_idx_5g->ht_4s_diff.bw40 * factor; break; case RTW_CHANNEL_WIDTH_80: /* the base idx of bw80 is the average of bw40+/bw40- */ @@ -2054,6 +2109,10 @@ static u8 rtw_phy_get_5g_tx_power_index(struct rtw_dev *rtwdev, tx_power += pwr_idx_5g->vht_1s_diff.bw80 * factor; if (above_2ss) tx_power += pwr_idx_5g->vht_2s_diff.bw80 * factor; + if (above_3ss) + tx_power += pwr_idx_5g->vht_3s_diff.bw80 * factor; + if (above_4ss) + tx_power += pwr_idx_5g->vht_4s_diff.bw80 * factor; break; } @@ -2071,10 +2130,18 @@ static u8 rtw_phy_rate_to_rate_section(u8 rate) return RTW_RATE_SECTION_HT_1S; else if (rate >= DESC_RATEMCS8 && rate <= DESC_RATEMCS15) return RTW_RATE_SECTION_HT_2S; + else if (rate >= DESC_RATEMCS16 && rate <= DESC_RATEMCS23) + return RTW_RATE_SECTION_HT_3S; + else if (rate >= DESC_RATEMCS24 && rate <= DESC_RATEMCS31) + return RTW_RATE_SECTION_HT_4S; else if (rate >= DESC_RATEVHT1SS_MCS0 && rate <= DESC_RATEVHT1SS_MCS9) return RTW_RATE_SECTION_VHT_1S; else if (rate >= DESC_RATEVHT2SS_MCS0 && rate <= DESC_RATEVHT2SS_MCS9) return RTW_RATE_SECTION_VHT_2S; + else if (rate >= DESC_RATEVHT3SS_MCS0 && rate <= DESC_RATEVHT3SS_MCS9) + return RTW_RATE_SECTION_VHT_3S; + else if (rate >= DESC_RATEVHT4SS_MCS0 && rate <= DESC_RATEVHT4SS_MCS9) + return RTW_RATE_SECTION_VHT_4S; else return RTW_RATE_SECTION_NUM; } @@ -2102,7 +2169,7 @@ static s8 rtw_phy_get_tx_power_limit(struct rtw_dev *rtwdev, u8 band, bw = RTW_CHANNEL_WIDTH_20; /* only 20/40M BW with ht */ - if (rs == RTW_RATE_SECTION_HT_1S || rs == RTW_RATE_SECTION_HT_2S) + if (rate >= DESC_RATEMCS0 && rate <= DESC_RATEMCS31) bw = min_t(u8, bw, RTW_CHANNEL_WIDTH_40); /* select min power limit among [20M BW ~ current BW] */ @@ -2286,7 +2353,7 @@ rtw_phy_tx_power_by_rate_config_by_path(struct rtw_hal *hal, u8 path, u8 base_idx, rate_idx; s8 base_2g, base_5g; - if (rs >= RTW_RATE_SECTION_VHT_1S) + if (size == 10) /* VHT rates */ base_idx = rates[size - 3]; else base_idx = rates[size - 1]; @@ -2303,28 +2370,12 @@ rtw_phy_tx_power_by_rate_config_by_path(struct rtw_hal *hal, u8 path, void rtw_phy_tx_power_by_rate_config(struct rtw_hal *hal) { - u8 path; + u8 path, rs; - for (path = 0; path < RTW_RF_PATH_MAX; path++) { - rtw_phy_tx_power_by_rate_config_by_path(hal, path, - RTW_RATE_SECTION_CCK, - rtw_cck_size, rtw_cck_rates); - rtw_phy_tx_power_by_rate_config_by_path(hal, path, - RTW_RATE_SECTION_OFDM, - rtw_ofdm_size, rtw_ofdm_rates); - rtw_phy_tx_power_by_rate_config_by_path(hal, path, - RTW_RATE_SECTION_HT_1S, - rtw_ht_1s_size, rtw_ht_1s_rates); - rtw_phy_tx_power_by_rate_config_by_path(hal, path, - RTW_RATE_SECTION_HT_2S, - rtw_ht_2s_size, rtw_ht_2s_rates); - rtw_phy_tx_power_by_rate_config_by_path(hal, path, - RTW_RATE_SECTION_VHT_1S, - rtw_vht_1s_size, rtw_vht_1s_rates); - rtw_phy_tx_power_by_rate_config_by_path(hal, path, - RTW_RATE_SECTION_VHT_2S, - rtw_vht_2s_size, rtw_vht_2s_rates); - } + for (path = 0; path < RTW_RF_PATH_MAX; path++) + for (rs = 0; rs < RTW_RATE_SECTION_NUM; rs++) + rtw_phy_tx_power_by_rate_config_by_path(hal, path, rs, + rtw_rate_size[rs], rtw_rate_section[rs]); } static void diff --git a/drivers/net/wireless/realtek/rtw88/phy.h b/drivers/net/wireless/realtek/rtw88/phy.h index ce6ee16a77dc..c9e6b869661d 100644 --- a/drivers/net/wireless/realtek/rtw88/phy.h +++ b/drivers/net/wireless/realtek/rtw88/phy.h @@ -13,6 +13,10 @@ extern const u8 rtw_ht_1s_rates[]; extern const u8 rtw_ht_2s_rates[]; extern const u8 rtw_vht_1s_rates[]; extern const u8 rtw_vht_2s_rates[]; +extern const u8 rtw_ht_3s_rates[]; +extern const u8 rtw_ht_4s_rates[]; +extern const u8 rtw_vht_3s_rates[]; +extern const u8 rtw_vht_4s_rates[]; extern const u8 * const rtw_rate_section[]; extern const u8 rtw_rate_size[]; diff --git a/drivers/net/wireless/realtek/rtw88/rtw8821c.c b/drivers/net/wireless/realtek/rtw88/rtw8821c.c index 6abb21067aed..0ade7f11cbd2 100644 --- a/drivers/net/wireless/realtek/rtw88/rtw8821c.c +++ b/drivers/net/wireless/realtek/rtw88/rtw8821c.c @@ -709,7 +709,7 @@ static void rtw8821c_set_tx_power_index(struct rtw_dev *rtwdev) int rs, path; for (path = 0; path < hal->rf_path_num; path++) { - for (rs = 0; rs < RTW_RATE_SECTION_NUM; rs++) { + for (rs = 0; rs <= __RTW_RATE_SECTION_2SS_MAX; rs++) { if (rs == RTW_RATE_SECTION_HT_2S || rs == RTW_RATE_SECTION_VHT_2S) continue; diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822b.c b/drivers/net/wireless/realtek/rtw88/rtw8822b.c index 742a2a05632e..b4934da88e33 100644 --- a/drivers/net/wireless/realtek/rtw88/rtw8822b.c +++ b/drivers/net/wireless/realtek/rtw88/rtw8822b.c @@ -964,7 +964,7 @@ static void rtw8822b_set_tx_power_index(struct rtw_dev *rtwdev) int rs, path; for (path = 0; path < hal->rf_path_num; path++) { - for (rs = 0; rs < RTW_RATE_SECTION_NUM; rs++) + for (rs = 0; rs <= __RTW_RATE_SECTION_2SS_MAX; rs++) rtw8822b_set_tx_power_index_by_rate(rtwdev, path, rs, &phy_pwr_idx); } diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822c.c b/drivers/net/wireless/realtek/rtw88/rtw8822c.c index 2314d160292a..5e53e0db177e 100644 --- a/drivers/net/wireless/realtek/rtw88/rtw8822c.c +++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.c @@ -2746,7 +2746,7 @@ static void rtw8822c_set_tx_power_index(struct rtw_dev *rtwdev) s8 diff_idx[4]; rtw8822c_set_write_tx_power_ref(rtwdev, pwr_ref_cck, pwr_ref_ofdm); - for (rs = 0; rs < RTW_RATE_SECTION_NUM; rs++) { + for (rs = 0; rs <= __RTW_RATE_SECTION_2SS_MAX; rs++) { for (j = 0; j < rtw_rate_size[rs]; j++) { rate = rtw_rate_section[rs][j]; pwr_a = hal->tx_pwr_tbl[RF_PATH_A][rate]; diff --git a/drivers/net/wireless/realtek/rtw88/rtw88xxa.c b/drivers/net/wireless/realtek/rtw88/rtw88xxa.c index 109ff42eda82..0fa943271fb6 100644 --- a/drivers/net/wireless/realtek/rtw88/rtw88xxa.c +++ b/drivers/net/wireless/realtek/rtw88/rtw88xxa.c @@ -1637,7 +1637,7 @@ void rtw88xxa_set_tx_power_index(struct rtw_dev *rtwdev) int rs, path; for (path = 0; path < hal->rf_path_num; path++) { - for (rs = 0; rs < RTW_RATE_SECTION_NUM; rs++) { + for (rs = 0; rs <= __RTW_RATE_SECTION_2SS_MAX; rs++) { if (hal->rf_path_num == 1 && (rs == RTW_RATE_SECTION_HT_2S || rs == RTW_RATE_SECTION_VHT_2S)) From patchwork Tue Feb 4 18:42:08 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bitterblue Smith X-Patchwork-Id: 13959618 X-Patchwork-Delegate: pkshih@realtek.com Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 57E58212FA5 for ; Tue, 4 Feb 2025 18:42:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738694534; cv=none; b=MxFUjNb1VfXEi8n6OQYWQYOn53aCznr/KZgqIUASoR+t+44cRKCJyvZWiTTp20/i7JM1xlgttUwC/A1hm3AQbE+oIjb6anpax9cBdwrO15DpY1ogGWtylLhKDcF/w8BLPfAIDtXxvETMeNXtf1m03s024Ybfu1qeICULx0JUBbU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738694534; c=relaxed/simple; bh=2iRYT8CAMaCBfscTTLIvgOFiB44rgKP8xvslhjf8H7E=; h=Message-ID:Date:MIME-Version:Subject:From:To:Cc:References: In-Reply-To:Content-Type; b=DOaGRyDsDYUiRRaKPg8zKCeGr3FBRmRJQfBGpHU8Yg9NmynNCNg9ymritJruZA0OFwb1poPqNXuFj3zh9QbQBGV/kAoFve+JWT+3E79GcLkjujKgeBsReiQWegjpgy6cYusw0GenOAaDngzsGQDlkncdcN9Qw2ISAzNrgqhO6Js= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=XUkn91lY; arc=none smtp.client-ip=209.85.208.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="XUkn91lY" Received: by mail-ed1-f47.google.com with SMTP id 4fb4d7f45d1cf-5dcd09af4f9so1441267a12.0 for ; Tue, 04 Feb 2025 10:42:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738694530; x=1739299330; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id:from:to :cc:subject:date:message-id:reply-to; bh=8a+ws9xGIB26df1b1IxmBPvt6VXFNLad3ifZTYSD7+w=; b=XUkn91lYdp373GENPTMBCV9AtBIFAG43awKVdA0orpdDUbzi3guB2RcEv8MbeGP5G2 EKCifxkEqavIIKd7Za71LqhV3VDgs25YOaWX4H5VNU3JNlwjAST4g+G2BO6HG6ml1vcV BWAJKGu8RWBmTAwNq4qF4pVT/1d/lLoyx38GX3YybXjMeyMyJIjlOl0bo1dn694sfhWE c5a1tAHXyx1J/pH6D0LrKqIIUXh01auH2g4TKWy+UaUs6WRaCZ3WKAh+EwQGAcQonrmp lPCCyHn1aRAolOImhEKil5CuUVMMvnni2X9vd4YcEtUUEf4e4oDyVSxgdPmyOuQ7K/m8 0LCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738694530; x=1739299330; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=8a+ws9xGIB26df1b1IxmBPvt6VXFNLad3ifZTYSD7+w=; b=cL+/Pi2hdkLzpqGHHikggBvuGZJ/6rfP5NCWdj8WeRcWeZ50ME0RXLv9dAN6jWb2mZ un5rgHheS2parhL2GnTlh2zzVgOpyr5qcplZ7if6I0LNkZoBRvwq0tIzeFp8rWbWRpwN XPj43R5yrlHCGOTyGjGqRvfICmVoby/8eTv3p7IqGoo2B6vBIg+zHHXtHyqVnDa8pdWL 2MPz4F2IsRj1ocTRw3yXMG5ohfbpmIeWvd3NAgGroWvVGx9Pu6ULqpjuu883YDMMMukb jAGc3HrCMNpUS9LwS6BSe+5lHoyy/CFHEKc+Inof5Nk+/aFIOeb4bnYiV8ZhwT4aZ1BS CmmQ== X-Gm-Message-State: AOJu0Yzt2Q5AZNCgEhXtZGsjACPWoKxsmXjmuo03XFZ9MYXVaI9zB8dk BeRX8ojCdzQIItJcBbzi5BVtHLoKAPoozm+KXMLhgTrBujujeY0cmFuNog== X-Gm-Gg: ASbGncuTbCLyqpKF5d4oMJDtbPuPS6LlUbRMrpHtNluyb+B9TCtePbzwWpNXba3QeLS I71gSNv1Vie7Rz/dlWQwraO1FQWzj2sMHwzs6piivyl3z5qcqatL0KjFcE8i+qfK8owuB6N+/jx WEx6U/8/gQyB4Uo2D59nhYkLFZMqxhtdsTyREESxbydxiVrMSYVPMGMKSogc2B+j/DWY8OWIUzY TLZN09w4T3agHoRyc8RsGo1WkxU1iWM3Fh5WrxV5ZEELn4RXIoxx/SnA0L6yCBdDexF3GxWaxNM GEUOdRSiPVNzjnysremMn1n4 X-Google-Smtp-Source: AGHT+IGtXQxpG8Jfm4YjkKvFp08JocgSMBuz2HqANSXhHqcHSeLcHm/tCX+WDFxJ16SOOicwoDCxfQ== X-Received: by 2002:a05:6402:358d:b0:5dc:cc02:5d25 with SMTP id 4fb4d7f45d1cf-5dcdb73336emr107725a12.11.1738694530376; Tue, 04 Feb 2025 10:42:10 -0800 (PST) Received: from [192.168.0.50] ([79.119.240.253]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5dc87f2e5easm7539267a12.57.2025.02.04.10.42.09 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 04 Feb 2025 10:42:09 -0800 (PST) Message-ID: <48d1d90f-2aeb-4ec5-9a24-0980e10eae1e@gmail.com> Date: Tue, 4 Feb 2025 20:42:08 +0200 Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH v2 9/9] wifi: rtw88: Fix rtw_update_sta_info() for RTL8814AU From: Bitterblue Smith To: "linux-wireless@vger.kernel.org" Cc: Ping-Ke Shih References: <9fc518ae-7708-42c6-99ca-56ee307555b6@gmail.com> Content-Language: en-US In-Reply-To: <9fc518ae-7708-42c6-99ca-56ee307555b6@gmail.com> This function tells the firmware what rates it can use. Put the 3SS and 4SS HT rates supported by the other station into the rate mask. Remove the 3SS and 4SS rates from the rate mask if the hardware only has 2 spatial streams. And finally, select the right rate ID (a parameter for the firmware) when the hardware has 3 spatial streams. Signed-off-by: Bitterblue Smith --- v2: - No change. --- drivers/net/wireless/realtek/rtw88/main.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw88/main.c b/drivers/net/wireless/realtek/rtw88/main.c index 8d22df293e78..e4f9b744f24d 100644 --- a/drivers/net/wireless/realtek/rtw88/main.c +++ b/drivers/net/wireless/realtek/rtw88/main.c @@ -1234,7 +1234,9 @@ void rtw_update_sta_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si, if (sta->deflink.vht_cap.cap & IEEE80211_VHT_CAP_RXLDPC) ldpc_en = VHT_LDPC_EN; } else if (sta->deflink.ht_cap.ht_supported) { - ra_mask |= (sta->deflink.ht_cap.mcs.rx_mask[1] << 20) | + ra_mask |= ((u64)sta->deflink.ht_cap.mcs.rx_mask[3] << 36) | + ((u64)sta->deflink.ht_cap.mcs.rx_mask[2] << 28) | + (sta->deflink.ht_cap.mcs.rx_mask[1] << 20) | (sta->deflink.ht_cap.mcs.rx_mask[0] << 12); if (sta->deflink.ht_cap.cap & IEEE80211_HT_CAP_RX_STBC) stbc_en = HT_STBC_EN; @@ -1244,6 +1246,9 @@ void rtw_update_sta_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si, if (efuse->hw_cap.nss == 1 || rtwdev->hal.txrx_1ss) ra_mask &= RA_MASK_VHT_RATES_1SS | RA_MASK_HT_RATES_1SS; + else if (efuse->hw_cap.nss == 2) + ra_mask &= RA_MASK_VHT_RATES_2SS | RA_MASK_HT_RATES_2SS | + RA_MASK_VHT_RATES_1SS | RA_MASK_HT_RATES_1SS; if (hal->current_band_type == RTW_BAND_5G) { ra_mask |= (u64)sta->deflink.supp_rates[NL80211_BAND_5GHZ] << 4; @@ -1302,10 +1307,9 @@ void rtw_update_sta_info(struct rtw_dev *rtwdev, struct rtw_sta_info *si, break; } - if (sta->deflink.vht_cap.vht_supported && ra_mask & 0xffc00000) - tx_num = 2; - else if (sta->deflink.ht_cap.ht_supported && ra_mask & 0xfff00000) - tx_num = 2; + if (sta->deflink.vht_cap.vht_supported || + sta->deflink.ht_cap.ht_supported) + tx_num = efuse->hw_cap.nss; rate_id = get_rate_id(wireless_set, bw_mode, tx_num);