summaryrefslogtreecommitdiffstats
path: root/sys/geom/geom_io.c
diff options
context:
space:
mode:
authoradrian <adrian@FreeBSD.org>2012-06-11 07:44:16 +0000
committeradrian <adrian@FreeBSD.org>2012-06-11 07:44:16 +0000
commit2cecdd81d885af2868172221b5068c523eade78c (patch)
tree15ac00e3db1416efeb3ffcb7bb12e063586ed40d /sys/geom/geom_io.c
parenta067a20110d7a491061788fe77f1254270e354f3 (diff)
downloadFreeBSD-src-2cecdd81d885af2868172221b5068c523eade78c.zip
FreeBSD-src-2cecdd81d885af2868172221b5068c523eade78c.tar.gz
Wrap the whole (software) TX path from ifnet dequeue to software queue
(or direct dispatch) behind the TXQ lock (which, remember, is doubling as the TID lock too for now.) This ensures that: (a) the sequence number and the CCMP PN allocation is done together; (b) overlapping transmit paths don't interleave frames, so we don't end up with the original issue that triggered kern/166190. Ie, that we don't end up with seqno A, B in thread 1, C, D in thread 2, and they being queued to the software queue as "A C D B" or similar, leading to the BAW stalls. This has been tested: * both STA and AP modes with INVARIANTS and WITNESS; * TCP and UDP TX; * both STA->AP and AP->STA. STA is a Routerstation Pro (single CPU MIPS) and the AP is a dual-core Centrino. PR: kern/166190
Diffstat (limited to 'sys/geom/geom_io.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud