introduce cx82310_eth: Conexant CX82310-based ADSL router USB ethernet driver
authorOndrej Zary <linux@rainbow-software.org>
Sat, 4 Sep 2010 02:39:34 +0000 (02:39 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 8 Sep 2010 20:10:53 +0000 (13:10 -0700)
commitcc28a20e77b261eb4e80c84abd621e810302f435
tree184deb1e0ebbc63a0e04c3b57c38ee564ab9670d
parent6febfca98f25c7ee5c3ff7fc85e048bf82230ad5
introduce cx82310_eth: Conexant CX82310-based ADSL router USB ethernet driver

This patch introduces cx82310_eth driver - driver for USB ethernet port of
ADSL routers based on Conexant CX82310 chips. Such routers usually have
ethernet port(s) too which are bridged together with the USB ethernet port,
allowing the USB-connected machine to communicate to the network (and also
internet through the ADSL, of course).

This is my first driver, so please check thoroughly. As there's no protocol
documentation, it was done with usbsnoop dumps from Windows driver, some
parts (the commands) inspired by cxacru driver and also other usbnet drivers.
The driver passed my testing - some real work and also pings sized from 0 to
65507 B.

The only problem I found is the ifconfig error counter. When I return 0 (or 1
but empty skb) from rx_fixup(), usbnet increases the error counter although
it's not an error condition (because packets can cross URB boundaries). Maybe
the usbnet should be fixed to allow rx_fixup() to return empty skbs (or some
other value, e.g. 2)?

The USB ID of my device is 0x0572:0xcb01 which conflicts with some ADSL modems
using cxacru driver (they probably use the same chipset but simpler
firmware). The modems seem to use bDeviceClass 0 and iProduct "ADSL USB
MODEM", my router uses bDeviceClass 255 and iProduct "USB NET CARD". The
driver matches only devices with class 255 and checks for the iProduct string
during init. I already posted a patch for the cxacru driver to ignore these
devices.

Signed-off-by: Ondrej Zary <linux@rainbow-software.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/usb/Kconfig
drivers/net/usb/Makefile
drivers/net/usb/cx82310_eth.c [new file with mode: 0644]