Subject: Re: ath seems still buggy
To: Greg Troxel <gdt@ir.bbn.com>
From: Sam Leffler <sam@errno.com>
List: current-users
Date: 10/21/2005 18:22:30
Greg Troxel wrote:
>   Factors other than S/N ratio cause loss.
>   Multipath is important, especially outdoors---see
>   <http://pdos.lcs.mit.edu/~rtm/papers/p442-aguayo.pdf>.  Packet duration
>   is important, too, especially in the face of pulsed/bursty interference
>   (microwave ovens) and (according to anecdote) hidden nodes.
> 
> Sure, I realize that, but 54 Mb/s vs 1 Mb/s is huge in terms of Eb/N0.
> Thanks for the reference.
> 
>   SampleRate, <http://www.pdos.lcs.mit.edu/papers/jbicket-ms.pdf>, tracks
>   the performance of various rates.
> 
> I realized that when I started to read the code.
> 
>   This is part of the design, as I understand it.  Even at high rates
>   of packet loss, a high bitrate may still have higher throughput than
>   a low rate.  SampleRate tracks the Expected Transmission Time (ETT)
>   for each packet length at each bitrate, and seeks to minimize ETT by
>   its choice of bitrate.
> 
> That's fair, but I'm seeing many packets in a row with no ack (failed
> transmission), which is way worse than a lot of retries.

As I said there are problems with the freebsd code from which you're 
working.  Compare things against the code in madwifi (aka linux) as 
that's John's native development environment.

> 
>   > It would be nice to take advantage of multi-rate retry, which my cards
>   > seem to have.
> 
>   I think SampleRate will do that.
> 
> Unless you use rts/cts; see near line 251.  I'm not sure why the code
> is written so that if rts/cts then no multi-rate retry (time to read
> the paper...).
> 
> Can you explain the long and short retry counters, with and without
> rts/cts?  With rts/cts, I typically observe many RTS attempts,
> followed by a single cts and a successful data/ack.  I haven't
> observed without rts/cts nearly as much lately.

Long retries are data frame retransmits, short are rts frames.  The 
excessive rts retransmits may be due to a bug in the duration 
calculation; I noticed this fix was not in the latest netbsd code.

	Sam