Attach an USB device that looks like this:
ugen1 at uhub0 port 2
ugen1: detached
ugen1: at uhub0 port 2 (addr 3) disconnected
When unplugging the device:
usb_transfer_complete: xfer=0xffff80000832a800 not busy 0x00000055
usb_transfer_complete: bad dequeue 0xffff80000832a800 != 0x0
- no need to keep TX/RX mbufs during xfers in struct kue_chain
- check RX packet length more strictly in kue_rxeof()
- make some TX/RX handling in kue_send() and kue_rxeof() more readable
with proper functions
Tested on:
kue0: LINKSYS USB Network Adapter, rev 1.00/2.02, addr 5
modem that requires ejecting the fake umass disk that contains the drivers
like the novatel one. Perhaps I should rename the novatel routine
usbd_scsi_eject() or something.
Fixes PR#43159.
Justification:
UGEN_NISORFRMS, previously 4, is now 8 because that's the number of
microframes per frame on a high speed bus. This allows data to be
transfered every microframe if necessary.
UGEN_NISOREQS, previously 6, is now 4. This is harder to justify,
but I didn't think the total number of buffer frames needed to be
much more than it was.
UGEN_NISOFRAMES, previously 500, is now (UGEN_NISORFRMS * UGEN_NISOREQS)
(32 with values as above). This is all the more we've actually used.
address assignment - not required by the spec but Windows does so,
fixes a problem with a Sun Keyboard reported by Jonathan Perkin,
verified by Jonathan Kollasch
use a request of 64 bytes for the initial device descriptor fetch.
This is what windows does, and I've seen USB device firmware which
really depends on this. (sends 8 bytes if 64 are requested and
the full descriptor which is more than NetBSD's USB_MAX_IPACKET
otherwise) This is the world...
This change prevents some truncated OHCI vendor names in some verbose cases:
uhub0 at usb0: ATI Technologie OHCI root hub, class 9/0, rev 1.00/1.00, addr 1
...
uhub1 at usb1: ATI Technologies EHCI root hub, class 9/0, rev 2.00/1.00, addr 1
transfer type, nak throttling should be enabled from the veiwpoint that
avoids the memory thrashing. Fixes a problem that interrupt transfer stall
on some EHCI controllers (e.g. Geode LX). Fixed by Yamada Katsumi.
IEEE 802.11b/g WLAN device, ported from OpenBSD by FUKAUMI Naoki:
http://mail-index.NetBSD.org/current-users/2010/05/28/msg013570.html
Slightly modified by me to use recently added config_mountroot(9)
to defer some device initialization until mountroot for firmload(9).
Tested on Sharp W-ZERO3 WS003SH with internal WLAN.
Note currently we cannot redistribute firmware files for upgt(4) so
they have to be downloaded and copied into /libdata/firmware/upgt manually.
See upgt(4) man page about firmware details.
HCHalted=1 - this is normal. Fixes a bug that system hangs at boot time
when a USB mass storage is connected via UHCI. This problem was observed
on Intel D410PT and was fixed by Katsumi Yamada.
* in axe_detach():
* call callout_destroy(9) after axe_stop() which calls callout_stop(9)
(otherwise gets panic on DIAGNOSTIC and LOCK_DEBUG kernel)
* no need to call usbd_abort_pipe() that are done in axe_stop()
* no need to call usb_detach_wait() twice
* also destroy axe_mii_lock mutex
* in axe_tick_task():
* fix an inverted logic