• David Brownell's avatar
    [PATCH] USB: ehci-hcd updates · fc42fcf3
    David Brownell authored
    This should apply to 2.5.59 too.  It seems to get rid of some pesky
    hangs, on at least some hardware, but I won't have time to test it
    on either VIA version ... maybe someone else will make the time?  :)
    
          New QH state prevents a re-activation race
    	- nobody can un-halt a qh before its cleanup is done
    	- resubmit-from-completion had this race (some usbtest cases)
    	  as could some normal submit paths on busy endpoints (storage)
    	- faster controllers would trip on this more consistently
    
          Queues of qtds
    	- work harder to avoid ever modifing any qh in software
    	- short reads block queue advance much less often
    	- be more cautious with large (>~19KB) unaligned buffers
    
          Unlinking urbs
    	- if qtd unlinked is at queue head, use its latest status
    	  (main effect is reporting bytes from partial transfers)
    	- another new qh state:  defer qh unlink if IAA is busy
    	  (eliminates a busy-wait loop in a rare scenario)
    
          Enable features to improve bus utilization
    	- PCI MWI ... can produce better write throughput; and by
    	  using right cacheline size, sometimes read throughput too
    	- USB NAK throttle ... sometimes reduces PCI access rates
    
          Other
    	- async dump shows more funky qh+qtd states, and NAK count
    	- cope with with some of the sprintf wierdness
    	- periodic dump is usually smaller (so is that schedule)
          	- minor cleanups
    fc42fcf3
ehci-hcd.c 27.9 KB