wifi: rtw89: support WoWLAN mode for 8852be
authorChin-Yen Lee <timlee@realtek.com>
Mon, 10 Apr 2023 05:34:37 +0000 (13:34 +0800)
committerKalle Valo <kvalo@kernel.org>
Mon, 17 Apr 2023 09:47:48 +0000 (12:47 +0300)
To support WoWLAN mode for 8852be, we add one PLE quota setting and
WoWLAN stub, which shows that supported WLAN events include receiving
magic packet, rekey packet and deauth packet, and disconnecting from AP.

Signed-off-by: Chin-Yen Lee <timlee@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/20230410053438.10682-1-pkshih@realtek.com
drivers/net/wireless/realtek/rtw89/mac.c
drivers/net/wireless/realtek/rtw89/mac.h
drivers/net/wireless/realtek/rtw89/rtw8852b.c

index 385e2a0dfea588be546c373c489f3d0c51e71ce3..ce657dda5e35f9110418bea5cf3cac09e6f50e0b 100644 (file)
@@ -1473,6 +1473,8 @@ const struct rtw89_mac_size_set rtw89_mac_size = {
        .ple_qt58 = {147, 0, 16, 20, 157, 13, 229, 0, 172, 14, 24, 0,},
        /* 8852A PCIE WOW */
        .ple_qt_52a_wow = {264, 0, 32, 20, 64, 13, 1005, 0, 64, 128, 120,},
+       /* 8852B PCIE WOW */
+       .ple_qt_52b_wow = {147, 0, 16, 20, 157, 13, 133, 0, 172, 14, 24, 0,},
 };
 EXPORT_SYMBOL(rtw89_mac_size);
 
index a9ea3459ed825302a92e5c01e917ea22d525e8ab..06cbad4b8d623bbda39977a45687ad21ed2d98c6 100644 (file)
@@ -816,6 +816,7 @@ struct rtw89_mac_size_set {
        const struct rtw89_ple_quota ple_qt47;
        const struct rtw89_ple_quota ple_qt58;
        const struct rtw89_ple_quota ple_qt_52a_wow;
+       const struct rtw89_ple_quota ple_qt_52b_wow;
 };
 
 extern const struct rtw89_mac_size_set rtw89_mac_size;
index d7ba513b4f7a14ad771615c928283e3a2ca199d3..e93d745f6fb9852d21e0aea09cee3e7c07708671 100644 (file)
@@ -53,6 +53,10 @@ static const struct rtw89_dle_mem rtw8852b_dle_mem_pcie[] = {
                           &rtw89_mac_size.ple_size6, &rtw89_mac_size.wde_qt6,
                           &rtw89_mac_size.wde_qt6, &rtw89_mac_size.ple_qt18,
                           &rtw89_mac_size.ple_qt58},
+       [RTW89_QTA_WOW] = {RTW89_QTA_WOW, &rtw89_mac_size.wde_size6,
+                          &rtw89_mac_size.ple_size6, &rtw89_mac_size.wde_qt6,
+                          &rtw89_mac_size.wde_qt6, &rtw89_mac_size.ple_qt18,
+                          &rtw89_mac_size.ple_qt_52b_wow},
        [RTW89_QTA_DLFW] = {RTW89_QTA_DLFW, &rtw89_mac_size.wde_size9,
                            &rtw89_mac_size.ple_size8, &rtw89_mac_size.wde_qt4,
                            &rtw89_mac_size.wde_qt4, &rtw89_mac_size.ple_qt13,
@@ -2483,6 +2487,15 @@ static const struct rtw89_chip_ops rtw8852b_chip_ops = {
        .btc_set_policy         = rtw89_btc_set_policy_v1,
 };
 
+#ifdef CONFIG_PM
+static const struct wiphy_wowlan_support rtw_wowlan_stub_8852b = {
+       .flags = WIPHY_WOWLAN_MAGIC_PKT | WIPHY_WOWLAN_DISCONNECT,
+       .n_patterns = RTW89_MAX_PATTERN_NUM,
+       .pattern_max_len = RTW89_MAX_PATTERN_SIZE,
+       .pattern_min_len = 1,
+};
+#endif
+
 const struct rtw89_chip_info rtw8852b_chip_info = {
        .chip_id                = RTL8852B,
        .ops                    = &rtw8852b_chip_ops,
@@ -2579,6 +2592,9 @@ const struct rtw89_chip_info rtw8852b_chip_info = {
                                  BIT(RTW89_DMA_ACH6) | BIT(RTW89_DMA_ACH7) |
                                  BIT(RTW89_DMA_B1MG) | BIT(RTW89_DMA_B1HI),
        .edcca_lvl_reg          = R_SEG0R_EDCCA_LVL_V1,
+#ifdef CONFIG_PM
+       .wowlan_stub            = &rtw_wowlan_stub_8852b,
+#endif
 };
 EXPORT_SYMBOL(rtw8852b_chip_info);