From nobody Thu Apr 2 23:57:14 2026 Received: from flow-b6-smtp.messagingengine.com (flow-b6-smtp.messagingengine.com [202.12.124.141]) (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 8A03B33A9CB; Wed, 25 Mar 2026 22:10:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.141 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774476657; cv=none; b=WP6CDqSHcQErLhXO5ZwfHPnLjdnYpFpO4ofYuPA0OdQEXSmuwOPHjamnBXeSH4Hp7JmnYdhvrKO9fT6A0Z6DDwl7nBabQmYkZQmyk/ogxlHvcl5/WPkcnjOJ3tAeSFpTt2CGeyi4h5e9/6O5kpQughZe7vdjwRzqvIsf4u2Sz7Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774476657; c=relaxed/simple; bh=DizT/ddlZFD7KX9YeoKrBVdFFWkgs3dXjw0pBgdRG1k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=gy1VKHqLsVShRu900aI7fD4qs50HlimSC6rxuFVUDcYNuTHTS/2lOnwy+1UrHLzgIgHwRiwdSHN1DTsEb6M3DpSOGby/NBzmWO8DgGnMV7ygyyQvnoJxCGmJeO5q/HC3fgcBBcQIH42ELh7DrlXryf+AWKE5caQYhYY+TwDRn6Y= 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=kwYOWB1m; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=g20KQ18Y; arc=none smtp.client-ip=202.12.124.141 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="kwYOWB1m"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="g20KQ18Y" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.stl.internal (Postfix) with ESMTP id 6983A130050A; Wed, 25 Mar 2026 18:10:54 -0400 (EDT) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Wed, 25 Mar 2026 18:10:55 -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=1774476654; x=1774483854; bh=cvt3lJ9bUn/nS9x0h5+rL6WI6mE1I309IFcyKJoRia4=; b= kwYOWB1ms5OH7QzL1JH6bQVFjQALUmA8xgZWm8i8yQ7tSNwh8uVE+s2ayiny8UBj zItlJT0hOy6ypw8mF/K9T32dEze4VYt7E3VY5xFGsJPLcF6+ObTReRFiNm961THD ZzG3FR8YcF2yKUIYFyClLcV8qtCc3zKOtyNpNcwaodz+hR/rdpNYbci7mrFvLrWY zySvIkY02hh/T1mUU/tXpvrU/SHs4dtqxAYdwYGKgGiY9tNXWWjZGGUt99GrCq5D Nh8XMixaD9D+ly6J04SJ3Ikjuw31PAkLgRs/eQ1xJbq7bbldXjbZ7TJM9uO1CyE8 eXECwEz5L1Qpj/GDjMmhxg== 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=1774476654; x= 1774483854; bh=cvt3lJ9bUn/nS9x0h5+rL6WI6mE1I309IFcyKJoRia4=; b=g 20KQ18YO2ga0+bfQ4hTAhWDBkJ3fA9YafihX9S4oEf39wiv6ddCI7GrHq0t0fnW1 3+XKm/6j3LnXzlBAcFFALynfpNKilGG8TVwWLbG+ENc/GXQ/iHJUuBQGXuhO9zvr AjzX8ql3g8NIZl36CARLET21eqWqslNXd3bjDrdIvLxPEDkg1rZ3WwJaMzQ0jPGt 20C4avUB0sQca+MR1JWGOPyMZ/jty9Oh5VmExMOj0XC6meAu0Qbx8Og8V6mSkAqM dqBgvkngHBGo3xqWRFR/5EtizH3w4GfPfYw9gxihf6iFj3XGNHpkX20kuhXbd0fE jZVpGEok39GQau5jQf9nA== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdefvdehiedvucetufdoteggodetrf 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 1CA7D1EA006C; Wed, 25 Mar 2026 18:10:54 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Wed, 25 Mar 2026 16:10:50 -0600 Subject: [PATCH v3 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: <20260325-mt7927-wifi-support-v2-v3-1-5ca66c97a755@jetm.me> To: Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Ming Yen Hsieh , Deren Wu 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.15.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1810; i=floss@jetm.me; h=from:subject:message-id; bh=DizT/ddlZFD7KX9YeoKrBVdFFWkgs3dXjw0pBgdRG1k=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpxF1psC0hLCRzjME8P4BchWxGbQKnGDkG2s0SU Pb2kwM/SG2JAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCacRdaQAKCRC17sMLqGd3 H3ihDAClMgWNmFGBvIc41K+2GkosPVqd7mIMJ7jeNi/bvKlG73i4DUvihCHEp1xVm+UWUBj63yo lRSxzjJaayRjv+kHy5euXu4n/BN0JZgo8y/cIUUGJPp6idk7Kgc8OFAYbHhuxS/wT2g8kTkHElF 7KLqZGZAtB9LavkgPrtSgklWfG/d1AHTAm/TkQBdFmmQ+83v1phQVGlSsPD/3HUlYPRt3ak1qOK xlyfAsvzRpvhLj+9xePow2WEjnkEG1zOwM1oJNCH1AgUgLN00ri5gfhEvqxOxKY6BekZzaLwZhi J7bhKfy2Jix4u5q7T8A6SAmxxEaow/RRKldkYTexSZ3hxSAUqapOmsgJQT4CIpQxFcaVEcCh/0/ aD1NMQj43Vv7XYHAQ4QTNb6nQLBzj/vXnAVDtNaXYFiCTkdiqwVYCkmb/GX4upSVrqZRS1vXs+B JBP/fF3W6v7wZLOCBjhyqs/ufJpgArICFhmXKCR2VmvAN/ur/kqH5TDjU3SO0HbmeWiro= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260325-mt7927-wifi-support-v2-v3-0-5ca66c97a755@jetm.me> References: <20260325-mt7927-wifi-support-v2-v3-0-5ca66c97a755@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 Thu Apr 2 23:57:14 2026 Received: from flow-b6-smtp.messagingengine.com (flow-b6-smtp.messagingengine.com [202.12.124.141]) (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 2DEC8358376; Wed, 25 Mar 2026 22:10:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.141 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774476658; cv=none; b=jcMzh0d2ryKV1+yeIloX8Y4bmUGy5gnn4hiTaECDjdATzuO2jIBpfRZL5gp0zdsdVbonnjPUKswyaHeDEK6JMYAm7b1LRASGbl8/ItY1zvkyaQX6p7LBZwF/BiQ9hyMgfInhGVF1ESCZYsz3i8HW1w7Q5tx/R7sAISwp0pG6PKw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774476658; c=relaxed/simple; bh=oL0xrbX2LUVp9Q4JBTD78nnciF3VWT3fiWIhBG52oaU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=JtHDcKRvJktsHeNby2TClRzOEHAbskM37ldOJTGhKLHXS/f80AwfrOcx3AhEqAZEpVrfEv6pboWPWEQ005IpvqgbXT27dn9nj++NhPEatUqfSp6LuhrJsj3/mnClzOMVtPzaw3svnrSRp81kYRGuqaaWOYp84d0DvibvnrxuAtg= 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=aTd9TCq0; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=HjBTLBIh; arc=none smtp.client-ip=202.12.124.141 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="aTd9TCq0"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="HjBTLBIh" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.stl.internal (Postfix) with ESMTP id 14AC5130050F; Wed, 25 Mar 2026 18:10:56 -0400 (EDT) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Wed, 25 Mar 2026 18:10:56 -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=1774476655; x=1774483855; bh=HOxwP/LFDi9G4GG/ESf696AKYCs6uY6IFgrUHF+9MxA=; b= aTd9TCq08/igQ8iJwApBVUcfwkQeQwpEFUTVzXu6+VMwQo4i/4Poq912PjfD62zi wX2F0rrFJU4F13TTDZol1kwjtaO5QyXVsCOYOMX1BoE2FNllcItqANt76yhsJ2z9 BdZJcmSIRgtZgWuQ3vZX0JcLcEWk/FyVt9YXnjDr5WQSf1sJIwUqmK7HxbStSunL 4g8yhD6zeY/XwyL2KODPketu5pT7lGtF1qEuS9hGfNqopK6/IRHKmcvDyVVWlnWa 2Yg5MUvSvMe+dii8nmVKUJxooxcVC6UeRBzJuBx21a1q4logMUfMYwvRyiWVrX6P dKz1Va+z6udZanEQQMtX8A== 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=1774476655; x= 1774483855; bh=HOxwP/LFDi9G4GG/ESf696AKYCs6uY6IFgrUHF+9MxA=; b=H jBTLBIhsB1eyXhm3CTn+uNl23xhZ4fvUL9bSX2U0m7scDGn1vz0ofDq471d8eylS bkG5cMAlff6y9dZ30Fx7UgK2fuZPpl6N8b8La8T2VmcX7jbXqrOzFbzSuWKDKESj q+9q6qxycGevq8VU33Ek726zTKhb5pXZkJFJy1oZ1Do2Y+SVyVwACStQUSBfTAAH zdyhVTKcHyOzmaGeKXRHqKrfwTL3LY1TnVgjUc62IXForIOiquSTHN4Ur5oFEW3E 3HhDk+TRpZZROZt03PSgojgf9PnRFgG397KvUDJtseVKAAK4Z8S6SfJHIVipqCsi 46R+3c2RbGM7h5MWkqxQg== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdefvdehiedvucetufdoteggodetrf 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 BF5F51EA006B; Wed, 25 Mar 2026 18:10:55 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Wed, 25 Mar 2026 16:10:51 -0600 Subject: [PATCH v3 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: <20260325-mt7927-wifi-support-v2-v3-2-5ca66c97a755@jetm.me> To: Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Ming Yen Hsieh , Deren Wu 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.15.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1913; i=floss@jetm.me; h=from:subject:message-id; bh=oL0xrbX2LUVp9Q4JBTD78nnciF3VWT3fiWIhBG52oaU=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpxF1pMNfqc1RFhzmqHtA813FnwbxywVoIzRw15 pHrwWHYSoCJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCacRdaQAKCRC17sMLqGd3 H7tsDAC3WTGrfOmpYHmrXKGZpsa+eey4nAjWMHYrI6TpzferR+P6mvg3nc6IjQYBznzVgdEL9ex WRkNguociWYgNqqLyPaxB8G/o5k7t2OxwGUhsSlwj8dwRIDuBr9WzoKAZN9optLHZhBSTYmjoJ9 qwcvGblragoIXm0FuKhg4saLvmSvDT4I04/IqWSG8APiSFhKJHZZDu651hdrS17peX2oNAPffB4 HVxso7uBboBFmcjPDDao9VxUkpZkWVfogyLPPLCpdSwYOGbTMa/eUzfVi0rLvqTLWRbqM0q8IKW XixxhRZLIwyoqcAITMwJ4KuTo/vqnsQnlfFPpGJeQpqKkgXKk1FgzwRneI9xvYi50FM7lks1OyZ CXwvJ7Jkk7nocDZaVZr6bvadbP3MH0N0X0u+purNZhlnFIjrw0V2Uia2DU93lGqftpvhYpHYwKJ NCjhR/8DUEF47z52rjwOH2y8s7HDE1DPdh9GILP4Yivm/dNkAui3kAsMmSetD+Xsqsqcw= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260325-mt7927-wifi-support-v2-v3-0-5ca66c97a755@jetm.me> References: <20260325-mt7927-wifi-support-v2-v3-0-5ca66c97a755@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 Thu Apr 2 23:57:14 2026 Received: from flow-b6-smtp.messagingengine.com (flow-b6-smtp.messagingengine.com [202.12.124.141]) (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 C9C4D39A06E; Wed, 25 Mar 2026 22:10:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.141 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774476661; cv=none; b=YcIqmYHLRvztf3GnvGAyFpwvrBVDDRe+Rbfs0KlThp6NivEIeQb0G0rJ4EJgsodqqz9ucphWMKGW3yVy9Ht8nj2kV2noNCLR3b1+/x2Jbe/mfCEugZv2KwXuUjGd32QBY/lvj3XewpSQfKd+F4YMQ/J0FdQXlSHjVt8Kt3AaAoQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774476661; c=relaxed/simple; bh=BZB4eayi5CQeKoa7X5LI8ihvLOiSO2F3JQGoBG3iu4g=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=ADch3EIi2G4LL7GBmg0LVH1JrANMdhfNQkPM9wHymDFXg3l94ibvSmd4ERuu0EcR/QyxMzg/Di08pikyCTe0M1gn1weP1rpztoMozxZlVz5BiN3RqHTOvhlLgiWAOoIdo6fxrrThe3FzrRzpNizXWNzoXXPstAiYR0+/JuwctfA= 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=OQsGv0aL; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=k7oo8hWg; arc=none smtp.client-ip=202.12.124.141 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="OQsGv0aL"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="k7oo8hWg" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.stl.internal (Postfix) with ESMTP id 9D62A1300515; Wed, 25 Mar 2026 18:10:58 -0400 (EDT) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Wed, 25 Mar 2026 18:10:59 -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=1774476658; x=1774483858; bh=e5QLbR8nQwufqPNpMgHuGuZt5CzJuoJvqK1picXhn/k=; b= OQsGv0aLIs+JY7ipXM0S7ALef1RpUvGYzUpV5gJvtZu0LS482WTtPwMIkri0fcY/ 1H+EfCRvXEIfb07qKlXOsTB+oQSovETzPOfcQfuIBszRJ7ThJHW2gk8Yso5am6Dr 7Z/8uWzQ0SD+5p3MUJV5boCe4thDl4zbEmh2wWzx19EP5xGx0BlK9QYO1HmIygOx INM9uFV395rTygUvdHw2zVLN9umTnGkq2N7DYCV8LnodqKx0vxWY3AaBhcT1t8Q7 tunFGlZWNok466qMiTrij20G10bWoX8vfxcB/S5KqCei03OoBNiCJz6KMIvMr8TG /tE8hIOimbfaMl4Bt4NAjA== 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=1774476658; x= 1774483858; bh=e5QLbR8nQwufqPNpMgHuGuZt5CzJuoJvqK1picXhn/k=; b=k 7oo8hWg29ExIIr477Ucy4gov44CjbnB2/2RbqTCjmomAyzZBaIP4F+KvLDBNdlg1 Eglm4Bw+1/OZTX2QNSi6ULIMcKk5W8TVI7p9KIFoY0TOIzRgdDSqm5PDr/vqXLhw 7MOEjQkQfDJHgUD7C5ohp4u4u13wKoC1f3JCkSeEH8Lm21x1HJx4zUz/1H36M8GE mTAmWQOM87dlG4Ur1NLwpR4ycu/O3zYWfL2RMa5mFfk9JUxk0WoLuN3J/FJjRxNx Unx6GPj0m/HUPu7AHnwte60WUCcCmNIrqF3Ydw7ZlckQGOuKVtzaFwYMIn7sJZ9h dw7MzpRh9/gUaU6QSA7uw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdefvdehiedvucetufdoteggodetrf 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 4F9BD1EA006B; Wed, 25 Mar 2026 18:10:58 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Wed, 25 Mar 2026 16:10:52 -0600 Subject: [PATCH v3 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: <20260325-mt7927-wifi-support-v2-v3-3-5ca66c97a755@jetm.me> To: Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Ming Yen Hsieh , Deren Wu 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.15.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2005; i=floss@jetm.me; h=from:subject:message-id; bh=BZB4eayi5CQeKoa7X5LI8ihvLOiSO2F3JQGoBG3iu4g=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpxF1pAqM0OjgRKzZzz+COTIrszcH61TvR7Y4ZW XxTxDBRh8aJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCacRdaQAKCRC17sMLqGd3 H4G4DACeGc4oF99VE9s4IYS1SQfwXsrwfwBwdh2hDlI/myXA0dY78kxUJ69KyH2VWzP7erQZf55 sqxPgO0xxxXhSdVQ7hKIYiqKdRPaN1yhCyQPSmD0N4Tiwc6/abo4X1eF/xWLtKqL3+yM+MqZFrr JpA5I1CeZZZ/jYKLabF9lLx3QfhT+TUa5HHMPW+UBxddI8/BmwShC6iAvXV0g1JLXP0gAWm+Qjh yHU2XzUAvMHtDdSvY7Lnn5eApiR0YYK9LJoyZCPOOoSxWKbgI1ahEl0DKciIyHseC62T7MB2JMu Gujss3PCCvihB3ogPskLF00fSg1C9wMwLdmKR07CWFNn8gimwTVMhGxlvFIk3Ht8B41LHrnAdGZ bdMADJWUnbbsHrkvakvFCyK5EIfHIvD46dvWgRyNoyyuUNyxFsPk1THhbPoS3dHbiVhj+VxmUhm KGo4LHca/OiJ0UMLyYClUyHSSYp7ewIMdR+d76KwlFlA15e7LfcM1O3HW+ELHiq6Bshko= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260325-mt7927-wifi-support-v2-v3-0-5ca66c97a755@jetm.me> References: <20260325-mt7927-wifi-support-v2-v3-0-5ca66c97a755@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 Thu Apr 2 23:57:14 2026 Received: from flow-b6-smtp.messagingengine.com (flow-b6-smtp.messagingengine.com [202.12.124.141]) (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 565C8358376; Wed, 25 Mar 2026 22:11:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.141 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774476663; cv=none; b=ihjFAyUWCr1sOW9sn/jFza67wKsLYbk254b13xPp+n3mMFTelfYDKfEMumyg+FtRwXJ/zNeac+olOe6SY8S4zR4iAhuoDEJ2yekETt0MU/y4kmm0XE0cvCYNTUYPOYODh4YkNavdz8UcFEqejoCM26E8W7RNKAmkWsg8vggP4a8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774476663; c=relaxed/simple; bh=b6wuUqMM9LRMdvCkKcW9uEToGwJgCsTkr6DKPTvA7cE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=tnISsIBw1G/rnJb8PJuQOCcEyoCsp65UwzmOm38YO+6Yfy+MrzueaRfFaJs3mStrEpcm2fj9VRzkF2unIo9sD+SfHEsknzjJXIx5W1MnwijFQrs+XSSmwC56AK8qxtwt7XZ15aG0b8B6UwjXY4rApbRzWeqww/yPY23PGoxh6k4= 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=nllXHRZF; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=sLY7tC4l; arc=none smtp.client-ip=202.12.124.141 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="nllXHRZF"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="sLY7tC4l" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.stl.internal (Postfix) with ESMTP id 2E1EA1300513; Wed, 25 Mar 2026 18:11:01 -0400 (EDT) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Wed, 25 Mar 2026 18:11:01 -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=1774476661; x=1774483861; bh=3c3om6+sjsXCFA8fMVuyG6m2PTBcXdiHeFZPaFuV0Us=; b= nllXHRZF0AnyRl7gtIweLoKF+5ybTU6fQSfQUhaebATNQHFrK3cOEpcdo5V4dH88 BiFNUNyF9G0eeMIxa0BX6RDB09JvX4DvfxkpC7B4f/CS4FjnDyxUCUO3K2cSMzgl QAuIDIVlwfpZrlo5XoNVxuuT4FQXqv8n9G4valNPBH1F7DZFkxPxjbd1CZqXj4iJ F6CM67+mU8EA8LdgCZbU/XxOSSmHzOt0wpHRAChdjtbvSmLguKoeIP1eA7SlNZOc ffFJEqaTHD0yWQmAEEf+OvPCM4YMFiJss4A93XLuE9SXwykS9hfWZUHVt1Nn8Efn sjon6620xFyQD0tZ/11cNg== 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=1774476661; x= 1774483861; bh=3c3om6+sjsXCFA8fMVuyG6m2PTBcXdiHeFZPaFuV0Us=; b=s LY7tC4lJEksSlWfu4QqOV1+W/ChPPv5quGPB+koA6LzUa4yFi+H6b3mVmCaaPRUc +e4galswWiqnCsBIAxP+mgDL016MybvIKiUV7IJXl2Im7+3nk7emREFKE8uTeXW6 7DtOzRRAsoXS5Hb2oMk470R0SbOti+xoNLY/MTVAfBBVNA5jQNE/5d8R58tk1SXh +O9FJloPvLOt9XZzMScGomAEoXnnNbAz3w+vJEjHnNNcAeo6zl7fw895ft/2iT6H hVBh2cIxo6sJ8449qnCs0Fj8DQFKVsSa0MjrH4X1ZYE29QnfKhEqzIInEg4WuOAB hPaGZaqhn4cVPYoMnziwA== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdefvdehiedvucetufdoteggodetrf 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 D33101EA006B; Wed, 25 Mar 2026 18:11:00 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Wed, 25 Mar 2026 16:10:53 -0600 Subject: [PATCH v3 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: <20260325-mt7927-wifi-support-v2-v3-4-5ca66c97a755@jetm.me> To: Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Ming Yen Hsieh , Deren Wu 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.15.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1751; i=floss@jetm.me; h=from:subject:message-id; bh=b6wuUqMM9LRMdvCkKcW9uEToGwJgCsTkr6DKPTvA7cE=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpxF1pAI7AXpfmMiGndQcqS7Vuo+jQ2KPjQmyd0 GNo5A/gEVaJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCacRdaQAKCRC17sMLqGd3 HzD9DACDDpYw1OL9JL4L/QaxXf9k3up+HAQxAo4ZC8wYyLVj4g/J6Yh3Uh1ivH8gCM4rzWdzU7b zcfhy7c86MA1fQAo2eJ8p3FZZIO/rrW1vKGk9orziHEgV0bIaVZ+EhG+zTtRDuxb72ZZeC06vbR 42YTiBaBYZWAQJeWz++9obNVkyHwUui5NqVRFls6YRgtLkygsvSzdQXtOAuXLc7B0RLPz1D/eGN 2SlbO551jijmM+Gar2JpqTgQPOre1iZBb/GMnmFN8hYST41Z1PuhgJOyw4SCzuGX9W+RrvE1JAH vBG1YnoS6mh4Kw7B1rVBQjIdntMm00qPPDmPcJ6QmKaOpvS8sSfOTGKtiRLW166bpdQCVlUyUew CVqZlj6LQtSqIejxmLPzriVq4KuK1cZqxzr83ekdjoWG56XrKBWZCcRs0W0sN3+0gQ4YcZunI/M Qa6ksyIUekKhRshGfmOCaZz0Z1K7ro9t42P9T1AZSep32Kts+L3oGmDYGHc82cGROzpAI= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260325-mt7927-wifi-support-v2-v3-0-5ca66c97a755@jetm.me> References: <20260325-mt7927-wifi-support-v2-v3-0-5ca66c97a755@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 Thu Apr 2 23:57:14 2026 Received: from flow-b6-smtp.messagingengine.com (flow-b6-smtp.messagingengine.com [202.12.124.141]) (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 D3D303909A6; Wed, 25 Mar 2026 22:11:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.141 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774476665; cv=none; b=L5D0pLkovzqJWUnXQ5Bpyg1bnc64Tb96NR6CftG7Kdjs5GgxPqn0xOl6a0xmYhNj8Oe3tPfjLx7EAi0Ko93iaFWT3S5ky+5Q1Q7VOCEnyTRrXldlcvk9G4TwFJGTYMLCwaJtKpHrZc2NHEXxCwKblF+5hAs/3GRsUHomJToFHf0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774476665; c=relaxed/simple; bh=rpzkhIwTqH86iKAuSJC5SKpPFXHZZ6QEbZnRxkCG2ZY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=PzaxJ+i4gStMxv8y4uZxdeHzRseKqiFH+O3vck0MAFlKj2BT5pvAusHpEuoOR9v87R8QbbhRdz4uzOqgfmo9vjoBP7W05+awJscUNX2hIywppFJEk/zr7+OovMA5Otm3G5Q3u1sJqSy/TSce7kXQITuBnqb/4y1a50+vy+JKTLc= 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=pC2HTa80; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=ynoQXOxR; arc=none smtp.client-ip=202.12.124.141 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="pC2HTa80"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="ynoQXOxR" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.stl.internal (Postfix) with ESMTP id D5113130051B; Wed, 25 Mar 2026 18:11:02 -0400 (EDT) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Wed, 25 Mar 2026 18:11:03 -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=1774476662; x=1774483862; bh=OBjfZXsH5TqD0Lm/UbWCLodSYSgWB46anAeaAS2zRIw=; b= pC2HTa80V46+g3tmKoKdkEQKgvxlW0e70gQwJYwZuvqDSFlRHir6mq8/0GE54Aua dU4w0LyXzQIZH4umk/x87eCQeoCOLgMrfJHCQQfMKUyG5lXhGzhuEn6zKJ0RVNQE tlAOHWV5EId3DJrmV9p73zCccXHVyxgT1luK0tTUQw6Dxb4Ujbs3LecZut4cNIF2 snTlUzYvWdvFCas69ZQdXPpqSmxqOFpruwCdBrBmZNuDztw0qdtKnXAizTLfO9e2 /PbhX/FgTSmr5Gz+dgWqKpZdVsaGhF6e5/XhvABjq977j9FSy+vaNXTZmY0QroXP JECukdVs2jMvAZKejA7r2A== 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=1774476662; x= 1774483862; bh=OBjfZXsH5TqD0Lm/UbWCLodSYSgWB46anAeaAS2zRIw=; b=y noQXOxRgnNs16ti48F98UqeAh+6ykh1sN7nQEdiNIsUiTc3/IOA+FL2GymxxYclG HYvYWBDjxJcopFY45RrhzsmpbKLO9vI/J5c7Ji1NWFD3k59JKfShtj1gcqwGBBMa MNIhQPHcVmamz39dBpDiMSrb46DKZEUDgpWmRYAz9VjPCYnNgH0P+eUyCzc9czer qQ1e4iTw9b6xwkGa8GHs/vqfbVDF4X1yvraK0lQgqZLNlAsvI7DH6/2S0ykHb/8B n8+RYeVvNRiQHPc2xhIl5aV6+LtUZsAJmvwpSQh91MkQTY9IsJAYLYZhfUnyYvP0 8iNkynCY3hYxO9Z4oIxhA== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdefvdehiedvucetufdoteggodetrf 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 7C4931EA006B; Wed, 25 Mar 2026 18:11:02 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Wed, 25 Mar 2026 16:10:54 -0600 Subject: [PATCH v3 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: <20260325-mt7927-wifi-support-v2-v3-5-5ca66c97a755@jetm.me> To: Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Ming Yen Hsieh , Deren Wu 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.15.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=4604; i=floss@jetm.me; h=from:subject:message-id; bh=rpzkhIwTqH86iKAuSJC5SKpPFXHZZ6QEbZnRxkCG2ZY=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpxF1qA4e4iRjmgoy1iomtyxH4mPjVkYGp3Spex cqq+WqPvIqJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCacRdagAKCRC17sMLqGd3 H/CHDACTZd8Tdj36xqh6X1UU4ZE2OxwpHYLiFRzCZEnQX82/JM32u1eTnA1QRXM6IC+4IYvJs2N Ow+hJbTBj0KPSQoJUH0Mb2PGqzvy207C5+xgKjVILxxEshIZlnAqsiCg/MjlCA1i6gXiw5PQeob UpvDfpTivHZEkSY/pX6Cy0g9MUbI4Urs7gVqKVDJPA75690HVArs7noTRaIx9IngqPZiNjIj6FV HP1WTq72VcLVO9+JPO8iNC4OObjz3z408xEsKQ9hpfncms8WtdGROkgIXkXt3mBuIAC79Sbic3i TQIie8JGYxbgjFgg60kwBIV9r22nuSgVNsQQudqoFwPtHCdJN0CIO53BVwIDNusTSCntUTWkGMN AZVhaf/GnVG18yExv0BiVhaXDJ+IiA+YAFYKZqU1Oceg0LbUvZZCq8pEStrDwYfjkleTfi7c+ua npU0Gff8iYYxSuBRuuxxKd16grdOGKQGBKPbzMg9H1YI+r/0mrz1GMnMU653sp/5kGVwg= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260325-mt7927-wifi-support-v2-v3-0-5ca66c97a755@jetm.me> References: <20260325-mt7927-wifi-support-v2-v3-0-5ca66c97a755@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: - 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 - MCS/NSS: populate bw._320 maps for 6GHz band Introduce is_320mhz_supported() to gate 320MHz on MT7927 only, since MT7925 does not support 320MHz operation. 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 | 22 ++++++++++++++++++++= +- 2 files changed, 26 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..3785fbf5ac99 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_mt7927(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..cfce851a94e2 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)), @@ -239,6 +254,11 @@ 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 Thu Apr 2 23:57:14 2026 Received: from flow-b6-smtp.messagingengine.com (flow-b6-smtp.messagingengine.com [202.12.124.141]) (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 4792A33A9CB; Wed, 25 Mar 2026 22:11:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.141 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774476668; cv=none; b=TbDB1T2pXh1xWmiBltehONif/sf3s0PofW+1P8Lj6H9bTET0S7NoUZuP9+k52FNzOJhT36yEoRvSDWKSy0JtD6A+KybWXPXALX0E0dwk+Xu6/6qiplzgWGSRtcHIrpqR/o/dTMjv1s1xs4eEXdaCjnKlMYxmPPDhfUgK2V54dqo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774476668; c=relaxed/simple; bh=9D66lD+4PFuMZ5WOoV0TYVkhMmAV5u89PTonKlyCpD8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=LZRqpJA897exsAmxvyJdtfAdpDfRH7PhrgI6LyoMAxV66rTEly/KWNaFuLtv6uU9cNsk/ORAxszBiG/CeeLIJB0qEbFJgViYRgrNj5zNOvclYpt96Rw0dCuTHgxe1pGypxeKP9HLZONKZnnGRnk3dfP8lGSc/n2xVODhQQq1dDI= 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=itg6/yJN; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=YRLmisp5; arc=none smtp.client-ip=202.12.124.141 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="itg6/yJN"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="YRLmisp5" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.stl.internal (Postfix) with ESMTP id 565F9130051F; Wed, 25 Mar 2026 18:11:06 -0400 (EDT) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Wed, 25 Mar 2026 18:11:06 -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=1774476666; x=1774483866; bh=MAWmC3+lrAS/hQ/ZlJvHXy/pB/l0JqN+rUa+JFBfydA=; b= itg6/yJNz1ZbkzmldR2WMu2Z/zDa+2JLQqZJyd5B64r9wF04l/tz4e8IuZWhmvmi js9B94PjtAOiCYjQQ8P7so+BBfhZJJaiGTrRjQqYp38dIPfp/Afe/5wPEl8i+z9s wWTFi4vHso7fMCkCsNOSmrzP/QaGLP5SBqhjPIobUKXyVpAlP/76vEQV99waNZ8G 4SvdNn2jY1ai+RmMV+MOp5y+GSXJS7hbTNGZQ3gOiCrf1I59qXyA5QAZ2vyuT+5d mV9dTUg6MLPj4aGyaqLjc2Haa86FVQ1u93WZYs8dvilzAQs6EC/Qz5Io53DHgdiL WLP6BmwiMIcKXKuBxOHjEA== 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=1774476666; x= 1774483866; bh=MAWmC3+lrAS/hQ/ZlJvHXy/pB/l0JqN+rUa+JFBfydA=; b=Y RLmisp5z2LCLTtJ0RsGYywIPRA47MiPnn45QUUrkt8NExE3Jg5eVAPcr836F7Qlu XoNPse5rNU4Tb/eXU8F3Ge7AvJge5T+k1YIf1mr/XSUWwA4Hc6+Hhnes9YbzFy9U CZPWJHMvVOwrY0usERLWXryffQ7XPIGUGlfEbkX72yBdyagbohj+IdxWxiR+UbDf cJU5pENkYJi7hn8sjBgtJ+Wo4sIUxDh5Lvd96fUZ0bJ4nFln/2hLiB/GLzhQ/Ti7 pFN/zYbnxpzYhwvf5CnCPvY3Q1pLZdiaa1T6FxMA9753GbdRKSGg804KTvmAKmLX w9/vw1pkklR+RUO/yASMw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdefvdehiedvucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepve ektdfhffevuddtgfetieevtddvheduhfeggfekveejlefhleefieevueefiefhnecuvehl uhhsthgvrhfuihiivgepgeenucfrrghrrghmpehmrghilhhfrhhomhepfhhlohhsshesjh 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 0D2251EA006B; Wed, 25 Mar 2026 18:11:06 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Wed, 25 Mar 2026 16:10:55 -0600 Subject: [PATCH v3 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: <20260325-mt7927-wifi-support-v2-v3-6-5ca66c97a755@jetm.me> To: Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Ming Yen Hsieh , Deren Wu 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.15.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1819; i=floss@jetm.me; h=from:subject:message-id; bh=9D66lD+4PFuMZ5WOoV0TYVkhMmAV5u89PTonKlyCpD8=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpxF1qPTZoE7gPbE4ZAX/v/1dRBfrvUtgapVkGZ Q5tK5Fq5BSJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCacRdagAKCRC17sMLqGd3 H9enDACo8mWpO27XVQK8ZU6RQMej3yDulspjtZpKowctB69Y106jGDloEYhHHsWTPft28YVplwg sVvRSk/MpYWE418Niiu4sSVfK/VzC5ttJnocHUVY9zX5a4fO1kSs0ZaospIH2StuA6tGupCGqXE DOJwHxBbw6kUCPFW5FcuVtnXZmacByCaPQMhkGHTSp957vnc+4vXSgfhhmiETzpMQLkhQ325wnD kZqnCrkQxpOXbgeSH/J1l7DvgnXt7j4leQDGeXQCi9iPp58P0zp+3CoL5GH83wJUONZbQ0dmA/H C6DQyfd2/XG/mEjbgmA+H/u7M5zInV12PgCRZF3CMM1++MfiO7y57ddM3xxR21aGtg9guUicMOi Tu0cQ9cVMn0vUoLHhDCZrFp7pKRjVuaAXeTyW5gsMYm//wP4JTcA74udW7+/XHQmlOqce/uqTd+ ZfpGQLR5L3QrhmuUQ7/1zLVwIb/mQwkpTOvK4y0iyOf1pnzAqJE+IO519JnjBSG5l4lRM= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260325-mt7927-wifi-support-v2-v3-0-5ca66c97a755@jetm.me> References: <20260325-mt7927-wifi-support-v2-v3-0-5ca66c97a755@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 3785fbf5ac99..c376efc605bc 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 Thu Apr 2 23:57:14 2026 Received: from flow-b6-smtp.messagingengine.com (flow-b6-smtp.messagingengine.com [202.12.124.141]) (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 CFD5538E5E1; Wed, 25 Mar 2026 22:11:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.141 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774476676; cv=none; b=iwW0FCHZimqdwkOr6CgxVqAtigW7d0ysz37fePdLJxAQ7nuI3wjpWDERyoTzm4EsAB/4HSuQ/io75zO8eQ8X8T1mCmJLyEnbUxFUcLtLhxtMrIMA2S07TWgbiSkh/2gTEs/eA9yiaU8Zq4Q9eq+XSfC+//l4ZZopAqo6PEj9vZY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774476676; c=relaxed/simple; bh=nWa4qRu3K/oLEzDqawtOQqtIO8UuGhdZfXRs4iLq41o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=u/pMlJVV7b76cuH4AJWuAVqdXz6gPcST35oFvczbvWAwGz7uZEE5wkPTk6F3+O3610KlP/WFg6fogbHg9++YjxY1iZKN5oCp01loO0WfDruOsjfXXi1Tt3N5s+DKAKP5IIjcwiBeBKUIdo9KRClivKY1/HxJiuhkh2JdLANRvmk= 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=EMyEL8CA; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=zblLEkJo; arc=none smtp.client-ip=202.12.124.141 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="EMyEL8CA"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="zblLEkJo" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.stl.internal (Postfix) with ESMTP id EF6411300522; Wed, 25 Mar 2026 18:11:08 -0400 (EDT) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Wed, 25 Mar 2026 18:11:09 -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=1774476668; x=1774483868; bh=RgdC5kt5k6hG8v7cip1AuvGjq20kUgYnV+A5Mrl16mo=; b= EMyEL8CAeniknA6fI69yWrGzATf1FZ8EkIZ6qCdXCxp19WQn8evmQD3lrCqqv/Af WVtTVqRm3UF+1KBn6yl+8vRJJYboR6xXBK38o5QJTYZx8IaH+x8OSTUJ0XUpPnH9 fqlMBHGg03Hcm7mE58zE0GLBzFvRVBc+Dx89F2ZJQUMEWNShJ32lYKcPyIVT/m4N G6NGhpjub0HfYJnVvHKK+6s76HxyY8dgqYexLdeqNWoVii+u0yZh1Z/2uqfP5lEI FNEyaLtSidI7jkSv8x4y789VzOp0+3O+WzQadYrvFTcicLzq/OX5ors0l89l/mP7 SbO9/vdgi8Y+L5djk8l2lw== 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=1774476668; x= 1774483868; bh=RgdC5kt5k6hG8v7cip1AuvGjq20kUgYnV+A5Mrl16mo=; b=z blLEkJoxMvLUMFNaTJZVvIV9hSDCPZDx8pNuJlXDSg4TnBi+E8068EVQkQUldQ28 UwfH5JjME5Uo/osnfcHmmMAWFjTDAWJZLeKbVftHGzsyqt3AUmoEvz4prn0sVGYC zpzGKJkYw3EARZvanNRWUuPKZbdGQwalBn8D0F0X5yGE2ovpJOT7bftdA7OwqZfp kTmjNLzasDTj0GFta1KqBYUm05EF9C9x7NeiS48DOWqRCv2047wi50og3ZQV4KS6 9sfHpDataIbEINdimS9rxbjN9/CkniaVpg/b4Qgcp5lRdM17Soxl004GsaBvytu4 iiJvNXGGTRqGnq38XYIlA== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdefvdehiedvucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepve ektdfhffevuddtgfetieevtddvheduhfeggfekveejlefhleefieevueefiefhnecuvehl uhhsthgvrhfuihiivgepgeenucfrrghrrghmpehmrghilhhfrhhomhepfhhlohhsshesjh 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 A4BB11EA006B; Wed, 25 Mar 2026 18:11:08 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Wed, 25 Mar 2026 16:10:56 -0600 Subject: [PATCH v3 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: <20260325-mt7927-wifi-support-v2-v3-7-5ca66c97a755@jetm.me> To: Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Ming Yen Hsieh , Deren Wu 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.15.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3298; i=floss@jetm.me; h=from:subject:message-id; bh=nWa4qRu3K/oLEzDqawtOQqtIO8UuGhdZfXRs4iLq41o=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpxF1qM/TaP2bw/ec1p3ooFz69AbfJyZP/6Y2Y9 WA6V5CPjxyJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCacRdagAKCRC17sMLqGd3 H0GfDACFasrPPGfSBAZkVayWMOCCTN4htPlBVa1k2crZ92GChXtQ0ldeaYd4EASB9QJHMOXvY8A 4l0TyQyWrtOt2SXOrpwijYOSsfcCtBbXVjx9QQbp8WkDVq8KwVgjnFVXhODaMd2Qy6uPgxWoqWC JA+FNooQzREwyQoFc0/FbAYqEpA54qbgdtLrLKEdNk2TzOWR7JsYajJDUADgcep+a7m88vSwIAf pZ6MO8yLhvQsGWq0PgnrYAaWUVfXhWGwxy7E+1lIRzMXYWfu234xK0AExWd+kfuse23BGkXnUYS 64MQqxROb6LmPUZRbNiqX5KH9HQFNIJHPPjpRxkDN3MIqgXc0+tbMJ55YxsPqKv7FEohlk4L2rW +PQqT8LdQ4rVPzS0bHkeS1yUHOWYzAKAPkCEuRJnRE/yPYiNiZuOf2eXeKzgC9qr9b+cAgOKctp T9zpoBNesTu3CV7tisq93gMoH5V1Nytkdi2wtmj4gfdAbNXQaT8VevSdiBLHde09tlF20= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260325-mt7927-wifi-support-v2-v3-0-5ca66c97a755@jetm.me> References: <20260325-mt7927-wifi-support-v2-v3-0-5ca66c97a755@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 Thu Apr 2 23:57:14 2026 Received: from flow-b6-smtp.messagingengine.com (flow-b6-smtp.messagingengine.com [202.12.124.141]) (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 CFDE1390990; Wed, 25 Mar 2026 22:11:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.141 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774476673; cv=none; b=E5qqggbzqrxRUifOnxz6CbpwjcMTRpUhiG02TlYPnED1Ief0lH4nQelDv3K5uRzPWgeykGA4M1oembkvlZ3bcdVzhAkPAkR2ey6GiDnKenJRqh6Z/yCk3PpMr+vMrpp+wn929BUVQTqUSevdLEZD7F0bZ7tqMC9zTftkvRj+K6I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774476673; c=relaxed/simple; bh=d/HKmmehbZuZuFy6yrEQuL+8MJqGQNMTKPsrWPbucdg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=cKjHa6NyjLIYp59GK0wGMf+RyylgwDJ8Mw1nyNw3nM2dCv8AbFogqF5Drf2W7vdJyO01B3tticbzEz12/EeImi2ryvAHw3ViZLuURGEtw21mUOMS6mlmKjeJMoq9hftEqKSiE0d1FBrH5ivn0noqNmD7UI5+oVdWLiPlZHAiBQI= 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=TDlZPRly; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=HW7VZ+Jy; arc=none smtp.client-ip=202.12.124.141 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="TDlZPRly"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="HW7VZ+Jy" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.stl.internal (Postfix) with ESMTP id B995D1300523; Wed, 25 Mar 2026 18:11:10 -0400 (EDT) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Wed, 25 Mar 2026 18:11:11 -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=1774476670; x=1774483870; bh=wh4REqgnKzyEzUI/NBTjswi8jAEeySuPefhD1zQxSo0=; b= TDlZPRlymjCHsHXOfSU+r3oSoxs+WjDOHrnqAdXaR215ikq9KG/MEx7FS0YzNZox xsfW+YllfD3tPwSGaAmdo9JOnv7XpeObHKBgma21IlfYGvNXrNTE/ctFmTJvElIu lhdWf0+E1QER2xu6zb4154k3ADAJbMo6nwn4QIX5m1z2aVamag7oCZqe5IeN8PoA aqZqhcq39u8fsSU59yoUx3gJMHZFim0rjh/IIKP2G1Rg6lQhIz3b0YdjJzx2w6+r A7b4yh328EkRxouDF6+3TRVYxxdQ48Nu9go6nR3gevey9gE66iu/ErlJ5lpDpIXS Kq1fpYbz5TI1kXd6c9zrlA== 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=1774476670; x= 1774483870; bh=wh4REqgnKzyEzUI/NBTjswi8jAEeySuPefhD1zQxSo0=; b=H W7VZ+Jyrr2b0GMcUGY2HLbOXnSk4vCqmyoNA+MWIyDjegimWQDy5567NBgFqerBq rLnLsU2K7qB1eYMnyXUjOowMNOJFoHBcgERVwquNYPNu//KtauKNvrMjhUmufQOA XHKcpTh8d19M/k2pPXiPwb6m+h4XnDOR0JC/0AYaMP2MVrxAW3q5oMT3PSkdnWyV gr/RciWl7zWL4GSrX6WrJUbAU8p5C9xekyzyLnSRhdVZW7qKqww55orvBKnRGohi VaCLEG4krtJs6aEJTxFtmNKbbElGo4LLjo2IaB8QS68gJJlWT6MNzRjUlzQwQ5/D wb6Uu8FYd0aPzkbRIuQHA== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdefvdehiedvucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepve ektdfhffevuddtgfetieevtddvheduhfeggfekveejlefhleefieevueefiefhnecuvehl uhhsthgvrhfuihiivgepgeenucfrrghrrghmpehmrghilhhfrhhomhepfhhlohhsshesjh 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 743B71EA006B; Wed, 25 Mar 2026 18:11:10 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Wed, 25 Mar 2026 16:10:57 -0600 Subject: [PATCH v3 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: <20260325-mt7927-wifi-support-v2-v3-8-5ca66c97a755@jetm.me> To: Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Ming Yen Hsieh , Deren Wu 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.15.0 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/pANAwAKAbXuwwuoZ3cfAcsmYgBpxF1qBQGRj7amcApjljBBVQ0Rz4EZPRXfni7HM sWQo/NeM5eJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCacRdagAKCRC17sMLqGd3 H2DCC/9907z+5653Xpjlrv4WpAr1hJGB3hSf8B6CxwCCzbs1b7RNiZ2Nhaz9Q8RVRY1wnkxKpge AjJiNb1MWFDd4H0+kAN4utCs9aoBnaSOQ6kTtT+hkNw1waes4/bZ9/wDfLBrIE9zfbH7liLwsQU LFstKbv8FIrXu6RC31NWebepK8hN7O5QVmPTiWz1vg294ecvRwBE+MbW5Fvx7lPVWwzcOb4IPng fvyh6opbpJy2AJxL2Z2/160/jzGphxDhou+hVl1YzMzHm8Ac8YdEbcmKwEFxqsAAhJjsYxQQp0L D/0rblqOcoz0RXmMqH+lqJ80+6UB0GyOV0O69elTNtjZ5k9YWbblJBA9GKdpHW2oqNufgRwywsp pIcsmwxEgWIG7zayLFKX+jtNyJ+pe5yOZV/9cquyCC1OVvuNI6WCeEmlP9dUcFiVzbE1R4xLI0m pRtL9oQFmt44u8jvWiyqIjwEu6RLvi2Z3AVF5jp+eyO/nl4Z9xzN812KinGT1lA2qRxTo= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260325-mt7927-wifi-support-v2-v3-0-5ca66c97a755@jetm.me> References: <20260325-mt7927-wifi-support-v2-v3-0-5ca66c97a755@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 Thu Apr 2 23:57:14 2026 Received: from flow-b6-smtp.messagingengine.com (flow-b6-smtp.messagingengine.com [202.12.124.141]) (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 8506A377560; Wed, 25 Mar 2026 22:11:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.141 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774476679; cv=none; b=hD1jEg8rWjv9ifC+dciwjdcZJlPtGzp3Lo2lEV/zKBEP0qPu3n5YaHtUnUbA8H1yjr0KIlQCf2OCYdnPmc3sD6hkJmevZi/KcAEHXhR1YG1lUeXrnlFYC7J+6kK93ePesPWuaAb04Nn2AObHE3Of6PSbnIwH7JjbjmSIKczsgiE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774476679; c=relaxed/simple; bh=wWU757xwqx0hIgj80GlHGMOCQOT/7mAO0JYyHm76zMY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=RkQsYsbOI1+TgG9PuaVXU4rwSm+/XEKd6FgmCCrqiIs89sLWiDvnzuPjQErsqGXXlXswhWqgk0QK8TukD8EIr3CqD7FApYLoSdXwgyrpTIxLY5ZMM4MufGL2HIgRS604RfnhVljv/IUrfTa30EdZhThOFgf/7rW2GX2WZ9KMx1Q= 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=dMJMyrpp; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=VNJ8l0ec; arc=none smtp.client-ip=202.12.124.141 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="dMJMyrpp"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="VNJ8l0ec" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.stl.internal (Postfix) with ESMTP id 769431300530; Wed, 25 Mar 2026 18:11:12 -0400 (EDT) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Wed, 25 Mar 2026 18:11:13 -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=1774476672; x=1774483872; bh=Cv1Q21xYQCzqAdOrD0pUBrfpzc3E8jkE3eBpHTTz4LM=; b= dMJMyrppftvwgpQ/3c1rcNH+2WclV6JFWKNxlFPXluc3LRruxax2e4VcgsAiqP+5 sSCHoMvq1TxuhBN/gJBmmQhm73y+Ba27obbMPMlOGRsBMAAQDKX8LMwzQs4cq414 aYy8hA107h3QRBWT8hQHMd1Foal/foCLz/wiriRXrRkyB3b34hXNm4yPh17TwfJJ JENz9vCbagMjb0I1pcLukra50npIG3vyQPKaPBcX20szJClMoPFXCKAYtYz54/Wr 2Ac8gJI0hC2gnC0N9V7PsTT3CtwYSeHjjnTlspItYut6RuBrIgRnxwm2Vxv5cNm0 pNc2gR+wo/N72S5xPk4JOA== 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=1774476672; x= 1774483872; bh=Cv1Q21xYQCzqAdOrD0pUBrfpzc3E8jkE3eBpHTTz4LM=; b=V NJ8l0ecQk8kfEYYu7hSJum707gN4kSEMASKpU3H0XQxGucnL7VtQ85GZNAnz+Lq5 ZiVz5lNWrfOR58aW23jJ4z/ccgG+Ll+c9IAMS+EWG4hjo9Kqkl+o8cxgIFb7G6qW aJ2a3Zd3khQmTet6stZP8ZEKcQc0YSdtT+5v7sP5sF0sUrsRdqb33UxI0Za3ieYt IagtsIjHlCR+1Ai/sd2t5OhYvj6wCxG13+prJwOeMpbnVVTjmkKB8EzgIizi63gF 7om0uXxJncAsbYspXo1pGz0PIy2+4m6fKlhrLPmtWuOgmG+aD4SkDaVa1JHfUz1T v6oO+xuPyli2uqShR1e9A== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdefvdehiedvucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepve ektdfhffevuddtgfetieevtddvheduhfeggfekveejlefhleefieevueefiefhnecuvehl uhhsthgvrhfuihiivgepjeenucfrrghrrghmpehmrghilhhfrhhomhepfhhlohhsshesjh 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 2BFB71EA006B; Wed, 25 Mar 2026 18:11:12 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Wed, 25 Mar 2026 16:10:58 -0600 Subject: [PATCH v3 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: <20260325-mt7927-wifi-support-v2-v3-9-5ca66c97a755@jetm.me> To: Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Ming Yen Hsieh , Deren Wu 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.15.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=15351; i=floss@jetm.me; h=from:subject:message-id; bh=wWU757xwqx0hIgj80GlHGMOCQOT/7mAO0JYyHm76zMY=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpxF1qaLmG3d0jgEa4IZk3zxZSDi8tvnejJ/NY5 fstA/d0YumJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCacRdagAKCRC17sMLqGd3 H368C/9CoPzpXnqP4xE/ZUUJD+iGkbpInfyzcYgHlePuo0V9OGaecLM2Z4adbIsDtMjHaOu4rLJ KfPnDFZaylr4QqW9YQReGEbTMcWQMiFlYquP4kKUdG5Qo+YVd0qx4Or8CyV+NJ8yir44EbMcGWM HgImZSYietEDzq0I7trOmkPudxLh5NEpGZgdkPJlZaPRATgsxGVgl65A+hz6P6m2yr/44SlUCVM wKKYVJTzSmGAMXAh+oGsAGdukqshyRkczVtSZ014LLxvX74zkc6qoWUfJobmQBOgVPOF07IRsm7 4/sT1LqprZK2qJs1TpvcFbBHmFBtPLkSM6UMaXCcWNnR1Z8Z1Y2LbPbtfoN125f6/PI/evM4mW1 vHxF7bF2PnbFauolifiw/bWqnuKOltF8TYUVRaiCC29LefHPEUkMuvRnK/GH83BRk8ArS/07gK0 hex9hQBiqSvtwrhP85T+cPXaOwX4XwzO7R3aMG2Vs2WLgnFmzz1QZtVALz78NgHovyym0= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260325-mt7927-wifi-support-v2-v3-0-5ca66c97a755@jetm.me> References: <20260325-mt7927-wifi-support-v2-v3-0-5ca66c97a755@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 Thu Apr 2 23:57:14 2026 Received: from flow-b6-smtp.messagingengine.com (flow-b6-smtp.messagingengine.com [202.12.124.141]) (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 3C61E37B41F; Wed, 25 Mar 2026 22:11:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.141 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774476682; cv=none; b=MXmBtgv8dwD6oQlDy/RAJEPlOR8rZxVf1MgeMdVgJqTfmf12jqyqFHHPkXeuaOsHoMQGpU7j3E96bZi0tuIPABha52+iYQunzlj080IHavkknOIdITu1EgfQOD4H0zG8XTSN9o/E+juUfG2+dT0DPrKVHr/2hra6NhPB60UlWwg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774476682; c=relaxed/simple; bh=/gjiel5869rYGCVjZwRZFG03XJXO8FEsTHwufAYf8os=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=qDo+4D4/rED25Sj31cGEzC03m0mGEoPnhiSH0R02egF4hMV7N87b9c8WinyJTxAOlHb+jtuOcYjIB2OS3l/xsO16t53Q6EBQc06kURe+8GLp45udQCQkrbPjFgbzWrW3TAmcCOGuQ82EfvupDDaCz4rHQO9XU1KesggHR9zFouY= 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=DyjAdIgr; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=mzJmQjb4; arc=none smtp.client-ip=202.12.124.141 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="DyjAdIgr"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="mzJmQjb4" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.stl.internal (Postfix) with ESMTP id 29D491300539; Wed, 25 Mar 2026 18:11:14 -0400 (EDT) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Wed, 25 Mar 2026 18:11:14 -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=1774476674; x=1774483874; bh=FmXZ9AWojJY1aMvgCUXzZGGkyVWJ2/d5Ccx43mIJnaI=; b= DyjAdIgrwduIDCfKcbgBjBhu+gBQOJH+nGEAk7LXhcnv8wNDs+0kII87RRFzu8YZ HhV9KdXy0k29JvUw6G/9vcf2T/xk2PbiRQ0/ZMZMO2Ui5JKRJBBeuhiDoa8+ZHty n6MnV5hGHjeQtyNbvew73XMIjR4g/oDAfC+2QtsxHRlwCeywUywJmRt1n9J6Idwg BK8n1vjaX+isdVZ5M82P8XcoTaAkPohJfWagsUmDisemUS96KVMm8fjyhGQeSaMA dQ9rk/iJ9W+4lNOKn9QbaSWhyR7wcvSq+iwsCQDCGA6enWMtcVnjNZY4hxEIwf3v NUvnZt0+hBgucpGzP9z76A== 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=1774476674; x= 1774483874; bh=FmXZ9AWojJY1aMvgCUXzZGGkyVWJ2/d5Ccx43mIJnaI=; b=m zJmQjb4Xm2oLheQ6iAyVluxYnUdgG3av19wVw9bFnn6lXrrWiFTqQazF9WwaoGwP hGDZ0tjq+RiRd+X5uycFcOGH7EL5F/EA72Gp0czkuoxHrgjRF0PF51sW90Jz+q94 uD29AZYHZJhUGcW6rbLzqnXPuu24HQDC0ZGyK3V/9I93p/EHHoiuyU25XwD2A8yL WDCSlcs8IOywwEEAVT6jfMxOFkxh4AL2UiBMiFcHjC5jGELpSRQJNBXhe50Dug35 QVCuMJykVgBaQ5AnudwytP/FpZs5kqcSvbyXNaV+pwyqqIC1I1CXc3k21XXnvyXx oExQeDSC0HTsj10sLS1CA== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdefvdehiedvucetufdoteggodetrf 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 CB5F81EA006B; Wed, 25 Mar 2026 18:11:13 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Wed, 25 Mar 2026 16:10:59 -0600 Subject: [PATCH v3 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: <20260325-mt7927-wifi-support-v2-v3-10-5ca66c97a755@jetm.me> To: Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Ming Yen Hsieh , Deren Wu 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.15.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=10527; i=floss@jetm.me; h=from:subject:message-id; bh=/gjiel5869rYGCVjZwRZFG03XJXO8FEsTHwufAYf8os=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpxF1qs9yQw3NVJCVv4lBbWGRQdIDwUKV7vUTGw /C3wVhBJY2JAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCacRdagAKCRC17sMLqGd3 H2D/DACJYfuxgVuo9H7W5iQHmSE3gG7mYQHgQp+b1VK+YWRip2plPxSYF6sWAI1ITggFjRu24AD WkD8w/moDvzAZIRGCf027Oxkr7QXAsBac+KyBtOZ5pLwRPBThD44Ykutty5/6vaCnZu1d836CvQ BiOOMBoiuELN2IkJKgEk6Z+ZlKtq7rESIG341vgbAVZWOo8DwS6SVUUAeGFiG/MHiGSRLDK4YTl KwF4Biemfng4EHo7nZMbtkRwcAMOI6Sj/nv4Px/SZ2lOWwyZoAK/+nh26fMrt+clNgn5kftQq4/ pbYlIXk+1rNJkd1goFVSv67eqoP0411cRzCSIXrfe2qHplmsail0aaCD4G3oz7GeS2MvUayG51K 5Z/yisPuRkfDjO5VLhJbSOLKOmCpi+rbhcC1eR6iqEje9xy8ezIwTjj9SJ9MpOGwgTxQ8Gnc3AZ qlpatMiFNUKcqtYKii896W6pa3EdrKLq1GRAVnyUwGFHnNI1UyRLffKcoQhL2tTA2/RVQ= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260325-mt7927-wifi-support-v2-v3-0-5ca66c97a755@jetm.me> References: <20260325-mt7927-wifi-support-v2-v3-0-5ca66c97a755@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 Thu Apr 2 23:57:14 2026 Received: from flow-b6-smtp.messagingengine.com (flow-b6-smtp.messagingengine.com [202.12.124.141]) (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 CB3E13890F2; Wed, 25 Mar 2026 22:11:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.141 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774476681; cv=none; b=gV0BV3ddJu3ZheumVvt9A1MiJCwHg0lkzItSIrIGcXI3OULn+CzXV/lhxiVjfNMpbi2N3o6bdpyMDIKP2ltfBDcmuHTUkiwPq8LSjAE+CpqlfXlHOoIkRRPDt6pV451ksXJyqG8b/7KGbopJWxRpnhTU47fX1MC2NvvcisJ8zYU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774476681; c=relaxed/simple; bh=k7ML223623/sKHJ5G4m8RaRLCZYBr2GHAeNHlqaNLws=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=r9jPK/yzINFUQMh3rb9ydbI3sFbUFhdjludLHTRu02aEF7a5SK1DJ2gBFq1x4arlKlHfeEQ5oeu5IOddmMPWL5Yh6J+3PyMbwJXXjjL00Aq1kDOQsPRf5K5lRra03/90vocPO+zwj48o8b/ghU+Gw40hvTd4wqqelDnFwj9dsFs= 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=D3tYomih; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=nqmpQRBZ; arc=none smtp.client-ip=202.12.124.141 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="D3tYomih"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="nqmpQRBZ" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.stl.internal (Postfix) with ESMTP id BC8B6130053A; Wed, 25 Mar 2026 18:11:15 -0400 (EDT) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Wed, 25 Mar 2026 18:11:16 -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=1774476675; x=1774483875; bh=9RiVDNxFY8iLYQgVth/o2a88iVWrgG/0vCHV/lBcUvY=; b= D3tYomih7DWQPXMbTzxA/UK9jOEConTj/AzIHACmmpN1Dc477JfIpgEtRbjwO9XJ 94uwskDlJFBt9Xx4VtpBSDnkd4VZed0FHlb6jelNh1eGz9Do2lpmSI3161p/B7AW hAe+CSQTODso7Px1VNvoi6CqDnv1cSexsxeEKAd8RRmDPvsJjEvZrlUWlIWAOdOf NkpN64sr5w/HpL8AH72S3vhokS+q1uUDhKvceDjjeILaOfDFVkgOeFozmeSYvOjY 765mq95YINyWlcqrnx3+8G2fAyWqShroYyAldCnbIZGG55UAsAcOW+2DPAXPaKwS PSJq1ZA3tsk/CEk/DKdskQ== 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=1774476675; x= 1774483875; bh=9RiVDNxFY8iLYQgVth/o2a88iVWrgG/0vCHV/lBcUvY=; b=n qmpQRBZmR7kjDeHWPU/rG/+BPO3+sD5++qOkxcG0Nbara34lFdD3jtzE8IPQCsPb J4E67wFp1wKd3G9xYYxf/e+RU/fxQAyGxXTC8VTrR/rWHdoV1V1sC9sdP/jv7LDI 7QyAMEVuXTA50zgXdWPrbLcUMVjjgKP5UBgZQS2vyCBYCguBiKXRWbYDz/2i/TfT YWimJ6GExH2Hd67qp/GdCpIEhcREZOd7gpXcMsmTEqAkS3mm0sfrSGnVl5u0KF8e jSHq8M/33ruBJlwENhVJ8mYsdzPnHIOpKOBRn87sLRgVtVLCHvNyu5PGOTXyngpp gbbeTwIui0gN2iwK5QCaw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdefvdehiedvucetufdoteggodetrf 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 717541EA006B; Wed, 25 Mar 2026 18:11:15 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Wed, 25 Mar 2026 16:11:00 -0600 Subject: [PATCH v3 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: <20260325-mt7927-wifi-support-v2-v3-11-5ca66c97a755@jetm.me> To: Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Ming Yen Hsieh , Deren Wu 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.15.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=8944; i=floss@jetm.me; h=from:subject:message-id; bh=k7ML223623/sKHJ5G4m8RaRLCZYBr2GHAeNHlqaNLws=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpxF1qMN3twc4/dSHmP0UDAg3MQ5lv34qluEiVo 5p4m9NG9IqJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCacRdagAKCRC17sMLqGd3 H/HMDAC/NsY/pUuxmtQE/cH+rSGCTTvQZqnBl74nbPX7dy7lHkc+UGjWK782Zl+dX+XHhIL27gH sz+dtByAETMniHY+8h0tE1LuPu5ptVm+FnstKxKlKoh34ao5+EuJ57eGXOf7jhJeGXHLy5Wax0M gRsnt9RtRr3QorQXrQtrX0IScdnBSgG1RtTfYs5Lf6GKqreuBsN6zOAvAso9twG0p28cjfTlWVB rE71fsTQe6xUBTfUvEky9f/fyK+AejBhzn7/lroV19q/WElptratqZsR6cLJ6G8WCjBu6ag1/47 LMzEQQkmd+cRywY/IptMhFi5q3tQD64e8Ycgilwfkcbv91J8lTcanRnx4oPcQ5pWfAB+vvFwotp f7G2gN/lqRQ4jTQD0p+FmeqjJBF4/43DRjGY3UNcMrRRMNyeZPc4nGOJexlIzqOh7JLMvlqinkY c5o+zfyM3oXVtadh7+PUE1tUGnejbr3qaxkKmADcgWYTH+wozNYQjNxmBEIVesu23Hrf8= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260325-mt7927-wifi-support-v2-v3-0-5ca66c97a755@jetm.me> References: <20260325-mt7927-wifi-support-v2-v3-0-5ca66c97a755@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 cfce851a94e2..f36638b35481 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/main.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/main.c @@ -394,7 +394,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); @@ -411,7 +423,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); @@ -2113,9 +2126,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 @@ -2131,6 +2147,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 Thu Apr 2 23:57:14 2026 Received: from fout-b6-smtp.messagingengine.com (fout-b6-smtp.messagingengine.com [202.12.124.149]) (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 437EF3563FB; Wed, 25 Mar 2026 22:11:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.149 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774476682; cv=none; b=bRpCkrutez32MPBNckw/ty7pTUCrwB3ntaE3QKFP+eBGfklDJJZEWPTULn888ZONorCeN2t+tFqFDST1XybTlQq4j7sj4A2gQ0HRsUUD1WkuxjVi7Hg/d52urfoz1Jg/frqpMMe0hLpg+kmpTESqGtzqaRfCU7ZSSyyP6oE1HkU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774476682; c=relaxed/simple; bh=2iqjJzkxfCHr/WEpzj6LaYh+JuyD2C2/r14c7V0yo38=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=OmlXD/hmGzf4iUIdK2CrVKFXNlmuF+yU9poOHfMwAQptf8aKvj+PNkGDUYviOSPCm/qd/HMxoePkOAsSQhSvvvHjieDLhaTEryJXOPLYWW89dVv+0Q+gxLWTNUfydpUxrVNyQN3MP3ojVptW6Q4RICp3T/O2i4BN8hVP6+ox5qM= 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=FfJYpItg; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=S1KQeY+n; arc=none smtp.client-ip=202.12.124.149 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="FfJYpItg"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="S1KQeY+n" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailfout.stl.internal (Postfix) with ESMTP id 5B6C11D00168; Wed, 25 Mar 2026 18:11:17 -0400 (EDT) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Wed, 25 Mar 2026 18:11:17 -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=1774476677; x=1774563077; bh=n7RyoRF58WkVZqJnuoOO9YEr75upIQgc4Q8y20FVoJo=; b= FfJYpItgt4bCSVo9wuIULduF6xbyHzRPAuQk6FLtlF8MSeC5TFEP6FGfVfz9XYdw IVa9hJ63X8HrJoAf+pyLbcqjtVgj0LEuCau/jqhyrZSpzdLoCeru+uDNo5OJxWa0 FBfl0mlGXkWEvTG5EM9gECXxn0TjCC5yeGu5dsnZYHoQkcAZG3aqm21eTaOVMzXi dm+oTX9RNQ1enUKa8dZJnc/iwuAfGq31x1MmYXQuWDOv7uktfDn7msefvLMW7CNb iDk/TWvicoL3SMlwSGO9dzk7phK+xCuH9IulAQogQNPdR2KJBnE5D9nw7jjGOk/r g7H59kpWMzniBgPQdOOXFg== 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=1774476677; x= 1774563077; bh=n7RyoRF58WkVZqJnuoOO9YEr75upIQgc4Q8y20FVoJo=; b=S 1KQeY+n+GsBkf/iXvOVqlYen1Hlcg4zhmh+1ouwhKEGuJe4sl8V9qGR+3XymeQpC 1CvLCN4g6lxB3tK0XUaeVQYzWGpXe+QgS5hUjjqN7c4Qcl+lBvDETAoxZqozgVOH uR2dLo+wkJOy+n5mlFScOq/a0oO2N7x+23Z2WdhUvLV35ydhkvTYHw1txcgW3I45 h7jASTye9u2ctP3o2XmiQfQxrqZ5TDXTNdwUYdbSbFirNAZm4Z1xFr6nfMxnrTXX m5PwSL38BnkcoXD1FCGlJ60UBHPSKYN6Q3CQZwbwaIlYsYnckYHORg/5/Elx5Onc iE5Dz0jGkIwpRGtaVPkhA== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdefvdehiedvucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthejredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepvd dtjeeiheeijedtveeujeevvdekjeeuveekleeijeekfeejhfefveeiffffvdeinecuvehl uhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepfhhlohhsshesjh gvthhmrdhmvgdpnhgspghrtghpthhtohepudefpdhmohguvgepshhmthhpohhuthdprhgt phhtthhopegrnhhgvghlohhgihhorggttghhihhnohdruggvlhhrvghgnhhosegtohhllh grsghorhgrrdgtohhmpdhrtghpthhtohepmhgrthhthhhirghsrdgsghhgsehgmhgrihhl rdgtohhmpdhrtghpthhtoheplhhorhgvnhiioheskhgvrhhnvghlrdhorhhgpdhrtghpth htoheplhhinhhugidqrghrmhdqkhgvrhhnvghlsehlihhsthhsrdhinhhfrhgruggvrggu rdhorhhgpdhrtghpthhtoheplhhinhhugidqmhgvughirghtvghksehlihhsthhsrdhinh hfrhgruggvrggurdhorhhgpdhrtghpthhtohepuggvrhgvnhdrfihusehmvgguihgrthgv khdrtghomhdprhgtphhtthhopehmihhnghihvghnrdhhshhivghhsehmvgguihgrthgvkh drtghomhdprhgtphhtthhopehrhiguvghrrdhlvggvsehmvgguihgrthgvkhdrtghomhdp rhgtphhtthhopehsvggrnhdrfigrnhhgsehmvgguihgrthgvkhdrtghomh X-ME-Proxy: Feedback-ID: i9dde48b3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 138A71EA006B; Wed, 25 Mar 2026 18:11:17 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Wed, 25 Mar 2026 16:11:01 -0600 Subject: [PATCH v3 12/13] wifi: mt76: mt7925: disable ASPM and runtime PM 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: <20260325-mt7927-wifi-support-v2-v3-12-5ca66c97a755@jetm.me> To: Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Ming Yen Hsieh , Deren Wu Cc: linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org X-Mailer: b4 0.15.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2922; i=floss@jetm.me; h=from:subject:message-id; bh=2iqjJzkxfCHr/WEpzj6LaYh+JuyD2C2/r14c7V0yo38=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpxF1qvlXa+GRyNOT8nkxUvjlUbhCWJ7vFMh1vQ UbrZ9P12X2JAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCacRdagAKCRC17sMLqGd3 H8cmC/4/JBzUQWEO0ZBvP9nWGmMuy9TovpJ9fS6iVWDLKgrBWryNgT2GQXx9oTxcw8jgJIpPVed JY+8s2dKmr6BEV8S3U9U8uHVBoDKguxcE/KEkYBXU/R+nDQxSRWB2fFkXX4iT/h1EQkr19ryFZi u9dW+dqk5vFUe7NwgJJV3z/oafJmGmPBdlXyrCRu/SbDJhN79y8WDBC+7Al1lhIqIcEOHd3+i/E TATcG8lZMPSOU9w7eUObrneLAuvQ9M572lSl9IKYcsO7C7MMfVUHz/DTgjERSwqrA3atYU1nKhU kuRy+JC12q+iZkXRUFvEtNQDshFoccpFEdp09s5pmqaH4/IQt8T56evb/IfRxxUj+YzvqxMFZw6 NKN1DwApfwUX13rwwg00C3DalVwgoEK+6EzWFfUxgnv//mU9JRf4M0DChcV89EHzeMIFPl43A8x zMKcra7mKtzX6ZG8oLpXuhPIQUdRDR9mB++FgOVJRhdkKV/wasvy1k528Scw5ln/jnfyI= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260325-mt7927-wifi-support-v2-v3-0-5ca66c97a755@jetm.me> References: <20260325-mt7927-wifi-support-v2-v3-0-5ca66c97a755@jetm.me> 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. Disable runtime PM and deep sleep for MT7927. The combo chip shares a CONNINFRA power domain between WiFi (PCIe) and BT (USB). SET_OWN/CLR_OWN transitions on the LPCTL register crash the BT firmware, requiring a full power cycle to recover. PM enablement will be addressed in a follow-up once safe power state transitions are determined. Signed-off-by: Javier Tia --- drivers/net/wireless/mediatek/mt76/mt7925/init.c | 6 +++++- drivers/net/wireless/mediatek/mt76/mt7925/pci.c | 9 +++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/init.c b/drivers/net= /wireless/mediatek/mt76/mt7925/init.c index c4c99380f5b5..89140fc6a2b6 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/init.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/init.c @@ -243,7 +243,11 @@ int mt7925_register_device(struct mt792x_dev *dev) dev->pm.idle_timeout =3D MT792x_PM_TIMEOUT; dev->pm.stats.last_wake_event =3D jiffies; dev->pm.stats.last_doze_event =3D jiffies; - if (!mt76_is_usb(&dev->mt76)) { + /* MT7927: runtime PM disabled. The combo chip shares a CONNINFRA + * power domain between WiFi (PCIe) and BT (USB). SET_OWN/CLR_OWN + * transitions on the LPCTL register crash BT firmware. + */ + if (!mt76_is_usb(&dev->mt76) && !is_mt7927(&dev->mt76)) { dev->pm.enable_user =3D true; dev->pm.enable =3D true; dev->pm.ds_enable_user =3D true; diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/pci.c b/drivers/net/= wireless/mediatek/mt76/mt7925/pci.c index 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 Thu Apr 2 23:57:14 2026 Received: from flow-b6-smtp.messagingengine.com (flow-b6-smtp.messagingengine.com [202.12.124.141]) (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 2058033A9CB; Wed, 25 Mar 2026 22:11:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.141 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774476681; cv=none; b=utE4DHnz1wkPZfJACYtD8szmv4jTeHQPP8uPn1C5Y0M4oeTHf9+LaeQunfvnyDKi1cJp8ZEjDc6iYPna1CzdWyoqu5eY8NPMXfvvyXGMz0DFuMQJKuKRbQz5FeopclNlddR8BHzbpJU282fnyOsGnNDycmxizPrH0OKTiiSXgQQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774476681; c=relaxed/simple; bh=nz8eyDAP8ActMVY+DXN7zhQnBrM5b9VLE4uS6ZrmhBc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=sIiq54a2CfZ6BDjQmQ7cV2yJjbzXapTN+nJEPpaMXsq17IUQCRaUmZuH0CRSSN5vuEO6/hx7ArTkIrNmMuCwXllPAl7HID/rbpwGr/bpL5vDuUs60wk4K1CD3A9oGkJByjQOqUyOS1WfkJuVEZX7WR524yef48cbJPUTiU7jb5c= 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=SnNfzvIE; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=a70f6694; arc=none smtp.client-ip=202.12.124.141 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="SnNfzvIE"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="a70f6694" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.stl.internal (Postfix) with ESMTP id EC6C1130053C; Wed, 25 Mar 2026 18:11:18 -0400 (EDT) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Wed, 25 Mar 2026 18:11:19 -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=1774476678; x=1774483878; bh=M6mqwUzvrAper/bN3xuewcXmVlq92pIpxYo4QqPfYVo=; b= SnNfzvIEayMvvFxOqwdPoLrqnYJvY2cIiDhFrCdrj0qqj/d1A2o4F16xV3Ni5tBO fqdbfuhFAbOSmNaen5PEokI30zKsGzX1ql35NACfOO3ngxegHTu/iHYkucqi1Z0N mrYbHLwIJqUh09lqO6y1kevd0CcBXwdslOIfHKbFFPlCS6/u1Y76O5JdhZSotWYh IIRIGSLMDGa+JjK/3j63VHTeuNITsTkhWuYQntgOUpruMUYa55zxt/vGh+7onmCG d2iYS4PZfAI2D8c94E2Ym48Y8m8fh6kjS4Zl/SNGowktMXlVVyuvlRlNDzbbKyKe pOW+6gE+YDygXawW/t3s+g== 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=1774476678; x= 1774483878; bh=M6mqwUzvrAper/bN3xuewcXmVlq92pIpxYo4QqPfYVo=; b=a 70f6694tz62Xc8j8aDTbl4XL8fBjUhrnpwzEFEIXCkBeppYlruRhJokcoKTyUHnL b9BrYuDXBrMmpQbkrPMxbO7CshUyZTBPGTbb1UYEXbStgfI8SAZjy9eADwwt8yZF PwbBep2h2WZdP02DQjbehNsqy/zAJSR6yT6UrGhtFRMKONSgqudxBzxoQJoUZY3s A+NZ4GMo09Yx/jZWkrhx0SP2GJ9Yj8UF4YcEtp4Dq+xkjWwltaTdRNoaCtxW8nCr CHdgaSuvZ+JolLKFQtNkxWDf82OXyrv8xs5XkOEQkLi90YR1LOg547lvt4vLZy58 rim8oDqGtl5EA/GEbNXFQ== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdefvdehiedvucetufdoteggodetrf 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 A54FC1EA006B; Wed, 25 Mar 2026 18:11:18 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Wed, 25 Mar 2026 16:11:02 -0600 Subject: [PATCH v3 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: <20260325-mt7927-wifi-support-v2-v3-13-5ca66c97a755@jetm.me> To: Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Ming Yen Hsieh , Deren Wu 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.15.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3386; i=floss@jetm.me; h=from:subject:message-id; bh=nz8eyDAP8ActMVY+DXN7zhQnBrM5b9VLE4uS6ZrmhBc=; b=owEB7QES/pANAwAKAbXuwwuoZ3cfAcsmYgBpxF1qy4OIzFSfVctdeylxN5WN7tUEOZFYihOYc hArKVR8gEOJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCacRdagAKCRC17sMLqGd3 Hz13DACpvg2+LOJwEmxAMtdMLLvl9b8p3hqly1uXSDGdGGGFLf5pdYJvjqXrCejT7VLB14pVlux /j+bMutS/fM6jxaJguR24s8ZPwiyA8nXSFX79u0Vo9vXxxhKL6G1JpkEykVj/bgxN+oT2VHKIZi aKH6UrulsXzNSckegviWbRRAwDKDdfnc+I0WIW1WARdYe4Jut+WQ3CvQtd7TjJrb/6jRO0Mgb+t rl7SZPWfg5KoB2OjQ9ZNMfJSYlbx45P9c3B9F4Nmf95umaHzLs4BJkak3G1IMGUhsEINTudMGmc tHz8jkCDZvUDRwzUB4gJ5ZgN8Pn9eDKT23NQj9KcaoryYTDrTdjrCJHF2+f+QPi14xzJmTuUSth MZk603BcqP4binMIZJIV7z596TNGyYBwaNTQ/EQgV+qDwEnO3V4nvQz/XQVYnFyVNU22Y+fZDHJ oIfm3BGyGmyVXywit2ZZLfdU+wCC2TK2SKU4bqK90bOEZe2nMjUyEIRy+zhbi2rxs2B7A= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260325-mt7927-wifi-support-v2-v3-0-5ca66c97a755@jetm.me> References: <20260325-mt7927-wifi-support-v2-v3-0-5ca66c97a755@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