Date: Tue, 10 Apr 2018 15:54:58 -0700 From: Dieter BSD <dieterbsd@gmail.com> To: freebsd-usb@freebsd.org, freebsd-net@freebsd.org Cc: freebsd-drivers@freebsd.org, freebsd-hackers@freebsd.org Subject: AX88179 USB-to-Ethernet is slow and silently corrupts data Message-ID: <CAA3ZYrCW91_2NapFeELE4%2BdRBEXPdqGRpwN_UvakykHPfe3-Jw@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
10.3-RELEASE amd64 with ECC memory VIA VL805 USB 3.0 controller ue0 is Siig USB-to-Ethernet Chipset: AX88179 ugen0.7: <AX88179 ASIX Elec. Corp.> at usbus0, cfg=0 md=HOST spd=SUPER (5.0Gbps) pwr=ON (124mA) ue0: flags=8c43<UP,BROADCAST,RUNNING,OACTIVE,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=8000b<RXCSUM,TXCSUM,VLAN_MTU,LINKSTATE> inet 10.0.210.66 netmask 0xffffff00 broadcast 10.0.210.255 nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL> media: Ethernet autoselect (1000baseT <full-duplex>) status: active If media is set to "1000baseT <full-duplex>" it "works", but slowly, and received data is silently corrupted. :-( Transmitted data is not corrupted (tested with > 30 GB). ifconfig ue0 -txcsum "works", but still gives silent data corruption ifconfig ue0 -rxcsum (acts the same with or without txcsum) ping out netstat sees packets both directions, but ping doesn't see the response: 8 packets transmitted, 0 packets received, 100.0% packet loss ping in netstat sees packets in, but no responses going out I can see that some Ethernet controllers would not support checksum offloading, but it seems to me that turning the checksum offloading off should always work? (at the expense of more cpu load) Previously (2016 May): # ifconfig ue0 media 100baseTX-FDX fixed the input error problem and the data corruption problem, at the expense of making it even slower. Sent data from machine A with 10Mbps Ethernet. (Netgear Ethernet switch converts 10Mbps to 1000Mbps) Netstat did not report any input errors on ue0 and there was no data corruption. So ue0 can handle gigabit data rate, but gets input errors if packets arrive too frequently. I tried moving it to a USB-2 port. No data corruption, but USB-2 is slow. The chip performs a lot better for tweaktown: http://www.tweaktown.com/reviews/7243/vantec-cb-u300gna-usb-3-gigabit-network-adapter-review/index.html (Vantec CB-U300GNA with the same Asix AX88179 chip) "full duplex gigabit with 952 Mbps consistently across the chart" http://www.vantecusa.com/products_detail.php?p_id=143&p_name=USB+3.0+Gigabit+Ethernet+Adapter&pc_id=21&pc_name=Network&pt_id=5&pt_name=Accessories Asix AX88179 chip: http://www.asix.com.tw/products.php?op=pItemdetail&PItemID=131;71;112 "Supports Jumbo frame up to 4KB" But ifconfig rejects any value > 1500: ifconfig ue0 mtu 1501 ifconfig: ioctl SIOCSIFMTU (set mtu): Invalid argument I tried mtu of 100, 500, 1000, 1400 but they all give rcp: lost connection USB disks are fast, so the USB controller seems to work ok. I also tried a Tek Republic TUN-300 which has the same AX88179, and it acts the same as the Siig. So, transmit works, but is slow. Receive works if the amount of traffic is low enough (limit rate of data sent, limit Ethernet speed, or use USB-2). But if data is received too fast it gets silently corrupted. Setting -rxcsum does not work, and cannot set mtu other than 1500. Questions: Why does -rxcsum not work? Why does attempting to set a larger mtu fail? Why does setting a smaller mtu make rcp fail? Why is the chip acting slow? How do I get it to work properly? (fast and without data corruption)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAA3ZYrCW91_2NapFeELE4%2BdRBEXPdqGRpwN_UvakykHPfe3-Jw>