Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 16 Mar 2012 16:23:59 -0700
From:      Adrian Chadd <adrian@freebsd.org>
To:        Vincent Hoffman <vince@unsane.co.uk>
Cc:        freebsd-wireless@freebsd.org
Subject:   Re: ath0 timeout was "Re: (more) bugs fixed in -HEAD, AP mode is now mostly (again) stable!"
Message-ID:  <CAJ-Vmon7qRAw=y8i9xAKeG3zBjNz8NRXcLBUyNKnHXAmc%2BzKOA@mail.gmail.com>
In-Reply-To: <CAJ-VmokLzn1oT0MsenfmZ08n5ttBvn1S5RWnL6gD0i7KGsZ3xA@mail.gmail.com>
References:  <CAJ-VmokYNFnNrWxk=Sg%2BhRuOhkGj5%2Bi7TGB3ni_YBT9=pjs8AQ@mail.gmail.com> <4F59DD98.8080905@unsane.co.uk> <CAJ-Vmokurdn-FGfdFuuN84a9==fdoYjAPBOd4icT-eBJ2BuGpg@mail.gmail.com> <4F5AA149.8000904@unsane.co.uk> <CAJ-VmommaSh3Y=huxpfHRbVb0j3HGXTfDNi_OHJ5Tz8_AHqCSQ@mail.gmail.com> <4F5BDF3C.8070605@unsane.co.uk> <CAJ-VmomFfAXncDp48LYQvRTL5-HG4GpnDkkAy71ReTAFRyK41A@mail.gmail.com> <4F5C0302.8090403@unsane.co.uk> <CAJ-Vmo=HpBYR6ci-dyJWJK9_OkUVC2J_bj7YknNvKwR8to0q8w@mail.gmail.com> <4F5CA45C.1010603@unsane.co.uk> <4F5E656F.4040004@unsane.co.uk> <CAJ-Vmomg4mPLA8Weii1_ohFgj8_5zng=0QBQZqS1J=xy_m8h0Q@mail.gmail.com> <4F5FC022.3040202@unsane.co.uk> <CAJ-VmokLzn1oT0MsenfmZ08n5ttBvn1S5RWnL6gD0i7KGsZ3xA@mail.gmail.com>

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

Yup, this seems like a concurrency issue with the driver. I'm trying
to debug exactly what's going on, but it seems that multiple
concurrent threads are doing TX and they're overlapping. I was under
the impression that all TX'ing via ath_start() would be serialised via
ifnet but apparently not. It's also possible some frames that are
legitimately going into the aggregation session (ie, they get a
sequence number and want to be ACKed) are being sent via the
ath_tx_raw() method, which bypasses the ifnet serialisation entirely.

I was reproducing it at home and in the office within 30 seconds:

* have chrome running with say, 15 tabs;
* kill -9 it so it dies very quickly;
* fire up the interface;
* fire up debug logging, which is REALLY VERBOSE btw;
* fire up chrome again;
* reload all the tabs at once;
* watch LOTS of concurrent IO go on from lots of multiple sending
threads/processes;
* then, see some buffers get "stuck" in the software queue, just like you found.

Now, why the heck is that happening.. :)


Adrian



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-Vmon7qRAw=y8i9xAKeG3zBjNz8NRXcLBUyNKnHXAmc%2BzKOA>