You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
4.7 KiB
104 lines
4.7 KiB
1 year ago
|
From b84cb5bed1a6928c51852ed1600cf466c99025de Mon Sep 17 00:00:00 2001
|
||
|
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
||
|
Date: Wed, 24 May 2023 15:00:38 +0200
|
||
|
Subject: [PATCH 127/142] wifi: rtw89: fix parsing offset for MCC C2H
|
||
|
MIME-Version: 1.0
|
||
|
Content-Type: text/plain; charset=UTF-8
|
||
|
Content-Transfer-Encoding: 8bit
|
||
|
|
||
|
Bugzilla: https://bugzilla.redhat.com/2207499
|
||
|
|
||
|
commit 24d72944d79e6795ba4330c114de0387386bf3aa
|
||
|
Author: Zong-Zhe Yang <kevin_yang@realtek.com>
|
||
|
Date: Thu Jan 19 14:43:41 2023 +0800
|
||
|
|
||
|
wifi: rtw89: fix parsing offset for MCC C2H
|
||
|
|
||
|
A 8-byte offset is missed during parsing C2Hs (chip to host packets)
|
||
|
of MCC (multi-channel concurrent) series.
|
||
|
So, we fix it.
|
||
|
|
||
|
Fixes: ef9dff4cb491 ("wifi: rtw89: mac: process MCC related C2H")
|
||
|
Signed-off-by: Zong-Zhe Yang <kevin_yang@realtek.com>
|
||
|
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
|
||
|
Signed-off-by: Kalle Valo <kvalo@kernel.org>
|
||
|
Link: https://lore.kernel.org/r/20230119064342.65391-1-pkshih@realtek.com
|
||
|
|
||
|
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
||
|
---
|
||
|
drivers/net/wireless/realtek/rtw89/fw.h | 34 ++++++++++++++++-----------------
|
||
|
1 file changed, 17 insertions(+), 17 deletions(-)
|
||
|
|
||
|
diff --git a/drivers/net/wireless/realtek/rtw89/fw.h b/drivers/net/wireless/realtek/rtw89/fw.h
|
||
|
index 3ce59ac48f433..6cb578201b2a8 100644
|
||
|
--- a/drivers/net/wireless/realtek/rtw89/fw.h
|
||
|
+++ b/drivers/net/wireless/realtek/rtw89/fw.h
|
||
|
@@ -3219,16 +3219,16 @@ static inline struct rtw89_fw_c2h_attr *RTW89_SKB_C2H_CB(struct sk_buff *skb)
|
||
|
le32_get_bits(*((const __le32 *)(c2h) + 5), GENMASK(25, 24))
|
||
|
|
||
|
#define RTW89_GET_MAC_C2H_MCC_RCV_ACK_GROUP(c2h) \
|
||
|
- le32_get_bits(*((const __le32 *)(c2h)), GENMASK(1, 0))
|
||
|
+ le32_get_bits(*((const __le32 *)(c2h) + 2), GENMASK(1, 0))
|
||
|
#define RTW89_GET_MAC_C2H_MCC_RCV_ACK_H2C_FUNC(c2h) \
|
||
|
- le32_get_bits(*((const __le32 *)(c2h)), GENMASK(15, 8))
|
||
|
+ le32_get_bits(*((const __le32 *)(c2h) + 2), GENMASK(15, 8))
|
||
|
|
||
|
#define RTW89_GET_MAC_C2H_MCC_REQ_ACK_GROUP(c2h) \
|
||
|
- le32_get_bits(*((const __le32 *)(c2h)), GENMASK(1, 0))
|
||
|
+ le32_get_bits(*((const __le32 *)(c2h) + 2), GENMASK(1, 0))
|
||
|
#define RTW89_GET_MAC_C2H_MCC_REQ_ACK_H2C_RETURN(c2h) \
|
||
|
- le32_get_bits(*((const __le32 *)(c2h)), GENMASK(7, 2))
|
||
|
+ le32_get_bits(*((const __le32 *)(c2h) + 2), GENMASK(7, 2))
|
||
|
#define RTW89_GET_MAC_C2H_MCC_REQ_ACK_H2C_FUNC(c2h) \
|
||
|
- le32_get_bits(*((const __le32 *)(c2h)), GENMASK(15, 8))
|
||
|
+ le32_get_bits(*((const __le32 *)(c2h) + 2), GENMASK(15, 8))
|
||
|
|
||
|
struct rtw89_mac_mcc_tsf_rpt {
|
||
|
u32 macid_x;
|
||
|
@@ -3242,30 +3242,30 @@ struct rtw89_mac_mcc_tsf_rpt {
|
||
|
static_assert(sizeof(struct rtw89_mac_mcc_tsf_rpt) <= RTW89_COMPLETION_BUF_SIZE);
|
||
|
|
||
|
#define RTW89_GET_MAC_C2H_MCC_TSF_RPT_MACID_X(c2h) \
|
||
|
- le32_get_bits(*((const __le32 *)(c2h)), GENMASK(7, 0))
|
||
|
+ le32_get_bits(*((const __le32 *)(c2h) + 2), GENMASK(7, 0))
|
||
|
#define RTW89_GET_MAC_C2H_MCC_TSF_RPT_MACID_Y(c2h) \
|
||
|
- le32_get_bits(*((const __le32 *)(c2h)), GENMASK(15, 8))
|
||
|
+ le32_get_bits(*((const __le32 *)(c2h) + 2), GENMASK(15, 8))
|
||
|
#define RTW89_GET_MAC_C2H_MCC_TSF_RPT_GROUP(c2h) \
|
||
|
- le32_get_bits(*((const __le32 *)(c2h)), GENMASK(17, 16))
|
||
|
+ le32_get_bits(*((const __le32 *)(c2h) + 2), GENMASK(17, 16))
|
||
|
#define RTW89_GET_MAC_C2H_MCC_TSF_RPT_TSF_LOW_X(c2h) \
|
||
|
- le32_get_bits(*((const __le32 *)(c2h) + 1), GENMASK(31, 0))
|
||
|
+ le32_get_bits(*((const __le32 *)(c2h) + 3), GENMASK(31, 0))
|
||
|
#define RTW89_GET_MAC_C2H_MCC_TSF_RPT_TSF_HIGH_X(c2h) \
|
||
|
- le32_get_bits(*((const __le32 *)(c2h) + 2), GENMASK(31, 0))
|
||
|
+ le32_get_bits(*((const __le32 *)(c2h) + 4), GENMASK(31, 0))
|
||
|
#define RTW89_GET_MAC_C2H_MCC_TSF_RPT_TSF_LOW_Y(c2h) \
|
||
|
- le32_get_bits(*((const __le32 *)(c2h) + 3), GENMASK(31, 0))
|
||
|
+ le32_get_bits(*((const __le32 *)(c2h) + 5), GENMASK(31, 0))
|
||
|
#define RTW89_GET_MAC_C2H_MCC_TSF_RPT_TSF_HIGH_Y(c2h) \
|
||
|
- le32_get_bits(*((const __le32 *)(c2h) + 4), GENMASK(31, 0))
|
||
|
+ le32_get_bits(*((const __le32 *)(c2h) + 6), GENMASK(31, 0))
|
||
|
|
||
|
#define RTW89_GET_MAC_C2H_MCC_STATUS_RPT_STATUS(c2h) \
|
||
|
- le32_get_bits(*((const __le32 *)(c2h)), GENMASK(5, 0))
|
||
|
+ le32_get_bits(*((const __le32 *)(c2h) + 2), GENMASK(5, 0))
|
||
|
#define RTW89_GET_MAC_C2H_MCC_STATUS_RPT_GROUP(c2h) \
|
||
|
- le32_get_bits(*((const __le32 *)(c2h)), GENMASK(7, 6))
|
||
|
+ le32_get_bits(*((const __le32 *)(c2h) + 2), GENMASK(7, 6))
|
||
|
#define RTW89_GET_MAC_C2H_MCC_STATUS_RPT_MACID(c2h) \
|
||
|
- le32_get_bits(*((const __le32 *)(c2h)), GENMASK(15, 8))
|
||
|
+ le32_get_bits(*((const __le32 *)(c2h) + 2), GENMASK(15, 8))
|
||
|
#define RTW89_GET_MAC_C2H_MCC_STATUS_RPT_TSF_LOW(c2h) \
|
||
|
- le32_get_bits(*((const __le32 *)(c2h) + 1), GENMASK(31, 0))
|
||
|
+ le32_get_bits(*((const __le32 *)(c2h) + 3), GENMASK(31, 0))
|
||
|
#define RTW89_GET_MAC_C2H_MCC_STATUS_RPT_TSF_HIGH(c2h) \
|
||
|
- le32_get_bits(*((const __le32 *)(c2h) + 2), GENMASK(31, 0))
|
||
|
+ le32_get_bits(*((const __le32 *)(c2h) + 4), GENMASK(31, 0))
|
||
|
|
||
|
#define RTW89_FW_HDR_SIZE 32
|
||
|
#define RTW89_FW_SECTION_HDR_SIZE 16
|
||
|
--
|
||
|
2.13.6
|
||
|
|