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
..
2005-09-22 04:51:11 +00:00
2005-09-16 10:09:23 +00:00
2005-09-27 16:57:44 +00:00
2005-05-10 12:02:18 +00:00
2005-10-01 18:56:19 +00:00
2005-10-01 18:56:19 +00:00
2005-09-20 19:50:27 +00:00
2005-09-22 06:01:44 +00:00
2005-09-11 18:39:03 +00:00
2005-09-22 05:52:54 +00:00
2005-10-01 18:56:19 +00:00
2005-10-01 18:56:19 +00:00
2005-09-08 14:13:36 +00:00
2005-05-14 10:26:31 +00:00
2005-07-29 00:20:50 +00:00
2004-08-02 20:42:28 +00:00
2005-09-27 09:11:44 +00:00
2005-10-01 18:56:19 +00:00
2005-09-19 06:55:27 +00:00
2004-08-04 18:30:31 +00:00
2005-05-19 21:16:50 +00:00
2005-04-08 05:22:58 +00:00
2005-10-01 18:56:19 +00:00
2005-02-27 22:01:09 +00:00
2005-09-25 01:39:04 +00:00
2005-09-29 20:41:04 +00:00
2005-09-21 22:45:14 +00:00
2005-09-22 06:01:44 +00:00
2005-10-01 18:56:19 +00:00
2005-10-01 18:56:19 +00:00
2005-09-22 06:01:44 +00:00
2005-09-22 05:56:32 +00:00
2005-09-22 06:01:44 +00:00
2005-09-18 15:38:40 +00:00
2005-09-21 22:45:14 +00:00
2005-09-29 16:47:08 +00:00
2005-09-21 22:45:14 +00:00
2005-10-01 18:56:19 +00:00
2005-10-01 18:56:19 +00:00