freebsd-nq/sys/dev
Sam Leffler 0a915fad5d MFp4 changes to fix locking issues and correct reference
count handling of station entries in hostap mode:

Input path:

o driver is now expected to find the node associated with the
  sender of a received frame; use ic_bss if none is located
o driver passes the (referenced) node into ieee80211_input for
  use within the wlan module and is responsible for cleaning up
  on return
o the antenna state is no longer passed up with each frame; this
  is now considered driver-private state and drivers are responsible
  for keeping it in the driver-private part of a node

Output path:

Revamp output path for management frames to eliminate redundant
locking that causes problems and to correct reference counting
bogosity that occurs when stations are timed out due to inactivity
(in AP mode).  On output the refcnt'd node is stashed in the pkthdr's
recvif field (yech) and retrieved by the driver.  This eliminates
an unref/ref scenario and related node table unlock/lock due to the
driver looking up the node.  This is particularly important when
stations are timed out as this causes a lock order reversal that
can result in a deadlock.  As a byproduct we also reduce the overhead
for sending management frames (minimal).  Additional fallout from
this is a change to ieee80211_encap to return a refcn't node for
tieing to the outbound frame.  Node refcnts are not reclaimed until
after a frame is completely processed (e.g. in the tx interrupt
handler).  This is especially important for timed out stations as
this deref will be the final one causing the node entry to be
reclaimed.

Additional semi-related changes:
o replace m_copym use with m_copypacket (optimization)
o add assert to verify ic_bss is never free'd during normal operation
o add comments explaining calling conventions by drivers for frames
  going in each direction
o remove extraneous code that "cannot be executed" (e.g. because
  pointers may never be null)
2003-08-19 22:17:04 +00:00
..
aac Make aac(4) compile cleanly on 64-bit machines. The code was already 64-bit 2003-08-19 21:31:45 +00:00
acpica Update my mail address on copyright notice. 2003-08-19 01:54:34 +00:00
adlink Almost the finished article. 2003-04-08 19:12:48 +00:00
advansys Mega busdma API commit. 2003-07-01 15:52:06 +00:00
agp Sort the list of PCI ID's in numerical order and fix a whitespace bogon. 2003-06-27 18:17:06 +00:00
aha Mega busdma API commit. 2003-07-01 15:52:06 +00:00
ahb Make this at least compile on 64 bit platforms. Its been breaking 2003-07-30 20:09:22 +00:00
aic Merge common XPT_CALC_GEOMETRY functions into a single convenience function. 2003-06-14 22:17:41 +00:00
aic7xxx Mega busdma API commit. 2003-07-01 15:52:06 +00:00
amd bus_dmamap_create() is no longer optional for non-static dma mappings. Thanks 2003-08-11 09:09:10 +00:00
amr Mega busdma API commit. 2003-07-01 15:52:06 +00:00
an Mega busdma API commit. 2003-07-01 15:52:06 +00:00
ar Get rid of kvtop(). 2003-04-23 15:40:11 +00:00
asr Include <sys/ioccom.h> instead of <sys/disklabel.h> 2003-04-16 20:46:30 +00:00
ata Add a PATH_INQ flag, PIM_NO_6_BYTE, which indicates the SIM never wishes to 2003-07-28 06:15:59 +00:00
ath MFp4 changes to fix locking issues and correct reference 2003-08-19 22:17:04 +00:00
atkbdc Fix for FAIL_IF_NO_KBD case as expected. 2003-07-13 10:08:33 +00:00
awi update for new 802.11 support 2003-06-28 06:17:26 +00:00
bge Fix a typo. BGE_HCC_TX_MAX_COAL_BDS_INT is at offset 0x3C24, not 0x3C34 2003-08-17 19:14:02 +00:00
bktr Add a overhaul of the soundchip initialization for the MSP34xx chipsets 2003-08-12 09:45:34 +00:00
buslogic Fixed wrong function names in the error message that was translated to 2003-07-26 11:53:40 +00:00
cardbus Add a new PCI interface method, assign_interrupt, to determine the 2003-07-01 14:08:33 +00:00
ciss Support EINPROGRESS and properly deal with 64bit physical addressing. 2003-08-12 17:55:53 +00:00
cm - Express hard dependencies on bus (pci, isa, pccard) and 2003-04-15 06:37:30 +00:00
cnw - Express hard dependencies on bus (pci, isa, pccard) and 2003-04-15 06:37:30 +00:00
cs - Express hard dependencies on bus (pci, isa, pccard) and 2003-04-15 06:37:30 +00:00
ct We donot need `\n' for panic(). 2003-08-07 08:13:37 +00:00
cy Use __FBSDID(). 2003-06-11 06:34:30 +00:00
dc Change instances of callout_init that specify MPSAFE behaviour to 2003-08-19 17:51:11 +00:00
de Fix alignment requirements of tulip_rombuf by further increasing 2003-06-13 22:34:03 +00:00
dec
dgb Remove a few ushorts I missed in my earlier pass. 2003-08-15 14:55:50 +00:00
digi Consistently use the BSD u_int and u_short instead of the SYSV uint and 2003-08-07 15:04:27 +00:00
dpt Mega busdma API commit. 2003-07-01 15:52:06 +00:00
drm Update DRM from DRI CVS as of today. Notable changes include Radeon 2003-08-19 02:57:31 +00:00
ed Add MELCO LPC3_CTX. This is the same as Buffalo card of the same name 2003-08-07 19:40:05 +00:00
eisa Deprecate machine/limits.h in favor of new sys/limits.h. 2003-04-29 13:36:06 +00:00
em Add facilities for tuning the "em" driver's interrupt delays without 2003-08-01 17:33:59 +00:00
en Consistently use the BSD u_int and u_short instead of the SYSV uint and 2003-08-07 15:04:27 +00:00
ep Use bus_child_present() to make sure the card is still there before calling 2003-08-19 14:06:42 +00:00
ex - Declare ex_devclass in if_ex.c 2003-03-29 15:38:53 +00:00
exca MFP4: 2003-06-07 20:46:39 +00:00
fatm Consistently use the BSD u_int and u_short instead of the SYSV uint and 2003-08-07 15:04:27 +00:00
fb Low risk amd64 fix. Use a vm_offset_t for the virtual location of the 2003-05-23 05:10:49 +00:00
fdc - Use the new resource_disabled() helper function to see if devices are 2003-07-02 16:09:02 +00:00
fe Make sure that pp_name is non-null before setting the device 2003-04-10 04:36:02 +00:00
firewire Remove unused code. 2003-08-19 08:59:07 +00:00
fxp Use the revision ID from PCI configuration space to identify Intel 2003-08-04 00:17:16 +00:00
gem Mega busdma API commit. 2003-07-01 15:52:06 +00:00
gfb - Add vm_paddr_t, a physical address type. This is required for systems 2003-03-25 00:07:06 +00:00
gx - Express hard dependencies on bus (pci, isa, pccard) and 2003-04-15 06:37:30 +00:00
harp This is a pseudo physical interface for the HARP ATM stack. When loaded 2003-07-21 13:56:22 +00:00
hatm Make the driver preserve open connections accross ifconfig down 2003-08-07 13:42:31 +00:00
hea Use a size_t where a buffer length is meant. 2003-07-29 13:33:14 +00:00
hfa Implement a traffic shaping option for the PCA200 for CBR channels. 2003-07-31 14:52:44 +00:00
hifn Change instances of callout_init that specify MPSAFE behaviour to 2003-08-19 17:51:11 +00:00
hme Mega busdma API commit. 2003-07-01 15:52:06 +00:00
ic - Clean up function calling conventions. 2003-03-28 06:27:08 +00:00
ichsmb typo. 2002-10-18 12:06:01 +00:00
ida Initialize bp->bio_driver1 in idad_strategy(). 2003-08-08 23:01:12 +00:00
idt - Deal with netisr changes. 2003-03-29 15:55:04 +00:00
ie Don't use pessimal (u_short) types for i/o ports. This is mainly for 2003-08-06 17:28:33 +00:00
iicbus Don't hardcode unit numer '0'. 2003-08-10 14:28:24 +00:00
iir Mega busdma API commit. 2003-07-01 15:52:06 +00:00
ips - Use the new resource_disabled() helper function to see if devices are 2003-07-02 16:09:02 +00:00
isp Mega busdma API commit. 2003-07-01 15:52:06 +00:00
ispfw Roll to latest level. 2003-02-16 01:30:31 +00:00
joy Gigacommit to improve device-driver source compatibility between 2003-03-03 12:15:54 +00:00
kbd Fix for FAIL_IF_NO_KBD case as expected. 2003-07-13 10:08:33 +00:00
lge All current uses of pci_set_powerstate are bogus, at least in theory. 2003-07-03 14:00:57 +00:00
lmc Back out M_* changes, per decision of the TRB. 2003-02-19 05:47:46 +00:00
lnc Don't inline ridiculously very large functions. 2003-07-22 09:22:00 +00:00
matcd Re-introduction of the matcd CD driver. 2003-06-17 01:20:03 +00:00
mc146818
mca Deprecate machine/limits.h in favor of new sys/limits.h. 2003-04-29 13:36:06 +00:00
mcd Fix \ alignment in macro. 2003-05-31 18:21:40 +00:00
md Consistently use the BSD u_int and u_short instead of the SYSV uint and 2003-08-07 15:04:27 +00:00
mii Add support for the Broadcom BCM5901 and BCM5901 rev A2 chips. 2003-08-12 05:18:51 +00:00
mk48txx
mlx Don't provide a mutex in the S/G list dma tag since it will never be defered. 2003-08-09 23:07:21 +00:00
mly Don't provide mutexes for static busdma allocations. 2003-08-11 03:39:41 +00:00
mpt Mega busdma API commit. 2003-07-01 15:52:06 +00:00
mse Use __FBSDID(). 2003-06-02 16:32:55 +00:00
musycc Remove unused variable(s). 2003-05-31 20:39:28 +00:00
my - Express hard dependencies on bus (pci, isa, pccard) and 2003-04-15 06:37:30 +00:00
ncv Make sure that pp_name is non-null before setting the device 2003-04-10 04:36:02 +00:00
nge All current uses of pci_set_powerstate are bogus, at least in theory. 2003-07-03 14:00:57 +00:00
nmdm Make TTYHOG tunable. 2003-03-05 08:16:29 +00:00
nsp o Changes to support NEWCARD. 2002-11-28 01:09:29 +00:00
null /dev/null and /dev/zero does not need Giant 2003-06-24 19:50:48 +00:00
ofw Add a solaris compatible ofw interface for third party software that 2003-06-19 01:40:11 +00:00
patm Change instances of callout_init that specify MPSAFE behaviour to 2003-08-19 17:51:11 +00:00
pccard Put a band-aide(tm) on the CIS panic problem. This is a similar fix 2003-08-18 03:07:09 +00:00
pccbb The CD bits in the CBB_SOCKET_STATE register are 0 when the card is 2003-08-18 21:59:24 +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 Define PCI_MAXHDRTYPE to be 2. We know about header types 0, 1 and 2. 2003-08-01 21:45:56 +00:00
pcic More low-hanging fruit: kill caddr_t in calls to wakeup(9) / [mt]sleep(9). 2003-03-02 16:54:40 +00:00
pdq Make this compile on alpha. 2003-07-31 13:36:57 +00:00
ppbus Consistently use the BSD u_int and u_short instead of the SYSV uint and 2003-08-07 15:04:27 +00:00
ppc Forgot an added file in the last commit. 2003-08-01 05:02:55 +00:00
pst Pull the pst driver out from under GAINT. 2003-04-28 08:10:27 +00:00
puc Add support for the newer Moxa PCI 8-port, 16550-compatible based 2003-08-14 14:15:16 +00:00
raidframe Add fdidx argument to vn_open() and vn_open_cred() and pass -1 throughout. 2003-07-27 17:04:56 +00:00
random Change the sleep identifier to "-" where random normally sleeps. 2003-07-02 08:04:57 +00:00
ray update to new 802.11 support 2003-06-28 17:57:30 +00:00
rc Consistently use the BSD u_int and u_short instead of the SYSV uint and 2003-08-07 15:04:27 +00:00
rndtest Change instances of callout_init that specify MPSAFE behaviour to 2003-08-19 17:51:11 +00:00
rp Undo single-intance inlining which is way above the comfort limit for GCC. 2003-07-23 18:03:22 +00:00
sab Match "serial" as well as "se". 2003-03-31 18:21:52 +00:00
safe Change instances of callout_init that specify MPSAFE behaviour to 2003-08-19 17:51:11 +00:00
sbni Fix i386 assembly constraints. The same register cannot be 2003-07-11 07:49:40 +00:00
sbsh cosmetic style fixes 2003-04-15 17:26:28 +00:00
scd Don't include <sys/disklabel.h> 2003-04-16 20:57:35 +00:00
sf Due to extreme bogusness in the pci bus layer, these drivers were 2003-07-03 21:39:53 +00:00
si Make TTYHOG tunable. 2003-03-05 08:16:29 +00:00
sio - Use the new resource_disabled() helper function to see if devices are 2003-07-02 16:09:02 +00:00
sk Due to extreme bogusness in the pci bus layer, these drivers were 2003-07-03 21:39:53 +00:00
smbus Don't hardcode unit numer '0'. 2003-08-10 14:28:24 +00:00
sn - Express hard dependencies on bus (pci, isa, pccard) and 2003-04-15 06:37:30 +00:00
snc Consistently use the BSD u_int and u_short instead of the SYSV uint and 2003-08-07 15:04:27 +00:00
snp Gigacommit to improve device-driver source compatibility between 2003-03-03 12:15:54 +00:00
sound handle locking when creating or destroying vchans better 2003-08-18 23:20:39 +00:00
speaker Use __FBSDID(). 2003-06-02 16:32:55 +00:00
sr Use bus_space*() instead of in*() and out*(). 2003-04-23 20:22:32 +00:00
stg Make sure that pp_name is non-null before setting the device 2003-04-10 04:36:02 +00:00
streams Initialize struct fileops with C99 sparse initialization. 2003-06-18 18:16:40 +00:00
sym Remove extraneous semicolons. They are already provided by 2003-08-05 07:22:12 +00:00
syscons Use the clear function provided by the video adapter driver. 2003-07-21 13:04:54 +00:00
tdfx Remove extra ';' 2003-05-31 18:57:41 +00:00
tga Gigacommit to improve device-driver source compatibility between 2003-03-03 12:15:54 +00:00
ti Enable IFCAP_VLAN_MTU and increase MTU for it. 2003-08-05 02:34:35 +00:00
trm Remove two useless bzero() calls. 2003-08-12 14:51:18 +00:00
twe Don't tsleep on NULL 2003-08-19 12:22:17 +00:00
tx - No need to bzero() the softc structure. 2003-08-12 14:55:12 +00:00
txp All current uses of pci_set_powerstate are bogus, at least in theory. 2003-07-03 14:00:57 +00:00
ubsec Change instances of callout_init that specify MPSAFE behaviour to 2003-08-19 17:51:11 +00:00
usb Crank down UVISORBUFSIZE from 1024 to 64 to avoid a problem where 2003-08-14 00:15:23 +00:00
utopia Generate events when the carrier goes up or down. 2003-07-30 08:35:58 +00:00
vinum #ifdef __i386__ the "int slice" definition that became i386-only with 2003-08-15 17:56:44 +00:00
vr Due to extreme bogusness in the pci bus layer, these drivers were 2003-07-03 21:39:53 +00:00
vx Revert part of rev 1.43. We want to fail gracefully if there is no packet 2003-06-08 18:35:25 +00:00
wds Mega busdma API commit. 2003-07-01 15:52:06 +00:00
wi MFp4 changes to fix locking issues and correct reference 2003-08-19 22:17:04 +00:00
wl Get wlread() closer to working. Use m->m_len as the initial value for 2003-04-17 17:51:24 +00:00
xe Remove unused variable(s). 2003-05-31 20:27:42 +00:00
zs Fix a signedness problem in zstty_cncheckc(): when no character is ready, 2003-07-05 01:31:30 +00:00