Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 23 Aug 2011 21:10:56 +0800
From:      Adrian Chadd <adrian@freebsd.org>
To:        bschmidt@freebsd.org
Cc:        Kang Yin Su <cantona@cantona.net>, freebsd-wireless@freebsd.org
Subject:   Re: AR5416 beacon issue.
Message-ID:  <CAJ-Vmo=QAc5NLvs6EH-FW9dgWhKis927NiQZ7BXTA4q6KCJ8XQ@mail.gmail.com>
In-Reply-To: <201108231415.11981.bschmidt@freebsd.org>
References:  <CAHjFwoCVwRNyJ_jCgthWFvi%2Bh%2B7xy6-bt=hDrhimMVHS7--dtQ@mail.gmail.com> <CAHjFwoA-G5m-mHdT3L2se88Li4qEaFSmR1iggKZcPrV74mtrhA@mail.gmail.com> <CAJ-Vmokazy8xUGvCM-R9zG3u_x%2BjWGcvqp6UYX=2_i9sctbv6Q@mail.gmail.com> <201108231415.11981.bschmidt@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 23 August 2011 20:15, Bernhard Schmidt <bschmidt@freebsd.org> wrote:
>> Bernhard?
>
> Please stop top posting, thanks.

Ok.

> You can't over-simplify here. Some HW supports generating seqnos,
> some other don't and yet again other overwrites it anyways. What
> you really need is a per-case decision. If the hardware is able
> to generate seqnos correctly (which afaik ath is) then use it.
> If the generated numbers are wrong for whatever reason, then try
> to use those generated in software.

ath generates sequence numbers ok - except for handling 11n aggregation.
At that point, you need to do sequence number allocation in software.
So how's the beacon code (in this example) supposed to handle it?

> What you can generalize is, if the HW does something wrong (or
> not 100% correct) try to use SW as a fallback. See the beacon
> miss implementation in SW as an example, it is only used for
> the multiple VAP case, otherwise the HW function itself is used.

Right. But I'm still unclear about how we could possibly handle it.
(But I've been deep in this aggregation stuff, so my "big picture"
handle is not quite working at the moment.)

For example, with ath sequence number generation - we need to do it in
software if the NIC is going to be doing 11n, otherwise we can leave
it as-is.
So do we somehow teach the net80211 code about the hardware
capabilities? Do we add a capability _and_ a callback to
enable/disable it?
If we're doing 11n then we have to disable it - so net80211 has to
fill in its own sequence numbers.
If we're not doing 11n then the ath HAL still disables hardware
sequence numbers on AR5416 and later - how do you propose we tell the
driver to flip it on/off?



Adrian



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-Vmo=QAc5NLvs6EH-FW9dgWhKis927NiQZ7BXTA4q6KCJ8XQ>