Index: /trunk/src/VBox/HostDrivers/VBoxNetFlt/VBoxNetFltInternal.h
===================================================================
--- /trunk/src/VBox/HostDrivers/VBoxNetFlt/VBoxNetFltInternal.h	(revision 22598)
+++ /trunk/src/VBox/HostDrivers/VBoxNetFlt/VBoxNetFltInternal.h	(revision 22599)
@@ -195,12 +195,5 @@
             /** Filter driver device context. */
             ADAPT IfAdaptor;
-            /** since the driver is able to work in different modes (NetFlt or PassThru)
-             * we need to wait for the old-mode operations to complete before switching to the new mode
-             * The most trickiest here is NetFlt->PassThru switch as we can not block in PtSent/Receive
-             * because they typically run at DPC level
-             * we also not allowed to re-order packets, so on NetFlt-PassThru switch (kVBoxNetDevMode_NetFltDeinitializing mode)
-             * we put them to the pending queue to process them in order on final mode activation stage */
-            volatile VBOXNETDEVMODE_TYPE enmModeMP;
-            volatile VBOXNETDEVMODE_TYPE enmModePT;
+
             volatile uint32_t cModeNetFltRefs;
             volatile uint32_t cModePassThruRefs;
Index: /trunk/src/VBox/HostDrivers/VBoxNetFlt/win/VBoxNetFlt-win.h
===================================================================
--- /trunk/src/VBox/HostDrivers/VBoxNetFlt/win/VBoxNetFlt-win.h	(revision 22598)
+++ /trunk/src/VBox/HostDrivers/VBoxNetFlt/win/VBoxNetFlt-win.h	(revision 22599)
@@ -232,4 +232,5 @@
     pList->pTail->Next = pEntry;
     pList->pTail = pEntry;
+    pEntry->Next = NULL;
 }
 
Index: /trunk/src/VBox/HostDrivers/VBoxNetFlt/win/VBoxNetFltCommon-win.h
===================================================================
--- /trunk/src/VBox/HostDrivers/VBoxNetFlt/win/VBoxNetFltCommon-win.h	(revision 22598)
+++ /trunk/src/VBox/HostDrivers/VBoxNetFlt/win/VBoxNetFltCommon-win.h	(revision 22599)
@@ -297,16 +297,4 @@
 /*    NDIS_HANDLE                    hHandle; */
 } ADAPT_DEVICE, *PADAPT_DEVICE;
-
-
-typedef enum VBOXNETDEVMODE_TYPE
-{
-    kVBoxNetDevMode_InvalidValue = 0,
-    kVBoxNetDevMode_NetFltInitializing,
-    kVBoxNetDevMode_NetFltInitialized,
-    kVBoxNetDevMode_NetFltDeinitializing,
-    kVBoxNetDevMode_NetFltWaitDeinitialized,
-    kVBoxNetDevMode_NetFltDeinitialized,
-
-} VBOXNETDEVMODE_TYPE;
 
 /* packet filter processing mode constants */
@@ -481,15 +469,4 @@
 } TRANSFERDATA_RSVD, *PTRANSFERDATA_RSVD;
 
-typedef struct _PT_RSVD
-{
-    union
-    {
-        SEND_RSVD SendRsvd;
-        TRANSFERDATA_RSVD TransferDataRsvd;
-    };
-} PT_RSVD, *PPT_RSVD;
-
-
-#ifndef VBOX_NETFLT_ONDEMAND_BIND
 /** Miniport reserved part of a received packet that is allocated by
  * us. Note that this should fit into the MiniportReserved space
@@ -505,4 +482,16 @@
 } RECV_RSVD, *PRECV_RSVD;
 
+typedef struct _PT_RSVD
+{
+    union
+    {
+        RECV_RSVD RecvRsvd;
+        TRANSFERDATA_RSVD TransferDataRsvd;
+    } u;
+} PT_RSVD, *PPT_RSVD;
+
+
+#ifndef VBOX_NETFLT_ONDEMAND_BIND
+
 C_ASSERT(sizeof(RECV_RSVD) <= sizeof(((PNDIS_PACKET)0)->MiniportReserved));
 #endif
Index: /trunk/src/VBox/HostDrivers/VBoxNetFlt/win/VBoxNetFltPt-win.c
===================================================================
--- /trunk/src/VBox/HostDrivers/VBoxNetFlt/win/VBoxNetFltPt-win.c	(revision 22598)
+++ /trunk/src/VBox/HostDrivers/VBoxNetFlt/win/VBoxNetFltPt-win.c	(revision 22599)
@@ -799,5 +799,5 @@
 static bool vboxNetFltWinRemovePacketFromList(PINTERLOCKED_SINGLE_LIST pList, PNDIS_PACKET pPacket)
 {
-    PTRANSFERDATA_RSVD pTDR = &((PPT_RSVD)pPacket->ProtocolReserved)->TransferDataRsvd;
+    PTRANSFERDATA_RSVD pTDR = &((PPT_RSVD)pPacket->ProtocolReserved)->u.TransferDataRsvd;
     return vboxNetFltWinInterlockedSearchListEntry(pList, &pTDR->ListEntry,
             true /* remove*/);
@@ -809,5 +809,5 @@
 static void vboxNetFltWinPutPacketToList(PINTERLOCKED_SINGLE_LIST pList, PNDIS_PACKET pPacket, PNDIS_BUFFER pOrigBuffer)
 {
-    PTRANSFERDATA_RSVD pTDR = &((PPT_RSVD)pPacket->ProtocolReserved)->TransferDataRsvd;
+    PTRANSFERDATA_RSVD pTDR = &((PPT_RSVD)pPacket->ProtocolReserved)->u.TransferDataRsvd;
     pTDR->pOriginalBuffer = pOrigBuffer;
     vboxNetFltWinInterlockedPutTail(pList, &pTDR->ListEntry);
@@ -827,5 +827,5 @@
         return false;
 
-    pTDR = &((PPT_RSVD)pPacket->ProtocolReserved)->TransferDataRsvd;
+    pTDR = &((PPT_RSVD)pPacket->ProtocolReserved)->u.TransferDataRsvd;
     Assert(pTDR);
     Assert(pTDR->pOriginalBuffer);
