public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Louis Kotze <loukot@gmail.com>
To: Ping-Ke Shih <pkshih@realtek.com>
Cc: linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org,
	Louis Kotze <loukot@gmail.com>
Subject: [PATCH 1/4] wifi: rtw89: advertise EML Capabilities and Restricted TWT for 8922a
Date: Mon,  4 May 2026 06:48:14 +0200	[thread overview]
Message-ID: <4da8b66602471a76c043c0066ee6ebb3aa2bc696.1777832019.git.loukot@gmail.com> (raw)
In-Reply-To: <cover.1777832019.git.loukot@gmail.com>

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 = 0 and
mld_capa_and_ops = 0 in the Station iftype-ext-cap, which prevents the
AP from negotiating EMLSR mode with this STA — multi-link association
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 (= MAX_SIMUL_LINKS field 0 = "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 = 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=2 (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=129706 [WFA cert WFA129313]
Signed-off-by: Louis Kotze <loukot@gmail.com>
---
 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/wireless/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_iftypes_ext_capa[] = {
 		.extended_capabilities_mask = rtw89_ext_capa_sta,
 		.extended_capabilities_len = sizeof(rtw89_ext_capa_sta),
 		/* relevant only if EHT is supported */
-		.eml_capabilities = 0,
+		.eml_capabilities =
+			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 = 0,
 	},
 };
@@ -5557,7 +5560,8 @@ static void rtw89_init_eht_cap(struct rtw89_dev *rtwdev,
 
 	eht_cap_elem->mac_cap_info[0] =
 		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] = 0;
 
 	eht_cap_elem->phy_cap_info[0] =
-- 
2.54.0


  reply	other threads:[~2026-05-04  4:48 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-04  4:48 [PATCH 0/4] wifi: rtw89: advertise WFA-certified EHT capabilities for 8922a Louis Kotze
2026-05-04  4:48 ` Louis Kotze [this message]
2026-05-04  4:48 ` [PATCH 2/4] wifi: rtw89: advertise Multi-RU OFDMA receive for 8922a per WFA cert Louis Kotze
2026-05-04  4:48 ` [PATCH 3/4] wifi: rtw89: advertise MLD TID-to-link mapping and link reconfiguration Louis Kotze
2026-05-04  4:48 ` [PATCH 4/4] wifi: rtw89: advertise EHT OM Control for 8922a per WFA cert Louis Kotze
2026-05-06  9:12 ` [PATCH 0/4] wifi: rtw89: advertise WFA-certified EHT capabilities for 8922a Ping-Ke Shih

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4da8b66602471a76c043c0066ee6ebb3aa2bc696.1777832019.git.loukot@gmail.com \
    --to=loukot@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=pkshih@realtek.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox