freebsd-skq/sys/dev/usb
Pyun YongHyeon a5d826557f Introduce axge_rxfilter() which configures RX filtering and replace
axge_setmulti()/axge_setpromisc() with axge_rxfilter().
Multicast filter programming and promiscuous mode requires
access to a common RX configuration register so there is no need to
use separate functions with added complexity.  axge_rxfilter() does
not read back AXGE_RCR register since accessing a register in USB
is too slow and we already have all knowledge of required
configuration.  Rebuilding RX filter configuration is simpler and
faster than manipulating every bits after reading back the
register.

Note, axge_rxfilter() does not set RCR_IPE(IP header alignment on
32bit boundary) to disable extra padding bytes insertion.  The
extra padding wastes ethernet to USB host bandwidth as well as
complicating RX handling logic.  Current USB framework requires
copying RX frames to mbufs so there is no need to worry about
alignment.  Previously axge_rx_frame() performed wrong bound check
due to the extra padding and it was broken when RX checksum
offloading is disabled.  See added comment in axge_rx_frame () for
actual RX packet layout.

In axge_init(), disable WOL.  It's meaningless to enable WOL in
normal operation.

In axge_rxeof(), use properly sized mbuf rather than blindly
allocating a mbuf cluster.

Use RX H/W checksum offloading only when administrator requested RX
checksum offloading. Previously it always used RX H/W checksum
offloading result regardless of RX checksum offloading state.

Separate L4 checksum offloading validation from L3 one and properly
set required offloading bits for each layer. This is to fix setting
L4 checksum offloading bits for L3 packets.

There are still lots of RX errors(probably RX FIFO overflows) under
moderate load.  Users are strongly recommended to enable ethernet
flow control.

Reviewed by:	kevlo (initial version), hselasky
2016-08-18 06:29:07 +00:00
..
controller sys/dev: replace comma with semicolon when pertinent. 2016-08-09 19:41:46 +00:00
gadget
input Keep a reference count on USB keyboard polling to allow recursive 2016-08-05 08:58:00 +00:00
misc
net Introduce axge_rxfilter() which configures RX filtering and replace 2016-08-18 06:29:07 +00:00
quirk USB: Add Garmin FR230 device quirk (broken INQUIRY) 2016-06-29 06:42:20 +00:00
serial Annotate the usb-serial drivers which always return 0 for line status, 2016-07-27 00:08:01 +00:00
storage
template Fix MTP description in the comment. 2016-07-29 11:33:01 +00:00
video
wlan [run] fix TSF locking in RX radiotap. 2016-06-04 07:18:39 +00:00
ufm_ioctl.h
uftdiio.h
uled_ioctl.h
usb_bus.h
usb_busdma.c
usb_busdma.h
usb_cdc.h
usb_controller.h
usb_core.c
usb_core.h
usb_debug.c
usb_debug.h
usb_dev.c Check for signals when locking the USB enumeration thread from 2016-05-25 07:48:36 +00:00
usb_dev.h
usb_device.c Improve error message. 2016-07-29 11:33:23 +00:00
usb_device.h Check for signals when locking the USB enumeration thread from 2016-05-25 07:48:36 +00:00
usb_dynamic.c
usb_dynamic.h
usb_endian.h
usb_error.c
usb_freebsd_loader.h
usb_freebsd.h
usb_generic.c
usb_generic.h
usb_handle_request.c
usb_hid.c
usb_hub.c
usb_hub.h
usb_if.m
usb_ioctl.h
usb_lookup.c
usb_mbuf.c
usb_mbuf.h
usb_msctest.c
usb_msctest.h
usb_parse.c
usb_pci.h
usb_pf.c
usb_pf.h
usb_process.c
usb_process.h
usb_request.c
usb_request.h
usb_transfer.c
usb_transfer.h
usb_util.c
usb_util.h
usb.h
usbdevs Add Logitech Unifying receiver. 2016-08-06 20:27:12 +00:00
usbdi_util.h
usbdi.h
usbhid.h