aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath10k
diff options
context:
space:
mode:
authorMichal Kazior <michal.kazior@tieto.com>2015-02-13 07:30:15 -0500
committerKalle Valo <kvalo@qca.qualcomm.com>2015-03-04 08:38:35 -0500
commit0a987fb0069e83be32bb21e07d335d2a3d7e7f5e (patch)
treef20759a368979f70e3cf229b1029c54f0945e47f /drivers/net/wireless/ath/ath10k
parentc8c60cfd18e1ddf8f1b9ef76a49d7d1b08ea7a2d (diff)
ath10k: workaround qca6174 sta powersave issue
qca6184 WLAN.RM.2.0-00073 has a bug in sta powersave state machine and requires peer param to be poked to enable the powersave. Calling this unconditionally should be safe for other chips/firmwares. Signed-off-by: Michal Kazior <michal.kazior@tieto.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath10k')
-rw-r--r--drivers/net/wireless/ath/ath10k/mac.c12
-rw-r--r--drivers/net/wireless/ath/ath10k/wmi.h3
2 files changed, 14 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index f9c1507478ea..943e8909ea82 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -1922,6 +1922,18 @@ static void ath10k_bss_assoc(struct ieee80211_hw *hw,
1922 } 1922 }
1923 1923
1924 arvif->is_up = true; 1924 arvif->is_up = true;
1925
1926 /* Workaround: Some firmware revisions (tested with qca6174
1927 * WLAN.RM.2.0-00073) have buggy powersave state machine and must be
1928 * poked with peer param command.
1929 */
1930 ret = ath10k_wmi_peer_set_param(ar, arvif->vdev_id, arvif->bssid,
1931 WMI_PEER_DUMMY_VAR, 1);
1932 if (ret) {
1933 ath10k_warn(ar, "failed to poke peer %pM param for ps workaround on vdev %i: %d\n",
1934 arvif->bssid, arvif->vdev_id, ret);
1935 return;
1936 }
1925} 1937}
1926 1938
1927static void ath10k_bss_disassoc(struct ieee80211_hw *hw, 1939static void ath10k_bss_disassoc(struct ieee80211_hw *hw,
diff --git a/drivers/net/wireless/ath/ath10k/wmi.h b/drivers/net/wireless/ath/ath10k/wmi.h
index 28c1822af6cf..adf935bf0580 100644
--- a/drivers/net/wireless/ath/ath10k/wmi.h
+++ b/drivers/net/wireless/ath/ath10k/wmi.h
@@ -4445,7 +4445,8 @@ enum wmi_peer_param {
4445 WMI_PEER_AUTHORIZE = 0x3, 4445 WMI_PEER_AUTHORIZE = 0x3,
4446 WMI_PEER_CHAN_WIDTH = 0x4, 4446 WMI_PEER_CHAN_WIDTH = 0x4,
4447 WMI_PEER_NSS = 0x5, 4447 WMI_PEER_NSS = 0x5,
4448 WMI_PEER_USE_4ADDR = 0x6 4448 WMI_PEER_USE_4ADDR = 0x6,
4449 WMI_PEER_DUMMY_VAR = 0xff, /* dummy parameter for STA PS workaround */
4449}; 4450};
4450 4451
4451struct wmi_peer_set_param_cmd { 4452struct wmi_peer_set_param_cmd {