From 1dd8c28ce515675ee8df37cc1596bca17587eaf6 Mon Sep 17 00:00:00 2001 From: James Lentini Date: Mon, 29 Aug 2005 15:07:44 +0000 Subject: [PATCH] r3232: validate default settings so they don't exceed device maximums Signed-off by: Arlin Davis Signed-off by: James Lentini --- dapl/common/dapl_ep_util.c | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/dapl/common/dapl_ep_util.c b/dapl/common/dapl_ep_util.c index e019d52..8d9e7cc 100644 --- a/dapl/common/dapl_ep_util.c +++ b/dapl/common/dapl_ep_util.c @@ -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); + } } -- 2.46.0