From: Paul Durrant Date: Tue, 10 Jan 2017 16:53:08 +0000 (+0000) Subject: Don't use Packet->Offset when stripping VLAN tags X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=4956eff5936f3e724e3ed974e597b3af4c069bd1;p=people%2Fpauldu%2Fxenvif.git Don't use Packet->Offset when stripping VLAN tags 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 --- diff --git a/src/xenvif/receiver.c b/src/xenvif/receiver.c index 5715dba..701cc86 100644 --- a/src/xenvif/receiver.c +++ b/src/xenvif/receiver.c @@ -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);