Hello,
compared with upl driver code (if_upl.c), I found ugl needs maintenance.
- remove extra blank line
- roll back (not commit) when ugl_send() failed
- call ifq_clr_oactive() before splx()
ok?
Index: if_ugl.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/if_ugl.c,v
retrieving revision 1.21
diff -u -p -r1.21 if_ugl.c
--- if_ugl.c 22 Jan 2017 10:17:39 -0000 1.21
+++ if_ugl.c 7 Mar 2018 04:39:38 -0000
@@ -215,7 +215,6 @@ ugl_attach(struct device *parent, struct
DPRINTFN(5,(" : ugl_attach: sc=%p, dev=%p", sc, dev));
-
sc->sc_udev = dev;
sc->sc_iface = iface;
id = usbd_get_interface_descriptor(iface);
@@ -595,7 +594,7 @@ ugl_start(struct ifnet *ifp)
return;
if (ugl_send(sc, m_head, 0)) {
- ifq_deq_commit(&ifp->if_snd, m_head);
+ ifq_deq_rollback(&ifp->if_snd, m_head);
ifq_set_oactive(&ifp->if_snd);
return;
}
@@ -655,9 +654,9 @@ ugl_init(void *xsc)
}
ifp->if_flags |= IFF_RUNNING;
- splx(s);
-
ifq_clr_oactive(&ifp->if_snd);
+
+ splx(s);
}
int
--
SASANO Takayoshi (JG1UAA) <[email protected]>