summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorticso <ticso@FreeBSD.org>2003-05-18 21:22:00 +0000
committerticso <ticso@FreeBSD.org>2003-05-18 21:22:00 +0000
commit6ab7ac813b75e7b026c6dbbb8c2476705c6ebfb7 (patch)
tree20f5ba7334851699e64b14d7cb2b0e986527d796 /sys
parent5a893bc4659fe5e2d207be562d6802d6188de630 (diff)
downloadFreeBSD-src-6ab7ac813b75e7b026c6dbbb8c2476705c6ebfb7.zip
FreeBSD-src-6ab7ac813b75e7b026c6dbbb8c2476705c6ebfb7.tar.gz
Recreate devnodes on USB_SET_ALTINTERFACE ioctl.
This fixes net/pppoa port for Alcatel Speedtouch devices. Submitted by: Jay Cornwall <jay@evilrealms.net> Tested by: Francois Rogler <francois@rogler.org> Approved by: re (scottl)
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/usb/ugen.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/sys/dev/usb/ugen.c b/sys/dev/usb/ugen.c
index ffecd12..80c6176 100644
--- a/sys/dev/usb/ugen.c
+++ b/sys/dev/usb/ugen.c
@@ -1024,6 +1024,12 @@ ugen_set_interface(struct ugen_softc *sc, int ifaceidx, int altno)
err = usbd_endpoint_count(iface, &nendpt);
if (err)
return (err);
+
+#if defined(__FreeBSD__)
+ /* destroy the existing devices, we remake the new ones in a moment */
+ ugen_destroy_devnodes(sc);
+#endif
+
/* XXX should only do this after setting new altno has succeeded */
for (endptno = 0; endptno < nendpt; endptno++) {
ed = usbd_interface2endpoint_descriptor(iface,endptno);
@@ -1035,6 +1041,11 @@ ugen_set_interface(struct ugen_softc *sc, int ifaceidx, int altno)
sce->iface = 0;
}
+#if defined(__FreeBSD__)
+ /* make the new devices */
+ ugen_make_devnodes(sc);
+#endif
+
/* change setting */
err = usbd_set_interface(iface, altno);
if (err)
OpenPOWER on IntegriCloud