All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christian Lamparter <chunkeey@googlemail.com>
To: Andreas Hartmann <andihartmann@01019freenet.de>
Cc: Stanislaw Gruszka <sgruszka@redhat.com>,
	linux-wireless@vger.kernel.org, users@rt2x00.serialmonkey.com,
	Francisco Pina Martins <f.pinamartins@gmail.com>,
	Helmut Schaa <helmut.schaa@googlemail.com>,
	Felix Fietkau <nbd@openwrt.org>
Subject: Re: [PATCH 1/2] mac80211: introduce IEEE80211_HW_TEARDOWN_AGGR_ON_BAR_FAIL
Date: Mon, 3 Dec 2012 16:29:16 +0100	[thread overview]
Message-ID: <201212031629.16806.chunkeey@googlemail.com> (raw)
In-Reply-To: <50BCB3A3.4090708@01019freenet.de>

On Monday, December 03, 2012 03:13:55 PM Andreas Hartmann wrote:
> Stanislaw Gruszka wrote:
> > Commit f0425beda4d404a6e751439b562100b902ba9c98 "mac80211: retry sending
> > failed BAR frames later instead of tearing down aggr" caused regression
> > on rt2x00 hardware (connection hangs).
> 
> This patch caused a problem, too, with carl9170
> (http://thread.gmane.org/gmane.linux.kernel.wireless.general/92203/focus=92376).
> How did they fix it (the thread unfortunately ends without any solution
> / patch).

This was fixed by: carl9170: fix HT peer BA session corruption
(c9122c0d63a50 in wireless-testing). The issue here is that the
hardware does not set the tx success bit when it receives a
BA for a sent BAR [looks like it is expecting a legacy ACK?!
but who knows - the original vendor driver [otus] didn't really
deal with BARs anyway].

So the driver has to do that job and currently it's done in
the following way:
When mac80211 sends a BAR, the driver will keep a reference of
the frame around in ar->bar_list, before it is sent on its way.
If the device receives a BA within the retry window then the
driver's rx-path will enter carl9170_ba_check. This function
sets the TX_STAT_ACK flag [for the BAR] if the incoming BA
matches.

While there are a few problems with this approach [added tx and rx
overhead due to flexible ba filtering and bar queuing, unwanted BAR
retries, ...], it was one of the better solution which was within
the capabilities of the hardware, firmware and driver.
Obviously, if the ar9170 hardware would just set that tx success
bit [ath9k mac does this properly], this wouldn't be necessary.

Regards,
	Chr

  reply	other threads:[~2012-12-03 15:29 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-03 11:56 [PATCH 1/2] mac80211: introduce IEEE80211_HW_TEARDOWN_AGGR_ON_BAR_FAIL Stanislaw Gruszka
2012-12-03 11:59 ` [PATCH 2/2] Revert: "rt2x00: Don't let mac80211 send a BAR when an AMPDU subframe fails" Stanislaw Gruszka
2012-12-03 15:27   ` John W. Linville
2012-12-03 14:13 ` [PATCH 1/2] mac80211: introduce IEEE80211_HW_TEARDOWN_AGGR_ON_BAR_FAIL Andreas Hartmann
2012-12-03 15:29   ` Christian Lamparter [this message]
2012-12-03 19:56     ` Andreas Hartmann
2012-12-03 20:21       ` Helmut Schaa
2012-12-04  9:59         ` Stanislaw Gruszka
2012-12-03 17:13   ` Felix Fietkau

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=201212031629.16806.chunkeey@googlemail.com \
    --to=chunkeey@googlemail.com \
    --cc=andihartmann@01019freenet.de \
    --cc=f.pinamartins@gmail.com \
    --cc=helmut.schaa@googlemail.com \
    --cc=linux-wireless@vger.kernel.org \
    --cc=nbd@openwrt.org \
    --cc=sgruszka@redhat.com \
    --cc=users@rt2x00.serialmonkey.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 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.