From nobody Sun Jun 14 03:53:12 2026 Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EDC3124DCF6 for ; Mon, 4 May 2026 04:48:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777870108; cv=none; b=eWElVdeini/3+WKxl/DjItw9OlUGAYbDaLJejxPtk/KCXv146lI7tDEs09msn8hcgry2oNkvgoE2WtfS816J9/LmJ3bwAy2wF+qtrLyk6ZlpNq32l/EGL7Z7i/zCQzeACRe2iIrnzVcXji7qKNrfSTdEbJMB+RANdB+/z6/f378= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777870108; c=relaxed/simple; bh=xqkSirLZqyNtcti7euJFTit/ZGv+eCnKNp7Q8uuaLKM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Bh9Qr8UFZpC04EkMKXbkMTJx8lHYFGu7xxGA2P3L6QYTXdMDI1Ogq9+/Xoar+AVu/2NklLu592phcFLLpovKjnRd6EcV2NEWSIPSKzrFAcSSnx6WEc8A9HOX1b5uvsyUq+YkDs4lMBb5hI+dBPTah0cf2TEzGC+e2At01cscCYg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=pH0F3FaW; arc=none smtp.client-ip=209.85.128.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="pH0F3FaW" Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-488e1a8ac40so34408755e9.2 for ; Sun, 03 May 2026 21:48:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777870105; x=1778474905; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=AV1IbUfw7RgigkpPNoxjPUh81DhbbqeKlGyNH4H9r2s=; b=pH0F3FaW+IXVZQI3GKXSeC4llDCRvYi1E39WPY9e0WEsZCyD72I45geF0Hg7dHidkM h24KmVKQOeU16ml3LMPIvXQHDoIVTmbDF9PLqudKYCvQ+SkPWwrMzrw0gItxT2JSneOm W5SVsjsUKQ4HfJj/K+qog7XR6xdQ7VhW0DpIZcpKmzQFooloKbFOOCCG2XB7MDWU41fJ 8HMwyO5mmvaLRNNfRC1YL5nh3kh3pbuOmQMirwL8hTBJ8xjf2N9mZGTVDjGPQ8e5rTbb DDLwWSZmt1DDH/fEBkoNpyIExUIYgXuYTlpAS2SSKq4pTsYPkUzJD7bvAmwyrpzL6Ky2 /+6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777870105; x=1778474905; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=AV1IbUfw7RgigkpPNoxjPUh81DhbbqeKlGyNH4H9r2s=; b=jm+OtwNyN87ysnhSEEa+gkDxBLLVf+IWgtoH/vyoU3KrPAYMjydtI2KfRUOnp0DFXC D1ZskufXukR42Ow0jB1N7CWsKgYPBLMYQSgx+Pdw1kJLPt092nmQqFW/mjo5QI6LavHL Ja31chWcw6vqmil1MddW27ah1Zn0Le4MTZK+UmDbUtyPjueIVR2hzB9oDeT1PQ6nOqvF eb9Qd5tCjpHUd37dEHom2nmytA1uSKXdvcRO0enwG2xWpQ6hJVW1fqiyqr+KEYNHDj0R kYqN+H59xcTNyNs+4XAra8mzzy0/QYyGb8y7YmY1RP3VSXWk9P+TS9sYnqcfA38+qYN5 ySEQ== X-Forwarded-Encrypted: i=1; AFNElJ/u1BxI2IdQS0aod8GJ7BBH8If1fWTIfz9QH/WtvvpFbCjjiLyZBCOa6l6vmjjLxudHR16OnuQkOgtPLOw=@vger.kernel.org X-Gm-Message-State: AOJu0Yxvi0dxW7ofMtv+qN/HwSmoRCO5S8n8chRstCSnVOjJoTiqcCm9 dxyjLKf5OFC2dCaGKx+dPcNYftCJRydX5tV+NlIQpwABBmvSGHjnbVCW X-Gm-Gg: AeBDieuVl5wVIzDYRTuCUen7skTAbdp/lRFRanZzJe94TDdKuK1ZrFNUK5Gr621+seG KQRh76XrAXfb56pkSDsshXuN2VAMU/lGu96pbs7+Gt0r8WBFt00Q/7axaLu7SEY/u6TBTl0He5T jvAJ9XwdlOc12GKlxcC/9nrDbBNWi+Cb0vu+svXizL827WhiYwcAMZR0cDIYZQEvyUOgc3W2Aji ETBd9CNDia7Qmweu7L+vymk4FYR5U8yyaIXi48d5uFY4F+N2l0LPd97mPvJ7ioG7XQzJIn3LVSo TrjyWG36cW7kqzu5vLQGneu6kY9opiEpv2fkVNBlvl6dEnsJbcnJxb9jI4keL6Oin2pVBM4fpv+ CZK6Vsvq2D5HtKHbOkra/MMiQWnzNQZwxWRpOtvnsKT2mEwF1hFRJuipa3AfZaFwjHNANdQWAWr sUVTMyo/h3HIDsEpe/pUOyzMNt7t63BpNtrXy+x4ABfflWohSSShOJRcUV9Q== X-Received: by 2002:a05:600c:8590:b0:485:7f02:afd5 with SMTP id 5b1f17b1804b1-48a98658a1dmr99553065e9.13.1777870105147; Sun, 03 May 2026 21:48:25 -0700 (PDT) Received: from localhost ([102.128.173.0]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48a8eb72a17sm248742425e9.6.2026.05.03.21.48.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 03 May 2026 21:48:24 -0700 (PDT) From: Louis Kotze To: Ping-Ke Shih Cc: linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, Louis Kotze Subject: [PATCH 1/4] wifi: rtw89: advertise EML Capabilities and Restricted TWT for 8922a Date: Mon, 4 May 2026 06:48:14 +0200 Message-ID: <4da8b66602471a76c043c0066ee6ebb3aa2bc696.1777832019.git.loukot@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: References: 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 Wi-Fi Alliance Certificate WFA129313 (RTL8922AE 802.11be and Bluetooth combo module, 2024-05-23, FW 6102.24.109.0) certifies EMLSR (Enhanced Multilink Single-Radio) and STR (Simultaneous Transmit and Receive) for this chip. The driver currently sets eml_capabilities =3D 0 and mld_capa_and_ops =3D 0 in the Station iftype-ext-cap, which prevents the AP from negotiating EMLSR mode with this STA =E2=80=94 multi-link associati= on either falls back to MLSR (single-link) or fails entirely. Populate eml_capabilities with IEEE80211_EML_CAP_EMLSR_SUPP plus EML padding delay (256 us, IEEE80211_EML_CAP_EML_PADDING_DELAY_256US since commit 5858f5e1588f ("wifi: Rename EMLSR delay constants and add EMLMR helpers and definitions")) and EMLSR transition delay (32 us) to match the EMLSR negotiation parameters Realtek's certified silicon supports. mld_capa_and_ops is left at 0 (=3D MAX_SIMUL_LINKS field 0 =3D "1 max simultaneous link"), consistent with the EMLSR-only operating mode the driver implements per enum rtw89_mlo_mode {MLSR, EMLSR} (no STR mode in the driver despite WFA-cert silicon support). Also add IEEE80211_EHT_MAC_CAP0_RESTRICTED_TWT to mac_cap_info[0]. The RTL8922A EHT MAC supports R-TWT for latency-sensitive scheduling; the cap bit was hard-zeroed alongside the other EHT mac/phy caps in rtw89_init_eht_cap(). Tested on RTL8922AU (USB variant, same MAC + RF as cert'd PCIe AE) against TP-Link Deco BE63 mesh: dual-link MLO assoc works (active_links =3D 0x4 confirms expected EMLSR mode, Link 2 / 6 GHz active), 60h+ stable association, 11/11 wifi-health-check probes pass, no kernel warnings or wpa_supplicant errors. Note on EMLMR (EML Cap bit 7, IEEE80211_EML_CAP_EMLMR_SUPPORT): not advertised. The WFA cert does NOT list EMLMR for this chip. RTL8922A has rf_path_num=3D2 (single 2T2R RF block shared across 2.4, 5, 6 GHz), and the driver has no EMLMR enum, firmware H2C path, or PHY register block. EMLSR is the architectural ceiling for this silicon. Link: https://api.cert.wi-fi.org/api/certificate/download/public?variantId= =3D129706 [WFA cert WFA129313] Signed-off-by: Louis Kotze --- drivers/net/wireless/realtek/rtw89/core.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw89/core.c b/drivers/net/wirele= ss/realtek/rtw89/core.c index 70feab97dccb..056639db1dfa 100644 --- a/drivers/net/wireless/realtek/rtw89/core.c +++ b/drivers/net/wireless/realtek/rtw89/core.c @@ -217,7 +217,10 @@ static const struct wiphy_iftype_ext_capab rtw89_iftyp= es_ext_capa[] =3D { .extended_capabilities_mask =3D rtw89_ext_capa_sta, .extended_capabilities_len =3D sizeof(rtw89_ext_capa_sta), /* relevant only if EHT is supported */ - .eml_capabilities =3D 0, + .eml_capabilities =3D + IEEE80211_EML_CAP_EMLSR_SUPP | + (IEEE80211_EML_CAP_EML_PADDING_DELAY_256US << 1) | + (IEEE80211_EML_CAP_EMLSR_TRANSITION_DELAY_32US << 4), .mld_capa_and_ops =3D 0, }, }; @@ -5557,7 +5560,8 @@ static void rtw89_init_eht_cap(struct rtw89_dev *rtwd= ev, =20 eht_cap_elem->mac_cap_info[0] =3D u8_encode_bits(chip->max_eht_mpdu_cap, - IEEE80211_EHT_MAC_CAP0_MAX_MPDU_LEN_MASK); + IEEE80211_EHT_MAC_CAP0_MAX_MPDU_LEN_MASK) | + IEEE80211_EHT_MAC_CAP0_RESTRICTED_TWT; eht_cap_elem->mac_cap_info[1] =3D 0; =20 eht_cap_elem->phy_cap_info[0] =3D --=20 2.54.0 From nobody Sun Jun 14 03:53:12 2026 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A7CCD1DED63 for ; Mon, 4 May 2026 04:48:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777870112; cv=none; b=BgevziIAsYh5QLx54S0vF4RgBdcnnbDexbqesXR4saZTLalsTeFzFRdDoNdZhJ8crvDuQPuWc3PfyWG4P8uQsuk5+fy3+HBcyUXH+WKDT1jtb7EKXEVBlwTiEZGdZ62i3yWWAuVoTEw6un8c4Ni/h9jmAqb4G0h8nNkgf0DJBow= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777870112; c=relaxed/simple; bh=Fw3kNL7Ljp8t5qwpra4MbVRF0/mLJcHTu2HsuGtN4L8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tFTkaFIkh/CK6nSOHJw/GObkGK+CJwS7VpOd6y9dNly68UBilrHe7tpfKos9fcs8RKnt6YSlb0HCi633WJLm+pEH1CTM0O8hJiXe1TNhy5lOE+5aUUvH4rcvomimMa7mv0WvvF2nfpjZ9b8jiACQv/UQhhYcW+wCCXqstpNIAwE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=o9N0K28L; arc=none smtp.client-ip=209.85.128.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="o9N0K28L" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-4891d7164ddso17702525e9.3 for ; Sun, 03 May 2026 21:48:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777870109; x=1778474909; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=egca39AIszzEyh+/4AOU9az5GVxYBh/JNz33o5XWs4o=; b=o9N0K28LmONKuvLpz1ifwkbYrM+lxd+kW2mWDho4uOCSiDe0FldVMaDKHuFnrl72as P9RW8enNeGIgQI8x0dmSAmHvBgguKx9XWmbmDQIryTCh7zRYTYN4sQYs0JKdiqrCkWNc me7oMqluJsy+EJUXqe0psi5ombiCWwoKP5wv1JlZUixGDaTyyPpbITMWgNZXdxgZSpN/ 0VB7yyL5lcKQd/U/uV6F92mtbTST3Yj840Q2h7VhDwBYIE2gZnrvjszJ4Qx+IQ8SfbFm +n5Gqn6xOlZ+PDAOAR8qphFnYVEgLqoExgwgi7m7bp7Q3Ny/0srTKd9L8KNQrn7odRuY Oq9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777870109; x=1778474909; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=egca39AIszzEyh+/4AOU9az5GVxYBh/JNz33o5XWs4o=; b=kPK9EfTU7iwFEpKFGccO4Ixz9ZBt5rKBbeLsldz9xsVG8FXJqv3Eb2IhsRTpU3/N8p VFtArqRF/M/Qyxsi2JRKugI9D7Y68P7v40JnVCvewbdbViLDGjSP6rrvB/cRXk9K0bJm Ctj77O2lMDq2q7bNQNCiOUwWLmGh/iayUoD79OR8zfIV33Iv9kMU7btP2UOfV9HID0TH Na7SH9BNMoTt8Nc3k+2NtytKV152kYKuBTt/7UBjNx2qFaV+vTEDz57YSY7/FBe9SWps kp7U9+S1O4rEmOqvNtA5VLsybBVY4h/OBy1v6vyWiq6iPrhD08w6qERjqyvnLAODY2kF zQ1g== X-Forwarded-Encrypted: i=1; AFNElJ+mpK4VtAxxFS3CZErQJDJ8mEVhV0R0XqWrS1MsY1U+9Hgp79jb++uCjVoXEtBGFP0R7JPx9Iy01OVQVzY=@vger.kernel.org X-Gm-Message-State: AOJu0YwhBJ+HDNnr1cB8spg1d9fHPFCpusN6VK1p0mnACkuFME9X1VY+ S1x7/uRPINl8FEO6OHElKHcSwFaqyiHaSkslKhyyxnYzvPk5s1RCI0w8 X-Gm-Gg: AeBDietCv7JV9hA7HolFw0+mQry49DEP9GPTVS5vkohlSc39rCu+fbGI/1G10Bria3T pU3XY7acZbJIp8wVnXX4odi3lASmA/kaZGSI5v6nYtLz9HQI4POQJhUR7o4TFYjx/6L6DZ3/BDp f1hZUIEJyhSTQmYj9P+R263wzQzgquAhBjM1RvJKiZNiCagWvbqegybdFJpRctZUhGKFECd4LF2 g5c5qaRU7OUyajcfLev5LmwaHpoQl2ji8/yw2Hlz0HjF0EtvPZBzzhtsJyHgPECBL6L3SijEczM EENkvL3oVOscpldtQNJBpx2eOdiXn3MNOinNOjVXc9Apcs8JrGj8qDAGQ9HufnVi8aFTwlPSooS vpSWlad+m6OAlkFLktXvZW7MFRJMy9U+B1619FO4qqf21kSmyrNKqlPEx4aoRbVi1e5qnzj9Tm9 rdoA5w8SeNurWikLJNr7Rp4NwUPjFxRx/woTSj8f7jwvAS+hvrZ0u76Z0how== X-Received: by 2002:a05:600c:4f47:b0:488:b8bc:6a32 with SMTP id 5b1f17b1804b1-48a988be27dmr148921755e9.23.1777870109022; Sun, 03 May 2026 21:48:29 -0700 (PDT) Received: from localhost ([102.128.173.0]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48a8eb75fe8sm246100565e9.8.2026.05.03.21.48.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 03 May 2026 21:48:28 -0700 (PDT) From: Louis Kotze To: Ping-Ke Shih Cc: linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, Louis Kotze Subject: [PATCH 2/4] wifi: rtw89: advertise Multi-RU OFDMA receive for 8922a per WFA cert Date: Mon, 4 May 2026 06:48:15 +0200 Message-ID: X-Mailer: git-send-email 2.54.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Wi-Fi Alliance Certificate WFA129313 (RTL8922AE, 2024-05-23, firmware 6102.24.109.0) attests "Multi-RU" as a certified Wi-Fi 7 feature for this chip. The driver currently hard-zeroes the corresponding receive cap bit in rtw89_init_eht_cap(), which prevents the AP from scheduling Multi-RU OFDMA TBF (Trigger-Based Frame) payloads with sub-242-tone RU allocations to this STA. Set IEEE80211_EHT_PHY_CAP5_RX_LESS_242_TONE_RU_SUPP in phy_cap_info[5] to match the certified silicon behaviour. The Tx-side bit (CAP5_TX_LESS_242_TONE_RU_SUPP) remains zero since this driver is STA-mode only and Tx of Multi-RU TBFs is an AP-mode capability. Tested on RTL8922AU (USB variant, same MAC + RF as cert'd PCIe AE) against TP-Link Deco BE63 mesh; STA associates and remains stable for 24h+ with no regression in single-RU traffic patterns or in EMLSR multi-link assoc behavior introduced by the previous EML+R-TWT patch. Link: https://api.cert.wi-fi.org/api/certificate/download/public?variantId= =3D129706 [WFA cert WFA129313] Signed-off-by: Louis Kotze --- drivers/net/wireless/realtek/rtw89/core.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/realtek/rtw89/core.c b/drivers/net/wirele= ss/realtek/rtw89/core.c index 056639db1dfa..986deb2c1384 100644 --- a/drivers/net/wireless/realtek/rtw89/core.c +++ b/drivers/net/wireless/realtek/rtw89/core.c @@ -5598,7 +5598,8 @@ static void rtw89_init_eht_cap(struct rtw89_dev *rtwd= ev, =20 eht_cap_elem->phy_cap_info[5] =3D u8_encode_bits(IEEE80211_EHT_PHY_CAP5_COMMON_NOMINAL_PKT_PAD_20US, - IEEE80211_EHT_PHY_CAP5_COMMON_NOMINAL_PKT_PAD_MASK); + IEEE80211_EHT_PHY_CAP5_COMMON_NOMINAL_PKT_PAD_MASK) | + IEEE80211_EHT_PHY_CAP5_RX_LESS_242_TONE_RU_SUPP; =20 eht_cap_elem->phy_cap_info[6] =3D 0; eht_cap_elem->phy_cap_info[7] =3D 0; --=20 2.54.0 From nobody Sun Jun 14 03:53:12 2026 Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E70E223EAAF for ; Mon, 4 May 2026 04:48:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777870116; cv=none; b=H5MGnTWJL8/vkSiiqhlWRnQh97y4xGAhvasOqbHjik5Qx2sGRIqgetfc7lXsBzpbURqsarQt6ElC7O0nNgCmiMdO5gU2XDW1LR4gJflQUF6EsfDreEuXMbZ7x3SkrM277C5aKPJhmFiH3k2e9O6dIB4+L59EDwGbXDqDrgJw50s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777870116; c=relaxed/simple; bh=UsN+5rdpiQklvNAPMN4WRO0p4xXhnZmnSuijx3xmqNY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=DOB6WI8O9TH2meTiSy6zr18lckzuopI0mesj0dNgQTkVqxdfllU2Tzs7poHNioW+vCzDkpr3FzgA37GhyqDNwtt8fzTZTgA7k1aCwTPHan2pLsWfyBsjlFu1UphtucV2HeiYQ9vl28W97gS3Vp3sxmj9GyOwVQxQOW6GtAvnWQI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=hWApRrRq; arc=none smtp.client-ip=209.85.221.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="hWApRrRq" Received: by mail-wr1-f53.google.com with SMTP id ffacd0b85a97d-43d76dd4ee8so2872393f8f.2 for ; Sun, 03 May 2026 21:48:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777870113; x=1778474913; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=cHjB96/OxUK+voZiclEhSlCim+vwAL/oAMBbY7fJVPQ=; b=hWApRrRq3sTXBWFDST/47RLWS7Or5trEHMTNNaaKhN2IfV0X42dZlZKTJXJbJQJnjy Qa2sVO3nn+LA/FHG9xYuHd/OjOVxMZ/6dNKwFrzBXo8Fxh+2UV4eQmg4o/kW7R1b1wa6 CN9GcN2PTGrC4hdIube5Cd7Y6fhGkqPHK2FjcJd9j8d4V/s7Zeu4oyizofeWMFerCitH 03w1yN1izW8umhniKvf3pZTXeBpOChf+fiGdT8ToWk53A/++HqDxSkWps95J9hmgYV+3 uUYYsZdQ0X2l3UbgQUKJDJGbq+OpVzoe5SBtmi27VAkKrsrXU2EnUCHU0Al+3kUN3olO hSYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777870113; x=1778474913; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=cHjB96/OxUK+voZiclEhSlCim+vwAL/oAMBbY7fJVPQ=; b=gwWXourXH6sTbRxOYTkGwr0aDLU3y3iRp76CvpmK5jQCWQexLk1VMGMtaCBGo6OJE8 vbKY9TkEX/Mx2/tw+lZOdqKArlRjC+XK3OB69UWoBhrDXAqwYPZ7+wQbUwADNNx9A9rY yrM6bejznyHZL/0pyKBlgYpwThCs9yY8t/94Kfsb/1OQ2xxTlm6UHdEqyx/fZW94ZxEU 38Z+nbtnYKVTb09KduPwNh+PDZtPp8o8fzxlhvrfV5B7RWSZTNv4+uz7rgBsLobdZmbJ 0NQ2hZxDcl7StM/JJlMGKgie4bTfG0Opp617lbiyP8Qk3Ssux4W9pvlKzDGYaqOdLXIu HpDA== X-Forwarded-Encrypted: i=1; AFNElJ/t4n+7Ys3+JDDVjgXN1vutDpBED0VFdrw4IrzTBbGSWJnDvKBw6whwrMautCp6shtL7FcoyDf6ZkDkuYY=@vger.kernel.org X-Gm-Message-State: AOJu0YxDy92+mrP2EyC7II7QK4fqw/9FkbJi0PnzRHX+EbvWoHi6WSSN FLcogNexIAMJ95Y7fBZT+DxGN68ozkvTaH31B+nfmnamOyIlZ/o/PfKN X-Gm-Gg: AeBDiet9ozmPaEQLTlxFjZWYamf4Lf6nxdLfJZirKt7cZMYBRSVYKDFNkoVbZ3jkz1u 3yDKDrsvC5OOROlct4Lnue3TKuOR+ZMrHYWGeFn/3JhUPo4DHicPwmWXe1Le3QxXnJLx6EFH58S qdYlNSzWtsM/nVSB6pKYVA9xU3GWDRfaqcYEDDkThM1OML8F3EQciTkNX0xKvBU9rhxH6vZQjyQ XYpjxCRoofTuOi21Z3rwVQfhciV4LApZAm9XzzMLWFjY9Mu3zetTd3NoUaqBtEdvs9wNJsxVe/S Z22UmakDWZDntk7/oStav3ZKmNZ6vGzmg67wS0QBt5Kx/y/63tEzei1U3vYGq+UtpsPbWeuiswa uw+nao570MjBnk0WZKS3wkymlRmxnMo6A9AdS/4iZsq36BHTDGLXYPta0NOdZIW2E6iA3VxFGCj nmEFMQo+2kTKulyJ1oX37LaMD+NgTx+DuaBczbQV9x/5N3wYtMHEA+CwgIsQ== X-Received: by 2002:a05:6000:2311:b0:449:fb9e:4b4e with SMTP id ffacd0b85a97d-44bb4722fcbmr12510408f8f.15.1777870113214; Sun, 03 May 2026 21:48:33 -0700 (PDT) Received: from localhost ([102.128.173.0]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-44a98b768fdsm22144032f8f.33.2026.05.03.21.48.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 03 May 2026 21:48:32 -0700 (PDT) From: Louis Kotze To: Ping-Ke Shih Cc: linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, Louis Kotze Subject: [PATCH 3/4] wifi: rtw89: advertise MLD TID-to-link mapping and link reconfiguration Date: Mon, 4 May 2026 06:48:16 +0200 Message-ID: X-Mailer: git-send-email 2.54.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Wi-Fi Alliance Certificate WFA129313 (RTL8922AE 802.11be and Bluetooth combo module, 2024-05-23, FW 6102.24.109.0) certifies both "Advertised TID-to-link mapping" and "Multi-link reconfiguration (AP removal/restart)" as Wi-Fi 7 features for this chip. The driver currently sets mld_capa_and_ops =3D 0, so the STA negotiates neither capability with the AP. Use FIELD_PREP_CONST() (already used elsewhere in this driver, see usb.c:784-787) to set IEEE80211_MLD_CAP_OP_TID_TO_LINK_MAP_NEG_SUPP_SAME in the TID-to-link-map-neg-supp field, plus IEEE80211_MLD_CAP_OP_LINK_RECONF_SUPPORT. This matches the value used by iwlwifi for its Wi-Fi 7 STA mode (see drivers/net/wireless/intel/iwlwifi/ mld/mac80211.c IWL_MLD_CAPA_OPS macro and mvm/mac80211.c IWL_MVM_MLD_CAPA_OPS macro), which is the established in-tree precedent for this exact bit pattern on a Wi-Fi 7 STA. The IEEE80211_MLD_CAP_OP_MAX_SIMUL_LINKS field is left at 0 (=3D 1 max simultaneous link, matching the EMLSR-only operating mode the driver implements per enum rtw89_mlo_mode {MLSR, EMLSR}). These two capabilities are orthogonal to MLO operating mode (EMLSR remains the negotiated mode per the previous patch in this series); they let the AP perform online TID-to-link reassignments and remove or restart links without a full assoc cycle on the STA side. Tested on RTL8922AU (USB variant, same MAC + RF as cert'd PCIe AE) against TP-Link Deco BE63 mesh; assoc remains stable, no regression in EMLSR multi-link assoc behavior, all 11 wifi-health-check probes pass. Link: https://api.cert.wi-fi.org/api/certificate/download/public?variantId= =3D129706 [WFA cert WFA129313] Signed-off-by: Louis Kotze --- drivers/net/wireless/realtek/rtw89/core.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/realtek/rtw89/core.c b/drivers/net/wirele= ss/realtek/rtw89/core.c index 986deb2c1384..aedb2a284cd4 100644 --- a/drivers/net/wireless/realtek/rtw89/core.c +++ b/drivers/net/wireless/realtek/rtw89/core.c @@ -221,7 +221,10 @@ static const struct wiphy_iftype_ext_capab rtw89_iftyp= es_ext_capa[] =3D { IEEE80211_EML_CAP_EMLSR_SUPP | (IEEE80211_EML_CAP_EML_PADDING_DELAY_256US << 1) | (IEEE80211_EML_CAP_EMLSR_TRANSITION_DELAY_32US << 4), - .mld_capa_and_ops =3D 0, + .mld_capa_and_ops =3D + FIELD_PREP_CONST(IEEE80211_MLD_CAP_OP_TID_TO_LINK_MAP_NEG_SUPP, + IEEE80211_MLD_CAP_OP_TID_TO_LINK_MAP_NEG_SUPP_SAME) | + IEEE80211_MLD_CAP_OP_LINK_RECONF_SUPPORT, }, }; =20 --=20 2.54.0 From nobody Sun Jun 14 03:53:12 2026 Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 924272459E1 for ; Mon, 4 May 2026 04:48:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777870120; cv=none; b=MIUK4jrjqXOWXDlXSZN52kZ+GOMjRtJPIP1GMkNEBJ1RH3rMK1xvSPgO9lsE5bhyMkvepgYnkGA6AxYVQMTMl7JCYbP1pK/ltp0KYl2RNAKngrjK8YB9fkypFAnsS8j6zavD1DbR1+uUpreX6aCWpz1LntOuF2qkdLsErY8RQt8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777870120; c=relaxed/simple; bh=cC2G2WadoKLftM63rSUYpIgTYV8Cc4jika7rEDy+zvU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mP++XQCzC2AT0G0jUnEFGgjLWaYffLRl/fusWst4RJpqjDaXniPxPkjGsXn9aq2R+9QNvUkRyB0OGprHJHhlFSrtfAVn/TkiK1KVc897BmLRoOKepVxPmUPBGkAOEKMtqv88ysKGlk5dKHMLZoR0bwe4pM22kD0cbhJZHw9Mt50= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=OTjJR0y6; arc=none smtp.client-ip=209.85.221.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="OTjJR0y6" Received: by mail-wr1-f49.google.com with SMTP id ffacd0b85a97d-44da2de25f3so341015f8f.1 for ; Sun, 03 May 2026 21:48:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777870117; x=1778474917; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6xb3HRjw8A8WP7QvkL+DeiXvsiLNa7Kyc0uvy70a/7k=; b=OTjJR0y6KTrFB5Ji07WP2MZjEhHeodkg99eZKd6SxKlY9mr2N4sXU1kJyNRX8hbhDD SXgdcKZNqVMJO1SYbmk0jmDg9BI12wo7LdZKyx+qZslQC9IdLt4AiYDpb44RWkyRg6wN xJ7pZwZChCMXOeE7rdvBh057TGtGQ054QP0E+sK/VaVPSg+6Si7UI9G+tVvUE5iNOQ47 hJZYayB6IyS3f8sNhj7rlJtJqClNpg+D4vtgVZjCrXESeGkOsiXjm/r0LO1m2G0V1zTc uAOwb26PL0xtm+tg3zLyIgF9HPNnqFxmV2IHh4hLeVTqcq2I+cs4DZHT639byf/mr1FR NgeA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777870117; x=1778474917; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=6xb3HRjw8A8WP7QvkL+DeiXvsiLNa7Kyc0uvy70a/7k=; b=RQJMcXJylyx5CJIeB9htL1ytBwATW6a8OTJ0/NFUv/OVvnKIqITE+vP14IeWProSwi qe82q8/DP7eWPemjCu6jicK7Ez+KnK4GFykNr/tYGMCmS0W4MpsUWxPELYiDSUxETC1z AYZvGMf8pB+n9+dz2qKr2z0yXyE+W3/1LMcz+m820DqAlMfNA0B9RPqYoJ8fcdT+MyV3 +jOe1IE727FgoTb1caEt/FIEErVG2b32ieY1gSkddf4KHGvxZ5b4SsPJWU5xHcQX2gUS AJEyZ5hTwrsQOu3WJBzOn/A4NRQKzvY058ZCRzWMiWwJxxE+dOZpcUKXo+nLUYSEUK4o pgdQ== X-Forwarded-Encrypted: i=1; AFNElJ8csqfKRRSr1SIm4Ag0t/1oEISWENYImpCx3o6dQhHJ9ccXGMbTz7EhyTY9MpC71oe0338HSRsnt6PrraU=@vger.kernel.org X-Gm-Message-State: AOJu0YxOBIf6nFiqrz/LarKwtPu614mZugKcfwZV4FUlNlN+rroMeZQa CnokU0qzhR1i84s2EnH6MIRZiA2PCq5/Hz48alNI5vfBabTe/b2LIxRJ X-Gm-Gg: AeBDieu78czPBeeQu2606DnfF7BjYo59/JaRgSl6m0pWKCMfbU1QtPlpJ0rVi6AWUH6 P2Dy/PX5Am/g2FlTzR3B2GubY9ZdtJdRzaDVFeuXv9Pgci4xqaUqNOCqVX153Df4bqwU81HekfI JAXzsUHlnS0dy2XrzmeNpZQ4SpQVvbngVoZBH4xX29O5pNhuZeTmrAqpPgTXz3UbydV8mHOCaeK dBPUvfmrmjp2bEMHCeY+VVolCp4KfeUpxcH/iEULVzBsBU4j+nfB4jJAFRFSbihhrCVV0njRyT1 ajL6N5EDjuJRMvkPdi3qr1lCwEb98mZN+C0GFhtCmIcKaXosvUZ+VyroMubY5X0ihUfvVnDqMfx cEyjRefJmdZiyskv2yJqa9sN5qBWGxb5THEBYhFGv/nC9hyH8HIruvBtP3Ooy+mrrC6bLicVqHR Lvn+gI9yhoUWmSgJAwQIutEJl/S6Yud7abQFa/DtPmL6tyD1Q+jy2mZToR3w== X-Received: by 2002:a5d:5f55:0:b0:44a:1d55:1e20 with SMTP id ffacd0b85a97d-44bb2d37c7cmr13762699f8f.5.1777870116895; Sun, 03 May 2026 21:48:36 -0700 (PDT) Received: from localhost ([102.128.173.0]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-44a8bf18c9bsm22650809f8f.0.2026.05.03.21.48.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 03 May 2026 21:48:36 -0700 (PDT) From: Louis Kotze To: Ping-Ke Shih Cc: linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, Louis Kotze Subject: [PATCH 4/4] wifi: rtw89: advertise EHT OM Control for 8922a per WFA cert Date: Mon, 4 May 2026 06:48:17 +0200 Message-ID: X-Mailer: git-send-email 2.54.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Wi-Fi Alliance Certificate WFA129313 (RTL8922AE, 2024-05-23, firmware 6102.24.109.0) certifies "Operating mode indication" as a Wi-Fi 7 feature for this chip. The driver currently sets only MAX_MPDU_LEN + RESTRICTED_TWT in mac_cap_info[0], leaving EHT OM Control unset. Set IEEE80211_EHT_MAC_CAP0_OM_CONTROL in mac_cap_info[0]. EHT OM Control extends the HE OMI control mechanism (already advertised at the HE layer) to EHT-specific operating-mode notifications. mt76 (mt7996, mt7925) and iwlwifi mvm + mld already set this single bit for their Wi-Fi 7 STAs; hwsim sets it in test code. Tested on RTL8922AU against TP-Link Deco BE63; assoc + EMLSR multi- link state remain stable. Link: https://api.cert.wi-fi.org/api/certificate/download/public?variantId= =3D129706 [WFA cert WFA129313] Signed-off-by: Louis Kotze --- drivers/net/wireless/realtek/rtw89/core.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/realtek/rtw89/core.c b/drivers/net/wirele= ss/realtek/rtw89/core.c index aedb2a284cd4..229c9f8ea65e 100644 --- a/drivers/net/wireless/realtek/rtw89/core.c +++ b/drivers/net/wireless/realtek/rtw89/core.c @@ -5564,7 +5564,8 @@ static void rtw89_init_eht_cap(struct rtw89_dev *rtwd= ev, eht_cap_elem->mac_cap_info[0] =3D u8_encode_bits(chip->max_eht_mpdu_cap, IEEE80211_EHT_MAC_CAP0_MAX_MPDU_LEN_MASK) | - IEEE80211_EHT_MAC_CAP0_RESTRICTED_TWT; + IEEE80211_EHT_MAC_CAP0_RESTRICTED_TWT | + IEEE80211_EHT_MAC_CAP0_OM_CONTROL; eht_cap_elem->mac_cap_info[1] =3D 0; =20 eht_cap_elem->phy_cap_info[0] =3D --=20 2.54.0