diff options
author | rwatson <rwatson@FreeBSD.org> | 2009-08-15 23:07:43 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2009-08-15 23:07:43 +0000 |
commit | 400012e1fe3a91b1e1ba25400408cb2a46974743 (patch) | |
tree | d2b8c8d439a64332c690ba6a2ca9c5df822ab8f4 | |
parent | e905082a5a59cce82377b1bf910e37f03c0eb91c (diff) | |
download | FreeBSD-src-400012e1fe3a91b1e1ba25400408cb2a46974743.zip FreeBSD-src-400012e1fe3a91b1e1ba25400408cb2a46974743.tar.gz |
Rather than fix questionable ifnet list locking in the implementation of
the kern.polling.enable sysctl, remove the sysctl. It has been deprecated
since FreeBSD 6 in favour of per-ifnet polling flags.
Reviewed by: luigi
Approved by: re (kib)
-rw-r--r-- | share/man/man4/polling.4 | 19 | ||||
-rw-r--r-- | sys/kern/kern_poll.c | 49 |
2 files changed, 10 insertions, 58 deletions
diff --git a/share/man/man4/polling.4 b/share/man/man4/polling.4 index fea0bfb..2c711cc 100644 --- a/share/man/man4/polling.4 +++ b/share/man/man4/polling.4 @@ -87,6 +87,16 @@ feature. It is turned on and off with help of .Xr ifconfig 8 command. +.Pp +The historic +.Va kern.polling.enable , +which enabled polling for all interfaces, can be replaced with the following +code: +.Bd -literal +for i in `ifconfig -l` ; + do ifconfig $i polling; # use -polling to disable +done +.Ed .Ss MIB Variables The operation of .Nm @@ -156,15 +166,6 @@ Default is 20. How many active devices have registered for .Nm . .Pp -.It Va kern.polling.enable -Legacy MIB, that was used to enable or disable polling globally. -Currently if set to 1, -.Nm -is enabled on all capable interfaces. -If set to 0, -.Nm -is disabled on all interfaces. -.Pp .It Va kern.polling.short_ticks .It Va kern.polling.lost_polls .It Va kern.polling.pending_polls diff --git a/sys/kern/kern_poll.c b/sys/kern/kern_poll.c index 5df26bb..8441126 100644 --- a/sys/kern/kern_poll.c +++ b/sys/kern/kern_poll.c @@ -46,8 +46,6 @@ __FBSDID("$FreeBSD$"); #include <net/netisr.h> /* for NETISR_POLL */ #include <net/vnet.h> -static int poll_switch(SYSCTL_HANDLER_ARGS); - void hardclock_device_poll(void); /* hook from hardclock */ static struct mtx poll_mtx; @@ -230,10 +228,6 @@ static uint32_t poll_handlers; /* next free entry in pr[]. */ SYSCTL_UINT(_kern_polling, OID_AUTO, handlers, CTLFLAG_RD, &poll_handlers, 0, "Number of registered poll handlers"); -static int polling = 0; -SYSCTL_PROC(_kern_polling, OID_AUTO, enable, CTLTYPE_UINT | CTLFLAG_RW, - 0, sizeof(int), poll_switch, "I", "Switch polling for all interfaces"); - static uint32_t phase; SYSCTL_UINT(_kern_polling, OID_AUTO, phase, CTLFLAG_RD, &phase, 0, "Polling phase"); @@ -538,49 +532,6 @@ ether_poll_deregister(struct ifnet *ifp) return (0); } -/* - * Legacy interface for turning polling on all interfaces at one time. - */ -static int -poll_switch(SYSCTL_HANDLER_ARGS) -{ - struct ifnet *ifp; - int error; - int val = polling; - - error = sysctl_handle_int(oidp, &val, 0, req); - if (error || !req->newptr ) - return (error); - - if (val == polling) - return (0); - - if (val < 0 || val > 1) - return (EINVAL); - - polling = val; - - IFNET_RLOCK(); - TAILQ_FOREACH(ifp, &V_ifnet, if_link) { - if (ifp->if_capabilities & IFCAP_POLLING) { - struct ifreq ifr; - - if (val == 1) - ifr.ifr_reqcap = - ifp->if_capenable | IFCAP_POLLING; - else - ifr.ifr_reqcap = - ifp->if_capenable & ~IFCAP_POLLING; - (void) (*ifp->if_ioctl)(ifp, SIOCSIFCAP, (caddr_t)&ifr); - } - } - IFNET_RUNLOCK(); - - log(LOG_ERR, "kern.polling.enable is deprecated. Use ifconfig(8)"); - - return (0); -} - static void poll_idle(void) { |