ath9k: Fix a DMA latency issue for Intel Pinetrail platforms.
Throughput was severely affected in Intel Pinetrail platforms because of a DMA problem in C3 state. This patch fixes this issue. Signed-off-by: Vivek Natarajan <vnatarajan@atheros.com> CC: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
5f841b4130
commit
10598c124e
|
@ -675,6 +675,7 @@ static inline void ath_read_cachesize(struct ath_common *common, int *csz)
|
|||
}
|
||||
|
||||
extern struct ieee80211_ops ath9k_ops;
|
||||
extern struct pm_qos_request_list ath9k_pm_qos_req;
|
||||
extern int modparam_nohwcrypt;
|
||||
extern int led_blink;
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
*/
|
||||
|
||||
#include <linux/slab.h>
|
||||
#include <linux/pm_qos_params.h>
|
||||
|
||||
#include "ath9k.h"
|
||||
|
||||
|
@ -179,6 +180,8 @@ static const struct ath_ops ath9k_common_ops = {
|
|||
.write = ath9k_iowrite32,
|
||||
};
|
||||
|
||||
struct pm_qos_request_list ath9k_pm_qos_req;
|
||||
|
||||
/**************************/
|
||||
/* Initialization */
|
||||
/**************************/
|
||||
|
@ -756,6 +759,9 @@ int ath9k_init_device(u16 devid, struct ath_softc *sc, u16 subsysid,
|
|||
ath_init_leds(sc);
|
||||
ath_start_rfkill_poll(sc);
|
||||
|
||||
pm_qos_add_request(&ath9k_pm_qos_req, PM_QOS_CPU_DMA_LATENCY,
|
||||
PM_QOS_DEFAULT_VALUE);
|
||||
|
||||
return 0;
|
||||
|
||||
error_world:
|
||||
|
@ -811,6 +817,8 @@ void ath9k_deinit_device(struct ath_softc *sc)
|
|||
|
||||
ath9k_ps_wakeup(sc);
|
||||
|
||||
pm_qos_remove_request(&ath9k_pm_qos_req);
|
||||
|
||||
wiphy_rfkill_stop_polling(sc->hw->wiphy);
|
||||
ath_deinit_leds(sc);
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
*/
|
||||
|
||||
#include <linux/nl80211.h>
|
||||
#include <linux/pm_qos_params.h>
|
||||
#include "ath9k.h"
|
||||
#include "btcoex.h"
|
||||
|
||||
|
@ -1239,6 +1240,8 @@ static int ath9k_start(struct ieee80211_hw *hw)
|
|||
ath9k_btcoex_timer_resume(sc);
|
||||
}
|
||||
|
||||
pm_qos_update_request(&ath9k_pm_qos_req, 55);
|
||||
|
||||
mutex_unlock:
|
||||
mutex_unlock(&sc->mutex);
|
||||
|
||||
|
@ -1416,6 +1419,8 @@ static void ath9k_stop(struct ieee80211_hw *hw)
|
|||
|
||||
sc->sc_flags |= SC_OP_INVALID;
|
||||
|
||||
pm_qos_update_request(&ath9k_pm_qos_req, PM_QOS_DEFAULT_VALUE);
|
||||
|
||||
mutex_unlock(&sc->mutex);
|
||||
|
||||
ath_print(common, ATH_DBG_CONFIG, "Driver halt\n");
|
||||
|
|
Loading…
Reference in New Issue