]> git.openfabrics.org - ~shefty/rdma-win.git/commitdiff
[WINVERBS/ND] allow retrying ND:Connect()
authorStan Smith <stan.smith@intel.com>
Wed, 10 Mar 2010 22:24:02 +0000 (22:24 +0000)
committerStan Smith <stan.smith@intel.com>
Wed, 10 Mar 2010 22:24:02 +0000 (22:24 +0000)
The ND documentation specifies that ND:Connect() should be retry-able.
Add this support to the winverbs ND provider.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1@2729 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

branches/WOF2-2/ulp/netdirect/user/nd_connect.cpp
branches/WOF2-2/ulp/netdirect/user/nd_connect.h

index 81d5f7bd09bf742bec3380027aaebdce0a705a59..3042530d9f65d46d637650cd7eb1d94a6d54e417 100644 (file)
@@ -37,15 +37,26 @@ CNDConnector::CNDConnector(CNDAdapter *pAdapter)
        pAdapter->AddRef();\r
        m_pAdapter = pAdapter;\r
        m_pWvConnEp = NULL;\r
+       m_Connects = 0;\r
 }\r
 \r
 STDMETHODIMP CNDConnector::\r
 Init(void)\r
 {\r
+       IWVConnectEndpoint *ep;\r
        HRESULT hr;\r
 \r
-       hr = m_pAdapter->m_pWvProvider->CreateConnectEndpoint(&m_pWvConnEp);\r
-       return NDConvertWVStatus(hr);\r
+       hr = m_pAdapter->m_pWvProvider->CreateConnectEndpoint(&ep);\r
+       if (FAILED(hr)) {\r
+               return NDConvertWVStatus(hr);\r
+       }\r
+\r
+       if (m_pWvConnEp != NULL) {\r
+               m_pWvConnEp->Release();\r
+       }\r
+\r
+       m_pWvConnEp = ep;\r
+       return ND_SUCCESS;\r
 }\r
 \r
 CNDConnector::~CNDConnector()\r
@@ -132,6 +143,13 @@ Connect(INDEndpoint* pEndpoint,
        IBAT_PATH_BLOB path;\r
        HRESULT hr;\r
 \r
+       if (m_Connects++ > 0) {\r
+               hr = Init();\r
+               if (FAILED(hr)) {\r
+                       goto out;\r
+               }\r
+       }\r
+\r
        RtlCopyMemory(&addr, &m_pAdapter->m_Address, AddressLength);\r
        if (addr.Sa.sa_family == AF_INET) {\r
                addr.Sin.sin_port = LocalPort;\r
index 2da2f2223a82c71589eb6123e12a611a190c156e..688fedc7d678db846146538c0c1a1ee16fc0e9a8 100644 (file)
@@ -114,6 +114,7 @@ public:
 \r
 protected:\r
        STDMETHODIMP            Init();\r
+       int                                     m_Connects;\r
 };\r
 \r
 #endif // _ND_CONNECTOR_H_\r