Skip to content

Commit

Permalink
ath9k: Fix a DMA latency issue for Intel Pinetrail platforms.
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Vivek Natarajan authored and John W. Linville committed Nov 8, 2010
1 parent 5f841b4 commit 10598c1
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 0 deletions.
1 change: 1 addition & 0 deletions drivers/net/wireless/ath/ath9k/ath9k.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
8 changes: 8 additions & 0 deletions drivers/net/wireless/ath/ath9k/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*/

#include <linux/slab.h>
#include <linux/pm_qos_params.h>

#include "ath9k.h"

Expand Down Expand Up @@ -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 */
/**************************/
Expand Down Expand Up @@ -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:
Expand Down Expand Up @@ -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);

Expand Down
5 changes: 5 additions & 0 deletions drivers/net/wireless/ath/ath9k/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*/

#include <linux/nl80211.h>
#include <linux/pm_qos_params.h>
#include "ath9k.h"
#include "btcoex.h"

Expand Down Expand Up @@ -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);

Expand Down Expand Up @@ -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");
Expand Down

0 comments on commit 10598c1

Please sign in to comment.