Date: Tue, 24 Nov 2009 23:07:20 +0000 (GMT) From: Robert Watson <rwatson@FreeBSD.org> To: John Baldwin <jhb@freebsd.org> Cc: net@freebsd.org Subject: Re: [PATCH] Remove if_watchdog and if_timer Message-ID: <alpine.BSF.2.00.0911242305180.62995@fledge.watson.org> In-Reply-To: <200911241356.05528.jhb@freebsd.org> References: <200911241356.05528.jhb@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 24 Nov 2009, John Baldwin wrote: > Now that no drivers in the tree use if_watchdog and if_timer, this patch > just removes them completely. Since if_timer was a short that was adjacent > to if_index, removing if_timer would have still left a padding hole in the > form of a short on all of our current architectures. After discussing this > briefly with Brooks I changed if_index to be an int rather than leaving the > padding hole. Comments? The if_watchdog/if_timer changes sound good to me, but let's do the if_index change separately, and just add padding in this change. The if_index -> 32-bit chnge is one that's been overdue for a long time, but it's going to have a lot of side effects, so keeping it to its own changesets (which can be backed out if needed more easily) is probably a good idea. Thanks for taking on the watchdog changes! Robert N M Watson Computer Laboratory University of Cambridge > > --- //depot/vendor/freebsd/src/sys/net/if.c 2009/11/12 19:05:14 > +++ //depot/user/jhb/cleanup/sys/net/if.c 2009/11/19 22:35:58 > @@ -125,10 +125,8 @@ > static void if_freemulti(struct ifmultiaddr *); > static void if_init(void *); > static void if_grow(void); > -static void if_check(void *); > static void if_route(struct ifnet *, int flag, int fam); > static int if_setflag(struct ifnet *, int, int, int *, int); > -static void if_slowtimo(void *); > static int if_transmit(struct ifnet *ifp, struct mbuf *m); > static void if_unroute(struct ifnet *, int flag, int fam); > static void link_rtrequest(int, struct rtentry *, struct rt_addrinfo *); > @@ -185,11 +183,6 @@ > static if_com_alloc_t *if_com_alloc[256]; > static if_com_free_t *if_com_free[256]; > > -/* > - * System initialization > - */ > -SYSINIT(interface_check, SI_SUB_PROTO_IF, SI_ORDER_FIRST, if_check, NULL); > - > MALLOC_DEFINE(M_IFNET, "ifnet", "interface internals"); > MALLOC_DEFINE(M_IFADDR, "ifaddr", "interface address"); > MALLOC_DEFINE(M_IFMADDR, "ether_multi", "link-level multicast address"); > @@ -375,18 +368,6 @@ > V_ifindex_table = e; > } > > -static void > -if_check(void *dummy __unused) > -{ > - > - /* > - * If at least one interface added during boot uses > - * if_watchdog then start the timer. > - */ > - if (slowtimo_started) > - if_slowtimo(0); > -} > - > /* > * Allocate a struct ifnet and an index for an interface. A layer 2 > * common structure will also be allocated if an allocation routine is > @@ -670,18 +651,6 @@ > > /* Announce the interface. */ > rt_ifannouncemsg(ifp, IFAN_ARRIVAL); > - > - if (!vmove && ifp->if_watchdog != NULL) { > - if_printf(ifp, > - "WARNING: using obsoleted if_watchdog interface\n"); > - > - /* > - * Note that we need if_slowtimo(). If this happens after > - * boot, then call if_slowtimo() directly. > - */ > - if (atomic_cmpset_int(&slowtimo_started, 0, 1) && !cold) > - if_slowtimo(0); > - } > } > > static void > @@ -1973,39 +1942,6 @@ > } > > /* > - * Handle interface watchdog timer routines. Called > - * from softclock, we decrement timers (if set) and > - * call the appropriate interface routine on expiration. > - * > - * XXXRW: Note that because timeouts run with Giant, if_watchdog() is called > - * holding Giant. > - */ > -static void > -if_slowtimo(void *arg) > -{ > - VNET_ITERATOR_DECL(vnet_iter); > - struct ifnet *ifp; > - int s = splimp(); > - > - VNET_LIST_RLOCK_NOSLEEP(); > - IFNET_RLOCK_NOSLEEP(); > - VNET_FOREACH(vnet_iter) { > - CURVNET_SET(vnet_iter); > - TAILQ_FOREACH(ifp, &V_ifnet, if_link) { > - if (ifp->if_timer == 0 || --ifp->if_timer) > - continue; > - if (ifp->if_watchdog) > - (*ifp->if_watchdog)(ifp); > - } > - CURVNET_RESTORE(); > - } > - IFNET_RUNLOCK_NOSLEEP(); > - VNET_LIST_RUNLOCK_NOSLEEP(); > - splx(s); > - timeout(if_slowtimo, (void *)0, hz / IFNET_SLOWHZ); > -} > - > -/* > * Map interface name to interface structure pointer, with or without > * returning a reference. > */ > --- //depot/vendor/freebsd/src/sys/net/if_dead.c 2009/04/23 11:55:13 > +++ //depot/user/jhb/cleanup/sys/net/if_dead.c 2009/11/19 22:35:58 > @@ -70,12 +70,6 @@ > return (ENXIO); > } > > -static void > -ifdead_watchdog(struct ifnet *ifp) > -{ > - > -} > - > static int > ifdead_resolvemulti(struct ifnet *ifp, struct sockaddr **llsa, > struct sockaddr *sa) > @@ -107,7 +101,6 @@ > ifp->if_input = ifdead_input; > ifp->if_start = ifdead_start; > ifp->if_ioctl = ifdead_ioctl; > - ifp->if_watchdog = ifdead_watchdog; > ifp->if_resolvemulti = ifdead_resolvemulti; > ifp->if_qflush = ifdead_qflush; > ifp->if_transmit = ifdead_transmit; > --- //depot/vendor/freebsd/src/sys/net/if_var.h 2009/11/12 19:05:14 > +++ //depot/user/jhb/cleanup/sys/net/if_var.h 2009/11/19 22:35:58 > @@ -140,8 +140,7 @@ > int if_pcount; /* number of promiscuous listeners */ > struct carp_if *if_carp; /* carp interface structure */ > struct bpf_if *if_bpf; /* packet filter structure */ > - u_short if_index; /* numeric abbreviation for this if */ > - short if_timer; /* time 'til if_watchdog called */ > + u_int if_index; /* numeric abbreviation for this if */ > struct ifvlantrunk *if_vlantrunk; /* pointer to 802.1q data */ > int if_flags; /* up/down, broadcast, etc. */ > int if_capabilities; /* interface features & capabilities */ > @@ -161,8 +160,6 @@ > (struct ifnet *); > int (*if_ioctl) /* ioctl routine */ > (struct ifnet *, u_long, caddr_t); > - void (*if_watchdog) /* timer routine */ > - (struct ifnet *); > void (*if_init) /* Init routine */ > (void *); > int (*if_resolvemulti) /* validate/resolve multicast */ > > -- > John Baldwin > _______________________________________________ > freebsd-net@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-net > To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org" >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?alpine.BSF.2.00.0911242305180.62995>