Search Linux Wireless

Re: Aggregation problem with rt2800 AP and Intel 5100 STA

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

 



On Thu, Mar 24, 2011 at 19:32, Johannes Berg <johannes@xxxxxxxxxxxxxxxx> wrote:
> On Thu, 2011-03-24 at 14:57 +0100, Helmut Schaa wrote:
>
>> I guess so, yes (as I wrote before this is an Intel 5100 client running Windows
>> Vista and the latest Intel driver). It sends a nullfunc going to sleep and returns
>> a few hundret ms later. And in the meantime I can see my rt2800 AP sending an
>> AMPDU to the sleeping STA which of course times out and therefore ends up as
>> filtered frame.
>
> Ok so it gets reported to mac80211.
>
>> > Maybe the PS buffer should be larger then?
>>
>> 128 frames per STA is already large, no? And also it's nothing unusual
>> that some frames get dropped if the STA stays in powersave for a long time.
>>
>> > I don't see how we can lose a
>> > frame due to rx/tx processing races either, how does that happen? I
>> > thought we had the ability to avoid all those races now.
>>
>> Good point. Maybe this only happens with rt2x00. The frame exchange looks
>> basically like (if you want to see the pcap just ask ;) ):
>>
>> STA -> AP  nullfunc PM=1
>> AP -> STA  AMPDU (seqnr 3106 - 3112)
>> AP -> STA  AMPDU (seqnr 3106 - 3112), retry
>> AP -> STA  AMPDU (seqnr 3106 - 3112), retry
>> AP -> STA  AMPDU (seqnr 3106 - 3112), retry
>> AP -> STA  AMPDU (seqnr 3106 - 3112), retry
>> AP -> STA  AMPDU (seqnr 3106 - 3112), retry
>> ...
>> STA -> AP nullfunc PM=0
>> ...

Hold on, why do mac80211 send a frame to a sleeping station ?
Am I stupid or is this buggy ?
Johannes, is this the buggy behavior in PS you were pointing out later
in your mail ?


>> AP -> STA  AMPDU (seqnr 3108)
>> STA -> AP  BlockAck
>> AP -> STA  AMPDU (seqnr 3109 - 3114)
>> STA -> AP  BlockAck
>> ...
>>
>> As you can see 3106 and 3107 somehow got lost and thus leave a hole in
>> the STAs reorder buffer leading to the strange behavior I described before.
>
> but if they are reported to mac80211 they should be put on the queue
> again? Are they maybe not reported back quite in the right way?
>
>> > I don't know, you tell me, does it? :)
>>
>> Ha Ha ;)
>>
>> Sending a BAR at this point would at least ensure that the Intel STAs RX
>> reorder buffer gets flushed (in case we dropped any frames while the STA was
>> sleeping, which happened in this case).
>
> Right, but so far this looks like it's more like a bug in the powersave
> code rather than something we desperately need to recover from with a
> BAR.
>

The originator tried to send data and this data didn't get acked. In
this case a BAR should be sent regardless the reason why this frame
didn't get acked.
This is done by reporting IEEE80211_TX_STAT_AMPDU_NO_BACK to mac80211.
Can it be that the rt2800 doesn't report properly the xmit failure ?
--
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