]> xenbits.xensource.com Git - pvdrivers/win/xenvif.git/commitdiff
Add XENBUS_STORE and XENBUS_SUSPEND interfaces to exported set 8.1.0-rc5
authorPaul Durrant <paul.durrant@citrix.com>
Tue, 24 Nov 2015 14:25:16 +0000 (14:25 +0000)
committerPaul Durrant <paul.durrant@citrix.com>
Thu, 26 Nov 2015 17:53:54 +0000 (17:53 +0000)
To advertise driver distribution information to xenstore XENNET needs to
make use of the XENBUS_STORE and XENBUS_SUSPEND interfaces. As XENVIF is
XENNET's parent driver, it must export them. Adding them to the exported
set also requires update of the PDO revision number.

Signed-off-by: Owen Smith <owen.smith@citrix.com>
Import updated store_interface.h from XENBUS and revised commit comment.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
include/revision.h
src/coinst/coinst.c
src/xenvif/pdo.c

index 6ae273c92edc73842d59a539b6b4057cd5ab9830..9829ad6f9a9d4d242fa87c7a82f832ae18e4e08e 100644 (file)
 // Key:
 // C  - XENBUS_CACHE_INTERFACE
 // V  - XENVIF_VIF_INTERFACE
+// ST - XENBUS_STORE_INTERFACE
+// SU - XENBUS_SUSPEND_INTERFACE
 
-//                    REVISION   C   V
-#define DEFINE_REVISION_TABLE                                      \
-    DEFINE_REVISION(0x08000002,  1,  2)
+//                    REVISION   C   V   ST  SU
+#define DEFINE_REVISION_TABLE                       \
+    DEFINE_REVISION(0x08000002,  1,  2,  0,  0),    \
+    DEFINE_REVISION(0x08000005,  1,  2,  1,  1),    \
+
+// Revisions 0x08000003 and 0x08000004 are already in use in the
+// master branch.
 
 #endif  // _REVISION_H
index 156a6a35d6f2fff2b851a41220f1c2a9106a6ef8..0d792f75af2a55630a515a2e35bea2cdb078d660 100644 (file)
@@ -717,7 +717,7 @@ fail1:
     return FALSE;
 }
 
-#define DEFINE_REVISION(_N, _C, _V) \
+#define DEFINE_REVISION(_N, _C, _V, _ST, _SU) \
     (_N)
 
 static DWORD    DeviceRevision[] = {
index 53bed7a7e4420bdf9fe0a4fa5e3be0dffd09bfe5..07cf23a44f99414d4e05612c9f1213d80b859b51 100644 (file)
@@ -534,10 +534,12 @@ typedef struct _XENVIF_PDO_REVISION {
     ULONG   Number;
     ULONG   CacheInterfaceVersion;
     ULONG   VifInterfaceVersion;
+    ULONG   StoreInterfaceVersion;
+    ULONG   SuspendInterfaceVersion;
 } XENVIF_PDO_REVISION, *PXENVIF_PDO_REVISION;
 
-#define DEFINE_REVISION(_N, _C, _V) \
-    { (_N), (_C), (_V) }
+#define DEFINE_REVISION(_N, _C, _V, _ST, _SU) \
+    { (_N), (_C), (_V), (_ST), (_SU) }
 
 static XENVIF_PDO_REVISION PdoRevision[] = {
     DEFINE_REVISION_TABLE
@@ -567,14 +569,34 @@ PdoDumpRevisions(
         ASSERT(IMPLY(Index == ARRAYSIZE(PdoRevision) - 1,
                      Revision->VifInterfaceVersion == XENVIF_VIF_INTERFACE_VERSION_MAX));
 
+        if (Revision->StoreInterfaceVersion == 0) { // not-supported
+            ASSERT(Index != ARRAYSIZE(PdoRevision) - 1);
+            goto show_revision;
+        }
+
+        ASSERT3U(Revision->StoreInterfaceVersion, >=, XENBUS_STORE_INTERFACE_VERSION_MIN);
+        ASSERT3U(Revision->StoreInterfaceVersion, <=, XENBUS_STORE_INTERFACE_VERSION_MAX);
+        ASSERT(IMPLY(Index == ARRAYSIZE(PdoRevision) - 1,
+                     Revision->StoreInterfaceVersion == XENBUS_STORE_INTERFACE_VERSION_MAX));
+
+        ASSERT3U(Revision->SuspendInterfaceVersion, >=, XENBUS_SUSPEND_INTERFACE_VERSION_MIN);
+        ASSERT3U(Revision->SuspendInterfaceVersion, <=, XENBUS_SUSPEND_INTERFACE_VERSION_MAX);
+        ASSERT(IMPLY(Index == ARRAYSIZE(PdoRevision) - 1,
+                     Revision->SuspendInterfaceVersion == XENBUS_SUSPEND_INTERFACE_VERSION_MAX));
+
+show_revision:
         ASSERT3U(Revision->Number >> 24, ==, MAJOR_VERSION);
 
         Info("%08X -> "
              "CACHE v%u "
-             "VIF v%u\n",
+             "VIF v%u "
+             "STORE v%u "
+             "SUSPEND v%u\n",
              Revision->Number,
              Revision->CacheInterfaceVersion,
-             Revision->VifInterfaceVersion);
+             Revision->VifInterfaceVersion,
+             Revision->StoreInterfaceVersion,
+             Revision->SuspendInterfaceVersion);
     }
 }
 
@@ -1628,6 +1650,8 @@ struct _INTERFACE_ENTRY PdoInterfaceTable[] = {
     { &GUID_BUS_INTERFACE_STANDARD, "BUS_INTERFACE", PdoQueryBusInterface },
     { &GUID_XENVIF_VIF_INTERFACE, "VIF_INTERFACE", PdoQueryVifInterface },
     { &GUID_XENBUS_CACHE_INTERFACE, "CACHE_INTERFACE", PdoDelegateIrp },
+    { &GUID_XENBUS_STORE_INTERFACE, "STORE_INTERFACE", PdoDelegateIrp },
+    { &GUID_XENBUS_SUSPEND_INTERFACE, "SUSPEND_INTERFACE", PdoDelegateIrp },
     { NULL, NULL, NULL }
 };