Index: core/winmad/kernel/wm_provider.c
===================================================================
--- core/winmad/kernel/wm_provider.c	(revision 2820)
+++ core/winmad/kernel/wm_provider.c	(working copy)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008 Intel Corporation. All rights reserved.
+ * Copyright (c) 2008-2010 Intel Corporation. All rights reserved.
  *
  * This software is available to you under the OpenIB.org BSD license
  * below:
@@ -407,9 +407,10 @@
 void WmSendHandler(ib_mad_svc_handle_t hService, void *Context,
 				   ib_mad_element_t *pMad)
 {
-	if (pMad->status == IB_SUCCESS) {
+	if (pMad->status == IB_WCS_SUCCESS) {
 		((WM_REGISTRATION *) Context)->pDevice->IbInterface.put_mad(pMad);
 	} else {
+		pMad->status = WM_IO_TIMEOUT;
 		WmReceiveHandler(hService, Context, pMad);
 	}
 }
@@ -417,10 +418,11 @@
 void WmProviderCancel(WM_PROVIDER *pProvider, WDFREQUEST Request)
 {
 	WDFREQUEST	request;
-	NTSTATUS	status;
+	NTSTATUS	status, result;
 
 	WdfObjectAcquireLock(pProvider->ReadQueue);
 	status = WdfIoQueueRetrieveNextRequest(pProvider->ReadQueue, &request);
+	result = status;
 
 	while (NT_SUCCESS(status)) {
 		WdfRequestComplete(request, STATUS_CANCELLED);
@@ -428,5 +430,5 @@
 	}
 	WdfObjectReleaseLock(pProvider->ReadQueue);
 
-	WdfRequestComplete(Request, status);
+	WdfRequestComplete(Request, result);
 }
Index: core/winmad/wm_ioctl.h
===================================================================
--- core/winmad/wm_ioctl.h	(revision 2820)
+++ core/winmad/wm_ioctl.h	(working copy)
@@ -98,6 +98,9 @@
 
 }	WM_IO_MAD_AV;
 
+#define WM_IO_SUCCESS 0
+#define WM_IO_TIMEOUT 138
+
 #pragma warning(push)
 #pragma warning(disable: 4200)
 typedef struct _WM_IO_MAD
Index: inc/user/iba/winmad.h
===================================================================
--- inc/user/iba/winmad.h	(revision 2820)
+++ inc/user/iba/winmad.h	(working copy)
@@ -72,6 +72,9 @@
 
 }	WM_MAD_AV;
 
+#define WM_SUCCESS 0
+#define WM_TIMEOUT 138
+
 #pragma warning(push)
 #pragma warning(disable: 4200)
 typedef struct _WM_MAD
