From nobody Thu Apr 9 15:53:19 2026 Received: from flow-a2-smtp.messagingengine.com (flow-a2-smtp.messagingengine.com [103.168.172.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D08F32550CD; Sat, 7 Mar 2026 00:33:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.137 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843610; cv=none; b=dbRn1gV3CF0Bbl9X9noNa++dHEKwBudS3sG32MDPUivtIbt2z3gezYp/A746FoY4nQYkGxlTqd+bUcAjKW8AgGXHnE67IklcLRLaDWGuP5XwqtUSPEbGImeTmphJjI5s3qQiGtkdLygOpihYNEy9SIqRrkyi8mAfP/sEtzD9Fqw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843610; c=relaxed/simple; bh=1AevVC/l4SWg1OI7JWyQr1m70K/Jf4abzrWW5VnF5BA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=sRYrzEzfZU47mUE5ncmrSL3qfC8RClvf/zsM6KrZh2gDj6AkDOqdttO+prANhV6UiuFKMHgn4IyZm3ZqJxFHJQIo2Lp+P4jmom7B/nXiL7jPioYBXoqwe49fg6PHnvs1t1GLmzlXLS0/kBtv+0uVtIH3IoOSzgEJ+i1z1oQlux4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me; spf=pass smtp.mailfrom=jetm.me; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b=QGRkcMAf; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=CwX8a0ni; arc=none smtp.client-ip=103.168.172.137 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=jetm.me Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b="QGRkcMAf"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="CwX8a0ni" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.phl.internal (Postfix) with ESMTP id 2E6DB1380A0D; Fri, 6 Mar 2026 19:33:28 -0500 (EST) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Fri, 06 Mar 2026 19:33:28 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jetm.me; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1772843608; x=1772850808; bh=CApY8Np2oV4416ggobGvSdXqIAdQQmVHjuoAm9JeX8c=; b= QGRkcMAfcY/ghrQGIvoHQmM8GjfwwdGmJmoq1FOLB1bs86wgq7LDd6Uqhe+DK1VO INpqtzvNaG/ZKXM3yEo4lnyVRB16Px522AQxEnVj6mQHJk0atS2fzRTC6bZSelu1 UGvKuEbggfk3k4EwB6V2EAdXLCtuMsvU5zrRm2Jv146PUrindkF58sYqpTf+ibTp pn60SRFqe4bNhZVtZPfKSfkNWGUSbOXjyrN8Xb1HQQacDCgSRNeaAP615Brn7ljB lBJBIvo9NNrQLqpOM6nK5PLS0NuELANpm/JwmEpfjdH42AmC0ZubTC09bxzG7tad aK0RffcQUvS17fWrbtSDeA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1772843608; x= 1772850808; bh=CApY8Np2oV4416ggobGvSdXqIAdQQmVHjuoAm9JeX8c=; b=C wX8a0niabfUFHJFWXR0A9+KecDCUoXVd3d5qxTZzU49XQS0UUU5zYi5uWm+DvBQU gPU8UOXd2P8DRyg0UErtZ/CMq5iuXRnNDPIR6h43aTjF61wXwOVvHSf9oGFDJyZS igGFy+tsJfVxu8xbCKtTc3b1J3NtGBtMW0bX5/Ul8a4eGnfe4+MvJuneTLmztbea YLpYxdZWBMjLKaJW8ql14XPBtkV1Gob+GyZxbjcvyPXuFoG7hNuRgxapaFBuDGtP T1vZ2uLW1p6aDvgRUMy7hFtHZMCwi5i42r9XrBkTT0FEvCUdlXWz6fZentRIakxr WaR3/PAJIYyNqbeTfb5cA== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgddvjedtjeehucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepve ektdfhffevuddtgfetieevtddvheduhfeggfekveejlefhleefieevueefiefhnecuvehl uhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepfhhlohhsshesjh gvthhmrdhmvgdpnhgspghrtghpthhtohepvdefpdhmohguvgepshhmthhpohhuthdprhgt phhtthhopegrnhhgvghlohhgihhorggttghhihhnohdruggvlhhrvghgnhhosegtohhllh grsghorhgrrdgtohhmpdhrtghpthhtohepfeduleefieefudesghhmrghilhdrtghomhdp rhgtphhtthhopehlohhonhhgrddtgidttdesghhmrghilhdrtghomhdprhgtphhtthhope grrhhivghlrdhrohhsvghnfhgvlhgurdejhedtsehgmhgrihhlrdgtohhmpdhrtghpthht oheptghhrghpuhhishgurghrihhogeesghhmrghilhdrtghomhdprhgtphhtthhopehgih hoshgrlheltdesghhmrghilhdrtghomhdprhgtphhtthhopehmrghtthhhihgrshdrsghg ghesghhmrghilhdrtghomhdprhgtphhtthhopehrrgguohhirdgthhhrihhssehgmhgrih hlrdgtohhmpdhrtghpthhtohepshgrmhhurdhtohhljhgrmhhosehgmhgrihhlrdgtohhm X-ME-Proxy: Feedback-ID: i9dde48b3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 058661EA006B; Fri, 6 Mar 2026 19:33:28 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Fri, 06 Mar 2026 18:33:20 -0600 Subject: [PATCH 01/18] wifi: mt76: mt7925: add MT7927 chip ID helpers Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260306-mt7927-wifi-support-v1-1-c77e7445511d@jetm.me> To: linux-wireless@vger.kernel.org, Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Deren Wu , Ming Yen Hsieh Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Marcin FM , Cristian-Florin Radoi , George Salukvadze , Evgeny Kapusta <3193631@gmail.com>, Samu Toljamo , Ariel Rosenfeld , Chapuis Dario , =?utf-8?q?Thibaut_Fran=C3=A7ois?= , =?utf-8?q?=E5=BC=A0=E6=97=AD=E6=B6=B5?= , Javier Tia X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1809; i=floss@jetm.me; h=from:subject:message-id; bh=1AevVC/l4SWg1OI7JWyQr1m70K/Jf4abzrWW5VnF5BA=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpq3JPxiLy9/rnyv8/hU2nOrG1NZ1F8LD/n7PFx Bh53bFgIQSJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCaatyTwAKCRC17sMLqGd3 H3uvC/43mvQr4QalBZx9Pbd2/1hQVJJQ5Tl5fu0Ffa0NvmJm5IPtXgPaLXGHNFON4NtV47j0A1O VwFB5TLFLuHu+au5zpXARB+apbqjm6yxIcfKqFFUAP+cll7hFbFBLcrQebAJG+6C1NagR0wMg9V KsT+GAtJ2zqJe8xnzh/EeGMlMZpPmQqtnTgLui1AYrYBEWMlkxhh2ceWDMj+77UWf+MQNU0Zi6Q uMCthEI/VFEeFbQ62YUYh9Aywdbc94pg411Z1miGUPChPuLDOs1UFo2UU6SyE68esGjHDiKqpRQ L6d0x2YHZSlVSczopkhJ6DmUe8NlibVMDhNgu0anUMkNJYMc3dogNQfg2adAGInt9oSOSxupd40 yMKE0nVAgh7cw9T3km/jJJdSg43bPkiZAcfqYx+N5pebffAdTgSahjLfaL7z27Y4U7WN3bq9VkD 88Vrv+THzz6MwHiZsT6Q/3TwGmkSWzFXkTFfQA+fEKRhhvcRcpKNYe73/xxS0CNpd7wGo= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> References: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> The MediaTek MT7927 (Filogic 380) combo chip uses MT7927 WiFi silicon that is architecturally compatible with MT7925. Extend is_mt7925() to match chip ID 0x7927, and add is_mt7927() for code paths that need MT7927-specific handling. Also add 0x7927 to is_mt76_fw_txp() to match MT7925's TXP format. Tested-by: Marcin FM Tested-by: Cristian-Florin Radoi Tested-by: George Salukvadze Tested-by: Evgeny Kapusta <3193631@gmail.com> Tested-by: Samu Toljamo Tested-by: Ariel Rosenfeld Tested-by: Chapuis Dario Tested-by: Thibaut Fran=C3=A7ois Tested-by: =E5=BC=A0=E6=97=AD=E6=B6=B5 Signed-off-by: Javier Tia --- drivers/net/wireless/mediatek/mt76/mt76_connac.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt76_connac.h b/drivers/net= /wireless/mediatek/mt76/mt76_connac.h index 813d61bffc2c..bfd5b05c2b20 100644 --- a/drivers/net/wireless/mediatek/mt76/mt76_connac.h +++ b/drivers/net/wireless/mediatek/mt76/mt76_connac.h @@ -174,7 +174,12 @@ extern const struct wiphy_wowlan_support mt76_connac_w= owlan_support; =20 static inline bool is_mt7925(struct mt76_dev *dev) { - return mt76_chip(dev) =3D=3D 0x7925; + return mt76_chip(dev) =3D=3D 0x7925 || mt76_chip(dev) =3D=3D 0x7927; +} + +static inline bool is_mt7927(struct mt76_dev *dev) +{ + return mt76_chip(dev) =3D=3D 0x7927; } =20 static inline bool is_mt7920(struct mt76_dev *dev) @@ -272,6 +277,7 @@ static inline bool is_mt76_fw_txp(struct mt76_dev *dev) case 0x7920: case 0x7922: case 0x7925: + case 0x7927: case 0x7663: case 0x7622: return false; --=20 2.53.0 From nobody Thu Apr 9 15:53:19 2026 Received: from flow-a2-smtp.messagingengine.com (flow-a2-smtp.messagingengine.com [103.168.172.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 61651271468; Sat, 7 Mar 2026 00:33:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.137 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843613; cv=none; b=ISkKi+NSDvP9rUClCJFywkdt1VBLyQ62ZX0QuWuUwnIq89zRSl9reZWYreJcVuHNQ3OIXBwPfXGnCzOdScJE5Pa52AzEqp0vcUP5un62mHFjwOkHil4B7xdCj9Ez2ihH8D6xAQbnNI3Zf5ESX6OP3hLo0oY5vyoudn7CWHxlaqc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843613; c=relaxed/simple; bh=7QkanlILEvogwMwpWy8/BqBW0eINQBelH4+HCMDj77Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=kj19KF1tFSxygBCGGW1/CitgGtzSUzXZ7WWEdOS1QeSggKNfNT71VWoQqrYrAuN0nMzmNcDQZBVSYI9aS6Km3jBydaFgEDp9xaLYVzWN1XBD9Utk/Q+npRUy6QYVQO2Qofz8LaKI9JT6IYNKsjGEoxVM5o8kPabtUp0ztkb5gNA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me; spf=pass smtp.mailfrom=jetm.me; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b=lNetV4vP; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=S7z6H/nX; arc=none smtp.client-ip=103.168.172.137 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=jetm.me Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b="lNetV4vP"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="S7z6H/nX" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.phl.internal (Postfix) with ESMTP id C432E1380A23; Fri, 6 Mar 2026 19:33:31 -0500 (EST) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Fri, 06 Mar 2026 19:33:31 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jetm.me; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1772843611; x=1772850811; bh=aTO5+q1HMGfin+fXE1FWNDxCTM17E1HWlcub7MoIACc=; b= lNetV4vP4BE6DeKPu+5maTox6waDXRXlhHtxjAjtU76Vas1NLGGt8CGBX5lfgMNh o8eDrZ7OSC/gxLkVOSRzCrJ7G/vWJLVionQLufPx0DYT4K9Pd1WQg1AtbLk3DQqd aUN1cSHs3KQJUHCXw/lsHj+f2jO8HXpqwGxJ7fSxZHdWXrNPvh36q4N6B7UZM8Pw 1usJiCQvAi6UAmo6SbjEV/I9/a4bxZQuco8URBLjZffNer2MAPy9P7l+GRVepHcJ UBAZ/WPX7H/fn+i/BRsaZZU6F+AQcRjEdHGttnJFZULy9dHhCNJwPPCaPVyzJATY LEmplIWXXWC87IMmF57Hfg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1772843611; x= 1772850811; bh=aTO5+q1HMGfin+fXE1FWNDxCTM17E1HWlcub7MoIACc=; b=S 7z6H/nXfL7qICjB7EbPnZ7T089Wp0HYaJUzJMTvAVw7F+wnmVO9S1TpOJNN/9E2B S5NGNyhr394XW1XmKj5KERESLVTyvorXOD9eYxuHvbbZobwOYHK/dW/ckyNIoKSY Dor9+rxig/AbHKMR4p+znPYBGSuaQc4wbJHyn4cThjlSlTsPzHIrwlhpLeMCUctr 3R2Up61V0xg4Z1osdWc5aZvHLceIEy5tCZux9GEQcGrrO3kBq+8n/Hgj/BJfG2Mw DAEGBioxUbdHKPPk0OycffQN6ESMynqhoQAFJSuw9WzJHWlGIzGfQJwutZ+vZLJy GWya4Xchl639+aOZvJphw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgddvjedtjeehucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepve ektdfhffevuddtgfetieevtddvheduhfeggfekveejlefhleefieevueefiefhnecuvehl uhhsthgvrhfuihiivgepudenucfrrghrrghmpehmrghilhhfrhhomhepfhhlohhsshesjh gvthhmrdhmvgdpnhgspghrtghpthhtohepvdefpdhmohguvgepshhmthhpohhuthdprhgt phhtthhopegrnhhgvghlohhgihhorggttghhihhnohdruggvlhhrvghgnhhosegtohhllh grsghorhgrrdgtohhmpdhrtghpthhtohepfeduleefieefudesghhmrghilhdrtghomhdp rhgtphhtthhopehlohhonhhgrddtgidttdesghhmrghilhdrtghomhdprhgtphhtthhope grrhhivghlrdhrohhsvghnfhgvlhgurdejhedtsehgmhgrihhlrdgtohhmpdhrtghpthht oheptghhrghpuhhishgurghrihhogeesghhmrghilhdrtghomhdprhgtphhtthhopehgih hoshgrlheltdesghhmrghilhdrtghomhdprhgtphhtthhopehmrghtthhhihgrshdrsghg ghesghhmrghilhdrtghomhdprhgtphhtthhopehrrgguohhirdgthhhrihhssehgmhgrih hlrdgtohhmpdhrtghpthhtohepshgrmhhurdhtohhljhgrmhhosehgmhgrihhlrdgtohhm X-ME-Proxy: Feedback-ID: i9dde48b3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 917011EA006B; Fri, 6 Mar 2026 19:33:31 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Fri, 06 Mar 2026 18:33:21 -0600 Subject: [PATCH 02/18] wifi: mt76: mt7925: add MT7927 firmware paths and PCI device IDs Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260306-mt7927-wifi-support-v1-2-c77e7445511d@jetm.me> To: linux-wireless@vger.kernel.org, Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Deren Wu , Ming Yen Hsieh Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Marcin FM , Cristian-Florin Radoi , George Salukvadze , Evgeny Kapusta <3193631@gmail.com>, Samu Toljamo , Ariel Rosenfeld , Chapuis Dario , =?utf-8?q?Thibaut_Fran=C3=A7ois?= , =?utf-8?q?=E5=BC=A0=E6=97=AD=E6=B6=B5?= , Javier Tia X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=3765; i=floss@jetm.me; h=from:subject:message-id; bh=7QkanlILEvogwMwpWy8/BqBW0eINQBelH4+HCMDj77Y=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpq3JPAzr5BADMojXsGScpYHQT3oByoNn8dhp4w ns3QYv9UFSJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCaatyTwAKCRC17sMLqGd3 HwUAC/sHt4a/vffVtKz6VSNf5zC8vSKzOZkdGsiLTvNSkIIpaypuBwaJ2Kcv/bzPXBTCczHbzyY OrqrPGWAZ27J7d//VpQgntAQ6zJGEIT0skzfeIUps6AiabR7BA0gkLR6gnpyouhooDPSroLonK3 xjhOva5nOJtjExafmfeU0fELiuHGZxZgMc84wVclhD79X6JiNewl5LUK2KiLNG1Di5PZZOu8BDe tKDK6pNTErKTgizcGaR52/hRZEOKljGJyiMBuiJ2Ovof41n3jt1/XSLt0bS1uSf7/K6zsqot+io pFiFiQxip/EmXo98wxUG2q2C67+XcOiXSlkq1vt7kWBNSByxr8vp9R5PWrmjJZy9ja/1UMNVWCR Ar8056vpsl9p4pFblYBzNmWkLHaqUqEPMuQwWxrR3As+4a/STfyumMMS9G+rMFi+ugQHyWOD6YJ ClJgQuZtxrQC2gmJGeefZWIjGwywCInsuzIV1H4bH8CWZUdfFl64SPMwH1mUeMIGOW1Wo= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> References: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> Add PCI device IDs for MT7927 (14c3:7927) and MT7927 (14c3:6639) hardware variants, along with firmware path definitions for the MT7927 WiFi firmware. Known hardware using these IDs: - ASUS ROG Crosshair X870E Hero (14c3:7927) - Lenovo Legion Pro 7 16ARX9 (14c3:7927) - Foxconn/Azurewave modules (14c3:6639) - AMD RZ738 (MediaTek MT7927) (14c3:0738) Tested-by: Marcin FM Tested-by: Cristian-Florin Radoi Tested-by: George Salukvadze Tested-by: Evgeny Kapusta <3193631@gmail.com> Tested-by: Samu Toljamo Tested-by: Ariel Rosenfeld Tested-by: Chapuis Dario Tested-by: Thibaut Fran=C3=A7ois Tested-by: =E5=BC=A0=E6=97=AD=E6=B6=B5 Signed-off-by: Javier Tia --- drivers/net/wireless/mediatek/mt76/mt7925/pci.c | 6 ++++++ drivers/net/wireless/mediatek/mt76/mt792x.h | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c b/drivers/net/= wireless/mediatek/mt76/mt7925/pci.c index c4161754c01d..54eac5c6e509 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/pci.c @@ -16,6 +16,10 @@ static const struct pci_device_id mt7925_pci_device_tabl= e[] =3D { .driver_data =3D (kernel_ulong_t)MT7925_FIRMWARE_WM }, { PCI_DEVICE(PCI_VENDOR_ID_MEDIATEK, 0x0717), .driver_data =3D (kernel_ulong_t)MT7925_FIRMWARE_WM }, + { PCI_DEVICE(PCI_VENDOR_ID_MEDIATEK, 0x7927), + .driver_data =3D (kernel_ulong_t)MT7927_FIRMWARE_WM }, + { PCI_DEVICE(PCI_VENDOR_ID_MEDIATEK, 0x6639), + .driver_data =3D (kernel_ulong_t)MT7927_FIRMWARE_WM }, { }, }; =20 @@ -633,6 +637,8 @@ module_pci_driver(mt7925_pci_driver); MODULE_DEVICE_TABLE(pci, mt7925_pci_device_table); MODULE_FIRMWARE(MT7925_FIRMWARE_WM); MODULE_FIRMWARE(MT7925_ROM_PATCH); +MODULE_FIRMWARE(MT7927_FIRMWARE_WM); +MODULE_FIRMWARE(MT7927_ROM_PATCH); MODULE_AUTHOR("Deren Wu "); MODULE_AUTHOR("Lorenzo Bianconi "); MODULE_DESCRIPTION("MediaTek MT7925E (PCIe) wireless driver"); diff --git a/drivers/net/wireless/mediatek/mt76/mt792x.h b/drivers/net/wire= less/mediatek/mt76/mt792x.h index 8388638ed550..38790ef83e51 100644 --- a/drivers/net/wireless/mediatek/mt76/mt792x.h +++ b/drivers/net/wireless/mediatek/mt76/mt792x.h @@ -45,11 +45,13 @@ #define MT7921_FIRMWARE_WM "mediatek/WIFI_RAM_CODE_MT7961_1.bin" #define MT7922_FIRMWARE_WM "mediatek/WIFI_RAM_CODE_MT7922_1.bin" #define MT7925_FIRMWARE_WM "mediatek/mt7925/WIFI_RAM_CODE_MT7925_1_1.bin" +#define MT7927_FIRMWARE_WM "mediatek/mt7927/WIFI_RAM_CODE_MT6639_2_1.bin" =20 #define MT7920_ROM_PATCH "mediatek/WIFI_MT7961_patch_mcu_1a_2_hdr.bin" #define MT7921_ROM_PATCH "mediatek/WIFI_MT7961_patch_mcu_1_2_hdr.bin" #define MT7922_ROM_PATCH "mediatek/WIFI_MT7922_patch_mcu_1_1_hdr.bin" #define MT7925_ROM_PATCH "mediatek/mt7925/WIFI_MT7925_PATCH_MCU_1_1_hdr.bi= n" +#define MT7927_ROM_PATCH "mediatek/mt7927/WIFI_MT6639_PATCH_MCU_2_1_hdr.bi= n" =20 #define MT792x_SDIO_HDR_TX_BYTES GENMASK(15, 0) #define MT792x_SDIO_HDR_PKT_TYPE GENMASK(17, 16) @@ -454,6 +456,8 @@ static inline char *mt792x_ram_name(struct mt792x_dev *= dev) return MT7922_FIRMWARE_WM; case 0x7925: return MT7925_FIRMWARE_WM; + case 0x7927: + return MT7927_FIRMWARE_WM; default: return MT7921_FIRMWARE_WM; } @@ -468,6 +472,8 @@ static inline char *mt792x_patch_name(struct mt792x_dev= *dev) return MT7922_ROM_PATCH; case 0x7925: return MT7925_ROM_PATCH; + case 0x7927: + return MT7927_ROM_PATCH; default: return MT7921_ROM_PATCH; } --=20 2.53.0 From nobody Thu Apr 9 15:53:19 2026 Received: from flow-a2-smtp.messagingengine.com (flow-a2-smtp.messagingengine.com [103.168.172.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5D90221FF23; Sat, 7 Mar 2026 00:33:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.137 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843619; cv=none; b=EQMbO02JujJsAmvurBwNDH1SPIiRwH2VFCpKmiA6abSb4D2lA+GpNgm0F+BkIwAV901RNrIJuqauB8WTq9ZXAb3eqDY94jtketfbA5CIDFOZhoJ4DoH+gaWbR5jUopAzptFvaD7ClXeygSXnUPFuO4Ge8NkN/eTDOBPmSWsJAjE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843619; c=relaxed/simple; bh=rHhSd4Kdv2//ivF8/gVZZBl8JUQawv/PcEjbvOPS57g=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=t7JvzDwom+gzRLkx9ZI3yl3n9RP2WFr5XHeLxWpTL4QrIkW4snIq8y0Z3vV4HlA0VU5+COZvWAFZunB17tHIerCAshCWKvtOu20LowLSND4jWEy1gRIdsp4y6sd8ocAUBlCjrD1Fgm4IIpJS4nTx9HjRjQevOwHgcmypt4+aZgE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me; spf=pass smtp.mailfrom=jetm.me; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b=np3ZPoHw; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=FiwlW65y; arc=none smtp.client-ip=103.168.172.137 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=jetm.me Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b="np3ZPoHw"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="FiwlW65y" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.phl.internal (Postfix) with ESMTP id B3EC21380A22; Fri, 6 Mar 2026 19:33:34 -0500 (EST) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Fri, 06 Mar 2026 19:33:34 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jetm.me; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1772843614; x=1772850814; bh=HiWZdv/LQon9ciOmz8L9DqJkjYY985xynxWS3KIjPSk=; b= np3ZPoHwXmTyEq1m72lYNp8H+7SMN46wd3cJm6t78op4kUuqCF7sfpxAg3/xXfU7 D+OJcSHUwiz9/V0MK7uiTLFhPKK1Y8CgVL+CMuV96Caq3AOm/lZFtaXiv2DuLwjv Krk75552LVdL42nDKogXi8Z6Xoyuu9CXldKyTQrtPoh/EpObJEAOz2issoVGJuFv zXF+cL3p277jJP877HXBFxRt6tg8FHrU6VF5dkBne6IzQ182kXgz9HinoI6HW22/ +yAOMh4jm7tkQLpjIrIFPzIbmclZFHbgBaN24AmwHIUgReKc7LqO1Jpt/6CuljPK XKhmM1ns2rbfV8j7a/ADIw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1772843614; x= 1772850814; bh=HiWZdv/LQon9ciOmz8L9DqJkjYY985xynxWS3KIjPSk=; b=F iwlW65yXbD000N9vjHc5klXYmv3jpNIJQFk3XkUFxeHiDD2d5JX9GbOeiaogc38t iOo/CjuPJZ/gRf4pRlZdX8e5XFLJCPlxHFot+PgWLj7A2IKqeRsv59WFqHh8VcMs xE9rRpHPDw76xlpxfoFqRfUuC5+YDBH+VODSpdsaBMr/HN3OAsM/5Zp+qfPnbEsd 7JMDBwx7ty6edvwHnugbPgIhWn/H1k9jxtyquQNPmQN/cHWiUT3gPk7j+pYGK10D WgCIkLfpovEjYiEJ/X+UeuMi2V6Ziru9CwGXP9FNzqA6L5W5radqdz9EybUhEvh7 T8F/05gkWM3Y5wd3WLMlg== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgddvjedtjeehucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepve ektdfhffevuddtgfetieevtddvheduhfeggfekveejlefhleefieevueefiefhnecuvehl uhhsthgvrhfuihiivgepudenucfrrghrrghmpehmrghilhhfrhhomhepfhhlohhsshesjh gvthhmrdhmvgdpnhgspghrtghpthhtohepvdefpdhmohguvgepshhmthhpohhuthdprhgt phhtthhopegrnhhgvghlohhgihhorggttghhihhnohdruggvlhhrvghgnhhosegtohhllh grsghorhgrrdgtohhmpdhrtghpthhtohepfeduleefieefudesghhmrghilhdrtghomhdp rhgtphhtthhopehlohhonhhgrddtgidttdesghhmrghilhdrtghomhdprhgtphhtthhope grrhhivghlrdhrohhsvghnfhgvlhgurdejhedtsehgmhgrihhlrdgtohhmpdhrtghpthht oheptghhrghpuhhishgurghrihhogeesghhmrghilhdrtghomhdprhgtphhtthhopehgih hoshgrlheltdesghhmrghilhdrtghomhdprhgtphhtthhopehmrghtthhhihgrshdrsghg ghesghhmrghilhdrtghomhdprhgtphhtthhopehrrgguohhirdgthhhrihhssehgmhgrih hlrdgtohhmpdhrtghpthhtohepshgrmhhurdhtohhljhgrmhhosehgmhgrihhlrdgtohhm X-ME-Proxy: Feedback-ID: i9dde48b3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 892261EA0070; Fri, 6 Mar 2026 19:33:34 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Fri, 06 Mar 2026 18:33:22 -0600 Subject: [PATCH 03/18] wifi: mt76: mt7925: add MT7927 CBTOP remap and chip initialization Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260306-mt7927-wifi-support-v1-3-c77e7445511d@jetm.me> To: linux-wireless@vger.kernel.org, Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Deren Wu , Ming Yen Hsieh Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Marcin FM , Cristian-Florin Radoi , George Salukvadze , Evgeny Kapusta <3193631@gmail.com>, Samu Toljamo , Ariel Rosenfeld , Chapuis Dario , =?utf-8?q?Thibaut_Fran=C3=A7ois?= , =?utf-8?q?=E5=BC=A0=E6=97=AD=E6=B6=B5?= , Javier Tia X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=6368; i=floss@jetm.me; h=from:subject:message-id; bh=rHhSd4Kdv2//ivF8/gVZZBl8JUQawv/PcEjbvOPS57g=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpq3JPiyrKKOKSdFctyZX6j9LnVVIbQdR/FmRNQ nClxj9OT+GJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCaatyTwAKCRC17sMLqGd3 H55GC/4kCCBCugnVE0/RXqAfWcKJ5DSglTPod2jfqYQbEnnhPT3PdYWnMvJAHlxBiXiTHY9AtGw kSZZpM6vraTDpC7xP0WsKS+Tw0bz98W0TU30EF+MUgNHT3rDdfwYW7cG2x9HM1jWtVREIpzq4j5 OcIPQtjBAHxdObMXXl4COgMPQkSHGU1RAc1qcSEgTodFvVdZTKPRj6Y7Ins339Zvok+Fe2petSJ b8QTnekCO80z3DMApwi2I3twVhU6ZurjjjX79rai2HzBICa1dRDMF3xnkQ/M1FcUlOGL5BTJmdC VGmzdtGUBX9M0RfuE1b7ELnUPL+loiyIwJrnAlK7eMA6DRtP+6AwVHewlbdB6QzvJWYeYwvASv7 SfQC5jyFNclvuX/T8eYO4plFk0RxnUrgZS3ji4opKcHDR7Ru7MgAA7rZAeoBkxXwAKFJHvZSHuv +KeGLgOkEsgGS3otYn1SPl3v+FR7IuNyPIau023tXITpNvDyoWxfdP9CV1VYXub5GLQ6E= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> References: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> The MT7927 combo chip has an additional bus fabric called CBInfra (ConnectaBus Infrastructure) between PCIe and the WiFi subsystem. Without configuring the CBTOP address remap, all MMIO reads to WiFi registers return zero. Add mt7927_cbtop_remap() to configure the PCIe address mapping for WiFi and Bluetooth subsystems, and mt7927_chip_init() to perform the CBInfra initialization sequence: 1. EMI sleep protect enable 2. WF subsystem reset via CBInfra RGU 3. MCU ownership acquisition 4. Poll ROMCODE_INDEX for MCU idle (0x1D1E) 5. MCIF remap for host DMA 6. PCIe sleep disable Skip the early CLR_OWN in probe for MT7927 since CBTOP remap is not yet configured at that point - the ROM's WFDMA init would fail. Register values derived from Loong0x00's reverse-engineered MT7927 driver. Tested-by: Marcin FM Tested-by: Cristian-Florin Radoi Tested-by: George Salukvadze Tested-by: Evgeny Kapusta <3193631@gmail.com> Tested-by: Samu Toljamo Tested-by: Ariel Rosenfeld Tested-by: Chapuis Dario Tested-by: Thibaut Fran=C3=A7ois Tested-by: =E5=BC=A0=E6=97=AD=E6=B6=B5 Signed-off-by: Javier Tia --- drivers/net/wireless/mediatek/mt76/mt7925/pci.c | 90 ++++++++++++++++++++= ++-- drivers/net/wireless/mediatek/mt76/mt792x_regs.h | 18 +++++ 2 files changed, 101 insertions(+), 7 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c b/drivers/net/= wireless/mediatek/mt76/mt7925/pci.c index 54eac5c6e509..c16ec05c5601 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/pci.c @@ -270,6 +270,60 @@ static int mt7925_dma_init(struct mt792x_dev *dev) return mt792x_dma_enable(dev); } =20 +static int mt7927_chip_init(struct mt792x_dev *dev) +{ + struct mt76_dev *mdev =3D &dev->mt76; + u32 val; + + /* EMI sleep protect */ + mt76_rmw_field(dev, MT_HW_EMI_CTL, MT_HW_EMI_CTL_SLPPROT_EN, 1); + + /* WF subsystem reset via CBInfra RGU */ + mt76_set(dev, MT_CBINFRA_RGU_WF_RST, MT_CBINFRA_RGU_WF_RST_WF_SUBSYS); + msleep(1); + mt76_clear(dev, MT_CBINFRA_RGU_WF_RST, + MT_CBINFRA_RGU_WF_RST_WF_SUBSYS); + msleep(5); + + /* MCU ownership */ + mt76_wr(dev, MT_CBINFRA_MCU_OWN_SET, BIT(0)); + + /* Poll ROMCODE_INDEX for MCU idle */ + if (!__mt76_poll_msec(mdev, MT_ROMCODE_INDEX, + 0xffff, MT_MCU_IDLE_VALUE, 2000)) { + val =3D mt76_rr(dev, MT_ROMCODE_INDEX); + dev_err(mdev->dev, + "MT7927 MCU idle timeout (ROMCODE_INDEX=3D0x%04x)\n", + val & 0xffff); + return -ETIMEDOUT; + } + + /* MCIF remap - MCU needs this to DMA to host memory */ + mt76_wr(dev, MT_MCIF_REMAP_WF_1_BA, MT_MCIF_REMAP_WF_1_BA_VAL); + + /* Disable PCIe sleep */ + mt76_wr(dev, MT_CBINFRA_SLP_CTRL, 0xffffffff); + + /* Clear CONNINFRA wakeup */ + mt76_wr(dev, MT_CBINFRA_WAKEPU_TOP, 0x0); + + return 0; +} + +static void mt7927_cbtop_remap(struct mt792x_dev *dev) +{ + /* CONNINFRA wakeup - required before CBInfra register access */ + mt76_wr(dev, MT_CBINFRA_WAKEPU_TOP, 0x1); + usleep_range(1000, 2000); + + /* Configure CBTOP PCIe address remap for WF and BT */ + mt76_wr(dev, MT_CBINFRA_MISC0_REMAP_WF, MT_CBINFRA_REMAP_WF_VAL); + mt76_wr(dev, MT_CBINFRA_MISC0_REMAP_BT, MT_CBINFRA_REMAP_BT_VAL); + + /* Readback to push writes */ + mt76_rr(dev, MT_CBINFRA_MISC0_REMAP_WF); +} + static int mt7925_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) { @@ -314,6 +368,7 @@ static int mt7925_pci_probe(struct pci_dev *pdev, struct mt76_bus_ops *bus_ops; struct mt792x_dev *dev; struct mt76_dev *mdev; + bool is_mt7927_hw; u8 features; int ret; u16 cmd; @@ -385,24 +440,45 @@ static int mt7925_pci_probe(struct pci_dev *pdev, if (!mt7925_disable_aspm && mt76_pci_aspm_supported(pdev)) dev->aspm_supported =3D true; =20 + is_mt7927_hw =3D (pdev->device =3D=3D 0x6639 || pdev->device =3D=3D 0x792= 7); + ret =3D __mt792x_mcu_fw_pmctrl(dev); if (ret) goto err_free_dev; =20 - ret =3D __mt792xe_mcu_drv_pmctrl(dev); - if (ret) - goto err_free_dev; + if (!is_mt7927_hw) { + ret =3D __mt792xe_mcu_drv_pmctrl(dev); + if (ret) + goto err_free_dev; + } + + if (is_mt7927_hw) + mt7927_cbtop_remap(dev); =20 mdev->rev =3D (mt76_rr(dev, MT_HW_CHIPID) << 16) | (mt76_rr(dev, MT_HW_REV) & 0xff); =20 dev_info(mdev->dev, "ASIC revision: %04x\n", mdev->rev); =20 - mt76_rmw_field(dev, MT_HW_EMI_CTL, MT_HW_EMI_CTL_SLPPROT_EN, 1); + /* Force chip ID for MT7927 hardware if CHIPID read returns garbage */ + if (is_mt7927_hw && (mdev->rev >> 16) !=3D 0x7927) { + dev_info(mdev->dev, + "MT7927 raw CHIPID=3D0x%04x, forcing chip=3D0x7927\n", + (u16)(mdev->rev >> 16)); + mdev->rev =3D (0x7927 << 16) | (mdev->rev & 0xff); + } =20 - ret =3D mt792x_wfsys_reset(dev); - if (ret) - goto err_free_dev; + if (is_mt7927_hw) { + ret =3D mt7927_chip_init(dev); + if (ret) + goto err_free_dev; + } else { + mt76_rmw_field(dev, MT_HW_EMI_CTL, + MT_HW_EMI_CTL_SLPPROT_EN, 1); + ret =3D mt792x_wfsys_reset(dev); + if (ret) + goto err_free_dev; + } =20 mt76_wr(dev, irq_map.host_irq_enable, 0); =20 diff --git a/drivers/net/wireless/mediatek/mt76/mt792x_regs.h b/drivers/net= /wireless/mediatek/mt76/mt792x_regs.h index acf627aed609..0f75dca0a96c 100644 --- a/drivers/net/wireless/mediatek/mt76/mt792x_regs.h +++ b/drivers/net/wireless/mediatek/mt76/mt792x_regs.h @@ -484,4 +484,22 @@ #define WFSYS_SW_RST_B BIT(0) #define WFSYS_SW_INIT_DONE BIT(4) =20 +/* CBInfra registers - MT7927 combo chip */ +#define MT_CBINFRA_WAKEPU_TOP 0xe01a0 +#define MT_CBINFRA_MISC0_REMAP_WF 0x1f6554 +#define MT_CBINFRA_MISC0_REMAP_BT 0x1f6558 +#define MT_CBINFRA_RGU_WF_RST 0x1f8600 +#define MT_CBINFRA_RGU_WF_RST_WF_SUBSYS BIT(4) +#define MT_CBINFRA_MCU_OWN_SET 0x1f5034 +#define MT_CBINFRA_SLP_CTRL 0x1f5018 +#define MT_ROMCODE_INDEX 0xc1604 +#define MT_MCU_IDLE_VALUE 0x1d1e +#define MT_MCIF_REMAP_WF_1_BA 0xd1034 + +/* CBInfra CBTOP remap values */ +#define MT_CBINFRA_REMAP_WF_VAL 0x74037001 +#define MT_CBINFRA_REMAP_BT_VAL 0x70007000 + +#define MT_MCIF_REMAP_WF_1_BA_VAL 0x18051803 + #endif /* __MT792X_REGS_H */ --=20 2.53.0 From nobody Thu Apr 9 15:53:19 2026 Received: from flow-a2-smtp.messagingengine.com (flow-a2-smtp.messagingengine.com [103.168.172.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 52F537260F; Sat, 7 Mar 2026 00:33:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.137 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843619; cv=none; b=TiGJKtbPkv6GMGNsDK6tP9BBHCJqLP64LHJ3JUJDQh583wEtECQ4qfatVxSX/pD/vtQb+P5XlnfryPm/7qga3pPliASLHK665onZjNgC37n4tAk4FOWKXVD41sWkRrwq4CdgSkoFKdR8RIbnyp4wJev2WANSWwysnQwXsg4W23g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843619; c=relaxed/simple; bh=8zfhMOtWs+2kWv6+lZNYGSFtF0CiUOkcbGyNzxMtulM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=K0zY7QWMMhEscwEYBctdOkTCzL5kYA2xo2Mwd5WE0hRr71aaD6qXuyHywm0f3OSEoa09gljsRBis80jIIwBKDucIVWHtEZ29W6WNJXB9jYGXDrehglpWTpR1tiVsh2je3wDfRk8/2qGOstABXrKUn/8KrXBgzqdd9E1j9ALoFiM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me; spf=pass smtp.mailfrom=jetm.me; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b=IYezvKXs; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=KBOEg1A7; arc=none smtp.client-ip=103.168.172.137 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=jetm.me Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b="IYezvKXs"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="KBOEg1A7" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.phl.internal (Postfix) with ESMTP id A53F01380A33; Fri, 6 Mar 2026 19:33:37 -0500 (EST) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Fri, 06 Mar 2026 19:33:37 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jetm.me; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1772843617; x=1772850817; bh=4LPE2Xh6GFbLLDd1lbS31oigF2wohFyU0b17pySzriw=; b= IYezvKXsYWOOT1e34w490FiWBeEHh28UQ5xC8z8/Lu+yb8Vv0bt8yJE9QNYFLFQq S2MkcpU+DGDJ72ZKItkdkKje32iJtU37s5oYVYZWAy3r1lO+LEnG3gNNOB+chTNF rHF57sIbT6hXmq9QmfvZtlSQTiB/ULhnOnGI9ehPEhJPQ1Eu2xsqX/LKUX5wLau/ ap20c8roah7jqwsqXKSl434Qzdhf2GCjCySS9n82jvGUjfL++wG+z5ZtO5L3ReHD erYiD1SDmSqMQt+8g1+nkQVKTjkJXlYb5i2RmM5O8Jw33KSgcX10b3euqGWV+S+D zjX5Alnv5QBmkbdq8UkDCA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1772843617; x= 1772850817; bh=4LPE2Xh6GFbLLDd1lbS31oigF2wohFyU0b17pySzriw=; b=K BOEg1A7y5EfwGb5ZhMtER4rphrhY3jD4yd6johf9s5iqZ0lnxkv7AxVq0JeMzAd1 8TdEpodrZogV82VhYFfKVziqzhd+IdlotSx8lShuPngJ0IJrI0Hy2NNKNnQJpYQN KkK/0dQ4o6SIDF2eSSrgFSFQUjxzyEnBHJfnqbLvj97u0yNtEDBJQyJSM0Ys5y/M j5+LWSa4pFw1Dat9Q3AZd3qoIt4ogs0vZCNWjBfYR8fD02lMb1mjM0rf3Yf32ZOs 69/wrkBd8PUmuf3dRxip2is6qjbs1nZt+4Lu3DD5xgHcoUFuKC+yRveNWJkGwia/ V7z2Hx3YgNHRRDR0l0chQ== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgddvjedtjeehucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepve ektdfhffevuddtgfetieevtddvheduhfeggfekveejlefhleefieevueefiefhnecuvehl uhhsthgvrhfuihiivgepfeenucfrrghrrghmpehmrghilhhfrhhomhepfhhlohhsshesjh gvthhmrdhmvgdpnhgspghrtghpthhtohepvdefpdhmohguvgepshhmthhpohhuthdprhgt phhtthhopegrnhhgvghlohhgihhorggttghhihhnohdruggvlhhrvghgnhhosegtohhllh grsghorhgrrdgtohhmpdhrtghpthhtohepfeduleefieefudesghhmrghilhdrtghomhdp rhgtphhtthhopehlohhonhhgrddtgidttdesghhmrghilhdrtghomhdprhgtphhtthhope grrhhivghlrdhrohhsvghnfhgvlhgurdejhedtsehgmhgrihhlrdgtohhmpdhrtghpthht oheptghhrghpuhhishgurghrihhogeesghhmrghilhdrtghomhdprhgtphhtthhopehgih hoshgrlheltdesghhmrghilhdrtghomhdprhgtphhtthhopehmrghtthhhihgrshdrsghg ghesghhmrghilhdrtghomhdprhgtphhtthhopehrrgguohhirdgthhhrihhssehgmhgrih hlrdgtohhmpdhrtghpthhtohepshgrmhhurdhtohhljhgrmhhosehgmhgrihhlrdgtohhm X-ME-Proxy: Feedback-ID: i9dde48b3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 7AB731EA006B; Fri, 6 Mar 2026 19:33:37 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Fri, 06 Mar 2026 18:33:23 -0600 Subject: [PATCH 04/18] wifi: mt76: mt7925: add MT7927 DMA ring layout, IRQ map, and prefetch Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260306-mt7927-wifi-support-v1-4-c77e7445511d@jetm.me> To: linux-wireless@vger.kernel.org, Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Deren Wu , Ming Yen Hsieh Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Marcin FM , Cristian-Florin Radoi , George Salukvadze , Evgeny Kapusta <3193631@gmail.com>, Samu Toljamo , Ariel Rosenfeld , Chapuis Dario , =?utf-8?q?Thibaut_Fran=C3=A7ois?= , =?utf-8?q?=E5=BC=A0=E6=97=AD=E6=B6=B5?= , Javier Tia X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=9458; i=floss@jetm.me; h=from:subject:message-id; bh=8zfhMOtWs+2kWv6+lZNYGSFtF0CiUOkcbGyNzxMtulM=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpq3JPDcN4EZIh8w99bmnglLQxhPexUJkRzdoAm TLp1O72VFaJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCaatyTwAKCRC17sMLqGd3 HyiLDAC7XMXjWLxKNV/65He1u/7DAZUZPJVNeWO7WhTWlqQGOh5FHZWWUvXDLHzClDjraxqib5D J31/3SsPSC2pLvii8cJnND+mr7IKH5HtlQeEr/dIqDuQ9TaUPL/KISyCOEB0/yALo5RgxpEP2HG vhoC9EqjGs6V3BVw1bZC5kcvdhRofH1K8TwrWAXT6Vs/mSJ7UcMs5iiVoFKabRSk16EbvppwSAw 2+iE6epTe6bjtPgyT91HOTAqd4x1VfqFiWeIbuOIon+O7FzDw9+GRUTWo5D6+x19Qlqr3r4qZMN LxQxPptA0wL4TmnbUiNl//j1Y2vsHJaWwrJhv2Myp2fTEF8ICFib85b5+n4hcVzbwIhXO4BOGDi GqRBrXK/mUuK0/IzeyPQVxzQFhq9Tt4B2PkbwJIOxMqXoIVj9r8XaETC+Z4np6klUQosj/YGC1j 4UwL1Pken+1ioHWDyW+imRowsSOc5lTCJrTp32MEMAq4DRQmbjQEkxU+wGyHw2R9YR3do= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> References: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> MT7927 uses different DMA ring indices than MT7925: - RX MCU events: ring 6 (MT7925 uses ring 0) - RX data: ring 4 (MT7925 uses ring 2) - RX auxiliary: ring 7 (management frames) - TX rings are identical Add mt7927_dma_init() with the correct ring allocation, a dedicated mt7927_irq_map with matching interrupt enable bits (BIT(12), BIT(14), BIT(15) for RX rings 4, 6, 7), and MT7927 packed prefetch register configuration in mt792x_dma_prefetch(). The DMA init performs a controlled SET_OWN/CLR_OWN sequence after CBTOP and CBInfra initialization, since CLR_OWN triggers the ROM to initialize WFDMA. Ring layout and prefetch values derived from Loong0x00's reverse-engineered MT7927 driver. Tested-by: Marcin FM Tested-by: Cristian-Florin Radoi Tested-by: George Salukvadze Tested-by: Evgeny Kapusta <3193631@gmail.com> Tested-by: Samu Toljamo Tested-by: Ariel Rosenfeld Tested-by: Chapuis Dario Tested-by: Thibaut Fran=C3=A7ois Tested-by: =E5=BC=A0=E6=97=AD=E6=B6=B5 Signed-off-by: Javier Tia --- drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h | 7 ++ drivers/net/wireless/mediatek/mt76/mt7925/pci.c | 131 +++++++++++++++++= +++- drivers/net/wireless/mediatek/mt76/mt792x_dma.c | 18 ++- drivers/net/wireless/mediatek/mt76/mt792x_regs.h | 10 ++ 4 files changed, 163 insertions(+), 3 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h b/drivers/n= et/wireless/mediatek/mt76/mt7925/mt7925.h index 6b9bf1b89032..ba3d2c4de4ce 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h +++ b/drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h @@ -126,6 +126,13 @@ enum mt7925_rxq_id { MT7925_RXQ_MCU_WM2, /* for tx done */ }; =20 +/* MT7927 uses different RX ring indices than MT7925 */ +enum mt7927_rxq_id { + MT7927_RXQ_BAND0 =3D 4, + MT7927_RXQ_MCU_WM =3D 6, + MT7927_RXQ_DATA2 =3D 7, +}; + enum { MODE_OPEN =3D 0, MODE_SHARED =3D 1, diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c b/drivers/net/= wireless/mediatek/mt76/mt7925/pci.c index c16ec05c5601..ca9ccfe9975c 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/pci.c @@ -324,6 +324,127 @@ static void mt7927_cbtop_remap(struct mt792x_dev *dev) mt76_rr(dev, MT_CBINFRA_MISC0_REMAP_WF); } =20 +static int mt7927_dma_init(struct mt792x_dev *dev) +{ + int ret; + + mt76_dma_attach(&dev->mt76); + + /* Do SET_OWN -> CLR_OWN now that CBTOP and CBInfra are ready. + * CLR_OWN triggers the ROM to initialize WFDMA properly. */ + ret =3D mt792xe_mcu_fw_pmctrl(dev); + if (ret) + return ret; + + ret =3D __mt792xe_mcu_drv_pmctrl(dev); + if (ret) + return ret; + + /* Clear pending interrupts from previous state */ + mt76_wr(dev, MT_WFDMA0_HOST_INT_STA, ~0); + + /* Disable DMA */ + mt76_clear(dev, MT_WFDMA0_GLO_CFG, + MT_WFDMA0_GLO_CFG_TX_DMA_EN | + MT_WFDMA0_GLO_CFG_RX_DMA_EN | + MT_WFDMA0_GLO_CFG_CSR_DISP_BASE_PTR_CHAIN_EN | + MT_WFDMA0_GLO_CFG_OMIT_TX_INFO | + MT_WFDMA0_GLO_CFG_OMIT_RX_INFO_PFET2); + wmb(); + + if (!mt76_poll_msec_tick(dev, MT_WFDMA0_GLO_CFG, + MT_WFDMA0_GLO_CFG_TX_DMA_BUSY | + MT_WFDMA0_GLO_CFG_RX_DMA_BUSY, 0, 100, 1)) + return -ETIMEDOUT; + + /* Reset DMA descriptor pointers */ + mt76_wr(dev, MT_WFDMA0_RST_DTX_PTR, ~0); + mt76_wr(dev, MT_WFDMA0_RST_DRX_PTR, ~0); + wmb(); + msleep(10); + + /* init tx queue - ring 0 */ + ret =3D mt76_connac_init_tx_queues(dev->phy.mt76, MT7925_TXQ_BAND0, + MT7925_TX_RING_SIZE, + MT_TX_RING_BASE, NULL, 0); + if (ret) + return ret; + + mt76_wr(dev, MT_WFDMA0_TX_RING0_EXT_CTRL, 0x4); + + /* command to WM - ring 15 */ + ret =3D mt76_init_mcu_queue(&dev->mt76, MT_MCUQ_WM, + MT7925_TXQ_MCU_WM, + MT7925_TX_MCU_RING_SIZE, MT_TX_RING_BASE); + if (ret) + return ret; + + /* firmware download - ring 16 */ + ret =3D mt76_init_mcu_queue(&dev->mt76, MT_MCUQ_FWDL, + MT7925_TXQ_FWDL, + MT7925_TX_FWDL_RING_SIZE, MT_TX_RING_BASE); + if (ret) + return ret; + + /* rx MCU events - ring 6 (MT7925 uses ring 0) */ + ret =3D mt76_queue_alloc(dev, &dev->mt76.q_rx[MT_RXQ_MCU], + MT7927_RXQ_MCU_WM, MT7925_RX_MCU_RING_SIZE, + MT_RX_BUF_SIZE, MT_RX_EVENT_RING_BASE); + if (ret) + return ret; + + /* rx data - ring 4 (MT7925 uses ring 2) */ + ret =3D mt76_queue_alloc(dev, &dev->mt76.q_rx[MT_RXQ_MAIN], + MT7927_RXQ_BAND0, MT7925_RX_RING_SIZE, + MT_RX_BUF_SIZE, MT_RX_DATA_RING_BASE); + if (ret) + return ret; + + /* rx auxiliary - ring 7: management frames */ + ret =3D mt76_queue_alloc(dev, &dev->mt76.q_rx[MT_RXQ_MCU_WA], + MT7927_RXQ_DATA2, MT7925_RX_MCU_RING_SIZE, + MT_RX_BUF_SIZE, MT_RX_DATA_RING_BASE); + if (ret) + return ret; + + ret =3D mt76_init_queues(dev, mt792x_poll_rx); + if (ret < 0) + return ret; + + netif_napi_add_tx(dev->mt76.tx_napi_dev, &dev->mt76.tx_napi, + mt792x_poll_tx); + napi_enable(&dev->mt76.tx_napi); + + /* MT7927-specific GLO_CFG bits before DMA enable */ + mt76_set(dev, MT_WFDMA0_GLO_CFG, BIT(26)); /* ADDR_EXT_EN */ + mt76_clear(dev, MT_WFDMA0_GLO_CFG, BIT(20)); /* CSR_LBK_RX_Q_SEL_EN */ + mt76_set(dev, MT_WFDMA0_GLO_CFG_EXT1, BIT(28)); + mt76_set(dev, MT_WFDMA0_GLO_CFG, + MT_WFDMA0_GLO_CFG_FW_DWLD_BYPASS_DMASHDL); + + ret =3D mt792x_dma_enable(dev); + if (ret) + return ret; + + /* Enable interrupts synchronously */ + mt76_wr(dev, MT_WFDMA0_HOST_INT_ENA, dev->mt76.mmio.irqmask); + + return 0; +} + +static const struct mt792x_irq_map mt7927_irq_map =3D { + .host_irq_enable =3D MT_WFDMA0_HOST_INT_ENA, + .tx =3D { + .all_complete_mask =3D MT_INT_TX_DONE_ALL, + .mcu_complete_mask =3D MT_INT_TX_DONE_MCU, + }, + .rx =3D { + .data_complete_mask =3D HOST_RX_DONE_INT_ENA4, + .wm_complete_mask =3D HOST_RX_DONE_INT_ENA6, + .wm2_complete_mask =3D HOST_RX_DONE_INT_ENA7, + }, +}; + static int mt7925_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) { @@ -417,7 +538,10 @@ static int mt7925_pci_probe(struct pci_dev *pdev, dev =3D container_of(mdev, struct mt792x_dev, mt76); dev->fw_features =3D features; dev->hif_ops =3D &mt7925_pcie_ops; - dev->irq_map =3D &irq_map; + if (is_mt7927_hw) + dev->irq_map =3D &mt7927_irq_map; + else + dev->irq_map =3D &irq_map; mt76_mmio_init(&dev->mt76, pcim_iomap_table(pdev)[0]); tasklet_init(&mdev->irq_tasklet, mt792x_irq_tasklet, (unsigned long)dev); =20 @@ -489,7 +613,10 @@ static int mt7925_pci_probe(struct pci_dev *pdev, if (ret) goto err_free_dev; =20 - ret =3D mt7925_dma_init(dev); + if (is_mt7927_hw) + ret =3D mt7927_dma_init(dev); + else + ret =3D mt7925_dma_init(dev); if (ret) goto err_free_irq; =20 diff --git a/drivers/net/wireless/mediatek/mt76/mt792x_dma.c b/drivers/net/= wireless/mediatek/mt76/mt792x_dma.c index 1ddec7788b66..3177c6cc6eb5 100644 --- a/drivers/net/wireless/mediatek/mt76/mt792x_dma.c +++ b/drivers/net/wireless/mediatek/mt76/mt792x_dma.c @@ -90,7 +90,23 @@ EXPORT_SYMBOL_GPL(mt792x_rx_poll_complete); #define PREFETCH(base, depth) ((base) << 16 | (depth)) static void mt792x_dma_prefetch(struct mt792x_dev *dev) { - if (is_mt7925(&dev->mt76)) { + if (is_mt7927(&dev->mt76)) { + /* Trigger prefetch controller reset before reprogramming */ + mt76_wr(dev, MT_WFDMA_PREFETCH_CTRL, + mt76_rr(dev, MT_WFDMA_PREFETCH_CTRL)); + /* MT7927 uses packed prefetch registers */ + mt76_wr(dev, MT_WFDMA_PREFETCH_CFG0, 0x660077); + mt76_wr(dev, MT_WFDMA_PREFETCH_CFG1, 0x1100); + mt76_wr(dev, MT_WFDMA_PREFETCH_CFG2, 0x30004f); + mt76_wr(dev, MT_WFDMA_PREFETCH_CFG3, 0x542200); + /* per-ring EXT_CTRL */ + mt76_wr(dev, MT_WFDMA0_RX_RING4_EXT_CTRL, PREFETCH(0x0000, 0x8)); + mt76_wr(dev, MT_WFDMA0_RX_RING6_EXT_CTRL, PREFETCH(0x0080, 0x8)); + mt76_wr(dev, MT_WFDMA0_RX_RING7_EXT_CTRL, PREFETCH(0x0100, 0x4)); + mt76_wr(dev, MT_WFDMA0_TX_RING16_EXT_CTRL, PREFETCH(0x0140, 0x4)); + mt76_wr(dev, MT_WFDMA0_TX_RING15_EXT_CTRL, PREFETCH(0x0180, 0x10)); + mt76_wr(dev, MT_WFDMA0_TX_RING0_EXT_CTRL, PREFETCH(0x0280, 0x4)); + } else if (is_mt7925(&dev->mt76)) { /* rx ring */ mt76_wr(dev, MT_WFDMA0_RX_RING0_EXT_CTRL, PREFETCH(0x0000, 0x4)); mt76_wr(dev, MT_WFDMA0_RX_RING1_EXT_CTRL, PREFETCH(0x0040, 0x4)); diff --git a/drivers/net/wireless/mediatek/mt76/mt792x_regs.h b/drivers/net= /wireless/mediatek/mt76/mt792x_regs.h index 0f75dca0a96c..5497cfaab8d7 100644 --- a/drivers/net/wireless/mediatek/mt76/mt792x_regs.h +++ b/drivers/net/wireless/mediatek/mt76/mt792x_regs.h @@ -363,6 +363,16 @@ #define MT_WFDMA_EXT_CSR_HIF_MISC MT_WFDMA_EXT_CSR(0x44) #define MT_WFDMA_EXT_CSR_HIF_MISC_BUSY BIT(0) =20 +/* MT7927 packed prefetch registers */ +#define MT_WFDMA_PREFETCH_CTRL MT_WFDMA_EXT_CSR(0x30) +#define MT_WFDMA_PREFETCH_CFG0 MT_WFDMA_EXT_CSR(0xf0) +#define MT_WFDMA_PREFETCH_CFG1 MT_WFDMA_EXT_CSR(0xf4) +#define MT_WFDMA_PREFETCH_CFG2 MT_WFDMA_EXT_CSR(0xf8) +#define MT_WFDMA_PREFETCH_CFG3 MT_WFDMA_EXT_CSR(0xfc) + +/* MT7927 GLO_CFG extended register */ +#define MT_WFDMA0_GLO_CFG_EXT1 MT_WFDMA0(0x2b4) + #define MT_SWDEF_BASE 0x41f200 #define MT_SWDEF(ofs) (MT_SWDEF_BASE + (ofs)) #define MT_SWDEF_MODE MT_SWDEF(0x3c) --=20 2.53.0 From nobody Thu Apr 9 15:53:19 2026 Received: from flow-a2-smtp.messagingengine.com (flow-a2-smtp.messagingengine.com [103.168.172.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3AA0528507E; Sat, 7 Mar 2026 00:33:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.137 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843622; cv=none; b=nca6l6rN59+pMXilfGH0lQb05QUhXzy98cOG0h7XjB4Hoe6btT2yX0XpxL7uxkITMEwZJ4tgg3Dbn02Y0obo7dhOzru1r4Ox7jKCsbGpcvDLDWg0JwJOXRek+CH2BP8X0wjXYYa26rMzazNuf0QBBFVqOkX5JkACYsEAlN1g9V8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843622; c=relaxed/simple; bh=fB6otMGIwko1yonItoV0W4EcmOF1mpMAMxLshlLLqx4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=RduNamGTG93UJ6JmzRkqAUgX64Ba28OgsaVjHEj/SFyyTcZsp59C7mqxj14LSwnHvABWyOQgp8qlV/L7L6Yl65UeuiHI1TYa7g7zaU03Hv/uvwV7/PVzwuitFg9bYAglrXbkRUjY7DLdXJbkz+BugQjdYCJeE0LX9e/YJLBKNSo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me; spf=pass smtp.mailfrom=jetm.me; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b=FQ8Mj8SA; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=zkozg72i; arc=none smtp.client-ip=103.168.172.137 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=jetm.me Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b="FQ8Mj8SA"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="zkozg72i" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.phl.internal (Postfix) with ESMTP id 8B3D51380A3E; Fri, 6 Mar 2026 19:33:40 -0500 (EST) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Fri, 06 Mar 2026 19:33:40 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jetm.me; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1772843620; x=1772850820; bh=AV5pjfr8DB4LzAYJo0LZOvg+vcORVwMVJnNA5YqOM1g=; b= FQ8Mj8SA/lqtFbHg4yYxEzGXo/TXW1cm45MI/fjEg6S6HRqg231tlcmdd7FCXcMC p66JlQ0+DPsJYuP8k88yoN3JwL8KavoKCqrnfIlPQm5TdMis2HnjzKEnHKnVRDkS zLdeRzzZXDxceQA/OiOZk/HiVdSfmdt0brSEKdRm75Y2xKeFbGZmzz5GRYKP+IL3 NHx1kvQFsv8KY+UY148YxKI0PYVg7iPA3EM1YBlw/lAEA53ra+cgfAv4hK5G18ai 15UZ7Xu5FwMRNTKuPCl0a36JUangWIYKvsh5uTT+SYA52LqFu30L8OKKhpCat5ks 2CWG3suK3Ii8u5+kqecPbw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1772843620; x= 1772850820; bh=AV5pjfr8DB4LzAYJo0LZOvg+vcORVwMVJnNA5YqOM1g=; b=z kozg72iS6ADapSXG9DkoV+rVk0bCksC0GyhUOiVw7XJoM6F4e9YhqOuDERremdSy 5P7o4ge0xi8bBF47k/vr4QYYCuQcN4aRGJLPuZMC7iqDgvCIwxWW1bnX5Y5zzcPM ITkj6m9zWTo6rdrLuVEhI+Z+11l5jcX4dd6QsRmUB8uw3gu6Cp7poKtQgv7XuP6R +1Jt9Q6BYZUnsA00Uzg6oll8wSXO+bf/4Fvzdq3MnvBhpRHrFm93jNK9Rij1RMXL NdVdgMF9YBBngLsvo7GmGySbrtSXsuTh9rsalWkdDVYYVWcwddHunhf/VxI5NTAw 1So+MzmTaudYk8XQv0Zcg== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgddvjedtjeehucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepve ektdfhffevuddtgfetieevtddvheduhfeggfekveejlefhleefieevueefiefhnecuvehl uhhsthgvrhfuihiivgepfeenucfrrghrrghmpehmrghilhhfrhhomhepfhhlohhsshesjh gvthhmrdhmvgdpnhgspghrtghpthhtohepvdefpdhmohguvgepshhmthhpohhuthdprhgt phhtthhopegrnhhgvghlohhgihhorggttghhihhnohdruggvlhhrvghgnhhosegtohhllh grsghorhgrrdgtohhmpdhrtghpthhtohepfeduleefieefudesghhmrghilhdrtghomhdp rhgtphhtthhopehlohhonhhgrddtgidttdesghhmrghilhdrtghomhdprhgtphhtthhope grrhhivghlrdhrohhsvghnfhgvlhgurdejhedtsehgmhgrihhlrdgtohhmpdhrtghpthht oheptghhrghpuhhishgurghrihhogeesghhmrghilhdrtghomhdprhgtphhtthhopehgih hoshgrlheltdesghhmrghilhdrtghomhdprhgtphhtthhopehmrghtthhhihgrshdrsghg ghesghhmrghilhdrtghomhdprhgtphhtthhopehrrgguohhirdgthhhrihhssehgmhgrih hlrdgtohhmpdhrtghpthhtohepshgrmhhurdhtohhljhgrmhhosehgmhgrihhlrdgtohhm X-ME-Proxy: Feedback-ID: i9dde48b3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 5ADF61EA006B; Fri, 6 Mar 2026 19:33:40 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Fri, 06 Mar 2026 18:33:24 -0600 Subject: [PATCH 05/18] wifi: mt76: mt7925: skip CLR_OWN in mt7925e_mcu_init for MT7927 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260306-mt7927-wifi-support-v1-5-c77e7445511d@jetm.me> To: linux-wireless@vger.kernel.org, Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Deren Wu , Ming Yen Hsieh Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Marcin FM , Cristian-Florin Radoi , George Salukvadze , Evgeny Kapusta <3193631@gmail.com>, Samu Toljamo , Ariel Rosenfeld , Chapuis Dario , =?utf-8?q?Thibaut_Fran=C3=A7ois?= , =?utf-8?q?=E5=BC=A0=E6=97=AD=E6=B6=B5?= , Javier Tia X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2063; i=floss@jetm.me; h=from:subject:message-id; bh=fB6otMGIwko1yonItoV0W4EcmOF1mpMAMxLshlLLqx4=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpq3JP5Mpt9lS8a/Lf2blvrfs2Fodgx8e4mRQlI oSw1PgK/1uJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCaatyTwAKCRC17sMLqGd3 H1X8C/0VHd6bjvKOIqAdusuJtLoSCCk9t+e+vfNGLFaCw3MfemEChkITad1xYNjzb/YkVvViEnt iO7PWdfVTQBnk915cpdyXVErc78+SdOwa/4NOKWPnokTYjxpOldhHWcGDpebN0hg3yTxaFqzxq0 ejd5GwBgvQHmLMZSFXaMeyM68kdGMXEF1UeWjTnWXFk63SLElkCygZ/HTp+VMSWHaU51tWk4OjW vvUuf5Mg6UkP2J5X5nIXCCMF4Q8GKDiCmsDFYMbMSLaQYMrcG7HGwwBZ+jKLjysdDEZ4snIUbZ7 frH/N/8zy7kNhIIcKRyCNJQXNLk3RSm/VQLpv6sXbbWy3Y3YxEvWLzu3zQ1hhmnoN+Up+b56dfm p4AjqdajHcApTVCJXIO8rja/ew2qS3C75I3nlOR0p+1GlpP4yQioAlnAwBnGLv+s57a0JB0QEoV G38ep8746pwkjd+TvgphytWBXMVyB71uEu4JPnOFGdhNUFjqsNYGvb2/V6xUvgodyfm5I= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> References: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> On MT7927 hardware, every CLR_OWN triggers the ROM bootloader to reinitialize the WFDMA engine, destroying all DMA ring configuration (base addresses, prefetch settings, descriptor pointers). The DMA rings are already properly initialized by mt7927_dma_init() which performs a controlled CLR_OWN before ring setup. Skip the SET_OWN/CLR_OWN cycle in mt7925e_mcu_init() to preserve that configuration. Tested-by: Marcin FM Tested-by: Cristian-Florin Radoi Tested-by: George Salukvadze Tested-by: Evgeny Kapusta <3193631@gmail.com> Tested-by: Samu Toljamo Tested-by: Ariel Rosenfeld Tested-by: Chapuis Dario Tested-by: Thibaut Fran=C3=A7ois Tested-by: =E5=BC=A0=E6=97=AD=E6=B6=B5 Signed-off-by: Javier Tia --- drivers/net/wireless/mediatek/mt76/mt7925/pci_mcu.c | 19 +++++++++++++----= -- 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/pci_mcu.c b/drivers/= net/wireless/mediatek/mt76/mt7925/pci_mcu.c index 6cceff88c656..206d525eb550 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/pci_mcu.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/pci_mcu.c @@ -35,13 +35,20 @@ int mt7925e_mcu_init(struct mt792x_dev *dev) =20 dev->mt76.mcu_ops =3D &mt7925_mcu_ops; =20 - err =3D mt792xe_mcu_fw_pmctrl(dev); - if (err) - return err; + if (is_mt7927(&dev->mt76)) { + /* MT7927: CLR_OWN was already done in mt7927_dma_init(). + * The ROM re-initializes WFDMA on every CLR_OWN, wiping + * ring and prefetch config. Skip SET_OWN/CLR_OWN here + * to preserve DMA state. */ + } else { + err =3D mt792xe_mcu_fw_pmctrl(dev); + if (err) + return err; =20 - err =3D __mt792xe_mcu_drv_pmctrl(dev); - if (err) - return err; + err =3D __mt792xe_mcu_drv_pmctrl(dev); + if (err) + return err; + } =20 mt76_rmw_field(dev, MT_PCIE_MAC_PM, MT_PCIE_MAC_PM_L0S_DIS, 1); =20 --=20 2.53.0 From nobody Thu Apr 9 15:53:19 2026 Received: from flow-a2-smtp.messagingengine.com (flow-a2-smtp.messagingengine.com [103.168.172.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E8C68296BDA; Sat, 7 Mar 2026 00:33:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.137 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843630; cv=none; b=ZkYWLHxJFdHDVaOkA7mftxK1IBm2K9SxVpvoXbNssU1crZCF1fGZrw70DqUemgiZ3ln3Nv4XnXQvZl6Twm7EmfpqMcIhSalZBJtgRHZcurH3p16ayB+eyGIYeYzT+ohLyRIDqYq9LKf6fhJw4YLDlGsmAK6Oq7lcBPuXzTXyCDk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843630; c=relaxed/simple; bh=/GuNqbGp0WkGquAlj8TXYsYcaj5pBN2o2/Bv/wZ77ng=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=SLkP2Duh75XswXTVDxCpT5fewk2IiOrHyt4q1sOAkahfVfPTCFG3BJSOg6bb+/RS2LhZyyOvgq+SIKv0xmuhbBUlzz650+urlVu/BPvcEfb7PLRxxdV/wbX0uhB4X+ZD2aLciFXlLp3sUoKB/PGaqgKUxRIgaRLcziMeG/RqfgQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me; spf=pass smtp.mailfrom=jetm.me; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b=VqUgf8l6; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=PxN8a+CZ; arc=none smtp.client-ip=103.168.172.137 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=jetm.me Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b="VqUgf8l6"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="PxN8a+CZ" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.phl.internal (Postfix) with ESMTP id 61C441380A41; Fri, 6 Mar 2026 19:33:43 -0500 (EST) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Fri, 06 Mar 2026 19:33:43 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jetm.me; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1772843623; x=1772850823; bh=xEjAv72VHfGiLkHrAlhjKdzunRhjRylRiDm2CPYMkMg=; b= VqUgf8l6NKdxxYY9MfmUdJ6PUlCpH+rPu8/beBLr/Gwt0Z6l4wBEp4UbQ3O4i6SO vNH6avfimdjBtmj8MZgHWqxpdFL23V+OR9V01hU1zNbJBpeQ3jrmdtTp4hvr4VES MngUCxDjVyD1yBmb+Gx+rdGCo8N4QER/gYccrawCpE6cT14715/eoK6b3guQYGSG d3WRsqNEP8kk/C9xA9o7pnDZYMfCtK0RGELWmjW5hJEqPRlELosN3UFyQ0myqd5h vce5wo7VkfQyJOn2oR3qgJZ5NOp9KHS2T5YfwM8e1pXiV9scE4Jwykkiwetfef9L vEQYXZ2Xnno3YrACM/OFHQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1772843623; x= 1772850823; bh=xEjAv72VHfGiLkHrAlhjKdzunRhjRylRiDm2CPYMkMg=; b=P xN8a+CZjQJDaBAsvMh45NZDG8oXXJ5t+eYp6462ZKcQvMQxVt7mJ1o9rB5LFFi1w WIeKPGvaxZIRIljNS/ke32tR99S1OwAPidWf0D8EIR5DlHIoAGnmRBNaZIZtg3RM Wp/EJGE1/sT6CWeHga6zVLq4PCz5cW9C4F6f6Z5CVFFCy8YjH2gCUlGIhXQO6l6W Ol+c22YAFmNOL/jsypy+ZtYboCi77o+s2E2He81DVb6uYC9jwNEMbJupXD84nRg3 Wh3H93/p8KtKYRTM+qKH/OVeYxOhTs3SVjVPWGA8h9XEBn5fb3YXJWEpBKnxC0ay WEx7p1Ip5+nLfmex9Zu+g== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgddvjedtjeehucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepve ektdfhffevuddtgfetieevtddvheduhfeggfekveejlefhleefieevueefiefhnecuvehl uhhsthgvrhfuihiivgepheenucfrrghrrghmpehmrghilhhfrhhomhepfhhlohhsshesjh gvthhmrdhmvgdpnhgspghrtghpthhtohepvdefpdhmohguvgepshhmthhpohhuthdprhgt phhtthhopegrnhhgvghlohhgihhorggttghhihhnohdruggvlhhrvghgnhhosegtohhllh grsghorhgrrdgtohhmpdhrtghpthhtohepfeduleefieefudesghhmrghilhdrtghomhdp rhgtphhtthhopehlohhonhhgrddtgidttdesghhmrghilhdrtghomhdprhgtphhtthhope grrhhivghlrdhrohhsvghnfhgvlhgurdejhedtsehgmhgrihhlrdgtohhmpdhrtghpthht oheptghhrghpuhhishgurghrihhogeesghhmrghilhdrtghomhdprhgtphhtthhopehgih hoshgrlheltdesghhmrghilhdrtghomhdprhgtphhtthhopehmrghtthhhihgrshdrsghg ghesghhmrghilhdrtghomhdprhgtphhtthhopehrrgguohhirdgthhhrihhssehgmhgrih hlrdgtohhmpdhrtghpthhtohepshgrmhhurdhtohhljhgrmhhosehgmhgrihhlrdgtohhm X-ME-Proxy: Feedback-ID: i9dde48b3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 356C81EA006C; Fri, 6 Mar 2026 19:33:43 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Fri, 06 Mar 2026 18:33:25 -0600 Subject: [PATCH 06/18] wifi: mt76: mt7925: add MT7927 power management, DBDC, and CNM fixes Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260306-mt7927-wifi-support-v1-6-c77e7445511d@jetm.me> To: linux-wireless@vger.kernel.org, Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Deren Wu , Ming Yen Hsieh Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Marcin FM , Cristian-Florin Radoi , George Salukvadze , Evgeny Kapusta <3193631@gmail.com>, Samu Toljamo , Ariel Rosenfeld , Chapuis Dario , =?utf-8?q?Thibaut_Fran=C3=A7ois?= , =?utf-8?q?=E5=BC=A0=E6=97=AD=E6=B6=B5?= , Javier Tia X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=3842; i=floss@jetm.me; h=from:subject:message-id; bh=/GuNqbGp0WkGquAlj8TXYsYcaj5pBN2o2/Bv/wZ77ng=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpq3JPuEuIqFx6W1+smCHLJTcMJHCbobukBVeO4 0RHZ8TnRL6JAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCaatyTwAKCRC17sMLqGd3 H9K+DACnuG0c74GfHj4EmBIxAGgIJnHfMdAEgsHrir/61rydL2mcGJfkFp13Cu+03E68r9u+qBM O/ocHHyE9zMcos/irDOrvSMTbFlt5vTYRsb53VAjLn4mivaJBCtvghRZiA9n242BH/blNqfi4CQ zIKn7vrE3ThAOff/fDR5J/TqepkU1+K142oALZfY/0+spChfkzIX2kf1dR8o+S79qApzPqJZGuV X/0eBlPQweihFSZ/YIO9MUBcdD5H7hf9EzX3Bky5dnNyxOKyKGib00OFsLQdeidOILzgre8CKCs 2WIbx06z5K0oxzfah2A8VjSBz4+axjhskQgCzp2tsNlo07A74JVL3YcnS9z6lpmv/onn4J2eMzn +VOXDzKV62NnuVE1H490fB5jWxrsF2ty31alL7Qr3n8Kix1cGeeUTGrBai4NdUO2v450F7ikR+i J+4f/nzykxSescfXkMkN4RwkqBe9I0b6XCJeFtCUBgYEBeL/Yz0pQ0Qo8MjuQp6b5RdV4= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> References: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> Three MT7927-specific fixes for WiFi functionality: 1. Disable runtime PM: Every CLR_OWN triggers the ROM to reinitialize WFDMA, destroying DMA ring configuration. Disable PM until the wake path properly handles MT7927. 2. Enable DBDC (dual-band): MT7927 firmware defaults to single-band (2.4GHz only). MT7925 firmware handles DBDC automatically, but MT7927 requires an explicit MCU_UNI_CMD(SET_DBDC_PARMS) with mbmc_en=3D1. Without this, 5GHz scan requests are silently discarded. 3. Force CNM capability: MT7927 firmware lacks the connac2 feature trailer, causing mt792x_get_mac80211_ops() to replace channel context operations with emulated stubs. This prevents ROC (remain on channel) before authentication, causing auth frames to be silently dropped. Force the CNM flag and restore mt7925_ops. Tested-by: Marcin FM Tested-by: Cristian-Florin Radoi Tested-by: George Salukvadze Tested-by: Evgeny Kapusta <3193631@gmail.com> Tested-by: Samu Toljamo Tested-by: Ariel Rosenfeld Tested-by: Chapuis Dario Tested-by: Thibaut Fran=C3=A7ois Tested-by: =E5=BC=A0=E6=97=AD=E6=B6=B5 Signed-off-by: Javier Tia --- drivers/net/wireless/mediatek/mt76/mt7925/init.c | 17 ++++++++++++++++- drivers/net/wireless/mediatek/mt76/mt7925/pci.c | 10 ++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/init.c b/drivers/net= /wireless/mediatek/mt76/mt7925/init.c index 3ce5d6fcc69d..1e9eadca3988 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/init.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/init.c @@ -115,6 +115,18 @@ static int __mt7925_init_hardware(struct mt792x_dev *d= ev) if (ret) goto out; =20 + /* MT7927: Enable DBDC (dual-band) mode. Without this, firmware + * defaults to 2.4GHz only and ignores 5GHz scan requests. + * MT7925 firmware handles DBDC automatically. */ + if (is_mt7927(&dev->mt76)) { + ret =3D mt7925_mcu_set_dbdc(&dev->mphy, true); + if (ret) { + dev_warn(dev->mt76.dev, + "MT7927 DBDC enable failed: %d\n", ret); + ret =3D 0; + } + } + out: return ret; } @@ -230,7 +242,10 @@ int mt7925_register_device(struct mt792x_dev *dev) dev->pm.idle_timeout =3D MT792x_PM_TIMEOUT; dev->pm.stats.last_wake_event =3D jiffies; dev->pm.stats.last_doze_event =3D jiffies; - if (!mt76_is_usb(&dev->mt76)) { + /* MT7927: disable power management. Every CLR_OWN triggers the + * ROM to reinitialize WFDMA, destroying DMA ring configuration. + * Keep the device awake until the PM wake path handles MT7927. */ + if (!mt76_is_usb(&dev->mt76) && !is_mt7927(&dev->mt76)) { dev->pm.enable_user =3D true; dev->pm.enable =3D true; dev->pm.ds_enable_user =3D true; diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c b/drivers/net/= wireless/mediatek/mt76/mt7925/pci.c index ca9ccfe9975c..dce9f30b68d7 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/pci.c @@ -527,6 +527,16 @@ static int mt7925_pci_probe(struct pci_dev *pdev, goto err_free_pci_vec; } =20 + /* MT7927 firmware lacks the connac2 feature trailer, so + * mt792x_get_mac80211_ops() can't detect CNM support and + * replaces chanctx/ROC/mgd_prepare_tx ops with stubs. + * Force CNM and restore the original mt7925 ops. */ + if ((pdev->device =3D=3D 0x6639 || pdev->device =3D=3D 0x7927) && + !(features & MT792x_FW_CAP_CNM)) { + features |=3D MT792x_FW_CAP_CNM; + memcpy(ops, &mt7925_ops, sizeof(*ops)); + } + mdev =3D mt76_alloc_device(&pdev->dev, sizeof(*dev), ops, &drv_ops); if (!mdev) { ret =3D -ENOMEM; --=20 2.53.0 From nobody Thu Apr 9 15:53:19 2026 Received: from flow-a2-smtp.messagingengine.com (flow-a2-smtp.messagingengine.com [103.168.172.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1664A264628; Sat, 7 Mar 2026 00:33:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.137 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843633; cv=none; b=LSxTNOLz7MTpWinQrxQS8H/VBdlDcEJHH5qHTCW6P01ShDk/d27GQJkQuHe/s7clvqH4ThPd12FhejQgFEukoWMSI5sseX+W9hAR7YWfFMwW3q9jcT/pyOO9s46jUhHwF4BKJUcwMmidkeZgStAJ4nHQRGf+9ePCrvQZBvM+dPY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843633; c=relaxed/simple; bh=fh8xuA/UcnCiI2pt4y9B5bOwUECz0KpoSZwkpRJvLHQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=UZbAbLIiF+msqB0n6vwfiYOoiG22woyULM83NGvU6sZss5yOmXUvEkWnHCO4mRrXlg2IrOSk0MHLdeuxJEWK4OZ4gT10oHlRFlr6Y1UwjXy/hxLpWS2CFx633ckzno7+e6AIwKxLm+w72cHBeeTaVPmYMW7/dZAZ1AZWpkbu1/w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me; spf=pass smtp.mailfrom=jetm.me; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b=dWAfE8Wl; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=lQZdCs02; arc=none smtp.client-ip=103.168.172.137 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=jetm.me Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b="dWAfE8Wl"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="lQZdCs02" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.phl.internal (Postfix) with ESMTP id 58FB31380A42; Fri, 6 Mar 2026 19:33:46 -0500 (EST) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Fri, 06 Mar 2026 19:33:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jetm.me; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1772843626; x=1772850826; bh=3oRXSofd2xMKwzx8uK/FRX4Ajp5i0R+uMPSyB8kKtlI=; b= dWAfE8Wln/4/TWN2vTjTxkbM+BuqOcH8d1bYrbzS45QdZ3l8FC9UM16sN1CyUiTM LHptVoUFMWgxnz9qGwY0H6SHVa1Co99ahqgFq9A3LiGyFF9w87aeznKJ4wBENBkK i+G3Kp3iuSQi7O9WCAtVjrsOvs3Pg37v30G2LzO5AC834aK3oOllv+iLtuU8a6am 18f8yKX/6NUMhKZBeLfdS5C0NZP6Z892BNK8v6ZJCcbPgtq6dWPlWlV8Dvj/YIp4 w7X/VmewyBAJn+Dw+PM066+s5FfLga+AT4SRfdCNufRs6hwnVmdOukwCUd9/FEx9 PiincwleEIRoHOdaZfj5vA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1772843626; x= 1772850826; bh=3oRXSofd2xMKwzx8uK/FRX4Ajp5i0R+uMPSyB8kKtlI=; b=l QZdCs02+8pGaYPL4LLi6NF1IL0PAiHi/iv566gG1Hr5RaKDk2XjYk3gmH3zq3Cfb itsZgO5qKcPZaj0B8PupqtLQuFexl7j+T1BOHi94FGsISbb4uAPNtM6SjQC0EeHi Lzyh/ewAsOLokQ+jX+PpJTGHTqhwSX/eWCUZReG3JSeMJVBcFgTB0HAxBH9f/M5O /ZAAzfleGh+xEH1sTMQmipnWCiY2LWLCALon5ZWHeThII9a/cQGZDlkdVehp9Jxk aGYZxqfZVCiMKwojSM2qMTsIWZSTd71Pz0bgfxz4RnHiY0fHFpu9lZJEKrZdO+RO S2PQT2wkwx9+67hRfB/hA== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgddvjedtjeehucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepve ektdfhffevuddtgfetieevtddvheduhfeggfekveejlefhleefieevueefiefhnecuvehl uhhsthgvrhfuihiivgepheenucfrrghrrghmpehmrghilhhfrhhomhepfhhlohhsshesjh gvthhmrdhmvgdpnhgspghrtghpthhtohepvdefpdhmohguvgepshhmthhpohhuthdprhgt phhtthhopegrnhhgvghlohhgihhorggttghhihhnohdruggvlhhrvghgnhhosegtohhllh grsghorhgrrdgtohhmpdhrtghpthhtohepfeduleefieefudesghhmrghilhdrtghomhdp rhgtphhtthhopehlohhonhhgrddtgidttdesghhmrghilhdrtghomhdprhgtphhtthhope grrhhivghlrdhrohhsvghnfhgvlhgurdejhedtsehgmhgrihhlrdgtohhmpdhrtghpthht oheptghhrghpuhhishgurghrihhogeesghhmrghilhdrtghomhdprhgtphhtthhopehgih hoshgrlheltdesghhmrghilhdrtghomhdprhgtphhtthhopehmrghtthhhihgrshdrsghg ghesghhmrghilhdrtghomhdprhgtphhtthhopehrrgguohhirdgthhhrihhssehgmhgrih hlrdgtohhmpdhrtghpthhtohepshgrmhhurdhtohhljhgrmhhosehgmhgrihhlrdgtohhm X-ME-Proxy: Feedback-ID: i9dde48b3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 327251EA006B; Fri, 6 Mar 2026 19:33:46 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Fri, 06 Mar 2026 18:33:26 -0600 Subject: [PATCH 07/18] wifi: mt76: mt7925: use irq_map fields instead of MT_INT_RX_DONE_ALL Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260306-mt7927-wifi-support-v1-7-c77e7445511d@jetm.me> To: linux-wireless@vger.kernel.org, Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Deren Wu , Ming Yen Hsieh Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Marcin FM , Cristian-Florin Radoi , George Salukvadze , Evgeny Kapusta <3193631@gmail.com>, Samu Toljamo , Ariel Rosenfeld , Chapuis Dario , =?utf-8?q?Thibaut_Fran=C3=A7ois?= , =?utf-8?q?=E5=BC=A0=E6=97=AD=E6=B6=B5?= , Javier Tia X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2571; i=floss@jetm.me; h=from:subject:message-id; bh=fh8xuA/UcnCiI2pt4y9B5bOwUECz0KpoSZwkpRJvLHQ=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpq3JPKHrsOJzA8wN2GMFvjDypIHO67m5syOjsD ACZU/PlUAKJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCaatyTwAKCRC17sMLqGd3 HzjzC/9JYr/GjJIy2ewR1UB9eduPA4Z1Z5s7QcX99yWtr493idUXTtwBSLCr66G1zWURB9gIZsQ C6pvBKy6L81Dbh8OcBM9Djh8kR4KfGxfdgQMcTjxWRJtKSdLGUNNXlliQOilds74yY5N36FNPZf h48fqvXfsr/EJu/LQ5spP5IkYbOmLgcBguApfd0Bx1aCW5nZyjYtRm1+a4CX1Mxhp1LrDubiS4C IGe4fOMYHWkjkz637QD9Y0QF6r3CV2RNTuMCjS3u6Cxl82kyeksXWVPuVE7HwcIjzyo5Fe3qcG/ 1JuwzqU8Y77qAPiemU9qi37YSI9zEjhQcRPUox9ZHXuX+an+oOGMevsrRaayNXuG5jqSlEwhjtC 2pF+am8nqW58V3JG26Vz2dBJxW1p2hPJ4YE4uNOFlFmWe2/XsFeVrcsRijXnbJwWKUUi2vl7Klz cCjT2XB9Z6SngsNmz06oNUH1PVF5fv3jNzvTpUIlVvBfChYjgfsFQ9cJiPUGH6HJKbUZM= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> References: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> The mac_reset and resume paths use the hardcoded MT_INT_RX_DONE_ALL constant (bits 0-2) to re-enable RX interrupts. This is correct for MT7925 (RX rings 0, 1, 2) but wrong for MT7927 which uses RX rings 4, 6, 7 (bits 12, 14, 15). Replace with the per-chip irq_map fields so the correct interrupt bits are enabled regardless of the chip variant. Tested-by: Marcin FM Tested-by: Cristian-Florin Radoi Tested-by: George Salukvadze Tested-by: Evgeny Kapusta <3193631@gmail.com> Tested-by: Samu Toljamo Tested-by: Ariel Rosenfeld Tested-by: Chapuis Dario Tested-by: Thibaut Fran=C3=A7ois Tested-by: =E5=BC=A0=E6=97=AD=E6=B6=B5 Signed-off-by: Javier Tia --- drivers/net/wireless/mediatek/mt76/mt7925/pci.c | 5 ++++- drivers/net/wireless/mediatek/mt76/mt7925/pci_mac.c | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c b/drivers/net/= wireless/mediatek/mt76/mt7925/pci.c index dce9f30b68d7..0dec25b320f8 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/pci.c @@ -766,7 +766,10 @@ static int _mt7925_pci_resume(struct device *device, b= ool restore) mt76_wr(dev, MT_PCIE_MAC_INT_ENABLE, 0xff); mt76_connac_irq_enable(&dev->mt76, dev->irq_map->tx.all_complete_mask | - MT_INT_RX_DONE_ALL | MT_INT_MCU_CMD); + dev->irq_map->rx.data_complete_mask | + dev->irq_map->rx.wm_complete_mask | + dev->irq_map->rx.wm2_complete_mask | + MT_INT_MCU_CMD); mt76_set(dev, MT_MCU2HOST_SW_INT_ENA, MT_MCU_CMD_WAKE_RX_PCIE); =20 /* put dma enabled */ diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/pci_mac.c b/drivers/= net/wireless/mediatek/mt76/mt7925/pci_mac.c index 3072850c2752..1626a3684082 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/pci_mac.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/pci_mac.c @@ -118,7 +118,10 @@ int mt7925e_mac_reset(struct mt792x_dev *dev) =20 mt76_wr(dev, dev->irq_map->host_irq_enable, dev->irq_map->tx.all_complete_mask | - MT_INT_RX_DONE_ALL | MT_INT_MCU_CMD); + dev->irq_map->rx.data_complete_mask | + dev->irq_map->rx.wm_complete_mask | + dev->irq_map->rx.wm2_complete_mask | + MT_INT_MCU_CMD); mt76_wr(dev, MT_PCIE_MAC_INT_ENABLE, 0xff); =20 err =3D mt792xe_mcu_fw_pmctrl(dev); --=20 2.53.0 From nobody Thu Apr 9 15:53:19 2026 Received: from flow-a2-smtp.messagingengine.com (flow-a2-smtp.messagingengine.com [103.168.172.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DE9E826F46F; Sat, 7 Mar 2026 00:33:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.137 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843635; cv=none; b=nJAPWt+YRlf0ZReaKxDGZxWVDMQaXO75SxJHsawPEPbgRWPte3SZyTyMX9y3skMTHC96MeXYwvyoYeXgvni0uJPpB6IGW2n1YPHL+rnAf6+Rp4mtZvFjHk0BvIevufFhW71+NQOOc7kaHoiK4coO67hRpx+0t78nmEdfW/jVtsk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843635; c=relaxed/simple; bh=rDGaFfNf7jHAcpr58xKa3I82OUiQC87REEhxcKnu0lU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=ISlqPLujtOv5ivi7CaqKCRM2wtSUGzqzR/Y492Xov3t9Lc1s4w45HMJqS+iVjArpuBFN8O7TErsx+wB6SCW8tH7A1wdCv1boS3eGOexGtGdvd3927KogRlheJ7gYZ+UmsbwFb+8o512JTf8/eQH1blZkMHhJ1e3OL1q6Ola5v68= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me; spf=pass smtp.mailfrom=jetm.me; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b=EU3DA6E7; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=jZf2cWNz; arc=none smtp.client-ip=103.168.172.137 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=jetm.me Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b="EU3DA6E7"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="jZf2cWNz" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.phl.internal (Postfix) with ESMTP id 368521380A45; Fri, 6 Mar 2026 19:33:50 -0500 (EST) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Fri, 06 Mar 2026 19:33:50 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jetm.me; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1772843630; x=1772850830; bh=SurwNBvAl/bBDja7s6L7R/0E+xLUsx7Ctts0NZBHMOE=; b= EU3DA6E7CFuf68QIe1jn6w2D91wclcXrsQYo+dBYcdoqd1OEhHYB7eVV3FWPoAOG Eu6nO+/IVAx6heRNdK2b+QaVw4P2LLntkR7kcRRuQM1Y0b7OnyUFfX4IMuGSaTP4 ZZ9sx5mYVV7DKezfJBiBUEGrFryJKoKB4q/BiMENraMPbozSnxBe2gfqmoxjBPrN PvBmYnxlLPilleKZrMz7s37HF5EIi7kTZNK57fcJRHdTS66AKnAd87VYKclsZ2pe xbDAsESwO8pFiv8CHQ8Zp/g1EQLDPM90Avy3yATQDb5XPeI4BARozWJL1q8SoldL DVHN+dSUjtDymfoCCnpxnw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1772843630; x= 1772850830; bh=SurwNBvAl/bBDja7s6L7R/0E+xLUsx7Ctts0NZBHMOE=; b=j Zf2cWNzmCBO7Yjt+3pi7ABQOoDuXaAUnEzWIdxY+VCao60UIQLORipLAiFLnPaAS RKUnB5SCclQLqJIeVWSJCEsfrNW6C8tWH29sM6IVBAbRXsc8qo+UrulZVhICYHBo 5Q4wMdxWFpjBnhpmNcvhv24oWBVlcz+gEHBLFbkqjw5p+B3+VViJ3YN/T1qltqVG Z37sYQ5LXMEfGqTx+x3abKU/vAcitWbnYNtc1z/CHSssWt0uwCiMqhPBLXMHRqlR N6tT5prtsipDXxplYXntbYKHg0NyH08VrXzUVyLMdRgePI+bUF3KX/mOSsdn3ZWY yhXpVmtn+Ctqo0bjgWDjQ== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgddvjedtjeehucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepve ektdfhffevuddtgfetieevtddvheduhfeggfekveejlefhleefieevueefiefhnecuvehl uhhsthgvrhfuihiivgepjeenucfrrghrrghmpehmrghilhhfrhhomhepfhhlohhsshesjh gvthhmrdhmvgdpnhgspghrtghpthhtohepvdefpdhmohguvgepshhmthhpohhuthdprhgt phhtthhopegrnhhgvghlohhgihhorggttghhihhnohdruggvlhhrvghgnhhosegtohhllh grsghorhgrrdgtohhmpdhrtghpthhtohepfeduleefieefudesghhmrghilhdrtghomhdp rhgtphhtthhopehlohhonhhgrddtgidttdesghhmrghilhdrtghomhdprhgtphhtthhope grrhhivghlrdhrohhsvghnfhgvlhgurdejhedtsehgmhgrihhlrdgtohhmpdhrtghpthht oheptghhrghpuhhishgurghrihhogeesghhmrghilhdrtghomhdprhgtphhtthhopehgih hoshgrlheltdesghhmrghilhdrtghomhdprhgtphhtthhopehmrghtthhhihgrshdrsghg ghesghhmrghilhdrtghomhdprhgtphhtthhopehrrgguohhirdgthhhrihhssehgmhgrih hlrdgtohhmpdhrtghpthhtohepshgrmhhurdhtohhljhgrmhhosehgmhgrihhlrdgtohhm X-ME-Proxy: Feedback-ID: i9dde48b3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 0B0511EA006C; Fri, 6 Mar 2026 19:33:50 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Fri, 06 Mar 2026 18:33:27 -0600 Subject: [PATCH 08/18] wifi: mt76: mt7925: guard mac_reset against MT7927 DMA destruction Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260306-mt7927-wifi-support-v1-8-c77e7445511d@jetm.me> To: linux-wireless@vger.kernel.org, Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Deren Wu , Ming Yen Hsieh Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Marcin FM , Cristian-Florin Radoi , George Salukvadze , Evgeny Kapusta <3193631@gmail.com>, Samu Toljamo , Ariel Rosenfeld , Chapuis Dario , =?utf-8?q?Thibaut_Fran=C3=A7ois?= , =?utf-8?q?=E5=BC=A0=E6=97=AD=E6=B6=B5?= , Javier Tia X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1943; i=floss@jetm.me; h=from:subject:message-id; bh=rDGaFfNf7jHAcpr58xKa3I82OUiQC87REEhxcKnu0lU=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpq3JPMXsAEGYKf/FbWGwk6bwEdk8nUJ3cAxMlF 9a/tR05XCuJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCaatyTwAKCRC17sMLqGd3 H9SGDACf5zkl3X6UnGRm+ZnMzObtrZtz5CJQp6Dn9jvZ4U7gX8dyGL6rpp1JaYLi4kdHfkjnLuN j92iQH9evrsyNDLSKv+KCWE2WC3XBumitMbFjbFQuHPNaQHAgFPUVi+i2+CxyR9HVS1KvH9+gSt P79twzIsEBxtVdxUNYYSJaZ1ZrVVGArzQSX2usCnZnXb5WZ/rT9RN7bHeTP2qr4dsYPsvw8RUSm bDn7aQA359GY6rr42rZPfJ6x/oBJ4oWGaZW2oUihtsxE6q/GAf7Uw7A8AOHRQYYOy3HHsz9SpLJ Y39ST5CbalxxnKERVpRsnlyk88biKENqxCgu9y46ZKwvru23fUc/cHSbEUZ75+XzWw9A8mo6LSK Y5J3fzeAVa0CyAF4eW9PEMnqyBEiafaLsECAo3hjKq9FQ8okR1nwcST6KlwB/GY6fcwvrdDb6RY hyOkFyTrdZrn0B44aDKw7JGi2n6xFjOYHa3eO8w151qqk9ouBZ30+9bplwCWm9T7gEJJM= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> References: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> On MT7927 hardware, the mac_reset path performs CLR_OWN and WPDMA logic reset, both of which destroy DMA ring configuration. CLR_OWN triggers the ROM to reinitialize WFDMA, and the logic reset pulse disrupts the WFDMA state that mt7927_dma_init() carefully configured. A full MT7927 reset requires re-running the DMA initialization sequence, which is not yet implemented in the recovery path. Return -EOPNOTSUPP with a warning so users know to reload the module. Tested-by: Marcin FM Tested-by: Cristian-Florin Radoi Tested-by: George Salukvadze Tested-by: Evgeny Kapusta <3193631@gmail.com> Tested-by: Samu Toljamo Tested-by: Ariel Rosenfeld Tested-by: Chapuis Dario Tested-by: Thibaut Fran=C3=A7ois Tested-by: =E5=BC=A0=E6=97=AD=E6=B6=B5 Signed-off-by: Javier Tia --- drivers/net/wireless/mediatek/mt76/mt7925/pci_mac.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/pci_mac.c b/drivers/= net/wireless/mediatek/mt76/mt7925/pci_mac.c index 1626a3684082..cf578a2cdc68 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/pci_mac.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/pci_mac.c @@ -72,6 +72,14 @@ int mt7925e_mac_reset(struct mt792x_dev *dev) const struct mt792x_irq_map *irq_map =3D dev->irq_map; int i, err; =20 + /* MT7927: CLR_OWN and WPDMA reset destroy DMA ring configuration. + * A full reset requires re-running mt7927_dma_init() which is not + * yet implemented in the recovery path. */ + if (is_mt7927(&dev->mt76)) { + dev_warn(dev->mt76.dev, "MT7927 mac_reset not supported, reload module t= o recover\n"); + return -EOPNOTSUPP; + } + mt792xe_mcu_drv_pmctrl(dev); =20 mt76_connac_free_pending_tx_skbs(&dev->pm, NULL); --=20 2.53.0 From nobody Thu Apr 9 15:53:19 2026 Received: from flow-a2-smtp.messagingengine.com (flow-a2-smtp.messagingengine.com [103.168.172.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DD893279798; Sat, 7 Mar 2026 00:33:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.137 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843640; cv=none; b=mpN3Vh1qLPm//MWtOzbAPmyffPSRSiWjPqhw6rxI3qP+ktaTg5LdeS6nylk8WBuM0CmGiY4tE56IBVOW7YmZyKo+MniI/NI7suSoZ5uvO+YVFpcn2HPkO+KFDEhbKF7stK08lWkivLaovQRv/YJbXIhCmSaBQM6D9Rqd1sXmd9E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843640; c=relaxed/simple; bh=0y1/cfyMHHVKeRaAcDWZr6+p8GqZVWD4BkhOC6GENCE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=r7PMMN83C0xgFtJU1jOC+IGOin6l8dSB7VNJwxqrcS1Uai5mcRKVC1a49XZSblBpjrUROLsM6PIBpNNDTxb/t4Bgfhy1PdLxTQ9zsmlAbp6t/uF6HIAY/ifm2gtNgRi6FsgVF/6gjBkHhWzk3Qb7UsSVPhsewRmfvVOqdchOYyM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me; spf=pass smtp.mailfrom=jetm.me; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b=i5tfdGs/; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=2z2NEk7R; arc=none smtp.client-ip=103.168.172.137 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=jetm.me Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b="i5tfdGs/"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="2z2NEk7R" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.phl.internal (Postfix) with ESMTP id 222EC1380A43; Fri, 6 Mar 2026 19:33:54 -0500 (EST) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Fri, 06 Mar 2026 19:33:54 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jetm.me; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1772843634; x=1772850834; bh=O/FZ8St7B3QoQV6NVViBDN3fl77WhO5At5mZqNI+Gtw=; b= i5tfdGs/brz/xneND5XXws9E40wAj4trx/plR4iFCF9TXO4Hs1BEopFNjxBSYX7M S//EgeOusPKyqmwVAxiRap/BYKTmrudk7AMyxtsm+yLlBzF9l/OWzGFUu6TKG77g 2GmQ8J+U2gwZ3Va7sud6SOd4YevhuKvDlroKt2etm103NNLs0krF2B4C22J2RnXh 6vJtxiiGbKEMYUKBZUXtVQkKPqJb4XS3XLxtqqaEBm8cqAtLmsUmmQEZYhmR5bqB b3N3I4+0b0bxW9OrcG8j22Fh22DVwA8voJdfCS0wtFILQgSZIvZ1CEbk5+yj4B+a 91tzPzFrIg46e9TVmR50nQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1772843634; x= 1772850834; bh=O/FZ8St7B3QoQV6NVViBDN3fl77WhO5At5mZqNI+Gtw=; b=2 z2NEk7RFfyGiKyGHkkN0h0KTccbTc5+p5lABrEPgJaAcvUCmixPkAfHwTxX32596 g9cvw9ksWHZHllfGxjwVfXF7k1z4QnEO0poFkjbJa39TwzJAJM+lmor+gl7AIfSH GerLMGX/ixcvD1hsO/HHk7jBCn19e7GJDOvSrRjzzzi67YtNj6EwOOvsaZKyRt90 Pyqs1aYlKmO9TBXSt9ZfJIhs6vMTzQ3VDh6MZ3AN6cG0fu17Y72ekPi59FM9la4V ydG4GLqvtybCeXSCVLPvS4ThHJ8cGL3QB5p5Tzwbr0j309ppeZwNEdQtnfgu8n85 moiiR00w42YNn66LvoLzA== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgddvjedtjeehucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepve ektdfhffevuddtgfetieevtddvheduhfeggfekveejlefhleefieevueefiefhnecuvehl uhhsthgvrhfuihiivgepkeenucfrrghrrghmpehmrghilhhfrhhomhepfhhlohhsshesjh gvthhmrdhmvgdpnhgspghrtghpthhtohepvdefpdhmohguvgepshhmthhpohhuthdprhgt phhtthhopegrnhhgvghlohhgihhorggttghhihhnohdruggvlhhrvghgnhhosegtohhllh grsghorhgrrdgtohhmpdhrtghpthhtohepfeduleefieefudesghhmrghilhdrtghomhdp rhgtphhtthhopehlohhonhhgrddtgidttdesghhmrghilhdrtghomhdprhgtphhtthhope grrhhivghlrdhrohhsvghnfhgvlhgurdejhedtsehgmhgrihhlrdgtohhmpdhrtghpthht oheptghhrghpuhhishgurghrihhogeesghhmrghilhdrtghomhdprhgtphhtthhopehgih hoshgrlheltdesghhmrghilhdrtghomhdprhgtphhtthhopehmrghtthhhihgrshdrsghg ghesghhmrghilhdrtghomhdprhgtphhtthhopehrrgguohhirdgthhhrihhssehgmhgrih hlrdgtohhmpdhrtghpthhtohepshgrmhhurdhtohhljhgrmhhosehgmhgrihhlrdgtohhm X-ME-Proxy: Feedback-ID: i9dde48b3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id EF95B1EA006B; Fri, 6 Mar 2026 19:33:53 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Fri, 06 Mar 2026 18:33:28 -0600 Subject: [PATCH 09/18] wifi: mt76: mt7925: populate EHT 320MHz MCS map in sta_rec Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260306-mt7927-wifi-support-v1-9-c77e7445511d@jetm.me> To: linux-wireless@vger.kernel.org, Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Deren Wu , Ming Yen Hsieh Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Marcin FM , Cristian-Florin Radoi , George Salukvadze , Evgeny Kapusta <3193631@gmail.com>, Samu Toljamo , Ariel Rosenfeld , Chapuis Dario , =?utf-8?q?Thibaut_Fran=C3=A7ois?= , =?utf-8?q?=E5=BC=A0=E6=97=AD=E6=B6=B5?= , Javier Tia X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1751; i=floss@jetm.me; h=from:subject:message-id; bh=0y1/cfyMHHVKeRaAcDWZr6+p8GqZVWD4BkhOC6GENCE=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpq3JPaqv7C247DGQfPMY5Ss9FIiRnQ8rMHoxoe ZPvocWSMSGJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCaatyTwAKCRC17sMLqGd3 HyDWDACh91WMXw+HeP56hkbaGH6qbFdptP25eSsiGWa8JJ4jj78edEiA8CAJnNkY+h1ZAIiRcGL mb0U3K3DSbowj/BpZTDZP74zLqOtVlOVdlU5j/MAbPE0xg+1eGJl12eGhYyu2AfTwuwAHafWogZ 0uxJgGi0aSa87YN4LRUKhAZ2ATEIpTaCXPn7h9CbwKGvooQGV7AB3+FAXz95kx7/ZYxrjav6dvi FcP4v6edIgpUqz2zPnY8aZxu6DijZl4pRSd/ccIHASfR9ME1EhNshgZrMhk7gb2b1Ov2PxQo+W+ +SDA7jt838Wk/PaPk65+QYxGoGZcuUvk+uMt+Z/lS4me+1NwnxpTiI/eVucUbre1rErktZKtV4+ 9zlkaQD8WJnfER+o4sn7sJCeu0y4o2SayVWNmZUkxVIPDrdGDr5StgaRrVTPLHpawORLbzeMkxf S52QxKzg1MmlHjU43jTOctXW+u2rb3qMkkkwi+Ikhpx8EcC89BDXcGSOKmqDlXVE/D/sE= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> References: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> The sta_rec_eht structure has a mcs_map_bw320 field, and the channel width mapping includes NL80211_CHAN_WIDTH_320, but the 320MHz MCS/NSS map was never copied from the station's EHT capabilities to the MCU TLV. This prevents negotiation of 320MHz channel width even when both the hardware and firmware advertise support for it. Add the missing memcpy for the 320MHz MCS map, matching the existing pattern for BW20, BW80, and BW160. Tested-by: Marcin FM Tested-by: Cristian-Florin Radoi Tested-by: George Salukvadze Tested-by: Evgeny Kapusta <3193631@gmail.com> Tested-by: Samu Toljamo Tested-by: Ariel Rosenfeld Tested-by: Chapuis Dario Tested-by: Thibaut Fran=C3=A7ois Tested-by: =E5=BC=A0=E6=97=AD=E6=B6=B5 Signed-off-by: Javier Tia --- drivers/net/wireless/mediatek/mt76/mt7925/mcu.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c b/drivers/net/= wireless/mediatek/mt76/mt7925/mcu.c index cf0fdea45cf7..8b5ffb240d52 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c @@ -1683,6 +1683,7 @@ mt7925_mcu_sta_eht_tlv(struct sk_buff *skb, struct ie= ee80211_link_sta *link_sta) memcpy(eht->mcs_map_bw20, &mcs_map->only_20mhz, sizeof(eht->mcs_map_bw20= )); memcpy(eht->mcs_map_bw80, &mcs_map->bw._80, sizeof(eht->mcs_map_bw80)); memcpy(eht->mcs_map_bw160, &mcs_map->bw._160, sizeof(eht->mcs_map_bw160)); + memcpy(eht->mcs_map_bw320, &mcs_map->bw._320, sizeof(eht->mcs_map_bw320)); } =20 static void --=20 2.53.0 From nobody Thu Apr 9 15:53:19 2026 Received: from flow-a2-smtp.messagingengine.com (flow-a2-smtp.messagingengine.com [103.168.172.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 250342797AC; Sat, 7 Mar 2026 00:33:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.137 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843640; cv=none; b=nz3AEPxhLrFkgjEBUTaUkIjWkProeUUf5FvQ1PmQzDLvqTQSJAGjxr8yAiogexV6LB/+A2ZQMmdrBLIc30NeXTGS/8oIrFNIDrLHkS/pEOC8mQ7GFN3VBSisJxZn8JmX+Gh0mhofGrEcFE1I5SjbkX6ys+qz2ffAWqBG0Jaq+Bo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843640; c=relaxed/simple; bh=fCY3DSE95mUoabPrkuKHGr3zz66X2jRynD0TiW/Z0BY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=R0WL08ggFMYC5pSdB9txlW6u90MRwzhkO/ZNGGrDCmmTghjC1ZrKARCvfUol/MBpD0eesPyNLfbemRuQ8IAWBc8IVn1bhPqvfBF+InMbXxGjZgTBpo7b5oy2AsrUJCBaKj3UB6RYTtKnDBv0EAnueXpJUsjP4YrkmTzMcppmjUo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me; spf=pass smtp.mailfrom=jetm.me; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b=YJmsZqDl; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=JdQesv7L; arc=none smtp.client-ip=103.168.172.137 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=jetm.me Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b="YJmsZqDl"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="JdQesv7L" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.phl.internal (Postfix) with ESMTP id 6EF2A1380A7F; Fri, 6 Mar 2026 19:33:58 -0500 (EST) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Fri, 06 Mar 2026 19:33:58 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jetm.me; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1772843638; x=1772850838; bh=jVDAyuRFOXHy/wcoICXEPnLxH/n67+H+2S/lHmQXGE8=; b= YJmsZqDlBdsrPcyqTgWGTXoWd6pJL0C24MaQVEJWdw4tNqByEvrf2ecgq4NAt9MX GchhHNR4gN2JSFBsw2Nu+IihLjC1PN3YmWj4Wpe4DDSkEizqTknu5qmtqfgrtaVO Occs3g6FoJjHxc5c7ob8+WfmXXZDc+3WVb6ssgC37HY2KLAVF0EyDZBUibsR3lQH L5MrfiAc/PG2SlSYs7zO7eeTWvi9EA+c6fA3u88UZb3tNfkzqy6RRZoGdXoB5cTW /ewYN2zAMZ5KskldG58Vg8v8+05YQId94Ykv1IzqJGdiglzG1piKKpdY+LQndVsa JD2gIQDnane0Rn759K7yVQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1772843638; x= 1772850838; bh=jVDAyuRFOXHy/wcoICXEPnLxH/n67+H+2S/lHmQXGE8=; b=J dQesv7L489j+4BJyAMheP/NocKPc9zu9bZNNyJmSY/3fqk/uwCUkH7o1E3nh/N5P yNkVwFtLy+vQFWeSZWXGtLfMLL6JgT3HSSPjn7JrajeYqLvslCN7LoUUtUHYFrnt WXGSfm8fblWqqdKlp42xMfAz+tu0DZpP8iVLK5pCSMdHdxEJT6STjrTGxw8UtCON 38/b5h95e7rnd1uHiRr3ETZfolnRR64EmfggT8G8rrBTYDDJMKwk1LlAnyiKkfSS rUvoYRLZFGCJTQd7F89VhMKMMP1b0pIwMciK2SpKSgDxZFlTMcrubn6Im9bSDKgV XY5CP/X8Zn7MV0AKeQwQQ== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgddvjedtjeehucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepve ektdfhffevuddtgfetieevtddvheduhfeggfekveejlefhleefieevueefiefhnecuvehl uhhsthgvrhfuihiivgepkeenucfrrghrrghmpehmrghilhhfrhhomhepfhhlohhsshesjh gvthhmrdhmvgdpnhgspghrtghpthhtohepvdefpdhmohguvgepshhmthhpohhuthdprhgt phhtthhopegrnhhgvghlohhgihhorggttghhihhnohdruggvlhhrvghgnhhosegtohhllh grsghorhgrrdgtohhmpdhrtghpthhtohepfeduleefieefudesghhmrghilhdrtghomhdp rhgtphhtthhopehlohhonhhgrddtgidttdesghhmrghilhdrtghomhdprhgtphhtthhope grrhhivghlrdhrohhsvghnfhgvlhgurdejhedtsehgmhgrihhlrdgtohhmpdhrtghpthht oheptghhrghpuhhishgurghrihhogeesghhmrghilhdrtghomhdprhgtphhtthhopehgih hoshgrlheltdesghhmrghilhdrtghomhdprhgtphhtthhopehmrghtthhhihgrshdrsghg ghesghhmrghilhdrtghomhdprhgtphhtthhopehrrgguohhirdgthhhrihhssehgmhgrih hlrdgtohhmpdhrtghpthhtohepshgrmhhurdhtohhljhgrmhhosehgmhgrihhlrdgtohhm X-ME-Proxy: Feedback-ID: i9dde48b3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 42DBE1EA006B; Fri, 6 Mar 2026 19:33:58 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Fri, 06 Mar 2026 18:33:29 -0600 Subject: [PATCH 10/18] wifi: mt76: mt7925: enable MT7927 runtime power management Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260306-mt7927-wifi-support-v1-10-c77e7445511d@jetm.me> To: linux-wireless@vger.kernel.org, Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Deren Wu , Ming Yen Hsieh Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Marcin FM , Cristian-Florin Radoi , George Salukvadze , Evgeny Kapusta <3193631@gmail.com>, Samu Toljamo , Ariel Rosenfeld , Chapuis Dario , =?utf-8?q?Thibaut_Fran=C3=A7ois?= , =?utf-8?q?=E5=BC=A0=E6=97=AD=E6=B6=B5?= , Javier Tia X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=5179; i=floss@jetm.me; h=from:subject:message-id; bh=fCY3DSE95mUoabPrkuKHGr3zz66X2jRynD0TiW/Z0BY=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpq3JP0hl2X2uf/k196xdtgmlRlzuJ7V5ef/Y4+ offmO7WouyJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCaatyTwAKCRC17sMLqGd3 H21nDACHHqC4EVt/a2mb/2XiH5bItCkASCDZQpTI0AvtRajZW+uzwxxjb4j0rhE2yPnXhJJWHj5 qOAU01Mspi6l5UNuCus4GyiuX1MEcCtcikdTd7HLo1vbB+3Jv9xvxHKk1cLODub1Eh0m65soe4w al/qqfzd73PzPtAs5+n2iVchz37niO+Ma1JI6+1LVg56lh/qqSOLCYIhZJkE5daIl6nXI+zZEkP FzX52RVHcBKi19+o2eLsP/wX1tkYQVoAVYgg0JII9K1JZisOckmjYPZ9DSNmOGQy+DFovaco1Pu sU9D86Bz6M3AUIBn6oBGiI47wz4JHVGg31sPBEs6Vexf8ItnAl7jOYx8SIqTeBMfvu2h/1X4Gq4 /Go8mFu4q6BiCMGeBbbttWB0D1LFtLHlS0VGn6X8bWCh9SM7x/8fipBanImeCOi1moeiy7pJM0i GmvdnrfBXFuc9+x9uX5t2/1AmGmwgOAXE7vUIoGMrd0kTo0IWnYBlUu+mMHsm0rdW5lJE= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> References: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> Add MT7927-specific GLO_CFG register programming to mt792x_dma_enable() so that ADDR_EXT_EN and CSR_LBK_RX_Q_SEL_EN are correctly configured after every WPDMA reinitialization triggered by CLR_OWN during power management transitions. On MT7927, every CLR_OWN causes the ROM to reinitialize WFDMA, which resets the DMA configuration. The PM wake path already handles ring reprogramming (mt76_queue_reset restores ring base addresses from stored desc_dma) and prefetch configuration (mt792x_dma_prefetch has an is_mt7927 branch), but two GLO_CFG bits were missing from mt792x_dma_enable: - BIT(26) ADDR_EXT_EN: extended DMA addressing, required for MT7927's host memory access - BIT(20) CSR_LBK_RX_Q_SEL_EN: loopback RX queue select, must be cleared for normal DMA operation Also define proper macros for these bits and use them in mt7927_dma_init() to replace bare BIT() values. With the DMA recovery path now fully MT7927-aware, remove the is_mt7927() guard that disabled runtime PM and deep sleep. Let the standard mt792x power management work for MT7927 hardware. Tested-by: Marcin FM Tested-by: Cristian-Florin Radoi Tested-by: George Salukvadze Tested-by: Evgeny Kapusta <3193631@gmail.com> Tested-by: Samu Toljamo Tested-by: Ariel Rosenfeld Tested-by: Chapuis Dario Tested-by: Thibaut Fran=C3=A7ois Tested-by: =E5=BC=A0=E6=97=AD=E6=B6=B5 Signed-off-by: Javier Tia --- drivers/net/wireless/mediatek/mt76/mt7925/init.c | 5 +---- drivers/net/wireless/mediatek/mt76/mt7925/pci.c | 4 ++-- drivers/net/wireless/mediatek/mt76/mt792x_dma.c | 7 +++++++ drivers/net/wireless/mediatek/mt76/mt792x_regs.h | 2 ++ 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/init.c b/drivers/net= /wireless/mediatek/mt76/mt7925/init.c index 1e9eadca3988..84af52a0176d 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/init.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/init.c @@ -242,10 +242,7 @@ int mt7925_register_device(struct mt792x_dev *dev) dev->pm.idle_timeout =3D MT792x_PM_TIMEOUT; dev->pm.stats.last_wake_event =3D jiffies; dev->pm.stats.last_doze_event =3D jiffies; - /* MT7927: disable power management. Every CLR_OWN triggers the - * ROM to reinitialize WFDMA, destroying DMA ring configuration. - * Keep the device awake until the PM wake path handles MT7927. */ - if (!mt76_is_usb(&dev->mt76) && !is_mt7927(&dev->mt76)) { + if (!mt76_is_usb(&dev->mt76)) { dev->pm.enable_user =3D true; dev->pm.enable =3D true; dev->pm.ds_enable_user =3D true; diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c b/drivers/net/= wireless/mediatek/mt76/mt7925/pci.c index 0dec25b320f8..0f76d9197230 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/pci.c @@ -416,8 +416,8 @@ static int mt7927_dma_init(struct mt792x_dev *dev) napi_enable(&dev->mt76.tx_napi); =20 /* MT7927-specific GLO_CFG bits before DMA enable */ - mt76_set(dev, MT_WFDMA0_GLO_CFG, BIT(26)); /* ADDR_EXT_EN */ - mt76_clear(dev, MT_WFDMA0_GLO_CFG, BIT(20)); /* CSR_LBK_RX_Q_SEL_EN */ + mt76_set(dev, MT_WFDMA0_GLO_CFG, MT_WFDMA0_GLO_CFG_ADDR_EXT_EN); + mt76_clear(dev, MT_WFDMA0_GLO_CFG, MT_WFDMA0_GLO_CFG_CSR_LBK_RX_Q_SEL_EN); mt76_set(dev, MT_WFDMA0_GLO_CFG_EXT1, BIT(28)); mt76_set(dev, MT_WFDMA0_GLO_CFG, MT_WFDMA0_GLO_CFG_FW_DWLD_BYPASS_DMASHDL); diff --git a/drivers/net/wireless/mediatek/mt76/mt792x_dma.c b/drivers/net/= wireless/mediatek/mt76/mt792x_dma.c index 3177c6cc6eb5..32364f19007d 100644 --- a/drivers/net/wireless/mediatek/mt76/mt792x_dma.c +++ b/drivers/net/wireless/mediatek/mt76/mt792x_dma.c @@ -166,6 +166,13 @@ int mt792x_dma_enable(struct mt792x_dev *dev) mt76_set(dev, MT_WFDMA0_GLO_CFG, MT_WFDMA0_GLO_CFG_TX_DMA_EN | MT_WFDMA0_GLO_CFG_RX_DMA_EN); =20 + if (is_mt7927(&dev->mt76)) { + mt76_set(dev, MT_WFDMA0_GLO_CFG, + MT_WFDMA0_GLO_CFG_ADDR_EXT_EN); + mt76_clear(dev, MT_WFDMA0_GLO_CFG, + MT_WFDMA0_GLO_CFG_CSR_LBK_RX_Q_SEL_EN); + } + if (is_mt7925(&dev->mt76)) { mt76_rmw(dev, MT_UWFDMA0_GLO_CFG_EXT1, BIT(28), BIT(28)); mt76_set(dev, MT_WFDMA0_INT_RX_PRI, 0x0F00); diff --git a/drivers/net/wireless/mediatek/mt76/mt792x_regs.h b/drivers/net= /wireless/mediatek/mt76/mt792x_regs.h index 5497cfaab8d7..b364d0038653 100644 --- a/drivers/net/wireless/mediatek/mt76/mt792x_regs.h +++ b/drivers/net/wireless/mediatek/mt76/mt792x_regs.h @@ -299,7 +299,9 @@ #define MT_WFDMA0_GLO_CFG_FIFO_LITTLE_ENDIAN BIT(12) #define MT_WFDMA0_GLO_CFG_RX_WB_DDONE BIT(13) #define MT_WFDMA0_GLO_CFG_CSR_DISP_BASE_PTR_CHAIN_EN BIT(15) +#define MT_WFDMA0_GLO_CFG_CSR_LBK_RX_Q_SEL_EN BIT(20) #define MT_WFDMA0_GLO_CFG_OMIT_RX_INFO_PFET2 BIT(21) +#define MT_WFDMA0_GLO_CFG_ADDR_EXT_EN BIT(26) #define MT_WFDMA0_GLO_CFG_OMIT_RX_INFO BIT(27) #define MT_WFDMA0_GLO_CFG_OMIT_TX_INFO BIT(28) #define MT_WFDMA0_GLO_CFG_CLK_GAT_DIS BIT(30) --=20 2.53.0 From nobody Thu Apr 9 15:53:19 2026 Received: from flow-a2-smtp.messagingengine.com (flow-a2-smtp.messagingengine.com [103.168.172.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 11D66286D64; Sat, 7 Mar 2026 00:34:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.137 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843643; cv=none; b=oNvFPTAXr/7KppP0kurrlmihNs98LNGXdba12T7dXZCgM92Wstqt5clcBo25e+2haGn+HLepuCdodRbHmU8QZ5e9IyJaRnhxa0CPqZYiGIJLfPRrvSbVfSLz2qJPpD2j7/qzp9UiOWF8BLz/BlsuRe7TfhAcuoIJ49U79iGPJFA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843643; c=relaxed/simple; bh=04bcnVWlmhD8WzR5rT1ISBOfh8iqnfyzS6JBSRD3OaY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=FdwwbCWXpqsfDVFhNi0hgGHSivy+X4NZlk+8cEC3MRJlFelyXkawh+59UDXxp/58czgfhAK7IAE0i/fO8ffRW4pDY2iUgt88DN5jAfAwKndyrIPbXi9KQTGKFE/aZkEo4Mt7tKoJY+9we8/j2UHAa9pzU4iVOziAGQbBtcqmqAs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me; spf=pass smtp.mailfrom=jetm.me; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b=eVkEMip1; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=nckAU+8E; arc=none smtp.client-ip=103.168.172.137 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=jetm.me Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b="eVkEMip1"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="nckAU+8E" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.phl.internal (Postfix) with ESMTP id 6430C1380A85; Fri, 6 Mar 2026 19:34:01 -0500 (EST) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Fri, 06 Mar 2026 19:34:01 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jetm.me; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1772843641; x=1772850841; bh=WlsWclDzlhTjQ8Ta/CwNPYYabJSU+nDKLCQBiW8BCiA=; b= eVkEMip1BqyABoMW88eAywA7sUTiajUdqOmdiYvVVBLRenOBuvEhZNJPeI5h/dEk PnSBlYj8bici9Z4GabyS9JUDy7367CQlSdp8sk5myBmEiHgdRompDBrxoMaib+Ab htspHolcHSCFdFOm12+NarnSnqpJGIfyKwP3H7wYseUZIl28ZQrEVBp/dNoOJmXX wvOFGZX8RqnLjfuhrTIX9a1oPAjI/10ipKyVhuae2+i9R8SvO7tYfMR3hNM6zo6V QbaCP+oRFmYZ4yAQ2yvxucXrsgH8Twpd69ZQbZDozr7r5BIzb777TkaDjoyE/93f fDNtg4hEL1caKxm0Y8VMlQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1772843641; x= 1772850841; bh=WlsWclDzlhTjQ8Ta/CwNPYYabJSU+nDKLCQBiW8BCiA=; b=n ckAU+8ElgtAAzIq9u0u0LmvafJHAugMNOWgCP9LMfErHY6GQx+cCRTB/kFKMgzQ5 ofAozBsSnia5GFzyei1ko27t1Z7fOfe+n9Ap4vMNR+YMZK4d5cQ/H9Xc8xw1MwvT QlmDpAtroi6jd21Tp3ro3JT/zQofNkdS/aLDtCooOF4aV9P6hpRqZqvinESogPZv 0Zsrw+blGyCIkmURDf0P8nZn3KATQ17UU6G8IDgF5tBUF8gCQpPazpaStcUQwRo4 cLQOd9J+FmdMgtFa5SLOdXvfvEThn/nN3jGtZK0cGYY/jXvLQE8Zt3DdA+XSG76n A9kDTHdzjXQ6BfyMXO8fA== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgddvjedtjeehucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepue dttdfggfdufeeiueetffegveefffevjeehvdelfeevhffhteekgfegveeuiefhnecuffho mhgrihhnpehgihhthhhusgdrtghomhenucevlhhushhtvghrufhiiigvpedtnecurfgrrh grmhepmhgrihhlfhhrohhmpehflhhoshhssehjvghtmhdrmhgvpdhnsggprhgtphhtthho pedvfedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtoheprghnghgvlhhoghhiohgrtg gthhhinhhordguvghlrhgvghhnohestgholhhlrggsohhrrgdrtghomhdprhgtphhtthho peefudelfeeifedusehgmhgrihhlrdgtohhmpdhrtghpthhtoheplhhoohhnghdrtdigtd dtsehgmhgrihhlrdgtohhmpdhrtghpthhtoheprghrihgvlhdrrhhoshgvnhhfvghlugdr jeehtdesghhmrghilhdrtghomhdprhgtphhtthhopegthhgrphhuihhsuggrrhhiohegse hgmhgrihhlrdgtohhmpdhrtghpthhtohepghhiohhsrghlledtsehgmhgrihhlrdgtohhm pdhrtghpthhtohepmhgrthhthhhirghsrdgsghhgsehgmhgrihhlrdgtohhmpdhrtghpth htoheprhgrughoihdrtghhrhhishesghhmrghilhdrtghomhdprhgtphhtthhopehsrghm uhdrthholhhjrghmohesghhmrghilhdrtghomh X-ME-Proxy: Feedback-ID: i9dde48b3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 3BF151EA006C; Fri, 6 Mar 2026 19:34:01 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Fri, 06 Mar 2026 18:33:30 -0600 Subject: [PATCH 11/18] wifi: mt76: mt7925: fix uninitialized is_mt7927_hw in probe Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260306-mt7927-wifi-support-v1-11-c77e7445511d@jetm.me> To: linux-wireless@vger.kernel.org, Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Deren Wu , Ming Yen Hsieh Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Marcin FM , Cristian-Florin Radoi , George Salukvadze , Evgeny Kapusta <3193631@gmail.com>, Samu Toljamo , Ariel Rosenfeld , Chapuis Dario , =?utf-8?q?Thibaut_Fran=C3=A7ois?= , =?utf-8?q?=E5=BC=A0=E6=97=AD=E6=B6=B5?= , Javier Tia X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2768; i=floss@jetm.me; h=from:subject:message-id; bh=04bcnVWlmhD8WzR5rT1ISBOfh8iqnfyzS6JBSRD3OaY=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpq3JPe76/SbsUNiyacC4Z63lQBdKpgmeRRaeJu B9vDFMMiYuJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCaatyTwAKCRC17sMLqGd3 H0a0C/4gZbVomsWvAYlwUczBLQwa94m+fnaoAzHzW8bXOMvc09ncQtrxZxbnKF6q2g9ai7Shplp 89fMSGGKA+fJ7AwHrZwtRktIS9pynfoclL5MM9R82zNsWSrisdwQM7jUaXlzrjNFARI21wx3TpY CNGPY2g/L5esmfV95yj2WW5aE8jWfrY5+JuiaWI0pY3vdNDIbjI5TXLxL6BQYWqvet/K9VtywRc /GmPuJG60NAOmakbMHJv1T4yJ6WXN5uGFWuqw96bJzSxiettcedQXLmNW+PRbSbBnmkEzQ957Dr Ziv5p1mE3ROJgcJ1dYS+G7wVqtYLOEsxJmkrIZci1PRyBOHVpcpA4YEf+dzamaTdNCShGOHEt3z 6smUkhHA64fR1nu9DUAhtLiIpxt8oqQJfbIntY6GDSJh0G/qNVlTjmUfgCj2CJiCIYbpaiuhhU/ TS9/CHvgGhBW6JmobCBQtElM1lWsNHoN7ddal2dT5h7xFyWkqO7WuyAGxTG0QYnMmsL28= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> References: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> is_mt7927_hw was declared at the top of mt7925_pci_probe() but only assigned after its first use at the irq_map selection. The uninitialized value (typically zero on x86_64) caused the mt7925 IRQ map to be selected instead of mt7927_irq_map. With the wrong map the driver polls RX rings 0/2 instead of 4/6/7, so MCU responses are never received and every command times out with "Failed to get patch semaphore". Fix by initializing is_mt7927_hw at declaration from pdev->device. Also remove a stale MT_WFDMA0_GLO_CFG_EXT1 define that pointed to the wrong register address (MT_WFDMA0 base 0xd4000 instead of MT_UWFDMA0 base 0x24000). The correct BIT(28) write is already handled by mt792x_dma_enable() via MT_UWFDMA0_GLO_CFG_EXT1. Reported-by: =E5=BC=A0=E6=97=AD=E6=B6=B5 Closes: https://github.com/jetm/mediatek-mt7927-dkms/issues/15 Tested-by: Marcin FM Tested-by: Cristian-Florin Radoi Tested-by: George Salukvadze Tested-by: Evgeny Kapusta <3193631@gmail.com> Tested-by: Samu Toljamo Tested-by: Ariel Rosenfeld Tested-by: Chapuis Dario Tested-by: Thibaut Fran=C3=A7ois Tested-by: =E5=BC=A0=E6=97=AD=E6=B6=B5 Signed-off-by: Javier Tia --- drivers/net/wireless/mediatek/mt76/mt7925/pci.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c b/drivers/net/= wireless/mediatek/mt76/mt7925/pci.c index 0f76d9197230..6275e78777b0 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/pci.c @@ -418,7 +418,6 @@ static int mt7927_dma_init(struct mt792x_dev *dev) /* MT7927-specific GLO_CFG bits before DMA enable */ mt76_set(dev, MT_WFDMA0_GLO_CFG, MT_WFDMA0_GLO_CFG_ADDR_EXT_EN); mt76_clear(dev, MT_WFDMA0_GLO_CFG, MT_WFDMA0_GLO_CFG_CSR_LBK_RX_Q_SEL_EN); - mt76_set(dev, MT_WFDMA0_GLO_CFG_EXT1, BIT(28)); mt76_set(dev, MT_WFDMA0_GLO_CFG, MT_WFDMA0_GLO_CFG_FW_DWLD_BYPASS_DMASHDL); =20 @@ -489,7 +488,7 @@ static int mt7925_pci_probe(struct pci_dev *pdev, struct mt76_bus_ops *bus_ops; struct mt792x_dev *dev; struct mt76_dev *mdev; - bool is_mt7927_hw; + bool is_mt7927_hw =3D (pdev->device =3D=3D 0x6639 || pdev->device =3D=3D = 0x7927); u8 features; int ret; u16 cmd; @@ -574,8 +573,6 @@ static int mt7925_pci_probe(struct pci_dev *pdev, if (!mt7925_disable_aspm && mt76_pci_aspm_supported(pdev)) dev->aspm_supported =3D true; =20 - is_mt7927_hw =3D (pdev->device =3D=3D 0x6639 || pdev->device =3D=3D 0x792= 7); - ret =3D __mt792x_mcu_fw_pmctrl(dev); if (ret) goto err_free_dev; --=20 2.53.0 From nobody Thu Apr 9 15:53:19 2026 Received: from flow-a2-smtp.messagingengine.com (flow-a2-smtp.messagingengine.com [103.168.172.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4F69D2BD00C; Sat, 7 Mar 2026 00:34:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.137 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843646; cv=none; b=vFOIADThAr7Y8kCrS2a+Nwq9QxxRPFeM3uoSb1AuVPa4odCxTDBb+IETJghtJIOm3lhfivQBSvglEdvCCpK7RJSDlwFMkbwZDRIjSIufpQa2dGyD5MDjLd8VDWLAn/EzqgkPXPDokKtemZjm4nhCW/SgV8CLglS8Rv5M8xnyabM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843646; c=relaxed/simple; bh=2hcUPm4U/IeBMFjpuJHby3rkRBghMcipdujJQ1HSdNg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=DQSQFTT1KnoMrVe2rcBX+Weg4bbk9KLwtDiyHmnvZEdmN4othiRGx6IvMLPVMnq6vvwSfU8kkcW8dFvDxOWnL/7rxXJc5PGt4ZVhI8yg9U+8CnTZsmiIfKDwfNJ7S7cXDD710JV0bd+gCmrQSE7sVcYvKs2plvNaN+mFkX3MTe8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me; spf=pass smtp.mailfrom=jetm.me; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b=XTxAQkxH; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=O0qTvjl3; arc=none smtp.client-ip=103.168.172.137 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=jetm.me Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b="XTxAQkxH"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="O0qTvjl3" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.phl.internal (Postfix) with ESMTP id 660991380AAA; Fri, 6 Mar 2026 19:34:04 -0500 (EST) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Fri, 06 Mar 2026 19:34:04 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jetm.me; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1772843644; x=1772850844; bh=jUfiJHAcvHzsW9gWJPo2SxNLeAAQDRzeb3RPmZ0qIi8=; b= XTxAQkxH4WHyk+x0UkMptsy8Siy8E6TXvo9huaWr95m3uQ845l3QLSe/zWWG8fCF 53Rroci5YRAuKAH/IbnZBOObQGJkjJ6oCC3rvG6F1Q0B/9ls/RUS74tReSA7QdhW kAkOanK+m1qufj7b+uME3qe0CR/t1UI9kW93M/55qEcE26O1kSBZeCTYgXL9oAR+ q4ewl8j0JQSHLCRfoZ1QharMq2gOnOZobbYWea09CLR8eRoVNLccGAhBayG5i9IE siKDjl1jMVqKcNEBSyMOb4qZHvvLn/VB/fO/1bbkmFhZCakcx3LcBDenqus30Qrv l5Np99iuPfcd9U7T7tburg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1772843644; x= 1772850844; bh=jUfiJHAcvHzsW9gWJPo2SxNLeAAQDRzeb3RPmZ0qIi8=; b=O 0qTvjl36ezz7l/CAiGuHOZ3Ovbmq25VibALHnZ2YBoVi7FxWOodiaf5ZbH6X/ggW dTRspOCwUaNpquQN0N2i1N0fQSq8NxFUD+LwJEmLd3pY5VaYDcH1E98nPlYeQy62 M5j1btjlPHoDRX/SYkKH565puLbmqUxF1kVK2WFw9h0Tn3RTpBJrtxu/OEHATuo0 VgP2mDp0RFh+Kv/0gMg1Bmy/sYH0l7iPhtAyc0DzfV0CEbigbxUKoCwPhQzUOfIr +VzWGbT3KLgiYwElDvyZqHFn0887NbFwUCterPZPpHVaI9EePUjMoyfjZf3rf/8f fwOu5tKZM4BK0nrQI7Grw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgddvjedtjeehucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepve ektdfhffevuddtgfetieevtddvheduhfeggfekveejlefhleefieevueefiefhnecuvehl uhhsthgvrhfuihiivgepuddtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehflhhoshhsse hjvghtmhdrmhgvpdhnsggprhgtphhtthhopedvfedpmhhouggvpehsmhhtphhouhhtpdhr tghpthhtoheprghnghgvlhhoghhiohgrtggthhhinhhordguvghlrhgvghhnohestgholh hlrggsohhrrgdrtghomhdprhgtphhtthhopeefudelfeeifedusehgmhgrihhlrdgtohhm pdhrtghpthhtoheplhhoohhnghdrtdigtddtsehgmhgrihhlrdgtohhmpdhrtghpthhtoh eprghrihgvlhdrrhhoshgvnhhfvghlugdrjeehtdesghhmrghilhdrtghomhdprhgtphht thhopegthhgrphhuihhsuggrrhhiohegsehgmhgrihhlrdgtohhmpdhrtghpthhtohepgh hiohhsrghlledtsehgmhgrihhlrdgtohhmpdhrtghpthhtohepmhgrthhthhhirghsrdgs ghhgsehgmhgrihhlrdgtohhmpdhrtghpthhtoheprhgrughoihdrtghhrhhishesghhmrg hilhdrtghomhdprhgtphhtthhopehsrghmuhdrthholhhjrghmohesghhmrghilhdrtgho mh X-ME-Proxy: Feedback-ID: i9dde48b3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 3A1881EA006B; Fri, 6 Mar 2026 19:34:04 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Fri, 06 Mar 2026 18:33:31 -0600 Subject: [PATCH 12/18] wifi: mt76: mt7925: advertise EHT 320MHz capabilities for 6GHz band Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260306-mt7927-wifi-support-v1-12-c77e7445511d@jetm.me> To: linux-wireless@vger.kernel.org, Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Deren Wu , Ming Yen Hsieh Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Marcin FM , Cristian-Florin Radoi , George Salukvadze , Evgeny Kapusta <3193631@gmail.com>, Samu Toljamo , Ariel Rosenfeld , Chapuis Dario , =?utf-8?q?Thibaut_Fran=C3=A7ois?= , =?utf-8?q?=E5=BC=A0=E6=97=AD=E6=B6=B5?= , Javier Tia X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=4700; i=floss@jetm.me; h=from:subject:message-id; bh=2hcUPm4U/IeBMFjpuJHby3rkRBghMcipdujJQ1HSdNg=; b=kA0DAAoBte7DC6hndx8ByyZiAGmrclDIruDhnTwS7bbuSsddulTeXZJNLYvRrom7IwcqgcMzP YkBswQAAQoAHRYhBJsTsgvPDt4jRUqTybXuwwuoZ3cfBQJpq3JQAAoJELXuwwuoZ3cfetgMAICT DG9hcbpiIsqOVbOJJ8tNtvRfbLAQaRY+myXrn1rODTe6gOrK/fQtPY5QpBmC6EbRO6ltn3TiIo1 BE5AH9tx3OyAqU8KxiYajOIINwQqK6nUgkm8nqnDxlyP9mTR1BBBwTqn3YZ3gZYs0S3ivVFovCX AG9Yor59EmTXjjngnG0s0jduP7ViEOV31PKLFvExnYfRHmuspYXI/eHBoXguNMKCzOctFpV8Ibd D+efzT5m6tqiwLg172HsHjxIIB9NcP5ToI4mLrCAU9NHksenVh7MvhSGOVtmnL9AmG/2GQ5omi4 tlpaDQcd72uT4lsk3hxE+6c7MFb+I3YB9PsOZu0mPZ/lvUOykBw3tCCdQHugMy86o9iwW/JN11X oxn+XVe/KIxd2772AieOXnRH2nbePU/NLOKY2HU82ihxcGI3z4IFNcEQYSbqziN6qyeNbHo4HnN ++njPWowclCAXQXYw44lYOpKSOBl6FrQ0XC/q2rRGZuWLuFLCS8YY2SLzqPQ== X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> References: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> mt7925_init_eht_caps() only populates EHT MCS/NSS maps for BW <=3D 80 and BW =3D 160, but never sets BW =3D 320. This means iw phy shows no 320MHz MCS map entries even though the hardware supports 320MHz operation in the 6GHz band. Add the missing 320MHz capability bits for 6GHz, following the same pattern as mt7996: - PHY_CAP0: IEEE80211_EHT_PHY_CAP0_320MHZ_IN_6GHZ - PHY_CAP1: beamformee SS for 320MHz - PHY_CAP2: sounding dimensions for 320MHz - PHY_CAP6: MCS15 support for 320MHz width - PHY_CAP7: non-OFDMA UL MU-MIMO and MU beamformer for 320MHz - MCS/NSS: populate bw._320 maps for 6GHz band Guard all 320MHz capability advertisements behind is_mt7927() since 320MHz support has only been validated on MT7927 hardware. The mt7925 standalone chip may not support 320MHz operation. Assisted-by: Claude Code (claude-opus-4-6) Tested-by: Marcin FM Tested-by: Cristian-Florin Radoi Tested-by: George Salukvadze Tested-by: Evgeny Kapusta <3193631@gmail.com> Tested-by: Samu Toljamo Tested-by: Ariel Rosenfeld Tested-by: Chapuis Dario Tested-by: Thibaut Fran=C3=A7ois Tested-by: =E5=BC=A0=E6=97=AD=E6=B6=B5 Signed-off-by: Javier Tia --- drivers/net/wireless/mediatek/mt76/mt7925/main.c | 28 ++++++++++++++++++++= +++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/main.c b/drivers/net= /wireless/mediatek/mt76/mt7925/main.c index 2d358a96640c..4e1265886f20 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/main.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/main.c @@ -183,6 +183,10 @@ mt7925_init_eht_caps(struct mt792x_phy *phy, enum nl80= 211_band band, IEEE80211_EHT_PHY_CAP0_SU_BEAMFORMER | IEEE80211_EHT_PHY_CAP0_SU_BEAMFORMEE; =20 + if (band =3D=3D NL80211_BAND_6GHZ && is_mt7927(&phy->dev->mt76)) + eht_cap_elem->phy_cap_info[0] |=3D + IEEE80211_EHT_PHY_CAP0_320MHZ_IN_6GHZ; + eht_cap_elem->phy_cap_info[0] |=3D u8_encode_bits(u8_get_bits(sts - 1, BIT(0)), IEEE80211_EHT_PHY_CAP0_BEAMFORMEE_SS_80MHZ_MASK); @@ -193,10 +197,20 @@ mt7925_init_eht_caps(struct mt792x_phy *phy, enum nl8= 0211_band band, u8_encode_bits(sts - 1, IEEE80211_EHT_PHY_CAP1_BEAMFORMEE_SS_160MHZ_MASK); =20 + if (band =3D=3D NL80211_BAND_6GHZ && is_mt7927(&phy->dev->mt76)) + eht_cap_elem->phy_cap_info[1] |=3D + u8_encode_bits(sts - 1, + IEEE80211_EHT_PHY_CAP1_BEAMFORMEE_SS_320MHZ_MASK); + eht_cap_elem->phy_cap_info[2] =3D u8_encode_bits(sts - 1, IEEE80211_EHT_PHY_CAP2_SOUNDING_DIM_80MHZ_MASK) | u8_encode_bits(sts - 1, IEEE80211_EHT_PHY_CAP2_SOUNDING_DIM_160MHZ_MASK); =20 + if (band =3D=3D NL80211_BAND_6GHZ && is_mt7927(&phy->dev->mt76)) + eht_cap_elem->phy_cap_info[2] |=3D + u8_encode_bits(sts - 1, + IEEE80211_EHT_PHY_CAP2_SOUNDING_DIM_320MHZ_MASK); + eht_cap_elem->phy_cap_info[3] =3D IEEE80211_EHT_PHY_CAP3_NG_16_SU_FEEDBACK | IEEE80211_EHT_PHY_CAP3_NG_16_MU_FEEDBACK | @@ -217,7 +231,8 @@ mt7925_init_eht_caps(struct mt792x_phy *phy, enum nl802= 11_band band, u8_encode_bits(u8_get_bits(0x11, GENMASK(1, 0)), IEEE80211_EHT_PHY_CAP5_MAX_NUM_SUPP_EHT_LTF_MASK); =20 - val =3D width =3D=3D NL80211_CHAN_WIDTH_160 ? 0x7 : + val =3D width =3D=3D NL80211_CHAN_WIDTH_320 ? 0xf : + width =3D=3D NL80211_CHAN_WIDTH_160 ? 0x7 : width =3D=3D NL80211_CHAN_WIDTH_80 ? 0x3 : 0x1; eht_cap_elem->phy_cap_info[6] =3D u8_encode_bits(u8_get_bits(0x11, GENMASK(4, 2)), @@ -230,6 +245,11 @@ mt7925_init_eht_caps(struct mt792x_phy *phy, enum nl80= 211_band band, IEEE80211_EHT_PHY_CAP7_MU_BEAMFORMER_80MHZ | IEEE80211_EHT_PHY_CAP7_MU_BEAMFORMER_160MHZ; =20 + if (band =3D=3D NL80211_BAND_6GHZ && is_mt7927(&phy->dev->mt76)) + eht_cap_elem->phy_cap_info[7] |=3D + IEEE80211_EHT_PHY_CAP7_NON_OFDMA_UL_MU_MIMO_320MHZ | + IEEE80211_EHT_PHY_CAP7_MU_BEAMFORMER_320MHZ; + val =3D u8_encode_bits(nss, IEEE80211_EHT_MCS_NSS_RX) | u8_encode_bits(nss, IEEE80211_EHT_MCS_NSS_TX); =20 @@ -239,6 +259,12 @@ mt7925_init_eht_caps(struct mt792x_phy *phy, enum nl80= 211_band band, eht_nss->bw._160.rx_tx_mcs9_max_nss =3D val; eht_nss->bw._160.rx_tx_mcs11_max_nss =3D val; eht_nss->bw._160.rx_tx_mcs13_max_nss =3D val; + + if (band =3D=3D NL80211_BAND_6GHZ && is_mt7927(&phy->dev->mt76)) { + eht_nss->bw._320.rx_tx_mcs9_max_nss =3D val; + eht_nss->bw._320.rx_tx_mcs11_max_nss =3D val; + eht_nss->bw._320.rx_tx_mcs13_max_nss =3D val; + } } =20 int mt7925_init_mlo_caps(struct mt792x_phy *phy) --=20 2.53.0 From nobody Thu Apr 9 15:53:19 2026 Received: from flow-a2-smtp.messagingengine.com (flow-a2-smtp.messagingengine.com [103.168.172.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E03C027F732; Sat, 7 Mar 2026 00:34:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.137 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843649; cv=none; b=hAuqhA0f62WOaAeV3ijFwPjRf4PStSRCOFmHgjG8jYoEb0JnlAicAUL9/5A84Amys4uQHZVsjU3EZuN2JJq/0R/VI//CQnssaA40dvbrAXzo/8Jn/TnnoeSbmw5TUc/ZYAlOq2xi1+PnRlsyGvnl2mTCfWyA/V/QCgRNIms9fII= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843649; c=relaxed/simple; bh=zsKSZ6XbfqOeGxStPL+whgnb6wkPhoFUKNokNTtSVR0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=ZxoIrCOQGkVIIr39rSLDIt4g9CDFOSuOl3Ju3HOge2k+aKQiyDLoFtBJWsw9xn+OyIkXcMOzjjxCC0iNN8Cze8LS5wy5WJwOu7tiJD726YEXi5j13WQwlp7h4IObv1QfOJgJN7HYo15nDzMUF2TDN53TMtGhDXIyPFMDV9bejb8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me; spf=pass smtp.mailfrom=jetm.me; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b=ftfnOTqQ; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=Xjy426+8; arc=none smtp.client-ip=103.168.172.137 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=jetm.me Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b="ftfnOTqQ"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="Xjy426+8" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.phl.internal (Postfix) with ESMTP id 5A5AB1380A8D; Fri, 6 Mar 2026 19:34:07 -0500 (EST) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Fri, 06 Mar 2026 19:34:07 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jetm.me; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1772843647; x=1772850847; bh=KON0o3mhXlKIiT7zmG2tCzJu5hf3PlFXU3DpYimtRDw=; b= ftfnOTqQFiUISO+qXyRyQCKkkK1zj+U8cWelIJVd6nuWtzgc11OTBQV59RKxj/n7 /QIK9aBkS5WYYUlrQBpJ/PvVg22fuQxa3oNkhr5IurqBH/rJpG7r2lOe1Epk9DmF KUjc2aYLPvZy2FN8yRo2PlrGqS2SU1AMCz1HzV1vuqQUOzaPShsB7Diho2OenN27 NJShXWs7hEVgr7eEhyv2xxRTkhQOezButbVkDPwhTHRsBrjKC+BCKsrvbWDxGkHR yulZ/KDtW6OKZqV7Zaw4Q78plF4olqU7wAJhOpuYTcwKE7NHZgYnpM4Yn2FomlW+ aUP1h69ap1jEbhMdaPzY7g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1772843647; x= 1772850847; bh=KON0o3mhXlKIiT7zmG2tCzJu5hf3PlFXU3DpYimtRDw=; b=X jy426+8vhAb7fKyTDbV4VFEoluCRwFloTfUJURH1oLAVsjNKfPA069P2afWJz3vo MuWkmMXZK4NuwIpvOEoXbROi8459/6NckZxuVQkeWRTGjRUdNLStTGD07/3hDJlj 1q6ITfHQVtx7VEbKUjlnIAIUfKvdfJTpD2apFB01473t//tvsFnFpyMVLVt3CBCu ScgUR0p5p5uuBy7iJEChJECLVQeHTOpQxj0tIDwymkwAJeahLQjK9IH3EMuA8ng+ ZhgmZyhrqwyN+nBgjMcbD/At6aTN/8MnvVRhMBcuCuYrXC9yVnsaHvYKlzoDN3o8 rLCbSxy5kslhKRZCy5cuQ== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgddvjedtjeehucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepve ektdfhffevuddtgfetieevtddvheduhfeggfekveejlefhleefieevueefiefhnecuvehl uhhsthgvrhfuihiivgepuddunecurfgrrhgrmhepmhgrihhlfhhrohhmpehflhhoshhsse hjvghtmhdrmhgvpdhnsggprhgtphhtthhopedvfedpmhhouggvpehsmhhtphhouhhtpdhr tghpthhtoheprghnghgvlhhoghhiohgrtggthhhinhhordguvghlrhgvghhnohestgholh hlrggsohhrrgdrtghomhdprhgtphhtthhopeefudelfeeifedusehgmhgrihhlrdgtohhm pdhrtghpthhtoheplhhoohhnghdrtdigtddtsehgmhgrihhlrdgtohhmpdhrtghpthhtoh eprghrihgvlhdrrhhoshgvnhhfvghlugdrjeehtdesghhmrghilhdrtghomhdprhgtphht thhopegthhgrphhuihhsuggrrhhiohegsehgmhgrihhlrdgtohhmpdhrtghpthhtohepgh hiohhsrghlledtsehgmhgrihhlrdgtohhmpdhrtghpthhtohepmhgrthhthhhirghsrdgs ghhgsehgmhgrihhlrdgtohhmpdhrtghpthhtoheprhgrughoihdrtghhrhhishesghhmrg hilhdrtghomhdprhgtphhtthhopehsrghmuhdrthholhhjrghmohesghhmrghilhdrtgho mh X-ME-Proxy: Feedback-ID: i9dde48b3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 30B741EA006B; Fri, 6 Mar 2026 19:34:07 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Fri, 06 Mar 2026 18:33:32 -0600 Subject: [PATCH 13/18] wifi: mt76: mt7925: restore FW_DWLD_BYPASS_DMASHDL in MT7927 PM wake path Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260306-mt7927-wifi-support-v1-13-c77e7445511d@jetm.me> To: linux-wireless@vger.kernel.org, Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Deren Wu , Ming Yen Hsieh Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Marcin FM , Cristian-Florin Radoi , George Salukvadze , Evgeny Kapusta <3193631@gmail.com>, Samu Toljamo , Ariel Rosenfeld , Chapuis Dario , =?utf-8?q?Thibaut_Fran=C3=A7ois?= , =?utf-8?q?=E5=BC=A0=E6=97=AD=E6=B6=B5?= , Javier Tia X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1792; i=floss@jetm.me; h=from:subject:message-id; bh=zsKSZ6XbfqOeGxStPL+whgnb6wkPhoFUKNokNTtSVR0=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpq3JQX3+JxeZEXN62VsVO5lnz+WTaT65EnrldH CJWgaPIScuJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCaatyUAAKCRC17sMLqGd3 H2CiDACEFAV3qPs/nohNmPTJ0CopUnOYlP8GEO3F6wWjuQM8rO1q/DgKzmbfYyRlgKWs3fOQNZx SaF2DWQzWwiE2yz8q6khhF7+IPLc2Ap1B0g8qB1uEoeOwgPNGeGKnNqXJGn9VOP9tYtYz7sDqOP Iq3mtn6s44Fh2OccwQwhK9ylp7uvE695HbOYOugWleuzY+LOwKQVVHhk1GliJpfYLFos7kuyg1+ 8qaJWNASj/Ht39JKbVu9PAJe+xGQsAxzyk8Vkjiw/LdyHuWaSIQxsiNlRf1WjZHKbd9zRB1R3x2 RfFq+c+Z1c6auSnxOhA82w+56oGMV8kOtfFWz9lCVF8xTW+6krx6O0NpzASN6pVYYRRgT2EJzmp NxKr9A1XM+Bx8AHaNedkrAnRFNHM14Oj065SM2cRb6DNxHyyNhAT+JgArwJmeg3lVxnSqaf3yX+ ikvUuXTQx0GyYqjbmIsQcYUU/YGDzJmWjeap/JCk7eG1eMEvB5/CScPBbJJm9ONdUkEqI= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> References: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> mt7927_dma_init() sets FW_DWLD_BYPASS_DMASHDL (BIT(9) of GLO_CFG) during initial probe, but mt792x_dma_enable() - called on every PM wake cycle - did not restore it. On MT7927, every CLR_OWN causes the ROM to reinitialize WFDMA which resets GLO_CFG. The PM wake path already restores ADDR_EXT_EN and clears CSR_LBK_RX_Q_SEL_EN but was missing FW_DWLD_BYPASS_DMASHDL. Add FW_DWLD_BYPASS_DMASHDL to the existing is_mt7927() block in mt792x_dma_enable() so all three MT7927-specific GLO_CFG bits are consistently restored after PM wake. Tested-by: Marcin FM Tested-by: Cristian-Florin Radoi Tested-by: George Salukvadze Tested-by: Evgeny Kapusta <3193631@gmail.com> Tested-by: Samu Toljamo Tested-by: Ariel Rosenfeld Tested-by: Chapuis Dario Tested-by: Thibaut Fran=C3=A7ois Tested-by: =E5=BC=A0=E6=97=AD=E6=B6=B5 Signed-off-by: Javier Tia --- drivers/net/wireless/mediatek/mt76/mt792x_dma.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt792x_dma.c b/drivers/net/= wireless/mediatek/mt76/mt792x_dma.c index 32364f19007d..95082d64fb69 100644 --- a/drivers/net/wireless/mediatek/mt76/mt792x_dma.c +++ b/drivers/net/wireless/mediatek/mt76/mt792x_dma.c @@ -168,7 +168,8 @@ int mt792x_dma_enable(struct mt792x_dev *dev) =20 if (is_mt7927(&dev->mt76)) { mt76_set(dev, MT_WFDMA0_GLO_CFG, - MT_WFDMA0_GLO_CFG_ADDR_EXT_EN); + MT_WFDMA0_GLO_CFG_ADDR_EXT_EN | + MT_WFDMA0_GLO_CFG_FW_DWLD_BYPASS_DMASHDL); mt76_clear(dev, MT_WFDMA0_GLO_CFG, MT_WFDMA0_GLO_CFG_CSR_LBK_RX_Q_SEL_EN); } --=20 2.53.0 From nobody Thu Apr 9 15:53:19 2026 Received: from flow-a2-smtp.messagingengine.com (flow-a2-smtp.messagingengine.com [103.168.172.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D1BE32D640D; Sat, 7 Mar 2026 00:34:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.137 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843652; cv=none; b=omF15n+3P0mzmTHiJ39SwQ5SuvRP0ieAXa1CZTtDEDphOTqa7eG5I6HahRnz5Ji4QjTWYz/Jfdi2Qn6c0sxcJz0DHj1ya2KT5+mGI46rr9gtJ29s+7zDSLSnZd7Rq4GXaQWnq4ur3oJ77YqEWwX5+bDalzTUrKwYOTP51Ml5K/4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843652; c=relaxed/simple; bh=tCHjsPhpfMH7ZEGqWpgSyLniBJo0Zn0CURYGz/GzZP4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=Gj5p28btTF+eNYeZRNGBTjyVGHwSzOsi9dh/+U7mhak2Z36lnTu3OBQrp4KNIXBNx/ESE2g5fziJHaL1EPMkAdHC7/4tA3ABr9xbdwQ2svI8lk0gGclVoHl05OsDVqcwUwkY5P5jo635zOlNQTKEefHlkNhKphhxOXpdsnKB2tk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me; spf=pass smtp.mailfrom=jetm.me; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b=ES8gN2g9; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=KqShWAJy; arc=none smtp.client-ip=103.168.172.137 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=jetm.me Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b="ES8gN2g9"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="KqShWAJy" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.phl.internal (Postfix) with ESMTP id 4D0311380AB4; Fri, 6 Mar 2026 19:34:10 -0500 (EST) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Fri, 06 Mar 2026 19:34:10 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jetm.me; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1772843650; x=1772850850; bh=SPSKM3QYVOcFDvng3faMKvZZN8LqVSIHWoAzKRCTAZ8=; b= ES8gN2g91ZN4V71Hrkfv+G3zV3C/s6x8wCCKZZ/8cXI9fA6Zc+kBVCbOy6SGemLm /dhpn+dCKxTGvQ8czjSDbT+7T7rsq9/HMlT8ZdLQFcBPauy6fo4fGSK7TBegTdG8 CVuW8UdQuEZdDgRM4eHlehUB0g8MT9QfJAATBdvb+iQkHtNXmmnDEzqNR+zDYy+F /7NhSwsJt/+6/nn/FDsel0hdlgXwbjL549GusQbMb1blW9LkazGMGrxn/O5sL2Kv SBGs0FFMX9rvsE+bwJUfL9PNPM4vjUgfdX+8+qWKvojoPkZ85NJeG6c0QuxQ3PiT Tzw7qimd2JacbojlLkP/pg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1772843650; x= 1772850850; bh=SPSKM3QYVOcFDvng3faMKvZZN8LqVSIHWoAzKRCTAZ8=; b=K qShWAJyDTfnCdQZnIhmG8qd+x4Xs/Ruji8ir1L7PesfNax0QFqA956/qnihcklKl rZxtsAnVCZQ4aGvzp7Ms9Hj8WSEVJfdKY7lyKV2A1SCrBFKqZNcx7490en7/hGlP b1ZmWYTA2TCQ7Rh8qGTQv9BjQm7cU87JmyUY3eDVA5OykPHSzZ/s8LpRXNqhCYFO 47liRut97miphIicoLjbYsyRlwGEOwcdMh1V0z6iDazlUxtA6mqBUB8aGDFhEL4h qKEIYi3YfyNPD6W0QLIeYd4WnJuO+vB4tja2/p9F6TwXODtD3Kk21D8oOyMxm4lp 7Fiiu0jmTDEOJtsS2512A== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgddvjedtjeehucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepve ektdfhffevuddtgfetieevtddvheduhfeggfekveejlefhleefieevueefiefhnecuvehl uhhsthgvrhfuihiivgepuddunecurfgrrhgrmhepmhgrihhlfhhrohhmpehflhhoshhsse hjvghtmhdrmhgvpdhnsggprhgtphhtthhopedvfedpmhhouggvpehsmhhtphhouhhtpdhr tghpthhtoheprghnghgvlhhoghhiohgrtggthhhinhhordguvghlrhgvghhnohestgholh hlrggsohhrrgdrtghomhdprhgtphhtthhopeefudelfeeifedusehgmhgrihhlrdgtohhm pdhrtghpthhtoheplhhoohhnghdrtdigtddtsehgmhgrihhlrdgtohhmpdhrtghpthhtoh eprghrihgvlhdrrhhoshgvnhhfvghlugdrjeehtdesghhmrghilhdrtghomhdprhgtphht thhopegthhgrphhuihhsuggrrhhiohegsehgmhgrihhlrdgtohhmpdhrtghpthhtohepgh hiohhsrghlledtsehgmhgrihhlrdgtohhmpdhrtghpthhtohepmhgrthhthhhirghsrdgs ghhgsehgmhgrihhlrdgtohhmpdhrtghpthhtoheprhgrughoihdrtghhrhhishesghhmrg hilhdrtghomhdprhgtphhtthhopehsrghmuhdrthholhhjrghmohesghhmrghilhdrtgho mh X-ME-Proxy: Feedback-ID: i9dde48b3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 1B2BF1EA006B; Fri, 6 Mar 2026 19:34:10 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Fri, 06 Mar 2026 18:33:33 -0600 Subject: [PATCH 14/18] wifi: mt76: mt7925: disable ASPM for MT7927 to fix throughput collapse Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260306-mt7927-wifi-support-v1-14-c77e7445511d@jetm.me> To: linux-wireless@vger.kernel.org, Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Deren Wu , Ming Yen Hsieh Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Marcin FM , Cristian-Florin Radoi , George Salukvadze , Evgeny Kapusta <3193631@gmail.com>, Samu Toljamo , Ariel Rosenfeld , Chapuis Dario , =?utf-8?q?Thibaut_Fran=C3=A7ois?= , =?utf-8?q?=E5=BC=A0=E6=97=AD=E6=B6=B5?= , Javier Tia X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2658; i=floss@jetm.me; h=from:subject:message-id; bh=tCHjsPhpfMH7ZEGqWpgSyLniBJo0Zn0CURYGz/GzZP4=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpq3JQNGtFbWdcTB+Upou/8YMJmJGJHU4QfNdko PteefI72lmJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCaatyUAAKCRC17sMLqGd3 H36oC/41zVdsrE9+qtrN8xyBaeB/dnsrzUqhOj8nfug75FVdVifSRtQeDkJreXUiZYZal5icoL6 XYbiTtxDACEOMEL2d/omAJ7EJXdH5BSftEhNr1+igQYE2xHjQZlYzN1ManvElv5hU0HYbWvVAdD INvyzqKA3ba4i9+xhsp6iQLTMuqYRH6+/Y1L83OmH4DeqmIPCcJbkAK0ZvuAJ4buaDYHfqcNeFu Lm2NXJCZ6L+6l35a6HseZiXr6pQl/WYEzRvEzPrmgzhgDByPovnFBykxJzrzgzghxxVIE0cEdNG tkXpAFrx2YP1EZOkutZc4ZXHSBq6dAyvSqutta4YKu3l6kKV6wVXoZVoOY7p9KkznlUd/+mjr8B bzfziceaPc0vkz+R2MAqfEGVIMvw97RRloirqSVXXIF3QKnsMpSSzZ2W3jxFGAU5WFspBiRoWAc nha6HcdDspsdcFxmFtdwBdRgRCZ31Ax+OUAFTCbgcmGGQIHYjoOaE82LeVlgfapHOi3xI= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> References: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> MT7927 (MT7927) exhibits severe throughput degradation when PCIe ASPM L1 is active. Upload throughput drops from 1+ Gbps to ~200 Mbps, and intermittent download drops to ~69 Mbps have been observed. The root cause is that MT7927's CONNINFRA power domain and WFDMA register access are unreliable when the PCIe link transitions in and out of L1 sleep state. Unlike MT7925, MT7927 depends on CONNINFRA being continuously accessible for CBTOP address remap, and its ROM reinitializes WFDMA on every CLR_OWN which can race with L1 transitions. Disable ASPM unconditionally for MT7927 at probe time using the existing mt76_pci_disable_aspm() helper, which handles both the device and parent bridge. This disables L0s in addition to L1; L0s power savings are negligible for a PCIe WLAN card and this avoids needing a separate L1-only code path with CONFIG_PCIEASPM fallback handling. After the disable, mt76_pci_aspm_supported() returns false so the 2-3 ms delay in __mt792xe_mcu_drv_pmctrl() is correctly skipped. The pci_disable_link_state() call persists across suspend/resume. Tested-by: Marcin FM Tested-by: Cristian-Florin Radoi Tested-by: George Salukvadze Tested-by: Evgeny Kapusta <3193631@gmail.com> Tested-by: Samu Toljamo Tested-by: Ariel Rosenfeld Tested-by: Chapuis Dario Tested-by: Thibaut Fran=C3=A7ois Tested-by: =E5=BC=A0=E6=97=AD=E6=B6=B5 Signed-off-by: Javier Tia --- drivers/net/wireless/mediatek/mt76/mt7925/pci.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c b/drivers/net/= wireless/mediatek/mt76/mt7925/pci.c index 6275e78777b0..e6830404c8fc 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/pci.c @@ -516,7 +516,14 @@ static int mt7925_pci_probe(struct pci_dev *pdev, if (ret) goto err_free_pci_vec; =20 - if (mt7925_disable_aspm) + /* MT7927 CONNINFRA power domain and WFDMA register access are + * unreliable with PCIe L1 active, causing throughput to drop + * from 1+ Gbps to ~200 Mbps. Disable ASPM unconditionally + * rather than only L1, since L0s savings are negligible for + * a PCIe WLAN card and mt76_pci_disable_aspm() already + * handles both device and parent bridge in one call. + */ + if (mt7925_disable_aspm || is_mt7927_hw) mt76_pci_disable_aspm(pdev); =20 ops =3D mt792x_get_mac80211_ops(&pdev->dev, &mt7925_ops, --=20 2.53.0 From nobody Thu Apr 9 15:53:19 2026 Received: from flow-a2-smtp.messagingengine.com (flow-a2-smtp.messagingengine.com [103.168.172.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 10FC32BD00C; Sat, 7 Mar 2026 00:34:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.137 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843655; cv=none; b=VXy2Pe+CU7Nr+2RZ+GkE7PSkE/xKGWeSv7pGlRjyuNZQ+JLF0LmaIbbFWVakXxwbRB5WrSrDew4VN9SMmJ1hPOIPIQAV/ac7BhlGwTNcx/f92tfJWyHaFbfnW7vRgg0X5M+uFmJCO0veBBQ7DKty4DUQlFX0rnkthSDjeWHDqE4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843655; c=relaxed/simple; bh=hxcSincyd2o6Rc2OyiPCHchQlCqvcUsPEmPLVBDCKXE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=dYe8D5QEULCff1Jzow49HJv29d7LvY7s+iT9pZfWcAINWf5fZtBBAqti9qPDskxHrGXMY+EFZQu+V+kHE9WqdT1fnryOBdTafR51G0MJsKr+YQFoHxK+E/SVPNMY+lDAxzg/C0I7Ju7jWmNNfzD7d6g/UEOlrRR+bmu0Q2qYQOM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me; spf=pass smtp.mailfrom=jetm.me; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b=hE5XLWzE; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=j/7Zatfu; arc=none smtp.client-ip=103.168.172.137 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=jetm.me Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b="hE5XLWzE"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="j/7Zatfu" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.phl.internal (Postfix) with ESMTP id 550E31380AB8; Fri, 6 Mar 2026 19:34:13 -0500 (EST) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Fri, 06 Mar 2026 19:34:13 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jetm.me; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1772843653; x=1772850853; bh=jrwffRQEagabaef6ha34lgm0oUqiXx0dwX24YtMs0QQ=; b= hE5XLWzEJob8lOH24guqZhSyPHQXFukRTWr5Litr0CDS5rbqFco1UabpHo8Acjp5 6YtitUb2RslU8SRxY9wvguVEsFRzqupJmquzFF/nLtGqRte5A7GhZjb7gnNuWizN 18WRwgFKfdNtkPgEuz3CILaovgs43VQviXXT407lQTOo86zRqjZSNRpMPN4FNuvi UcxkTt0ZFRZzaONEbUCIltTc07P3ntK6JEAdXPh3VZgSZqCqTP0ZJGxzQGq3CdRe v1ZYdTUx60DzCu8f3RZ8jZShI5SvhmiPUbohz/Dex55xKcPwz25br21PvfrXKc0Y WERjtf0ZphIBrZ7anxWt7g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1772843653; x= 1772850853; bh=jrwffRQEagabaef6ha34lgm0oUqiXx0dwX24YtMs0QQ=; b=j /7ZatfuOus2L4xDhhH0/VTRCWNfhVvZRKAZi2t29+nCa9bBAWwQFqerxNcv3T0Zi CeBgZi+K8ZFjOgbY1S8epwh7SEAeNHl1UogRFBUIyE6dHO1Z8O1y1cFTFr4GiEXn JdaKGu0TLM/jejJgyo++mi6xHpdMt4545Ao/eEUEZhjN300qksdARXO2bHABQ6mT exoxDHsTIMkovnUV55tYgGe1W0347+o2Jhv/5zOigpFoZBgMGcfcOB6tQ2MeXww+ sf57o6w1XRCwhhBZ1ii24l6Dqo4PNNGW5Vne7ySeSajI+Om6ixlP4rPV5R3Iorbi 6RUk+EOXuwTwYQu/HoIGQ== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgddvjedtjeehucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepve ektdfhffevuddtgfetieevtddvheduhfeggfekveejlefhleefieevueefiefhnecuvehl uhhsthgvrhfuihiivgepudefnecurfgrrhgrmhepmhgrihhlfhhrohhmpehflhhoshhsse hjvghtmhdrmhgvpdhnsggprhgtphhtthhopedvfedpmhhouggvpehsmhhtphhouhhtpdhr tghpthhtoheprghnghgvlhhoghhiohgrtggthhhinhhordguvghlrhgvghhnohestgholh hlrggsohhrrgdrtghomhdprhgtphhtthhopeefudelfeeifedusehgmhgrihhlrdgtohhm pdhrtghpthhtoheplhhoohhnghdrtdigtddtsehgmhgrihhlrdgtohhmpdhrtghpthhtoh eprghrihgvlhdrrhhoshgvnhhfvghlugdrjeehtdesghhmrghilhdrtghomhdprhgtphht thhopegthhgrphhuihhsuggrrhhiohegsehgmhgrihhlrdgtohhmpdhrtghpthhtohepgh hiohhsrghlledtsehgmhgrihhlrdgtohhmpdhrtghpthhtohepmhgrthhthhhirghsrdgs ghhgsehgmhgrihhlrdgtohhmpdhrtghpthhtoheprhgrughoihdrtghhrhhishesghhmrg hilhdrtghomhdprhgtphhtthhopehsrghmuhdrthholhhjrghmohesghhmrghilhdrtgho mh X-ME-Proxy: Feedback-ID: i9dde48b3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 266991EA006B; Fri, 6 Mar 2026 19:34:13 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Fri, 06 Mar 2026 18:33:34 -0600 Subject: [PATCH 15/18] wifi: mt76: mt7925: handle 320MHz bandwidth in RXV and TXS Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260306-mt7927-wifi-support-v1-15-c77e7445511d@jetm.me> To: linux-wireless@vger.kernel.org, Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Deren Wu , Ming Yen Hsieh Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Marcin FM , Cristian-Florin Radoi , George Salukvadze , Evgeny Kapusta <3193631@gmail.com>, Samu Toljamo , Ariel Rosenfeld , Chapuis Dario , =?utf-8?q?Thibaut_Fran=C3=A7ois?= , =?utf-8?q?=E5=BC=A0=E6=97=AD=E6=B6=B5?= , Javier Tia X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=3297; i=floss@jetm.me; h=from:subject:message-id; bh=hxcSincyd2o6Rc2OyiPCHchQlCqvcUsPEmPLVBDCKXE=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpq3JQ/Ph/XMOIcOJHhpdhqnQYFcO+ygQ2fifzz k7b0bVNX3mJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCaatyUAAKCRC17sMLqGd3 H7gxC/44MsaOxJ/kqaZrTDzGw6xnYAnjWHd3TdlejOUE7JkXNufE/PbJsbO4xUyS+S39GUCscOL wHrmBBEPZDmbqZjuHseYSI1FsGZQ82LT1hyD58b6PO7yEeIiIE+dywkDdpp/H9vROQobIqBYIQl GifNXuyTQldbFnLTih9Vl2bqgSURZgcdBwnnjN3QyOyV71JLoGWwaa8juFV5fEejCk1JOLc0k6M UdX1fpAFo01WCZfEjyXXwF4E8B2+HBiWQvsQxRYXW8Upplkb6D7MZ8VinlXJfvjeYnv8v82qlf2 0ITDEKCZzd06gxcqBV6mADN34o4//4lAH2NIf3Roa0hPfMHqNelvCCDv6BN9zwEvtEo+J2NdfBJ ODAlU33sZicIq5FAhYZwUEyIQ9b2RQTrGCtm5ic/jjVpJNk0iwf6aZHGXLXxOhFHS/v5EA9RmW3 acfdbD5tTcexs6VU1rT68S8iv268vtprMrSEyjA8IYYe8AvuhCJjyH9q5ePQpbvk8qayE= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> References: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> The RX vector (RXV) and TX status (TXS) parsing in mac.c lack handling for 320MHz channel width. When the hardware reports 320MHz in the bandwidth field, mt7925_mac_fill_rx_rate() returns -EINVAL and mt7925_mac_add_txs_skb() records no bandwidth stats. Add IEEE80211_STA_RX_BW_320 cases to both functions. The RXV parser also handles BW_320+1 since the hardware can report 320MHz in two adjacent encoding positions. Also fix whitespace alignment in mt792x_regs.h defines. Assisted-by: Claude Code (claude-opus-4-6) Tested-by: Marcin FM Tested-by: Cristian-Florin Radoi Tested-by: George Salukvadze Tested-by: Evgeny Kapusta <3193631@gmail.com> Tested-by: Samu Toljamo Tested-by: Ariel Rosenfeld Tested-by: Chapuis Dario Tested-by: Thibaut Fran=C3=A7ois Tested-by: =E5=BC=A0=E6=97=AD=E6=B6=B5 Signed-off-by: Javier Tia --- drivers/net/wireless/mediatek/mt76/mt7925/mac.c | 9 +++++++++ drivers/net/wireless/mediatek/mt76/mt792x_regs.h | 6 +++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/mac.c b/drivers/net/= wireless/mediatek/mt76/mt7925/mac.c index caaf71c31480..ad03fc554b69 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/mac.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/mac.c @@ -339,6 +339,11 @@ mt7925_mac_fill_rx_rate(struct mt792x_dev *dev, case IEEE80211_STA_RX_BW_160: status->bw =3D RATE_INFO_BW_160; break; + /* RXV can report 320 in two positions */ + case IEEE80211_STA_RX_BW_320: + case IEEE80211_STA_RX_BW_320 + 1: + status->bw =3D RATE_INFO_BW_320; + break; default: return -EINVAL; } @@ -992,6 +997,10 @@ mt7925_mac_add_txs_skb(struct mt792x_dev *dev, struct = mt76_wcid *wcid, stats->tx_mode[mode]++; =20 switch (FIELD_GET(MT_TXS0_BW, txs)) { + case IEEE80211_STA_RX_BW_320: + rate.bw =3D RATE_INFO_BW_320; + stats->tx_bw[4]++; + break; case IEEE80211_STA_RX_BW_160: rate.bw =3D RATE_INFO_BW_160; stats->tx_bw[3]++; diff --git a/drivers/net/wireless/mediatek/mt76/mt792x_regs.h b/drivers/net= /wireless/mediatek/mt76/mt792x_regs.h index b364d0038653..a2ce6872559e 100644 --- a/drivers/net/wireless/mediatek/mt76/mt792x_regs.h +++ b/drivers/net/wireless/mediatek/mt76/mt792x_regs.h @@ -301,9 +301,9 @@ #define MT_WFDMA0_GLO_CFG_CSR_DISP_BASE_PTR_CHAIN_EN BIT(15) #define MT_WFDMA0_GLO_CFG_CSR_LBK_RX_Q_SEL_EN BIT(20) #define MT_WFDMA0_GLO_CFG_OMIT_RX_INFO_PFET2 BIT(21) -#define MT_WFDMA0_GLO_CFG_ADDR_EXT_EN BIT(26) #define MT_WFDMA0_GLO_CFG_OMIT_RX_INFO BIT(27) #define MT_WFDMA0_GLO_CFG_OMIT_TX_INFO BIT(28) +#define MT_WFDMA0_GLO_CFG_ADDR_EXT_EN BIT(26) #define MT_WFDMA0_GLO_CFG_CLK_GAT_DIS BIT(30) =20 #define HOST_RX_DONE_INT_ENA0 BIT(0) @@ -509,8 +509,8 @@ #define MT_MCIF_REMAP_WF_1_BA 0xd1034 =20 /* CBInfra CBTOP remap values */ -#define MT_CBINFRA_REMAP_WF_VAL 0x74037001 -#define MT_CBINFRA_REMAP_BT_VAL 0x70007000 +#define MT_CBINFRA_REMAP_WF_VAL 0x74037001 +#define MT_CBINFRA_REMAP_BT_VAL 0x70007000 =20 #define MT_MCIF_REMAP_WF_1_BA_VAL 0x18051803 =20 --=20 2.53.0 From nobody Thu Apr 9 15:53:19 2026 Received: from flow-a2-smtp.messagingengine.com (flow-a2-smtp.messagingengine.com [103.168.172.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B0A412DAFA1; Sat, 7 Mar 2026 00:34:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.137 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843658; cv=none; b=V9jVaBFxQ/rUTQB/Ta8jGuw2zya7i25kAPFqsVv+B92dv4fusj7WP30CokBzrnHRWGw/kmIdzErRYR5NbKPf4ua2gg0WqCp0blQh/vwAVzItDMsX4YwLitJnkT6hwJBTNJ6mZA8emR4XBLBXmKGxeQuno82DyUyOqo0Vq90wnWQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843658; c=relaxed/simple; bh=I+my/0PvchaearqqG/a7SXVT9SRugYd7pzKrmWjv3Dc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=GdofbMqkZ4EtnHyiMcOGcRSe09m1+Artg5+R+mbVYFek+7PdmgqEFnM6iOsLHNuhyBA0oAceSE+F+/cs2oi4F/Z/c+9edVYr7pyiJnNmVqD3KPqZctXDxCibpNYWwR7FoPainYBP4p4xNoCtIaaQkCzJ1C+FuVJx7bcBGNhbNBw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me; spf=pass smtp.mailfrom=jetm.me; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b=VSPLO6rY; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=5ZgzmB2o; arc=none smtp.client-ip=103.168.172.137 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=jetm.me Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b="VSPLO6rY"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="5ZgzmB2o" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.phl.internal (Postfix) with ESMTP id 2B7941380783; Fri, 6 Mar 2026 19:34:17 -0500 (EST) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Fri, 06 Mar 2026 19:34:17 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jetm.me; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1772843657; x=1772850857; bh=m1zT+FghB6YhIIp2sgwQx7UzD3lNCmEI6z5nrADAygg=; b= VSPLO6rYYIYhHwB11m5lvqLhQfV0BQG4s9WbEfHXSfniFCMg/ev8w/CWEM1yxxMX XRP/7Cbu2RDcGHDu94kB2hXDVpcBXt+u/QkxZeaJLDeRW3eUlT1wYlMXCKHW2xw5 3Os5TIXYn8SQLt0V2zrRl6cPy5x4Ee2nZjqPnXhmcUatG2xbpv6W9/55x35yP7rp KQM8KglwWXLDm+6IF43Hn80C38yMLLLynL534PqqJO5Rkx7GD09hu/xF8iEdcqUj FofV65LIPi+InPyKB+88bQgp+p/epgNp4leY7rD3+v0eMwSWOs6O7O9lFSygsKpz LmNm1u/9jbxDaJSKrf5YMg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1772843657; x= 1772850857; bh=m1zT+FghB6YhIIp2sgwQx7UzD3lNCmEI6z5nrADAygg=; b=5 ZgzmB2ow6YdLNwBpPpEuNjuAnvQqXLYq+2lhyeyjQkJuJEA40peb2X6aYRaX5OFm hDO1Lk92UlBdumflVov4CXwib47XcwmEjdWRVDWNv/r4OZUGv1ZPy0tJ09bWHSVc h3bzNZoNOgMGAnVkq3zy2fEx4QohnpSiHnJtwLjQhxY9SsOYcQ3kH9FgsJ4s4ukD gEDyHswylq5PA1TIqlUk2sbZfL9y/v/qc38m4yxqwQgiO4RBv7xfhC10AgwgAKWx wfFrF4m6SIgZTX95q7wIjpLOwKzs6pSQAvEi3Jp8SKkcCnt/CmDQo5lmSS/RYCnc dtMxedlcaJYNGvK4562Mg== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgddvjedtjeehucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepve ektdfhffevuddtgfetieevtddvheduhfeggfekveejlefhleefieevueefiefhnecuvehl uhhsthgvrhfuihiivgepudegnecurfgrrhgrmhepmhgrihhlfhhrohhmpehflhhoshhsse hjvghtmhdrmhgvpdhnsggprhgtphhtthhopedvfedpmhhouggvpehsmhhtphhouhhtpdhr tghpthhtoheprghnghgvlhhoghhiohgrtggthhhinhhordguvghlrhgvghhnohestgholh hlrggsohhrrgdrtghomhdprhgtphhtthhopeefudelfeeifedusehgmhgrihhlrdgtohhm pdhrtghpthhtoheplhhoohhnghdrtdigtddtsehgmhgrihhlrdgtohhmpdhrtghpthhtoh eprghrihgvlhdrrhhoshgvnhhfvghlugdrjeehtdesghhmrghilhdrtghomhdprhgtphht thhopegthhgrphhuihhsuggrrhhiohegsehgmhgrihhlrdgtohhmpdhrtghpthhtohepgh hiohhsrghlledtsehgmhgrihhlrdgtohhmpdhrtghpthhtohepmhgrthhthhhirghsrdgs ghhgsehgmhgrihhlrdgtohhmpdhrtghpthhtoheprhgrughoihdrtghhrhhishesghhmrg hilhdrtghomhdprhgtphhtthhopehsrghmuhdrthholhhjrghmohesghhmrghilhdrtgho mh X-ME-Proxy: Feedback-ID: i9dde48b3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id F25D01EA006B; Fri, 6 Mar 2026 19:34:16 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Fri, 06 Mar 2026 18:33:35 -0600 Subject: [PATCH 16/18] wifi: mt76: mt7925: fix stale pointer comparisons in change_vif_links Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260306-mt7927-wifi-support-v1-16-c77e7445511d@jetm.me> To: linux-wireless@vger.kernel.org, Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Deren Wu , Ming Yen Hsieh Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Marcin FM , Cristian-Florin Radoi , George Salukvadze , Evgeny Kapusta <3193631@gmail.com>, Samu Toljamo , Ariel Rosenfeld , Chapuis Dario , =?utf-8?q?Thibaut_Fran=C3=A7ois?= , =?utf-8?q?=E5=BC=A0=E6=97=AD=E6=B6=B5?= , Javier Tia X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1866; i=floss@jetm.me; h=from:subject:message-id; bh=I+my/0PvchaearqqG/a7SXVT9SRugYd7pzKrmWjv3Dc=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpq3JQa9CQDT7yyw0v7f1AJ1E1OA5S8IgRzwmih pYM34spFrKJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCaatyUAAKCRC17sMLqGd3 HxZVDACn3a8K6Dz+qaREBw5xmpcItg/OXRAr+MFLMeCJUzELSe13b5rXqWTa6qaVJmybeiPNcK0 X+aLJs2O9CcUc0mA9FmEo7vU3xf4t19OrtzVEP5Ew1Gl6o5zUtlX7loN+cv0s07d6mIbs2RjZbi oh9a/sH9seN0pxGbgtj66EKj6ZFKDLaYGs3kUoTibxZUAcwJNoDAahRalcVteiOs+JnVWjuBM9k h2UxYjnmqMEBieFmPOCvAz7Ro7rTTBraU2y8ohPKQUmeGD6Z/CB8LPpaux43eY5qtA2RF5YMDRF glPTf5aUEKqWzbQQxQs4k6J1cAMMv8WvG3637mrpwoCqc/6ViGQLcijrrT6aHMRK06HhU8FRoRW 0crNbn5paf9qjSjhLZmfH8T7j1xZIoWciq/1rzK5gIo3iDYLrl6EVtH+ZBC10OQqwKk9A4GsfEn /muF5w6HW1l+jicBzIFSlmmW2aTvXwVYb5htNOxrqORb1fSINPJ+b3VlLUDz++VXb9lhE= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> References: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> In the error path of mt7925_change_vif_links(), the free: label iterates over link_ids to clean up, but compares against `mconf` and `mlink` which hold stale values from the last loop iteration rather than the current link_id being freed. Use array-indexed access (mconfs[link_id] / mlinks[link_id]) to compare against the correct per-link pointers. Fixes: 69acd6d910b0 ("wifi: mt76: mt7925: add MLO support") Assisted-by: Claude Code (claude-opus-4-6) Tested-by: Marcin FM Tested-by: Cristian-Florin Radoi Tested-by: George Salukvadze Tested-by: Evgeny Kapusta <3193631@gmail.com> Tested-by: Samu Toljamo Tested-by: Ariel Rosenfeld Tested-by: Chapuis Dario Tested-by: Thibaut Fran=C3=A7ois Tested-by: =E5=BC=A0=E6=97=AD=E6=B6=B5 Signed-off-by: Javier Tia --- drivers/net/wireless/mediatek/mt76/mt7925/main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/main.c b/drivers/net= /wireless/mediatek/mt76/mt7925/main.c index 4e1265886f20..f82c56c46324 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/main.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/main.c @@ -2073,9 +2073,9 @@ mt7925_change_vif_links(struct ieee80211_hw *hw, stru= ct ieee80211_vif *vif, rcu_assign_pointer(mvif->link_conf[link_id], NULL); rcu_assign_pointer(mvif->sta.link[link_id], NULL); =20 - if (mconf !=3D &mvif->bss_conf) + if (mconfs[link_id] !=3D &mvif->bss_conf) devm_kfree(dev->mt76.dev, mconfs[link_id]); - if (mlink !=3D &mvif->sta.deflink) + if (mlinks[link_id] !=3D &mvif->sta.deflink) devm_kfree(dev->mt76.dev, mlinks[link_id]); } =20 --=20 2.53.0 From nobody Thu Apr 9 15:53:19 2026 Received: from flow-a2-smtp.messagingengine.com (flow-a2-smtp.messagingengine.com [103.168.172.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D0ED32DECC2; Sat, 7 Mar 2026 00:34:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.137 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843662; cv=none; b=kaa0kGXVpDTPwCsvfpvnTeT4/BsT+AhYYTcMOKJ7rIXYWy19y5D8Epf0UFkVfWuwQnT7Eb5CiCWG7AWBrdF6FNl7p2E+bhkde7OHtpfrOVJvoOTe49ZemNiAYO4n6ISMRXbbNIo8Z40xzYwPVXdSKySO21rEVb9ET8srOoWkS3A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843662; c=relaxed/simple; bh=FBeFSy1I2Ej/Rmy+rPE0clpNt2XFsm4ZXHwh2cfDcfU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=eOdQAZ4TYbb/LdnNBH9lP0uQq+rnpiSiDu7tga6flhs7MvauL8Ad16jLuAbp5PIPcAdx9REUXzEugfBAW65v0WMedTa8CCNoF2hyQQp+0g80QWmavfZheSFh4RXPdf1F2GWSgkaUWwAG+0vIDLzj++ojgSFeqQbec3Evfen4zaY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me; spf=pass smtp.mailfrom=jetm.me; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b=mmdpkpPN; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=zGdh/DSl; arc=none smtp.client-ip=103.168.172.137 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=jetm.me Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b="mmdpkpPN"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="zGdh/DSl" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.phl.internal (Postfix) with ESMTP id 134921380A0D; Fri, 6 Mar 2026 19:34:20 -0500 (EST) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Fri, 06 Mar 2026 19:34:20 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jetm.me; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1772843660; x=1772850860; bh=z2sKP+4tUnUqyho0LMUgfgxbAgv1pZ1Bs689dh5tfZg=; b= mmdpkpPNc4Jcgpb16Mz+25WVFpP+t2y+G/oGZsCMMRSYi5m2gNOG/+r+b4/dFBg1 lonz8TVj85habrjtK76LfrQuFkg/aF2HzGm6Hf6nRmWwD/xBlmrfmA8jVoc8hTNC I+mKPBUlrAAZ+RqnrEtpJxX9Kp0r2XZm6srhPleziBqDoEnQeNe03MJSxP1z3sXD Mg2nN48HUWLfosiOQor+fiuhpcyBkMxTIURY9xP5EJWIgNjcIrUKudPx2QniMMy0 jPaTO+Onqt6K9E8hVMwXmgt78UQHJ3Ll5ZilkiescDLaWp3Vztb9pyg4Vc5gV1q/ HxT9alY+2yOgF4WuRfo1mg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1772843660; x= 1772850860; bh=z2sKP+4tUnUqyho0LMUgfgxbAgv1pZ1Bs689dh5tfZg=; b=z Gdh/DSlUxsI/Ebu6vvCL0tccBiw/WEFh6NbHwuE66CnMPDC+0pUMJweC4d6ivMQi //JuNCUjjCN8Na8LF7xz1qlRo2p3kRY6z5DEh6OkkT+XVWrxlK7PY4jK1s6U++0Z F87tc8QkHN7imNYxYNXr8HdTxUUbmpu4S/zq19c5LAa0SbfogGbflEU7p1dYkrb+ xkEYdce7GE8F8/GMF+WurI6xaUCqKSPvsTbHTq4PqYYI9G0GhIpMb+PNY+la6bA0 ADIBVHhfWGVG1zjO+AQ+G/39E5nB54OsVfHtma8TaiZmJzOoB5oCiha8csuGOiUf l6LOmKxJyFWTrwIXDdu3g== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgddvjedtjeehucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepte egveefkeetvdfhteduueehgfehhfeiveeifeeflefgteeuhfelfeefjeeikeeunecuffho mhgrihhnpehmthejiedrsggrnhgunecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrg hmpehmrghilhhfrhhomhepfhhlohhsshesjhgvthhmrdhmvgdpnhgspghrtghpthhtohep vdefpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopegrnhhgvghlohhgihhorggttg hhihhnohdruggvlhhrvghgnhhosegtohhllhgrsghorhgrrdgtohhmpdhrtghpthhtohep feduleefieefudesghhmrghilhdrtghomhdprhgtphhtthhopehlohhonhhgrddtgidttd esghhmrghilhdrtghomhdprhgtphhtthhopegrrhhivghlrdhrohhsvghnfhgvlhgurdej hedtsehgmhgrihhlrdgtohhmpdhrtghpthhtoheptghhrghpuhhishgurghrihhogeesgh hmrghilhdrtghomhdprhgtphhtthhopehgihhoshgrlheltdesghhmrghilhdrtghomhdp rhgtphhtthhopehmrghtthhhihgrshdrsghgghesghhmrghilhdrtghomhdprhgtphhtth hopehrrgguohhirdgthhhrihhssehgmhgrihhlrdgtohhmpdhrtghpthhtohepshgrmhhu rdhtohhljhgrmhhosehgmhgrihhlrdgtohhm X-ME-Proxy: Feedback-ID: i9dde48b3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id D708F1EA006B; Fri, 6 Mar 2026 19:34:19 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Fri, 06 Mar 2026 18:33:36 -0600 Subject: [PATCH 17/18] wifi: mt76: mt7925: fix MT7927 band_idx for stable 5GHz/6GHz operation Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260306-mt7927-wifi-support-v1-17-c77e7445511d@jetm.me> To: linux-wireless@vger.kernel.org, Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Deren Wu , Ming Yen Hsieh Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Marcin FM , Cristian-Florin Radoi , George Salukvadze , Evgeny Kapusta <3193631@gmail.com>, Samu Toljamo , Ariel Rosenfeld , Chapuis Dario , =?utf-8?q?Thibaut_Fran=C3=A7ois?= , =?utf-8?q?=E5=BC=A0=E6=97=AD=E6=B6=B5?= , Javier Tia X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=9338; i=floss@jetm.me; h=from:subject:message-id; bh=FBeFSy1I2Ej/Rmy+rPE0clpNt2XFsm4ZXHwh2cfDcfU=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpq3JQAmTGAYZ1Kw0+vh2TGeLRcSnBukyEPv9rT ECRhIEqvjuJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCaatyUAAKCRC17sMLqGd3 H3UbC/48nwqrnGIxLqPLNYK3/FvUvvar2et/x/UJGcfTxmHr6uYjPd4FIe521PxDI5UsZD782pg 1mmK2m1t6WH+yXwCxDWPMvQIRIO3HVs2YmjB/AkOyyTiG4cJkVuNGozKI+nXJA+gRCEffbEuxBg 60bZlbmZ4fEoxMZ1RPBhBUdlJA+RxfPNlS6q5iSFOVzlaqQ91oFMGOyTkHaUP1SJrKkfF/UHUDl 15dW/8fMUyci5FvrVY+GzO9LYAB2iIEId7riEYfHUU1Ul4iVPzu0uerKtRwlC0r5dgzr/F3p62u jIfrksJrSpjDmqxl7QrNPDsSqCP+634eaj77ImOWXuVDJpONqiQ5kzu6PDO4Ro+3RJOCQtVX5Rn FNtkXmGYbXECCruR9rS71FWWW/d6y02jyZs/U5JqdiRel2GslLvnxz9WEW2cyokIMrBp53uBFtl 5x5IoYuA4N6uiWKgJQfUddY/Ky6BSd5dqQbNiGdDYbVZ2KwG6vRfeIQrBuAkQM+J4yk1k= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> References: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> The MT7927 (Filogic 380) firmware requires explicit band_idx assignment (0 for 2.4GHz, 1 for 5GHz/6GHz) instead of 0xff (auto-select) used by MT7925. Without this, the firmware selects the wrong radio for 5GHz and 6GHz connections, causing WPA 4-way handshake timeout and data plane failures on those bands. Add mt7925_mt7927_hw_band_from_nl() helper to map nl80211_band to hardware band index, and use it throughout the driver: - mac_link_bss_add: set band_idx from link channel at BSS creation - assign_vif_chanctx: update band_idx when channel context changes, resend DEV_INFO to firmware if band changed - bss_basic_tlv: set band_idx in BSS info sent to firmware - set_roc / set_mlo_roc / abort_roc: send concrete dbdcband instead of 0xff auto-select - roc_iter / roc_handle_grant: clamp invalid grant band_idx values using rfband as fallback, process grants for all MT7927 request types (not just JOIN) All changes guarded by is_mt7927() - no impact on MT7925 behavior. Originally discovered and fixed by marcin-fm; Loong0x00 contributed additional improvements based on marcin-fm's patch. Co-developed-by: Marcin FM Signed-off-by: Marcin FM Co-developed-by: =E5=BC=A0=E6=97=AD=E6=B6=B5 Signed-off-by: =E5=BC=A0=E6=97=AD=E6=B6=B5 Assisted-by: Claude Code (claude-opus-4-6) Tested-by: Marcin FM Tested-by: Cristian-Florin Radoi Tested-by: George Salukvadze Tested-by: Evgeny Kapusta <3193631@gmail.com> Tested-by: Samu Toljamo Tested-by: Ariel Rosenfeld Tested-by: Chapuis Dario Tested-by: Thibaut Fran=C3=A7ois Tested-by: =E5=BC=A0=E6=97=AD=E6=B6=B5 Signed-off-by: Javier Tia --- drivers/net/wireless/mediatek/mt76/mt7925/main.c | 40 +++++++++++++++- drivers/net/wireless/mediatek/mt76/mt7925/mcu.c | 54 ++++++++++++++++++= ---- drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h | 5 ++ 3 files changed, 87 insertions(+), 12 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/main.c b/drivers/net= /wireless/mediatek/mt76/mt7925/main.c index f82c56c46324..fcb9f26c8b87 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/main.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/main.c @@ -400,7 +400,24 @@ static int mt7925_mac_link_bss_add(struct mt792x_dev *= dev, =20 mconf->mt76.omac_idx =3D ieee80211_vif_is_mld(vif) ? 0 : mconf->mt76.idx; - mconf->mt76.band_idx =3D 0xff; + + if (is_mt7927(&dev->mt76)) { + struct ieee80211_channel *chan =3D NULL; + + if (link_conf->chanreq.oper.chan) + chan =3D link_conf->chanreq.oper.chan; + else if (mvif->phy->mt76->chandef.chan) + chan =3D mvif->phy->mt76->chandef.chan; + + if (chan) + mconf->mt76.band_idx =3D + mt7925_mt7927_hw_band_from_nl(chan->band); + else + mconf->mt76.band_idx =3D 0xff; + } else { + mconf->mt76.band_idx =3D 0xff; + } + mconf->mt76.wmm_idx =3D ieee80211_vif_is_mld(vif) ? 0 : mconf->mt76.idx % MT76_CONNAC_MAX_WMM_SETS; mconf->mt76.link_idx =3D hweight16(mvif->valid_links); @@ -417,7 +434,8 @@ static int mt7925_mac_link_bss_add(struct mt792x_dev *d= ev, =20 mlink->wcid.idx =3D idx; mlink->wcid.tx_info |=3D MT_WCID_TX_INFO_SET; - mt76_wcid_init(&mlink->wcid, 0); + mt76_wcid_init(&mlink->wcid, + mconf->mt76.band_idx =3D=3D 0xff ? 0 : mconf->mt76.band_idx); =20 mt7925_mac_wtbl_update(dev, idx, MT_WTBL_UPDATE_ADM_COUNT_CLEAR); @@ -2119,9 +2137,12 @@ static int mt7925_assign_vif_chanctx(struct ieee8021= 1_hw *hw, { struct mt792x_chanctx *mctx =3D (struct mt792x_chanctx *)ctx->drv_priv; struct mt792x_vif *mvif =3D (struct mt792x_vif *)vif->drv_priv; + struct mt792x_link_sta *mlink; struct mt792x_dev *dev =3D mt792x_hw_dev(hw); struct ieee80211_bss_conf *pri_link_conf; struct mt792x_bss_conf *mconf; + u8 band_idx; + u8 old_band; =20 mutex_lock(&dev->mt76.mutex); =20 @@ -2137,6 +2158,21 @@ static int mt7925_assign_vif_chanctx(struct ieee8021= 1_hw *hw, mconf =3D &mvif->bss_conf; } =20 + old_band =3D mconf->mt76.band_idx; + if (is_mt7927(&dev->mt76) && ctx->def.chan) { + band_idx =3D mt7925_mt7927_hw_band_from_nl(ctx->def.chan->band); + mconf->mt76.band_idx =3D band_idx; + mlink =3D mt792x_sta_to_link(&mvif->sta, mconf->link_id); + if (mlink) + mlink->wcid.phy_idx =3D band_idx; + + if (old_band !=3D band_idx && vif->type =3D=3D NL80211_IFTYPE_STATION && + mlink) + mt76_connac_mcu_uni_add_dev(&dev->mphy, link_conf, + &mconf->mt76, &mlink->wcid, + true); + } + mconf->mt76.ctx =3D ctx; mctx->bss_conf =3D mconf; mutex_unlock(&dev->mt76.mutex); diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c b/drivers/net/= wireless/mediatek/mt76/mt7925/mcu.c index 8b5ffb240d52..3458aa8c79cb 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c @@ -301,16 +301,36 @@ mt7925_mcu_connection_loss_event(struct mt792x_dev *d= ev, struct sk_buff *skb) static void mt7925_mcu_roc_iter(void *priv, u8 *mac, struct ieee80211_vif *vif) { - struct mt76_vif_link *mvif =3D (struct mt76_vif_link *)vif->drv_priv; + struct mt792x_vif *mvif =3D (struct mt792x_vif *)vif->drv_priv; struct mt7925_roc_grant_tlv *grant =3D priv; + u8 band_idx =3D grant->dbdcband; =20 if (ieee80211_vif_is_mld(vif) && vif->type =3D=3D NL80211_IFTYPE_STATION) return; =20 - if (mvif->idx !=3D grant->bss_idx) + if (mvif->bss_conf.mt76.idx !=3D grant->bss_idx) return; =20 - mvif->band_idx =3D grant->dbdcband; + /* MT7927 firmware requires band_idx 0 (2.4G) or 1 (5/6G). + * Clamp invalid grant values using rfband as fallback. + */ + if (is_mt7927(&mvif->phy->dev->mt76) && band_idx > 1) { + switch (grant->rfband) { + case 1: /* 2.4 GHz */ + band_idx =3D 0; + break; + case 2: /* 5 GHz */ + case 3: /* 6 GHz */ + band_idx =3D 1; + break; + default: + band_idx =3D mvif->bss_conf.mt76.band_idx <=3D 1 ? + mvif->bss_conf.mt76.band_idx : 0; + break; + } + } + + mvif->bss_conf.mt76.band_idx =3D band_idx; } =20 static void mt7925_mcu_roc_handle_grant(struct mt792x_dev *dev, @@ -327,10 +347,11 @@ static void mt7925_mcu_roc_handle_grant(struct mt792x= _dev *dev, =20 if (grant->reqtype =3D=3D MT7925_ROC_REQ_ROC) ieee80211_ready_on_channel(hw); - else if (grant->reqtype =3D=3D MT7925_ROC_REQ_JOIN) + else if (is_mt7927(&dev->mt76) || grant->reqtype =3D=3D MT7925_ROC_REQ_JO= IN) ieee80211_iterate_active_interfaces_atomic(hw, IEEE80211_IFACE_ITER_RESUME_ALL, mt7925_mcu_roc_iter, grant); + dev->phy.roc_grant =3D true; wake_up(&dev->phy.roc_wait); duration =3D le32_to_cpu(grant->max_interval); @@ -1378,10 +1399,15 @@ int mt7925_mcu_set_mlo_roc(struct mt792x_bss_conf *= mconf, u16 sel_links, req.roc[i].center_chan2 =3D 0; req.roc[i].center_chan2_from_ap =3D 0; =20 - /* STR : 0xfe indicates BAND_ALL with enabling DBDC - * EMLSR : 0xff indicates (BAND_AUTO) without DBDC - */ - req.roc[i].dbdcband =3D type =3D=3D MT7925_ROC_REQ_JOIN ? 0xfe : 0xff; + if (is_mt7927(&mvif->phy->dev->mt76)) + req.roc[i].dbdcband =3D + mt7925_mt7927_hw_band_from_nl(chan->band); + else + /* STR : 0xfe indicates BAND_ALL with enabling DBDC + * EMLSR : 0xff indicates (BAND_AUTO) without DBDC + */ + req.roc[i].dbdcband =3D type =3D=3D MT7925_ROC_REQ_JOIN ? + 0xfe : 0xff; =20 if (chan->hw_value < center_ch) req.roc[i].sco =3D 1; /* SCA */ @@ -1419,7 +1445,9 @@ int mt7925_mcu_set_roc(struct mt792x_phy *phy, struct= mt792x_bss_conf *mconf, .bw_from_ap =3D CMD_CBW_20MHZ, .center_chan =3D center_ch, .center_chan_from_ap =3D center_ch, - .dbdcband =3D 0xff, /* auto */ + .dbdcband =3D is_mt7927(&dev->mt76) ? + mt7925_mt7927_hw_band_from_nl(chan->band) : + 0xff, /* auto */ }, }; =20 @@ -1466,7 +1494,10 @@ int mt7925_mcu_abort_roc(struct mt792x_phy *phy, str= uct mt792x_bss_conf *mconf, .len =3D cpu_to_le16(sizeof(struct roc_abort_tlv)), .tokenid =3D token_id, .bss_idx =3D mconf->mt76.idx, - .dbdcband =3D 0xff, /* auto*/ + .dbdcband =3D is_mt7927(&dev->mt76) && + mconf->mt76.band_idx <=3D 1 ? + mconf->mt76.band_idx : + 0xff, /* auto */ }, }; =20 @@ -2495,6 +2526,9 @@ mt7925_mcu_bss_basic_tlv(struct sk_buff *skb, basic_req->phymode_ext =3D mt7925_get_phy_mode_ext(phy, vif, band, link_sta); =20 + if (is_mt7927(phy->dev)) + mconf->mt76.band_idx =3D mt7925_mt7927_hw_band_from_nl(band); + if (band =3D=3D NL80211_BAND_2GHZ) basic_req->nonht_basic_phy =3D cpu_to_le16(PHY_TYPE_ERP_INDEX); else diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h b/drivers/n= et/wireless/mediatek/mt76/mt7925/mt7925.h index ba3d2c4de4ce..d3c89ea0afab 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h +++ b/drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h @@ -63,6 +63,11 @@ enum mt7925_roc_req { MT7925_ROC_REQ_NUM }; =20 +static inline u8 mt7925_mt7927_hw_band_from_nl(enum nl80211_band band) +{ + return band =3D=3D NL80211_BAND_2GHZ ? 0 : 1; +} + enum { UNI_EVENT_ROC_GRANT =3D 0, UNI_EVENT_ROC_GRANT_SUB_LINK =3D 4, --=20 2.53.0 From nobody Thu Apr 9 15:53:20 2026 Received: from flow-a2-smtp.messagingengine.com (flow-a2-smtp.messagingengine.com [103.168.172.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 730422E62B3; Sat, 7 Mar 2026 00:34:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.137 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843665; cv=none; b=GBKn+PTt2ghbnoPm3E8aKUatEbJGflbpea4aqfy+MDN5eHBq1Jiy5C5T9LmGn8uK0ED/OkTgUiN+RtMubLjaX4MDQD+O+A7w/TuDJ7laFaGxNhiBorZJQ2UmMSysNadurTZE2ZGRj6c9UPVxybX0xKi5kGr97eCUdMrtpJJKAgQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843665; c=relaxed/simple; bh=76o6pFwpyjUyv3yPBBBAdI2dlELkl13ZIgHkl2UbS2A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=jAHGKK1Ok7AN8Xj5/bzIzuPT4m9OzGeeJwPzWIUrUjvetS7NCu4bc/op24yxV51VZeMvSZ06aSbssuxawTplJVdBg8WPaQyKeXjCsxjkEnpy1eOqCFvopJr9LLZ/YeYnecDldq+NJdbrg3Exs31G4TOezcHSzXWHgpgso0ziV8s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me; spf=pass smtp.mailfrom=jetm.me; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b=XCxY9Mzn; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=YJg5mHKn; arc=none smtp.client-ip=103.168.172.137 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=jetm.me Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b="XCxY9Mzn"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="YJg5mHKn" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.phl.internal (Postfix) with ESMTP id E23B81380A22; Fri, 6 Mar 2026 19:34:23 -0500 (EST) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Fri, 06 Mar 2026 19:34:23 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jetm.me; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1772843663; x=1772850863; bh=HoAXh3SQ9Tz9LRhc8OIvPnjOzRFjWCfpsYPvBpkZEr8=; b= XCxY9MznMa/MuiHsUf9e2GLh6vAnqch9tXI5SktPbF3gCC9wBXCqKGqhwLRSnJnv ZCAVjIaHkxSJftmCMTrDtqkiPFDOT77EIpCJnrBz2he12ii56pbdOBhI0V7Ijs5I xY9k/wOS/1FVd3nIDsMrlIYAfLP4jPHqwqXtIWinl9e3iiY7XWvFK1kHd/3PYpRQ mb+AsGxRqyHc9quZ7LeUd0GpMaeGIOofMNjaUiIliaV6cLOt1go8nRAjBl9TKibX CxI9C1zUNQJqGygoJIRd6jYrxVsq/2kZb7OWREV3x3mVzkHkVk9PblKboQwJa3Yy e06NsPp5f0XaeJfYlDPVjg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1772843663; x= 1772850863; bh=HoAXh3SQ9Tz9LRhc8OIvPnjOzRFjWCfpsYPvBpkZEr8=; b=Y Jg5mHKnc8+BGp84QtGwgcF9FxzS90dmabjPU8DYTX8yiHF2PFf4VcXwLQtLEA6xw nW1IBZJ03zHp7Sx9cBE2kcjdtdfehhTaimsatU/GySapFBBFunhs8/bi0somERBu HhuffvWjSaWFGdhvMS11MlnbM79frpU0n2N86lETyn1rUi8In0dzOUNsT7zPHgfh PooOw8JQHQowSU1yk+0iUd/OYvVFzTe55PaAr93grl8k9kQ+GHuFIuRv0PBOKCxT Ih22FRgeueiERgPCIrdAwIdJFTbL4UBt3qwrEiuV8WNrGx9PJscsRVpr5Vu9JDOT ZBARzbdBeIysS9eijeaUA== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgddvjedtjeehucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepue dttdfggfdufeeiueetffegveefffevjeehvdelfeevhffhteekgfegveeuiefhnecuffho mhgrihhnpehgihhthhhusgdrtghomhenucevlhhushhtvghrufhiiigvpedunecurfgrrh grmhepmhgrihhlfhhrohhmpehflhhoshhssehjvghtmhdrmhgvpdhnsggprhgtphhtthho pedvfedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtoheprghnghgvlhhoghhiohgrtg gthhhinhhordguvghlrhgvghhnohestgholhhlrggsohhrrgdrtghomhdprhgtphhtthho peefudelfeeifedusehgmhgrihhlrdgtohhmpdhrtghpthhtoheplhhoohhnghdrtdigtd dtsehgmhgrihhlrdgtohhmpdhrtghpthhtoheprghrihgvlhdrrhhoshgvnhhfvghlugdr jeehtdesghhmrghilhdrtghomhdprhgtphhtthhopegthhgrphhuihhsuggrrhhiohegse hgmhgrihhlrdgtohhmpdhrtghpthhtohepghhiohhsrghlledtsehgmhgrihhlrdgtohhm pdhrtghpthhtohepmhgrthhthhhirghsrdgsghhgsehgmhgrihhlrdgtohhmpdhrtghpth htoheprhgrughoihdrtghhrhhishesghhmrghilhdrtghomhdprhgtphhtthhopehsrghm uhdrthholhhjrghmohesghhmrghilhdrtghomh X-ME-Proxy: Feedback-ID: i9dde48b3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id BAF471EA006B; Fri, 6 Mar 2026 19:34:23 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Fri, 06 Mar 2026 18:33:37 -0600 Subject: [PATCH 18/18] wifi: mt76: mt7925: add 320MHz bandwidth to bss_rlm_tlv Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260306-mt7927-wifi-support-v1-18-c77e7445511d@jetm.me> To: linux-wireless@vger.kernel.org, Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Deren Wu , Ming Yen Hsieh Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Marcin FM , Cristian-Florin Radoi , George Salukvadze , Evgeny Kapusta <3193631@gmail.com>, Samu Toljamo , Ariel Rosenfeld , Chapuis Dario , =?utf-8?q?Thibaut_Fran=C3=A7ois?= , =?utf-8?q?=E5=BC=A0=E6=97=AD=E6=B6=B5?= , Javier Tia X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1993; i=floss@jetm.me; h=from:subject:message-id; bh=76o6pFwpyjUyv3yPBBBAdI2dlELkl13ZIgHkl2UbS2A=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpq3JQOB5Xx7+rlhJvXpLwxYGMyLapclMOstIQH E88aKo5LjmJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCaatyUAAKCRC17sMLqGd3 H6gDDACYdyveP2iYImYAeUIhT1CebEcBKEXBkf6+UBB9xo0vfTbrnyUiDYYgCJRD+zAuUsseDeB roHGHi44STPQbjBsquZDiMSDqiNQfjl5JKELfJ1Cjo2dSOKexcNKbj8YXBXzocO/oGxb4xy6L64 +uhCJuxVJ7dpZePVEWjqFRsNIXRHoU9pxw27bTN2sdQuTcHUgUH5+KZqMBpfdlMio8MyWHj+ayH EOV0hYRssehxX1B7VyeTa61W9gtMEs8f5B3fkCcZ0bTjmgx/mpvd4d387Uhxjp66uTB7EjQykys Pr7b3PrKdJQk4Xqp2DvEs2fR030W9eRQB1Sr4rLIzOL5Y+DR8yhsk2ReBxfqsXnCcHnt3GjHaFT V6wKcQkHdwoG7I8vlcWT7K5HofbCHGfAeOU2gL4oUE38cPeEkP4vDt5n8TxVx/J5BjnExg+iHBB BDFr3nZmK8OGdnLTqP3+9jU/XF0UfjEyOw3IMdaMelFX7P+NZwv+AAR9o7jKX/C6MLwP8= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> References: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> bss_rlm_tlv() in mt7925_mcu_bss_rlm_tlv() has no case for NL80211_CHAN_WIDTH_320. When associated to a 320MHz BSS, the switch falls through to default and sends bw=3D0 (CMD_CBW_20MHZ) to firmware via BSS_RLM TLV. Firmware then configures the RX radio for 20MHz and cannot decode the AP's 320MHz frames, resulting in complete data path failure at 320MHz. Add the missing NL80211_CHAN_WIDTH_320 case with CMD_CBW_320MHZ and center_chan2. Tested on ASUS RT-BE92U: 320MHz throughput goes from 0 Mbps to 841 Mbps (iperf3 -t30 -P8), PHY 4803 Mbps EHT-MCS11. Reported-by: =E5=BC=A0=E6=97=AD=E6=B6=B5 Closes: https://github.com/jetm/mediatek-mt7927-dkms/issues/15 Assisted-by: Claude Code (claude-opus-4-6) Tested-by: =E5=BC=A0=E6=97=AD=E6=B6=B5 Tested-by: Marcin FM Tested-by: Cristian-Florin Radoi Tested-by: George Salukvadze Tested-by: Evgeny Kapusta <3193631@gmail.com> Tested-by: Samu Toljamo Tested-by: Ariel Rosenfeld Tested-by: Chapuis Dario Tested-by: Thibaut Fran=C3=A7ois Signed-off-by: Javier Tia --- drivers/net/wireless/mediatek/mt76/mt7925/mcu.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c b/drivers/net/= wireless/mediatek/mt76/mt7925/mcu.c index 3458aa8c79cb..025e6d14f7ce 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c @@ -2363,6 +2363,10 @@ void mt7925_mcu_bss_rlm_tlv(struct sk_buff *skb, str= uct mt76_phy *phy, case NL80211_CHAN_WIDTH_160: req->bw =3D CMD_CBW_160MHZ; break; + case NL80211_CHAN_WIDTH_320: + req->bw =3D CMD_CBW_320MHZ; + req->center_chan2 =3D ieee80211_frequency_to_channel(freq2); + break; case NL80211_CHAN_WIDTH_5: req->bw =3D CMD_CBW_5MHZ; break; --=20 2.53.0