[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[XENVIF PATCH] Map out IRQL annotations



This is an initial, exploratory work to help inform the rework of
the controller interface.

No functional changes.

Signed-off-by: Tu Dinh <ngoc-tu.dinh@xxxxxxxxxx>
---
 src/xenvif/controller.c  |  16 +++++
 src/xenvif/controller.h  |  12 ++++
 src/xenvif/frontend.c    |  97 ++++++++++++++++++---------
 src/xenvif/frontend.h    |  62 ++++++++++-------
 src/xenvif/receiver.c    | 132 +++++++++++++++++++++---------------
 src/xenvif/receiver.h    |  64 +++++++++++-------
 src/xenvif/transmitter.c | 140 ++++++++++++++++++++++++---------------
 src/xenvif/transmitter.h |  63 +++++++++++-------
 src/xenvif/vif.c         |  61 ++++++++++-------
 src/xenvif/vif.h         |  48 +++++++-------
 10 files changed, 441 insertions(+), 254 deletions(-)

diff --git a/src/xenvif/controller.c b/src/xenvif/controller.c
index ae86837..e032972 100644
--- a/src/xenvif/controller.c
+++ b/src/xenvif/controller.c
@@ -137,6 +137,7 @@ ControllerReleaseLock(
     __ControllerReleaseLock(Controller);
 }

+_IRQL_requires_min_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __ControllerSend(
     IN  PXENVIF_CONTROLLER  Controller
@@ -177,6 +178,7 @@ ControllerPoll(
     Controller->Shared->rsp_event = rsp_cons + 1;
 }

+_IRQL_requires_min_(DISPATCH_LEVEL)
 static NTSTATUS
 ControllerPutRequest(
     IN  PXENVIF_CONTROLLER          Controller,
@@ -248,6 +250,7 @@ fail1:

 #define XENVIF_CONTROLLER_POLL_PERIOD 100 // ms

+_IRQL_requires_(DISPATCH_LEVEL)
 static NTSTATUS
 ControllerGetResponse(
     IN  PXENVIF_CONTROLLER          Controller,
@@ -318,6 +321,7 @@ ControllerGetResponse(

 KSERVICE_ROUTINE    ControllerEvtchnCallback;

+_Use_decl_annotations_
 BOOLEAN
 ControllerEvtchnCallback(
     IN  PKINTERRUPT             InterruptObject,
@@ -345,6 +349,7 @@ ControllerDebugCallback(
     UNREFERENCED_PARAMETER(Crashing);
 }

+_IRQL_requires_(PASSIVE_LEVEL)
 NTSTATUS
 ControllerInitialize(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -390,6 +395,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerConnect(
     IN  PXENVIF_CONTROLLER      Controller
@@ -597,6 +603,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerStoreWrite(
     IN  PXENVIF_CONTROLLER          Controller,
@@ -670,6 +677,7 @@ ControllerDisable(
     Trace("<===>\n");
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 ControllerDisconnect(
     IN  PXENVIF_CONTROLLER  Controller
@@ -732,6 +740,7 @@ done:
     Trace("<====\n");
 }

+_IRQL_requires_(PASSIVE_LEVEL)
 VOID
 ControllerTeardown(
     IN  PXENVIF_CONTROLLER  Controller
@@ -762,6 +771,7 @@ ControllerTeardown(
     __ControllerFree(Controller);
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerSetHashAlgorithm(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -802,6 +812,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerGetHashFlags(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -842,6 +853,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerSetHashFlags(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -882,6 +894,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerSetHashKey(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -976,6 +989,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerGetHashMappingSize(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -1016,6 +1030,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerSetHashMappingSize(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -1056,6 +1071,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ControllerSetHashMapping(
     IN  PXENVIF_CONTROLLER  Controller,
diff --git a/src/xenvif/controller.h b/src/xenvif/controller.h
index b14e066..18e09b7 100644
--- a/src/xenvif/controller.h
+++ b/src/xenvif/controller.h
@@ -41,17 +41,20 @@

 typedef struct _XENVIF_CONTROLLER XENVIF_CONTROLLER, *PXENVIF_CONTROLLER;

+_IRQL_requires_(PASSIVE_LEVEL)
 extern NTSTATUS
 ControllerInitialize(
     IN  PXENVIF_FRONTEND    Frontend,
     OUT PXENVIF_CONTROLLER  *Controller
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerConnect(
     IN  PXENVIF_CONTROLLER  Controller
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerStoreWrite(
     IN  PXENVIF_CONTROLLER          Controller,
@@ -68,34 +71,40 @@ ControllerDisable(
     IN  PXENVIF_CONTROLLER  Controller
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 ControllerDisconnect(
     IN  PXENVIF_CONTROLLER  Controller
     );

+_IRQL_requires_(PASSIVE_LEVEL)
 extern VOID
 ControllerTeardown(
     IN  PXENVIF_CONTROLLER  Controller
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerSetHashAlgorithm(
     IN  PXENVIF_CONTROLLER  Controller,
     IN  ULONG               Algorithm
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerGetHashFlags(
     IN  PXENVIF_CONTROLLER  Controller,
     IN  PULONG              Flags
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerSetHashFlags(
     IN  PXENVIF_CONTROLLER  Controller,
     IN  ULONG               Flags
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerSetHashKey(
     IN  PXENVIF_CONTROLLER  Controller,
@@ -103,18 +112,21 @@ ControllerSetHashKey(
     IN  ULONG               Size
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerGetHashMappingSize(
     IN  PXENVIF_CONTROLLER  Controller,
     IN  PULONG              Size
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerSetHashMappingSize(
     IN  PXENVIF_CONTROLLER  Controller,
     IN  ULONG               Size
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ControllerSetHashMapping(
     IN  PXENVIF_CONTROLLER  Controller,
diff --git a/src/xenvif/frontend.c b/src/xenvif/frontend.c
index bcea522..14fb87e 100644
--- a/src/xenvif/frontend.c
+++ b/src/xenvif/frontend.c
@@ -1,32 +1,32 @@
 /* Copyright (c) Xen Project.
  * Copyright (c) Cloud Software Group, Inc.
  * All rights reserved.
- *
- * Redistribution and use in source and binary forms,
- * with or without modification, are permitted provided
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
  * that the following conditions are met:
- *
- * *   Redistributions of source code must retain the above
- *     copyright notice, this list of conditions and the
+ *
+ * *   Redistributions of source code must retain the above
+ *     copyright notice, this list of conditions and the
  *     following disclaimer.
- * *   Redistributions in binary form must reproduce the above
- *     copyright notice, this list of conditions and the
- *     following disclaimer in the documentation and/or other
+ * *   Redistributions in binary form must reproduce the above
+ *     copyright notice, this list of conditions and the
+ *     following disclaimer in the documentation and/or other
  *     materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */

@@ -378,6 +378,7 @@ FrontendIsBackendOnline(
     return Online;
 }

+_IRQL_requires_(PASSIVE_LEVEL)
 static DECLSPEC_NOINLINE NTSTATUS
 FrontendEject(
     IN  PXENVIF_THREAD  Self,
@@ -451,9 +452,9 @@ FrontendEjectFailed(
     if (Path == NULL)
         goto fail1;

-    status = RtlStringCbPrintfA(Path,
+    status = RtlStringCbPrintfA(Path,
                                 Length,
-                                "error/%s",
+                                "error/%s",
                                 __FrontendGetPath(Frontend));
     if (!NT_SUCCESS(status))
         goto fail2;
@@ -823,6 +824,7 @@ FrontendIpAddressChange(
     ThreadWake(Frontend->MibThread);
 }

+_IRQL_requires_(PASSIVE_LEVEL)
 static DECLSPEC_NOINLINE NTSTATUS
 FrontendMib(
     IN  PXENVIF_THREAD  Self,
@@ -834,7 +836,7 @@ FrontendMib(
     NTSTATUS            (*__GetIfTable2)(PMIB_IF_TABLE2 *);
     NTSTATUS            (*__NotifyUnicastIpAddressChange)(ADDRESS_FAMILY,
                                                           
PUNICAST_IPADDRESS_CHANGE_CALLBACK,
-                                                          PVOID,
+                                                          PVOID,
                                                           BOOLEAN,
                                                           HANDLE *);
     NTSTATUS            (*__GetUnicastIpAddressTable)(ADDRESS_FAMILY,
@@ -887,7 +889,7 @@ FrontendMib(

     Event = ThreadGetEvent(Self);

-    for (;;) {
+    for (;;) {
         PMIB_IF_TABLE2              IfTable;
         PMIB_UNICASTIPADDRESS_TABLE UnicastIpAddressTable;
         KIRQL                       Irql;
@@ -981,6 +983,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendSetMulticastAddresses(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -1093,6 +1096,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static NTSTATUS
 FrontendNotifyMulticastAddresses(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -1147,6 +1151,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendSetFilterLevel(
     IN  PXENVIF_FRONTEND        Frontend,
@@ -1188,6 +1193,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 FrontendAdvertiseIpAddresses(
     IN  PXENVIF_FRONTEND    Frontend
@@ -1231,6 +1237,7 @@ FrontendAdvertiseIpAddresses(
     KeReleaseSpinLock(&Frontend->Lock, Irql);
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 FrontendSetOnline(
     IN  PXENVIF_FRONTEND    Frontend
@@ -1243,6 +1250,7 @@ FrontendSetOnline(
     Trace("<====\n");
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 FrontendSetOffline(
     IN  PXENVIF_FRONTEND    Frontend
@@ -1256,6 +1264,7 @@ FrontendSetOffline(
     Trace("<====\n");
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 FrontendSetXenbusState(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -1288,6 +1297,7 @@ FrontendSetXenbusState(
           XenbusStateName(State));
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static NTSTATUS
 FrontendAcquireBackend(
     IN  PXENVIF_FRONTEND    Frontend
@@ -1334,6 +1344,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 FrontendWaitForBackendXenbusStateChange(
     IN      PXENVIF_FRONTEND    Frontend,
@@ -1379,6 +1390,7 @@ FrontendWaitForBackendXenbusStateChange(
             ULONG   Attempt = 0;

             while (++Attempt < 1000) {
+#pragma prefast(suppress:28121) // Timeout=0
                 status = KeWaitForSingleObject(&Event,
                                                Executive,
                                                KernelMode,
@@ -1437,6 +1449,7 @@ FrontendWaitForBackendXenbusStateChange(
           XenbusStateName(*State));
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 FrontendReleaseBackend(
     IN      PXENVIF_FRONTEND    Frontend
@@ -1457,6 +1470,7 @@ FrontendReleaseBackend(
     Trace("<=====\n");
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 FrontendClose(
     IN  PXENVIF_FRONTEND    Frontend
@@ -1518,6 +1532,7 @@ FrontendClose(
     Trace("<====\n");
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static NTSTATUS
 FrontendPrepare(
     IN  PXENVIF_FRONTEND    Frontend
@@ -1880,6 +1895,7 @@ FrontendIsSplit(
     return __FrontendIsSplit(Frontend);
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE NTSTATUS
 __FrontendUpdateHash(
     PXENVIF_FRONTEND        Frontend,
@@ -1961,6 +1977,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendSetHashAlgorithm(
     IN  PXENVIF_FRONTEND                Frontend,
@@ -2027,6 +2044,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendQueryHashTypes(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -2066,6 +2084,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendSetHashMapping(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -2109,6 +2128,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendSetHashKey(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -2143,6 +2163,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendSetHashTypes(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -2218,6 +2239,7 @@ FrontendGetQueue(
     return Queue;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static NTSTATUS
 FrontendConnect(
     IN  PXENVIF_FRONTEND    Frontend
@@ -2414,6 +2436,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 FrontendDisconnect(
     IN  PXENVIF_FRONTEND    Frontend
@@ -2441,6 +2464,7 @@ FrontendDisconnect(
     Trace("<====\n");
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static NTSTATUS
 FrontendEnable(
     IN  PXENVIF_FRONTEND    Frontend
@@ -2492,6 +2516,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 FrontendDisable(
     IN  PXENVIF_FRONTEND    Frontend
@@ -2508,6 +2533,7 @@ FrontendDisable(
     Trace("<====\n");
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendSetState(
     IN  PXENVIF_FRONTEND        Frontend,
@@ -2662,6 +2688,7 @@ FrontendSetState(
     return (!Failed) ? STATUS_SUCCESS : STATUS_UNSUCCESSFUL;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __FrontendResume(
     IN  PXENVIF_FRONTEND    Frontend
@@ -2673,6 +2700,7 @@ __FrontendResume(
     (VOID) FrontendSetState(Frontend, FRONTEND_CLOSED);
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __FrontendSuspend(
     IN  PXENVIF_FRONTEND    Frontend
@@ -2704,6 +2732,8 @@ FrontendSuspendCallbackLate(
     __FrontendResume(Frontend);
 }

+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 NTSTATUS
 FrontendResume(
     IN  PXENVIF_FRONTEND    Frontend
@@ -2756,7 +2786,7 @@ FrontendResume(
     Trace("<====\n");

     return STATUS_SUCCESS;
-
+
 fail3:
     Error("fail3\n");

@@ -2780,6 +2810,8 @@ fail1:
     return status;
 }

+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 VOID
 FrontendSuspend(
     IN  PXENVIF_FRONTEND    Frontend
@@ -2821,7 +2853,7 @@ FrontendSuspend(
     Trace("<====\n");
 }

-__drv_requiresIRQL(PASSIVE_LEVEL)
+_IRQL_requires_(PASSIVE_LEVEL)
 NTSTATUS
 FrontendInitialize(
     IN  PXENVIF_PDO         Pdo,
@@ -2849,9 +2881,9 @@ FrontendInitialize(
     if (Path == NULL)
         goto fail1;

-    status = RtlStringCbPrintfA(Path,
+    status = RtlStringCbPrintfA(Path,
                                 Length,
-                                "device/vif/%s",
+                                "device/vif/%s",
                                 Name);
     if (!NT_SUCCESS(status))
         goto fail2;
@@ -2863,7 +2895,7 @@ FrontendInitialize(
     if (Prefix == NULL)
         goto fail3;

-    status = RtlStringCbPrintfA(Prefix,
+    status = RtlStringCbPrintfA(Prefix,
                                 Length,
                                 "attr/vif/%s",
                                 Name);
@@ -3031,6 +3063,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(PASSIVE_LEVEL)
 VOID
 FrontendTeardown(
     IN  PXENVIF_FRONTEND    Frontend
diff --git a/src/xenvif/frontend.h b/src/xenvif/frontend.h
index 59d9718..e0b9069 100644
--- a/src/xenvif/frontend.h
+++ b/src/xenvif/frontend.h
@@ -1,32 +1,32 @@
 /* Copyright (c) Xen Project.
  * Copyright (c) Cloud Software Group, Inc.
  * All rights reserved.
- *
- * Redistribution and use in source and binary forms,
- * with or without modification, are permitted provided
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
  * that the following conditions are met:
- *
- * *   Redistributions of source code must retain the above
- *     copyright notice, this list of conditions and the
+ *
+ * *   Redistributions of source code must retain the above
+ *     copyright notice, this list of conditions and the
  *     following disclaimer.
- * *   Redistributions in binary form must reproduce the above
- *     copyright notice, this list of conditions and the
- *     following disclaimer in the documentation and/or other
+ * *   Redistributions in binary form must reproduce the above
+ *     copyright notice, this list of conditions and the
+ *     following disclaimer in the documentation and/or other
  *     materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */

@@ -56,13 +56,14 @@ typedef enum _XENVIF_FRONTEND_STATE {
     FRONTEND_ENABLED
 } XENVIF_FRONTEND_STATE, *PXENVIF_FRONTEND_STATE;

-__drv_requiresIRQL(PASSIVE_LEVEL)
+_IRQL_requires_(PASSIVE_LEVEL)
 extern NTSTATUS
 FrontendInitialize(
     IN  PXENVIF_PDO         Pdo,
     OUT PXENVIF_FRONTEND    *Frontend
     );

+_IRQL_requires_(PASSIVE_LEVEL)
 extern VOID
 FrontendTeardown(
     IN  PXENVIF_FRONTEND    Frontend
@@ -73,17 +74,22 @@ FrontendEjectFailed(
     IN PXENVIF_FRONTEND Frontend
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendSetState(
     IN  PXENVIF_FRONTEND        Frontend,
     IN  XENVIF_FRONTEND_STATE   State
     );

+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendResume(
     IN  PXENVIF_FRONTEND    Frontend
     );

+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 extern VOID
 FrontendSuspend(
     IN  PXENVIF_FRONTEND    Frontend
@@ -188,6 +194,7 @@ FrontendIncrementStatistic(
     IN  ULONGLONG               Delta
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendSetMulticastAddresses(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -195,6 +202,7 @@ FrontendSetMulticastAddresses(
     IN  ULONG               Count
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendSetFilterLevel(
     IN  PXENVIF_FRONTEND        Frontend,
@@ -202,23 +210,27 @@ FrontendSetFilterLevel(
     IN  XENVIF_MAC_FILTER_LEVEL Level
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 FrontendAdvertiseIpAddresses(
     IN  PXENVIF_FRONTEND    Frontend
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendSetHashAlgorithm(
     IN  PXENVIF_FRONTEND                Frontend,
     IN  XENVIF_PACKET_HASH_ALGORITHM    Algorithm
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendQueryHashTypes(
     IN  PXENVIF_FRONTEND    Frontend,
     OUT PULONG              Types
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendSetHashMapping(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -226,12 +238,14 @@ FrontendSetHashMapping(
     IN  ULONG               Order
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendSetHashKey(
     IN  PXENVIF_FRONTEND    Frontend,
     IN  PUCHAR              Key
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 FrontendSetHashTypes(
     IN  PXENVIF_FRONTEND    Frontend,
diff --git a/src/xenvif/receiver.c b/src/xenvif/receiver.c
index 783f49c..cfb6a64 100644
--- a/src/xenvif/receiver.c
+++ b/src/xenvif/receiver.c
@@ -1,32 +1,32 @@
 /* Copyright (c) Xen Project.
  * Copyright (c) Cloud Software Group, Inc.
  * All rights reserved.
- *
- * Redistribution and use in source and binary forms,
- * with or without modification, are permitted provided
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
  * that the following conditions are met:
- *
- * *   Redistributions of source code must retain the above
- *     copyright notice, this list of conditions and the
+ *
+ * *   Redistributions of source code must retain the above
+ *     copyright notice, this list of conditions and the
  *     following disclaimer.
- * *   Redistributions in binary form must reproduce the above
- *     copyright notice, this list of conditions and the
- *     following disclaimer in the documentation and/or other
+ * *   Redistributions in binary form must reproduce the above
+ *     copyright notice, this list of conditions and the
+ *     following disclaimer in the documentation and/or other
  *     materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */

@@ -220,7 +220,7 @@ ReceiverPacketCtor(

 fail1:
     Error("fail1 (%08x)\n", status);
-
+
     ASSERT(IsZeroMemory(Packet, sizeof (XENVIF_RECEIVER_PACKET)));

     return status;
@@ -578,7 +578,7 @@ ReceiverRingProcessChecksum(
         } else {
             Packet->Flags.TcpChecksumNotValidated = 1;
         }
-
+
         if ((Ring->OffloadOptions.NeedChecksumValue ||
              Receiver->CalculateChecksums != 0) &&
             (flags & NETRXF_data_validated)) {
@@ -824,9 +824,9 @@ __ReceiverRingBuildSegment(
         ULONG   PacketLength;

         PacketLength = Info->IpHeader.Length +
-                       Info->IpOptions.Length +
-                       Info->TcpHeader.Length +
-                       Info->TcpOptions.Length +
+                       Info->IpOptions.Length +
+                       Info->TcpHeader.Length +
+                       Info->TcpOptions.Length +
                        SegmentSize;

         IpHeader->Version4.PacketLength = HTONS((USHORT)PacketLength);
@@ -836,9 +836,9 @@ __ReceiverRingBuildSegment(

         ASSERT3U(IpHeader->Version, ==, 6);

-        PayloadLength = Info->IpOptions.Length +
-                        Info->TcpHeader.Length +
-                        Info->TcpOptions.Length +
+        PayloadLength = Info->IpOptions.Length +
+                        Info->TcpHeader.Length +
+                        Info->TcpOptions.Length +
                         SegmentSize;

         IpHeader->Version6.PayloadLength = HTONS((USHORT)PayloadLength);
@@ -854,7 +854,7 @@ __ReceiverRingBuildSegment(
         ULONG   Length;

         Mdl->Next = __ReceiverRingGetMdl(Ring, FALSE);
-
+
         status = STATUS_NO_MEMORY;
         if (Mdl->Next == NULL)
             goto fail2;
@@ -912,7 +912,7 @@ fail2:

 fail1:
     Error("fail1 (%08x)\n", status);
-
+
     return NULL;
 }

@@ -952,7 +952,7 @@ ReceiverRingProcessLargePacket(
     Info = &Packet->Info;
     ASSERT(Info->IpHeader.Offset != 0);
     ASSERT(Info->TcpHeader.Offset != 0);
-
+
     flags = (uint16_t)Packet->Flags.Value;
     ASSERT(flags & NETRXF_csum_blank);
     ASSERT(flags & NETRXF_data_validated);
@@ -982,11 +982,11 @@ ReceiverRingProcessLargePacket(
         USHORT  PacketLength;

         PacketLength = NTOHS(IpHeader->Version4.PacketLength);
-
+
         Length = (ULONG)PacketLength -
                  Info->TcpOptions.Length -
                  Info->TcpHeader.Length -
-                 Info->IpOptions.Length -
+                 Info->IpOptions.Length -
                  Info->IpHeader.Length;
     } else {
         USHORT  PayloadLength;
@@ -1035,13 +1035,13 @@ ReceiverRingProcessLargePacket(
             USHORT  PacketLength;

             PacketLength = NTOHS(IpHeader->Version4.PacketLength);
-
+
             ASSERT3U(Length,
                      ==,
                      (ULONG)PacketLength -
                      Info->TcpOptions.Length -
                      Info->TcpHeader.Length -
-                     Info->IpOptions.Length -
+                     Info->IpOptions.Length -
                      Info->IpHeader.Length);

             IpHeader->Version4.Checksum = ChecksumIpVersion4Header(InfoVa, 
Info);
@@ -1330,6 +1330,8 @@ fail1:
                                1);
 }

+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __ReceiverRingSwizzle(
     IN  PXENVIF_RECEIVER_RING   Ring
@@ -1571,8 +1573,8 @@ __ReceiverRingSwizzle(
     }
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
-__drv_requiresIRQL(DISPATCH_LEVEL)
 __ReceiverRingAcquireLock(
     IN  PXENVIF_RECEIVER_RING   Ring
     )
@@ -1582,6 +1584,7 @@ __ReceiverRingAcquireLock(
     KeAcquireSpinLockAtDpcLevel(&Ring->Lock);
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static DECLSPEC_NOINLINE VOID
 ReceiverRingAcquireLock(
     IN  PXENVIF_RECEIVER_RING   Ring
@@ -1590,8 +1593,8 @@ ReceiverRingAcquireLock(
     __ReceiverRingAcquireLock(Ring);
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
-__drv_requiresIRQL(DISPATCH_LEVEL)
 __ReceiverRingReleaseLock(
     IN  PXENVIF_RECEIVER_RING   Ring
     )
@@ -1602,6 +1605,7 @@ __ReceiverRingReleaseLock(
     KeReleaseSpinLockFromDpcLevel(&Ring->Lock);
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static DECLSPEC_NOINLINE VOID
 ReceiverRingReleaseLock(
     IN  PXENVIF_RECEIVER_RING   Ring
@@ -1610,10 +1614,10 @@ ReceiverRingReleaseLock(
     __ReceiverRingReleaseLock(Ring);
 }

-__drv_functionClass(KDEFERRED_ROUTINE)
-__drv_maxIRQL(DISPATCH_LEVEL)
-__drv_minIRQL(PASSIVE_LEVEL)
-__drv_sameIRQL
+_Function_class_(KDEFERRED_ROUTINE)
+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
+_IRQL_requires_same_
 static VOID
 ReceiverRingQueueDpc(
     IN  PKDPC               Dpc,
@@ -1657,6 +1661,7 @@ __ReceiverRingIsStopped(
     return Ring->Stopped;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __ReceiverRingTrigger(
     IN  PXENVIF_RECEIVER_RING   Ring,
@@ -1701,6 +1706,7 @@ __ReceiverRingSend(
         __ReceiverRingReleaseLock(Ring);
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __ReceiverRingReturnPacket(
     IN  PXENVIF_RECEIVER_RING   Ring,
@@ -1853,7 +1859,7 @@ ReceiverRingFill(
         }

         Fragment = __ReceiverRingPreparePacket(Ring, Packet);
-
+
         if (Fragment == NULL) {
             __ReceiverRingPutPacket(Ring, Packet, TRUE);
             break;
@@ -2005,6 +2011,7 @@ __ReceiverRingQueuePacket(
     } while (InterlockedCompareExchangePointer(&Ring->PacketQueue, (PVOID)New, 
(PVOID)Old) != Old);
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static DECLSPEC_NOINLINE ULONG
 ReceiverRingPoll(
     IN  PXENVIF_RECEIVER_RING   Ring
@@ -2312,6 +2319,7 @@ ReceiverRingPollDpc(

 KSERVICE_ROUTINE    ReceiverRingEvtchnCallback;

+_Use_decl_annotations_
 BOOLEAN
 ReceiverRingEvtchnCallback(
     IN  PKINTERRUPT             InterruptObject,
@@ -2377,7 +2385,7 @@ ReceiverRingWatchdog(
     rsp_prod = 0;
     rsp_cons = 0;

-    for (;;) {
+    for (;;) {
         PKEVENT Event;
         KIRQL   Irql;

@@ -2652,7 +2660,7 @@ __ReceiverRingConnect(
     ASSERT3P(Ring->Front.sring, ==, Ring->Shared);

     Pfn = MmGetMdlPfnArray(Ring->Mdl)[0];
-
+
     status = XENBUS_GNTTAB(PermitForeignAccess,
                            &Receiver->GnttabInterface,
                            Ring->GnttabCache,
@@ -2870,11 +2878,12 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __ReceiverRingDisable(
     IN  PXENVIF_RECEIVER_RING   Ring
     )
-{
+{
     PXENVIF_RECEIVER            Receiver;
     PXENVIF_FRONTEND            Frontend;

@@ -3076,6 +3085,7 @@ ReceiverDebugCallback(
                  Receiver->Returned);
 }

+_IRQL_requires_(PASSIVE_LEVEL)
 NTSTATUS
 ReceiverInitialize(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -3249,6 +3259,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ReceiverConnect(
     IN  PXENVIF_RECEIVER    Receiver
@@ -3287,7 +3298,7 @@ ReceiverConnect(
             goto fail5;

         Index++;
-    }
+    }

     status = XENBUS_DEBUG(Register,
                           &Receiver->DebugInterface,
@@ -3434,6 +3445,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ReceiverStoreWrite(
     IN  PXENVIF_RECEIVER            Receiver,
@@ -3493,7 +3505,7 @@ ReceiverStoreWrite(
             goto fail6;

         Index++;
-    }
+    }

     return STATUS_SUCCESS;

@@ -3518,6 +3530,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ReceiverEnable(
     IN  PXENVIF_RECEIVER    Receiver
@@ -3540,7 +3553,7 @@ ReceiverEnable(
             goto fail1;

         Index++;
-    }
+    }

     Trace("<====\n");
     return STATUS_SUCCESS;
@@ -3561,6 +3574,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 ReceiverDisable(
     IN  PXENVIF_RECEIVER    Receiver
@@ -3583,6 +3597,7 @@ ReceiverDisable(
     Trace("<====\n");
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 ReceiverDisconnect(
     IN  PXENVIF_RECEIVER    Receiver
@@ -3618,6 +3633,7 @@ ReceiverDisconnect(
     Trace("<====\n");
 }

+_IRQL_requires_(PASSIVE_LEVEL)
 VOID
 ReceiverTeardown(
     IN  PXENVIF_RECEIVER    Receiver
@@ -3678,6 +3694,7 @@ ReceiverTeardown(
     __ReceiverFree(Receiver);
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 ReceiverSetOffloadOptions(
     IN  PXENVIF_RECEIVER            Receiver,
@@ -3705,9 +3722,10 @@ ReceiverSetOffloadOptions(
             break;

         __ReceiverRingSetOffloadOptions(Ring, Options);
-    }
+    }
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 ReceiverSetBackfillSize(
     IN  PXENVIF_RECEIVER    Receiver,
@@ -3734,6 +3752,7 @@ ReceiverSetBackfillSize(
     }
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 ReceiverQueryRingSize(
     IN  PXENVIF_RECEIVER    Receiver,
@@ -3745,6 +3764,7 @@ ReceiverQueryRingSize(
     *Size = XENVIF_RECEIVER_RING_SIZE;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 ReceiverReturnPacket(
     IN  PXENVIF_RECEIVER    Receiver,
@@ -3776,6 +3796,7 @@ ReceiverReturnPacket(

 #define XENVIF_RECEIVER_PACKET_WAIT_PERIOD 10

+_IRQL_requires_max_(APC_LEVEL)
 VOID
 ReceiverWaitForPackets(
     IN  PXENVIF_RECEIVER    Receiver
@@ -3826,6 +3847,7 @@ ReceiverWaitForPackets(
     Trace("%s: <====\n", FrontendGetPath(Frontend));
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 ReceiverTrigger(
     IN  PXENVIF_RECEIVER    Receiver,
@@ -3839,6 +3861,7 @@ ReceiverTrigger(
     __ReceiverRingTrigger(Ring, FALSE);
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 ReceiverSend(
     IN  PXENVIF_RECEIVER    Receiver,
@@ -3852,6 +3875,7 @@ ReceiverSend(
     __ReceiverRingSend(Ring, FALSE);
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ReceiverSetHashAlgorithm(
     IN  PXENVIF_RECEIVER                Receiver,
@@ -3895,6 +3919,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ReceiverQueryHashCapabilities(
     IN  PXENVIF_RECEIVER    Receiver,
@@ -3918,6 +3943,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ReceiverUpdateHashParameters(
     IN  PXENVIF_RECEIVER    Receiver,
@@ -3969,6 +3995,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE NTSTATUS
 __ReceiverSetQueueAffinities(
     IN  PXENVIF_RECEIVER    Receiver,
@@ -4012,6 +4039,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ReceiverUpdateHashMapping(
     IN  PXENVIF_RECEIVER    Receiver,
diff --git a/src/xenvif/receiver.h b/src/xenvif/receiver.h
index 0238bb2..5c03b94 100644
--- a/src/xenvif/receiver.h
+++ b/src/xenvif/receiver.h
@@ -1,32 +1,32 @@
 /* Copyright (c) Xen Project.
  * Copyright (c) Cloud Software Group, Inc.
  * All rights reserved.
- *
- * Redistribution and use in source and binary forms,
- * with or without modification, are permitted provided
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
  * that the following conditions are met:
- *
- * *   Redistributions of source code must retain the above
- *     copyright notice, this list of conditions and the
+ *
+ * *   Redistributions of source code must retain the above
+ *     copyright notice, this list of conditions and the
  *     following disclaimer.
- * *   Redistributions in binary form must reproduce the above
- *     copyright notice, this list of conditions and the
- *     following disclaimer in the documentation and/or other
+ * *   Redistributions in binary form must reproduce the above
+ *     copyright notice, this list of conditions and the
+ *     following disclaimer in the documentation and/or other
  *     materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */

@@ -41,96 +41,113 @@

 typedef struct _XENVIF_RECEIVER XENVIF_RECEIVER, *PXENVIF_RECEIVER;

+_IRQL_requires_(PASSIVE_LEVEL)
 extern NTSTATUS
 ReceiverInitialize(
     IN  PXENVIF_FRONTEND    Frontend,
     OUT PXENVIF_RECEIVER    *Receiver
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ReceiverConnect(
     IN  PXENVIF_RECEIVER    Receiver
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ReceiverStoreWrite(
     IN  PXENVIF_RECEIVER            Receiver,
     IN  PXENBUS_STORE_TRANSACTION   Transaction
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 ReceiverEnable(
     IN  PXENVIF_RECEIVER    Receiver
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 ReceiverDisable(
     IN  PXENVIF_RECEIVER    Receiver
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 ReceiverDisconnect(
     IN  PXENVIF_RECEIVER    Receiver
     );

+_IRQL_requires_(PASSIVE_LEVEL)
 extern VOID
 ReceiverTeardown(
     IN  PXENVIF_RECEIVER    Receiver
     );

+_IRQL_requires_max_(APC_LEVEL)
 extern VOID
 ReceiverWaitForPackets(
     IN  PXENVIF_RECEIVER    Receiver
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 ReceiverQueryRingSize(
     IN  PXENVIF_RECEIVER    Receiver,
     OUT PULONG              Size
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 ReceiverSetOffloadOptions(
     IN  PXENVIF_RECEIVER            Receiver,
     IN  XENVIF_VIF_OFFLOAD_OPTIONS  Options
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 ReceiverSetBackfillSize(
     IN  PXENVIF_RECEIVER    Receiver,
     IN  ULONG               Size
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 ReceiverReturnPacket(
     IN  PXENVIF_RECEIVER    Receiver,
     IN  PVOID               Cookie
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 ReceiverTrigger(
     IN  PXENVIF_RECEIVER    Receiver,
     IN  ULONG               Index
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 ReceiverSend(
     IN  PXENVIF_RECEIVER    Receiver,
     IN  ULONG               Index
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ReceiverSetHashAlgorithm(
     IN  PXENVIF_RECEIVER                Receiver,
     IN  XENVIF_PACKET_HASH_ALGORITHM    Algorithm
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ReceiverQueryHashCapabilities(
     IN  PXENVIF_RECEIVER    Receiver,
     OUT PULONG              Types
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ReceiverUpdateHashParameters(
     IN  PXENVIF_RECEIVER    Receiver,
@@ -138,6 +155,7 @@ ReceiverUpdateHashParameters(
     IN  PUCHAR              Key
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 ReceiverUpdateHashMapping(
     IN  PXENVIF_RECEIVER    Receiver,
diff --git a/src/xenvif/transmitter.c b/src/xenvif/transmitter.c
index b46ccc3..bac3286 100644
--- a/src/xenvif/transmitter.c
+++ b/src/xenvif/transmitter.c
@@ -1,32 +1,32 @@
 /* Copyright (c) Xen Project.
  * Copyright (c) Cloud Software Group, Inc.
  * All rights reserved.
- *
- * Redistribution and use in source and binary forms,
- * with or without modification, are permitted provided
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
  * that the following conditions are met:
- *
- * *   Redistributions of source code must retain the above
- *     copyright notice, this list of conditions and the
+ *
+ * *   Redistributions of source code must retain the above
+ *     copyright notice, this list of conditions and the
  *     following disclaimer.
- * *   Redistributions in binary form must reproduce the above
- *     copyright notice, this list of conditions and the
+ * *   Redistributions in binary form must reproduce the above
+ *     copyright notice, this list of conditions and the
  *     following disclaimer in the documetation and/or other
  *     materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */

@@ -943,7 +943,7 @@ fail2:
     Error("fail2\n");

     ASSERT3P(Buffer->Context, ==, Packet);
-    Buffer->Context = NULL;
+    Buffer->Context = NULL;

     --Packet->Reference;

@@ -986,7 +986,7 @@ fail1:
         __TransmitterPutFragment(Ring, Fragment);

         ASSERT3P(Buffer->Context, ==, Packet);
-        Buffer->Context = NULL;
+        Buffer->Context = NULL;

         --Packet->Reference;

@@ -1218,7 +1218,7 @@ __TransmitterRingPrepareHeader(

     Fragment->Type = XENVIF_TRANSMITTER_FRAGMENT_TYPE_BUFFER;
     Fragment->Context = Buffer;
-
+
     Buffer->Reference++;

     Pfn = MmGetMdlPfnArray(Mdl)[0];
@@ -1297,9 +1297,9 @@ __TransmitterRingPrepareHeader(

         // Fix up the IP packet length
         Length = Info->IpHeader.Length +
-                 Info->IpOptions.Length +
-                 Info->TcpHeader.Length +
-                 Info->TcpOptions.Length +
+                 Info->IpOptions.Length +
+                 Info->TcpHeader.Length +
+                 Info->TcpOptions.Length +
                  Payload->Length;

         ASSERT3U((USHORT)Length, ==, Length);
@@ -1320,7 +1320,7 @@ __TransmitterRingPrepareHeader(
         if (Packet->MaximumSegmentSize == Payload->Length)
             Packet->OffloadOptions.OffloadIpVersion4LargePacket = 0;
     }
-
+
     if (Packet->OffloadOptions.OffloadIpVersion6LargePacket) {
         PIP_HEADER  IpHeader;
         PTCP_HEADER TcpHeader;
@@ -1335,9 +1335,9 @@ __TransmitterRingPrepareHeader(
         TcpHeader = (PTCP_HEADER)(BaseVa + Info->TcpHeader.Offset);

         // Fix up the IP payload length
-        Length = Info->IpOptions.Length +
-                 Info->TcpHeader.Length +
-                 Info->TcpOptions.Length +
+        Length = Info->IpOptions.Length +
+                 Info->TcpHeader.Length +
+                 Info->TcpOptions.Length +
                  Payload->Length;

         ASSERT3U((USHORT)Length, ==, Length);
@@ -1362,7 +1362,7 @@ __TransmitterRingPrepareHeader(
         ULONG   MaximumFrameSize;

         MacQueryMaximumFrameSize(Mac, &MaximumFrameSize);
-
+
         if (Fragment->Length > MaximumFrameSize) {
             status = STATUS_INVALID_PARAMETER;
             SquashError = TRUE;
@@ -1958,7 +1958,7 @@ __TransmitterRingPrepareNeighbourAdvertisement(
     IpHeader->NextHeader = IPPROTO_ICMPV6;
     IpHeader->HopLimit = 255;

-    RtlCopyMemory(IpHeader->SourceAddress.Byte,
+    RtlCopyMemory(IpHeader->SourceAddress.Byte,
                   Address,
                   IPV6_ADDRESS_LENGTH);

@@ -2633,6 +2633,7 @@ done:
     return Count;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __TransmitterRingTrigger(
     IN  PXENVIF_TRANSMITTER_RING    Ring
@@ -2713,6 +2714,7 @@ __TransmitterRingPushRequests(

 #define XENVIF_TRANSMITTER_LOCK_BIT ((ULONG_PTR)1)

+_IRQL_requires_(DISPATCH_LEVEL)
 static DECLSPEC_NOINLINE VOID
 TransmitterRingSwizzle(
     IN  PXENVIF_TRANSMITTER_RING    Ring
@@ -2728,7 +2730,7 @@ TransmitterRingSwizzle(

     InitializeListHead(&List);

-    New = XENVIF_TRANSMITTER_LOCK_BIT;
+    New = XENVIF_TRANSMITTER_LOCK_BIT;
     Old = (ULONG_PTR)InterlockedExchangePointer(&Ring->Lock, (PVOID)New);

     ASSERT(Old & XENVIF_TRANSMITTER_LOCK_BIT);
@@ -2762,6 +2764,7 @@ TransmitterRingSwizzle(
     }
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static DECLSPEC_NOINLINE VOID
 TransmitterRingSchedule(
     IN  PXENVIF_TRANSMITTER_RING    Ring
@@ -3052,6 +3055,7 @@ __TransmitterSetCompletionInfo(
     Packet->Completion.PayloadLength = (USHORT)Payload->Length;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __TransmitterReturnPackets(
     IN  PXENVIF_TRANSMITTER Transmitter,
@@ -3087,8 +3091,8 @@ __TransmitterReturnPackets(
     }
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE BOOLEAN
-__drv_requiresIRQL(DISPATCH_LEVEL)
 __TransmitterRingTryAcquireLock(
     IN  PXENVIF_TRANSMITTER_RING    Ring
     )
@@ -3119,8 +3123,8 @@ __TransmitterRingTryAcquireLock(
     return Acquired;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
-__drv_requiresIRQL(DISPATCH_LEVEL)
 __TransmitterRingAcquireLock(
     IN  PXENVIF_TRANSMITTER_RING    Ring
     )
@@ -3135,6 +3139,7 @@ __TransmitterRingAcquireLock(
     }
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 TransmitterRingAcquireLock(
     IN  PXENVIF_TRANSMITTER_RING    Ring
@@ -3143,8 +3148,8 @@ TransmitterRingAcquireLock(
     __TransmitterRingAcquireLock(Ring);
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE BOOLEAN
-__drv_requiresIRQL(DISPATCH_LEVEL)
 __TransmitterRingTryReleaseLock(
     IN  PXENVIF_TRANSMITTER_RING    Ring
     )
@@ -3178,8 +3183,8 @@ __TransmitterRingTryReleaseLock(
     return Released;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
-__drv_requiresIRQL(DISPATCH_LEVEL)
 __TransmitterRingReleaseLock(
     IN  PXENVIF_TRANSMITTER_RING    Ring
     )
@@ -3217,6 +3222,7 @@ __TransmitterRingReleaseLock(
     }
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static DECLSPEC_NOINLINE VOID
 TransmitterRingReleaseLock(
     IN  PXENVIF_TRANSMITTER_RING    Ring
@@ -3225,6 +3231,7 @@ TransmitterRingReleaseLock(
     __TransmitterRingReleaseLock(Ring);
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE BOOLEAN
 __TransmitterRingUnmask(
     IN  PXENVIF_TRANSMITTER_RING    Ring,
@@ -3247,11 +3254,8 @@ __TransmitterRingUnmask(
                           Force);
 }

-__drv_functionClass(KDEFERRED_ROUTINE)
-__drv_maxIRQL(DISPATCH_LEVEL)
-__drv_minIRQL(DISPATCH_LEVEL)
-__drv_requiresIRQL(DISPATCH_LEVEL)
-__drv_sameIRQL
+_Function_class_(KDEFERRED_ROUTINE)
+_IRQL_requires_(DISPATCH_LEVEL)
 static VOID
 TransmitterRingPollDpc(
     IN  PKDPC                   Dpc,
@@ -3284,6 +3288,7 @@ TransmitterRingPollDpc(

 KSERVICE_ROUTINE    TransmitterRingEvtchnCallback;

+_Use_decl_annotations_
 BOOLEAN
 TransmitterRingEvtchnCallback(
     IN  PKINTERRUPT             InterruptObject,
@@ -3318,6 +3323,7 @@ TransmitterRingEvtchnCallback(

 #define XENVIF_TRANSMITTER_WATCHDOG_PERIOD  30

+_IRQL_requires_(PASSIVE_LEVEL)
 static NTSTATUS
 TransmitterRingWatchdog(
     IN  PXENVIF_THREAD          Self,
@@ -3344,7 +3350,7 @@ TransmitterRingWatchdog(
     Timeout.QuadPart = 
TIME_RELATIVE(TIME_S(XENVIF_TRANSMITTER_WATCHDOG_PERIOD));
     PacketsQueued = 0;

-    for (;;) {
+    for (;;) {
         PKEVENT Event;
         KIRQL   Irql;

@@ -3391,6 +3397,7 @@ TransmitterRingWatchdog(
     return STATUS_SUCCESS;
 }

+_IRQL_requires_(PASSIVE_LEVEL)
 static FORCEINLINE NTSTATUS
 __TransmitterRingInitialize(
     IN  PXENVIF_TRANSMITTER         Transmitter,
@@ -3653,6 +3660,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE NTSTATUS
 __TransmitterRingConnect(
     IN  PXENVIF_TRANSMITTER_RING    Ring
@@ -3824,6 +3832,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE NTSTATUS
 __TransmitterRingStoreWrite(
     IN  PXENVIF_TRANSMITTER_RING    Ring,
@@ -3884,6 +3893,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE NTSTATUS
 __TransmitterRingEnable(
     IN  PXENVIF_TRANSMITTER_RING    Ring
@@ -3915,11 +3925,12 @@ __TransmitterRingEnable(
     return STATUS_SUCCESS;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __TransmitterRingDisable(
     IN  PXENVIF_TRANSMITTER_RING    Ring
     )
-{
+{
     PXENVIF_TRANSMITTER             Transmitter;
     PXENVIF_FRONTEND                Frontend;
     PXENVIF_TRANSMITTER_PACKET      Packet;
@@ -4024,6 +4035,7 @@ __TransmitterRingDisable(
          Ring->Index);
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __TransmitterRingDisconnect(
     IN  PXENVIF_TRANSMITTER_RING    Ring
@@ -4081,6 +4093,7 @@ __TransmitterRingDisconnect(
     Ring->GnttabCache = NULL;
 }

+_IRQL_requires_(PASSIVE_LEVEL)
 static FORCEINLINE VOID
 __TransmitterRingTeardown(
     IN  PXENVIF_TRANSMITTER_RING    Ring
@@ -4164,6 +4177,7 @@ __TransmitterRingTeardown(
     __TransmitterFree(Ring);
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __TransmitterRingQueuePacket(
     IN  PXENVIF_TRANSMITTER_RING    Ring,
@@ -4200,6 +4214,7 @@ __TransmitterRingQueuePacket(
         __TransmitterRingReleaseLock(Ring);
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE VOID
 __TransmitterRingAbortPackets(
     IN  PXENVIF_TRANSMITTER_RING    Ring
@@ -4220,7 +4235,7 @@ __TransmitterRingAbortPackets(
     while (!IsListEmpty(&Ring->PacketQueue)) {
         PLIST_ENTRY                 ListEntry;
         PXENVIF_TRANSMITTER_PACKET  Packet;
-
+
         ListEntry = RemoveHeadList(&Ring->PacketQueue);
         ASSERT3P(ListEntry, !=, &Ring->PacketQueue);

@@ -4251,6 +4266,7 @@ __TransmitterRingAbortPackets(
     __TransmitterRingReleaseLock(Ring);
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE NTSTATUS
 __TransmitterRingQueueArp(
     IN  PXENVIF_TRANSMITTER_RING    Ring,
@@ -4301,6 +4317,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE NTSTATUS
 __TransmitterRingQueueNeighbourAdvertisement(
     IN  PXENVIF_TRANSMITTER_RING    Ring,
@@ -4355,6 +4372,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE BOOLEAN
 __TransmitterHasMulticastControl(
     IN  PXENVIF_TRANSMITTER Transmitter
@@ -4363,6 +4381,7 @@ __TransmitterHasMulticastControl(
     return Transmitter->MulticastControl;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 BOOLEAN
 TransmitterHasMulticastControl(
     IN  PXENVIF_TRANSMITTER Transmitter
@@ -4442,6 +4461,7 @@ TransmitterDebugCallback(
     UNREFERENCED_PARAMETER(Crashing);
 }

+_IRQL_requires_(PASSIVE_LEVEL)
 NTSTATUS
 TransmitterInitialize(
     IN  PXENVIF_FRONTEND    Frontend,
@@ -4645,7 +4665,7 @@ fail2:
     (*Transmitter)->AlwaysCopy = 0;
     (*Transmitter)->ValidateChecksums = 0;
     (*Transmitter)->DisableMulticastControl = 0;
-
+
     ASSERT(IsZeroMemory(*Transmitter, sizeof (XENVIF_TRANSMITTER)));
     __TransmitterFree(*Transmitter);

@@ -4655,6 +4675,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 TransmitterConnect(
     IN  PXENVIF_TRANSMITTER     Transmitter
@@ -4710,7 +4731,7 @@ TransmitterConnect(
             goto fail5;

         Index++;
-    }
+    }

     status = XENBUS_DEBUG(Register,
                           &Transmitter->DebugInterface,
@@ -4765,6 +4786,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static FORCEINLINE NTSTATUS
 __TransmitterRequestMulticastControl(
     IN  PXENVIF_TRANSMITTER         Transmitter,
@@ -4795,6 +4817,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 TransmitterRequestMulticastControl(
     IN  PXENVIF_TRANSMITTER Transmitter,
@@ -4819,6 +4842,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 TransmitterStoreWrite(
     IN  PXENVIF_TRANSMITTER         Transmitter,
@@ -4848,7 +4872,7 @@ TransmitterStoreWrite(
             goto fail2;

         Index++;
-    }
+    }

     return STATUS_SUCCESS;

@@ -4861,6 +4885,7 @@ fail1:
     return status;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 TransmitterEnable(
     IN  PXENVIF_TRANSMITTER Transmitter
@@ -4879,12 +4904,13 @@ TransmitterEnable(

         __TransmitterRingEnable(Ring);
         Index++;
-    }
+    }

     Trace("<====\n");
     return STATUS_SUCCESS;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 TransmitterDisable(
     IN  PXENVIF_TRANSMITTER Transmitter
@@ -4907,6 +4933,7 @@ TransmitterDisable(
     Trace("<====\n");
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 TransmitterDisconnect(
     IN  PXENVIF_TRANSMITTER Transmitter
@@ -4944,6 +4971,7 @@ TransmitterDisconnect(
     Trace("<====\n");
 }

+_IRQL_requires_(PASSIVE_LEVEL)
 VOID
 TransmitterTeardown(
     IN  PXENVIF_TRANSMITTER Transmitter
@@ -5118,6 +5146,7 @@ done:
     return Value;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 TransmitterQueuePacket(
     IN  PXENVIF_TRANSMITTER         Transmitter,
@@ -5209,6 +5238,7 @@ fail1:
     return status;
 }

+_IRQL_requires_max_(APC_LEVEL)
 VOID
 TransmitterAbortPackets(
     IN  PXENVIF_TRANSMITTER Transmitter
@@ -5227,11 +5257,12 @@ TransmitterAbortPackets(
         PXENVIF_TRANSMITTER_RING    Ring = Transmitter->Ring[Index];

         __TransmitterRingAbortPackets(Ring);
-    }
+    }

     KeLowerIrql(Irql);
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 TransmitterQueueArp(
     IN  PXENVIF_TRANSMITTER     Transmitter,
@@ -5243,6 +5274,7 @@ TransmitterQueueArp(
     (VOID) __TransmitterRingQueueArp(Ring, Address);
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 TransmitterQueueNeighbourAdvertisement(
     IN  PXENVIF_TRANSMITTER     Transmitter,
@@ -5254,6 +5286,7 @@ TransmitterQueueNeighbourAdvertisement(
     (VOID) __TransmitterRingQueueNeighbourAdvertisement(Ring, Address);
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 TransmitterQueueMulticastControl(
     IN  PXENVIF_TRANSMITTER     Transmitter,
@@ -5266,6 +5299,7 @@ TransmitterQueueMulticastControl(
     (VOID) __TransmitterRingQueueMulticastControl(Ring, Address, Add);
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 TransmitterQueryRingSize(
     IN  PXENVIF_TRANSMITTER Transmitter,
@@ -5296,6 +5330,7 @@ TransmitterNotify(
         Ring->PollDpcs++;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 TransmitterQueryOffloadOptions(
     IN  PXENVIF_TRANSMITTER         Transmitter,
@@ -5416,6 +5451,7 @@ TransmitterQueryOffloadOptions(
                                                          
MAXIMUM_IPV6_OPTIONS_LENGTH -          \
                                                          
MAXIMUM_TCP_HEADER_LENGTH)

+_IRQL_requires_(DISPATCH_LEVEL)
 VOID
 TransmitterQueryLargePacketSize(
     IN  PXENVIF_TRANSMITTER     Transmitter,
diff --git a/src/xenvif/transmitter.h b/src/xenvif/transmitter.h
index f7f65dd..a5d9e4c 100644
--- a/src/xenvif/transmitter.h
+++ b/src/xenvif/transmitter.h
@@ -1,32 +1,32 @@
 /* Copyright (c) Xen Project.
  * Copyright (c) Cloud Software Group, Inc.
  * All rights reserved.
- *
- * Redistribution and use in source and binary forms,
- * with or without modification, are permitted provided
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
  * that the following conditions are met:
- *
- * *   Redistributions of source code must retain the above
- *     copyright notice, this list of conditions and the
+ *
+ * *   Redistributions of source code must retain the above
+ *     copyright notice, this list of conditions and the
  *     following disclaimer.
- * *   Redistributions in binary form must reproduce the above
- *     copyright notice, this list of conditions and the
- *     following disclaimer in the documentation and/or other
+ * *   Redistributions in binary form must reproduce the above
+ *     copyright notice, this list of conditions and the
+ *     following disclaimer in the documentation and/or other
  *     materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */

@@ -43,38 +43,45 @@

 typedef struct _XENVIF_TRANSMITTER XENVIF_TRANSMITTER, *PXENVIF_TRANSMITTER;

+_IRQL_requires_(PASSIVE_LEVEL)
 extern NTSTATUS
 TransmitterInitialize(
     IN  PXENVIF_FRONTEND    Frontend,
     OUT PXENVIF_TRANSMITTER *Transmitter
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 TransmitterConnect(
     IN  PXENVIF_TRANSMITTER Transmitter
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 TransmitterStoreWrite(
     IN  PXENVIF_TRANSMITTER         Transmitter,
     IN  PXENBUS_STORE_TRANSACTION   Transaction
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 TransmitterEnable(
     IN  PXENVIF_TRANSMITTER Transmitter
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 TransmitterDisable(
     IN  PXENVIF_TRANSMITTER Transmitter
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 TransmitterDisconnect(
     IN  PXENVIF_TRANSMITTER Transmitter
     );

+_IRQL_requires_(PASSIVE_LEVEL)
 extern VOID
 TransmitterTeardown(
     IN  PXENVIF_TRANSMITTER Transmitter
@@ -86,23 +93,27 @@ TransmitterNotify(
     IN  ULONG               Index
     );

+_IRQL_requires_max_(APC_LEVEL)
 extern VOID
 TransmitterAbortPackets(
     IN  PXENVIF_TRANSMITTER Transmitter
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 TransmitterQueueArp(
     IN  PXENVIF_TRANSMITTER     Transmitter,
     IN  PIPV4_ADDRESS           Address
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 TransmitterQueueNeighbourAdvertisement(
     IN  PXENVIF_TRANSMITTER     Transmitter,
     IN  PIPV6_ADDRESS           Address
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 TransmitterQueueMulticastControl(
     IN  PXENVIF_TRANSMITTER     Transmitter,
@@ -110,12 +121,14 @@ TransmitterQueueMulticastControl(
     IN  BOOLEAN                 Add
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 TransmitterQueryRingSize(
     IN  PXENVIF_TRANSMITTER Transmitter,
     OUT PULONG              Size
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern NTSTATUS
 TransmitterQueuePacket(
     IN  PXENVIF_TRANSMITTER         Transmitter,
@@ -130,12 +143,14 @@ TransmitterQueuePacket(
     IN  PVOID                       Cookie
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 TransmitterQueryOffloadOptions(
     IN  PXENVIF_TRANSMITTER         Transmitter,
     OUT PXENVIF_VIF_OFFLOAD_OPTIONS Options
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 extern VOID
 TransmitterQueryLargePacketSize(
     IN  PXENVIF_TRANSMITTER     Transmitter,
@@ -143,11 +158,13 @@ TransmitterQueryLargePacketSize(
     OUT PULONG                  Size
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 BOOLEAN
 TransmitterHasMulticastControl(
     IN  PXENVIF_TRANSMITTER Transmitter
     );

+_IRQL_requires_(DISPATCH_LEVEL)
 NTSTATUS
 TransmitterRequestMulticastControl(
     IN  PXENVIF_TRANSMITTER Transmitter,
diff --git a/src/xenvif/vif.c b/src/xenvif/vif.c
index 6f468ee..2cfd2f9 100644
--- a/src/xenvif/vif.c
+++ b/src/xenvif/vif.c
@@ -1,32 +1,32 @@
 /* Copyright (c) Xen Project.
  * Copyright (c) Cloud Software Group, Inc.
  * All rights reserved.
- *
- * Redistribution and use in source and binary forms,
- * with or without modification, are permitted provided
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
  * that the following conditions are met:
- *
- * *   Redistributions of source code must retain the above
- *     copyright notice, this list of conditions and the
+ *
+ * *   Redistributions of source code must retain the above
+ *     copyright notice, this list of conditions and the
  *     following disclaimer.
- * *   Redistributions in binary form must reproduce the above
- *     copyright notice, this list of conditions and the
- *     following disclaimer in the documentation and/or other
+ * *   Redistributions in binary form must reproduce the above
+ *     copyright notice, this list of conditions and the
+ *     following disclaimer in the documentation and/or other
  *     materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */

@@ -122,6 +122,7 @@ VifMac(
     return STATUS_SUCCESS;
 }

+_IRQL_requires_(DISPATCH_LEVEL)
 static DECLSPEC_NOINLINE VOID
 VifSuspendCallbackLate(
     IN  PVOID           Argument
@@ -142,6 +143,8 @@ VifSuspendCallbackLate(
     FrontendAdvertiseIpAddresses(Context->Frontend);
 }

+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 static NTSTATUS
 VifEnable(
     IN  PINTERFACE          Interface,
@@ -381,6 +384,8 @@ VifCallbackVersion9(
 #undef XENVIF_RECEIVER_QUEUE_MAX
 }

+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 static NTSTATUS
 VifEnableVersion9(
     IN  PINTERFACE                  Interface,
@@ -408,6 +413,8 @@ VifEnableVersion9(
     return status;
 }

+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 static NTSTATUS
 VifEnableVersion8(
     IN  PINTERFACE                  Interface,
@@ -435,6 +442,8 @@ VifEnableVersion8(
     return status;
 }

+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 static VOID
 VifDisable(
     IN  PINTERFACE      Interface
@@ -511,7 +520,7 @@ VifQueryStatistic(
     status = STATUS_INVALID_PARAMETER;
     if (Index >= XENVIF_VIF_STATISTIC_COUNT)
         goto done;
-
+
     AcquireMrswLockShared(&Context->Lock);

     FrontendQueryStatistic(Context->Frontend, Index, Value);
@@ -1205,7 +1214,7 @@ VifGetInterface(
     }

     return status;
-}
+}

 VOID
 VifTeardown(
@@ -1236,6 +1245,8 @@ VifTeardown(
     Trace("<====\n");
 }

+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 VOID
 VifReceiverQueuePacket(
     IN  PXENVIF_VIF_CONTEXT             Context,
diff --git a/src/xenvif/vif.h b/src/xenvif/vif.h
index e9d38a5..379ccc3 100644
--- a/src/xenvif/vif.h
+++ b/src/xenvif/vif.h
@@ -1,32 +1,32 @@
 /* Copyright (c) Xen Project.
  * Copyright (c) Cloud Software Group, Inc.
  * All rights reserved.
- *
- * Redistribution and use in source and binary forms,
- * with or without modification, are permitted provided
+ *
+ * Redistribution and use in source and binary forms,
+ * with or without modification, are permitted provided
  * that the following conditions are met:
- *
- * *   Redistributions of source code must retain the above
- *     copyright notice, this list of conditions and the
+ *
+ * *   Redistributions of source code must retain the above
+ *     copyright notice, this list of conditions and the
  *     following disclaimer.
- * *   Redistributions in binary form must reproduce the above
- *     copyright notice, this list of conditions and the
- *     following disclaimer in the documentation and/or other
+ * *   Redistributions in binary form must reproduce the above
+ *     copyright notice, this list of conditions and the
+ *     following disclaimer in the documentation and/or other
  *     materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */

@@ -63,6 +63,8 @@ VifTeardown(

 // CALLBACKS

+_IRQL_requires_min_(PASSIVE_LEVEL)
+_IRQL_requires_max_(DISPATCH_LEVEL)
 extern VOID
 VifReceiverQueuePacket(
     IN  PXENVIF_VIF_CONTEXT             Context,
--
2.51.0.windows.1


--
Ngoc Tu Dinh | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.