This updates the implementation to match the latest ndspi.h header file. Changes include:
- Functions that return an interface take a REFIID as input and return VOID** rather than IND** - Functions that take an interface as input use IUnknown* rather than IND* - SGE became Sge - A few acronyms are now spelled out. - A couple new functions were defined, and parameters added in a couple places. No significant functionality is added. Signed-off-by: Sean Hefty <[email protected]> --- trunk/ulp/netdirect2/user/nd_adapter.cpp | 92 ++++++++++++++++++++--------- trunk/ulp/netdirect2/user/nd_adapter.h | 40 ++++++------- trunk/ulp/netdirect2/user/nd_connect.cpp | 8 +-- trunk/ulp/netdirect2/user/nd_connect.h | 10 ++- trunk/ulp/netdirect2/user/nd_cq.cpp | 6 ++ trunk/ulp/netdirect2/user/nd_cq.h | 3 + trunk/ulp/netdirect2/user/nd_ep.h | 2 - trunk/ulp/netdirect2/user/nd_listen.cpp | 2 - trunk/ulp/netdirect2/user/nd_listen.h | 4 + trunk/ulp/netdirect2/user/nd_mw.cpp | 12 ++++ trunk/ulp/netdirect2/user/nd_mw.h | 8 ++- trunk/ulp/netdirect2/user/nd_provider.cpp | 6 ++ trunk/ulp/netdirect2/user/nd_provider.h | 2 - trunk/ulp/netdirect2/user/nd_qp.cpp | 6 +- trunk/ulp/netdirect2/user/nd_qp.h | 10 ++- trunk/ulp/netdirect2/user/nd_srq.cpp | 9 ++- trunk/ulp/netdirect2/user/nd_srq.h | 9 ++- 17 files changed, 147 insertions(+), 82 deletions(-) diff --git a/trunk/ulp/netdirect2/user/nd_adapter.cpp b/trunk/ulp/netdirect2/user/nd_adapter.cpp index 475c1e6..34e9fc7 100644 --- a/trunk/ulp/netdirect2/user/nd_adapter.cpp +++ b/trunk/ulp/netdirect2/user/nd_adapter.cpp @@ -135,16 +135,16 @@ Query(ND_ADAPTER_INFO* pInfo, SIZE_T* pcbInfo) pInfo->AdapterId = m_DeviceGuid; pInfo->MaxRegistrationSize = attr.MaxMrSize; pInfo->MaxWindowSize = attr.MaxMrSize; - pInfo->MaxReceiveSGE = (DWORD) attr.MaxSge; - pInfo->MaxInitiatorSGE = (DWORD) attr.MaxSge; - pInfo->MaxReadSGE = (DWORD) attr.MaxSge; + pInfo->MaxReceiveSge = (DWORD) attr.MaxSge; + pInfo->MaxInitiatorSge = (DWORD) attr.MaxSge; + pInfo->MaxReadSge = (DWORD) attr.MaxSge; pInfo->MaxTransferLength = 1 << 31; pInfo->MaxInboundReadLimit = (DWORD) attr.MaxQpResponderResources; pInfo->MaxOutboundReadLimit = (DWORD) attr.MaxQpInitiatorDepth; - pInfo->MaxRQDepth = (DWORD) attr.MaxQpWr; - pInfo->MaxIQDepth = (DWORD) attr.MaxQpWr; - pInfo->MaxSRQDepth = (DWORD) attr.MaxSrqWr; - pInfo->MaxCQDepth = (DWORD) attr.MaxCqEntries; + pInfo->MaxReceiveQueueDepth = (DWORD) attr.MaxQpWr; + pInfo->MaxInitiatorQueueDepth = (DWORD) attr.MaxQpWr; + pInfo->MaxSharedReceiveQueueDepth = (DWORD) attr.MaxSrqWr; + pInfo->MaxCompletionQueueDepth = (DWORD) attr.MaxCqEntries; pInfo->InlineRequestThreshold = m_MaxInlineSend; pInfo->LargeRequestThreshold = 0; pInfo->MaxCallerData = ND_PRIVATE_DATA_SIZE; @@ -167,80 +167,112 @@ QueryAddressList(SOCKET_ADDRESS_LIST* pAddressList, SIZE_T* pcbAddressList) } STDMETHODIMP CNDAdapter:: -CreateCompletionQueue(DWORD queueDepth, GROUP_AFFINITY* pAffinity, - INDCompletionQueue** ppCompletionQueue) +CreateCompletionQueue(REFIID iid, DWORD queueDepth, USHORT group, KAFFINITY affinity, + VOID** ppCompletionQueue) { return CNDCompletionQueue::CreateInstance(this, queueDepth, ppCompletionQueue); } STDMETHODIMP CNDAdapter:: -CreateMemoryRegion(INDMemoryRegion** ppMemoryRegion) +CreateMemoryRegion(REFIID iid, VOID** ppMemoryRegion) { + if (iid != IID_INDMemoryRegion) { + return E_NOINTERFACE; + } + return CNDMemoryRegion::CreateInstance(this, ppMemoryRegion); } STDMETHODIMP CNDAdapter:: -CreateMemoryWindow(INDMemoryWindow** ppMemoryWindow) +CreateMemoryWindow(REFIID iid, VOID** ppMemoryWindow) { + if (iid != IID_INDMemoryWindow) { + return E_NOINTERFACE; + } + return CNDMemoryWindow::CreateInstance(this, ppMemoryWindow); } STDMETHODIMP CNDAdapter:: -CreateSharedReceiveQueue(DWORD queueDepth, DWORD maxSGE, - DWORD notifyThreshold, GROUP_AFFINITY* pAffinity, - INDSharedReceiveQueue** ppSharedReceiveQueue) +CreateSharedReceiveQueue(REFIID iid, DWORD queueDepth, DWORD maxSge, + DWORD notifyThreshold, USHORT group, + KAFFINITY affinity, VOID** ppSharedReceiveQueue) { - return CNDSharedReceiveQueue::CreateInstance(this, queueDepth, maxSGE, - notifyThreshold, pAffinity, + if (iid != IID_INDSharedReceiveQueue) { + return E_NOINTERFACE; + } + + return CNDSharedReceiveQueue::CreateInstance(this, queueDepth, maxSge, + notifyThreshold, affinity, ppSharedReceiveQueue); } STDMETHODIMP CNDAdapter:: -CreateQueuePair(INDCompletionQueue* pReceiveCompletionQueue, - INDCompletionQueue* pInitiatorCompletionQueue, VOID* context, +CreateQueuePair(REFIID iid, IUnknown* pReceiveCompletionQueue, + IUnknown* pInitiatorCompletionQueue, VOID* context, DWORD receiveQueueDepth, DWORD initiatorQueueDepth, - DWORD maxReceiveRequestSGE, DWORD maxInitiatorRequestSGE, - INDQueuePair** ppQueuePair) + DWORD maxReceiveRequestSge, DWORD maxInitiatorRequestSge, + VOID** ppQueuePair) { CNDCompletionQueue *rcq = (CNDCompletionQueue *) pReceiveCompletionQueue; CNDCompletionQueue *icq = (CNDCompletionQueue *) pInitiatorCompletionQueue; + if (iid != IID_INDQueuePair) { + return E_NOINTERFACE; + } + return CNDQueuePair::CreateInstance(this, rcq, icq, NULL, context, receiveQueueDepth, initiatorQueueDepth, - maxReceiveRequestSGE, maxInitiatorRequestSGE, + maxReceiveRequestSge, maxInitiatorRequestSge, ppQueuePair); } STDMETHODIMP CNDAdapter:: -CreateQueuePairWithSRQ(INDCompletionQueue* pReceiveCompletionQueue, - INDCompletionQueue* pInitiatorCompletionQueue, - INDSharedReceiveQueue* pSharedReceiveQueue, VOID* context, - DWORD initiatorQueueDepth, DWORD maxInitiatorRequestSGE, - INDQueuePair** ppQueuePair) +CreateQueuePairWithSrq(REFIID iid, IUnknown* pReceiveCompletionQueue, + IUnknown* pInitiatorCompletionQueue, + IUnknown* pSharedReceiveQueue, VOID* context, + DWORD initiatorQueueDepth, DWORD maxInitiatorRequestSge, + VOID** ppQueuePair) { CNDCompletionQueue *rcq = (CNDCompletionQueue *) pReceiveCompletionQueue; CNDCompletionQueue *icq = (CNDCompletionQueue *) pInitiatorCompletionQueue; CNDSharedReceiveQueue *srq = (CNDSharedReceiveQueue *) pSharedReceiveQueue; + if (iid != IID_INDQueuePair) { + return E_NOINTERFACE; + } + return CNDQueuePair::CreateInstance(this, rcq, icq, srq, context, 0, initiatorQueueDepth, 0, - maxInitiatorRequestSGE, ppQueuePair); + maxInitiatorRequestSge, ppQueuePair); } STDMETHODIMP CNDAdapter:: -CreateSharedEndpoint(INDSharedEndpoint** ppSharedEndpoint) +CreateSharedEndpoint(REFIID iid, VOID** ppSharedEndpoint) { + if (iid != IID_INDSharedEndpoint) { + return E_NOINTERFACE; + } + return CNDSharedEndpoint::CreateInstance(this, ppSharedEndpoint); } STDMETHODIMP CNDAdapter:: -CreateConnector(INDConnector** ppConnector) +CreateConnector(REFIID iid, VOID** ppConnector) { + if (iid != IID_INDConnector) { + return E_NOINTERFACE; + } + return CNDConnector::CreateInstance(this, ppConnector); } STDMETHODIMP CNDAdapter:: -CreateListen(INDListen** ppListen) +CreateListen(REFIID iid, VOID** ppListen) { + if (iid != IID_INDListen) { + return E_NOINTERFACE; + } + return CNDListen::CreateInstance(this, ppListen); } diff --git a/trunk/ulp/netdirect2/user/nd_adapter.h b/trunk/ulp/netdirect2/user/nd_adapter.h index 9821570..941f80a 100644 --- a/trunk/ulp/netdirect2/user/nd_adapter.h +++ b/trunk/ulp/netdirect2/user/nd_adapter.h @@ -49,32 +49,32 @@ public: STDMETHODIMP_(HANDLE) GetFileHandle(); STDMETHODIMP Query(ND_ADAPTER_INFO* pInfo, SIZE_T* pcbInfo); STDMETHODIMP QueryAddressList(SOCKET_ADDRESS_LIST* pAddressList, SIZE_T* pcbAddressList); - STDMETHODIMP CreateCompletionQueue(DWORD queueDepth, GROUP_AFFINITY* pAffinity, - INDCompletionQueue** ppCompletionQueue); - STDMETHODIMP CreateMemoryRegion(INDMemoryRegion** ppMemoryRegion); - STDMETHODIMP CreateMemoryWindow(INDMemoryWindow** ppMemoryWindow); - STDMETHODIMP CreateSharedReceiveQueue(DWORD queueDepth, DWORD maxSGE, - DWORD notifyThreshold, GROUP_AFFINITY* pAffinity, - INDSharedReceiveQueue** ppSharedReceiveQueue); - STDMETHODIMP CreateQueuePair(INDCompletionQueue* pReceiveCompletionQueue, - INDCompletionQueue* pInitiatorCompletionQueue, VOID* context, + STDMETHODIMP CreateCompletionQueue(REFIID iid, DWORD queueDepth, USHORT group, + KAFFINITY affinity, VOID** ppCompletionQueue); + STDMETHODIMP CreateMemoryRegion(REFIID iid, VOID** ppMemoryRegion); + STDMETHODIMP CreateMemoryWindow(REFIID iid, VOID** ppMemoryWindow); + STDMETHODIMP CreateSharedReceiveQueue(REFIID iid, DWORD queueDepth, DWORD maxSge, + DWORD notifyThreshold, USHORT group, + KAFFINITY affinity, VOID** ppSharedReceiveQueue); + STDMETHODIMP CreateQueuePair(REFIID iid, IUnknown* pReceiveCompletionQueue, + IUnknown* pInitiatorCompletionQueue, VOID* context, DWORD receiveQueueDepth, DWORD initiatorQueueDepth, - DWORD maxReceiveRequestSGE, DWORD maxInitiatorRequestSGE, - INDQueuePair** ppQueuePair); - STDMETHODIMP CreateQueuePairWithSRQ(INDCompletionQueue* pReceiveCompletionQueue, - INDCompletionQueue* pInitiatorCompletionQueue, - INDSharedReceiveQueue* pSharedReceiveQueue, VOID* context, - DWORD initiatorQueueDepth, DWORD maxInitiatorRequestSGE, - INDQueuePair** ppQueuePair); - STDMETHODIMP CreateSharedEndpoint(INDSharedEndpoint** ppSharedEndpoint); - STDMETHODIMP CreateConnector(INDConnector** ppConnector); - STDMETHODIMP CreateListen(INDListen** ppListen); + DWORD maxReceiveRequestSge, DWORD maxInitiatorRequestSge, + VOID** ppQueuePair); + STDMETHODIMP CreateQueuePairWithSrq(REFIID, IUnknown* pReceiveCompletionQueue, + IUnknown* pInitiatorCompletionQueue, + IUnknown* pSharedReceiveQueue, VOID* context, + DWORD initiatorQueueDepth, DWORD maxInitiatorRequestSge, + VOID** ppQueuePair); + STDMETHODIMP CreateSharedEndpoint(REFIID iid, VOID** ppSharedEndpoint); + STDMETHODIMP CreateConnector(REFIID iid, VOID** ppConnector); + STDMETHODIMP CreateListen(REFIID iid, VOID** ppListen); CNDAdapter(CNDProvider *pProvider); ~CNDAdapter(); void Delete() {delete this;} static STDMETHODIMP - CreateInstance(CNDProvider *pProvider, UINT64 adapterId, INDAdapter** ppAdapter) + CreateInstance(CNDProvider *pProvider, UINT64 adapterId, VOID** ppAdapter) { HRESULT hr; CNDAdapter *adapter; diff --git a/trunk/ulp/netdirect2/user/nd_connect.cpp b/trunk/ulp/netdirect2/user/nd_connect.cpp index 579fd11..7d9f71d 100644 --- a/trunk/ulp/netdirect2/user/nd_connect.cpp +++ b/trunk/ulp/netdirect2/user/nd_connect.cpp @@ -113,7 +113,7 @@ GetOverlappedResult(OVERLAPPED *pOverlapped, BOOL bWait) } STDMETHODIMP CNDConnector:: -ConnectQp(INDQueuePair* pQueuePair, BOOL SharedAddress, +ConnectQp(IUnknown* pQueuePair, BOOL SharedAddress, const struct sockaddr* pSrcAddress, SIZE_T cbSrcAddress, const struct sockaddr* pDestAddress, SIZE_T cbDestAddress, DWORD inboundReadLimit, DWORD outboundReadLimit, @@ -167,7 +167,7 @@ out: } STDMETHODIMP CNDConnector:: -Connect(INDQueuePair* pQueuePair, +Connect(IUnknown* pQueuePair, const struct sockaddr* pSrcAddress, SIZE_T cbSrcAddress, const struct sockaddr* pDestAddress, SIZE_T cbDestAddress, DWORD inboundReadLimit, DWORD outboundReadLimit, @@ -179,7 +179,7 @@ Connect(INDQueuePair* pQueuePair, } STDMETHODIMP CNDConnector:: -ConnectSharedEndpoint(INDQueuePair* pQueuePair, INDSharedEndpoint* pSharedEndpoint, +ConnectSharedEndpoint(IUnknown* pQueuePair, IUnknown* pSharedEndpoint, const struct sockaddr* pDestAddress, SIZE_T cbDestAddress, DWORD inboundReadLimit, DWORD outboundReadLimit, const VOID* pPrivateData, DWORD cbPrivateData, @@ -204,7 +204,7 @@ CompleteConnect(OVERLAPPED* pOverlapped) } STDMETHODIMP CNDConnector:: -Accept(INDQueuePair* pQueuePair, DWORD inboundReadLimit, DWORD outboundReadLimit, +Accept(IUnknown* pQueuePair, DWORD inboundReadLimit, DWORD outboundReadLimit, const VOID* pPrivateData, DWORD cbPrivateData, OVERLAPPED* pOverlapped) { CNDQueuePair *qp = (CNDQueuePair *) pQueuePair; diff --git a/trunk/ulp/netdirect2/user/nd_connect.h b/trunk/ulp/netdirect2/user/nd_connect.h index dd1e142..0140430 100644 --- a/trunk/ulp/netdirect2/user/nd_connect.h +++ b/trunk/ulp/netdirect2/user/nd_connect.h @@ -54,18 +54,18 @@ public: STDMETHODIMP GetOverlappedResult(OVERLAPPED *pOverlapped, BOOL bWait); // INDConnector methods - STDMETHODIMP Connect(INDQueuePair* pQueuePair, + STDMETHODIMP Connect(IUnknown* pQueuePair, const struct sockaddr* pSrcAddress, SIZE_T cbSrcAddress, const struct sockaddr* pDestAddress, SIZE_T cbDestAddress, DWORD inboundReadLimit, DWORD outboundReadLimit, const VOID* pPrivateData, DWORD cbPrivateData, OVERLAPPED* pOverlapped); - STDMETHODIMP ConnectSharedEndpoint(INDQueuePair* pQueuePair, INDSharedEndpoint* pSharedEndpoint, + STDMETHODIMP ConnectSharedEndpoint(IUnknown* pQueuePair, IUnknown* pSharedEndpoint, const struct sockaddr* pDestAddress, SIZE_T cbDestAddress, DWORD inboundReadLimit, DWORD outboundReadLimit, const VOID* pPrivateData, DWORD cbPrivateData, OVERLAPPED* pOverlapped); STDMETHODIMP CompleteConnect(OVERLAPPED* pOverlapped); - STDMETHODIMP Accept(INDQueuePair* pQueuePair, DWORD inboundReadLimit, DWORD outboundReadLimit, + STDMETHODIMP Accept(IUnknown* pQueuePair, DWORD inboundReadLimit, DWORD outboundReadLimit, const VOID* pPrivateData, DWORD cbPrivateData, OVERLAPPED* pOverlapped); STDMETHODIMP Reject(const VOID* pPrivateData, DWORD cbPrivateData); STDMETHODIMP GetConnectionData(DWORD* pInboundReadLimit, DWORD* pOutboundReadLimit, @@ -79,7 +79,7 @@ public: ~CNDConnector(); void Delete() {delete this;} static STDMETHODIMP - CreateInstance(CNDAdapter *pAdapter, INDConnector** ppConnector) + CreateInstance(CNDAdapter *pAdapter, VOID** ppConnector) { HRESULT hr; CNDConnector *conn; @@ -110,7 +110,7 @@ public: protected: STDMETHODIMP Init(); - STDMETHODIMP ConnectQp(INDQueuePair* pQueuePair, BOOL SharedAddress, + STDMETHODIMP ConnectQp(IUnknown* pQueuePair, BOOL SharedAddress, const struct sockaddr* pSrcAddress, SIZE_T cbSrcAddress, const struct sockaddr* pDestAddress, SIZE_T cbDestAddress, DWORD inboundReadLimit, DWORD outboundReadLimit, diff --git a/trunk/ulp/netdirect2/user/nd_cq.cpp b/trunk/ulp/netdirect2/user/nd_cq.cpp index 9f8fdb6..be4b4bd 100644 --- a/trunk/ulp/netdirect2/user/nd_cq.cpp +++ b/trunk/ulp/netdirect2/user/nd_cq.cpp @@ -98,6 +98,12 @@ GetOverlappedResult(OVERLAPPED *pOverlapped, BOOL bWait) } STDMETHODIMP CNDCompletionQueue:: +GetNotifyAffinity(USHORT* pGroup, KAFFINITY* pAffinity) +{ + return ND_NOT_SUPPORTED; +} + +STDMETHODIMP CNDCompletionQueue:: Resize(DWORD queueDepth) { HRESULT hr; diff --git a/trunk/ulp/netdirect2/user/nd_cq.h b/trunk/ulp/netdirect2/user/nd_cq.h index 1f6af0e..fdadd98 100644 --- a/trunk/ulp/netdirect2/user/nd_cq.h +++ b/trunk/ulp/netdirect2/user/nd_cq.h @@ -50,6 +50,7 @@ public: STDMETHODIMP GetOverlappedResult(OVERLAPPED *pOverlapped, BOOL bWait); // INDCompletionQueue methods + STDMETHODIMP GetNotifyAffinity(USHORT* pGroup, KAFFINITY* pAffinity); STDMETHODIMP Resize(DWORD queueDepth); STDMETHODIMP Notify(DWORD type, OVERLAPPED* pOverlapped); STDMETHODIMP_(DWORD) GetResults(ND_RESULT results[], DWORD nResults); @@ -58,7 +59,7 @@ public: ~CNDCompletionQueue(); void Delete() {delete this;} static STDMETHODIMP - CreateInstance(CNDAdapter *pAdapter, DWORD queueDepth, INDCompletionQueue** ppCq) + CreateInstance(CNDAdapter *pAdapter, DWORD queueDepth, VOID** ppCq) { HRESULT hr; CNDCompletionQueue *cq; diff --git a/trunk/ulp/netdirect2/user/nd_ep.h b/trunk/ulp/netdirect2/user/nd_ep.h index e33df94..81ec189 100644 --- a/trunk/ulp/netdirect2/user/nd_ep.h +++ b/trunk/ulp/netdirect2/user/nd_ep.h @@ -54,7 +54,7 @@ public: ~CNDSharedEndpoint(); void Delete() {delete this;} static STDMETHODIMP - CreateInstance(CNDAdapter *pAdapter, INDSharedEndpoint** ppSharedEndpoint) + CreateInstance(CNDAdapter *pAdapter, VOID** ppSharedEndpoint) { HRESULT hr; CNDSharedEndpoint *ep; diff --git a/trunk/ulp/netdirect2/user/nd_listen.cpp b/trunk/ulp/netdirect2/user/nd_listen.cpp index 80d1725..ee22540 100644 --- a/trunk/ulp/netdirect2/user/nd_listen.cpp +++ b/trunk/ulp/netdirect2/user/nd_listen.cpp @@ -144,7 +144,7 @@ GetLocalAddress(struct sockaddr* pAddress, SIZE_T* pcbAddress) } STDMETHODIMP CNDListen:: -GetConnectionRequest(INDConnector* pConnector, OVERLAPPED* pOverlapped) +GetConnectionRequest(IUnknown* pConnector, OVERLAPPED* pOverlapped) { CNDConnector *conn = (CNDConnector *) pConnector; HRESULT hr; diff --git a/trunk/ulp/netdirect2/user/nd_listen.h b/trunk/ulp/netdirect2/user/nd_listen.h index d077a3e..08f2d01 100644 --- a/trunk/ulp/netdirect2/user/nd_listen.h +++ b/trunk/ulp/netdirect2/user/nd_listen.h @@ -52,13 +52,13 @@ public: // INDListen methods STDMETHODIMP Listen(const struct sockaddr* pAddress, SIZE_T cbAddress, SIZE_T backlog); STDMETHODIMP GetLocalAddress(struct sockaddr* pAddress, SIZE_T* pcbAddress); - STDMETHODIMP GetConnectionRequest(INDConnector* pConnector, OVERLAPPED* pOverlapped); + STDMETHODIMP GetConnectionRequest(IUnknown* pConnector, OVERLAPPED* pOverlapped); CNDListen(CNDAdapter *pAdapter); ~CNDListen(); void Delete() {delete this;} static STDMETHODIMP - CreateInstance(CNDAdapter *pAdapter, INDListen** ppListen) + CreateInstance(CNDAdapter *pAdapter, VOID** ppListen) { HRESULT hr; CNDListen *listener; diff --git a/trunk/ulp/netdirect2/user/nd_mw.cpp b/trunk/ulp/netdirect2/user/nd_mw.cpp index be5446d..89ed1a7 100644 --- a/trunk/ulp/netdirect2/user/nd_mw.cpp +++ b/trunk/ulp/netdirect2/user/nd_mw.cpp @@ -67,6 +67,18 @@ Release(void) return CNDBase::Release(); } +STDMETHODIMP CNDMemoryRegion:: +CancelOverlappedRequests(void) +{ + return ND_NOT_SUPPORTED; +} + +STDMETHODIMP CNDMemoryRegion:: +GetOverlappedResult(OVERLAPPED *pOverlapped, BOOL bWait) +{ + return ND_NOT_SUPPORTED; +} + DWORD ConvertAccessFlags(DWORD Flags) { DWORD opts = 0; diff --git a/trunk/ulp/netdirect2/user/nd_mw.h b/trunk/ulp/netdirect2/user/nd_mw.h index 8409a0e..f4b9fb3 100644 --- a/trunk/ulp/netdirect2/user/nd_mw.h +++ b/trunk/ulp/netdirect2/user/nd_mw.h @@ -45,6 +45,10 @@ public: STDMETHODIMP_(ULONG) AddRef(); STDMETHODIMP_(ULONG) Release(); + // INDOverlapped methods + STDMETHODIMP CancelOverlappedRequests(); + STDMETHODIMP GetOverlappedResult(OVERLAPPED *pOverlapped, BOOL bWait); + // INDMemoryRegion methods STDMETHODIMP Register(const VOID* pBuffer, SIZE_T cbBuffer, DWORD flags, OVERLAPPED* pOverlapped); @@ -56,7 +60,7 @@ public: ~CNDMemoryRegion(); void Delete() {delete this;} static STDMETHODIMP - CreateInstance(CNDAdapter *pAdapter, INDMemoryRegion** ppMemoryRegion) + CreateInstance(CNDAdapter *pAdapter, VOID** ppMemoryRegion) { HRESULT hr; CNDMemoryRegion *mr; @@ -97,7 +101,7 @@ public: ~CNDMemoryWindow(); void Delete() {delete this;} static STDMETHODIMP - CreateInstance(CNDAdapter *pAdapter, INDMemoryWindow** ppMemoryWindow) + CreateInstance(CNDAdapter *pAdapter, VOID** ppMemoryWindow) { HRESULT hr; CNDMemoryWindow *mw; diff --git a/trunk/ulp/netdirect2/user/nd_provider.cpp b/trunk/ulp/netdirect2/user/nd_provider.cpp index 92835fd..968193d 100644 --- a/trunk/ulp/netdirect2/user/nd_provider.cpp +++ b/trunk/ulp/netdirect2/user/nd_provider.cpp @@ -148,8 +148,12 @@ ResolveAddress(const struct sockaddr* pAddress, SIZE_T cbAddress, UINT64* pAdapt } STDMETHODIMP CNDProvider:: -OpenAdapter(UINT64 adapterId, INDAdapter** ppAdapter) +OpenAdapter(REFIID iid, UINT64 adapterId, VOID** ppAdapter) { + if (iid != IID_INDAdapter) { + return E_NOINTERFACE; + } + return CNDAdapter::CreateInstance(this, adapterId, ppAdapter); } diff --git a/trunk/ulp/netdirect2/user/nd_provider.h b/trunk/ulp/netdirect2/user/nd_provider.h index 15a74f6..b0e3709 100644 --- a/trunk/ulp/netdirect2/user/nd_provider.h +++ b/trunk/ulp/netdirect2/user/nd_provider.h @@ -49,7 +49,7 @@ public: SIZE_T* pcbAddressList); STDMETHODIMP ResolveAddress(const struct sockaddr* pAddress, SIZE_T cbAddress, UINT64* pAdapterId); - STDMETHODIMP OpenAdapter(UINT64 adapterId, INDAdapter** ppAdapter); + STDMETHODIMP OpenAdapter(REFIID iid, UINT64 adapterId, VOID** ppAdapter); CNDProvider(); ~CNDProvider(); diff --git a/trunk/ulp/netdirect2/user/nd_qp.cpp b/trunk/ulp/netdirect2/user/nd_qp.cpp index 6473540..746482f 100644 --- a/trunk/ulp/netdirect2/user/nd_qp.cpp +++ b/trunk/ulp/netdirect2/user/nd_qp.cpp @@ -192,8 +192,8 @@ Receive(VOID* requestContext, const ND_SGE* pSGE, DWORD nSGE) } STDMETHODIMP CNDQueuePair:: -Bind(VOID* requestContext, INDMemoryRegion* pMemoryRegion, - INDMemoryWindow* pMemoryWindow, const VOID* pBuffer, SIZE_T cbBuffer, +Bind(VOID* requestContext, IUnknown* pMemoryRegion, + IUnknown* pMemoryWindow, const VOID* pBuffer, SIZE_T cbBuffer, DWORD flags) { CNDMemoryRegion *mr = (CNDMemoryRegion *) pMemoryRegion; @@ -211,7 +211,7 @@ Bind(VOID* requestContext, INDMemoryRegion* pMemoryRegion, } STDMETHODIMP CNDQueuePair:: -Invalidate(VOID* requestContext, INDMemoryWindow* pMemoryWindow, DWORD flags) +Invalidate(VOID* requestContext, IUnknown* pMemoryWindow, DWORD flags) { CNDMemoryWindow *mw = (CNDMemoryWindow *) pMemoryWindow; HRESULT hr; diff --git a/trunk/ulp/netdirect2/user/nd_qp.h b/trunk/ulp/netdirect2/user/nd_qp.h index 1d09ddc..c110cce 100644 --- a/trunk/ulp/netdirect2/user/nd_qp.h +++ b/trunk/ulp/netdirect2/user/nd_qp.h @@ -52,10 +52,10 @@ public: STDMETHODIMP Flush(); STDMETHODIMP Send(VOID* requestContext, const ND_SGE* pSGE, DWORD nSGE, DWORD flags); STDMETHODIMP Receive(VOID* requestContext, const ND_SGE* pSGE, DWORD nSGE); - STDMETHODIMP Bind(VOID* requestContext, INDMemoryRegion* pMemoryRegion, - INDMemoryWindow* pMemoryWindow, const VOID* pBuffer, SIZE_T cbBuffer, + STDMETHODIMP Bind(VOID* requestContext, IUnknown* pMemoryRegion, + IUnknown* pMemoryWindow, const VOID* pBuffer, SIZE_T cbBuffer, DWORD flags); - STDMETHODIMP Invalidate(VOID* requestContext, INDMemoryWindow* pMemoryWindow, DWORD flags); + STDMETHODIMP Invalidate(VOID* requestContext, IUnknown* pMemoryWindow, DWORD flags); STDMETHODIMP Read(VOID* requestContext, const ND_SGE* pSGE, DWORD nSGE, UINT64 remoteAddress, UINT32 remoteToken, DWORD flags); STDMETHODIMP Write(VOID* requestContext, const ND_SGE* pSGE, DWORD nSGE, @@ -71,7 +71,7 @@ public: CNDSharedReceiveQueue *pSharedReceiveQueue, VOID* context, DWORD receiveQueueDepth, DWORD initiatorQueueDepth, DWORD maxReceiveRequestSGE, DWORD maxInitiatorRequestSGE, - INDQueuePair** ppQueuePair) + VOID** ppQueuePair) { HRESULT hr; CNDQueuePair *qp; @@ -111,7 +111,7 @@ protected: CNDCompletionQueue* pInitiatorCompletionQueue, CNDSharedReceiveQueue *pSharedReceiveQueue, VOID* context, DWORD receiveQueueDepth, DWORD initiatorQueueDepth, - DWORD maxReceiveRequestSGE, DWORD maxInitiatorRequestSGE); + DWORD maxReceiveRequestSge, DWORD maxInitiatorRequestSGE); STDMETHODIMP_(DWORD) ConvertSendFlags(DWORD Flags); }; diff --git a/trunk/ulp/netdirect2/user/nd_srq.cpp b/trunk/ulp/netdirect2/user/nd_srq.cpp index e472757..ab0abd3 100644 --- a/trunk/ulp/netdirect2/user/nd_srq.cpp +++ b/trunk/ulp/netdirect2/user/nd_srq.cpp @@ -38,11 +38,10 @@ CNDSharedReceiveQueue::CNDSharedReceiveQueue(CNDAdapter *pAdapter) } STDMETHODIMP CNDSharedReceiveQueue:: -Init(DWORD queueDepth, DWORD maxSGE, DWORD notifyThreshold, GROUP_AFFINITY* pAffinity) +Init(DWORD queueDepth, DWORD maxSGE, DWORD notifyThreshold, KAFFINITY affinity) { HRESULT hr; - //??? pAffinity ignored hr = m_pAdapter->m_pWvPd->CreateSharedReceiveQueue(queueDepth, maxSGE, notifyThreshold, &m_pWvSrq); return NDConvertWVStatus(hr); @@ -101,6 +100,12 @@ GetOverlappedResult(OVERLAPPED *pOverlapped, BOOL bWait) } STDMETHODIMP CNDSharedReceiveQueue:: +GetNotifyAffinity(USHORT *pGroup, KAFFINITY* pAffinity) +{ + return ND_NOT_SUPPORTED; +} + +STDMETHODIMP CNDSharedReceiveQueue:: Modify(DWORD queueDepth, DWORD notifyThreshold) { HRESULT hr; diff --git a/trunk/ulp/netdirect2/user/nd_srq.h b/trunk/ulp/netdirect2/user/nd_srq.h index 80f2c4b..79f3dc1 100644 --- a/trunk/ulp/netdirect2/user/nd_srq.h +++ b/trunk/ulp/netdirect2/user/nd_srq.h @@ -51,6 +51,7 @@ public: STDMETHODIMP GetOverlappedResult(OVERLAPPED *pOverlapped, BOOL bWait); // INDSharedReceiveQueue methods + STDMETHODIMP GetNotifyAffinity(USHORT *pGroup, KAFFINITY* pAffinity); STDMETHODIMP Modify(DWORD queueDepth, DWORD notifyThreshold); STDMETHODIMP Notify(OVERLAPPED* pOverlapped); STDMETHODIMP Receive(VOID* requestContext, const ND_SGE* pSGE, DWORD nSGE); @@ -60,8 +61,8 @@ public: void Delete() {delete this;} static STDMETHODIMP CreateInstance(CNDAdapter *pAdapter, DWORD queueDepth, DWORD maxSGE, - DWORD notifyThreshold, GROUP_AFFINITY* pAffinity, - INDSharedReceiveQueue** ppSharedReceiveQueue) + DWORD notifyThreshold, KAFFINITY affinity, + VOID** ppSharedReceiveQueue) { HRESULT hr; CNDSharedReceiveQueue *srq; @@ -72,7 +73,7 @@ public: goto err1; } - hr = srq->Init(queueDepth, maxSGE, notifyThreshold, pAffinity); + hr = srq->Init(queueDepth, maxSGE, notifyThreshold, affinity); if (FAILED(hr)) { goto err2; } @@ -93,7 +94,7 @@ protected: CNDAdapter *m_pAdapter; STDMETHODIMP Init(DWORD queueDepth, DWORD maxSGE, DWORD notifyThreshold, - GROUP_AFFINITY* pAffinity); + KAFFINITY affinity); }; #endif // _ND_SRQ_H_ _______________________________________________ ofw mailing list [email protected] http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw
