cvs commit: src/sys/amd64/amd64 trap.c src/sys/dev/em if_em.c
src/sys/dev/firewire 00README if_fwe.c if_fwip.c src/sys/dev/fxp
if_fxp.c src/sys/dev/ixgb README if_ixgb.c src/sys/dev/nge
if_nge.c src/sys/dev/re if_re.c src/sys/dev/vge if_vge.c ...
Gleb Smirnoff
glebius at FreeBSD.org
Sat Oct 1 11:56:20 PDT 2005
glebius 2005-10-01 18:56:19 UTC
FreeBSD src repository
Modified files:
sys/amd64/amd64 trap.c
sys/dev/em if_em.c
sys/dev/firewire 00README if_fwe.c if_fwip.c
sys/dev/fxp if_fxp.c
sys/dev/ixgb README if_ixgb.c
sys/dev/nge if_nge.c
sys/dev/re if_re.c
sys/dev/vge if_vge.c
sys/i386/i386 trap.c
sys/kern kern_poll.c
sys/net if.h if_var.h
sys/pci if_dc.c if_rl.c if_sf.c if_sis.c if_ste.c
if_vr.c if_xl.c
Log:
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
Revision Changes Path
1.294 +0 -10 src/sys/amd64/amd64/trap.c
1.74 +37 -34 src/sys/dev/em/if_em.c
1.2 +0 -3 src/sys/dev/firewire/00README
1.39 +40 -29 src/sys/dev/firewire/if_fwe.c
1.10 +47 -31 src/sys/dev/firewire/if_fwip.c
1.248 +32 -24 src/sys/dev/fxp/if_fxp.c
1.2 +7 -8 src/sys/dev/ixgb/README
1.15 +43 -34 src/sys/dev/ixgb/if_ixgb.c
1.80 +37 -25 src/sys/dev/nge/if_nge.c
1.56 +49 -40 src/sys/dev/re/if_re.c
1.19 +51 -54 src/sys/dev/vge/if_vge.c
1.281 +0 -10 src/sys/i386/i386/trap.c
1.23 +88 -100 src/sys/kern/kern_poll.c
1.99 +2 -3 src/sys/net/if.h
1.103 +1 -1 src/sys/net/if_var.h
1.169 +41 -28 src/sys/pci/if_dc.c
1.158 +40 -36 src/sys/pci/if_rl.c
1.88 +45 -44 src/sys/pci/if_sf.c
1.140 +44 -31 src/sys/pci/if_sis.c
1.90 +41 -32 src/sys/pci/if_ste.c
1.108 +39 -31 src/sys/pci/if_vr.c
1.197 +45 -41 src/sys/pci/if_xl.c
More information about the cvs-src
mailing list