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:
parent
e3e45b1b43
commit
cebfe5ca03
1 changed files with 1 additions and 20 deletions
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue