2009/3/26 David Brownell <david-b@xxxxxxxxxxx>: > On Wednesday 25 March 2009, Ming Lei wrote: >> I also find such issues in other hardware(surely not use Mentor IP). > > Another observation is that for some reason, all USB > peripheral hardware I've seen has a hard time getting > OUT transfers to work cleanly. Especially with DMA. > > Double buffering support in hardware helps, but there > always seem to be some extra troublesome corner cases > with OUT cases that don't show up with IN. It's not > just short packet terminations on transfers; there are > a lot of other strange interactions. > > >> I use Mentor's dma and don't enable CPPI, and find the >> similar problem with CONFIG_MUSB_PIO_ONLY=y. > > PIO_ONLY would be *without* Mentor's DMA. :) I mean the the two cases have been tested, one is DMA enabled but CPPI is disabled, another is PIO_ONLY. > > I'm not sure anyone actually turned on the double > buffering support in the musb_hdrc driver. I tried > it at one point and didn't have much success. Having > that would help. > > >> I guess the reason is related with PING for the poor bulk out >> performance compared with bulk in. Bulk in transfer can >> move data from sdram to udc fifo before incoming in token, but >> bulk out can not receive data in advance, so it is very quick to fill >> udc fifo with incoming data and leads to continuous PING packets >> from host until unloading all data from fifo to sdram. > > ... unless double buffering is in use, yes. Having > that work would be the single biggest performance > improvement one could make in musb_hdrc peripheral > behavior, I suspect. I will try to test bulk out performance with enabling double buffer in beagle board. Thanks! > > - Dave > > > > -- Lei Ming -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html