diff options
author | Christian Lamparter <chunkeey@web.de> | 2009-07-07 13:08:07 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-07-24 15:05:06 -0400 |
commit | e0f114e82e3781087a0ad0e92c94ff0d55012c1a (patch) | |
tree | d4c7cfa485360952b3da9fee7acc07efcfdcc7d8 /drivers/net/wireless/p54/fwio.c | |
parent | 0a2b8bb24d4eb67788edd71d1ef8aa86c2e17e0f (diff) |
p54: re-enable power save feature
This patch re-enables p54's power save features and adds a workaround
which temporarily alters the device's power state in order to allow
ps-polls to be sent and buffered data to be retrieved during psm.
(Incorporates patch originally posted as "p54: fix beacon template dtim
IE corruption". -- JWL)
Signed-off-by: Christian Lamparter <chunkeey@web.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/p54/fwio.c')
-rw-r--r-- | drivers/net/wireless/p54/fwio.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/net/wireless/p54/fwio.c b/drivers/net/wireless/p54/fwio.c index dc4f3f5ee0c8..349375f4a14b 100644 --- a/drivers/net/wireless/p54/fwio.c +++ b/drivers/net/wireless/p54/fwio.c | |||
@@ -585,7 +585,8 @@ int p54_set_ps(struct p54_common *priv) | |||
585 | unsigned int i; | 585 | unsigned int i; |
586 | u16 mode; | 586 | u16 mode; |
587 | 587 | ||
588 | if (priv->hw->conf.flags & IEEE80211_CONF_PS) | 588 | if (priv->hw->conf.flags & IEEE80211_CONF_PS && |
589 | !priv->powersave_override) | ||
589 | mode = P54_PSM | P54_PSM_BEACON_TIMEOUT | P54_PSM_DTIM | | 590 | mode = P54_PSM | P54_PSM_BEACON_TIMEOUT | P54_PSM_DTIM | |
590 | P54_PSM_CHECKSUM | P54_PSM_MCBC; | 591 | P54_PSM_CHECKSUM | P54_PSM_MCBC; |
591 | else | 592 | else |
@@ -607,8 +608,8 @@ int p54_set_ps(struct p54_common *priv) | |||
607 | 608 | ||
608 | psm->beacon_rssi_skip_max = 200; | 609 | psm->beacon_rssi_skip_max = 200; |
609 | psm->rssi_delta_threshold = 0; | 610 | psm->rssi_delta_threshold = 0; |
610 | psm->nr = 10; | 611 | psm->nr = 1; |
611 | psm->exclude[0] = 0; | 612 | psm->exclude[0] = WLAN_EID_TIM; |
612 | 613 | ||
613 | p54_tx(priv, skb); | 614 | p54_tx(priv, skb); |
614 | return 0; | 615 | return 0; |