freebsd-nq/sys/dev/usb
Pyun YongHyeon 65c12bf571 r184610 changed the way how TX frames are handled on AX88178 and
AX88772 controllers. ASIX added a new feature for AX88178/AX88772
controllers which allows combining multiple TX frames into a single
big frame. This was to overcome one of USB limitation where it
can't generate more than 8k interrupts/sec which in turn means USB
ethernet controllers can not send more than 8k packets per second.
Using ASIX's feature greatly enhanced TX performance(more than 3~4
times) compared to 7.x driver. However it seems r184610 removed
boundary checking for buffered frames which in turn caused
instability issues under certain conditions. In addition, using
ASIX's feature triggered another issue which made USB controller
hang under certain conditions. Restarting ethernet controller
didn't help under this hang condition and unplugging and replugging
the controller was the only solution. I believe there is a silicon
bug in TX frame combining feature on AX88178/AX88772 controllers.

To address these issues, reintroduce the boundary checking for both
AX88178 and AX88772 after copying a frame to USB buffer and do not
use ASIX's multiple frame combining feature. Instead, use USB
controller's multi-frame transmit capability to enhance TX
performance as suggested by Hans[1].
This should fix a long standing axe(4) instability issues reported
on AX88772 and AX88178 controllers. While I'm here remove
unnecessary TX frame length check since upper stack always
guarantee the size of a frame to be less than MCLBYTES.

Special thanks to Derrick Brashear who tried numerous patches
during last 4 months and waited real fix with patience. Without
this enthusiastic support, patience and H/W donation I couldn't fix
it since I was not able to trigger the issue on my box.

Suggested by:	hselasky [1]
Tested by:	Derrick Brashear (shadow <> gmail dot com>
H/W donated by:	Derrick Brashear (shadow <> gmail dot com>
PR:		usb/140883
2010-12-08 01:24:05 +00:00
..
controller Removes a unused function `usb_bus_find'. 2010-11-25 22:56:26 +00:00
input Fix compiler warnings. 2010-11-13 19:26:45 +00:00
misc Add missing MODULE_VERSION() definitions, this resolves problems around 2010-09-01 23:47:53 +00:00
net r184610 changed the way how TX frames are handled on AX88178 and 2010-12-08 01:24:05 +00:00
quirk Add a man page for usb_quirk module, plus references in other man pages, 2010-11-10 23:45:44 +00:00
serial Support the Falcom Twist USB GSM/GPRS modem in uftdi(4) 2010-11-29 08:17:44 +00:00
storage Allow umass to use bigger transactions for USB 3.0 devices. It is less 2010-10-16 19:29:37 +00:00
template isochronous endpoint descriptors should have two more bytes which are zero by 2010-03-11 21:48:10 +00:00
wlan Add new device ids. 2010-11-29 15:08:18 +00:00
ufm_ioctl.h
usb_bus.h Removes all duplicated code with BPF that it's greatly simplified and 2010-11-24 19:11:32 +00:00
usb_busdma.c Use saner nsegments and maxsegsz parameters when creating certain DMA tags; 2010-09-14 20:41:06 +00:00
usb_busdma.h
usb_cdc.h USB network (NCM driver): 2010-10-13 22:04:55 +00:00
usb_compat_linux.c Add missing MODULE_VERSION() definitions, this resolves problems around 2010-09-01 23:47:53 +00:00
usb_compat_linux.h - Add usb_fill_bulk_urb() and usb_bulk_msg() linux compat functions [1] 2009-11-01 21:48:18 +00:00
usb_controller.h Removes a unused function `usb_bus_find'. 2010-11-25 22:56:26 +00:00
usb_core.c
usb_core.h Improve High Speed slot allocation mechanism by moving the computation to the 2009-11-22 21:16:43 +00:00
usb_debug.c Provide tunables for some of the usb sysctls that affect boot behaviour. 2009-11-22 21:21:22 +00:00
usb_debug.h Change USB_DEBUG to #ifdef and allow it to be turned off. Previously this had 2010-04-22 21:31:34 +00:00
usb_dev.c Serialise USB re-enumeration with the USB explore thread. 2010-10-04 22:21:30 +00:00
usb_dev.h
usb_device.c We need to define a cdev variable associated with each USB device, 2010-11-30 08:25:57 +00:00
usb_device.h This commit adds full support for USB 3.0 devices in host and device 2010-10-04 23:18:05 +00:00
usb_dynamic.c Use the EVENTHANDLER system to hook into the usb device configuration and 2009-12-17 21:42:10 +00:00
usb_dynamic.h Use the EVENTHANDLER system to hook into the usb device configuration and 2009-12-17 21:42:10 +00:00
usb_endian.h
usb_error.c
usb_freebsd.h Add possibility to generate devctl notifications regardless of UGEN presence. 2010-10-22 20:13:45 +00:00
usb_generic.c Serialise USB re-enumeration with the USB explore thread. 2010-10-04 22:21:30 +00:00
usb_generic.h
usb_handle_request.c Add missing #if's 2010-10-04 22:50:08 +00:00
usb_hid.c Support getting signed and unsigned HID data. 2010-05-12 22:50:23 +00:00
usb_hub.c Add support for setting per-interface PnP information. 2010-10-27 17:38:05 +00:00
usb_hub.h This commit adds full support for USB 3.0 devices in host and device 2010-10-04 23:18:05 +00:00
usb_if.m
usb_ioctl.h - Add support for LibUSB in 32-bit compatibility mode. 2010-10-14 20:38:18 +00:00
usb_lookup.c
usb_mbuf.c
usb_mbuf.h
usb_msctest.c We already have dummy receive buffer in sc->buffer. 2010-10-12 09:41:42 +00:00
usb_msctest.h Add support to Alcatel/TCTMobile X080S USB 3G modem. The device needs 2010-10-06 14:29:00 +00:00
usb_parse.c This commit adds full support for USB 3.0 devices in host and device 2010-10-04 23:18:05 +00:00
usb_pci.h
usb_pf.c Introduces IFF_CANTCONFIG interface flag to point that the interface 2010-12-07 20:23:47 +00:00
usb_pf.h Removes all duplicated code with BPF that it's greatly simplified and 2010-11-24 19:11:32 +00:00
usb_process.c fix a few cases where a string is passed via format argument instead of 2010-06-11 19:27:21 +00:00
usb_process.h
usb_request.c Re-add a status check which sneaked out during r214804. 2010-12-07 08:20:20 +00:00
usb_request.h Add code to warm reset a USB 3.0 port. 2010-11-04 19:24:21 +00:00
usb_transfer.c Adds a USB packet filter feature to the stack that it could capture 2010-11-22 01:11:28 +00:00
usb_transfer.h This commit adds full support for USB 3.0 devices in host and device 2010-10-04 23:18:05 +00:00
usb_util.c
usb_util.h
usb.h Add missing USB 3.0 definitions. Correct some wrong ones. 2010-10-04 21:38:10 +00:00
usbdevs Add new device ids. 2010-11-29 15:08:18 +00:00
usbdi_util.h This commit adds full support for USB 3.0 devices in host and device 2010-10-04 23:18:05 +00:00
usbdi.h Add support for setting per-interface PnP information. 2010-10-27 17:38:05 +00:00
usbhid.h Support getting signed and unsigned HID data. 2010-05-12 22:50:23 +00:00