• David Brownell's avatar
    [PATCH] USB usbnet: dynamic config, cdc-ether, net1080 · eca765b0
    David Brownell authored
    This patch:
    
       - Makes "usbnet" pay attention to device descriptors in
         the most common cases; there's less need to embed device
         hardware details.  This lets it work with high speed
         devices, and should help interop with the newer ARM/PXA
         kernels "usb-eth" (same vid/pid, but different endpoints).
    
       - Adds some new CDC Ethernet support, which is partly enabled:
         the Zaurus SL-5500 code uses it, with the current FRAMING_Z
         flag overriding normal CDC framing on-the-wire.  (Most of
         the other "minidrivers" use CDC framing, except Net1080
         and GeneSys.)
    
       - Merges a patch from Johannes to recover from some net1080
         framing errors by flushing the fifos ... the chip gets into
         a wierd mode, this makes the link more robust.  (Thanks!)
    
       - Gets rid of a family of cpu/logfile saturating loops that
         could show up in early stages of disconnect processing,
         while we're getting rx/tx errors continuously since khubd
         hasn't tried to disconnect() us yet.  (Pathological case,
         with lots of logging enabled: khubd never gets scheduled!)
    
       - Uses deeper queues at high speed, so the host controllers
         can stay busy transferring packets even when IRQs get held
         off for several milliseconds.  That pipelining gives better
         throughput too -- 4x more with one device, says TTCP.
    
    With the possible exception of multicast support, this code
    should be a fine replacement to "cdc-ether" ... certainly
    its faster for high speed devices.  Some later patch should
    likely do a switch-over.  (Which would  also resolve a Zaurus
    hotplugging bug:  "cdc-ether" doesn't blacklist it.)
    eca765b0
usbnet.c 73.2 KB