ia_attr->transport_attr = NULL;
ia_attr->num_vendor_attr = 0;
ia_attr->vendor_attr = NULL;
- ia_attr->max_iov_segments_per_rdma_read = dev_attr.max_sge;
+ /* iWARP spec. - 1 sge for RDMA reads */
+ if (hca_ptr->ib_hca_handle->device->transport_type
+ == IBV_TRANSPORT_IWARP)
+ ia_attr->max_iov_segments_per_rdma_read = 1;
+ else
+ ia_attr->max_iov_segments_per_rdma_read =
+ dev_attr.max_sge;
+
ia_attr->max_iov_segments_per_rdma_write = dev_attr.max_sge;
/* save rd_atom for peer validation during connect requests */
hca_ptr->ib_trans.max_rdma_rd_in = dev_attr.max_qp_rd_atom;
ep_attr->max_request_iov = dev_attr.max_sge;
ep_attr->max_rdma_read_in = dev_attr.max_qp_rd_atom;
ep_attr->max_rdma_read_out= dev_attr.max_qp_init_rd_atom;
- ep_attr->max_rdma_read_iov= dev_attr.max_sge;
+ /* iWARP spec. - 1 sge for RDMA reads */
+ if (hca_ptr->ib_hca_handle->device->transport_type
+ == IBV_TRANSPORT_IWARP)
+ ep_attr->max_rdma_read_iov = 1;
+ else
+ ep_attr->max_rdma_read_iov = dev_attr.max_sge;
+
ep_attr->max_rdma_write_iov= dev_attr.max_sge;
dapl_log(DAPL_DBG_TYPE_UTIL,
"dapl_query_hca: MAX msg %llu dto %d iov %d"