NetBSD/sys/dev
dyoung 4a2df5a4d4 Bug fix: synchronize Transmit commands with all other commands.
Following Charles Hannum's wi(4) optimizations, there could be a
Transmit command outstanding after wi_tx_intr or wi_start returns.
The driver would blithely issue a second command [*] before the
first command was finished, taking the first command's WI_EV_CMD
indication to mean the second command had finished.  The driver
would be dreadfully confused when the second command's results did
not meet its expectations (e.g., a RID mismatch error would occur).
The packet transmit section of the code would never read the
WI_EV_CMD it expected, so transmissions would cease.

This patch counts the outstanding transmit commands (there can be
only one) and, if a transmit command is outstanding at the top of
wi_cmd(), wi_cmd waits for the command to complete.  If there was
a transmit command outstanding when wi_cmd begins, it calls
wi_cmd_intr() on its way out.

I have tested this on an Orinoco card.  Previously, the card would
stop transmitting or the kernel would panic as desynchronization
occurred.  Now it works beautifully.

[*] A second command could be issued by wi_ioctl or else by
    wi_intr->wi_info_intr->wi_newstate->wi_read_xrid->wi_read_rid.
2004-12-13 17:55:28 +00:00
..
acpi Add ACPI joy(4) attachment, based on lpt_acpi.c by jmcneill@, 2004-12-02 14:33:31 +00:00
apm
arcbios uint32_t -> unsigned long, per the differences between 32- and 64-bit ARCS. 2004-10-02 09:53:27 +00:00
ata Move ata_dmaerr() so that it's called only when there really has been an error 2004-12-08 18:49:52 +00:00
bi Include the <sys/bufq.h> header to allow these to compile again. 2004-10-31 12:52:55 +00:00
bluetooth Make ubt build; bluetooth.c is btbus code, not bthcidrv. 2004-06-22 10:37:00 +00:00
cardbus Add the Belkin F5D6020v3 to the match array for rtw. 2004-12-07 04:36:06 +00:00
dec
dkwedge move buffer queue related stuffs from buf.h to their own header, bufq.h. 2004-10-28 07:07:35 +00:00
dmover Correct a typo: it's fnullop_kqfilter and not fnullop_kqueue. 2004-12-05 22:42:27 +00:00
ebus constify audio_hw_if, midi_hw_if, and radio_hw_if. 2004-10-29 12:57:15 +00:00
eisa Move a comment to indicate the true "end of hardware supported fields". 2004-12-07 19:14:57 +00:00
gpib move buffer queue related stuffs from buf.h to their own header, bufq.h. 2004-10-28 07:07:35 +00:00
hpc Fix comments regarding configration bounaries 2004-12-12 21:03:06 +00:00
i2c Check and clear the HT bit in strtc_clock_read(), not just strtc_clock_write() 2004-11-24 14:46:18 +00:00
i2o When adding/deleting multicast addresses, only whack the address 2004-10-30 18:08:34 +00:00
ic Bug fix: synchronize Transmit commands with all other commands. 2004-12-13 17:55:28 +00:00
ieee1394 a round of autoconf cleanup: 2004-09-13 12:55:47 +00:00
ir
isa Fix comments regarding configration bounaries 2004-12-12 21:03:06 +00:00
isapnp PR/28645: Fabien Devaux: Infinite loop at startup with Acer Travelmate 313T 2004-12-13 13:46:29 +00:00
marvell Put back a few locators.h includes that are still needed here. Now evbppc 2004-11-26 05:10:31 +00:00
mca move buffer queue related stuffs from buf.h to their own header, bufq.h. 2004-10-28 07:07:35 +00:00
microcode Add binary versions of firmware images, which will be used Soon. 2004-08-01 19:31:46 +00:00
mii Add BCM 4401 phy (from FreeBSD). 2004-11-24 10:15:54 +00:00
mscp Include the <sys/bufq.h> header to allow these to compile again. 2004-10-31 12:52:55 +00:00
mvme Remove spurious second argument to sizeof(). 2004-06-06 13:34:36 +00:00
news
ofisa one more case: don't use ISACF_* constants internally 2004-09-01 21:30:25 +00:00
ofw Add support for wedges to the OpenFirmware disk driver. 2004-09-25 05:21:03 +00:00
pci Some SiS 7012 chips come muted by default, so un-mute all SiS 7012 chips at 2004-12-11 17:48:56 +00:00
pckbport Add & document WSKBD_USONLY: In order to strip down the space usage of wscons, 2004-10-04 00:20:23 +00:00
pcmcia When adding/deleting multicast addresses, only whack the address 2004-10-30 18:08:34 +00:00
podulebus a round of autoconf cleanup: 2004-09-13 12:55:47 +00:00
ppbus remove the ppbus_print_child() function which is pointless as used here 2004-09-13 12:49:58 +00:00
qbus Include the <sys/bufq.h> header to allow these to compile again. 2004-10-31 12:52:55 +00:00
raidframe The switch() in rf_ContinueReconstructFailedDisk() is never actually 2004-12-12 20:53:15 +00:00
rasops
rcons
sbus When adding/deleting multicast addresses, only whack the address 2004-10-30 18:08:34 +00:00
scsipi Define SYNCHRONIZE CACHE (16). 2004-12-07 23:21:06 +00:00
smbus
std a round of autoconf cleanup: 2004-09-13 12:55:47 +00:00
sun
sysmon According to acpi_acad.c and powerd(8), PRESSED event for AC adapter device 2004-05-22 11:32:50 +00:00
tc constify audio_hw_if, midi_hw_if, and radio_hw_if. 2004-10-29 12:57:15 +00:00
usb Sprinkle #ifdef INET to make a GENERIC kernel compile with INET undefined. 2004-12-06 02:59:23 +00:00
vinum Fix warnings of the type: long int format, int arg 2004-11-08 21:30:05 +00:00
vme move buffer queue related stuffs from buf.h to their own header, bufq.h. 2004-10-28 07:07:35 +00:00
wscons Try to document keymap names - this really a trip into the obscure. 2004-12-02 19:59:31 +00:00
wsfont
xmi
DEVNAMES Add ixpide. 2004-12-08 15:54:39 +00:00
Makefile
auconv.c add the following four functions: 2004-11-13 08:08:22 +00:00
auconv.h Add forward declaration for struct audio_params. 2004-12-06 13:28:34 +00:00
audio.c constify audio_hw_if, midi_hw_if, and radio_hw_if. 2004-10-29 12:57:15 +00:00
audio_if.h constify audio_hw_if, midi_hw_if, and radio_hw_if. 2004-10-29 12:57:15 +00:00
audiobell.c
audiobellvar.h
audiovar.h constify audio_hw_if, midi_hw_if, and radio_hw_if. 2004-10-29 12:57:15 +00:00
aurateconv.c
ccd.c move buffer queue related stuffs from buf.h to their own header, bufq.h. 2004-10-28 07:07:35 +00:00
ccdvar.h hide bufq_state from userland. 2004-10-28 06:59:18 +00:00
cgd.c move buffer queue related stuffs from buf.h to their own header, bufq.h. 2004-10-28 07:07:35 +00:00
cgd_crypto.c
cgd_crypto.h Protect against multiple inclusion. 2004-08-23 04:45:18 +00:00
cgdvar.h Protect against multiple inclusion. 2004-08-23 04:45:18 +00:00
clock_subr.c
clock_subr.h
clockctl.c
cninit.c
cons.c
cons.h
dksubr.c move buffer queue related stuffs from buf.h to their own header, bufq.h. 2004-10-28 07:07:35 +00:00
dkvar.h
fss.c Move the inclusion of <sys/bufq.h> from fss.c to fssvar.h to make 2004-10-29 15:39:38 +00:00
fssvar.h Move the inclusion of <sys/bufq.h> from fss.c to fssvar.h to make 2004-10-29 15:39:38 +00:00
kloader.c There's no need to pass a proc value when using UIO_SYSSPACE with 2004-09-17 14:11:20 +00:00
kloader.h MI part of kloader moved to dev/kloader.c from arch/hpc/hpc/ 2004-07-06 13:09:18 +00:00
kttcp.c
kttcpio.h
ld.c move buffer queue related stuffs from buf.h to their own header, bufq.h. 2004-10-28 07:07:35 +00:00
ldvar.h Add support for wedges to the logical disk driver. 2004-09-25 04:28:08 +00:00
md.c move buffer queue related stuffs from buf.h to their own header, bufq.h. 2004-10-28 07:07:35 +00:00
md.h
md_root.c
midi.c constify audio_hw_if, midi_hw_if, and radio_hw_if. 2004-10-29 12:57:15 +00:00
midi_if.h constify audio_hw_if, midi_hw_if, and radio_hw_if. 2004-10-29 12:57:15 +00:00
midisyn.c constify audio_hw_if, midi_hw_if, and radio_hw_if. 2004-10-29 12:57:15 +00:00
midisynvar.h constify audio_hw_if, midi_hw_if, and radio_hw_if. 2004-10-29 12:57:15 +00:00
midivar.h constify audio_hw_if, midi_hw_if, and radio_hw_if. 2004-10-29 12:57:15 +00:00
mm.c
mulaw.c add the follwings: 2004-11-05 16:31:14 +00:00
mulaw.h add the follwings: 2004-11-05 16:31:14 +00:00
nullcons_subr.c
radio.c constify audio_hw_if, midi_hw_if, and radio_hw_if. 2004-10-29 12:57:15 +00:00
radio_if.h constify audio_hw_if, midi_hw_if, and radio_hw_if. 2004-10-29 12:57:15 +00:00
radiovar.h constify audio_hw_if, midi_hw_if, and radio_hw_if. 2004-10-29 12:57:15 +00:00
rnd.c splvm should be enough to protect rnd sample queue and rnd_mempool 2004-11-29 13:33:37 +00:00
rndpool.c
sequencer.c
sequencervar.h
verified_exec.c
vnd.c move buffer queue related stuffs from buf.h to their own header, bufq.h. 2004-10-28 07:07:35 +00:00
vndvar.h