IB/iser: Use more completion queues
No reason to settle with four, can use the min between device max comp vectors and number of cores. Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
This commit is contained in:
parent
7e1fd4d1e3
commit
da64bdb25b
@ -326,8 +326,6 @@ struct iser_rx_desc {
|
||||
char pad[ISER_RX_PAD_SIZE];
|
||||
} __attribute__((packed));
|
||||
|
||||
#define ISER_MAX_CQ 4
|
||||
|
||||
struct iser_conn;
|
||||
struct ib_conn;
|
||||
struct iscsi_iser_task;
|
||||
@ -378,7 +376,7 @@ struct iser_device {
|
||||
struct list_head ig_list;
|
||||
int refcount;
|
||||
int comps_used;
|
||||
struct iser_comp comps[ISER_MAX_CQ];
|
||||
struct iser_comp *comps;
|
||||
int (*iser_alloc_rdma_reg_res)(struct ib_conn *ib_conn,
|
||||
unsigned cmds_max);
|
||||
void (*iser_free_rdma_reg_res)(struct ib_conn *ib_conn);
|
||||
|
@ -104,9 +104,14 @@ static int iser_create_device_ib_res(struct iser_device *device)
|
||||
return -1;
|
||||
}
|
||||
|
||||
device->comps_used = min(ISER_MAX_CQ,
|
||||
device->comps_used = min_t(int, num_online_cpus(),
|
||||
device->ib_device->num_comp_vectors);
|
||||
|
||||
device->comps = kcalloc(device->comps_used, sizeof(*device->comps),
|
||||
GFP_KERNEL);
|
||||
if (!device->comps)
|
||||
goto comps_err;
|
||||
|
||||
max_cqe = min(ISER_MAX_CQ_LEN, dev_attr->max_cqe);
|
||||
|
||||
iser_info("using %d CQs, device %s supports %d vectors max_cqe %d\n",
|
||||
@ -165,6 +170,8 @@ cq_err:
|
||||
}
|
||||
ib_dealloc_pd(device->pd);
|
||||
pd_err:
|
||||
kfree(device->comps);
|
||||
comps_err:
|
||||
iser_err("failed to allocate an IB resource\n");
|
||||
return -1;
|
||||
}
|
||||
@ -190,6 +197,9 @@ static void iser_free_device_ib_res(struct iser_device *device)
|
||||
(void)ib_dereg_mr(device->mr);
|
||||
(void)ib_dealloc_pd(device->pd);
|
||||
|
||||
kfree(device->comps);
|
||||
device->comps = NULL;
|
||||
|
||||
device->mr = NULL;
|
||||
device->pd = NULL;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user