diff options
author | ticso <ticso@FreeBSD.org> | 2003-05-18 21:22:00 +0000 |
---|---|---|
committer | ticso <ticso@FreeBSD.org> | 2003-05-18 21:22:00 +0000 |
commit | 6ab7ac813b75e7b026c6dbbb8c2476705c6ebfb7 (patch) | |
tree | 20f5ba7334851699e64b14d7cb2b0e986527d796 | |
parent | 5a893bc4659fe5e2d207be562d6802d6188de630 (diff) | |
download | FreeBSD-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)
-rw-r--r-- | sys/dev/usb/ugen.c | 11 |
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) |