diff options
Diffstat (limited to 'sys/dev/usb')
-rw-r--r-- | sys/dev/usb/if_rum.c | 16 | ||||
-rw-r--r-- | sys/dev/usb/if_zyd.c | 15 |
2 files changed, 17 insertions, 14 deletions
diff --git a/sys/dev/usb/if_rum.c b/sys/dev/usb/if_rum.c index b32ac38..87db92a 100644 --- a/sys/dev/usb/if_rum.c +++ b/sys/dev/usb/if_rum.c @@ -1427,9 +1427,9 @@ rum_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) struct ifreq *ifr = (struct ifreq *) data; int error = 0, startall = 0; - RUM_LOCK(sc); switch (cmd) { case SIOCSIFFLAGS: + RUM_LOCK(sc); if (ifp->if_flags & IFF_UP) { if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) { rum_init(sc); @@ -1440,18 +1440,20 @@ rum_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) if (ifp->if_drv_flags & IFF_DRV_RUNNING) rum_stop(sc); } + RUM_UNLOCK(sc); + if (startall) + ieee80211_start_all(ic); break; case SIOCGIFMEDIA: - case SIOCSIFMEDIA: error = ifmedia_ioctl(ifp, ifr, &ic->ic_media, cmd); break; - default: + case SIOCGIFADDR: error = ether_ioctl(ifp, cmd, data); + break; + default: + error = EINVAL; + break; } - RUM_UNLOCK(sc); - - if (startall) - ieee80211_start_all(ic); return error; } diff --git a/sys/dev/usb/if_zyd.c b/sys/dev/usb/if_zyd.c index bf51177..9e7cd72 100644 --- a/sys/dev/usb/if_zyd.c +++ b/sys/dev/usb/if_zyd.c @@ -2448,9 +2448,9 @@ zyd_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) struct ifreq *ifr = (struct ifreq *) data; int error = 0, startall = 0; - ZYD_LOCK(sc); switch (cmd) { case SIOCSIFFLAGS: + ZYD_LOCK(sc); if (ifp->if_flags & IFF_UP) { if (ifp->if_drv_flags & IFF_DRV_RUNNING) { if ((ifp->if_flags ^ sc->sc_if_flags) & @@ -2465,19 +2465,20 @@ zyd_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) zyd_stop(sc, 1); } sc->sc_if_flags = ifp->if_flags; + ZYD_UNLOCK(sc); + if (startall) + ieee80211_start_all(ic); break; case SIOCGIFMEDIA: - case SIOCSIFMEDIA: error = ifmedia_ioctl(ifp, ifr, &ic->ic_media, cmd); break; - default: + case SIOCGIFADDR: error = ether_ioctl(ifp, cmd, data); break; + default: + error = EINVAL; + break; } - ZYD_UNLOCK(sc); - - if (startall) - ieee80211_start_all(ic); return error; } |