From nobody Thu Apr 2 20:27:00 2026 Received: from flow-a1-smtp.messagingengine.com (flow-a1-smtp.messagingengine.com [103.168.172.136]) (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 0A7863B38A3; Thu, 26 Mar 2026 21:12:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.136 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774559564; cv=none; b=D4Vw4c1D339CczBdNawg+PEweQ30pJcs6yFXjwV5uAfSZNIhai+RrDLk6mQ96L+dfxjTnRgN/7IHIqiiExllY6DeA43oaX6QuT4gI3QiTmJdgT5DxQE2Q1Fy/peMBqXnGAtx5stPtWkknb/W5Dr55jMKcTHmVwMZUllWc8FSwgk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774559564; c=relaxed/simple; bh=d/HKmmehbZuZuFy6yrEQuL+8MJqGQNMTKPsrWPbucdg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=TbnFEDpOBqv0z1WHFN8xwKEeL4O/5mSgFtbmKzbxEPS00UHnXatI8dRclogYnjNAgxEMcTGk3ttZG/NygNTF4U0MG3T8DGLyq6y1lpUm84cNlcLXtDfvakj85lxT4GO6WSl+BnQtZRfExBSJt4wc9PONVF4rehoJHeveRrZ6av0= 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=OZG5H7uG; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=aICUo7Xo; arc=none smtp.client-ip=103.168.172.136 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="OZG5H7uG"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="aICUo7Xo" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.phl.internal (Postfix) with ESMTP id 7AE75138017E; Thu, 26 Mar 2026 17:12:42 -0400 (EDT) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Thu, 26 Mar 2026 17:12:42 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jetm.me; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1774559562; x=1774566762; bh=wh4REqgnKzyEzUI/NBTjswi8jAEeySuPefhD1zQxSo0=; b= OZG5H7uG8A0x+up+a3yxbN7cETFHaZygZxY1fb4sB+L2NA/bxhkhov074Qthh24f 4CEN4lvbRWP7TBWFzxaSYggi6O7ElyjOA1OyRVmi7sO4f23eqBhhs4DLST0MDEQT YYfHdlsxhFcIk0NigFNN2a8GmZbLc9QVc/7iE8GU86VbyYum1XPEJ4Q7m4VLlMRm AoFUi5JNTpoMq82kMQKPnzCWucqY2fzONJnxwL1InPt+ryNhCdh6pCh/MgbBl/9g j1nfPQKy2dhef12HU/CM7P4KzQmWnfyLcNuoIdVZcM2VS2QqT9csKJrm6ehCr//a 4Eo3m3E2xkzUe0MUtGXc0Q== 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=1774559562; x= 1774566762; bh=wh4REqgnKzyEzUI/NBTjswi8jAEeySuPefhD1zQxSo0=; b=a ICUo7XoYqh5yZh2M/CE42yeZwO5jrETorta12Nc7/4k5jttNbUNJK69cIqYVotQY EDf34pR+kG0Df9LLhrx+oq2LZyMKmFTxHrrGn/cHC9AuRA6zAer/kI6pw4hpR0S5 TH8r+zQLrcmu3/54m9ZKA35x23wM9KvgrXct9BRUh7eI1CIse7W4xasTUlBkwYvR GppWX57QpVBL9ktJN0QwY5hEGYlqIvZWs7bc9RHhZ5EnnS6af5vdNHYwEErcSlC9 NXCHL7TMUjtLzD7Z6YLwkuOIPH3edu5SuS6/tg+8cB/wdZ0fLLCgFMp1GzhiE9QE 2i1laXpA0hhUeXuRZT6Ow== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdefvdekgeefucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepve ektdfhffevuddtgfetieevtddvheduhfeggfekveejlefhleefieevueefiefhnecuvehl uhhsthgvrhfuihiivgepfeenucfrrghrrghmpehmrghilhhfrhhomhepfhhlohhsshesjh 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 EBDD41EA006B; Thu, 26 Mar 2026 17:12:41 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Thu, 26 Mar 2026 15:12:32 -0600 Subject: [PATCH v4 8/9] 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: <20260326-mt7927-wifi-support-v4-v4-8-8ab465addcfe@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/pANAwAKAbXuwwuoZ3cfAcsmYgBpxaE4LrOfgn7JrGIyhpnuRTieuHLaNG2kd2xsJ 6hhpNjoFaGJAbMEAAEKAB0WIQSbE7ILzw7eI0VKk8m17sMLqGd3HwUCacWhOAAKCRC17sMLqGd3 H2vwC/9QvmHMCgKq53HN/wxY8m/JZbWRiNIjKuLpLQdXbvy8R55Eq+kbZrkyYZ+iWupwgouuBoE dmT1PwvSltfy+NE0huOlAfg4QMBvFbH9PH/40spsSpNpxxbb0H4aRzOPWUoajbY51Ct55MBXuvY pzkd/y/4tvoeMIsI9BvKpsEIEMxXdSpVw977T/NRLWzL/EdWai1O4j0YVyFgJdUjbU4IuW0rEq7 I56pQIGK1GEE7R1/1HaksJOvt3okCSbgNTZiosbmuarg57oiow4EIqf7R8UXyOpKX7rP1/YmxbZ 2NDpzm3/dPZj3cOZgrnackAyhirOfEoPaDtkVhO4EZGh2RLiiip+FLcMb4WRWtlhFt+CYuHPWIT SZNx7OTQMY7szXw32giTT2antBx/ND9esCe3H+akeAfRktwwDI5ffI3Npoli2KPz0cgZhiUZXh+ E67KbD7S8DGmZwxRzHGwLjoFfm0tY6BFHbcxIsicyDfNdRYZnuRKhVemCkXIBSDhvsrW4= X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260326-mt7927-wifi-support-v4-v4-0-8ab465addcfe@jetm.me> References: <20260326-mt7927-wifi-support-v4-v4-0-8ab465addcfe@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