Re: About Data Aggregation with RNDIS and u_ether Driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux