| From 8298383c2cd5a6d0639f1bb1781fba181bd20154 Mon Sep 17 00:00:00 2001 |
| From: Sujith Manoharan <c_manoha@qca.qualcomm.com> |
| Date: Tue, 4 Feb 2014 08:37:53 +0530 |
| Subject: ath9k: Do not support PowerSave by default |
| |
| From: Sujith Manoharan <c_manoha@qca.qualcomm.com> |
| |
| commit 8298383c2cd5a6d0639f1bb1781fba181bd20154 upstream. |
| |
| Even though we make sure PowerSave is not enabled by default |
| by disabling the flag, WIPHY_FLAG_PS_ON_BY_DEFAULT on init, |
| PS could be enabled by userspace based on various factors |
| like battery usage etc. Since PS in ath9k is just broken |
| and has been untested for years, remove support for it, but |
| allow a user to explicitly enable it using a module parameter. |
| |
| Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> |
| Signed-off-by: John W. Linville <linville@tuxdriver.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/net/wireless/ath/ath9k/init.c | 8 +++++++- |
| 1 file changed, 7 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/net/wireless/ath/ath9k/init.c |
| +++ b/drivers/net/wireless/ath/ath9k/init.c |
| @@ -57,6 +57,10 @@ static int ath9k_bt_ant_diversity; |
| module_param_named(bt_ant_diversity, ath9k_bt_ant_diversity, int, 0444); |
| MODULE_PARM_DESC(bt_ant_diversity, "Enable WLAN/BT RX antenna diversity"); |
| |
| +static int ath9k_ps_enable; |
| +module_param_named(ps_enable, ath9k_ps_enable, int, 0444); |
| +MODULE_PARM_DESC(ps_enable, "Enable WLAN PowerSave"); |
| + |
| bool is_ath9k_unloaded; |
| /* We use the hw_value as an index into our private channel structure */ |
| |
| @@ -890,13 +894,15 @@ void ath9k_set_hw_capab(struct ath_softc |
| hw->flags = IEEE80211_HW_RX_INCLUDES_FCS | |
| IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING | |
| IEEE80211_HW_SIGNAL_DBM | |
| - IEEE80211_HW_SUPPORTS_PS | |
| IEEE80211_HW_PS_NULLFUNC_STACK | |
| IEEE80211_HW_SPECTRUM_MGMT | |
| IEEE80211_HW_REPORTS_TX_ACK_STATUS | |
| IEEE80211_HW_SUPPORTS_RC_TABLE | |
| IEEE80211_HW_SUPPORTS_HT_CCK_RATES; |
| |
| + if (ath9k_ps_enable) |
| + hw->flags |= IEEE80211_HW_SUPPORTS_PS; |
| + |
| if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_HT) { |
| hw->flags |= IEEE80211_HW_AMPDU_AGGREGATION; |
| |