summaryrefslogtreecommitdiffstats
path: root/sys/dev/usb/usb_ethersubr.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/usb/usb_ethersubr.c')
-rw-r--r--sys/dev/usb/usb_ethersubr.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/dev/usb/usb_ethersubr.c b/sys/dev/usb/usb_ethersubr.c
index 2cb5fa6..d0a3b83 100644
--- a/sys/dev/usb/usb_ethersubr.c
+++ b/sys/dev/usb/usb_ethersubr.c
@@ -82,6 +82,8 @@ usbintr(void)
struct usb_qdat *q;
struct ifnet *ifp;
+ mtx_lock(&Giant);
+
/* Check the RX queue */
while(1) {
IF_DEQUEUE(&usbq_rx, m);
@@ -109,6 +111,8 @@ usbintr(void)
(*ifp->if_start)(ifp);
}
+ mtx_unlock(&Giant);
+
return;
}
@@ -117,7 +121,8 @@ usb_register_netisr(void)
{
if (mtx_inited)
return;
- netisr_register(NETISR_USB, (netisr_t *)usbintr, NULL, 0);
+ netisr_register(NETISR_USB, (netisr_t *)usbintr, NULL,
+ NETISR_FORCEQUEUE);
mtx_init(&usbq_tx.ifq_mtx, "usbq_tx_mtx", NULL, MTX_DEF);
mtx_init(&usbq_rx.ifq_mtx, "usbq_rx_mtx", NULL, MTX_DEF);
mtx_inited++;
OpenPOWER on IntegriCloud