linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Felix Fietkau <nbd@openwrt.org>
To: Christian Lamparter <chunkeey@googlemail.com>
Cc: Helmut Schaa <helmut.schaa@googlemail.com>,
	Sean Patrick Santos <quantheory@gmail.com>,
	linux-wireless@vger.kernel.org
Subject: Re: BA session issue due to old BARs?
Date: Sat, 09 Jun 2012 16:55:36 +0200	[thread overview]
Message-ID: <4FD363E8.9090508@openwrt.org> (raw)
In-Reply-To: <201206091623.25232.chunkeey@googlemail.com>

On 2012-06-09 4:23 PM, Christian Lamparter wrote:
> On Saturday 09 June 2012 14:20:48 Helmut Schaa wrote:
>> On Sat, Jun 9, 2012 at 2:18 AM, Christian Lamparter
>> <chunkeey@googlemail.com> wrote:
>> > On Friday 08 June 2012 09:57:26 Sean Patrick Santos wrote:
>> >> I believe that I have found the commit that introduced this problem,
>> >> which was a change in mac80211. However, I'm out of my depth in
>> >> figuring out what a really "correct" solution is; all I've done is a
>> >> trial-and-error bisection. The commit in question:
>> >>
>> >> commit f0425beda4d404a6e751439b562100b902ba9c98
>> >> Author: Felix Fietkau <nbd@openwrt.org>
>> >> Date:   Sun Aug 28 21:11:01 2011 +0200
>> >>
>> >>     mac80211: retry sending failed BAR frames later instead of tearing down aggr
>> >>
>> >>     Unfortunately failed BAR tx attempts happen more frequently than I
>> >>     expected, and the resulting aggregation teardowns cause performance
>> >>     issues, as the aggregation session does not always get re-established
>> >>     properly.
>> >>     Instead of tearing down the entire aggr session, we can simply store the
>> >>     SSN of the last failed BAR tx attempt, wait for the first successful
>> >>     tx status event, and then send another BAR with the same SSN.
>> >>
>> >>     Signed-off-by: Felix Fietkau <nbd@openwrt.org>
>> >>     Cc: Helmut Schaa <helmut.schaa@googlemail.com>
>> >>     Signed-off-by: John W. Linville <linville@tuxdriver.com>
>> >>
>> >> This looks relevant. As a matter of personal convenience, I might try
>> >> backing out the change tomorrow if it seems that it'll help.
>> > Felix,
>> >
>> > is there any way we can restore the old behavior of tearing
>> > down BAs due to BAR transmission failures without breaking
>> > ath9k (or rt2x00)?
>> 
>> No problem with rt2x00 since it has problems reporting the
>> tx status of BARs :(
> hm, does the hardware pass BA to the driver? Because, the
> BA which results from a BAR usually contains the ssn from
> the BAR (just the ra / ta is switched). Come to think of it
> the ssn and the bitmap might also be useful to map tx_status
> to a specific skb. 
>  
>> > Or am I misinterpreting the commit and
>> > this patch was just a temporary fix since back then mac80211
>> > had problems with setting up BA session (and they might
>> > have been fixed in the meantime?!).
>> >
>> > Quote from the first paragraph of the commit:
>> >> ... the resulting aggregation teardowns cause performance
>> >> issues, as the aggregation session does not always get
>> >> re-established properly.
>> 
>> As far as I understood tearing down the BA session and then
>> starting it again has a much higher impact onto throughput
>> then just resending the BAR after the next successfully sent
>> AMPDU.
> Well, at least in case of carl9170 it looks like the resending
> BARs are confusing the receiver reorder buffer on the other 
> HT peer. Since it looks like the HT peer dump hardware is still
> ACKs incoming frames from a carl9170 station, but the software
> reorder buffer on the HT peer is silently dropping the data frames.
> [Of course, data frames from other TIDs, MGMT (probes) or null-
> frames are not reordered... so the connection polling with
> null-frames does not detect the bad state and won't try to
> recover).
I think we need to figure out what exactly confuses the receiver reorder
buffer of a HT peer. It sounds to me like something is causing a gap in
sequence number allocation, but I don't know what would do that. Where
exactly is the connection between BAR retransmission and those reorder
issues?

- Felix

  reply	other threads:[~2012-06-09 14:55 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-07  6:53 Sean Patrick Santos
2012-06-07 13:18 ` carl9170 issue Christian Lamparter
2012-06-07 19:31   ` Sean Patrick Santos
2012-06-08  7:57     ` Sean Patrick Santos
2012-06-09  0:18       ` BA session issue due to old BARs? Christian Lamparter
2012-06-09  1:11         ` [RFC] mac80211: follow 802.11-2007 11.5.3 Error recovery upon HT BA failure Christian Lamparter
2012-06-09  7:59           ` Johannes Berg
2012-06-09 12:14             ` [RFC v2] " Christian Lamparter
2012-06-09 12:28               ` Johannes Berg
2012-06-09 14:01                 ` [RFC v3] " Christian Lamparter
2012-06-10  5:13                   ` Emmanuel Grumbach
2012-06-10 12:20                     ` Christian Lamparter
2012-06-10 18:55                       ` Emmanuel Grumbach
2012-06-09 12:20         ` BA session issue due to old BARs? Helmut Schaa
2012-06-09 14:23           ` Christian Lamparter
2012-06-09 14:55             ` Felix Fietkau [this message]
2012-06-09 17:40               ` Christian Lamparter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4FD363E8.9090508@openwrt.org \
    --to=nbd@openwrt.org \
    --cc=chunkeey@googlemail.com \
    --cc=helmut.schaa@googlemail.com \
    --cc=linux-wireless@vger.kernel.org \
    --cc=quantheory@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).