From: Sean Hefty Date: Tue, 13 Jul 2010 22:15:33 +0000 (-0700) Subject: Refresh of wv-ver X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=1f941a7dd2d51e517f8b83a02e8f7393ab69449e;p=~shefty%2Frdma-win.git Refresh of wv-ver --- diff --git a/trunk/core/winverbs/kernel/wv_driver.c b/trunk/core/winverbs/kernel/wv_driver.c index d5321602..281fdf69 100644 --- a/trunk/core/winverbs/kernel/wv_driver.c +++ b/trunk/core/winverbs/kernel/wv_driver.c @@ -127,6 +127,20 @@ void WvCompleteRequestsWithInformation(WDFQUEUE Queue, NTSTATUS ReqStatus) } } +static void WvVersionQuery(WDFREQUEST Request) +{ + size_t len = 0; + UINT64 *version; + NTSTATUS status; + + status = WdfRequestRetrieveOutputBuffer(Request, sizeof(UINT64), &version, &len); + if (NT_SUCCESS(status)) { + *version = WV_KERNEL_VERSION; + } + + WdfRequestCompleteWithInformation(Request, status, len); +} + static void WvGuidQuery(WDFREQUEST Request) { WV_IO_GUID_LIST *list; @@ -212,6 +226,9 @@ static VOID WvIoDeviceControl(WDFQUEUE Queue, WDFREQUEST Request, // TODO: verify this compiles as a jump table, or use function pointers switch (IoControlCode) { + case WV_IO_FUNCTION_VERSION_QUERY: + WvVersionQuery(Request); + break; case WV_IOCTL_GUID_QUERY: WvGuidQuery(Request); break; diff --git a/trunk/core/winverbs/wv_ioctl.h b/trunk/core/winverbs/wv_ioctl.h index 7a8701f1..ce091d10 100644 --- a/trunk/core/winverbs/wv_ioctl.h +++ b/trunk/core/winverbs/wv_ioctl.h @@ -36,6 +36,8 @@ typedef UINT16 NET16; typedef UINT32 NET32; typedef UINT64 NET64; +#define WV_KERNEL_VERSION 1 + #define WV_IOCTL(f) CTL_CODE(FILE_DEVICE_INFINIBAND, f, METHOD_BUFFERED,\ FILE_READ_DATA | FILE_WRITE_DATA) @@ -44,7 +46,7 @@ typedef UINT64 NET64; #define WV_IO_FUNCTION_BASE 0x800 enum { - WV_IO_FUNCTION_MIN, + WV_IO_FUNCTION_VERSION_QUERY, WV_IO_FUNCTION_GUID_QUERY, WV_IO_FUNCTION_LIBRARY_QUERY, WV_IO_FUNCTION_DEVICE_OPEN, @@ -100,6 +102,10 @@ enum { WV_IO_FUNCTION_PD_CANCEL }; +// none / UINT64 Version +#define WV_IOCTL_VERSION_QUERY WV_IOCTL(WV_IO_FUNCTION_BASE + \ + WV_IO_FUNCTION_VERSION_QUERY) + // none / WV_IO_GUID_LIST #define WV_IOCTL_GUID_QUERY WV_IOCTL(WV_IO_FUNCTION_BASE + \ WV_IO_FUNCTION_GUID_QUERY)