On 5/21/2012 9:34 PM, Greg KH wrote:
Initial analysis seems that Network Interface is more faster than
USB is able to transfer data with RNDIS USB Function.
So the USB bus is totally full, yet the network is empty at times? Or
are there gaps on the USB traffic also?
Yes. All USB requests are queued with UDC and there is no more USB
request available. Network is still having more data to transfer here
and from u_ether, netif TX Queue is stopped to not to push more data.
Possible Approaches:
1. Increasing the qmult ( Queue length multiplier at high speed )
which would allow not to call netif_stop_queue frequently than less
number of USB Requests. But still netif_stop_queue would call once
limited number of USB requests are exhausted.
2. Using Multi packet approach at RNDIS protocol level ( combining
multiple, 2 or more SKBs into one SKB ) of RNDIS Packet ( RNDIS
Header + Received Ethernet Data ). Issue could be overhead involved
here to create one SKB packet out of multiple SKBs with added RNDIS
Header for each of the packet.
3. Is there any other possible approach to fine this network
interface and USB RNDIS Function ?
Are you using multiple urbs to keep the pipe full to the USB device?
That's a requirement if you want to get proper throughput.
I could get multi packets combine into one to transfer in one USB transfer.
but it involves few memcpy which may not be good to go with it.
Thanks.
_-_Mayank Rana_-_
--
Sent by a consultant of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.
--
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