freebsd-nq/sys/pci
John Baldwin 997452064e Various fixups to locking:
- Remove a lot of superfluous locking during attach.  There is no need
  to lock access to the driver until some other thread has a way of getting
  to it.  For ethernet drivers the other ways include registering an
  interrupt handler via bus_setup_intr(), calling ether_ifattach() to hook
  into the network stack, and kicking off a callout-driven timer via
  callout_reset().
- Use callout_* rather than timeout/untimeout.
- Break out of xl_rxeof() if IFF_DRV_RUNNING is clear after ifp->if_input
  returns to handle the case where the interface was stopped while we were
  passing a packet up the stack.  Don't call xl_rxeof() in xl_rxeof_task()
  unless IFF_DRV_RUNNING is set.  With these fixes in place, any
  outstanding task will gracefully terminate as soon as it gets a chance to
  run after the interface has been stopped via xl_stop().  As a result,
  taskqueue_drain() is no longer required in xl_stop().  The task is still
  drained in detach() however to make sure that detach() can safely destroy
  the driver mutex at the end of the function.
- Lock the driver lock in the ifmedia callouts and don't lock across
  ifmedia_ioctl() in xl_ioctl().

Note: glebius came up with most of (3) as well independently.  I took a
rather roundabout way of arriving at the same conclusion.

MFC after:	3 days
2005-08-18 19:24:30 +00:00
..
agp_ali.c
agp_amd64.c
agp_amd.c
agp_i810.c
agp_if.m
agp_intel.c
agp_nvidia.c
agp_sis.c
agp_via.c
agp.c
agppriv.h
agpreg.h
agpvar.h
alpm.c
amdpm.c
dc21040reg.h
if_dc.c Fixup locking and mark MPSAFE: 2005-08-18 19:10:07 +00:00
if_dcreg.h Use device_printf() and if_printf() and remove dc_unit from softc. 2005-08-10 20:33:46 +00:00
if_de.c - Use htole32() instead of using bswap32() conditional on #if BYTE_ORDER. 2005-08-17 17:46:51 +00:00
if_devar.h Remove the unused TULIP_CSR_{READ,WRITE}BYTE macros. 2005-08-17 17:45:19 +00:00
if_mn.c
if_pcn.c Use callout_init_mtx() to simplify the stats callout. 2005-08-17 17:44:58 +00:00
if_pcnreg.h Fix up the locking in pcn(4) and mark it MPSAFE. 2005-08-05 16:03:16 +00:00
if_rl.c Propagate rename of IFF_OACTIVE and IFF_RUNNING to IFF_DRV_OACTIVE and 2005-08-09 10:20:02 +00:00
if_rlreg.h Recognize D-Link DGE-528(T) Gigabit as an re(4) device. 2005-08-05 08:19:12 +00:00
if_sf.c Fixup locking for sf(4) and mark MPSAFE: 2005-08-18 17:09:16 +00:00
if_sfreg.h Fixup locking for sf(4) and mark MPSAFE: 2005-08-18 17:09:16 +00:00
if_sis.c Propagate rename of IFF_OACTIVE and IFF_RUNNING to IFF_DRV_OACTIVE and 2005-08-09 10:20:02 +00:00
if_sisreg.h
if_sk.c * Solve "No PHY found" problem for more Yukon Lite variants. 2005-08-13 11:13:12 +00:00
if_skreg.h
if_ste.c Use device_printf() and if_printf() and remove ste_unit from the softc. 2005-08-17 14:37:39 +00:00
if_stereg.h Use device_printf() and if_printf() and remove ste_unit from the softc. 2005-08-17 14:37:39 +00:00
if_ti.c Propagate rename of IFF_OACTIVE and IFF_RUNNING to IFF_DRV_OACTIVE and 2005-08-09 10:20:02 +00:00
if_tireg.h
if_tl.c Propagate rename of IFF_OACTIVE and IFF_RUNNING to IFF_DRV_OACTIVE and 2005-08-09 10:20:02 +00:00
if_tlreg.h
if_vr.c Propagate rename of IFF_OACTIVE and IFF_RUNNING to IFF_DRV_OACTIVE and 2005-08-09 10:20:02 +00:00
if_vrreg.h
if_wb.c Propagate rename of IFF_OACTIVE and IFF_RUNNING to IFF_DRV_OACTIVE and 2005-08-09 10:20:02 +00:00
if_wbreg.h
if_xl.c Various fixups to locking: 2005-08-18 19:24:30 +00:00
if_xlreg.h Various fixups to locking: 2005-08-18 19:24:30 +00:00
intpm.c
intpmreg.h
locate.pl
ncr.c
ncrreg.h
ti_fw2.h
ti_fw.h
viapm.c
xmaciireg.h
xrpu.c
yukonreg.h