wifi: rtw89: fix parsing offset for MCC C2H
Ping-Ke Shih
maintainerPATCH 1/2 wifi: rtw89: fix parsing offset for MCC C2H
From: Zong-Zhe Yang <[email protected]>
A 8-byte offset is missed during parsing C2Hs (chip to host packets) of MCC (multi-channel concurrent) series.
So, we fix it.
---
Hi Kalle,
Though this patch contains Fixes tag, we don't really run into these codes yet, so please take this to wireless-next.
Thank you
--- drivers/net/wireless/realtek/rtw89/fw.h | 34 ++++++++++++------------- 1 file changed, 17 insertions(+), 17 deletions(-)
drivers/net/wireless/realtek/rtw89/fw.h +17 -17
@@ -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
Signature · 1 line
2.25.1
Ping-Ke Shih
maintainerPATCH 2/2 wifi: rtw89: refine MCC C2H debug logs
From: Zong-Zhe Yang <[email protected]>
To debug channel concurrency more centrally, we add a new debug flag, RTW89_DBG_CHAN, for channel related things, especially channel concurrency. Then, we change MCC (multi-channel concurrency) C2H (chip to host packets) debug flag to it.
Besides, refine debug logs to show TSF in u64 directly.
--- drivers/net/wireless/realtek/rtw89/debug.h | 1 + drivers/net/wireless/realtek/rtw89/mac.c | 21 +++++++++++++-------- 2 files changed, 14 insertions(+), 8 deletions(-)
drivers/net/wireless/realtek/rtw89/debug.h +1 -0
@@ -28,6 +28,7 @@ enum rtw89_debug_mask {RTW89_DBG_STATE =BIT (17 ),RTW89_DBG_WOW =BIT (18 ),RTW89_DBG_UL_TB =BIT (19 ), +RTW89_DBG_CHAN =BIT (20 ), RTW89_DBG_UNEXP = BIT(31), };
drivers/net/wireless/realtek/rtw89/mac.c +13 -8
@@ -4263,12 +4263,12 @@ rtw89_mac_c2h_mcc_rcv_ack(struct rtw89_dev *rtwdev, struct sk_buff *c2h, u32 lencase H2C_FUNC_MCC_SET_DURATION :break ;default : -rtw89_debug (rtwdev,RTW89_DBG_FW , +rtw89_debug (rtwdev,RTW89_DBG_CHAN ,"invalid MCC C2H RCV ACK: func %d\n" , func);return ; } -rtw89_debug (rtwdev,RTW89_DBG_FW , +rtw89_debug (rtwdev,RTW89_DBG_CHAN ,"MCC C2H RCV ACK: group %d, func %d\n" , group, func); }
@@ -4296,12 +4296,12 @@ rtw89_mac_c2h_mcc_req_ack(struct rtw89_dev *rtwdev, struct sk_buff *c2h, u32 lencase H2C_FUNC_DEL_MCC_GROUP :case H2C_FUNC_RESET_MCC_GROUP :default : -rtw89_debug (rtwdev,RTW89_DBG_FW , +rtw89_debug (rtwdev,RTW89_DBG_CHAN ,"invalid MCC C2H REQ ACK: func %d\n" , func);return ; } -rtw89_debug (rtwdev,RTW89_DBG_FW , +rtw89_debug (rtwdev,RTW89_DBG_CHAN ,"MCC C2H REQ ACK: group %d, func %d, return code %d\n" , group, func, retcode);
@@ -4329,6 +4329,11 @@ rtw89_mac_c2h_mcc_tsf_rpt(struct rtw89_dev *rtwdev, struct sk_buff *c2h, u32 len rpt->tsf_y_low =RTW89_GET_MAC_C2H_MCC_TSF_RPT_TSF_LOW_Y (c2h->data); rpt->tsf_y_high =RTW89_GET_MAC_C2H_MCC_TSF_RPT_TSF_HIGH_Y (c2h->data); +rtw89_debug (rtwdev,RTW89_DBG_CHAN , +"MCC C2H TSF RPT: macid %d> %llu, macid %d> %llu\n" , + rpt->macid_x, (u64 )rpt->tsf_x_high <<32 | rpt->tsf_x_low, + rpt->macid_y, (u64 )rpt->tsf_y_high <<32 | rpt->tsf_y_low); + cond =RTW89_MCC_WAIT_COND (group,H2C_FUNC_MCC_REQ_TSF );rtw89_complete_cond (&rtwdev->mcc.wait, cond, &data); }
@@ -4386,14 +4391,14 @@ rtw89_mac_c2h_mcc_status_rpt(struct rtw89_dev *rtwdev, struct sk_buff *c2h, u32 rsp = false;break ;default : -rtw89_debug (rtwdev,RTW89_DBG_FW , +rtw89_debug (rtwdev,RTW89_DBG_CHAN ,"invalid MCC C2H STS RPT: status %d\n" , status);return ; } -rtw89_debug (rtwdev,RTW89_DBG_FW , -"MCC C2H STS RPT: group %d, macid %d, status %d, tsf {%d, %d}\n" , - group, macid, status, tsf_low, tsf_high); +rtw89_debug (rtwdev,RTW89_DBG_CHAN , +"MCC C2H STS RPT: group %d, macid %d, status %d, tsf %llu\n" , + group, macid, status, (u64 )tsf_high <<32 | tsf_low);if (!rsp)return ;
Signature · 1 line
2.25.1
Quoted 9 lines · Ping-Ke Shih
From: Zong-Zhe Yang <[email protected]>
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 <[email protected]>Signed-off-by Ping-Ke Shih <[email protected]>
2 patches applied to wireless-next.git, thanks.
24d72944d79e wifi: rtw89: fix parsing offset for MCC C2H 214a98b151b1 wifi: rtw89: refine MCC C2H debug logs
Signature · 3 lines
https://patchwork.kernel.org/project/linux-wireless/patch/[email protected]/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches