From a3b0894b264a64efb51c7e9888ccfd2455305ec2 Mon Sep 17 00:00:00 2001 From: "U-AMR\\MSHEFTY" Date: Mon, 14 Dec 2009 16:47:34 -0800 Subject: [PATCH] refresh (create temporary patch) --- meta | 5 +- patches/refresh-temp | 205 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 208 insertions(+), 2 deletions(-) create mode 100644 patches/refresh-temp diff --git a/meta b/meta index a6fee2c7..15370f72 100644 --- a/meta +++ b/meta @@ -1,10 +1,11 @@ Version: 1 -Previous: 93942b79a85e46e747562ea3b57781ee1a7bc84b -Head: 2e16b3d7c3892855a4f9719aa1f7c12852431c83 +Previous: 5a8469bc45dfd8e531b34a313de0a9096030ee3e +Head: 56e96c785d4db0d4d712d82956b5de69425429b7 Applied: rm-build: 4a07738a3e31c0b254263c5aac316c086b1eafce epdisc: 4c931f6af5e37a502f7a10b78a902747f9738623 debug: 7fcfbb36cb831bda7f290662ca81daf212c5fc1a apphang: 2e16b3d7c3892855a4f9719aa1f7c12852431c83 + refresh-temp: 56e96c785d4db0d4d712d82956b5de69425429b7 Unapplied: Hidden: diff --git a/patches/refresh-temp b/patches/refresh-temp new file mode 100644 index 00000000..85834018 --- /dev/null +++ b/patches/refresh-temp @@ -0,0 +1,205 @@ +Bottom: 3aa5960a9abcc32abc479b1132d7d236207bb0e6 +Top: 842554e126ffdbf4e3cdfb06aff33b12620915cd +Author: U-AMR\MSHEFTY +Date: 2009-12-14 16:47:31 -0800 + +Refresh of apphang + +--- + +diff --git a/trunk/core/winverbs/kernel/wv_ep.c b/trunk/core/winverbs/kernel/wv_ep.c +index 8c45cc4..dd67ee4 100644 +--- a/trunk/core/winverbs/kernel/wv_ep.c ++++ b/trunk/core/winverbs/kernel/wv_ep.c +@@ -1004,74 +1004,74 @@ complete: + WdfRequestComplete(Request, status); + } + +-static NTSTATUS WvEpDisconnectActive(WDFREQUEST Request, +- UINT8 *pVerbsData, size_t VerbsSize, +- WV_ENDPOINT *pEndpoint, +- WV_IO_EP_DISCONNECT *pAttr) +-{ +- NTSTATUS status, failure; +- +- WdfObjectAcquireLock(pEndpoint->Queue); +- if (pEndpoint->State == WvEpConnected) { +- status = IbCmInterface.CM.send_dreq(pEndpoint->pIbCmId, NULL, 0); +- if (status == STATUS_INVALID_DEVICE_STATE) { +- pEndpoint->State = WvEpPassiveDisconnect; +- goto release; +- } +- pEndpoint->State = WvEpActiveDisconnect; +- } else { +- status = STATUS_INVALID_DEVICE_STATE; +- goto release; +- } +- +- status = WdfRequestForwardToIoQueue(Request, pEndpoint->Queue); +- if (!NT_SUCCESS(status)) { +- pEndpoint->State = WvEpDisconnected; +- WvCompleteRequests(pEndpoint->Queue, STATUS_UNSUCCESSFUL); +- WdfObjectReleaseLock(pEndpoint->Queue); +- +- failure = status; +- status = WvEpDisconnectQp(pEndpoint->pProvider, pAttr->QpId, +- pVerbsData, VerbsSize); +- if (NT_SUCCESS(status)) { +- WdfRequestCompleteWithInformation(Request, failure, VerbsSize); +- } +- return status; +- } +- +-release: +- WdfObjectReleaseLock(pEndpoint->Queue); +- return status; +-} +- +-static NTSTATUS WvEpDisconnectPassive(WDFREQUEST Request, +- UINT8 *pVerbsData, size_t VerbsSize, +- WV_ENDPOINT *pEndpoint, +- WV_IO_EP_DISCONNECT *pAttr) +-{ +- NTSTATUS status; +- +- WdfObjectAcquireLock(pEndpoint->Queue); +- if (pEndpoint->State != WvEpPassiveDisconnect) { +-DbgPrintEx(DPFLTR_IHVDRIVER_ID, 0, "WvEpDisconnectPassive wrong state 0x%x\n", pEndpoint->State); +- WdfObjectReleaseLock(pEndpoint->Queue); +- return STATUS_NOT_SUPPORTED; +- } +- +- pEndpoint->State = WvEpDisconnected; +- WdfObjectReleaseLock(pEndpoint->Queue); +- +- IbCmInterface.CM.send_drep(pEndpoint->pIbCmId, NULL, 0); +- +- status = WvEpDisconnectQp(pEndpoint->pProvider, pAttr->QpId, +- pVerbsData, VerbsSize); +- if (NT_SUCCESS(status)) { +- WdfRequestCompleteWithInformation(Request, status, VerbsSize); +- } +- +- return status; +-} +- ++//static NTSTATUS WvEpDisconnectActive(WDFREQUEST Request, ++// UINT8 *pVerbsData, size_t VerbsSize, ++// WV_ENDPOINT *pEndpoint, ++// WV_IO_EP_DISCONNECT *pAttr) ++//{ ++// NTSTATUS status, failure; ++// ++// WdfObjectAcquireLock(pEndpoint->Queue); ++// if (pEndpoint->State == WvEpConnected) { ++// status = IbCmInterface.CM.send_dreq(pEndpoint->pIbCmId, NULL, 0); ++// if (status == STATUS_INVALID_DEVICE_STATE) { ++// pEndpoint->State = WvEpPassiveDisconnect; ++// goto release; ++// } ++// pEndpoint->State = WvEpActiveDisconnect; ++// } else { ++// status = STATUS_INVALID_DEVICE_STATE; ++// goto release; ++// } ++// ++// status = WdfRequestForwardToIoQueue(Request, pEndpoint->Queue); ++// if (!NT_SUCCESS(status)) { ++// pEndpoint->State = WvEpDisconnected; ++// WvCompleteRequests(pEndpoint->Queue, STATUS_UNSUCCESSFUL); ++// WdfObjectReleaseLock(pEndpoint->Queue); ++// ++// failure = status; ++// status = WvEpDisconnectQp(pEndpoint->pProvider, pAttr->QpId, ++// pVerbsData, VerbsSize); ++// if (NT_SUCCESS(status)) { ++// WdfRequestCompleteWithInformation(Request, failure, VerbsSize); ++// } ++// return status; ++// } ++// ++//release: ++// WdfObjectReleaseLock(pEndpoint->Queue); ++// return status; ++//} ++// ++//static NTSTATUS WvEpDisconnectPassive(WDFREQUEST Request, ++// UINT8 *pVerbsData, size_t VerbsSize, ++// WV_ENDPOINT *pEndpoint, ++// WV_IO_EP_DISCONNECT *pAttr) ++//{ ++// NTSTATUS status; ++// ++// WdfObjectAcquireLock(pEndpoint->Queue); ++// if (pEndpoint->State != WvEpPassiveDisconnect) { ++//DbgPrintEx(DPFLTR_IHVDRIVER_ID, 0, "WvEpDisconnectPassive wrong state 0x%x\n", pEndpoint->State); ++// WdfObjectReleaseLock(pEndpoint->Queue); ++// return STATUS_NOT_SUPPORTED; ++// } ++// ++// pEndpoint->State = WvEpDisconnected; ++// WdfObjectReleaseLock(pEndpoint->Queue); ++// ++// IbCmInterface.CM.send_drep(pEndpoint->pIbCmId, NULL, 0); ++// ++// status = WvEpDisconnectQp(pEndpoint->pProvider, pAttr->QpId, ++// pVerbsData, VerbsSize); ++// if (NT_SUCCESS(status)) { ++// WdfRequestCompleteWithInformation(Request, status, VerbsSize); ++// } ++// ++// return status; ++//} ++// + // The IB CM could have received and processed a DREQ that we haven't seen yet. + void WvEpDisconnect(WV_PROVIDER *pProvider, WDFREQUEST Request) + { +@@ -1098,35 +1098,36 @@ void WvEpDisconnect(WV_PROVIDER *pProvider, WDFREQUEST Request) + goto complete; + } + +- WdfObjectAcquireLock(pEndpoint->Queue); +- switch (pEndpoint->State) { ++ WdfObjectAcquireLock(ep->Queue); ++ switch (ep->State) { + case WvEpConnected: +- status = IbCmInterface.CM.send_dreq(pEndpoint->pIbCmId, NULL, 0); ++ status = IbCmInterface.CM.send_dreq(ep->pIbCmId, NULL, 0); + if (NT_SUCCESS(status)) { +- status = WdfRequestForwardToIoQueue(Request, pEndpoint->Queue); ++ status = WdfRequestForwardToIoQueue(Request, ep->Queue); + if (NT_SUCCESS(status)) { +- pEndpoint->State = WvEpActiveDisconnect; ++ ep->State = WvEpActiveDisconnect; + break; + } + } + /* Fall through to passive disconnect case on failure */ + case WvEpPassiveDisconnect: +- pEndpoint->State = WvEpDisconnected; +- WdfObjectReleaseLock(pEndpoint->Queue); ++ ep->State = WvEpDisconnected; ++ WdfObjectReleaseLock(ep->Queue); + +- IbCmInterface.CM.send_drep(pEndpoint->pIbCmId, NULL, 0); ++ IbCmInterface.CM.send_drep(ep->pIbCmId, NULL, 0); + +- status = WvEpDisconnectQp(pEndpoint->pProvider, pAttr->QpId, +- out, outlen); +- if (NT_SUCCESS(status) { ++ status = WvEpDisconnectQp(ep->pProvider, pattr->QpId, out, outlen); ++ if (NT_SUCCESS(status)) { + WdfRequestCompleteWithInformation(Request, status, outlen); + } +- break; ++ goto release; + default: + status = STATUS_INVALID_DEVICE_STATE; + break; + } ++ WdfObjectReleaseLock(ep->Queue); + ++release: + WvEpRelease(ep); + complete: + if (!NT_SUCCESS(status)) { -- 2.46.0