rx_process for isoc

Duncan Sands duncan.sands at math.u-psud.fr
Sun Nov 20 08:36:49 EST 2005


Hi Stanislaw,

On Friday 18 November 2005 23:42, Stanislaw Gruszka wrote:
> > > AFIAK when all iso packets are full then urb->actual_length 
> > > == packet_size*num_packets == rx_channel.buf_size. 
> > 
> > Yes, but the same situation arises partially whenever large network
> > packets are coming in (large = bigger than the iso packet size).  For
> > example, a standard maximum ethernet packet amounts to about 2 full
> > iso packets followed by a partial packet (assuming an iso packet size
> > of 640 bytes).  It seems a pity to do two pointless copies to cell_buf.
> > I can't deny that it adds complexity.  I will try to do some profiling
> > and see if it actually gains anything (probably not).  If not, then it
> > is easy to go back to the original, simpler version.
> 
> 53 bytes are copied for every 640 incoming bytes, 
> so 8.28 % data is copied. If we assume connection speed 16Mbits/s
> we make copy 169 kbytes per second (173 bytes per mili second). 
> It's not so bad on one hand, and quite a lot on other hand. Have 
> fun with profiling :).
> 
> BTW when I did some timing test a long ago I discaver function 
> vcc->push(vcc, skb) takes the most time of loop (of course when is called) 

by the way, what is the maximum performance you can get from this driver?
I can't get more than 4 megabaud using bulk, slightly less using isoc (my
line speed is 8Mb, and I can get this using a different modem).

> > > is true and actual_length == 0 when error occurs. 
> > > USB guys should know this.
> > 
> > Yes - want to ask them?
> 
> Only if you plan to use condition usb->actual_length == rx_channel.buf_size, 
> it could be make easiest usbatm_rx_process() as same condition can be used
> to check errors for bulk pipe and isoc pipe with full filled frames.

Ciao,

Duncan.



More information about the Usbatm mailing list