[ND provider] This patch is a fix to 2333. It removes a facility to define MaxDataInl...
authorleonidk <leonidk@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Sun, 16 Aug 2009 12:40:46 +0000 (12:40 +0000)
committerleonidk <leonidk@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Sun, 16 Aug 2009 12:40:46 +0000 (12:40 +0000)
Improved latency of ND provider by using INLINE send

This patch adds usage of INLINE DATA facility of Mellanox HCAs for improving latency of ND provider.

Here are the ideas of the patch:
    - by default, ND provider will create QP with inline data of 160 bytes;
    (this can enlarge user's QP size)
    - one can change this default by defining environment variable IBNDPROV_MAX_INLINE_SIZE;

git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@2352 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86

ulp/nd/user/NdEndpoint.cpp
ulp/nd/user/NdEndpoint.h

index 5d0cee1..b204320 100644 (file)
@@ -98,7 +98,7 @@ HRESULT CEndpoint::Initialize(
     __in SIZE_T nOutboundSge,\r
     __in SIZE_T InboundReadLimit,\r
     __in SIZE_T OutboundReadLimit,\r
-    __in_opt __out_opt SIZE_T* pMaxInlineData\r
+    __out_opt SIZE_T* pMaxInlineData\r
     )\r
 {\r
     ND_ENTER( ND_DBG_NDI );\r
@@ -124,11 +124,7 @@ HRESULT CEndpoint::Initialize(
         m_pParent->m_Ifc.user_verbs.post_recv != NULL /*||\r
         m_pParent->m_Ifc.user_verbs.bind_mw != NULL*/ );\r
 \r
-       UINT32 InlineSize;\r
-       if ( pMaxInlineData )\r
-               InlineSize = (UINT32)*pMaxInlineData;\r
-       else\r
-               InlineSize = g_nd_max_inline_size;\r
+       m_MaxInlineSize = g_nd_max_inline_size;\r
                \r
     HRESULT hr = CreateQp(\r
         pInboundCq,\r
@@ -139,7 +135,7 @@ HRESULT CEndpoint::Initialize(
         nOutboundSge,\r
         InboundReadLimit,\r
         OutboundReadLimit,\r
-        InlineSize );\r
+        m_MaxInlineSize );\r
 \r
     if( FAILED( hr ) )\r
         return hr;\r
@@ -151,12 +147,11 @@ HRESULT CEndpoint::Initialize(
                return hr;\r
        }\r
        else\r
-               InlineSize = (UINT32)qp_attr.sq_max_inline;\r
+               m_MaxInlineSize = (UINT32)qp_attr.sq_max_inline;\r
        \r
        \r
     m_Ird = (UINT8)InboundReadLimit;\r
     m_Ord = (UINT8)OutboundReadLimit;\r
-    m_MaxInlineSize = InlineSize;\r
 \r
     // Move the QP to the INIT state so users can post receives.\r
     hr = ModifyQp( IB_QPS_INIT );\r
@@ -164,7 +159,7 @@ HRESULT CEndpoint::Initialize(
         DestroyQp();\r
 \r
     if( SUCCEEDED( hr ) && pMaxInlineData != NULL )\r
-        *pMaxInlineData = InlineSize;\r
+        *pMaxInlineData = m_MaxInlineSize;\r
 \r
     return hr;\r
 }\r
index f72bdb9..fd1eabd 100644 (file)
@@ -67,7 +67,7 @@ private:
         __in SIZE_T nOutboundSge,\r
         __in SIZE_T InboundReadLimit,\r
         __in SIZE_T OutboundReadLimit,\r
-        __in_opt __out_opt SIZE_T* pMaxInlineData\r
+        __out_opt SIZE_T* pMaxInlineData\r
         );\r
 \r
 public:\r