diff options
author | rwatson <rwatson@FreeBSD.org> | 2009-03-15 14:21:05 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2009-03-15 14:21:05 +0000 |
commit | 70b6a8119c02ed07bc12918814c950d358cb1885 (patch) | |
tree | 27cbcf88d527d4a8b421eca8e088d73a000fb83f /sys/netinet6 | |
parent | 0592710988a69ee8c560a0e065d714f7ff578d43 (diff) | |
download | FreeBSD-src-70b6a8119c02ed07bc12918814c950d358cb1885.zip FreeBSD-src-70b6a8119c02ed07bc12918814c950d358cb1885.tar.gz |
Remove IFF_NEEDSGIANT, a compatibility infrastructure introduced
in FreeBSD 5.x to allow network device drivers to run with Giant
despite the network stack being Giant-free. This significantly
simplifies calls into ioctl() on network interfaces, especially
in the multicast code, as well as eliminates deferred invocation
of interface if_start routines.
Disable the build on device drivers still depending on
IFF_NEEDSGIANT as they no longer compile. They will be removed
in a few weeks if they haven't been made MPSAFE in that time.
Disabled drivers:
if_ar
if_axe
if_aue
if_cdce
if_cue
if_kue
if_ray
if_rue
if_rum
if_sr
if_udav
if_ural
if_zyd
Drivers that were already disabled because of tty changes:
if_ppp
if_sl
Discussed on: arch@
Diffstat (limited to 'sys/netinet6')
-rw-r--r-- | sys/netinet6/in6.c | 2 | ||||
-rw-r--r-- | sys/netinet6/in6_ifattach.c | 2 | ||||
-rw-r--r-- | sys/netinet6/mld6.c | 2 |
3 files changed, 0 insertions, 6 deletions
diff --git a/sys/netinet6/in6.c b/sys/netinet6/in6.c index b75ffc5..d8a11d0 100644 --- a/sys/netinet6/in6.c +++ b/sys/netinet6/in6.c @@ -1516,9 +1516,7 @@ in6_ifinit(struct ifnet *ifp, struct in6_ifaddr *ia, ia->ia_addr = *sin6; if (ifacount <= 1 && ifp->if_ioctl) { - IFF_LOCKGIANT(ifp); error = (*ifp->if_ioctl)(ifp, SIOCSIFADDR, (caddr_t)ia); - IFF_UNLOCKGIANT(ifp); if (error) { splx(s); return (error); diff --git a/sys/netinet6/in6_ifattach.c b/sys/netinet6/in6_ifattach.c index 4950549..68b3542 100644 --- a/sys/netinet6/in6_ifattach.c +++ b/sys/netinet6/in6_ifattach.c @@ -906,10 +906,8 @@ in6_purgemaddrs(struct ifnet *ifp) struct in6_multi *in6m; struct in6_multi *oin6m; - IFF_LOCKGIANT(ifp); LIST_FOREACH_SAFE(in6m, &in6_multihead, in6m_entry, oin6m) { if (in6m->in6m_ifp == ifp) in6_delmulti(in6m); } - IFF_UNLOCKGIANT(ifp); } diff --git a/sys/netinet6/mld6.c b/sys/netinet6/mld6.c index 3e0f921..a672a04 100644 --- a/sys/netinet6/mld6.c +++ b/sys/netinet6/mld6.c @@ -550,7 +550,6 @@ in6_addmulti(struct in6_addr *maddr6, struct ifnet *ifp, *errorp = 0; in6m = NULL; - IFF_LOCKGIANT(ifp); /*IN6_MULTI_LOCK();*/ IN6_LOOKUP_MULTI(*maddr6, ifp, in6m); @@ -622,7 +621,6 @@ in6_addmulti(struct in6_addr *maddr6, struct ifnet *ifp, } while (0); /*IN6_MULTI_UNLOCK();*/ - IFF_UNLOCKGIANT(ifp); return (in6m); } |