[ovs-dev] [PATCH v3] datapath-windows: Add GRE checksum

Nithin Raju nithin at vmware.com
Tue Jun 14 22:11:58 UTC 2016


Glad we were able to resolve this :)

-----Original Message-----
From: Alin Serdean <aserdean at cloudbasesolutions.com>
Date: Tuesday, June 14, 2016 at 9:12 AM
To: Nithin Raju <nithin at vmware.com>, "dev at openvswitch.org"
<dev at openvswitch.org>
Subject: RE: [ovs-dev] [PATCH v3] datapath-windows: Add GRE checksum

>> >greater than the maximum header size which is configurable. In the case
>
>> >of VXLAN / STT we can be in the case above, because of the UDP/TCP like
>
>> >packet
>
>> 
>
>> [Nithin]: Yes, in fact even for NICs that support header-split (mostly
>>Intel),
>
>[Alin Gabriel Serdean: ] I looked over some Intel specs and they said you
>could header split after eth header on a RQ.
>
>The documentation is very shady between NDIS versions, you are right, I
>will allocate a buffer if the memory was not contiguous.
>
>I found this in the document when header data split was introduced:
>
>" €	Do not assume that the minimum size of the data in the first MDL
>contains all of the TCP/IP headers."
>
>Thanks for the patience of reiterating that we should not make
>assumptions :).
>
>> the payload of the packet WILL NOT be in the first MDL. In case of GRE,
>>the
>
>> split would happen at the IP header itself. So, GRE header would not be
>>in
>
>> the contigous buffer.
>
>> 
>
>> >, but for GRE things differ since there are cards which support
>
>> >offloading:
>
>> >https://urldefense.proofpoint.com/v2/url?u=https-
>
>> 3A__msdn.microsoft.com
>
>> >_en
>
>> >-2Dus_library_windows_hardware_dn605832-28v-3Dvs.85-
>
>> 29.aspx&d=CwIFAA&c=
>
>> >Sqc
>
>> >l0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-
>
>> uEs&r=pNHQcdr7B40b4h6Yb7FIedI1dnBs
>
>> >xdD
>
>> >uTLBYD3JqV80&m=Xih_0c1MPDafKSkW1nO5-
>
>> mIutm1WK_ZmMcu7likx3jM&s=A4LA4vS20h
>
>> >f4l
>
>> >keq-wjCc6N9kbBMqswRnC-SSulTF6s&e=
>
>> >"The protocol driver will guarantee that all the prepended
>
>> >encapsulation headers (ETH, IP, GRE) will be physically contiguous and
>
>> >will be in the first MDL of the packet."
>
>> 
>
>> 
>
>> >I do not think we will be in a situation in which a GRE header will not
>
>> >be continuous.
>
>> >If you consider we should still have a fragmented header problem, I
>
>> >will allocate a buffer and execute another NdisGetDataBuffer call if
>
>> >the first one failed.
>
>> 
>
>> [Nithin]: The documention you point to is to the send direction. In
>>case of
>
>> receive, where does it say that the protocol/filter driver can expect
>>the
>
>> miniport driver to pack the ETH + IP + GRE header in one contiguous
>>buffer?
>
>[Alin Gabriel Serdean: ]
>https://urldefense.proofpoint.com/v2/url?u=https-3A__msdn.microsoft.com_en
>-2Dus_library_windows_hardware_dn605831-28v-3Dvs.85-29.aspx&d=CwIGaQ&c=Sqc
>l0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=pNHQcdr7B40b4h6Yb7FIedI1dnBsxdD
>uTLBYD3JqV80&m=VugC5mFPTpNpx0R-jC10W_uinFfZOY_F1Hi4gFstsFA&s=h7DHGykgAZtg3
>nSvp5hoJlvoAHoucP3l3niTl3PmxnI&e=
>
>> 
>
>> In any case, if you are particular that the code is correct, I am ok
>>with the
>
>> patch. I was trying to give suggestions to make the code solid.
>
>> 
>
>> Acked-by: Nithin Raju <nithin at vmware.com>
>
>> 
>
>> -- Nithin
>
>
>




More information about the dev mailing list