linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Mikko Virkkilä" <mikko.virkkila@bluegiga.com>
To: Mattias Nissler <mattias.nissler@gmx.de>
Cc: Ivo van Doorn <ivdoorn@gmail.com>,
	Johannes Berg <johannes@sipsolutions.net>,
	rt2400-devel@lists.sourceforge.net,
	"John W. Linville" <linville@tuxdriver.com>,
	linux-wireless <linux-wireless@vger.kernel.org>,
	dsd@gentoo.org, kune@deine-taler.de
Subject: Re: ACK matching [was: TX status reporting with help of an ack queue]
Date: Fri, 19 Sep 2008 12:08:14 +0300	[thread overview]
Message-ID: <1221815294.19539.15.camel@virkkmi-linux> (raw)
In-Reply-To: <1221776990.4563.19.camel@localhost>

On Thu, 2008-09-18 at 22:29 +0000, Mattias Nissler wrote:
> [I've added the zd1211rw maintainers to the CC, I hope they can shed
> some light on the question whether the ack queue mechanism that driver
> has is actually correct]
> 
> I've had a closer look at the idea of deciding whether a frame has
> been
> transmitted succesfully by monitoring incoming ACK frames and I've hit
> a
> fundamental problem: How do you correlate incoming ACK frames to the
> frames that were actually transmitted? The ACK frame only carries the
> address of the station that transmitted the frame being acked, no
> further information. Now this means if you have the hardware TX two
> frames and receive one ACK frame in the RX path, you cannot know which
> TX frame the ACK belongs to, because they will be identical, right?
> 
> The hardware, however, knows, because the ACKs are required to be
> transmitted directly after the corresponding frame is received, but we
> don't know in the driver about this timing information, at least not for
> rt2x00.
> 
> I wonder whether the ack queue idea Mikko found in the zd1211rw driver
> is actually working correctly for that driver? I've only had a short
> look, but found that incoming ACKs are only matched against transmitted
> frames by means of the address carried within the ACK. So I'd think in
> the situation I outlined above, the zd1211rw driver will also be unable
> to match the ACK to the correct frame. Any comments on this?
> 
> Mattiass
> 

AFAIK your analysis is correct and I think this is somewhat of a known
problem with the implementation in zd1211rw driver. I haven't come
across a way of getting around the problem. I read some suggestions
about stopping all transmission to a certain address until we get a
status update for the previous packet sent to that address, but iirc
this was deemed impractical. On the other hand the current
implementation in zd1211rw (and hopefully soon in rt2x00) doesn't really
break anything that works without it and on rt2x00 it gets AP-mode in a
somewhat more usable state. 

- Mikko

  reply	other threads:[~2008-09-19  9:08 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1221494693.14102.22.camel@virkkmi-linux>
2008-09-15 17:11 ` [RFC][PATCH] TX status reporting with help of an ack queue Ivo van Doorn
2008-09-15 17:56   ` Mattias Nissler
2008-09-15 18:03     ` Johannes Berg
2008-09-15 19:00       ` Mattias Nissler
2008-09-15 19:21         ` Johannes Berg
2008-09-15 19:39           ` Mattias Nissler
2008-09-15 19:46             ` Johannes Berg
2008-09-15 20:20               ` Mattias Nissler
2008-09-15 20:33                 ` Johannes Berg
2008-09-15 21:01                   ` Mattias Nissler
2008-09-24  0:59                     ` John W. Linville
2008-09-24  7:40                       ` Mattias Nissler
2008-09-24  8:34                         ` Johannes Berg
2008-09-15 21:28                   ` Ivo van Doorn
2008-09-15 21:41                     ` Mattias Nissler
2008-09-16 18:17                       ` Ivo van Doorn
2008-09-17 23:08                         ` Mattias Nissler
2008-09-16  6:24                   ` Mikko Virkkilä
2008-09-16  4:58         ` Mikko Virkkilä
2008-09-16 18:18           ` Ivo van Doorn
2008-09-18 20:37             ` Mattias Nissler
2008-09-18 22:29               ` ACK matching [was: TX status reporting with help of an ack queue] Mattias Nissler
2008-09-19  9:08                 ` Mikko Virkkilä [this message]
2008-09-19  9:46                   ` Mattias Nissler
2008-09-19  9:54                     ` Johannes Berg
2008-09-19 10:19                       ` Mattias Nissler
2008-09-19 10:31                         ` Johannes Berg
2008-09-19 13:51                           ` Mattias Nissler
2008-09-19 13:55                             ` Johannes Berg
2008-09-19 14:20                             ` Mikko Virkkilä
2008-09-19 17:50                               ` Jouni Malinen
2008-09-23  6:09                                 ` Mikko Virkkilä
2008-09-23  7:05                                   ` Mattias Nissler
2008-09-19 18:30                     ` Ivo van Doorn
2008-10-19  5:49                 ` Daniel Drake

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=1221815294.19539.15.camel@virkkmi-linux \
    --to=mikko.virkkila@bluegiga.com \
    --cc=dsd@gentoo.org \
    --cc=ivdoorn@gmail.com \
    --cc=johannes@sipsolutions.net \
    --cc=kune@deine-taler.de \
    --cc=linux-wireless@vger.kernel.org \
    --cc=linville@tuxdriver.com \
    --cc=mattias.nissler@gmx.de \
    --cc=rt2400-devel@lists.sourceforge.net \
    /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).