diff mbox

mac80211: don't start the dynamic ps timer if not associated

Message ID 1304448008-7816-1-git-send-email-coelho@ti.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Luciano Coelho May 3, 2011, 6:40 p.m. UTC
When we are disconnecting, we set PS off, but this happens before we
send the deauth/disassoc request.  When the deauth/disassoc frames are
sent, we trigger the dynamic ps timer, which then times out and turns
PS back on.  Thus, PS remains on after disconnecting, causing problems
when associating again.

This can be fixed by preventing the timer to start when we're not
associated anymore.

Signed-off-by: Luciano Coelho <coelho@ti.com>
---
 net/mac80211/tx.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

Comments

Luciano Coelho May 4, 2011, 8:08 p.m. UTC | #1
On Tue, 2011-05-03 at 21:40 +0300, Luciano Coelho wrote:
> When we are disconnecting, we set PS off, but this happens before we
> send the deauth/disassoc request.  When the deauth/disassoc frames are
> sent, we trigger the dynamic ps timer, which then times out and turns
> PS back on.  Thus, PS remains on after disconnecting, causing problems
> when associating again.
> 
> This can be fixed by preventing the timer to start when we're not
> associated anymore.
> 
> Signed-off-by: Luciano Coelho <coelho@ti.com>
> ---
>  net/mac80211/tx.c |    4 ++++
>  1 files changed, 4 insertions(+), 0 deletions(-)
> 
> diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
> index e3e3aa1..21accf8 100644
> --- a/net/mac80211/tx.c
> +++ b/net/mac80211/tx.c
> @@ -237,6 +237,10 @@ ieee80211_tx_h_dynamic_ps(struct ieee80211_tx_data *tx)
>  				     &local->dynamic_ps_disable_work);
>  	}
>  
> +	/* Don't restart the timer if we're not disassociated */
> +	if (!ifmgd->associated)
> +		return TX_CONTINUE;
> +
>  	mod_timer(&local->dynamic_ps_timer, jiffies +
>  		  msecs_to_jiffies(local->hw.conf.dynamic_ps_timeout));
>  

Do you people think this should go into 2.6.39?
diff mbox

Patch

diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index e3e3aa1..21accf8 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -237,6 +237,10 @@  ieee80211_tx_h_dynamic_ps(struct ieee80211_tx_data *tx)
 				     &local->dynamic_ps_disable_work);
 	}
 
+	/* Don't restart the timer if we're not disassociated */
+	if (!ifmgd->associated)
+		return TX_CONTINUE;
+
 	mod_timer(&local->dynamic_ps_timer, jiffies +
 		  msecs_to_jiffies(local->hw.conf.dynamic_ps_timeout));