summaryrefslogtreecommitdiff
path: root/sys/dev/netmap
diff options
context:
space:
mode:
authorLuigi Rizzo <luigi@FreeBSD.org>2014-09-25 16:22:32 +0000
committerLuigi Rizzo <luigi@FreeBSD.org>2014-09-25 16:22:32 +0000
commitb3d3758852b335b0be8258927fc2a9a97155333a (patch)
treee4c3f33cbb9da94ff180f2fd144e2c7575317af9 /sys/dev/netmap
parent7f154b713a745fc21f44ad17633722b1ef7bed58 (diff)
Notes
Diffstat (limited to 'sys/dev/netmap')
-rw-r--r--sys/dev/netmap/netmap.c25
1 files changed, 10 insertions, 15 deletions
diff --git a/sys/dev/netmap/netmap.c b/sys/dev/netmap/netmap.c
index 0fd362fe086f..f37bf9e81c45 100644
--- a/sys/dev/netmap/netmap.c
+++ b/sys/dev/netmap/netmap.c
@@ -2222,23 +2222,18 @@ netmap_ioctl(struct cdev *dev, u_long cmd, caddr_t data,
default: /* allow device-specific ioctls */
{
- struct socket so;
- struct ifnet *ifp;
+ struct ifnet *ifp = ifunit_ref(nmr->nr_name);
+ if (ifp == NULL) {
+ error = ENXIO;
+ } else {
+ struct socket so;
- bzero(&so, sizeof(so));
- NMG_LOCK();
- error = netmap_get_na(nmr, &na, 0 /* don't create */); /* keep reference */
- if (error) {
- netmap_adapter_put(na);
- NMG_UNLOCK();
- break;
+ bzero(&so, sizeof(so));
+ so.so_vnet = ifp->if_vnet;
+ // so->so_proto not null.
+ error = ifioctl(&so, cmd, data, td);
+ if_rele(ifp);
}
- ifp = na->ifp;
- so.so_vnet = ifp->if_vnet;
- // so->so_proto not null.
- error = ifioctl(&so, cmd, data, td);
- netmap_adapter_put(na);
- NMG_UNLOCK();
break;
}