Re: [HEADSUP] big polling changes

From: Cai, Quanqing <caiquanqing_at_gmail.com>
Date: Sat, 1 Oct 2005 17:43:15 -0700
Hi Gleb,

I tested sis on 7.0-CURRENT, it works great for me.

Really appreciate what you have done for community.

Thanks
Quanqing


On 10/1/05, Gleb Smirnoff <glebius_at_freebsd.org> wrote:
>
> Colleagues,
>
> I have just committed a big polling cleanup. First important
> point is that only two drivers were tested to work. Please,
> if you run CURRENT and polling(4), please reply to this mail,
> saying whether your NIC works or not. When I get approvements
> for all drivers, then I will be ready for MFC. Current state is:
>
> em - tested (ru, glebius)
> fxp - tested (glebius)
> ixgb - not tested (changeset similar to em)
> nge - not tested
> re - not tested
> vge - not tested
> dc - not tested
> rl - not tested
> sf - not tested
> sis - not tested
> ste - not tested
> vr - not tested
> xl - not tested
>
> The second important point is that you should not use kern.polling.enable
> anymore. Just turn polling on interface with ifconfig, either manually
> or via rc.conf.
>
> ----- Forwarded message from Gleb Smirnoff <glebius_at_FreeBSD.org> -----
>
> 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
>
> ----- End forwarded message -----
>
> --
> Totus tuus, Glebius.
> GLEBIUS-RIPN GLEB-RIPE
> _______________________________________________
> freebsd-current_at_freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org"
>
Received on Sat Oct 01 2005 - 22:43:17 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:44 UTC