All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC] mac80211: do not restart ps timer during scan
@ 2011-02-01 14:34 Rajkumar Manoharan
  2011-02-01 14:34 ` [PATCH] ath9k: wakeup hw before stopping beacon queue Rajkumar Manoharan
  2011-02-01 14:36 ` [RFC] mac80211: do not restart ps timer during scan Johannes Berg
  0 siblings, 2 replies; 5+ messages in thread
From: Rajkumar Manoharan @ 2011-02-01 14:34 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Rajkumar Manoharan

While leaving oper channel, STA informs sleep state to AP to
stop sending data. Before sending ack for the nullfunc, AP is
still sending the data to STA which restarts ps_timer that
is causing unnecessary nullfunc exchange on timer expiry
when the STA is on offchannel. So don't restart ps_timer
on data reception during scan. This issue was identified by
the following warning.

WARNING: at net/mac80211/tx.c:661 invoke_tx_handlers+0xf07/0x1330 [mac80211]
wlan0: Dropped data frame as no usable bitrate found while scanning and
associated. Target station: 00:03:7f:0b:a6:1b on 5 GHz band
Call Trace:
  [<ffffffffa0413ba7>] invoke_tx_handlers+0xf07/0x1330 [mac80211]
  [<ffffffffa0414056>] ieee80211_tx+0x86/0x2c0 [mac80211]
  [<ffffffffa0414345>] ieee80211_xmit+0xb5/0x1d0 [mac80211]
  [<ffffffffa04037e0>] ieee80211_dynamic_ps_enable_work+0x0/0xb0 [mac80211]
  [<ffffffffa04158cf>] ieee80211_tx_skb+0x4f/0x60 [mac80211]
  [<ffffffffa04026e6>] ieee80211_send_nullfunc+0x46/0x60 [mac80211]
  [<ffffffffa0403885>] ieee80211_dynamic_ps_enable_work+0xa5/0xb0 [mac80211]

Signed-off-by: Rajkumar Manoharan <rmanoharan@atheros.com>
---
 net/mac80211/rx.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 7185c93..0e02ce9 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -1929,7 +1929,9 @@ ieee80211_rx_h_data(struct ieee80211_rx_data *rx)
 	dev->stats.rx_bytes += rx->skb->len;
 
 	if (local->ps_sdata && local->hw.conf.dynamic_ps_timeout > 0 &&
-	    !is_multicast_ether_addr(((struct ethhdr *)rx->skb->data)->h_dest)) {
+	    !is_multicast_ether_addr(
+		    ((struct ethhdr *)rx->skb->data)->h_dest) &&
+	    !local->scanning) {
 			mod_timer(&local->dynamic_ps_timer, jiffies +
 			 msecs_to_jiffies(local->hw.conf.dynamic_ps_timeout));
 	}
-- 
1.7.4


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH] ath9k: wakeup hw before stopping beacon queue
  2011-02-01 14:34 [RFC] mac80211: do not restart ps timer during scan Rajkumar Manoharan
@ 2011-02-01 14:34 ` Rajkumar Manoharan
  2011-02-01 14:36 ` [RFC] mac80211: do not restart ps timer during scan Johannes Berg
  1 sibling, 0 replies; 5+ messages in thread
From: Rajkumar Manoharan @ 2011-02-01 14:34 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, Rajkumar Manoharan

Before stopping beacon queue ensure that hw is in AWAKE state.
No doing so, causes failure to stop tx dma error message.

Signed-off-by: Rajkumar Manoharan <rmanoharan@atheros.com>
---
 drivers/net/wireless/ath/ath9k/main.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index c9925e9..bfc70c1 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -1411,6 +1411,7 @@ static void ath9k_do_vif_add_setup(struct ieee80211_hw *hw,
 
 	if (ath9k_uses_beacons(vif->type)) {
 		int error;
+		ath9k_ps_wakeup(sc);
 		ath9k_hw_stoptxdma(sc->sc_ah, sc->beacon.beaconq);
 		/* This may fail because upper levels do not have beacons
 		 * properly configured yet.  That's OK, we assume it
@@ -1423,6 +1424,7 @@ static void ath9k_do_vif_add_setup(struct ieee80211_hw *hw,
 			ath9k_reclaim_beacon(sc, vif);
 		else
 			ath_beacon_config(sc, vif);
+		ath9k_ps_restore(sc);
 	}
 }
 
-- 
1.7.4


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [RFC] mac80211: do not restart ps timer during scan
  2011-02-01 14:34 [RFC] mac80211: do not restart ps timer during scan Rajkumar Manoharan
  2011-02-01 14:34 ` [PATCH] ath9k: wakeup hw before stopping beacon queue Rajkumar Manoharan
@ 2011-02-01 14:36 ` Johannes Berg
  2011-02-01 15:17   ` Ben Greear
  2011-02-01 16:53   ` Rajkumar Manoharan
  1 sibling, 2 replies; 5+ messages in thread
From: Johannes Berg @ 2011-02-01 14:36 UTC (permalink / raw)
  To: Rajkumar Manoharan; +Cc: linville, linux-wireless

On Tue, 2011-02-01 at 20:04 +0530, Rajkumar Manoharan wrote:
> While leaving oper channel, STA informs sleep state to AP to
> stop sending data. Before sending ack for the nullfunc, AP is
> still sending the data to STA which restarts ps_timer that
> is causing unnecessary nullfunc exchange on timer expiry
> when the STA is on offchannel. So don't restart ps_timer
> on data reception during scan. This issue was identified by
> the following warning.
> 
> WARNING: at net/mac80211/tx.c:661 invoke_tx_handlers+0xf07/0x1330 [mac80211]
> wlan0: Dropped data frame as no usable bitrate found while scanning and
> associated. Target station: 00:03:7f:0b:a6:1b on 5 GHz band
> Call Trace:
>   [<ffffffffa0413ba7>] invoke_tx_handlers+0xf07/0x1330 [mac80211]
>   [<ffffffffa0414056>] ieee80211_tx+0x86/0x2c0 [mac80211]
>   [<ffffffffa0414345>] ieee80211_xmit+0xb5/0x1d0 [mac80211]
>   [<ffffffffa04037e0>] ieee80211_dynamic_ps_enable_work+0x0/0xb0 [mac80211]
>   [<ffffffffa04158cf>] ieee80211_tx_skb+0x4f/0x60 [mac80211]
>   [<ffffffffa04026e6>] ieee80211_send_nullfunc+0x46/0x60 [mac80211]
>   [<ffffffffa0403885>] ieee80211_dynamic_ps_enable_work+0xa5/0xb0 [mac80211]
> 
> Signed-off-by: Rajkumar Manoharan <rmanoharan@atheros.com>
> ---
>  net/mac80211/rx.c |    4 +++-
>  1 files changed, 3 insertions(+), 1 deletions(-)
> 
> diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
> index 7185c93..0e02ce9 100644
> --- a/net/mac80211/rx.c
> +++ b/net/mac80211/rx.c
> @@ -1929,7 +1929,9 @@ ieee80211_rx_h_data(struct ieee80211_rx_data *rx)
>  	dev->stats.rx_bytes += rx->skb->len;
>  
>  	if (local->ps_sdata && local->hw.conf.dynamic_ps_timeout > 0 &&
> -	    !is_multicast_ether_addr(((struct ethhdr *)rx->skb->data)->h_dest)) {
> +	    !is_multicast_ether_addr(
> +		    ((struct ethhdr *)rx->skb->data)->h_dest) &&
> +	    !local->scanning) {

What if we're off-channel due to other work like P2P?

johannes


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [RFC] mac80211: do not restart ps timer during scan
  2011-02-01 14:36 ` [RFC] mac80211: do not restart ps timer during scan Johannes Berg
@ 2011-02-01 15:17   ` Ben Greear
  2011-02-01 16:53   ` Rajkumar Manoharan
  1 sibling, 0 replies; 5+ messages in thread
From: Ben Greear @ 2011-02-01 15:17 UTC (permalink / raw)
  To: Johannes Berg; +Cc: Rajkumar Manoharan, linville, linux-wireless

On 02/01/2011 06:36 AM, Johannes Berg wrote:
> On Tue, 2011-02-01 at 20:04 +0530, Rajkumar Manoharan wrote:
>> While leaving oper channel, STA informs sleep state to AP to
>> stop sending data. Before sending ack for the nullfunc, AP is
>> still sending the data to STA which restarts ps_timer that
>> is causing unnecessary nullfunc exchange on timer expiry
>> when the STA is on offchannel. So don't restart ps_timer
>> on data reception during scan. This issue was identified by
>> the following warning.
>>
>> WARNING: at net/mac80211/tx.c:661 invoke_tx_handlers+0xf07/0x1330 [mac80211]
>> wlan0: Dropped data frame as no usable bitrate found while scanning and
>> associated. Target station: 00:03:7f:0b:a6:1b on 5 GHz band
>> Call Trace:
>>    [<ffffffffa0413ba7>] invoke_tx_handlers+0xf07/0x1330 [mac80211]
>>    [<ffffffffa0414056>] ieee80211_tx+0x86/0x2c0 [mac80211]
>>    [<ffffffffa0414345>] ieee80211_xmit+0xb5/0x1d0 [mac80211]
>>    [<ffffffffa04037e0>] ieee80211_dynamic_ps_enable_work+0x0/0xb0 [mac80211]
>>    [<ffffffffa04158cf>] ieee80211_tx_skb+0x4f/0x60 [mac80211]
>>    [<ffffffffa04026e6>] ieee80211_send_nullfunc+0x46/0x60 [mac80211]
>>    [<ffffffffa0403885>] ieee80211_dynamic_ps_enable_work+0xa5/0xb0 [mac80211]
>>
>> Signed-off-by: Rajkumar Manoharan<rmanoharan@atheros.com>
>> ---
>>   net/mac80211/rx.c |    4 +++-
>>   1 files changed, 3 insertions(+), 1 deletions(-)
>>
>> diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
>> index 7185c93..0e02ce9 100644
>> --- a/net/mac80211/rx.c
>> +++ b/net/mac80211/rx.c
>> @@ -1929,7 +1929,9 @@ ieee80211_rx_h_data(struct ieee80211_rx_data *rx)
>>   	dev->stats.rx_bytes += rx->skb->len;
>>
>>   	if (local->ps_sdata&&  local->hw.conf.dynamic_ps_timeout>  0&&
>> -	    !is_multicast_ether_addr(((struct ethhdr *)rx->skb->data)->h_dest)) {
>> +	    !is_multicast_ether_addr(
>> +		    ((struct ethhdr *)rx->skb->data)->h_dest)&&
>> +	    !local->scanning) {
>
> What if we're off-channel due to other work like P2P?

And, if I can get the scan-on-channel optimization patch in, this check
would need to be changed to check for scanning & off-channel instead of
just scanning.  I have a helper method in my patch to check if we're on
the oper-channel....

Thanks,
Ben

>
> johannes
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


-- 
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc  http://www.candelatech.com

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [RFC] mac80211: do not restart ps timer during scan
  2011-02-01 14:36 ` [RFC] mac80211: do not restart ps timer during scan Johannes Berg
  2011-02-01 15:17   ` Ben Greear
@ 2011-02-01 16:53   ` Rajkumar Manoharan
  1 sibling, 0 replies; 5+ messages in thread
From: Rajkumar Manoharan @ 2011-02-01 16:53 UTC (permalink / raw)
  To: Johannes Berg; +Cc: Rajkumar Manoharan, linville, linux-wireless

On Tue, Feb 01, 2011 at 08:06:58PM +0530, Johannes Berg wrote:
> On Tue, 2011-02-01 at 20:04 +0530, Rajkumar Manoharan wrote:
> > While leaving oper channel, STA informs sleep state to AP to
> > stop sending data. Before sending ack for the nullfunc, AP is
> > still sending the data to STA which restarts ps_timer that
> > is causing unnecessary nullfunc exchange on timer expiry
> > when the STA is on offchannel. So don't restart ps_timer
> > on data reception during scan. This issue was identified by
> > the following warning.
> > 
> > WARNING: at net/mac80211/tx.c:661 invoke_tx_handlers+0xf07/0x1330 [mac80211]
> > wlan0: Dropped data frame as no usable bitrate found while scanning and
> > associated. Target station: 00:03:7f:0b:a6:1b on 5 GHz band
> > Call Trace:
> >   [<ffffffffa0413ba7>] invoke_tx_handlers+0xf07/0x1330 [mac80211]
> >   [<ffffffffa0414056>] ieee80211_tx+0x86/0x2c0 [mac80211]
> >   [<ffffffffa0414345>] ieee80211_xmit+0xb5/0x1d0 [mac80211]
> >   [<ffffffffa04037e0>] ieee80211_dynamic_ps_enable_work+0x0/0xb0 [mac80211]
> >   [<ffffffffa04158cf>] ieee80211_tx_skb+0x4f/0x60 [mac80211]
> >   [<ffffffffa04026e6>] ieee80211_send_nullfunc+0x46/0x60 [mac80211]
> >   [<ffffffffa0403885>] ieee80211_dynamic_ps_enable_work+0xa5/0xb0 [mac80211]
> > 
> > Signed-off-by: Rajkumar Manoharan <rmanoharan@atheros.com>
> > ---
> >  net/mac80211/rx.c |    4 +++-
> >  1 files changed, 3 insertions(+), 1 deletions(-)
> > 
> > diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
> > index 7185c93..0e02ce9 100644
> > --- a/net/mac80211/rx.c
> > +++ b/net/mac80211/rx.c
> > @@ -1929,7 +1929,9 @@ ieee80211_rx_h_data(struct ieee80211_rx_data *rx)
> >  	dev->stats.rx_bytes += rx->skb->len;
> >  
> >  	if (local->ps_sdata && local->hw.conf.dynamic_ps_timeout > 0 &&
> > -	    !is_multicast_ether_addr(((struct ethhdr *)rx->skb->data)->h_dest)) {
> > +	    !is_multicast_ether_addr(
> > +		    ((struct ethhdr *)rx->skb->data)->h_dest) &&
> > +	    !local->scanning) {
> 
> What if we're off-channel due to other work like P2P?
>
Yes. we need to handle offchannel state too. Is it fine to have a check against sdata->state 
SDATA_STATE_OFFCHANNEL.

--
Rajkumar


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2011-02-01 16:53 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-02-01 14:34 [RFC] mac80211: do not restart ps timer during scan Rajkumar Manoharan
2011-02-01 14:34 ` [PATCH] ath9k: wakeup hw before stopping beacon queue Rajkumar Manoharan
2011-02-01 14:36 ` [RFC] mac80211: do not restart ps timer during scan Johannes Berg
2011-02-01 15:17   ` Ben Greear
2011-02-01 16:53   ` Rajkumar Manoharan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.