aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/p54/fwio.c
diff options
context:
space:
mode:
authorChristian Lamparter <chunkeey@web.de>2009-07-07 13:08:07 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-07-24 15:05:06 -0400
commite0f114e82e3781087a0ad0e92c94ff0d55012c1a (patch)
treed4c7cfa485360952b3da9fee7acc07efcfdcc7d8 /drivers/net/wireless/p54/fwio.c
parent0a2b8bb24d4eb67788edd71d1ef8aa86c2e17e0f (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.c7
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;