]> xenbits.xensource.com Git - pvdrivers/win/xenvif.git/commitdiff
Don't use Packet->Offset when stripping VLAN tags
authorPaul Durrant <paul.durrant@citrix.com>
Tue, 10 Jan 2017 16:53:08 +0000 (16:53 +0000)
committerPaul Durrant <paul.durrant@citrix.com>
Tue, 10 Jan 2017 16:53:08 +0000 (16:53 +0000)
The WHQL tests have always been buggy when dealing with packet data that
is offset into the NET_BUFFER MDL chain. Instead, adjust the MappedSystemVa
of the initial MDL.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
src/xenvif/receiver.c

index 5715dbaf4668d91d564837a5bc1fe0e10dc189d7..701cc86c8caf16dcd90041afc88cd840d0e97052 100644 (file)
@@ -424,7 +424,11 @@ ReceiverRingProcessTag(
                   Offset);
 
     // Fix up the packet information
-    Packet->Offset += sizeof (ETHERNET_TAG);
+    BaseVa += sizeof (ETHERNET_TAG);
+
+    BaseVa -= Packet->Offset;
+    Packet->Mdl.MappedSystemVa = BaseVa;
+
     Packet->Length -= sizeof (ETHERNET_TAG);
 
     Info->EthernetHeader.Length -= sizeof (ETHERNET_TAG);
@@ -446,10 +450,6 @@ ReceiverRingProcessTag(
 
     Info->Length -= sizeof (ETHERNET_TAG);
 
-    ASSERT(Packet->Mdl.MdlFlags & MDL_MAPPED_TO_SYSTEM_VA);
-    BaseVa = Packet->Mdl.MappedSystemVa;
-    ASSERT(BaseVa != NULL);
-
     BaseVa += Packet->Offset;
 
     EthernetHeader = (PETHERNET_HEADER)(BaseVa + Info->EthernetHeader.Offset);