summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPing-Ke Shih <pkshih@realtek.com>2026-05-06 21:09:58 +0800
committerPing-Ke Shih <pkshih@realtek.com>2026-05-13 11:42:01 +0800
commit48402f736f93e6377ee47984d9dd2aa1b6815604 (patch)
treed232a912ad0a46dd333d5cbfd1847cbcb34c2ebd
parent884495c39de1a02f42bd40051b921e2311d6ac91 (diff)
wifi: rtw89: phy: skip trailing 8-byte zeros of PHY status IE for RTL8922D
Hardware reports a list of PHY status IE. In monitor mode, IE-09 of PHY status is enabled, and the report contains trailing 8-byte zeros, causing failed to parse and drop all IE information. The 8 zeros are recognize as IE type 0, but length of type 0 must be not 8 (reference to rtw89_phy_gen_def::physt_ie_len[0]). Check and skip them. Signed-off-by: Ping-Ke Shih <pkshih@realtek.com> Link: https://patch.msgid.link/20260506131000.1706298-13-pkshih@realtek.com
-rw-r--r--drivers/net/wireless/realtek/rtw89/core.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/net/wireless/realtek/rtw89/core.c b/drivers/net/wireless/realtek/rtw89/core.c
index 7e1182a49942..fddb0c822c28 100644
--- a/drivers/net/wireless/realtek/rtw89/core.c
+++ b/drivers/net/wireless/realtek/rtw89/core.c
@@ -2275,6 +2275,13 @@ static int rtw89_core_rx_parse_phy_sts(struct rtw89_dev *rtwdev,
while (pos < end) {
const struct rtw89_phy_sts_iehdr *iehdr = pos;
+ /*
+ * RTL8922D might reports 8 bytes zeros at end if IE09 presents.
+ * Check and ignore the zeros.
+ */
+ if (unlikely(phy_ppdu->ie09 && end - pos == 8 && iehdr->w0 == 0))
+ break;
+
ie_len = rtw89_core_get_phy_status_ie_len(rtwdev, iehdr);
pos += ie_len;
if (pos > end || ie_len == 0) {