summaryrefslogtreecommitdiffstats
path: root/sys/netnatm
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2009-03-15 14:21:05 +0000
committerrwatson <rwatson@FreeBSD.org>2009-03-15 14:21:05 +0000
commit70b6a8119c02ed07bc12918814c950d358cb1885 (patch)
tree27cbcf88d527d4a8b421eca8e088d73a000fb83f /sys/netnatm
parent0592710988a69ee8c560a0e065d714f7ff578d43 (diff)
downloadFreeBSD-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/netnatm')
-rw-r--r--sys/netnatm/natm.c17
1 files changed, 3 insertions, 14 deletions
diff --git a/sys/netnatm/natm.c b/sys/netnatm/natm.c
index b9705db..baa596e 100644
--- a/sys/netnatm/natm.c
+++ b/sys/netnatm/natm.c
@@ -221,13 +221,9 @@ natm_usr_connect(struct socket *so, struct sockaddr *nam, d_thread_t *p)
op.param.traffic = ATMIO_TRAFFIC_UBR;
NATM_UNLOCK();
- IFF_LOCKGIANT(ifp);
if (ifp->if_ioctl == NULL ||
- ifp->if_ioctl(ifp, SIOCATMOPENVCC, (caddr_t)&op) != 0) {
- IFF_UNLOCKGIANT(ifp);
+ ifp->if_ioctl(ifp, SIOCATMOPENVCC, (caddr_t)&op) != 0)
return (EIO);
- }
- IFF_UNLOCKGIANT(ifp);
soisconnected(so);
return (error);
}
@@ -259,11 +255,8 @@ natm_usr_disconnect(struct socket *so)
cl.vpi = npcb->npcb_vpi;
cl.vci = npcb->npcb_vci;
NATM_UNLOCK();
- if (ifp->if_ioctl != NULL) {
- IFF_LOCKGIANT(ifp);
+ if (ifp->if_ioctl != NULL)
ifp->if_ioctl(ifp, SIOCATMCLOSEVCC, (caddr_t)&cl);
- IFF_UNLOCKGIANT(ifp);
- }
soisdisconnected(so);
return (error);
}
@@ -342,17 +335,13 @@ natm_usr_control(struct socket *so, u_long cmd, caddr_t arg,
struct ifnet *ifp, d_thread_t *p)
{
struct natmpcb *npcb;
- int error;
npcb = (struct natmpcb *)so->so_pcb;
KASSERT(npcb != NULL, ("natm_usr_control: npcb == NULL"));
if (ifp == NULL || ifp->if_ioctl == NULL)
return (EOPNOTSUPP);
- IFF_LOCKGIANT(ifp);
- error = ((*ifp->if_ioctl)(ifp, cmd, arg));
- IFF_UNLOCKGIANT(ifp);
- return (error);
+ return ((*ifp->if_ioctl)(ifp, cmd, arg));
}
static void
OpenPOWER on IntegriCloud