I'm still trying to figure out what is going wrong with large send
support in windows. I thought I was doing all the right things but
obviously something is going wrong...
Windows sends my driver a packet of length 4434 with an mss of 1460,
comprising of the following sg items (pages):
Page 0 - addr 19efc312, length 54
Page 1 - addr 02776000, length 4096
Page 2 - addr 02777000, length 284
I put this onto the tx ring as follows:
Slot 0 - pfn 19efc, offset 312, length 4434,
NETTXF_extra_info|NETTXF_csum_blank|NETTXF_data_validated|NETTXF_more_da
ta
Slot 1 - extra info - mss = 1460
Slot 2 - pfn 02776000, offset 0, length 4096, NETTXF_more_data
Slot 3 - pfn 02777000, offset 0, length 284
A tcpdump on Dom0 receives this as the following:
(connection setup stuff - MSS = 1460)
Packet 0 - TCP Seq = 1, Length = 24
Packet 1 - TCP Seq = 25, Length = 4380
Packet 2 - TCP Seq = 1485, Length = 2920
Packet 3 - TCP Seq = 2945, Length = 1460
Dom0 meanwhile is sending acks and getting them all wrong... obviously
things have fallen to pieces badly somewhere.
I've had a look at the equivalent Linux code, frontend and back, but I
don't know enough about skb's to tell if there is anything special
happening to packet/page lengths with GSO... maybe I'm supposed to do
something different?
Can anyone offer any suggestions as to where I'm going wrong? Maybe
there is a fundamental difference between how windows formats a packet
for large send offload and how linux formats it?
Thanks
James
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|