freebsd-skq/sys/dev
Bill Paul 1e35c8564a Fix the problem with the Cisco Aironet 340 PCMCIA card. Most newer drivers
for Windows are deserialized miniports. Such drivers maintain their own
queues and do their own locking. This particular driver is not deserialized
though, and we need special support to handle it correctly.

Typically, in the ndis_rxeof() handler, we pass all incoming packets
directly to (*ifp->if_input)(). This in turn may cause another thread
to run and preempt us, and the packet may actually be processed and
then released before we even exit the ndis_rxeof() routine. The
problem with this is that releasing a packet calls the ndis_return_packet()
function, which hands the packet and its buffers back to the driver.
Calling ndis_return_packet() before ndis_rxeof() returns will screw
up the driver's internal queues since, not being deserialized,
it does no locking.

To avoid this problem, if we detect a serialized driver (by checking
the attribute flags passed to NdisSetAttributesEx(), we use an alternate
ndis_rxeof() handler, ndis_rxeof_serial(), which puts the call to
(*ifp->if_input)() on the NDIS SWI work queue. This guarantees the
packet won't be processed until after ndis_rxeof_serial() returns.

Note that another approach is to always copy the packet data into
another mbuf and just let the driver retain ownership of the ndis_packet
structure (ndis_return_packet() never needs to be called in this
case). I'm not sure which method is faster.
2004-03-11 09:40:00 +00:00
..
aac kthread_exit() no longer requires Giant, so don't force callers to acquire 2004-03-05 22:42:17 +00:00
acpi_support Add support for quirks for acpi tables. Key off OEM vendor and revision. 2004-03-03 03:02:17 +00:00
acpica Simplify some logic in converting a buffer to an integer. 2004-03-09 05:44:47 +00:00
adlink Lock Giant around the body of the adlink_loran() function used by the 2004-03-05 22:41:22 +00:00
advansys Make the extern for adv_mcode match the reality: it's u_int8_t, but 2004-03-10 20:52:47 +00:00
agp Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
aha Save the device so we can do a device_printf. 2003-11-13 04:14:53 +00:00
ahb Make this at least compile on 64 bit platforms. Its been breaking 2003-07-30 20:09:22 +00:00
aic Use __FBSDID(). 2003-08-24 17:55:58 +00:00
aic7xxx Fixed style of DPADD and LDADD assignments as per style.Makefile(5). 2004-02-05 22:44:25 +00:00
amd Setting pccb->ccb_h.status to CAM_REQ_CMP one time is enough. 2004-01-21 10:49:42 +00:00
amr Check that amrd_sc is non-NULL before dereferencing it, not after. 2004-02-22 10:00:05 +00:00
an Remove the HACK section it breaks the older firmware and doesn't totally 2004-01-10 03:02:04 +00:00
ar Get rid of the last two uses of NG_NODELEN + 1 in the base system by 2004-01-26 16:41:21 +00:00
asr Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
ata Only setup sii_reset on sii311[24]. 2004-03-04 16:39:59 +00:00
ath Make this compile on amd64. 2004-02-06 00:10:54 +00:00
atkbdc Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
awi Correct beacon (src/bssid) for hostap and adhoc mode. 2004-01-15 13:30:06 +00:00
bfe When we get a packet error, move on, don't go into an infinite loop 2004-03-02 05:43:42 +00:00
bge Fix typo in a comment 2004-01-13 11:31:09 +00:00
bktr Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
buslogic Use PCIR_BAR(x) instead of PCIR_MAPS. 2003-09-02 17:30:40 +00:00
cardbus Make the cardbus driver a derived class of the pci driver. In theory, this 2003-11-01 12:45:03 +00:00
ciss Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
cm Replace the if_name and if_unit members of struct ifnet with new members 2003-10-31 18:32:15 +00:00
cnw Replace the if_name and if_unit members of struct ifnet with new members 2003-10-31 18:32:15 +00:00
cs o Add sysctl to allow ignoring checksum of eeprom. 2003-11-04 02:59:57 +00:00
ct Use __FBSDID(). 2003-08-24 17:55:58 +00:00
ctau Nursemaid: Fix tinderbox builds by removing the shadowing of the global 2004-03-04 14:16:12 +00:00
cx 1. Fix compilation and panic while system boot problem after makedev was 2004-03-02 16:44:07 +00:00
cy Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
dc Some integrated Davicom cards in sparc64 boxes have an all zeros 2004-01-08 19:08:27 +00:00
dcons Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
de Replace the if_name and if_unit members of struct ifnet with new members 2003-10-31 18:32:15 +00:00
dec Use __FBSDID(). 2003-08-24 17:55:58 +00:00
digi Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
dpt Device megapatch 1/6: 2004-02-21 19:42:58 +00:00
drm Prefer uintptr_t to intptr_t. 2004-03-03 08:27:33 +00:00
ed Adjust ed(4) for 64-bit platforms should it get newbus'ified. 2004-03-03 06:48:42 +00:00
eisa Use __FBSDID(). 2003-08-24 17:55:58 +00:00
em Only reset the phy when it is absolutely required. 2004-02-10 21:31:09 +00:00
en All three of these drivers abused cv_waitq_empty in the same way by spinning 2004-02-29 09:26:01 +00:00
ep MFp4: 2003-11-02 20:13:39 +00:00
ex Replace the if_name and if_unit members of struct ifnet with new members 2003-10-31 18:32:15 +00:00
exca Card type stuff was backwards, so assume io for the moment. mem needs 2003-10-07 04:29:04 +00:00
fatm Fix 0 / NULL mixup (this module isn't in LINT!) 2003-12-24 05:24:24 +00:00
fb Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
fdc Remove unused FDNUMTOUNIT() macro 2004-02-29 10:21:40 +00:00
fe Don't use caddr_t in mchash(). Also use C99 spellings over BSD ones. 2003-12-08 07:54:15 +00:00
firewire Check that xfer != NULL before dereferencing it, not after. 2004-02-22 01:10:11 +00:00
fxp Sometimes cardbus attachments don't attach, so while we track down 2003-11-28 05:28:29 +00:00
gem Add new Apple GEM PCI id. 2004-02-02 01:11:39 +00:00
gfb Catch a few places where NULL (pointer) was used where 0 (integer) was 2003-12-23 02:36:43 +00:00
gx Avoid overwriting capability bits marked earlier 2004-01-18 10:15:48 +00:00
harp Make sure that the first mbuf in the chain passed to atm_intr 2004-02-21 13:01:54 +00:00
hatm All three of these drivers abused cv_waitq_empty in the same way by spinning 2004-02-29 09:26:01 +00:00
hfa Unbreak after the change to use vm_paddr_t. Since vm_paddr_t is 2004-02-22 16:27:28 +00:00
hifn Use the external clock input for our PLL. 2004-03-10 10:10:46 +00:00
hme Replace the if_name and if_unit members of struct ifnet with new members 2003-10-31 18:32:15 +00:00
ic Add a header for the i8259A register definitions. This is based on 2004-01-06 18:59:37 +00:00
ichsmb Update the comment to indicate ICH5 support 2003-08-31 19:23:00 +00:00
ida Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
idt Use contigmalloc() instead of vm_page_alloc_contig(). Pass M_ZERO to 2004-01-14 06:14:35 +00:00
ie Replace the if_name and if_unit members of struct ifnet with new members 2003-10-31 18:32:15 +00:00
if_ndis Fix the problem with the Cisco Aironet 340 PCMCIA card. Most newer drivers 2004-03-11 09:40:00 +00:00
iicbus Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
iir Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
ips Switch from using mutexes to using semaphores to protect against early 2004-02-28 19:14:41 +00:00
isp Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
ispfw Update firmware sets for the 12160, 2200 and 2300 cards to the (more or 2004-01-14 18:38:03 +00:00
joy Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
kbd Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
led Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
lge Don't use caddr_t in mchash(). Also use C99 spellings over BSD ones. 2003-12-08 07:54:15 +00:00
lnc Peter prefers it this way, bde might also[*]. I just want to have a chance 2004-03-03 08:33:34 +00:00
matcd Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
mc146818
mca Use __FBSDID(). 2003-08-24 17:55:58 +00:00
mcd Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
md Fix a long-standing deadlock issue with vnode backed md(4) devices: 2004-03-10 20:41:09 +00:00
mii Make sure set the media type in the phy, we cannot trust it to have chosen 2004-01-17 10:44:39 +00:00
mk48txx Use __FBSDID(). 2003-08-24 17:55:58 +00:00
mlx Change another pointer name that was missed in the previous commit. 2004-03-01 21:45:49 +00:00
mly Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
mpt Catch a few places where NULL (pointer) was used where 0 (integer) was 2003-12-23 02:36:43 +00:00
mse Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
musycc Use PCIR_BAR(x) instead of PCIR_MAPS. 2003-09-02 17:30:40 +00:00
my Don't use caddr_t in mchash(). Also use C99 spellings over BSD ones. 2003-12-08 07:54:15 +00:00
ncv Const poison string accessor functions. 2003-10-26 00:51:40 +00:00
nge Don't use caddr_t in mchash(). Also use C99 spellings over BSD ones. 2003-12-08 07:54:15 +00:00
nmdm Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
nsp Use __FBSDID(). 2003-08-24 17:55:58 +00:00
null Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
ofw Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
owi Nursemaid: Fix compilation. 2003-12-10 15:09:38 +00:00
patm Eliminate multiple __FBSDID and sys/cdefs.h. 2004-03-10 17:03:27 +00:00
pccard Sync to pccarddevs 1.81. 2004-01-21 16:03:40 +00:00
pccbb kthread_exit() no longer requires Giant, so don't force callers to acquire 2004-03-05 22:42:17 +00:00
pcf fix another LP64 problem. READ_IVAR takes a pointer to an uintptr_t, not 2003-06-20 07:22:54 +00:00
pci Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
pcic Use __FBSDID(). 2003-08-24 17:55:58 +00:00
pdq Use contigmalloc() and contigfree() instead of vm_page_alloc_contig() and 2004-01-13 20:36:03 +00:00
ppbus Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
ppc Forgot an added file in the last commit. 2003-08-01 05:02:55 +00:00
pst Change the disk(9) API in order to make device removal more robust. 2004-02-18 21:36:53 +00:00
puc Expand the mask for the Avlab Technology, PCI IO 2S entry to cover the 2004-02-04 18:01:02 +00:00
raidframe Don't free k_cfg until we're finished using it -- reverse the order of 2004-02-22 09:55:48 +00:00
random kthread_exit() no longer requires Giant, so don't force callers to acquire 2004-03-05 22:42:17 +00:00
ray fix warnings. NULL -> 0 2003-12-24 19:00:49 +00:00
rc Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
re Don't use caddr_t in mchash(). Also use C99 spellings over BSD ones. 2003-12-08 07:54:15 +00:00
rndtest Use __FBSDID(). 2003-08-24 17:55:58 +00:00
rp Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
sab Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
safe Compile on amd64. (pointer/int mismatches and printf int vs long ) 2004-02-05 01:35:33 +00:00
sbni Replace the if_name and if_unit members of struct ifnet with new members 2003-10-31 18:32:15 +00:00
sbsh Replace the if_name and if_unit members of struct ifnet with new members 2003-10-31 18:32:15 +00:00
scd Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
sf Don't use caddr_t in mchash(). Also use C99 spellings over BSD ones. 2003-12-08 07:54:15 +00:00
si Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
sio Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
sk Fix multicast and promiscuous mode handling for Yukon devices. 2004-01-21 22:32:15 +00:00
smbus Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
sn Don't use caddr_t in mchash(). Also use C99 spellings over BSD ones. 2003-12-08 07:54:15 +00:00
snc Do if_xname conversion. I missed this one because it's pc98 only. 2003-11-01 23:24:38 +00:00
snp Don't set d_flags twice. The second setting clobbered D_NOGIANT. 2004-02-24 04:35:44 +00:00
sound Augment /dev/sndstat with the module names, if applicable. 2004-03-06 15:52:42 +00:00
speaker Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
sr Get rid of the last two uses of NG_NODELEN + 1 in the base system by 2004-01-26 16:41:21 +00:00
stg Fix some becuase -> because typos. 2003-12-17 16:12:01 +00:00
streams Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
sym unifdef old interface support out to prevent false positives. 2003-12-07 05:17:13 +00:00
syscons Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
tdfx Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
tga Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
ti Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
trm Use one bus_dma_tag_t for all pSRB instead of creating one for each. 2004-03-07 17:23:39 +00:00
twe Check that twed_sc is non-NULL before dereferencing it, not after. 2004-02-22 09:58:34 +00:00
tx Don't use caddr_t in mchash(). Also use C99 spellings over BSD ones. 2003-12-08 07:54:15 +00:00
txp Replace the if_name and if_unit members of struct ifnet with new members 2003-10-31 18:32:15 +00:00
uart Device megapatch 4/6: 2004-02-21 21:10:55 +00:00
ubsec Use __FBSDID(). 2003-08-24 17:55:58 +00:00
usb Sync to 1.166 of usbdevs 2004-03-07 05:34:36 +00:00
utopia kthread_exit() no longer requires Giant, so don't force callers to acquire 2004-03-05 22:42:17 +00:00
vinum Fix an integer overflow when dealing with very large volumes. This bug 2004-03-09 12:45:43 +00:00
vr Don't use caddr_t in mchash(). Also use C99 spellings over BSD ones. 2003-12-08 07:54:15 +00:00
vx Replace the if_name and if_unit members of struct ifnet with new members 2003-10-31 18:32:15 +00:00
watchdog Add a generic watchdog facility which through a single device entry 2004-02-28 20:06:59 +00:00
wds Use __FBSDID(). 2003-08-24 17:55:58 +00:00
wi update radiotap support to reflect recent changes: 2003-12-28 06:58:52 +00:00
wl Drop the driver lock around calls to if_input to avoid a LOR when 2003-11-14 19:00:32 +00:00
xe Don't use caddr_t in mchash(). Also use C99 spellings over BSD ones. 2003-12-08 07:54:15 +00:00
zs Device megapatch 4/6: 2004-02-21 21:10:55 +00:00