Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 23 Sep 2012 15:32:46 -0700
From:      Adrian Chadd <adrian@freebsd.org>
To:        Berislav Purgar <bpurgar@gmail.com>
Cc:        freebsd-wireless@freebsd.org
Subject:   Re: broken TX in HEAD (AR5212)
Message-ID:  <CAJ-Vmo=ajaj7aLQ9O25Nc%2B=MkO-p2Ko4nOyo2KrnozUgSsNGng@mail.gmail.com>
In-Reply-To: <CAAUsrB4tG=Xy55kF1=oZy-BT%2BqWAPsjFiQJOrdSWO-AZcPJqAw@mail.gmail.com>
References:  <CAAUsrB4tG=Xy55kF1=oZy-BT%2BqWAPsjFiQJOrdSWO-AZcPJqAw@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Hiya,

Ok. Please keep me posted.

I've found some annoying behaviours this weekend.

* The rx proc tasklet gets called slightly too often- if an RX
interrupt comes in whilst ath_rx_proc is running, the kernel will
preempt that thread, run ath_intr(), which will reschedule ath_rx_proc
to run. The next time it runs (which will be immediatley after the
previous one finishes), it'll discover there's nothing left in the RX
queue.

That's not too scary; just slightly wasteful.

But the annoying one:

* I'm getting TXEOL interrupts appearing (which is by design, so
that's OK) - but then when the descriptor is checked, the first
descriptor in the list shows up as HAL_EINPROGRESS - and sure enough,
the contents of that descriptor are not yet initialised. Now on my
MIPS boards the descriptors are in KSEG1 - which is supposed to be
unmapped, uncached memory. A subsequent TXEOL (from another descriptor
being pushed into the queue) or TXOK (from that descriptor completing
TX successfully) will kick the queue along.

Now I don't _think_ this is the core problem. I thought it was a
problem before but it's very likely just something that I've noticed
going slightly "odd" when I began digging into it. (Yes, I may have
spent a chunk of yesterday chasing a red herring. Sigh.)

What actually does happen is that hostapd actually boots my station
off because it fails to re-synchronise the group key. When hostapd
decides its time, it regenerates a group key and pushes it out to each
STA. It's done STA-at-a-time - ie, the STA has to ACK the new group
key. I'm seeing hostapd not "see" an ACK and it's thus getting angry
and leaving.

I'm just adding some debugging code to my tree now to see if I can
pinpoint what's going on - whether the frame is going out, whether
it's being successfully transmitted, whether the other end hears it,
whether the receive path is working .. heck, since it's all done via
raw BPF sockets, it may be some BPF related hilarity. :(



Adrian



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-Vmo=ajaj7aLQ9O25Nc%2B=MkO-p2Ko4nOyo2KrnozUgSsNGng>