Currently hardware with !IEEE80211_HW_PS_NULLFUNC_STACK and
IEEE80211_HW_REPORTS_TX_ACK_STATUS will never enter PSM due to the
conditions in the power save entry functions.
Fix those conditions.
Signed-off-by: Juuso Oikarinen <[email protected]>
---
net/mac80211/mlme.c | 13 ++++++++-----
1 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index 8f591a4..cc80659 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -436,10 +436,12 @@ static void ieee80211_enable_ps(struct ieee80211_local *local,
if (local->hw.flags & IEEE80211_HW_PS_NULLFUNC_STACK)
ieee80211_send_nullfunc(local, sdata, 1);
- if (!(local->hw.flags & IEEE80211_HW_REPORTS_TX_ACK_STATUS)) {
- conf->flags |= IEEE80211_CONF_PS;
- ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_PS);
- }
+ if ((local->hw.flags & IEEE80211_HW_PS_NULLFUNC_STACK) &&
+ (local->hw.flags & IEEE80211_HW_REPORTS_TX_ACK_STATUS))
+ return;
+
+ conf->flags |= IEEE80211_CONF_PS;
+ ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_PS);
}
}
@@ -558,7 +560,8 @@ void ieee80211_dynamic_ps_enable_work(struct work_struct *work)
(!(ifmgd->flags & IEEE80211_STA_NULLFUNC_ACKED)))
ieee80211_send_nullfunc(local, sdata, 1);
- if (!(local->hw.flags & IEEE80211_HW_REPORTS_TX_ACK_STATUS) ||
+ if (!((local->hw.flags & IEEE80211_HW_REPORTS_TX_ACK_STATUS) &&
+ (local->hw.flags & IEEE80211_HW_PS_NULLFUNC_STACK)) ||
(ifmgd->flags & IEEE80211_STA_NULLFUNC_ACKED)) {
ifmgd->flags &= ~IEEE80211_STA_NULLFUNC_ACKED;
local->hw.conf.flags |= IEEE80211_CONF_PS;
--
1.6.3.3
On Tue, 2010-03-09 at 18:58 +0100, ext Luis R. Rodriguez wrote:
> On Tue, Mar 9, 2010 at 4:25 AM, Juuso Oikarinen
> <[email protected]> wrote:
> > Currently hardware with !IEEE80211_HW_PS_NULLFUNC_STACK and
> > IEEE80211_HW_REPORTS_TX_ACK_STATUS will never enter PSM due to the
> > conditions in the power save entry functions.
> >
> > Fix those conditions.
>
> Is this a stable fix, for 33?
>
> Luis
I have only tested this on our hardware (wl1271), which is configured as
stated above - though I tried to consider all other combinations of
those two flags too, but I haven't tested them.
-Juuso
On Tue, Mar 9, 2010 at 4:25 AM, Juuso Oikarinen
<[email protected]> wrote:
> Currently hardware with !IEEE80211_HW_PS_NULLFUNC_STACK and
> IEEE80211_HW_REPORTS_TX_ACK_STATUS will never enter PSM due to the
> conditions in the power save entry functions.
>
> Fix those conditions.
Is this a stable fix, for 33?
Luis