]> git.openfabrics.org - ~ardavis/dapl.git/commitdiff
r3232: validate default settings so they don't exceed device maximums
authorJames Lentini <jlentini@netapp.com>
Mon, 29 Aug 2005 15:07:44 +0000 (15:07 +0000)
committerJames Lentini <jlentini@netapp.com>
Mon, 29 Aug 2005 15:07:44 +0000 (15:07 +0000)
Signed-off by: Arlin Davis <ardavis@ichips.intel.com>
Signed-off by: James Lentini <jlentini@netapp.com>

dapl/common/dapl_ep_util.c

index e019d522791e5765f83135f0d42dfe1238d759bb..8d9e7ccba91634c4a619573721e1b713ae448446 100644 (file)
@@ -260,7 +260,9 @@ void
 dapli_ep_default_attrs (
        IN DAPL_EP              *ep_ptr )
 {
+    DAT_EP_ATTR                ep_attr_limit;
     DAT_EP_ATTR                *ep_attr;
+    DAT_RETURN         dat_status;
 
     ep_attr = &ep_ptr->param.ep_attr;
     /* Set up defaults */
@@ -295,7 +297,36 @@ dapli_ep_default_attrs (
      *    - provider_specific_params: 0
      */
 
-    return;
+     dat_status = dapls_ib_query_hca (ep_ptr->header.owner_ia->hca_ptr, 
+                                     NULL, &ep_attr_limit, NULL);
+     /* check against HCA maximums */
+     if (dat_status == DAT_SUCCESS)
+     {
+        ep_ptr->param.ep_attr.max_mtu_size =
+            DAPL_MIN(ep_ptr->param.ep_attr.max_mtu_size,
+                     ep_attr_limit.max_mtu_size);
+        ep_ptr->param.ep_attr.max_rdma_size =
+            DAPL_MIN(ep_ptr->param.ep_attr.max_rdma_size,
+                     ep_attr_limit.max_rdma_size);
+        ep_ptr->param.ep_attr.max_recv_dtos =
+            DAPL_MIN(ep_ptr->param.ep_attr.max_recv_dtos,
+                     ep_attr_limit.max_recv_dtos);
+        ep_ptr->param.ep_attr.max_request_dtos =
+            DAPL_MIN(ep_ptr->param.ep_attr.max_request_dtos,
+                     ep_attr_limit.max_request_dtos);
+        ep_ptr->param.ep_attr.max_recv_iov =
+            DAPL_MIN(ep_ptr->param.ep_attr.max_recv_iov,
+                     ep_attr_limit.max_recv_iov);
+        ep_ptr->param.ep_attr.max_request_iov =
+            DAPL_MIN(ep_ptr->param.ep_attr.max_request_iov,
+                     ep_attr_limit.max_request_iov);
+        ep_ptr->param.ep_attr.max_rdma_read_in =
+            DAPL_MIN(ep_ptr->param.ep_attr.max_rdma_read_in,
+                     ep_attr_limit.max_rdma_read_in);
+        ep_ptr->param.ep_attr.max_rdma_read_out =
+            DAPL_MIN(ep_ptr->param.ep_attr.max_rdma_read_out,
+                     ep_attr_limit.max_rdma_read_out);
+     }
 }