]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: rtw89: use struct to fill C2H recv ack
authorChih-Kang Chang <gary.chang@realtek.com>
Mon, 20 Apr 2026 03:40:47 +0000 (11:40 +0800)
committerPing-Ke Shih <pkshih@realtek.com>
Wed, 29 Apr 2026 04:51:25 +0000 (12:51 +0800)
This C2H packet is used to indicate that FW has received the
corresponding H2C command. No logic is changed.

Signed-off-by: Chih-Kang Chang <gary.chang@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://patch.msgid.link/20260420034051.17666-13-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/fw.h
drivers/net/wireless/realtek/rtw89/mac.c

index 4d94a719570875a67d0d39b117ab1e7e490a7f1a..6ef53fcd0ccef31372969253883a589cd84aa17e 100644 (file)
@@ -3886,14 +3886,16 @@ struct rtw89_c2h_done_ack {
 #define        RTW89_C2H_SCAN_DONE_ACK_RETURN GENMASK(5, 0)
 #define RTW89_C2H_DONE_ACK_W2_H2C_SEQ GENMASK(31, 24)
 
-#define RTW89_GET_MAC_C2H_REV_ACK_CAT(c2h) \
-       le32_get_bits(*((const __le32 *)(c2h) + 2), GENMASK(1, 0))
-#define RTW89_GET_MAC_C2H_REV_ACK_CLASS(c2h) \
-       le32_get_bits(*((const __le32 *)(c2h) + 2), GENMASK(7, 2))
-#define RTW89_GET_MAC_C2H_REV_ACK_FUNC(c2h) \
-       le32_get_bits(*((const __le32 *)(c2h) + 2), GENMASK(15, 8))
-#define RTW89_GET_MAC_C2H_REV_ACK_H2C_SEQ(c2h) \
-       le32_get_bits(*((const __le32 *)(c2h) + 2), GENMASK(23, 16))
+struct rtw89_c2h_rev_ack {
+       __le32 w0;
+       __le32 w1;
+       __le32 w2;
+} __packed;
+
+#define RTW89_C2H_REV_ACK_W2_CAT GENMASK(1, 0)
+#define RTW89_C2H_REV_ACK_W2_CLASS GENMASK(7, 2)
+#define RTW89_C2H_REV_ACK_W2_FUNC GENMASK(15, 8)
+#define RTW89_C2H_REV_ACK_W2_H2C_SEQ GENMASK(23, 16)
 
 struct rtw89_fw_c2h_log_fmt {
        __le16 signature;
index 353d7b88fb1ac92d25aaf9c7c5ac48a595b435a8..3f8275bfe91b7e688fe023d51a4b234bcc71334a 100644 (file)
@@ -5442,16 +5442,19 @@ rtw89_mac_c2h_bcn_fltr_rpt(struct rtw89_dev *rtwdev, struct sk_buff *c2h,
 }
 
 static void
-rtw89_mac_c2h_rec_ack(struct rtw89_dev *rtwdev, struct sk_buff *c2h, u32 len)
+rtw89_mac_c2h_rec_ack(struct rtw89_dev *rtwdev, struct sk_buff *skb_c2h, u32 len)
 {
        /* N.B. This will run in interrupt context. */
+       const struct rtw89_c2h_rev_ack *c2h = (const void *)skb_c2h->data;
+
+       u8 h2c_cat = le32_get_bits(c2h->w2, RTW89_C2H_REV_ACK_W2_CAT);
+       u8 h2c_class = le32_get_bits(c2h->w2, RTW89_C2H_REV_ACK_W2_CLASS);
+       u8 h2c_func = le32_get_bits(c2h->w2, RTW89_C2H_REV_ACK_W2_FUNC);
+       u8 h2c_seq = le32_get_bits(c2h->w2, RTW89_C2H_REV_ACK_W2_H2C_SEQ);
 
        rtw89_debug(rtwdev, RTW89_DBG_FW,
                    "C2H rev ack recv, cat: %d, class: %d, func: %d, seq : %d\n",
-                   RTW89_GET_MAC_C2H_REV_ACK_CAT(c2h->data),
-                   RTW89_GET_MAC_C2H_REV_ACK_CLASS(c2h->data),
-                   RTW89_GET_MAC_C2H_REV_ACK_FUNC(c2h->data),
-                   RTW89_GET_MAC_C2H_REV_ACK_H2C_SEQ(c2h->data));
+                   h2c_cat, h2c_class, h2c_func, h2c_seq);
 }
 
 static void