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)
This commit is contained in:
rwatson 2009-08-15 23:07:43 +00:00
parent e905082a5a
commit 400012e1fe
2 changed files with 10 additions and 58 deletions

View File

@ -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

View File

@ -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)
{