ath11k: set DTIM policy to stick mode for station interface
authorCarl Huang <quic_cjhuang@quicinc.com>
Thu, 9 Dec 2021 08:17:49 +0000 (10:17 +0200)
committerKalle Valo <quic_kvalo@quicinc.com>
Mon, 13 Dec 2021 09:48:09 +0000 (11:48 +0200)
Set DTIM policy to DTIM stick mode, so station follows AP DTIM
interval rather than listen interval which is set in peer assoc cmd.
DTIM stick mode is more preferred per firmware team request.

Tested-on: QCA6390 hw2.0 PCI WLAN.HST.1.0.1-01740-QCAHSTSWPLZ_V2_TO_X86-1

Signed-off-by: Carl Huang <quic_cjhuang@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://lore.kernel.org/r/1638948694-15582-1-git-send-email-quic_cjhuang@quicinc.com
drivers/net/wireless/ath/ath11k/mac.c
drivers/net/wireless/ath/ath11k/wmi.h

index 75857deedc967395a6de370051563bfa8bf1c65b..c019ff42a786532d89ebb9d561293fa194378e9b 100644 (file)
@@ -2682,6 +2682,13 @@ static void ath11k_bss_assoc(struct ieee80211_hw *hw,
                ath11k_warn(ar->ab, "failed to set vdev %i OBSS PD parameters: %d\n",
                            arvif->vdev_id, ret);
 
+       ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id,
+                                           WMI_VDEV_PARAM_DTIM_POLICY,
+                                           WMI_DTIM_POLICY_STICK);
+       if (ret)
+               ath11k_warn(ar->ab, "failed to set vdev %d dtim policy: %d\n",
+                           arvif->vdev_id, ret);
+
        ath11k_mac_11d_scan_stop_all(ar->ab);
 }
 
index aeaf89b28b578b8a774e110a8d5d6f9f632ddd64..d79eb1b7d9c22398cb53398e128b84006ad9ffdd 100644 (file)
@@ -2169,6 +2169,13 @@ enum wmi_nss_ratio {
        WMI_NSS_RATIO_2_NSS = 0x3,
 };
 
+enum wmi_dtim_policy {
+       WMI_DTIM_POLICY_IGNORE = 1,
+       WMI_DTIM_POLICY_NORMAL = 2,
+       WMI_DTIM_POLICY_STICK  = 3,
+       WMI_DTIM_POLICY_AUTO   = 4,
+};
+
 struct wmi_host_pdev_band_to_mac {
        u32 pdev_id;
        u32 start_freq;