|
|
|
|
|
|
|
|
|
|
xen-devel
[Xen-devel] RE: Question on sg in netback tx path
> -----Original Message-----
> From: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
> [mailto:xen-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of
> James Harper
> Sent: Monday, March 03, 2008 9:03 PM
> To: xen-devel@xxxxxxxxxxxxxxxxxxx
> Subject: [Xen-devel] Question on sg in netback tx path
>
> I'm trying to improve performance on the gpl pv drivers for
> windows, and am running into trouble with the sg stuff on the tx path.
>
> Taking an icmp packet as an example, windows formats the packet like
> this:
> sg entry 0 - Ethernet header
> sg entry 1 - IP header
> sg entry 2 - payload
>
> Those pieces could be anywhere inside the page.
>
> In netback.c, it appears that the sg magic happens inside
> netbk_count_requests. The following statement confuses me:
>
> "
> if (txp->size > first->size) {
> DPRINTK("Frags galore\n");
> return -frags;
> }
> "
>
> If I interpret the implications of that correctly, the 'size'
> field in the first fragment of a packet should be the size of
> the entire packet,
Correct.
>but then how do I tell netback how long my
> first fragment is?
Look at the line following the code above:
first->size -= txp->size;
This line subtract each fragment size from the "size" field in the first
fragment.
When the loop ends you will have subtracted the size of all fragments and
first->size will now have the actual size of the first fragment.
Renato
>
> Thanks
>
> James
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|
|
|