opnsense-src/sys/dev/usb/net
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
..
if_aue.c Create a USB_PNP_INFO and use it to export the existing PNP 2015-12-11 05:28:00 +00:00
if_auereg.h
if_axe.c Add suppoort for the Sitecom LN-031 2015-12-31 18:12:35 +00:00
if_axereg.h
if_axge.c Introduce axge_rxfilter() which configures RX filtering and replace 2016-08-18 06:29:07 +00:00
if_axgereg.h Introduce axge_rxfilter() which configures RX filtering and replace 2016-08-18 06:29:07 +00:00
if_cdce.c Create a USB_PNP_INFO and use it to export the existing PNP 2015-12-11 05:28:00 +00:00
if_cdcereg.h
if_cue.c dev/usb: minor spelling fixes in comments. 2016-05-02 17:44:03 +00:00
if_cuereg.h
if_ipheth.c Create a USB_PNP_INFO and use it to export the existing PNP 2015-12-11 05:28:00 +00:00
if_iphethvar.h
if_kue.c Create a USB_PNP_INFO and use it to export the existing PNP 2015-12-11 05:28:00 +00:00
if_kuefw.h
if_kuereg.h
if_mos.c s/struct device */device_t/ 2016-05-02 05:37:25 +00:00
if_mosreg.h
if_rue.c dev/usb: minor spelling fixes in comments. 2016-05-02 17:44:03 +00:00
if_ruereg.h
if_smsc.c Fix variable assignment inside if-clause in the smsc driver. 2016-02-14 07:20:07 +00:00
if_smscreg.h
if_udav.c Create a USB_PNP_INFO and use it to export the existing PNP 2015-12-11 05:28:00 +00:00
if_udavreg.h
if_ure.c Cleanup unnecessary semicolons from the kernel. 2016-04-10 23:07:00 +00:00
if_urereg.h
if_urndis.c dev/usb: minor spelling fixes in comments. 2016-05-02 17:44:03 +00:00
if_urndisreg.h
if_usie.c Create a USB_PNP_INFO and use it to export the existing PNP 2015-12-11 05:28:00 +00:00
if_usievar.h
ruephy.c
ruephyreg.h
uhso.c usb/uhso: Don't bail out on first USB error. 2016-06-02 15:30:58 +00:00
usb_ethernet.c Get closer to a VIMAGE network stack teardown from top to bottom rather 2016-06-21 13:48:49 +00:00
usb_ethernet.h