freebsd-nq/sys/pci
Gleb Smirnoff 4092996774 Big polling(4) cleanup.
o Axe poll in trap.

o Axe IFF_POLLING flag from if_flags.

o Rework revision 1.21 (Giant removal), in such a way that
  poll_mtx is not dropped during call to polling handler.
  This fixes problem with idle polling.

o Make registration and deregistration from polling in a
  functional way, insted of next tick/interrupt.

o Obsolete kern.polling.enable. Polling is turned on/off
  with ifconfig.

Detailed kern_poll.c changes:
  - Remove polling handler flags, introduced in 1.21. The are not
    needed now.
  - Forget and do not check if_flags, if_capenable and if_drv_flags.
  - Call all registered polling handlers unconditionally.
  - Do not drop poll_mtx, when entering polling handlers.
  - In ether_poll() NET_LOCK_GIANT prior to locking poll_mtx.
  - In netisr_poll() axe the block, where polling code asks drivers
    to unregister.
  - In netisr_poll() and ether_poll() do polling always, if any
    handlers are present.
  - In ether_poll_[de]register() remove a lot of error hiding code. Assert
    that arguments are correct, instead.
  - In ether_poll_[de]register() use standard return values in case of
    error or success.
  - Introduce poll_switch() that is a sysctl handler for kern.polling.enable.
    poll_switch() goes through interface list and enabled/disables polling.
    A message that kern.polling.enable is deprecated is printed.

Detailed driver changes:
  - On attach driver announces IFCAP_POLLING in if_capabilities, but
    not in if_capenable.
  - On detach driver calls ether_poll_deregister() if polling is enabled.
  - In polling handler driver obtains its lock and checks IFF_DRV_RUNNING
    flag. If there is no, then unlocks and returns.
  - In ioctl handler driver checks for IFCAP_POLLING flag requested to
    be set or cleared. Driver first calls ether_poll_[de]register(), then
    obtains driver lock and [dis/en]ables interrupts.
  - In interrupt handler driver checks IFCAP_POLLING flag in if_capenable.
    If present, then returns.This is important to protect from spurious
    interrupts.

Reviewed by:	ru, sam, jhb
2005-10-01 18:56:19 +00:00
..
agp_ali.c Add device id for the Ali M1671 host to AGP bridge. 2005-02-27 13:05:34 +00:00
agp_amd64.c - Add a work-around for nForce3-250. Aperture base address encoded in misc. 2005-09-27 20:57:50 +00:00
agp_amd.c Return BUS_PROBE_DEFAULT instead of 0. 2005-02-24 21:32:56 +00:00
agp_ati.c Add a new AGP driver for ATI IGP chipsets. The driver is based on reading of 2005-09-17 03:36:47 +00:00
agp_i810.c Return BUS_PROBE_DEFAULT instead of 0. 2005-02-24 21:32:56 +00:00
agp_if.m
agp_intel.c Return BUS_PROBE_DEFAULT instead of 0. 2005-02-24 21:32:56 +00:00
agp_nvidia.c Fix agp_nvidia.c to behave more like the linux driver, fixing DRI on Radeon 2005-09-16 22:59:47 +00:00
agp_sis.c Return BUS_PROBE_DEFAULT instead of 0. 2005-02-24 21:32:56 +00:00
agp_via.c Make the initialization in the AGPv3 case match that of Linux. Fixes hangs on 2005-06-26 04:01:11 +00:00
agp.c
agppriv.h
agpreg.h - Add a work-around for nForce3-250. Aperture base address encoded in misc. 2005-09-27 20:57:50 +00:00
agpvar.h
alpm.c Remove bus_{mem,p}io.h and related code for a micro-optimization on i386 2005-05-29 04:42:30 +00:00
amdpm.c Remove bus_{mem,p}io.h and related code for a micro-optimization on i386 2005-05-29 04:42:30 +00:00
dc21040reg.h
if_dc.c Big polling(4) cleanup. 2005-10-01 18:56:19 +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 m_defrag() instead of homerolling our own variant 2005-08-26 14:27:38 +00:00
if_devar.h - Remove non-bus-dma code. 2005-08-25 21:06:56 +00:00
if_mn.c Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
if_pcn.c Fix "struct ifnet" leaks when attach() fails in the middle, e.g. 2005-09-16 11:11:51 +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 Big polling(4) cleanup. 2005-10-01 18:56:19 +00:00
if_rlreg.h - Use if_printf() and device_printf() in re(4) and remove rl_unit from 2005-09-29 16:52:19 +00:00
if_sf.c Big polling(4) cleanup. 2005-10-01 18:56:19 +00:00
if_sfreg.h Fixup locking for sf(4) and mark MPSAFE: 2005-08-18 17:09:16 +00:00
if_sis.c Big polling(4) cleanup. 2005-10-01 18:56:19 +00:00
if_sisreg.h Small fixes to sis(4): 2005-09-26 18:42:27 +00:00
if_sk.c Fix "struct ifnet" leaks when attach() fails in the middle, e.g. 2005-09-16 11:11:51 +00:00
if_skreg.h Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
if_ste.c Big polling(4) cleanup. 2005-10-01 18:56:19 +00:00
if_stereg.h Various locking fixes and mark MPSAFE: 2005-08-30 20:35:08 +00:00
if_ti.c Use if_printf() and device_printf(). 2005-09-29 16:47:08 +00:00
if_tireg.h Typo. 2005-09-29 15:04:58 +00:00
if_tl.c Fix "struct ifnet" leaks when attach() fails in the middle, e.g. 2005-09-16 11:11:51 +00:00
if_tlreg.h - Fixup locking and mark MPSAFE. 2005-09-15 17:12:29 +00:00
if_vr.c Big polling(4) cleanup. 2005-10-01 18:56:19 +00:00
if_vrreg.h Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
if_wb.c Remove bridge(4) from the tree. if_bridge(4) is a full functional 2005-09-27 18:10:43 +00:00
if_wbreg.h Use if_printf() and device_printf() for printf's and remove the unit number 2005-08-31 18:03:18 +00:00
if_xl.c Big polling(4) cleanup. 2005-10-01 18:56:19 +00:00
if_xlreg.h Various fixups to locking: 2005-08-18 19:24:30 +00:00
intpm.c Remove bus_{mem,p}io.h and related code for a micro-optimization on i386 2005-05-29 04:42:30 +00:00
intpmreg.h
locate.pl
ncr.c Add back 'n' that went missing in last commit 2005-02-25 03:43:43 +00:00
ncrreg.h
ti_fw2.h
ti_fw.h
viapm.c Remove bus_{mem,p}io.h and related code for a micro-optimization on i386 2005-05-29 04:42:30 +00:00
xmaciireg.h
xrpu.c Return BUS_PROBE_DEFAULT instead of 0. 2005-02-24 21:32:56 +00:00
yukonreg.h