From nobody Mon Apr 6 09:13:54 2026 Received: from flow-b3-smtp.messagingengine.com (flow-b3-smtp.messagingengine.com [202.12.124.138]) (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 B0BB53BC660; Thu, 19 Mar 2026 22:24:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.138 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773959067; cv=none; b=j02Qx7Gh1SX6FRDrmFm4ibLo74E1sUHj2aY8la1STOuy3w32WMrVAqF/Q2HoRTLgQoYHWu4BPWpS5skx1zAYSpW1NE+5etKBI4624r3ggMFsfz7J8UbqCRSglNviaa/Y3cufRbZxS9+rb5xn0ncrTpky6bOsVUPI90EzZtNjtII= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773959067; c=relaxed/simple; bh=DizT/ddlZFD7KX9YeoKrBVdFFWkgs3dXjw0pBgdRG1k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=kvZrywjnR8TAx4vGZpKYMCGFhk/Hdyf7b/sT+5N9B3MZRVHOf+WfTZ6WseRprbyjhhJnYPkTZ/Wu5naz0EpBjq0NHcXvNm28rsbw55J9Qg3w8Rji131K+v6vSEI0hrBViqdJS+F/1qmG1TWUyChDgHN9wu1VF5SjyGwo0RepIXo= 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=R8Mv7Cx5; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=H5hw9ndQ; arc=none smtp.client-ip=202.12.124.138 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="R8Mv7Cx5"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="H5hw9ndQ" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.stl.internal (Postfix) with ESMTP id 8B0221300092; Thu, 19 Mar 2026 18:24:21 -0400 (EDT) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Thu, 19 Mar 2026 18:24:22 -0400 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=1773959061; x=1773966261; bh=cvt3lJ9bUn/nS9x0h5+rL6WI6mE1I309IFcyKJoRia4=; b= R8Mv7Cx5F4KphjYg5Te06q3GICfi1OVK0mA6wu+CWFeZihur3s9HMXXJbyj+4/OU S8obxUz4xPrnTTL376SDOwyl+zqHmnu+eA3p0hHLPi1S8VnLx19xGTXAdT910Vu8 Tf8B9cCzIuDezYjjkIKhwTfbKpSszn3HS7Uc0cJcIj5UJHwYLoKJfffywv3lUIz1 UBKGMIgDbTEWmQ64k6jTjwkezW5PI2KM0sc4krVr2vcKISOfJmmm0kzcWS6XEdA1 zjSRxjtrNNyL7k/WAKXCfq5jgZhTTGA4yBfZGzX9hdwH4gHRwDNoVrrtzWa8504/ 4etlxOI+enFMOcnT7xTeBw== 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=1773959061; x= 1773966261; bh=cvt3lJ9bUn/nS9x0h5+rL6WI6mE1I309IFcyKJoRia4=; b=H 5hw9ndQf3J0zoni9OhrC8aICkuhLQj+lEH553Pca5iGA6rGyxxW+2YkwEJ1OUSwB B5ye0M6bOO72D9Oj7A2PfranAbJhEdP3npU8wydqQkdgIjTgbCmzrqPkvOOBowYf uI0b4bmpLKSm16/Xlrbnn3Fik+1+WOpxz+3rc132feRT/t4SqNKrPc7CDFjLmEHP ZPipPyaca+sfRJ3q4JwGk8sNDPAxlWt+/+hSwSowsoyWMTFKyuMbPhcz5/NqQMO0 1IffJHV+6y9sD1dQgDDq/UvAyLCAaBxizhhT/hHrcDQ8+Ad2LTZnjHXdd89Y3RgD 9r0RZ+WZTUPjHKmV3LZYw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdeftdekvddtucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepve ektdfhffevuddtgfetieevtddvheduhfeggfekveejlefhleefieevueefiefhnecuvehl uhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepfhhlohhsshesjh gvthhmrdhmvgdpnhgspghrtghpthhtohepvddvpdhmohguvgepshhmthhpohhuthdprhgt 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 3B15C1EA006C; Thu, 19 Mar 2026 18:24:21 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Thu, 19 Mar 2026 16:24:17 -0600 Subject: [PATCH v2 01/13] 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: <20260319-mt7927-wifi-support-v2-v2-1-d627a7fad70d@jetm.me> To: Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Deren Wu , Ming Yen Hsieh Cc: linux-wireless@vger.kernel.org, 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?= X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1810; i=floss@jetm.me; h=from:subject:message-id; bh=DizT/ddlZFD7KX9YeoKrBVdFFWkgs3dXjw0pBgdRG1k=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpvHeQLAEYKacw2gZHHInwwSGuqAs3PNfX4ugdx LEsTNqv5OKJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCabx3kAAKCRC17sMLqGd3 H1fBC/9KPA6rElLV7oP7qIWoscZFIglo65pC1Yw08WqMN2abP1gEhVtoJbclzmn8uI6zNhWugmU hNyWMAOiZUWPUzPqOTSwIQA81ELfLR9OTDsvl+eRHLajkpCEG1ZtuMO7NSVCyQHmkTs6PpV3ssj GOBGfmpa3mvh0AO2zigkyJdBAH1fqqfF1/83LIFyOHaYuwISvO590gIpEy6fdiwbc+RiRX2VsVP 21lben5hTemr/aw7RaNi+GfLxAk4tW4137GJ1ntChEZNly/Er11cmPAFU+kss3dA7aA2BfYIDqw qmx0u/oLIPm354fc0cwywEA7d/31VOTQfGmGPw+gYnsHJBSq7wrYpt69U3ZlLlkaKETCirvdEA2 pANymSKkjudeTsABKSwKypSjAck/35IJUieqA2tDOvlsraWsByxwnM38lan6q4CjJb8YFzxhL2S AK5Z7tl0sCKRmanvjr6mWMdXZ4jlFrv/Wol0iuiDS//QTsLFiZOsnnhUfRXqj+TmpJzu0= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260319-mt7927-wifi-support-v2-v2-0-d627a7fad70d@jetm.me> References: <20260319-mt7927-wifi-support-v2-v2-0-d627a7fad70d@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 mt7925_change_vif_links") 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 2d358a96640c..f128a198f81d 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/main.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/main.c @@ -2047,9 +2047,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 Mon Apr 6 09:13:54 2026 Received: from flow-b3-smtp.messagingengine.com (flow-b3-smtp.messagingengine.com [202.12.124.138]) (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 BBDD73BAD83; Thu, 19 Mar 2026 22:24:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.138 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773959070; cv=none; b=jgC8dJUrySX2iTy1lnEb80O0mludv58r8MtdnKRMjda6Ci4cItCv34Rdv7Tu3Tdx13U7dSovpk+8n1cS8g6Kx1MZmByDCKHN7DT/bk+m0zPxL8qBkZm7xiwR57N8E8eShTQ1A1qotxbxYrLix0hBjorUUvAG+EDxzNbtZ6dhz5M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773959070; c=relaxed/simple; bh=oL0xrbX2LUVp9Q4JBTD78nnciF3VWT3fiWIhBG52oaU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=SWxti97YDiEbWslIjck8aq/PyWuUq79mEGrcX/NVFUYXajXl1eoKOZkl4jbhH3VeKVU+fVxpYTBfaAFJnhHsG4TxDPkDB8mrkpsKxUWEavPmwa1LB1MPUeWgbNcaT+Ta2fygeZLAKZpBen1DsqGRRiqjLNjtC6uGKoqE5ITQigI= 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=T/oMt3gL; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=17Mzejps; arc=none smtp.client-ip=202.12.124.138 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="T/oMt3gL"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="17Mzejps" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.stl.internal (Postfix) with ESMTP id 553FA1300099; Thu, 19 Mar 2026 18:24:24 -0400 (EDT) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Thu, 19 Mar 2026 18:24:24 -0400 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=1773959064; x=1773966264; bh=HOxwP/LFDi9G4GG/ESf696AKYCs6uY6IFgrUHF+9MxA=; b= T/oMt3gL6vM5XXXD5iGStXtepG7MEvbatbKheqegwW7Vg764fLCnhmbcN4FYeJe1 Lk4a/1Rx1zMQWhz8uIjoUImsW4lKbfgwZ9bzZyIgKN4bTnmdpt73wIChGGLJ2B6U Ume1BeGOfaYxzmM8Y5pkrNjqi+BJ3DfENwu+ydY6BWGPIY1JsmezEzKB+5SvZwF8 pn42YKI95c1haR64+yiI+BTUa/PJxJmjCB1ZKGN7rLE5VnQgGMUYXoGWgNPtVTep 1gfCkuw/0YPqBMB6H8oi/X/yAeOrtZgGKV+yHlrpvBclNHkMCeOdY2jfBsOiOqmA wrOMJ1+A4/7PMwp+2e0A9w== 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=1773959064; x= 1773966264; bh=HOxwP/LFDi9G4GG/ESf696AKYCs6uY6IFgrUHF+9MxA=; b=1 7Mzejps7pfm4JolCitPkFvEMYpOECckpx2Xxv2G5+gr9rztvjKA1QkdIzKMrAcez a4RStBPIJDsrIZbsDh3HU/Q2EC+qZOO1LQCOsMkLkB+AFOFc6zcwFt7mLm7C3aHs t55nb3ru6ALzTTo/j5fT5S1bUWiWbY6wt/OM1hZWQ2haDVu2/yj7/6HEdXUYOQHq THAqfvXAn6boOV8jdMKyQFkGbmAYNnFSk27BngNRD6QbCj+pbvESLpErEkfHVDv4 J4zVXW19rtx2kFiOSsi96zJ8QrwC8sNvZQ7i/JRZhzPGcttn2apbyfeehMNlLtCM t6N5NFTOS3e7tZ4lTa7Fg== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdeftdekvddtucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepue dttdfggfdufeeiueetffegveefffevjeehvdelfeevhffhteekgfegveeuiefhnecuffho mhgrihhnpehgihhthhhusgdrtghomhenucevlhhushhtvghrufhiiigvpedtnecurfgrrh grmhepmhgrihhlfhhrohhmpehflhhoshhssehjvghtmhdrmhgvpdhnsggprhgtphhtthho pedvvddpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtoheprghnghgvlhhoghhiohgrtg 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 079371EA006B; Thu, 19 Mar 2026 18:24:24 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Thu, 19 Mar 2026 16:24:18 -0600 Subject: [PATCH v2 02/13] 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: <20260319-mt7927-wifi-support-v2-v2-2-d627a7fad70d@jetm.me> To: Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Deren Wu , Ming Yen Hsieh Cc: linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, =?utf-8?q?=E5=BC=A0=E6=97=AD=E6=B6=B5?= , 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?= X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1913; i=floss@jetm.me; h=from:subject:message-id; bh=oL0xrbX2LUVp9Q4JBTD78nnciF3VWT3fiWIhBG52oaU=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpvHeQM1UeD5VnQ9wjqUu6j/sz7dtyOhS1NJNEN lYq+/tgNP6JAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCabx3kAAKCRC17sMLqGd3 H80aC/wNHmTjAL+3tuCHYF3BJwsK1kXW2AJneZctvf+yz6XnZplPXeP7GVTKx4FRlCySIe3j19Q fL0rxBVomu481PG0T5dbnnc4xfQUAAU/XCWSPO0Uvq91v2AFqWd5WT62TV7mfnPIz6lWKEEeHDA uBY1W3X8wMx4Tsyg0daublZniuAb/BIExbmt/EvEdoAd9nc+M7DG/LUawdCsrLs6kjqcqm9hnvT vc4LS5j8am88h9FLdmLfrMWraELq1ljKr0FtNDrwHNyobVSal/B6/ODqNpaQ+g0bEpHplo3BuTf MMSVYmMawfcU5K+v0TY2mzEld2/PwQWVeW0O4kZT192QEDqvejbaU/JbXhkveyI5LkEFtc5fMGq g8NbBV2KvoCHR1DcMC2JPLD3lOGSI7P0SS9fLJOsD8L7RQ/P1wX4n7SKWA6Hdcd6yXJZ6IMzTvI 9iRjrCgvWPfZCuRVUWkcFqBxn/02CmmhAO8OkNKzhFucqogxIIDCbwK/2kcCm76UgddUM= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260319-mt7927-wifi-support-v2-v2-0-d627a7fad70d@jetm.me> References: <20260319-mt7927-wifi-support-v2-v2-0-d627a7fad70d@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/openwrt/mt76/issues/927 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 cf0fdea45cf7..dd5ecb07947b 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/mcu.c @@ -2331,6 +2331,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 From nobody Mon Apr 6 09:13:54 2026 Received: from flow-b3-smtp.messagingengine.com (flow-b3-smtp.messagingengine.com [202.12.124.138]) (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 01B0E3BD258; Thu, 19 Mar 2026 22:24:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.138 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773959073; cv=none; b=eBKWgXA51ris8guWl9OEqDf2Zqn0YcB+2HAGmpNx4I9gHrl+a5NpNye8JeOsLuxBDNTRxoOLFk5lcspKZOmVLeuz+Vg5tsEDatWz0TanvJ5qGCw9rpNdkrk2jYSWGHqBoARIhTNs1btPUQle2VihUddTJpVOxfl1sifGppJO6RQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773959073; c=relaxed/simple; bh=BZB4eayi5CQeKoa7X5LI8ihvLOiSO2F3JQGoBG3iu4g=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=TdU1/PwPrBCU5En+GgUmk4JyLk7d8G03lUA3c79hiQSxSwMvMXkCr4DE1JU7ccoc1U0gWMwJz3FT0yVIlRvC2tn38KbG3BtpmWWpsPadHkrWvUvxjUrYTe2prF1HtQmlaczb9OAsTz/uEeaQhhVDlaGRdvf+U+x/MfMgCxAZG5Q= 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=lDjETvmg; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=uEzHl3zI; arc=none smtp.client-ip=202.12.124.138 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="lDjETvmg"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="uEzHl3zI" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.stl.internal (Postfix) with ESMTP id ABA3913000A0; Thu, 19 Mar 2026 18:24:27 -0400 (EDT) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Thu, 19 Mar 2026 18:24:28 -0400 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=1773959067; x=1773966267; bh=e5QLbR8nQwufqPNpMgHuGuZt5CzJuoJvqK1picXhn/k=; b= lDjETvmgR+vTWuZSCVwy8YODs/KyHMd7kxvGJf4QokyGGtde+JaLW7/Ko/Tu/Ci5 7j2xV2P9QGVGJ6D+eNDuJCMbSdUBsHT+pQt8DqxjTJyHwBx/SfLuiMBb9XcXXA4+ PdkWOQu9EifrXB+RUqQ+jF128C9iCIEJkXuXTwdDPl/pORW82EnoRsODIMW1pO4Y 6CirWftK/Z14yyiiP/NuKEvWnsxaCPR+pL8WfroZiPC1epkAp17h2e6FGCk6II/S NVaZOhDtvOXDDV8mjIVaHAWGj6sKSAbZNs3h6hWz35ITtTf8ZKf+TaUrS4BCQmnN 7plNy7cs4sLeH9Okeerepw== 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=1773959067; x= 1773966267; bh=e5QLbR8nQwufqPNpMgHuGuZt5CzJuoJvqK1picXhn/k=; b=u EzHl3zIjVZwtNsQraNRc3Nk7ne1teFsNY3TA2NIoGR258ktly7rRFIDl7EPmQxBu M57DpMp39hO8jUhPkg/vvTlLAYhYfSVZvCzxRcY/BKXwWkD1p2gTIvXnBYMSWuEx gXHgce/wIpH0uLHtXJl+baoE2vBPjEN1tUVkP7WqI+ulcckP1Xv8E9+A1ahF9Iqi zUsqxtQuP1aib1j5QuvIRm+phmJK/ZzE7TLGh8a9QzUMG+jRFbZu3DiV7MC00H/+ RSdhhRsdMH/XtJ4JbbnGefrsA7zM3j59gMAqtto+uLeTCpYSC3t7y0bi4CGgHOf+ gY6i7D1A38vv9PLHCXG4w== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdeftdekvddtucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepve ektdfhffevuddtgfetieevtddvheduhfeggfekveejlefhleefieevueefiefhnecuvehl uhhsthgvrhfuihiivgepudenucfrrghrrghmpehmrghilhhfrhhomhepfhhlohhsshesjh gvthhmrdhmvgdpnhgspghrtghpthhtohepvddvpdhmohguvgepshhmthhpohhuthdprhgt 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 5B41F1EA006B; Thu, 19 Mar 2026 18:24:27 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Thu, 19 Mar 2026 16:24:19 -0600 Subject: [PATCH v2 03/13] 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: <20260319-mt7927-wifi-support-v2-v2-3-d627a7fad70d@jetm.me> To: Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Deren Wu , Ming Yen Hsieh Cc: linux-wireless@vger.kernel.org, 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?= X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2005; i=floss@jetm.me; h=from:subject:message-id; bh=BZB4eayi5CQeKoa7X5LI8ihvLOiSO2F3JQGoBG3iu4g=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpvHeQWnFuapW0bydN/UBfu/FXVsG+kZyIG0VcK 5p4Wpq2uHmJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCabx3kAAKCRC17sMLqGd3 H/29C/49kH7Nj3n3Sv2PdlYuGKDDxtiZnPFShBCT9R+V39ez1E1rriegYkPJrjHFsl5uaE4Pt31 u6Ek+dfe964al2meFioGSb0Dy2KPQNkzqcBxxAIs4uPLTTV0w6Zqvn98UOgoejxG0RW6ptGhKFj Z3RXnje7YVdqfzC64pCucTRCeExSHmgmNJSw3eYY6X3c+AB1D+vm1sRYCc6FQ6LzVWMfl+u2vq1 hcpTEfl3bqRk5KV98urL5TSUHbxoBKj1mNtBQ83sVjwTqQqBL+w8KwHSjveO3uha23T9ykN2V8c aE4zU1NosBFD0vrUlp0OTSOD9+glulxoBAou3v4KCd3pPXH4PRprGP1PFl8vb5IHgPAHhcqv0tM mY0kxILKxbKpC38w76vHtPbdUF0iYcVqhNnoXQik27kO0rArhxSztxhqcn57GnJUlj7x/va5YTK JeV7C8d2j8O9KJt7D1TE8WvsKOgbdelsSuAUhRTB+5yikJq5ZneYa5Cmxgu0V061x/8uI= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260319-mt7927-wifi-support-v2-v2-0-d627a7fad70d@jetm.me> References: <20260319-mt7927-wifi-support-v2-v2-0-d627a7fad70d@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. 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 +++++++++ 1 file changed, 9 insertions(+) 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]++; --=20 2.53.0 From nobody Mon Apr 6 09:13:54 2026 Received: from flow-b3-smtp.messagingengine.com (flow-b3-smtp.messagingengine.com [202.12.124.138]) (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 0FB903D3CFF; Thu, 19 Mar 2026 22:24:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.138 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773959077; cv=none; b=aq2wYVumVTkHWPaWlZa/6ZsmNe+JH2TwmD9BM7QVyO2irFfpu6/bxEWL1EoPwWrTVJofQYlLxFyPH3qiSk+vGRAqkPHBQTCUfx0Hh+nX0tGKOQy0e+O8nxoEGiSH9Rg8giQNX5Wj3yxz3junSfm6bSNUd64B/XR4P0PYkaAl+tc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773959077; c=relaxed/simple; bh=b6wuUqMM9LRMdvCkKcW9uEToGwJgCsTkr6DKPTvA7cE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=dqOQevw5ua6ffQanvvZBLB+tY3o9KAiVUyG3lXvD3LP2saBOFZgYA+AMlZteuWSys0lpkxEikKzvQj2XYMywMp+1rjK11rFHAQUnq8j/aItfrA5PB7tlzMuyDMHjCmm1cJK6xU74/BwSxd8SvRzXDWgAjIUFrLC6RW8RcSgaiTk= 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=ZiRcPbw4; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=UZJYoQjk; arc=none smtp.client-ip=202.12.124.138 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="ZiRcPbw4"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="UZJYoQjk" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.stl.internal (Postfix) with ESMTP id 5C82713000A3; Thu, 19 Mar 2026 18:24:30 -0400 (EDT) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Thu, 19 Mar 2026 18:24:30 -0400 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=1773959070; x=1773966270; bh=3c3om6+sjsXCFA8fMVuyG6m2PTBcXdiHeFZPaFuV0Us=; b= ZiRcPbw4zc9uGBItwlud/dxc+a3FDO/evSmNiTxBUkw6orRbQdG4mV/cy618KwoF zMNxtX0DZkw5BjLteB/wSRfZMTywalOyL9WqTsaXuhJHK51Yoyjd09K5sGvGOUKH TAexzZS8Xb8z3yr5JNn8wkw3dQ6El+Rfgma5v/ACZMBcawl5Sir1DxqtFt27EBjg lMq8K/fC4mTGJgXK4kvI8GX4PZYefvYjzJnLXz35l/OCfYc+XLxVAN5QaJ39BqBn bXraf+DskJGNyXTGVCnwQ02Ya13fZVBU3EFrOUqwe/5vx87wvJjxCwjy9H0sUxRc O60Xy+KEDC/81ggxMSappw== 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=1773959070; x= 1773966270; bh=3c3om6+sjsXCFA8fMVuyG6m2PTBcXdiHeFZPaFuV0Us=; b=U ZJYoQjkf4PalwEQyPOKcw13Hb9Oe+7uvAoWFsvQxX3pM56LXY7ob60cZ/K0eq4jK hJhrQ4kz788/TxND0+1d4vT8oBr2Gc7JQ6oq+I3RSFjWZ4MrQYH0swWw/xHeyFa1 xbXrWkkYc6S5L3rdKRavRGVEiivJ85whVQHW5fJuzMuHCfUS7t1vjwHd3N5amY4C PjhVh1Fkf8gNuoG/PqS2z4kdX96vBsi9rxUV607Bn3+LCPFjdHPrJiAeBXl1M6O6 p2B71l9Hl1QYZGJo2nU91qTRMMdkVTu1/Lvz4zPUmFisMo+1a0syYfn4DM1XR0Ul zG91+9Oj0eK4dfP6eN+kg== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdeftdekvddtucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepve ektdfhffevuddtgfetieevtddvheduhfeggfekveejlefhleefieevueefiefhnecuvehl uhhsthgvrhfuihiivgepvdenucfrrghrrghmpehmrghilhhfrhhomhepfhhlohhsshesjh gvthhmrdhmvgdpnhgspghrtghpthhtohepvddvpdhmohguvgepshhmthhpohhuthdprhgt 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 15EE41EA006C; Thu, 19 Mar 2026 18:24:30 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Thu, 19 Mar 2026 16:24:20 -0600 Subject: [PATCH v2 04/13] 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: <20260319-mt7927-wifi-support-v2-v2-4-d627a7fad70d@jetm.me> To: Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Deren Wu , Ming Yen Hsieh Cc: linux-wireless@vger.kernel.org, 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?= 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=b6wuUqMM9LRMdvCkKcW9uEToGwJgCsTkr6DKPTvA7cE=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpvHeQd1hEzMIZb41WgjqFGwoxTSAuLFLrK1lUn InlC2iFzFSJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCabx3kAAKCRC17sMLqGd3 H7MIDACy9HwJsPhZrZ7KiIkj8lu8z63AZj45vXV+EZ6h+OALFug80DB6KH4fNwkC+Vzb8OJENKO 1otFUeZIaj/8RWV1ZluwDGazyp3dt+jEG2nmXGdlG+8Ub4MvEROpI89fT4LHLBAXDGpl7oaaeG9 mTFT3Vniae6TfmDKMXpWT/6BoS7rARtEOdo20jwL/RNJTHOQIgMV699Fb2pqtUQC/R1341WiaUH MWtfyB9k5q5bRI//gOM0o3P36k4LFZHUXpzN97qz+jRYgYlmAnZf/p0odP+3eX8vkDUNQvujGSD 09DE7fJbbes1YkR1y2WhkF1qkK+E/L7yT+rq5SwflCnLHkuuTBOsOhmWNGvd8VL3/PNflx85pff eb69izVPmmQZ6TFCdwb1OoPGJaisXfj6rtdXZlrP4Se+b/zmj5z6Pm4bWm9rQ8j4c72VXddkFfG 3t7uyB3GE+wY8DBV8KCXP2m3YvutACkQPwVnzHnGhwaoxpicoN+GXIi4eeKkchm9p1Rts= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260319-mt7927-wifi-support-v2-v2-0-d627a7fad70d@jetm.me> References: <20260319-mt7927-wifi-support-v2-v2-0-d627a7fad70d@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 dd5ecb07947b..a7f27c5014d5 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 Mon Apr 6 09:13:54 2026 Received: from flow-b3-smtp.messagingengine.com (flow-b3-smtp.messagingengine.com [202.12.124.138]) (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 A68613FA5D5; Thu, 19 Mar 2026 22:24:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.138 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773959078; cv=none; b=KU//q8r4T3KD3pBgk6MmJK8LG/PyGek/fxf/cA8shJpriN0+/CQAAqaTVvBPbgzEtaNFotogupbyyVrc5VQ1eiUi3NYrh3LLvxS0jZZ6ArRgM5xB8iyIYQIIinOOYO98YSK/uixc+J0NmkvFfYUPxPtRkSm9Zwah/IiPUxjM1rU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773959078; c=relaxed/simple; bh=jWvfRpWdnEYpKJDJ/Bf+bOhjtZ1T5Q852eESr9hihqk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=K7c4TvmkyaSipb7ek5x7EPT/6PIhaO5FlapYCPbE6m+Fxj6UPl5Tmu90w5gV91H1TyALOixOQTtg/v2ZH36sr1OAVgW0IWcD+duQGHZUbtMkwfguCH4mEUz3n7cVdE39touW4USK98U6XB9dx4dGmf3Tu1eVHtKPNly+E/h1oU4= 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=pKi+BpSP; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=fQkDRwHF; arc=none smtp.client-ip=202.12.124.138 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="pKi+BpSP"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="fQkDRwHF" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.stl.internal (Postfix) with ESMTP id 47F1C13000AB; Thu, 19 Mar 2026 18:24:32 -0400 (EDT) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Thu, 19 Mar 2026 18:24:32 -0400 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=1773959071; x=1773966271; bh=cxJCLr7x83TM4awgiz8RT2JSmXJWiLKIRsJPIkFRlRI=; b= pKi+BpSPAVEBTx7LUQJAjzdQvRTRmP2UnXfwUeNNY12Zd6CV+LA1K5Kld84qLwdF KAAJ2LlcqzQ3sANZPOtpKCPTJuMqCVdL0ufOPd6cHz8KqS/Cz+Qdhv5GiOhqbvJ7 ry115CpzpDHwQPvuZOpd7wDC1w3uNpaHBYOAOtquBwe3wL/WzwDXoxp8MAiOqo6r ynrKM5MFmFjOmLlw20dEfeikRpLIsXPkda9hRInwps9vhzF5GoaPPI+LlxVJyL/j DS+TsIJ5dBhaTfkKDIz1YkOgP0JwN27jVDjYQPJUlBjl5GAoXllz0C2S89NuCTLO Ql3f/KHypNbUWfMG7TPZxw== 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=1773959071; x= 1773966271; bh=cxJCLr7x83TM4awgiz8RT2JSmXJWiLKIRsJPIkFRlRI=; b=f QkDRwHFMmnIrABgsjgwYQa132GEYXhxlnoAzkcwuHhaENeofbrd2HHFlzNWLNFDU 1T35rxG24MwaJHXZsLiggQ2P/6Bayy7F5zcg1YyWJOAgc8nvu6kH4OzC98j7Egb9 Y0G8WdkZoO2lIh84q8N64EVqP8CzKuL6kOWifF5wlhL0RkWFHpw4mY9rLMQo4JDC SwVLRQqjpw5dXMsjd9R/7FdKgtt1Zb8FOFkfFbINigp094XEyggNAd5a4eC4ZKLn ICc8IK1IxPfsNDH9kKwxTNzPBCnAGtTex/9jV/Jg/A7Dvt9C1hyaFUtuDSgsxpzB mDNNfveTMgD6DecgoxV5Q== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdeftdekvddtucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepve ektdfhffevuddtgfetieevtddvheduhfeggfekveejlefhleefieevueefiefhnecuvehl uhhsthgvrhfuihiivgepvdenucfrrghrrghmpehmrghilhhfrhhomhepfhhlohhsshesjh gvthhmrdhmvgdpnhgspghrtghpthhtohepvddvpdhmohguvgepshhmthhpohhuthdprhgt 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 BD8E21EA006B; Thu, 19 Mar 2026 18:24:31 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Thu, 19 Mar 2026 16:24:21 -0600 Subject: [PATCH v2 05/13] 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: <20260319-mt7927-wifi-support-v2-v2-5-d627a7fad70d@jetm.me> To: Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Deren Wu , Ming Yen Hsieh Cc: linux-wireless@vger.kernel.org, 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?= X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=5375; i=floss@jetm.me; h=from:subject:message-id; bh=jWvfRpWdnEYpKJDJ/Bf+bOhjtZ1T5Q852eESr9hihqk=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpvHeQHxbYUH5sDg3XnEGlwwxH0gRlfw7XCF6R6 uYmngTGJFeJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCabx3kAAKCRC17sMLqGd3 H8MQC/9RDOiR7d4CCTMigUzXgIC0o1u8zkcUCToGjw/DgVoHlpY5qZme3P1By5ILP6PxbpR1y90 jcaMkhRmKpOW3zbKTh2s8KeyGgKvTJ+46aqaVTHYNGBMIY/Z20bnTTtkOCxKFfPN0fP9bkGZuk5 RLNPBisk84QB3rTOz/ztSy4XGNQTV53R8zixuuOdpr2CuUec+onDWPtoMiy/+sD6ciK/tTgfbcu jgJQBH4woXaPk0/Ac+84FAQzbXTrWoZ5/ErSwSVQI3rJv0OvDMHC8CK+i8rkk2qM/di1BmlwguC e2wMkpkmzoWTCWndLst2qE4MdUPaD0IsgMgYWewcEhJ5YvphZzW6Sb0tnjoXkMeJoqBkBr+T/MJ oiE2UgYSWOGEQrOmGUVpFT8fmqLxf6KFTO/MvJrgzrwwGRcW2N5nBOHqm8eD2I1Rb3OPyE7vz7V sxoSI8xUP075IchcUkShGzUSAIsdFqgY/oVUS6YGob798mDTQSH1Ky/LiJCp8uJwyydd0= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260319-mt7927-wifi-support-v2-v2-0-d627a7fad70d@jetm.me> References: <20260319-mt7927-wifi-support-v2-v2-0-d627a7fad70d@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 Introduce is_320mhz_supported() as a generic capability check using the mt7925 family ID. This avoids chip-specific references in common code, and automatically extends to new chips once they join the is_mt7925() family via chip ID helpers. 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 | 5 +++++ drivers/net/wireless/mediatek/mt76/mt7925/main.c | 28 ++++++++++++++++++++= +++- 2 files changed, 32 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..554716e01ee6 100644 --- a/drivers/net/wireless/mediatek/mt76/mt76_connac.h +++ b/drivers/net/wireless/mediatek/mt76/mt76_connac.h @@ -177,6 +177,11 @@ static inline bool is_mt7925(struct mt76_dev *dev) return mt76_chip(dev) =3D=3D 0x7925; } =20 +static inline bool is_320mhz_supported(struct mt76_dev *dev) +{ + return is_mt7925(dev); +} + static inline bool is_mt7920(struct mt76_dev *dev) { return mt76_chip(dev) =3D=3D 0x7920; diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/main.c b/drivers/net= /wireless/mediatek/mt76/mt7925/main.c index f128a198f81d..cd043ac266fb 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_320mhz_supported(&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_320mhz_supported(&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_320mhz_supported(&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_320mhz_supported(&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_320mhz_supported(&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 Mon Apr 6 09:13:54 2026 Received: from flow-b3-smtp.messagingengine.com (flow-b3-smtp.messagingengine.com [202.12.124.138]) (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 919B0405AAB; Thu, 19 Mar 2026 22:24:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.138 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773959079; cv=none; b=WlcNMvly/hpChurOtNgzdeLuQNxLw8naWtfCGdKrpXd8uX8P8L0Fmh/ZAmX8Lh4AZ1qeTpLTjO7QVVSoL0G9HBPXcR/ipDEGcx2raywXSl8WvQvgF92S6TYkHZ34AD2cwOJf90NtJYzpDkPrQ3gVM5/Vi9aPWxJVjzGwXsJkpLs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773959079; c=relaxed/simple; bh=n0VciTfuPJYkEWYOBKshZAqe01K78js0TWEDsMztS5U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=e7oWQCL5hURJyO3ehHNDFBroAeuj3uTYwuxgvv58DJbGtnpXo39hcppqvBI4lVpeFJBikXh1BykDYvhbACXvs18AIKwQrEsA685org72uvjQWPizcxH1Czk7ekDMp9BVD636YgqU4dT3Qow7oyN5hQu4tH8cuU/Y72KZbpC+50k= 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=Fc+arHKt; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=Ng2yr+h/; arc=none smtp.client-ip=202.12.124.138 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="Fc+arHKt"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="Ng2yr+h/" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.stl.internal (Postfix) with ESMTP id BB3D213000AA; Thu, 19 Mar 2026 18:24:33 -0400 (EDT) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Thu, 19 Mar 2026 18:24:34 -0400 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=1773959073; x=1773966273; bh=SAw/k0C5attSt6i0ggF9Q/RDjzK5YsEYXKmLjLTvE5s=; b= Fc+arHKtRHJlof7sDMeqd4qyveDomnENaBy3hW1BBPrh3eYlYolRYUE9xKOyynMs F6+Z0Jnm7B11eosynz9mPBmWLtLRAjPVIeR56+POjl2QU6iG59EM9DpOGDX7B5Bm QKp7KFQlNRelhkxfvVRFMHZzCfuiB5vpZ7wXujMb1fjHqf7Jfc5d3oikP3ZOxjUB f0Ot6lstmaHDSLLkJKj9BRNJp09dHXMlCvIHafIN3N9qAnMXHMtcjZvC4dFkk/Ir vVVA+wDDEEN6A0uVKqHyytsHMvWmDEJlU5wqhMuxb9y7a3+6Y7jPxsCG3To0sXWT GVSDguUdocNguFz6ftzamw== 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=1773959073; x= 1773966273; bh=SAw/k0C5attSt6i0ggF9Q/RDjzK5YsEYXKmLjLTvE5s=; b=N g2yr+h/A4BJcAn0i+q3obw4sLvmkl+HyqpuSpdSPDBf9BIH9J2UEMUdh96YleGHX 1TFnvzKD2nzkqLqtpKKCiM35uuTy5B5IQcls/7XgeNW5WjkaEy9DGzATXZwD8fRL VN2p7TuAY+z7ENCOyErCsMdEPJ+AZoc4eQGSmxxhrgV+lF4AW5GJkwhv5EE77uqH GjH4KBy3xEJeI2Y7cvlQaMqDwUQJiM4OqXYLjqXC5VJ/z/vKm7SymylUEYWFcrGj zY7YqHkgjY6R0W9DaHhD9vPOuv6dvBQuf3g5GyzKcfnYTeQFDcNvyaN5g+ARRS6f 9ax3wM+kBa2UcHR2+7O0w== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdeftdekvddtucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepve ektdfhffevuddtgfetieevtddvheduhfeggfekveejlefhleefieevueefiefhnecuvehl uhhsthgvrhfuihiivgepvdenucfrrghrrghmpehmrghilhhfrhhomhepfhhlohhsshesjh gvthhmrdhmvgdpnhgspghrtghpthhtohepvddvpdhmohguvgepshhmthhpohhuthdprhgt 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 6E6201EA006B; Thu, 19 Mar 2026 18:24:33 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Thu, 19 Mar 2026 16:24:22 -0600 Subject: [PATCH v2 06/13] 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: <20260319-mt7927-wifi-support-v2-v2-6-d627a7fad70d@jetm.me> To: Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Deren Wu , Ming Yen Hsieh Cc: linux-wireless@vger.kernel.org, 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?= X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1819; i=floss@jetm.me; h=from:subject:message-id; bh=n0VciTfuPJYkEWYOBKshZAqe01K78js0TWEDsMztS5U=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpvHeRwsMQCIWBjFQGkbW+S0VybzR7BDgGLEP7U 7SNL9HosQaJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCabx3kQAKCRC17sMLqGd3 H4gHDACwTGzUKCDn6pLqZ7N4xps91CqW7E6fUD9MH42scCB3CXw9rcUfVNM1lXip07OVy5O8DH0 2EPyP0m4k0rL9Vin6fll6iOZb/wHRHW2VPlx/7nsZOCpTMdfWT+IrbkTRbZ0u+PA8dyspiT/Spy BerNugOkxXAkVFWA4D2GrwVPn1V45VxV9F4FCMG/T4eX3COKWKSAWjEN7pjAE3fjSNFGbqDKpJf PSpWJY+qwB7uIErlzuBF+Z3FnSCH4oW0ixbWcdn30nd6qnNBRpLSQLGurk0pEBp00eF2WKp4NoB fixEDMUj+f70B9qdGx44wuq/ckOti+JYMa0PBkZQKq6ipYxUDks/y1EoAuo6krNc/3oJKtf2FLq lorHgL5WEXQaYl5KnUWfmESXUbLYYmOa1Eaurs6Y5k01L/FDvabN4VZxNZufInxXljRLf2t+Hfp X4Vf4FyyxSzqxBn6b9XJgGuEfcmjuY39buwsk2jl3XxrdWct4K+TsZOBX7h6NcRV8WKjE= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260319-mt7927-wifi-support-v2-v2-0-d627a7fad70d@jetm.me> References: <20260319-mt7927-wifi-support-v2-v2-0-d627a7fad70d@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 554716e01ee6..bf578bf467d5 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_320mhz_supported(struct mt76_dev *dev) @@ -277,6 +282,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 Mon Apr 6 09:13:54 2026 Received: from flow-b3-smtp.messagingengine.com (flow-b3-smtp.messagingengine.com [202.12.124.138]) (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 C8D553BA251; Thu, 19 Mar 2026 22:24:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.138 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773959080; cv=none; b=eU8VhHi9d/U/GoCwYmCbblJ/72eIp33XdvqyotQ/oZFFU7aoTVLm7+FW4aYLxBnkKDLRh69KzWAPPrPBrsX69T6MN1YksF+0e5Pft/iHcy79G9X9Ai5WLiOjB+6V1XBGEJqMOYn3r2SlQRuZqxL6o9Un/kn18oZGPVz+sNia5Is= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773959080; c=relaxed/simple; bh=nWa4qRu3K/oLEzDqawtOQqtIO8UuGhdZfXRs4iLq41o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=jK1qh/EuimA0gTpUBzf15NP8ogEovJz9tP9dNhlA0Yd5s+W9ZJE/1B18wgUtjTHAp6Xdd39sCyotKNBmXTnaysrN9J9HFSijwjnuCMI+w6v1ybUpQALtcd1jAB4bPsFrpfUss7p+o92Lqi40yqxnuLNBaRtaPxGXgMjR5p6r7Pk= 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=YCpsKInL; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=TvZgRamw; arc=none smtp.client-ip=202.12.124.138 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="YCpsKInL"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="TvZgRamw" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.stl.internal (Postfix) with ESMTP id 6E4F413000AF; Thu, 19 Mar 2026 18:24:35 -0400 (EDT) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Thu, 19 Mar 2026 18:24:35 -0400 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=1773959075; x=1773966275; bh=RgdC5kt5k6hG8v7cip1AuvGjq20kUgYnV+A5Mrl16mo=; b= YCpsKInLl5s+SlMdN27VqGt2hLNF+V0ATVyPgZRy5H6rG8HskvlScNvhP0uZFA7h CyKhTvFxbV+iXtyYeHgWkeH87DmWY+xGnIwdnX/3x3jHZKh5vcYULysQXSHStGZz ecogBODzZMmulU5wr0UFkVatp1NZLcl/+MYdLJxw8cZSaK7vL0/JPypoY3sfX6Qk UyB5wVnochwv4WZ+dhCjMjx0nZZStDK5KyVENuj7PVnJ8MyH0PIwV2vlNyDQS3H0 emi8WWWG8scbmGk0mMreYj7UhLz2qxA9dMYtmXJ/2SlV5SzwK8nbfaiNVMC1yWgO Wnydvc8THr4seax6zmAuVA== 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=1773959075; x= 1773966275; bh=RgdC5kt5k6hG8v7cip1AuvGjq20kUgYnV+A5Mrl16mo=; b=T vZgRamwNp5YKzbfzmLxMj1Sper0zY0HsuFFetXtIDBiqUtTR76AuBxgMP5dEo3rx dQjofqmZvaczH91JbmTP4do4aXGf9Vl5tuCj3QncffgTwrS3NN80dbA7V+zdiw2k 8te2/B3u/denb+IuChavkJ1QutEhVbLFMMQ/XHe8b4nB1j2E64AW8cI1oWob2ft+ sqxzqV1i1/svpl3EudobXsrJib6kRSGDnOD05Z5iTww3l+nt07G7e3+DKYq0TjBj 7MNp78lBlpEchyDtlDdTt6hlYKLg3N3gF6RDdE/pFii191PfpN9pz0hYgCvQI6Vc 74FgFxGbG6HGRORnqX+cA== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdeftdekvddtucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepve ektdfhffevuddtgfetieevtddvheduhfeggfekveejlefhleefieevueefiefhnecuvehl uhhsthgvrhfuihiivgepheenucfrrghrrghmpehmrghilhhfrhhomhepfhhlohhsshesjh gvthhmrdhmvgdpnhgspghrtghpthhtohepvddvpdhmohguvgepshhmthhpohhuthdprhgt 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 208151EA006B; Thu, 19 Mar 2026 18:24:35 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Thu, 19 Mar 2026 16:24:23 -0600 Subject: [PATCH v2 07/13] wifi: mt76: mt7925: add MT7927 firmware paths 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: <20260319-mt7927-wifi-support-v2-v2-7-d627a7fad70d@jetm.me> To: Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Deren Wu , Ming Yen Hsieh Cc: linux-wireless@vger.kernel.org, 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?= X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=3298; i=floss@jetm.me; h=from:subject:message-id; bh=nWa4qRu3K/oLEzDqawtOQqtIO8UuGhdZfXRs4iLq41o=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpvHeRzBNtGW8RWeXjc+kyJAjGlVZpig0eZwJfG x5fAkt0ZbCJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCabx3kQAKCRC17sMLqGd3 H6RYC/4rv0746kbaLnif7DmAPF0ovJ/qrbyEJWEIJ/XWmzJjyJ1MO0fcaT/Sj3WH/W25bP+5RB/ k0Iz/iqhqj9h/HlktaGUWIGJto9YEb7L7RRH27z+A85Yfchl7XkArLIKaxOwQnk8CmkMTtL+PVG T2+XGtEel+x2FsESBBFw9pKdelzZ60fCe8zl8WkBtkUYHy/AdR0gMq9jbQXrHc28K0y+LDmXkwo wp5kY7oiqkEpOkVCEL5+zJBupFwhxXgdbMSGKvK83NJcztVpKyZsC1SP5GDV9B93rWbTOPndE4l sCIypqDJ+TtP35FSEyJeAogES2x02Ncf7ijLkcQYDlz5vFybVdmXPiMIAzz59ePtmLXdl2/HLMS I3Sv3njuExPECLbGkn3/EcyieU8RZfZQHZbOmH6MvsTtRRq1b5xI5wY/h077ko/coaly8M8piQf N36NMsZF9micsKCwUbvfoD/3IKyKR/Wb+DYtmgkdkIlivI3dOErc5mqbwiwLO9+AaLsUo= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260319-mt7927-wifi-support-v2-v2-0-d627a7fad70d@jetm.me> References: <20260319-mt7927-wifi-support-v2-v2-0-d627a7fad70d@jetm.me> Add firmware path definitions for MT7927 WiFi firmware (WIFI_RAM_CODE and PATCH_MCU) and the corresponding MODULE_FIRMWARE declarations. Add MT7927 cases to mt792x_ram_name() and mt792x_patch_name() so the driver loads the correct firmware for the 0x7927 chip ID. PCI device table entries are deferred to a later patch to allow infrastructure setup before device enablement. 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 | 2 ++ drivers/net/wireless/mediatek/mt76/mt792x.h | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c b/drivers/net/= wireless/mediatek/mt76/mt7925/pci.c index c4161754c01d..f820d5aeb723 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/pci.c @@ -633,6 +633,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 Mon Apr 6 09:13:54 2026 Received: from flow-b3-smtp.messagingengine.com (flow-b3-smtp.messagingengine.com [202.12.124.138]) (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 533523BAD8D; Thu, 19 Mar 2026 22:24:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.138 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773959082; cv=none; b=kt+Ld7d23bCPaz5LwkG88HUXdFQMlC4qxtw4znM6x+Sh6wUdjNRXT3tVQGNFUguArsI9LsQUqExhCD3+L8PyKm5zaoAds2YfQcjKSHTclZvK8l6OAhVqHXQc6ntu+SsPpGvJ7WzQ3wkz0KDP+VFkfK3lVsoQPQig90aSu2G8Sdo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773959082; c=relaxed/simple; bh=d/HKmmehbZuZuFy6yrEQuL+8MJqGQNMTKPsrWPbucdg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=EID+ueA5xlMV+uTgQCKHXyHqu2/pTr33FvEmF6upc44VWTx9zSqkNxD11uP+7k/a+5GrFl4TsOBMt3U5LjrsOU0Up2xCl75UuEFMJk+5nZc5E/IDYS/6adw5Q9Qs0PCF3ZhqaQZkK6PQvAf++X24oXawwT3/yi5rnMElK81L468= 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=pgx28rM4; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=arj23Bxb; arc=none smtp.client-ip=202.12.124.138 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="pgx28rM4"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="arj23Bxb" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.stl.internal (Postfix) with ESMTP id 19E2213000B6; Thu, 19 Mar 2026 18:24:37 -0400 (EDT) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Thu, 19 Mar 2026 18:24:37 -0400 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=1773959076; x=1773966276; bh=wh4REqgnKzyEzUI/NBTjswi8jAEeySuPefhD1zQxSo0=; b= pgx28rM4YIT6zVe3CfzI2Hs4DgHmOoBmckmySaMMMCNE4YNeDlnIz+jIuDWLJ9DB 4x2+kzjwIsBMADi2KA4OGD+19n4Q9rFQcAUkG00geMWxSHg+gHde8/TjNakpuz8e +NCT/nwk0hnc/Rv7LH3lLt2cyH/i6OfaJWkUVgTpyzBdrGx8TYH3N4s/pqR4rs03 8GhUCFMYdmLp7Q7Qdh1Db6yI/+IxsbPwYKlj5dqHYv824nb0puNpfZMU3ml4TD2b gHV6Lo3h3LAqJDHkuBqhSCHRJziPcb1wjCWoxSJm2yWEAtk5MW3cEYRZogB8sp+9 WyzS9xXBxfsmGtB9mNRAEw== 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=1773959076; x= 1773966276; bh=wh4REqgnKzyEzUI/NBTjswi8jAEeySuPefhD1zQxSo0=; b=a rj23BxbXuIKZ4iWDsXZ+wQ0qDY2k1UemV1l5ty7aiqUXUug3Hwwre8pMA8pyKEYH 46r18B78Hs2ZY9hs70jCGqCqgNwStnBqfs821Z0aAFGiuplG3iq1j3mb4/+pHX1j y6CkUwrupXMbtP60F2FqxnKDPg77GkUJJMWW9EScahV4bPojWe+BZbJZeZCVcdtL TXOMdQcsT8/Ma7zDh/nI5JZUE+sQ7/j52+06QiVH6NTnP1fiNZHzvukcTzNrtfGA lzF9muab1ja+hiDqxMbWzCoDv3MRN9nXnRFRYzHxQXXqKv5xxgRFcmG7UWsQb6Mr n0/MLXj4YNLfoWhmc7aAg== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdeftdekvddtucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepve ektdfhffevuddtgfetieevtddvheduhfeggfekveejlefhleefieevueefiefhnecuvehl uhhsthgvrhfuihiivgepheenucfrrghrrghmpehmrghilhhfrhhomhepfhhlohhsshesjh gvthhmrdhmvgdpnhgspghrtghpthhtohepvddvpdhmohguvgepshhmthhpohhuthdprhgt 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 C727D1EA006B; Thu, 19 Mar 2026 18:24:36 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Thu, 19 Mar 2026 16:24:24 -0600 Subject: [PATCH v2 08/13] wifi: mt76: mt7925: use irq_map for chip-specific interrupt handling 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: <20260319-mt7927-wifi-support-v2-v2-8-d627a7fad70d@jetm.me> To: Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Deren Wu , Ming Yen Hsieh Cc: linux-wireless@vger.kernel.org, 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?= X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=4873; i=floss@jetm.me; h=from:subject:message-id; bh=d/HKmmehbZuZuFy6yrEQuL+8MJqGQNMTKPsrWPbucdg=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpvHeRsXc1e/dD04b+RXaJE2r3El23Udt4g75Hi Q2V8JxrTXqJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCabx3kQAKCRC17sMLqGd3 HzlCC/9reY2YxHDP1rUbms3z9JoDDq2wa7CDznHl1fT10NNafTw9P/TtX/Je7aOJCfuhzlhWD9g FONYcwsf/6kKD0U4roc64nAqzaqFqe+XJjZMaqBEXqwZwfeYlMhpaSOoAqiLpwkfb6EcJBo2ZpL LY8f8/Zf8SyWIUyjhPEveG6AJBfRywW4AXV9xDv21wZYBNItjV9FfEQRNXJw9bmTVAUaVEyhFco 6oLzmdeTG9+jqK0mVrCswnsfC0n/YhBdLz+QIArM3cM1taFW0O4s6yVTCRZa9tAOGH61jGV7QAf hFD27IK7QZ5lL/rPmCVP9Ox9VoMvdtuAds9udfrHY+UZWoHKYgCZxRp8mQ74AE0aHJ8nmA+P5Wh 64Ln7o1dmwxJPrTXqpYz68HcxvNkXpy8zh8OOxbR6hprjyM7GKUlW1q658uL+h0/B2neb7Q3kR6 /+kWH3ivIJViUIQBAWVhbLiuE++B6HFSSzC7c5VO7ZsjfHFjgdI9AW5xGJx5kxjISxqmA= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260319-mt7927-wifi-support-v2-v2-0-d627a7fad70d@jetm.me> References: <20260319-mt7927-wifi-support-v2-v2-0-d627a7fad70d@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 chips using different ring indices. Define a per-chip irq_map with the correct RX interrupt enable bits and replace hardcoded MT_INT_RX_DONE_ALL with irq_map field reads in the resume and mac_reset paths. Add the MT7927 irq_map with interrupt bits matching its RX ring layout (rings 4, 6, 7), selected at probe time based on PCI device ID. This ensures 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 | 21 +++++++++++++++++= ++-- drivers/net/wireless/mediatek/mt76/mt7925/pci_mac.c | 5 ++++- drivers/net/wireless/mediatek/mt76/mt792x_regs.h | 3 +++ 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c b/drivers/net/= wireless/mediatek/mt76/mt7925/pci.c index f820d5aeb723..604c0e9ae7ba 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/pci.c @@ -266,6 +266,18 @@ static int mt7925_dma_init(struct mt792x_dev *dev) return mt792x_dma_enable(dev); } =20 +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 MT7927_RX_DONE_INT_ENA4, + .wm_complete_mask =3D MT7927_RX_DONE_INT_ENA6, + .wm2_complete_mask =3D MT7927_RX_DONE_INT_ENA7, + }, +}; static int mt7925_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) { @@ -310,6 +322,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; @@ -358,7 +371,8 @@ 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; + is_mt7927_hw =3D (pdev->device =3D=3D 0x6639 || pdev->device =3D=3D 0x792= 7); + dev->irq_map =3D is_mt7927_hw ? &mt7927_irq_map : &irq_map; mt76_mmio_init(&dev->mt76, pcim_iomap_table(pdev)[0]); tasklet_init(&mdev->irq_tasklet, mt792x_irq_tasklet, (unsigned long)dev); =20 @@ -549,7 +563,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); diff --git a/drivers/net/wireless/mediatek/mt76/mt792x_regs.h b/drivers/net= /wireless/mediatek/mt76/mt792x_regs.h index acf627aed609..a8c8d7d6f565 100644 --- a/drivers/net/wireless/mediatek/mt76/mt792x_regs.h +++ b/drivers/net/wireless/mediatek/mt76/mt792x_regs.h @@ -308,6 +308,9 @@ #define HOST_RX_DONE_INT_ENA1 BIT(1) #define HOST_RX_DONE_INT_ENA2 BIT(2) #define HOST_RX_DONE_INT_ENA3 BIT(3) +#define MT7927_RX_DONE_INT_ENA4 BIT(12) +#define MT7927_RX_DONE_INT_ENA6 BIT(14) +#define MT7927_RX_DONE_INT_ENA7 BIT(15) #define HOST_TX_DONE_INT_ENA0 BIT(4) #define HOST_TX_DONE_INT_ENA1 BIT(5) #define HOST_TX_DONE_INT_ENA2 BIT(6) --=20 2.53.0 From nobody Mon Apr 6 09:13:54 2026 Received: from flow-b3-smtp.messagingengine.com (flow-b3-smtp.messagingengine.com [202.12.124.138]) (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 238DF407599; Thu, 19 Mar 2026 22:24:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.138 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773959088; cv=none; b=PybD9FV1hesM5Guk2vsABpN+mRL+IDi2grBwOp7fcT85T0vfgtc6mdwzMqnAVqcvO38lFROLX9KMnVcErGd+3wWIZadCaQD35eaI5iWPzEJ+bBMGFbZP+ceuvEcMQsoSmp/HuuBDcG87vBQfHhsBif3hTVU6umICslStc9RrsmM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773959088; c=relaxed/simple; bh=wWU757xwqx0hIgj80GlHGMOCQOT/7mAO0JYyHm76zMY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=R4T8gH+mkziuytk2gbWxQ+x8wU7VddAogRHjdndFzGSm7Cp2k7Ts2pWChEIHwckFgonJ/Kl4vB9AZ1f+1GlR1nGGuH1G5vOX82TPJeYeOBCqEMwAqdsXbrzOZ5nkG+lfYZblkm8LF/kap8/+uHA1kzwqaurc3UQgW/iEl7zC1Ew= 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=WgTOauF1; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=PPhHwpCE; arc=none smtp.client-ip=202.12.124.138 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="WgTOauF1"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="PPhHwpCE" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.stl.internal (Postfix) with ESMTP id C599913000B8; Thu, 19 Mar 2026 18:24:39 -0400 (EDT) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Thu, 19 Mar 2026 18:24:40 -0400 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=1773959079; x=1773966279; bh=Cv1Q21xYQCzqAdOrD0pUBrfpzc3E8jkE3eBpHTTz4LM=; b= WgTOauF1IbI4pckz7dq/ysMtl6er7hMTK4hJd6s4YZketEUld3sViDjrHUI4GfqM 2R5WzFqgwJM4klw+cwfYtpotZpV52KE7ZkEp3s0ufoFsH7zFxDd0blZQTns8oEAj aJnlrxW/3ZflVSGFVdnHb/iqS7wz6Wyk+kwandsHwCMCU3LkuCi71kXK2e+4YJaB U+8Re0ptv7VuqeYhFIVLpj0v2BB259l4D/tIKs9KrNpBZcoeMjDUC5qU2DqFjASn ghr3/D3Y1G5nNcIK03Z9aiczwuH49xOmvFN+h0J4gYm0GlnI7fHZbbuxopH6AD/q 8LlebrUdAogmnQEK29WI1g== 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=1773959079; x= 1773966279; bh=Cv1Q21xYQCzqAdOrD0pUBrfpzc3E8jkE3eBpHTTz4LM=; b=P PhHwpCEV2Yi9UrV4e+CviH4rYMTiL3G5LK7gxtOKd/O0ceXYuo7GtAF9Rtq41Bso CrlkzW17hVccH04e0HoTIjGn4+Yhl86mA5LLSvEE8qNJ2IIGAh+7feHFhz+4lRuW z+U1m8xwvvqkZQaeuMh46aoBX9B/NM8WOzrWxkalz1DkJaTITEdFBhGMVFGTaQ8/ STATJzkCtoy+U4NTJIrinF2Wh7keEgX2IgZNQ3qftmoCIAbseH3NqTxYgEzBZMz7 5bmfo6sOicr+Emk3GaRi8+3Q4UFjkO+lblEk1cZIBGlhDufPz67oDvwiiXwZkSbL 9N8PdYIBMOfjQvGNs8EoA== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdeftdekvddtucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepve ektdfhffevuddtgfetieevtddvheduhfeggfekveejlefhleefieevueefiefhnecuvehl uhhsthgvrhfuihiivgepheenucfrrghrrghmpehmrghilhhfrhhomhepfhhlohhsshesjh gvthhmrdhmvgdpnhgspghrtghpthhtohepvddvpdhmohguvgepshhmthhpohhuthdprhgt 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 738511EA006B; Thu, 19 Mar 2026 18:24:39 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Thu, 19 Mar 2026 16:24:25 -0600 Subject: [PATCH v2 09/13] wifi: mt76: mt7925: add chip-specific DMA configuration 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: <20260319-mt7927-wifi-support-v2-v2-9-d627a7fad70d@jetm.me> To: Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Deren Wu , Ming Yen Hsieh Cc: linux-wireless@vger.kernel.org, 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?= X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=15351; i=floss@jetm.me; h=from:subject:message-id; bh=wWU757xwqx0hIgj80GlHGMOCQOT/7mAO0JYyHm76zMY=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpvHeRk5L8bLqemJVkHg048H/m7S/ySdOZjwHAL Kx+qdNHm+KJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCabx3kQAKCRC17sMLqGd3 H6MHDACKqS6CSqcHB29kjIqeXpfUJy4LZjxohA5nRH2e2ydbOTJp7TW7vfV+fOgPHm0tEgPL9ZX eTt+EGuZPSxwW4eZKWTCqjWSmNm/ae7CcwOeWO9mk425czgZiitPmE3Csj606AeKRxZ/CJ5Qc4g H/g9OIP4DLMM9xzqTIlTBGOppfhx6UaUYSaOufLfoVdCQzTR8fAKPkHuppgsa2jR3X0Lh/8lP4V FlmTzlFxBSV05jwLH95bIlCqhO1ohgJpZ8lohpR7UBCJ+uEmcsARSMfHEtgN4v/jtkpPtzhoDOX VHT9+KCzJyQwtctXhYnD8Pn4uOfb+NgPmFotVRbhbYrvZpUpEXsCCHX4MLyRZc6hPLpIYCEYogW 3zLkBA5hELvRTP5AV733oLD1XPOZLGlJyBfFUmIQKcgqIZKV+KgJt1CVLlWIcC+8beFZsUfKaz0 4ByX1zCdHLI4aMZGti7hLzM4TdeY9C4yXPVrJ1lWFfn3Hu7x1vhEJtHswF88jHCI061bk= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260319-mt7927-wifi-support-v2-v2-0-d627a7fad70d@jetm.me> References: <20260319-mt7927-wifi-support-v2-v2-0-d627a7fad70d@jetm.me> MT7927 uses different DMA ring indices (RX rings 4, 6, 7 vs MT7925's 0, 1, 2), a different prefetch register layout, and requires additional GLO_CFG bits (ADDR_EXT_EN, FW_DWLD_BYPASS_DMASHDL) that must be restored after every PM wake cycle. Introduce struct mt792x_dma_config to parameterize per-chip DMA differences: - RX ring indices for MCU events, data, and auxiliary queues - Prefetch configuration callback - GLO_CFG quirk bits (set/clear masks applied after DMA enable) - Pre-ring-setup hook for MT7927's SET_OWN/CLR_OWN sequence Refactor mt7925_dma_init() to read ring indices from the config struct, eliminating the need for a standalone mt7927_dma_init(). The single init function handles both chips by dispatching through the config. Update mt792x_dma_enable() to apply chip-specific GLO_CFG bits from the config and select the correct GLO_CFG_EXT1 register address per chip. 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/pci.c | 137 +++++++++++++++++++= ++-- drivers/net/wireless/mediatek/mt76/mt792x.h | 21 ++++ drivers/net/wireless/mediatek/mt76/mt792x_dma.c | 68 +++++------ drivers/net/wireless/mediatek/mt76/mt792x_regs.h | 12 ++ 4 files changed, 198 insertions(+), 40 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c b/drivers/net/= wireless/mediatek/mt76/mt7925/pci.c index 604c0e9ae7ba..415194a440f8 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/pci.c @@ -210,17 +210,128 @@ static u32 mt7925_rmw(struct mt76_dev *mdev, u32 off= set, u32 mask, u32 val) return dev->bus_ops->rmw(mdev, addr, mask, val); } =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, +}; + +#define PREFETCH(base, depth) ((base) << 16 | (depth)) + +static void mt7925_dma_prefetch(struct mt792x_dev *dev) +{ + /* 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)); + mt76_wr(dev, MT_WFDMA0_RX_RING2_EXT_CTRL, PREFETCH(0x0080, 0x4)); + mt76_wr(dev, MT_WFDMA0_RX_RING3_EXT_CTRL, PREFETCH(0x00c0, 0x4)); + /* tx ring */ + mt76_wr(dev, MT_WFDMA0_TX_RING0_EXT_CTRL, PREFETCH(0x0100, 0x10)); + mt76_wr(dev, MT_WFDMA0_TX_RING1_EXT_CTRL, PREFETCH(0x0200, 0x10)); + mt76_wr(dev, MT_WFDMA0_TX_RING2_EXT_CTRL, PREFETCH(0x0300, 0x10)); + mt76_wr(dev, MT_WFDMA0_TX_RING3_EXT_CTRL, PREFETCH(0x0400, 0x10)); + mt76_wr(dev, MT_WFDMA0_TX_RING15_EXT_CTRL, PREFETCH(0x0500, 0x4)); + mt76_wr(dev, MT_WFDMA0_TX_RING16_EXT_CTRL, PREFETCH(0x0540, 0x4)); +} + +static void mt7927_dma_prefetch(struct mt792x_dev *dev) +{ + /* 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)); +} + +static int mt7927_pre_ring_setup(struct mt792x_dev *dev) +{ + int ret; + + /* SET_OWN -> CLR_OWN: triggers ROM to initialize WFDMA */ + 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); + + return 0; +} + +static const struct mt792x_dma_config mt7925_dma_cfg =3D { + .rxq_band0 =3D MT7925_RXQ_BAND0, /* 2 */ + .rxq_mcu_wm =3D MT7925_RXQ_MCU_WM, /* 0 */ + .dma_prefetch =3D mt7925_dma_prefetch, + .glo_cfg_ext1 =3D MT_UWFDMA0_GLO_CFG_EXT1, +}; + +static const struct mt792x_dma_config mt7927_dma_cfg =3D { + .rxq_band0 =3D MT7927_RXQ_BAND0, /* 4 */ + .rxq_mcu_wm =3D MT7927_RXQ_MCU_WM, /* 6 */ + .rxq_data2 =3D MT7927_RXQ_DATA2, /* 7 */ + .dma_prefetch =3D mt7927_dma_prefetch, + .glo_cfg_set =3D MT_WFDMA0_GLO_CFG_ADDR_EXT_EN | + MT_WFDMA0_GLO_CFG_FW_DWLD_BYPASS_DMASHDL, + .glo_cfg_clear =3D MT_WFDMA0_GLO_CFG_CSR_LBK_RX_Q_SEL_EN, + .glo_cfg_ext1 =3D MT_WFDMA0_GLO_CFG_EXT1, + .pre_ring_setup =3D mt7927_pre_ring_setup, +}; + static int mt7925_dma_init(struct mt792x_dev *dev) { + const struct mt792x_dma_config *cfg =3D dev->dma_config; int ret; =20 mt76_dma_attach(&dev->mt76); =20 - ret =3D mt792x_dma_disable(dev, true); - if (ret) - return ret; + if (cfg->pre_ring_setup) { + ret =3D cfg->pre_ring_setup(dev); + if (ret) + return ret; =20 - /* init tx queue */ + /* Disable DMA before ring allocation */ + 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); + /* Ensure all DMA writes complete before polling status. */ + 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; + + mt76_wr(dev, MT_WFDMA0_RST_DTX_PTR, ~0); + mt76_wr(dev, MT_WFDMA0_RST_DRX_PTR, ~0); + /* Ensure all DMA writes complete before polling status. */ + wmb(); + msleep(10); + } else { + ret =3D mt792x_dma_disable(dev, true); + if (ret) + return ret; + } + + /* 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); @@ -241,20 +352,31 @@ static int mt7925_dma_init(struct mt792x_dev *dev) if (ret) return ret; =20 - /* rx event */ + /* rx MCU events */ ret =3D mt76_queue_alloc(dev, &dev->mt76.q_rx[MT_RXQ_MCU], - MT7925_RXQ_MCU_WM, MT7925_RX_MCU_RING_SIZE, + cfg->rxq_mcu_wm, MT7925_RX_MCU_RING_SIZE, MT_RX_BUF_SIZE, MT_RX_EVENT_RING_BASE); if (ret) return ret; =20 /* rx data */ ret =3D mt76_queue_alloc(dev, &dev->mt76.q_rx[MT_RXQ_MAIN], - MT7925_RXQ_BAND0, MT7925_RX_RING_SIZE, + cfg->rxq_band0, MT7925_RX_RING_SIZE, MT_RX_BUF_SIZE, MT_RX_DATA_RING_BASE); if (ret) return ret; =20 + /* rx auxiliary data (MT7927: management frames on ring 7) */ + if (cfg->rxq_data2) { + ret =3D mt76_queue_alloc(dev, &dev->mt76.q_rx[MT_RXQ_MCU_WA], + cfg->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; @@ -373,6 +495,7 @@ static int mt7925_pci_probe(struct pci_dev *pdev, dev->hif_ops =3D &mt7925_pcie_ops; is_mt7927_hw =3D (pdev->device =3D=3D 0x6639 || pdev->device =3D=3D 0x792= 7); dev->irq_map =3D is_mt7927_hw ? &mt7927_irq_map : &irq_map; + dev->dma_config =3D is_mt7927_hw ? &mt7927_dma_cfg : &mt7925_dma_cfg; mt76_mmio_init(&dev->mt76, pcim_iomap_table(pdev)[0]); tasklet_init(&mdev->irq_tasklet, mt792x_irq_tasklet, (unsigned long)dev); =20 diff --git a/drivers/net/wireless/mediatek/mt76/mt792x.h b/drivers/net/wire= less/mediatek/mt76/mt792x.h index 38790ef83e51..8a10438e26f9 100644 --- a/drivers/net/wireless/mediatek/mt76/mt792x.h +++ b/drivers/net/wireless/mediatek/mt76/mt792x.h @@ -203,6 +203,26 @@ struct mt792x_irq_map { } rx; }; =20 +struct mt792x_dma_config { + /* RX ring indices */ + u8 rxq_band0; + u8 rxq_mcu_wm; + u8 rxq_data2; /* 0 =3D not used */ + + /* Prefetch configuration */ + void (*dma_prefetch)(struct mt792x_dev *dev); + + /* GLO_CFG quirk bits to set/clear after DMA enable */ + u32 glo_cfg_set; + u32 glo_cfg_clear; + + /* GLO_CFG_EXT1 register address (chip-specific MMIO base) */ + u32 glo_cfg_ext1; + + /* Pre-ring-setup hook (NULL =3D not needed) */ + int (*pre_ring_setup)(struct mt792x_dev *dev); +}; + #define mt792x_init_reset(dev) ((dev)->hif_ops->init_reset(dev)) #define mt792x_dev_reset(dev) ((dev)->hif_ops->reset(dev)) #define mt792x_mcu_init(dev) ((dev)->hif_ops->mcu_init(dev)) @@ -250,6 +270,7 @@ struct mt792x_dev { struct mt76_connac_coredump coredump; const struct mt792x_hif_ops *hif_ops; const struct mt792x_irq_map *irq_map; + const struct mt792x_dma_config *dma_config; =20 struct work_struct ipv6_ns_work; struct delayed_work mlo_pm_work; diff --git a/drivers/net/wireless/mediatek/mt76/mt792x_dma.c b/drivers/net/= wireless/mediatek/mt76/mt792x_dma.c index 1ddec7788b66..4a6794ca86b9 100644 --- a/drivers/net/wireless/mediatek/mt76/mt792x_dma.c +++ b/drivers/net/wireless/mediatek/mt76/mt792x_dma.c @@ -90,42 +90,36 @@ 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)) { - /* 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)); - mt76_wr(dev, MT_WFDMA0_RX_RING2_EXT_CTRL, PREFETCH(0x0080, 0x4)); - mt76_wr(dev, MT_WFDMA0_RX_RING3_EXT_CTRL, PREFETCH(0x00c0, 0x4)); - /* tx ring */ - mt76_wr(dev, MT_WFDMA0_TX_RING0_EXT_CTRL, PREFETCH(0x0100, 0x10)); - mt76_wr(dev, MT_WFDMA0_TX_RING1_EXT_CTRL, PREFETCH(0x0200, 0x10)); - mt76_wr(dev, MT_WFDMA0_TX_RING2_EXT_CTRL, PREFETCH(0x0300, 0x10)); - mt76_wr(dev, MT_WFDMA0_TX_RING3_EXT_CTRL, PREFETCH(0x0400, 0x10)); - mt76_wr(dev, MT_WFDMA0_TX_RING15_EXT_CTRL, PREFETCH(0x0500, 0x4)); - mt76_wr(dev, MT_WFDMA0_TX_RING16_EXT_CTRL, PREFETCH(0x0540, 0x4)); - } else { - /* rx ring */ - mt76_wr(dev, MT_WFDMA0_RX_RING0_EXT_CTRL, PREFETCH(0x0, 0x4)); - mt76_wr(dev, MT_WFDMA0_RX_RING2_EXT_CTRL, PREFETCH(0x40, 0x4)); - mt76_wr(dev, MT_WFDMA0_RX_RING3_EXT_CTRL, PREFETCH(0x80, 0x4)); - mt76_wr(dev, MT_WFDMA0_RX_RING4_EXT_CTRL, PREFETCH(0xc0, 0x4)); - mt76_wr(dev, MT_WFDMA0_RX_RING5_EXT_CTRL, PREFETCH(0x100, 0x4)); - /* tx ring */ - mt76_wr(dev, MT_WFDMA0_TX_RING0_EXT_CTRL, PREFETCH(0x140, 0x4)); - mt76_wr(dev, MT_WFDMA0_TX_RING1_EXT_CTRL, PREFETCH(0x180, 0x4)); - mt76_wr(dev, MT_WFDMA0_TX_RING2_EXT_CTRL, PREFETCH(0x1c0, 0x4)); - mt76_wr(dev, MT_WFDMA0_TX_RING3_EXT_CTRL, PREFETCH(0x200, 0x4)); - mt76_wr(dev, MT_WFDMA0_TX_RING4_EXT_CTRL, PREFETCH(0x240, 0x4)); - mt76_wr(dev, MT_WFDMA0_TX_RING5_EXT_CTRL, PREFETCH(0x280, 0x4)); - mt76_wr(dev, MT_WFDMA0_TX_RING6_EXT_CTRL, PREFETCH(0x2c0, 0x4)); - mt76_wr(dev, MT_WFDMA0_TX_RING16_EXT_CTRL, PREFETCH(0x340, 0x4)); - mt76_wr(dev, MT_WFDMA0_TX_RING17_EXT_CTRL, PREFETCH(0x380, 0x4)); + /* mt7925 family uses per-chip prefetch via dma_config callback */ + if (dev->dma_config && dev->dma_config->dma_prefetch) { + dev->dma_config->dma_prefetch(dev); + return; } + + /* mt7921/mt7922 legacy prefetch */ + /* rx ring */ + mt76_wr(dev, MT_WFDMA0_RX_RING0_EXT_CTRL, PREFETCH(0x0, 0x4)); + mt76_wr(dev, MT_WFDMA0_RX_RING2_EXT_CTRL, PREFETCH(0x40, 0x4)); + mt76_wr(dev, MT_WFDMA0_RX_RING3_EXT_CTRL, PREFETCH(0x80, 0x4)); + mt76_wr(dev, MT_WFDMA0_RX_RING4_EXT_CTRL, PREFETCH(0xc0, 0x4)); + mt76_wr(dev, MT_WFDMA0_RX_RING5_EXT_CTRL, PREFETCH(0x100, 0x4)); + /* tx ring */ + mt76_wr(dev, MT_WFDMA0_TX_RING0_EXT_CTRL, PREFETCH(0x140, 0x4)); + mt76_wr(dev, MT_WFDMA0_TX_RING1_EXT_CTRL, PREFETCH(0x180, 0x4)); + mt76_wr(dev, MT_WFDMA0_TX_RING2_EXT_CTRL, PREFETCH(0x1c0, 0x4)); + mt76_wr(dev, MT_WFDMA0_TX_RING3_EXT_CTRL, PREFETCH(0x200, 0x4)); + mt76_wr(dev, MT_WFDMA0_TX_RING4_EXT_CTRL, PREFETCH(0x240, 0x4)); + mt76_wr(dev, MT_WFDMA0_TX_RING5_EXT_CTRL, PREFETCH(0x280, 0x4)); + mt76_wr(dev, MT_WFDMA0_TX_RING6_EXT_CTRL, PREFETCH(0x2c0, 0x4)); + mt76_wr(dev, MT_WFDMA0_TX_RING16_EXT_CTRL, PREFETCH(0x340, 0x4)); + mt76_wr(dev, MT_WFDMA0_TX_RING17_EXT_CTRL, PREFETCH(0x380, 0x4)); } =20 int mt792x_dma_enable(struct mt792x_dev *dev) { - /* configure perfetch settings */ + const struct mt792x_dma_config *cfg =3D dev->dma_config; + + /* configure prefetch settings */ mt792x_dma_prefetch(dev); =20 /* reset dma idx */ @@ -150,8 +144,16 @@ 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_mt7925(&dev->mt76)) { - mt76_rmw(dev, MT_UWFDMA0_GLO_CFG_EXT1, BIT(28), BIT(28)); + /* Apply chip-specific GLO_CFG quirk bits from DMA config */ + if (cfg) { + if (cfg->glo_cfg_set) + mt76_set(dev, MT_WFDMA0_GLO_CFG, cfg->glo_cfg_set); + if (cfg->glo_cfg_clear) + mt76_clear(dev, MT_WFDMA0_GLO_CFG, cfg->glo_cfg_clear); + } + + if (cfg && cfg->glo_cfg_ext1) { + mt76_rmw(dev, cfg->glo_cfg_ext1, BIT(28), BIT(28)); mt76_set(dev, MT_WFDMA0_INT_RX_PRI, 0x0F00); mt76_set(dev, MT_WFDMA0_INT_TX_PRI, 0x7F00); } diff --git a/drivers/net/wireless/mediatek/mt76/mt792x_regs.h b/drivers/net= /wireless/mediatek/mt76/mt792x_regs.h index a8c8d7d6f565..1b9b51d43f79 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) @@ -366,6 +368,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 Mon Apr 6 09:13:54 2026 Received: from flow-b3-smtp.messagingengine.com (flow-b3-smtp.messagingengine.com [202.12.124.138]) (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 20545407577; Thu, 19 Mar 2026 22:24:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.138 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773959089; cv=none; b=pXb6EfY7rYcv2LQBB092Kt2Wl+LsaUCug/Z9PAMSJEUuj/BpCQQYXqXMLl/MlbSeFMfdwhhdEfx0U9JLeGrKd6dcM3ApNN7cdieOUcp4JMO8NaAJJBUc9UXyaDV7dvJjA1deOibWtNiQpsCHY4nbw+W/rJ+DDtATHnazG3NMLLE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773959089; c=relaxed/simple; bh=/gjiel5869rYGCVjZwRZFG03XJXO8FEsTHwufAYf8os=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=DJfdMvzkHIeFdtuhLeNZXLpTsJjakPZrOcahJL8QZ53CmFLqeoPADA3BE167JsbXfHUOXrk5kSMHZyDqDElrdFwMVysyP5O+TVApgpIgJUcSMeklRCV0n2mHB6CQPqCoA/UO4tnGOFdM5DnMFDX841l9kKMbB49T/Msw3wFaF6Y= 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=f/q76d0z; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=D+Mz2j0n; arc=none smtp.client-ip=202.12.124.138 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="f/q76d0z"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="D+Mz2j0n" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.stl.internal (Postfix) with ESMTP id B91F613000BA; Thu, 19 Mar 2026 18:24:41 -0400 (EDT) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Thu, 19 Mar 2026 18:24:42 -0400 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=1773959081; x=1773966281; bh=FmXZ9AWojJY1aMvgCUXzZGGkyVWJ2/d5Ccx43mIJnaI=; b= f/q76d0zqSLgaEWiJFVdGd9BdZQt5Djoe3REvmWm67Nc4qfeSWw9kwT83DwjbPKb fz8HJgoENN0rm21kUeweptvzThkQBSNeq04HHpEDxSs/lZwW09dqlvE6RUoX5M+P 4jC1cq8pumqpsi1eqk+Zk1UQdy62TbxpL0v/EUKCbtXO9KJ68fDVoiiPiNGkXXYu TK/BPcaEeQD3yWdD1obYlmrToizofl4jRToBzvp4qwjYaWB85awRUNxG819oHY45 5Stsjg5bSuPgKUyFM4GYSmZCOhVgZWabagwq+ACqncIBzyB6+UFWHbw2aUptREv1 8xMurSF1qI0KA7ZNRCp3Ww== 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=1773959081; x= 1773966281; bh=FmXZ9AWojJY1aMvgCUXzZGGkyVWJ2/d5Ccx43mIJnaI=; b=D +Mz2j0nWcv3jocWe9nLGYtHwOsT3H20nmtB/lcukqSVtNhvKD0bNoucQxXPynCnr 50bO0KczF0DhQKLK9U/875fsYuKi2+11jlbzYHJ3g4on5ItdU65aA/3CjVMegFsM fprg+TI4ipwlM0lBVzCGCiufq2SgI+/j+X4aWcUrjd9PAcJtZKI9gMUTXvhCl8qV zv+jM0yLf5RRrDqRZ1kVzafFPuCuvpa0wfg6P14Dc7JaWvJdlH5sRXwtBBM/MIm6 3fNe07sf1o3FNoe6GCmkQwTVdLCicZyCMdBe9c71zXO6ScoE5JuFGRgFwOQoEVbO DTh+RVh9T7Pc8Cl6a1BnQ== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdeftdekvddtucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepue dttdfggfdufeeiueetffegveefffevjeehvdelfeevhffhteekgfegveeuiefhnecuffho mhgrihhnpehgihhthhhusgdrtghomhenucevlhhushhtvghrufhiiigvpedunecurfgrrh grmhepmhgrihhlfhhrohhmpehflhhoshhssehjvghtmhdrmhgvpdhnsggprhgtphhtthho pedvvddpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtoheprghnghgvlhhoghhiohgrtg 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 27A6F1EA006C; Thu, 19 Mar 2026 18:24:41 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Thu, 19 Mar 2026 16:24:26 -0600 Subject: [PATCH v2 10/13] wifi: mt76: mt7925: add MT7927 hardware 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: <20260319-mt7927-wifi-support-v2-v2-10-d627a7fad70d@jetm.me> To: Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Deren Wu , Ming Yen Hsieh Cc: linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, =?utf-8?q?=E5=BC=A0=E6=97=AD=E6=B6=B5?= , 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?= X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=10527; i=floss@jetm.me; h=from:subject:message-id; bh=/gjiel5869rYGCVjZwRZFG03XJXO8FEsTHwufAYf8os=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpvHeR2w1DkIuJrbkOygUy5D9atwjadjhCjVIIo DbVywuclWKJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCabx3kQAKCRC17sMLqGd3 H42FC/4msAplLp8BrK1e1KTKrdd2iO9NN8QAQUQE7O6QiDnbAjhPm6GxoKvd1NdhX/aSQcEFCVg c9tSYGNxxeV7K3YFAt7mNreux2DrJdkdnFLSvw2RWpPyIwFYXbs78LWKXLx69N+qk06r/0CTfnM fHVfCjAZ7bBtCTWMnL9FVBU1oMrgi73MSTPOUKXNFo3+WIyxr8r2WUd+wxTkI5B6VgPRkMnaFmc kbmox3cAu4mPhm58fYrmPlBMDPnX4NJUwvUgV/U9ZMrxxl2G1Fp43kMthGRqTu+jwfaesN3IXiV ibdJVzV21MmwAeZ5mmq4HuW0Vuxto0/yOpnFxnP1E3Rwz0JrJ4ESZLoFwiVTs7M8iNIYwSOPAuj z85YV6IWwfM5QFA0M/4M3jNj4u0Y6bqAVM946h5erEu+F1VPqwNOCdergJToA6v80NBPgD2k1oD 7OkOCd4cnkEvfuQjbdnV+C3KcpTDoekMRss5xbE4D9L7AjFgwChPeja3mwgoDGPw5KW3o= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260319-mt7927-wifi-support-v2-v2-0-d627a7fad70d@jetm.me> References: <20260319-mt7927-wifi-support-v2-v2-0-d627a7fad70d@jetm.me> Add MT7927-specific hardware initialization for the Filogic 380 combo chip, which has an additional CBInfra (ConnectaBus Infrastructure) bus fabric between PCIe and the WiFi subsystem. CBTOP remap: configure PCIe address mapping so MMIO reads to WiFi registers return valid data instead of zero. Chip initialization sequence: 1. WF subsystem reset via CBInfra RGU 2. MCU ownership acquisition 3. Poll ROMCODE_INDEX for MCU idle (0x1D1E) 4. MCIF remap for host DMA 5. PCIe sleep disable Probe flow changes for MT7927: - Skip early CLR_OWN (CBTOP not yet configured) - Force chip ID if CHIPID register returns stale value - Replace wfsys_reset with mt7927_chip_init CLR_OWN skip in mt7925e_mcu_init(): every CLR_OWN triggers the ROM to reinitialize WFDMA, destroying ring configuration set up by DMA init. The controlled SET_OWN/CLR_OWN is already handled in the DMA pre-ring setup hook. DBDC enable: MT7927 firmware defaults to single-band (2.4GHz only). Send explicit SET_DBDC_PARMS to enable dual-band operation. CNM force: MT7927 firmware lacks the connac2 feature trailer, causing channel context ops to be replaced with stubs. Force the CNM flag at probe to preserve ROC support needed for authentication. mac_reset guard: return -EOPNOTSUPP for MT7927 since the reset path performs CLR_OWN and logic reset that destroy DMA configuration. Full reset recovery is follow-up work. Register values derived from Loong0x00's reverse-engineered MT7927 driver. Reported-by: =E5=BC=A0=E6=97=AD=E6=B6=B5 Closes: https://github.com/openwrt/mt76/issues/927 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 | 13 +++ drivers/net/wireless/mediatek/mt76/mt7925/pci.c | 103 +++++++++++++++++= ++-- .../net/wireless/mediatek/mt76/mt7925/pci_mac.c | 9 ++ .../net/wireless/mediatek/mt76/mt7925/pci_mcu.c | 20 ++-- drivers/net/wireless/mediatek/mt76/mt792x_regs.h | 18 ++++ 5 files changed, 149 insertions(+), 14 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/init.c b/drivers/net= /wireless/mediatek/mt76/mt7925/init.c index 3ce5d6fcc69d..c4c99380f5b5 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/init.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/init.c @@ -115,6 +115,19 @@ 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; } diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c b/drivers/net/= wireless/mediatek/mt76/mt7925/pci.c index 415194a440f8..393d9f408b84 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/pci.c @@ -400,6 +400,64 @@ static const struct mt792x_irq_map mt7927_irq_map =3D { .wm2_complete_mask =3D MT7927_RX_DONE_INT_ENA7, }, }; + +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, MT7927_CBINFRA_RGU_WF_RST, + MT7927_CBINFRA_RGU_WF_RST_WF_SUBSYS); + msleep(1); + mt76_clear(dev, MT7927_CBINFRA_RGU_WF_RST, + MT7927_CBINFRA_RGU_WF_RST_WF_SUBSYS); + msleep(5); + + /* MCU ownership */ + mt76_wr(dev, MT7927_CBINFRA_MCU_OWN_SET, BIT(0)); + + /* Poll ROMCODE_INDEX for MCU idle */ + if (!__mt76_poll_msec(mdev, MT7927_ROMCODE_INDEX, + 0xffff, MT7927_MCU_IDLE_VALUE, 2000)) { + val =3D mt76_rr(dev, MT7927_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, MT7927_MCIF_REMAP_WF_1_BA, + MT7927_MCIF_REMAP_WF_1_BA_VAL); + + /* Disable PCIe sleep */ + mt76_wr(dev, MT7927_CBINFRA_SLP_CTRL, 0xffffffff); + + /* Clear CONNINFRA wakeup */ + mt76_wr(dev, MT7927_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, MT7927_CBINFRA_WAKEPU_TOP, 0x1); + usleep_range(1000, 2000); + + /* Configure CBTOP PCIe address remap for WF and BT */ + mt76_wr(dev, MT7927_CBINFRA_MISC0_REMAP_WF, + MT7927_CBINFRA_REMAP_WF_VAL); + mt76_wr(dev, MT7927_CBINFRA_MISC0_REMAP_BT, + MT7927_CBINFRA_REMAP_BT_VAL); + + /* Readback to push writes */ + mt76_rr(dev, MT7927_CBINFRA_MISC0_REMAP_WF); +} static int mt7925_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) { @@ -482,6 +540,17 @@ 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; @@ -517,25 +586,43 @@ static int mt7925_pci_probe(struct pci_dev *pdev, =20 if (!mt7925_disable_aspm && mt76_pci_aspm_supported(pdev)) dev->aspm_supported =3D true; - 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/mt7925/pci_mac.c b/drivers/= net/wireless/mediatek/mt76/mt7925/pci_mac.c index 1626a3684082..9b3eeb1328f6 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/pci_mac.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/pci_mac.c @@ -72,6 +72,15 @@ 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); diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/pci_mcu.c b/drivers/= net/wireless/mediatek/mt76/mt7925/pci_mcu.c index 6cceff88c656..1f50d1ef6fb6 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/pci_mcu.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/pci_mcu.c @@ -35,13 +35,21 @@ 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 diff --git a/drivers/net/wireless/mediatek/mt76/mt792x_regs.h b/drivers/net= /wireless/mediatek/mt76/mt792x_regs.h index 1b9b51d43f79..9c4bbbe898f3 100644 --- a/drivers/net/wireless/mediatek/mt76/mt792x_regs.h +++ b/drivers/net/wireless/mediatek/mt76/mt792x_regs.h @@ -499,4 +499,22 @@ #define WFSYS_SW_RST_B BIT(0) #define WFSYS_SW_INIT_DONE BIT(4) =20 +/* CBInfra registers - MT7927 combo chip */ +#define MT7927_CBINFRA_WAKEPU_TOP 0xe01a0 +#define MT7927_CBINFRA_MISC0_REMAP_WF 0x1f6554 +#define MT7927_CBINFRA_MISC0_REMAP_BT 0x1f6558 +#define MT7927_CBINFRA_RGU_WF_RST 0x1f8600 +#define MT7927_CBINFRA_RGU_WF_RST_WF_SUBSYS BIT(4) +#define MT7927_CBINFRA_MCU_OWN_SET 0x1f5034 +#define MT7927_CBINFRA_SLP_CTRL 0x1f5018 +#define MT7927_ROMCODE_INDEX 0xc1604 +#define MT7927_MCU_IDLE_VALUE 0x1d1e +#define MT7927_MCIF_REMAP_WF_1_BA 0xd1034 + +/* CBInfra CBTOP remap values */ +#define MT7927_CBINFRA_REMAP_WF_VAL 0x74037001 +#define MT7927_CBINFRA_REMAP_BT_VAL 0x70007000 + +#define MT7927_MCIF_REMAP_WF_1_BA_VAL 0x18051803 + #endif /* __MT792X_REGS_H */ --=20 2.53.0 From nobody Mon Apr 6 09:13:54 2026 Received: from flow-b3-smtp.messagingengine.com (flow-b3-smtp.messagingengine.com [202.12.124.138]) (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 F24B83BC66D; Thu, 19 Mar 2026 22:24:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.138 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773959091; cv=none; b=K19mqFDR5yxJ3kku5d1JsTDUea+v4nFcX7KM2nK0B2fofdGu3/tUQxDmMV8nukIM2wU8Ox1auSYHDH+uQC6DZVyX5naWVFdSK9mnHMzqDcfJyJ+6+Q4UvTKvFY2vWYivc3N6JTN+wF5DJw1JpkDDvHbZXV5+OXKVC/7fH3skPok= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773959091; c=relaxed/simple; bh=uQ1a1G+lRE1F+q+YVMCHkXinyGF8yjF8AUl5IYMWZrQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=VJNKd5l1tdCG21L1C/G4okQ5dLv15NvzI+xIAJe2nPcxqzdalCg+cYSImDQgeI+zwEo07BKgIHIIleF+nmWo+xyKqyzeE4ZBjepYhn7KYJi5TjPILnEjm3G2P4XUfxfF84y6aeUiKHGzs0Hcro1v7E1vrvY7HqkL9fYmOClaL/M= 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=j7oNWlNE; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=0Kdn/7P2; arc=none smtp.client-ip=202.12.124.138 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="j7oNWlNE"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="0Kdn/7P2" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.stl.internal (Postfix) with ESMTP id 3385213000BD; Thu, 19 Mar 2026 18:24:43 -0400 (EDT) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Thu, 19 Mar 2026 18:24:43 -0400 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=1773959083; x=1773966283; bh=/yRhuFGZGZrTj2kPKFgXclQoMf/ev6Z+NOFxeNH1k6c=; b= j7oNWlNEPXaW038KeL+K3IwPv1DsNivvSdQjhF8N0hH3P+giTT8aOmGkdgq3Q5e6 ov8d58/q9mW7zoRExDdwxVmNGHj7iJUFGbm6MTKEpQA/0CgT50TTUkUE7jKmwdLO HF30dxw4UdgKhAnVgrHDChdHSehEcxVDwLgDn5iDsz+k0JaM3CEX1LyH2StGDh3h 42pLLdWoBoCkL4GXVNcYwqZZD8ng7VfWHUmT8/cma2Lrd8q/IU/DQSGF0MP1pHN/ ausaVZfy+VMuW6t69B7/A804gkHYRNBe6t0Wti8HSfM4uP7DgxMqnMueamn4NETm QaQb7H5NNJZBPXronheFMA== 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=1773959083; x= 1773966283; bh=/yRhuFGZGZrTj2kPKFgXclQoMf/ev6Z+NOFxeNH1k6c=; b=0 Kdn/7P21f8UMISDFHzTNG2vS4kxFXsEYDjFjS3NEuwiolsgtfXjIgAm0Y84l1wUM /OSSmTtCfcdVA4juVqzEgFb7GJXY0aviyAADv9Flm+CDfvhkua4Wa3jE0jgRtlJf 5fSbKzLYACUWZZdmt2hwKCcwaiA+2nimSjtaXcPoS6KiYGg3QxbTLxOtfz6j/ZRd 39A+M3Owlf9xc1A6yrQ4uiyGqj46bgFBW1iRTOQqN71e8OPNnhENTWLAXDmh0bEm b2Llqz5GplOVnUMGyblsFsTgf6YPMvfKzxcAHYgICHx8Bu9aNFczPmgWnpdWWj9u OQCjJV1RAqRK8mplvKiog== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdeftdekvddtucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepte egveefkeetvdfhteduueehgfehhfeiveeifeeflefgteeuhfelfeefjeeikeeunecuffho mhgrihhnpehmthejiedrsggrnhgunecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrg hmpehmrghilhhfrhhomhepfhhlohhsshesjhgvthhmrdhmvgdpnhgspghrtghpthhtohep vddvpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopegrnhhgvghlohhgihhorggttg 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 D6FB31EA006C; Thu, 19 Mar 2026 18:24:42 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Thu, 19 Mar 2026 16:24:27 -0600 Subject: [PATCH v2 11/13] wifi: mt76: mt7925: fix 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: <20260319-mt7927-wifi-support-v2-v2-11-d627a7fad70d@jetm.me> To: Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Deren Wu , Ming Yen Hsieh Cc: linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Marcin FM , =?utf-8?q?=E5=BC=A0=E6=97=AD=E6=B6=B5?= , Cristian-Florin Radoi , George Salukvadze , Evgeny Kapusta <3193631@gmail.com>, Samu Toljamo , Ariel Rosenfeld , Chapuis Dario , =?utf-8?q?Thibaut_Fran=C3=A7ois?= X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=8944; i=floss@jetm.me; h=from:subject:message-id; bh=uQ1a1G+lRE1F+q+YVMCHkXinyGF8yjF8AUl5IYMWZrQ=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpvHeRCORlkzEHkL2BxLTLVSIZNnrUd85b7+MHm mtX5OyRRN2JAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCabx3kQAKCRC17sMLqGd3 H4kwC/9NkPhymTfP8freC3WRvVYMipev9KDJJbZY03wWgILjhdYkqy7MRaDyZSGWMLNqXeVHGbu F2K3xnr2ZbYqwYAKwq8TqhsIvd6jWYGNnYRWKiCOb+WzvBuYTgRSfDRIwZC0nfwXBQlDl5dyvo3 bOZo+mk/nJvo0vXPL0Y7vVr4xwx1koRGaDi+5k0nOqEi59mjY0qpD4P4tBSFQKPCBCmhwZ0MHjC fzR34mQYayFa7Y7MMSBq6WSwCh/wdK+2VGLOilus9pzr0oPzcweslsCP8AHV7wFhs0FW0aNwZqc AXkQubeUJqtJ8OTxdlhikNf9AfEDBKpv3ye3TsaSBFlPLaeqZzizyvPNbVn+B+WGFHMO6QvaR6M xzvoPheWTiVHesjgRDGwlwb0WpbkIHrOC43IqpBUbiN4QRttntqUMk7pNAVEP21LbF7lP91dDNj 2tDIZcTlRtq7yX5AKKh7uf0g9k7cRtLeRPg44RdX/w5CNtNTa2MwLyQe41jdD2tvgiCOE= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260319-mt7927-wifi-support-v2-v2-0-d627a7fad70d@jetm.me> References: <20260319-mt7927-wifi-support-v2-v2-0-d627a7fad70d@jetm.me> The MT7927 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. Introduce mt7925_band_idx(dev, band) helper that encapsulates the chip check: returns the hardware band index for MT7927, or 0xff (auto-select) for MT7925. Replace all scattered is_mt7927() + band mapping patterns with the unified helper across BSS creation, channel context assignment, ROC requests, and BSS info TLVs. For ROC requests on MT7925, the helper returns 0xff which is then refined to 0xfe (BAND_ALL with DBDC) for JOIN-type requests. Also clamp invalid grant band_idx values using rfband as fallback, and process grants for all MT7927 request types (not just JOIN). 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 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 | 35 ++++++++++++++- drivers/net/wireless/mediatek/mt76/mt7925/mcu.c | 50 +++++++++++++++++-= ---- drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h | 7 +++ 3 files changed, 80 insertions(+), 12 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/main.c b/drivers/net= /wireless/mediatek/mt76/mt7925/main.c index cd043ac266fb..25f8c5a28e5c 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/main.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/main.c @@ -400,7 +400,19 @@ 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; + + { + 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; + + mconf->mt76.band_idx =3D chan ? + mt7925_band_idx(&dev->mt76, chan->band) : 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 +429,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 +2132,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 +2153,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 (ctx->def.chan) { + band_idx =3D mt7925_band_idx(&dev->mt76, 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 a7f27c5014d5..0755fee6cdff 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,14 @@ 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; + req.roc[i].dbdcband =3D + mt7925_band_idx(&mvif->phy->dev->mt76, chan->band); + if (req.roc[i].dbdcband =3D=3D 0xff) + /* 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 +1444,8 @@ 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 mt7925_band_idx(&dev->mt76, + chan->band), }, }; =20 @@ -1466,7 +1492,9 @@ int mt7925_mcu_abort_roc(struct mt792x_phy *phy, stru= ct 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 mconf->mt76.band_idx <=3D 1 ? + mconf->mt76.band_idx : + 0xff, /* auto */ }, }; =20 @@ -2499,6 +2527,8 @@ 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 + mconf->mt76.band_idx =3D mt7925_band_idx(phy->dev, 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 6b9bf1b89032..2f908d159e30 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h +++ b/drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h @@ -63,6 +63,13 @@ enum mt7925_roc_req { MT7925_ROC_REQ_NUM }; =20 +static inline u8 mt7925_band_idx(struct mt76_dev *dev, enum nl80211_band b= and) +{ + if (is_mt7927(dev)) + return band =3D=3D NL80211_BAND_2GHZ ? 0 : 1; + return 0xff; /* auto-select for mt7925 */ +} + enum { UNI_EVENT_ROC_GRANT =3D 0, UNI_EVENT_ROC_GRANT_SUB_LINK =3D 4, --=20 2.53.0 From nobody Mon Apr 6 09:13:54 2026 Received: from flow-b3-smtp.messagingengine.com (flow-b3-smtp.messagingengine.com [202.12.124.138]) (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 4EC6140B6D1; Thu, 19 Mar 2026 22:24:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.138 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773959093; cv=none; b=ARKmlMgzjn/+c8ZpIGAvfr1wwfdCy5Qv9CV//NQF3mr2kQPzRHp6MlUVrBf5T0ohF4a8gQMScSk6tk1Vjky3EAqfzfSy1SAEAl5HbOPW2c2ylYQbo3UposjevjS4t1hPbHuDhtzK4Blxi0uUYHynBYBDKxpg2tOKIGUlska5DR4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773959093; c=relaxed/simple; bh=PYlAslJCMZr5+HVdvaUdUa19VFxbM+K5DE/+iCdWcok=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=I2jWTVfPLnyBDBjtPL8bS4gUP5IWpmKWc++yUmSJwqapFHBF48SFVhK64q/r7eR4S02sfut5XXswFDPViuQUzazWiYUx6fjG2WyaFc+NW6J5az6EpkInCAUJuFvteIEqCELCGtk8DSJjOfm5Epps9AWdsVhm6L3VoR8fqfEKOrw= 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=cevtMucL; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=w+yXR61z; arc=none smtp.client-ip=202.12.124.138 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="cevtMucL"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="w+yXR61z" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.stl.internal (Postfix) with ESMTP id ECD951300161; Thu, 19 Mar 2026 18:24:44 -0400 (EDT) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Thu, 19 Mar 2026 18:24:45 -0400 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=1773959084; x=1773966284; bh=6BCjacgyBBQfzI6KlQ7yHr92rvcdU94u/TkCmemPomE=; b= cevtMucLzLJxleQXCszJxKVovnBj3gTno4K9Mb4qtvtRzxkuM4uJ7u8rXhfUGku0 9L65v76WDbI1gUErykxR/V02Op59YKX2ZKCwM5+AscDnjFjPmSyP5RGMi+MYuQO+ tbw0VKnjXQ4mu9hyCDjlcQ/vhKvWaPBmofgZ/S+zsfDv38Rgt0GxWixJTXghGs41 fBxTZJDKq3jpZfiDZ9yzofxePXKLdsXhw1WGQTMf7QUEG11VJsvSz3z3zHY1P174 w4109WvPQN8TnicmVm5rR3tQ3z/cBYoHuhbSKDmGmAC4NL09d27ocX3VGDdHUcBq xxqSo21J2wFkHpTaDLkNKQ== 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=1773959084; x= 1773966284; bh=6BCjacgyBBQfzI6KlQ7yHr92rvcdU94u/TkCmemPomE=; b=w +yXR61zsxbWkpFV0EjrBNFwIXp1/d7/L95Lfb1nzZNmexQaFlSLJ3vn/AorUvT7y 66pt6jGS7297YvwRhR4av6fchVEVJGazdxbOB52TcM2Dp+ev1bavOoquRwFqfFQ+ WTJOX5405maqnvzYdUpumoXAPO3u8xTlwEaNHp9qOSxHoyvXKQuAiX/1gosYGur9 AL3pPWvcBHf2MGmO9qg9sD7eCabgf5mLkYdbTvtzyEMom314HiYPxRx3sM3RNm7s GPIjIONzyBazcmzQFjs9zfwJrJz6OBkWhvqhkGZfiEJM23pT3CnEMwgxgXgo5EsR 5F8RRYoI+TLSYhytdLMTg== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdeftdekvddtucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepve ektdfhffevuddtgfetieevtddvheduhfeggfekveejlefhleefieevueefiefhnecuvehl uhhsthgvrhfuihiivgepkeenucfrrghrrghmpehmrghilhhfrhhomhepfhhlohhsshesjh gvthhmrdhmvgdpnhgspghrtghpthhtohepvddvpdhmohguvgepshhmthhpohhuthdprhgt 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 A278C1EA006B; Thu, 19 Mar 2026 18:24:44 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Thu, 19 Mar 2026 16:24:28 -0600 Subject: [PATCH v2 12/13] wifi: mt76: mt7925: enable low power support 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: <20260319-mt7927-wifi-support-v2-v2-12-d627a7fad70d@jetm.me> To: Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Deren Wu , Ming Yen Hsieh Cc: linux-wireless@vger.kernel.org, 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?= X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2465; i=floss@jetm.me; h=from:subject:message-id; bh=PYlAslJCMZr5+HVdvaUdUa19VFxbM+K5DE/+iCdWcok=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpvHeRc4cmYJPBln9OK9QdhGO7p49+QnY5d7Sib wETU9ysHtKJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCabx3kQAKCRC17sMLqGd3 H8BJDACyBzfw/ms19DMpM9SYwG47V11JEsvTkPt0AFM5YZcG+7QowV3LhaRAryaBinvBHORFqNa rIWxqyzxSxaBQf0zipQC1ZiHIX/wk8BX1TXcAKDDJ8JFUUYu4XKiAUcuu/51wg16MgwTeoWj4l/ IqRzMd6XoT3dZA5XUi1q5fTSM+eovVOTf3VtIq3ZsFDDzh+e0a4KaiHwj4+1LGs0R9F8lp2uYHY USH8k4KHIx0Ik1Pun3qYBpha1L9gIOSsKBirimhv/huaiks5U5qbFRWjHDHnxF6GjFdC9jUjAUz U9A/HEplrp9AsAmK0ptSc4JTySlsxDCG3N8HLO6sXh2KbDH3IWkYJaDFeuymJvM2L+XMoblv9Z4 8UPLHiKtnEz9+lAnHZCtOfJ5Rv6rCVjkoCtiMcXsd8h14SHHlIUXvnbWE7nCQsiBOaXbjctTY1r OX7uA9QyaExri5SwZHrNdXIOSgqlmj5gVa8QGWaw85Qn+q5ExwuEbNx1gKqDG4LGKOP4M= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260319-mt7927-wifi-support-v2-v2-0-d627a7fad70d@jetm.me> References: <20260319-mt7927-wifi-support-v2-v2-0-d627a7fad70d@jetm.me> Enable runtime PM and deep sleep for MT7927 now that the DMA wake path properly restores all MT7927-specific GLO_CFG bits (ADDR_EXT_EN, CSR_LBK_RX_Q_SEL_EN, FW_DWLD_BYPASS_DMASHDL) via the DMA config struct on every PM wake cycle. Disable PCIe ASPM unconditionally for MT7927. The CONNINFRA power domain and WFDMA register access are unreliable with PCIe L1 active, causing throughput to drop from 1+ Gbps to ~200 Mbps. L0s savings are negligible for a PCIe WLAN card, and mt76_pci_disable_aspm() handles both device and parent bridge in one call. 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, 7 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c b/drivers/net/= wireless/mediatek/mt76/mt7925/pci.c index 393d9f408b84..693e08f35d68 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/pci.c @@ -530,7 +530,13 @@ static int mt7925_pci_probe(struct pci_dev *pdev, if (ret) goto err_free_pci_vec; =20 - if (mt7925_disable_aspm) + is_mt7927_hw =3D (pdev->device =3D=3D 0x6639 || pdev->device =3D=3D 0x792= 7); + + /* 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. + */ + if (mt7925_disable_aspm || is_mt7927_hw) mt76_pci_disable_aspm(pdev); =20 ops =3D mt792x_get_mac80211_ops(&pdev->dev, &mt7925_ops, @@ -562,7 +568,6 @@ 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; - is_mt7927_hw =3D (pdev->device =3D=3D 0x6639 || pdev->device =3D=3D 0x792= 7); dev->irq_map =3D is_mt7927_hw ? &mt7927_irq_map : &irq_map; dev->dma_config =3D is_mt7927_hw ? &mt7927_dma_cfg : &mt7925_dma_cfg; mt76_mmio_init(&dev->mt76, pcim_iomap_table(pdev)[0]); --=20 2.53.0 From nobody Mon Apr 6 09:13:54 2026 Received: from flow-b3-smtp.messagingengine.com (flow-b3-smtp.messagingengine.com [202.12.124.138]) (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 F2A92408238; Thu, 19 Mar 2026 22:24:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.138 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773959092; cv=none; b=lyJAgs8rsp/AiLdO8PkWGKF/mxpp4Lz5GzBYIIuf2rWi2lrBOv3t4G+BFOdmWcdAOkonYups4U0y/MBKOR6J0vI264CrBJbqawQndkQmuOuugJq5KsG8mZ0FAfROXjUJU/Bk0nflCbSR2ift16wfWmOkfB9bPb/dNkQxKMpN83s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773959092; c=relaxed/simple; bh=nz8eyDAP8ActMVY+DXN7zhQnBrM5b9VLE4uS6ZrmhBc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=SkFY0z/Tr6SPec+xlTOIhAFRc9kCf5r6phvT4lyzh9D+1tnwjDcFXO2lCIxSYQPpnSTG/i5zx3tUj+AfNrnu9QQQ7Sv9P7tQLjjGPxCeS3/uoXvZRIdcrivAMHJ3l7ExWWMf3DCJXwgHA3cn45QmKnf6fIUdEobHY2VdeARHZdI= 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=AzP5Ohth; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=0N1FBmJs; arc=none smtp.client-ip=202.12.124.138 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="AzP5Ohth"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="0N1FBmJs" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.stl.internal (Postfix) with ESMTP id 9C0B91300170; Thu, 19 Mar 2026 18:24:46 -0400 (EDT) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Thu, 19 Mar 2026 18:24:47 -0400 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=1773959086; x=1773966286; bh=M6mqwUzvrAper/bN3xuewcXmVlq92pIpxYo4QqPfYVo=; b= AzP5OhthuIMWHDuLNYLU4bKg+OwoC+HW6qG+2IMF6bfOUEp8wSHJUURmNZrGXVEF UM0Awx2rTE7AQJXEWMQqrwle3a903IMlqNnzJBIfw1JFNAw7ZUcRKqnY2QYYJuD0 YAe91jz1HyuuctL8IJk1mBzyCKcQ1VaH05k0aqYpaMR2am5RD3RQq6MIHEH/Syf8 h2YzNSFk5whXS6E59bH2oRSqEuKI/G/pGBC/wVzfCdoEo1MT+yJCpgi2LuxyltX2 AmOAz+3EjVLXunmEB/sZZndf+q9Sns58cHxV7GLW0KYMzFGDeb3ULjD2ZntSRl4F MZSp7OH8/spDzlb0kTDRNg== 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=1773959086; x= 1773966286; bh=M6mqwUzvrAper/bN3xuewcXmVlq92pIpxYo4QqPfYVo=; b=0 N1FBmJstklqTbwHJbFY/DwOwscV9pi9QRwXkdg5l0zciJRvR8n2J6ZrYPP/0Ku1s aVNCiigAjZkDXBoeeVXDxjAK7Gk2Vf/pdWq58cGnWSfpEGdhKSLJwinvXm3o4V1y epHD6fMjUP2CWEud1QTLrbun3j/K9C306gZYyQA6sa6SYQq+bHJILoT0r8ul7YIa XCQgs5dOWIgQOdq9O7k9m4LHuomCuNAgQQE2eTMbxj22rA3YMhiP0sIbzfvYnFXZ vfZYS1LLzbNIKFl9Ez2IYivbrbi4cfViUrsxTzfWJVtVEPJfweULZEudHCt6eftc 1+rSyI8WrQARJLYlS+6FQ== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdeftdekvddtucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepve ektdfhffevuddtgfetieevtddvheduhfeggfekveejlefhleefieevueefiefhnecuvehl uhhsthgvrhfuihiivgepkeenucfrrghrrghmpehmrghilhhfrhhomhepfhhlohhsshesjh gvthhmrdhmvgdpnhgspghrtghpthhtohepvddvpdhmohguvgepshhmthhpohhuthdprhgt 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 535E01EA006B; Thu, 19 Mar 2026 18:24:46 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Thu, 19 Mar 2026 16:24:29 -0600 Subject: [PATCH v2 13/13] wifi: mt76: mt7925: enable MT7927 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: <20260319-mt7927-wifi-support-v2-v2-13-d627a7fad70d@jetm.me> To: Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Deren Wu , Ming Yen Hsieh Cc: linux-wireless@vger.kernel.org, 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?= X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=3386; i=floss@jetm.me; h=from:subject:message-id; bh=nz8eyDAP8ActMVY+DXN7zhQnBrM5b9VLE4uS6ZrmhBc=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpvHeRUYSIdSZdhtvKx1x5yK4Rd8yQ8NM1L2y0V rwy4ahifPSJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCabx3kQAKCRC17sMLqGd3 H6EjDACXjQ/CypFIMH9QqO3ZVzJcRAEYRiDM2yAwOTT8NeaV+whsm7ba9yo2QfOWd2mP4VB9cpl eA0YVHzs8et9cr8QCThStHUjmHULxnTXmEyxBq1oCAiIHv64XmXzfUBce9KIZMcZfr2d3y8Sfmm l0q4BiKktjoeR63G01IwQRRNdY++/XZ2BCELkFtPpYxY5Mj1SMkf/acB6GQ0ZR9pAhhZrGk7DoC N0g3f8Y4bUJs2DczHk0zZbK1SjeoroWIHDRW9/stoGm7aOeo591QGr5Uj5kiQPaBqwCLMiNkff5 W60lYcriwLFRrJPKso6BODuiF8cthK34P0WYXBq/DVheqq/DCFmQGxoVVEUkvCMuxXh4ap4dqtu betxr7LPtUNdlocVDcTANJ8Oy+iO61YTX8v0c2ECnb6Yh7s4r7TEPosGZhTnovhi3ZAW3QRolot ioAejmcK1k2HQrzRfWjq5hJnyrYLGAxigHC5CtImWlEPycTaf1JFFQLPGXhdjYEffZRXA= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260319-mt7927-wifi-support-v2-v2-0-d627a7fad70d@jetm.me> References: <20260319-mt7927-wifi-support-v2-v2-0-d627a7fad70d@jetm.me> Add PCI device table entries for MT7927 hardware variants: - 14c3:7927 (ASUS ROG Crosshair X870E Hero, Lenovo Legion Pro 7) - 14c3:6639 (Foxconn/Azurewave modules) - 14c3:0738 (AMD RZ738 / MediaTek MT7927) This is the final patch in the series, enabling MT7927 device enumeration after all infrastructure (DMA, IRQ, HW init, band index, power management) is in place. 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 | 29 +++++++++++++++------= ---- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c b/drivers/net/= wireless/mediatek/mt76/mt7925/pci.c index 693e08f35d68..00c3601f14ff 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/pci.c @@ -16,6 +16,12 @@ 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 }, + { PCI_DEVICE(PCI_VENDOR_ID_MEDIATEK, 0x0738), + .driver_data =3D (kernel_ulong_t)MT7927_FIRMWARE_WM }, { }, }; =20 @@ -530,7 +536,8 @@ static int mt7925_pci_probe(struct pci_dev *pdev, if (ret) goto err_free_pci_vec; =20 - is_mt7927_hw =3D (pdev->device =3D=3D 0x6639 || pdev->device =3D=3D 0x792= 7); + is_mt7927_hw =3D (pdev->device =3D=3D 0x6639 || pdev->device =3D=3D 0x792= 7 || + pdev->device =3D=3D 0x0738); =20 /* MT7927: CONNINFRA power domain and WFDMA register access are * unreliable with PCIe L1 active, causing throughput to drop @@ -546,16 +553,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)); - } + /* 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 || + pdev->device =3D=3D 0x0738) && !(features & MT792x_FW_CAP_CNM)) { + features |=3D MT792x_FW_CAP_CNM; + memcpy(ops, &mt7925_ops, sizeof(*ops)); + } =20 mdev =3D mt76_alloc_device(&pdev->dev, sizeof(*dev), ops, &drv_ops); if (!mdev) { --=20 2.53.0