Search Linux Wireless

Re: [RFC] mac80211: do not restart ps timer during scan

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxx>
> > ---
> >  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

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


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux