From nobody Thu Apr 9 17:29:36 2026 Received: from flow-a2-smtp.messagingengine.com (flow-a2-smtp.messagingengine.com [103.168.172.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4F69D2BD00C; Sat, 7 Mar 2026 00:34:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.137 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843646; cv=none; b=vFOIADThAr7Y8kCrS2a+Nwq9QxxRPFeM3uoSb1AuVPa4odCxTDBb+IETJghtJIOm3lhfivQBSvglEdvCCpK7RJSDlwFMkbwZDRIjSIufpQa2dGyD5MDjLd8VDWLAn/EzqgkPXPDokKtemZjm4nhCW/SgV8CLglS8Rv5M8xnyabM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772843646; c=relaxed/simple; bh=2hcUPm4U/IeBMFjpuJHby3rkRBghMcipdujJQ1HSdNg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc: In-Reply-To:References; b=DQSQFTT1KnoMrVe2rcBX+Weg4bbk9KLwtDiyHmnvZEdmN4othiRGx6IvMLPVMnq6vvwSfU8kkcW8dFvDxOWnL/7rxXJc5PGt4ZVhI8yg9U+8CnTZsmiIfKDwfNJ7S7cXDD710JV0bd+gCmrQSE7sVcYvKs2plvNaN+mFkX3MTe8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me; spf=pass smtp.mailfrom=jetm.me; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b=XTxAQkxH; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=O0qTvjl3; arc=none smtp.client-ip=103.168.172.137 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=jetm.me Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=jetm.me Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=jetm.me header.i=@jetm.me header.b="XTxAQkxH"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="O0qTvjl3" Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.phl.internal (Postfix) with ESMTP id 660991380AAA; Fri, 6 Mar 2026 19:34:04 -0500 (EST) Received: from phl-imap-07 ([10.202.2.97]) by phl-compute-02.internal (MEProxy); Fri, 06 Mar 2026 19:34:04 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jetm.me; h=cc:cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1772843644; x=1772850844; bh=jUfiJHAcvHzsW9gWJPo2SxNLeAAQDRzeb3RPmZ0qIi8=; b= XTxAQkxH4WHyk+x0UkMptsy8Siy8E6TXvo9huaWr95m3uQ845l3QLSe/zWWG8fCF 53Rroci5YRAuKAH/IbnZBOObQGJkjJ6oCC3rvG6F1Q0B/9ls/RUS74tReSA7QdhW kAkOanK+m1qufj7b+uME3qe0CR/t1UI9kW93M/55qEcE26O1kSBZeCTYgXL9oAR+ q4ewl8j0JQSHLCRfoZ1QharMq2gOnOZobbYWea09CLR8eRoVNLccGAhBayG5i9IE siKDjl1jMVqKcNEBSyMOb4qZHvvLn/VB/fO/1bbkmFhZCakcx3LcBDenqus30Qrv l5Np99iuPfcd9U7T7tburg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1772843644; x= 1772850844; bh=jUfiJHAcvHzsW9gWJPo2SxNLeAAQDRzeb3RPmZ0qIi8=; b=O 0qTvjl36ezz7l/CAiGuHOZ3Ovbmq25VibALHnZ2YBoVi7FxWOodiaf5ZbH6X/ggW dTRspOCwUaNpquQN0N2i1N0fQSq8NxFUD+LwJEmLd3pY5VaYDcH1E98nPlYeQy62 M5j1btjlPHoDRX/SYkKH565puLbmqUxF1kVK2WFw9h0Tn3RTpBJrtxu/OEHATuo0 VgP2mDp0RFh+Kv/0gMg1Bmy/sYH0l7iPhtAyc0DzfV0CEbigbxUKoCwPhQzUOfIr +VzWGbT3KLgiYwElDvyZqHFn0887NbFwUCterPZPpHVaI9EePUjMoyfjZf3rf/8f fwOu5tKZM4BK0nrQI7Grw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgddvjedtjeehucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepoffhfffugggtgffkvfevofgjfhesthekredtredtjeenucfhrhhomheplfgrvhhi vghrucfvihgruceofhhlohhsshesjhgvthhmrdhmvgeqnecuggftrfgrthhtvghrnhepve ektdfhffevuddtgfetieevtddvheduhfeggfekveejlefhleefieevueefiefhnecuvehl uhhsthgvrhfuihiivgepuddtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehflhhoshhsse hjvghtmhdrmhgvpdhnsggprhgtphhtthhopedvfedpmhhouggvpehsmhhtphhouhhtpdhr tghpthhtoheprghnghgvlhhoghhiohgrtggthhhinhhordguvghlrhgvghhnohestgholh hlrggsohhrrgdrtghomhdprhgtphhtthhopeefudelfeeifedusehgmhgrihhlrdgtohhm pdhrtghpthhtoheplhhoohhnghdrtdigtddtsehgmhgrihhlrdgtohhmpdhrtghpthhtoh eprghrihgvlhdrrhhoshgvnhhfvghlugdrjeehtdesghhmrghilhdrtghomhdprhgtphht thhopegthhgrphhuihhsuggrrhhiohegsehgmhgrihhlrdgtohhmpdhrtghpthhtohepgh hiohhsrghlledtsehgmhgrihhlrdgtohhmpdhrtghpthhtohepmhgrthhthhhirghsrdgs ghhgsehgmhgrihhlrdgtohhmpdhrtghpthhtoheprhgrughoihdrtghhrhhishesghhmrg hilhdrtghomhdprhgtphhtthhopehsrghmuhdrthholhhjrghmohesghhmrghilhdrtgho mh X-ME-Proxy: Feedback-ID: i9dde48b3:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 3A1881EA006B; Fri, 6 Mar 2026 19:34:04 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface From: Javier Tia Date: Fri, 06 Mar 2026 18:33:31 -0600 Subject: [PATCH 12/18] wifi: mt76: mt7925: advertise EHT 320MHz capabilities for 6GHz band Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260306-mt7927-wifi-support-v1-12-c77e7445511d@jetm.me> To: linux-wireless@vger.kernel.org, Felix Fietkau , Lorenzo Bianconi , Ryder Lee , Shayne Chen , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Deren Wu , Ming Yen Hsieh Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Marcin FM , Cristian-Florin Radoi , George Salukvadze , Evgeny Kapusta <3193631@gmail.com>, Samu Toljamo , Ariel Rosenfeld , Chapuis Dario , =?utf-8?q?Thibaut_Fran=C3=A7ois?= , =?utf-8?q?=E5=BC=A0=E6=97=AD=E6=B6=B5?= , Javier Tia X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=4700; i=floss@jetm.me; h=from:subject:message-id; bh=2hcUPm4U/IeBMFjpuJHby3rkRBghMcipdujJQ1HSdNg=; b=kA0DAAoBte7DC6hndx8ByyZiAGmrclDIruDhnTwS7bbuSsddulTeXZJNLYvRrom7IwcqgcMzP YkBswQAAQoAHRYhBJsTsgvPDt4jRUqTybXuwwuoZ3cfBQJpq3JQAAoJELXuwwuoZ3cfetgMAICT DG9hcbpiIsqOVbOJJ8tNtvRfbLAQaRY+myXrn1rODTe6gOrK/fQtPY5QpBmC6EbRO6ltn3TiIo1 BE5AH9tx3OyAqU8KxiYajOIINwQqK6nUgkm8nqnDxlyP9mTR1BBBwTqn3YZ3gZYs0S3ivVFovCX AG9Yor59EmTXjjngnG0s0jduP7ViEOV31PKLFvExnYfRHmuspYXI/eHBoXguNMKCzOctFpV8Ibd D+efzT5m6tqiwLg172HsHjxIIB9NcP5ToI4mLrCAU9NHksenVh7MvhSGOVtmnL9AmG/2GQ5omi4 tlpaDQcd72uT4lsk3hxE+6c7MFb+I3YB9PsOZu0mPZ/lvUOykBw3tCCdQHugMy86o9iwW/JN11X oxn+XVe/KIxd2772AieOXnRH2nbePU/NLOKY2HU82ihxcGI3z4IFNcEQYSbqziN6qyeNbHo4HnN ++njPWowclCAXQXYw44lYOpKSOBl6FrQ0XC/q2rRGZuWLuFLCS8YY2SLzqPQ== X-Developer-Key: i=floss@jetm.me; a=openpgp; fpr=9B13B20BCF0EDE23454A93C9B5EEC30BA867771F In-Reply-To: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> References: <20260306-mt7927-wifi-support-v1-0-c77e7445511d@jetm.me> mt7925_init_eht_caps() only populates EHT MCS/NSS maps for BW <=3D 80 and BW =3D 160, but never sets BW =3D 320. This means iw phy shows no 320MHz MCS map entries even though the hardware supports 320MHz operation in the 6GHz band. Add the missing 320MHz capability bits for 6GHz, following the same pattern as mt7996: - PHY_CAP0: IEEE80211_EHT_PHY_CAP0_320MHZ_IN_6GHZ - PHY_CAP1: beamformee SS for 320MHz - PHY_CAP2: sounding dimensions for 320MHz - PHY_CAP6: MCS15 support for 320MHz width - PHY_CAP7: non-OFDMA UL MU-MIMO and MU beamformer for 320MHz - MCS/NSS: populate bw._320 maps for 6GHz band Guard all 320MHz capability advertisements behind is_mt7927() since 320MHz support has only been validated on MT7927 hardware. The mt7925 standalone chip may not support 320MHz operation. Assisted-by: Claude Code (claude-opus-4-6) Tested-by: Marcin FM Tested-by: Cristian-Florin Radoi Tested-by: George Salukvadze Tested-by: Evgeny Kapusta <3193631@gmail.com> Tested-by: Samu Toljamo Tested-by: Ariel Rosenfeld Tested-by: Chapuis Dario Tested-by: Thibaut Fran=C3=A7ois Tested-by: =E5=BC=A0=E6=97=AD=E6=B6=B5 Signed-off-by: Javier Tia --- drivers/net/wireless/mediatek/mt76/mt7925/main.c | 28 ++++++++++++++++++++= +++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7925/main.c b/drivers/net= /wireless/mediatek/mt76/mt7925/main.c index 2d358a96640c..4e1265886f20 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7925/main.c +++ b/drivers/net/wireless/mediatek/mt76/mt7925/main.c @@ -183,6 +183,10 @@ mt7925_init_eht_caps(struct mt792x_phy *phy, enum nl80= 211_band band, IEEE80211_EHT_PHY_CAP0_SU_BEAMFORMER | IEEE80211_EHT_PHY_CAP0_SU_BEAMFORMEE; =20 + if (band =3D=3D NL80211_BAND_6GHZ && is_mt7927(&phy->dev->mt76)) + eht_cap_elem->phy_cap_info[0] |=3D + IEEE80211_EHT_PHY_CAP0_320MHZ_IN_6GHZ; + eht_cap_elem->phy_cap_info[0] |=3D u8_encode_bits(u8_get_bits(sts - 1, BIT(0)), IEEE80211_EHT_PHY_CAP0_BEAMFORMEE_SS_80MHZ_MASK); @@ -193,10 +197,20 @@ mt7925_init_eht_caps(struct mt792x_phy *phy, enum nl8= 0211_band band, u8_encode_bits(sts - 1, IEEE80211_EHT_PHY_CAP1_BEAMFORMEE_SS_160MHZ_MASK); =20 + if (band =3D=3D NL80211_BAND_6GHZ && is_mt7927(&phy->dev->mt76)) + eht_cap_elem->phy_cap_info[1] |=3D + u8_encode_bits(sts - 1, + IEEE80211_EHT_PHY_CAP1_BEAMFORMEE_SS_320MHZ_MASK); + eht_cap_elem->phy_cap_info[2] =3D u8_encode_bits(sts - 1, IEEE80211_EHT_PHY_CAP2_SOUNDING_DIM_80MHZ_MASK) | u8_encode_bits(sts - 1, IEEE80211_EHT_PHY_CAP2_SOUNDING_DIM_160MHZ_MASK); =20 + if (band =3D=3D NL80211_BAND_6GHZ && is_mt7927(&phy->dev->mt76)) + eht_cap_elem->phy_cap_info[2] |=3D + u8_encode_bits(sts - 1, + IEEE80211_EHT_PHY_CAP2_SOUNDING_DIM_320MHZ_MASK); + eht_cap_elem->phy_cap_info[3] =3D IEEE80211_EHT_PHY_CAP3_NG_16_SU_FEEDBACK | IEEE80211_EHT_PHY_CAP3_NG_16_MU_FEEDBACK | @@ -217,7 +231,8 @@ mt7925_init_eht_caps(struct mt792x_phy *phy, enum nl802= 11_band band, u8_encode_bits(u8_get_bits(0x11, GENMASK(1, 0)), IEEE80211_EHT_PHY_CAP5_MAX_NUM_SUPP_EHT_LTF_MASK); =20 - val =3D width =3D=3D NL80211_CHAN_WIDTH_160 ? 0x7 : + val =3D width =3D=3D NL80211_CHAN_WIDTH_320 ? 0xf : + width =3D=3D NL80211_CHAN_WIDTH_160 ? 0x7 : width =3D=3D NL80211_CHAN_WIDTH_80 ? 0x3 : 0x1; eht_cap_elem->phy_cap_info[6] =3D u8_encode_bits(u8_get_bits(0x11, GENMASK(4, 2)), @@ -230,6 +245,11 @@ mt7925_init_eht_caps(struct mt792x_phy *phy, enum nl80= 211_band band, IEEE80211_EHT_PHY_CAP7_MU_BEAMFORMER_80MHZ | IEEE80211_EHT_PHY_CAP7_MU_BEAMFORMER_160MHZ; =20 + if (band =3D=3D NL80211_BAND_6GHZ && is_mt7927(&phy->dev->mt76)) + eht_cap_elem->phy_cap_info[7] |=3D + IEEE80211_EHT_PHY_CAP7_NON_OFDMA_UL_MU_MIMO_320MHZ | + IEEE80211_EHT_PHY_CAP7_MU_BEAMFORMER_320MHZ; + val =3D u8_encode_bits(nss, IEEE80211_EHT_MCS_NSS_RX) | u8_encode_bits(nss, IEEE80211_EHT_MCS_NSS_TX); =20 @@ -239,6 +259,12 @@ mt7925_init_eht_caps(struct mt792x_phy *phy, enum nl80= 211_band band, eht_nss->bw._160.rx_tx_mcs9_max_nss =3D val; eht_nss->bw._160.rx_tx_mcs11_max_nss =3D val; eht_nss->bw._160.rx_tx_mcs13_max_nss =3D val; + + if (band =3D=3D NL80211_BAND_6GHZ && is_mt7927(&phy->dev->mt76)) { + eht_nss->bw._320.rx_tx_mcs9_max_nss =3D val; + eht_nss->bw._320.rx_tx_mcs11_max_nss =3D val; + eht_nss->bw._320.rx_tx_mcs13_max_nss =3D val; + } } =20 int mt7925_init_mlo_caps(struct mt792x_phy *phy) --=20 2.53.0