staging/o2iblnd: Avoid calling ib_query_device

Instead, use the cached copy of the attributes present on the device.

Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
Or Gerlitz 2015-12-18 10:59:49 +02:00 committed by Doug Ledford
parent e3e45b1b43
commit cebfe5ca03

View file

@ -2070,32 +2070,13 @@ static int kiblnd_net_init_pools(kib_net_t *net, __u32 *cpts, int ncpts)
static int kiblnd_hdev_get_attr(kib_hca_dev_t *hdev)
{
struct ib_device_attr *attr;
int rc;
/* It's safe to assume a HCA can handle a page size
* matching that of the native system */
hdev->ibh_page_shift = PAGE_SHIFT;
hdev->ibh_page_size = 1 << PAGE_SHIFT;
hdev->ibh_page_mask = ~((__u64)hdev->ibh_page_size - 1);
LIBCFS_ALLOC(attr, sizeof(*attr));
if (attr == NULL) {
CERROR("Out of memory\n");
return -ENOMEM;
}
rc = ib_query_device(hdev->ibh_ibdev, attr);
if (rc == 0)
hdev->ibh_mr_size = attr->max_mr_size;
LIBCFS_FREE(attr, sizeof(*attr));
if (rc != 0) {
CERROR("Failed to query IB device: %d\n", rc);
return rc;
}
hdev->ibh_mr_size = hdev->ibh_ibdev->attrs.max_mr_size;
if (hdev->ibh_mr_size == ~0ULL) {
hdev->ibh_mr_shift = 64;
return 0;