diff options
author | Stefan Roscher <ossrosch@linux.vnet.ibm.com> | 2008-10-22 15:52:31 -0700 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2008-10-22 15:52:31 -0700 |
commit | 19f4282149147b4a3e8c670373dc73ddd5d5facc (patch) | |
tree | e6b740a392f7c76dec479ec762c837b16d2e0651 /drivers/infiniband/hw/ehca/ehca_cq.c | |
parent | 0540bbbe455e123a1692d26205ad1a29983883b0 (diff) | |
download | linux-19f4282149147b4a3e8c670373dc73ddd5d5facc.tar.gz linux-19f4282149147b4a3e8c670373dc73ddd5d5facc.tar.bz2 linux-19f4282149147b4a3e8c670373dc73ddd5d5facc.zip |
IB/ehca: Fix reported max number of QPs and CQs in systems with >1 adapter
Because ehca adapters can differ in the maximum number of QPs and CQs
we have to save the maximum number of these ressources per adapter and
not globally per ehca driver. This fix introduces 2 new members to the
shca structure to store the maximum value for QPs and CQs per adapter.
The module parameters are now used as initial values for those
variables. If a user selects an invalid number of CQs or QPs we don't
print an error any longer, instead we will inform the user with a
warning and set the values to the respective maximum supported by the
HW.
Signed-off-by: Stefan Roscher <stefan.roscher@de.ibm.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband/hw/ehca/ehca_cq.c')
-rw-r--r-- | drivers/infiniband/hw/ehca/ehca_cq.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/infiniband/hw/ehca/ehca_cq.c b/drivers/infiniband/hw/ehca/ehca_cq.c index 33647a95eb9a..2f4c28a30271 100644 --- a/drivers/infiniband/hw/ehca/ehca_cq.c +++ b/drivers/infiniband/hw/ehca/ehca_cq.c @@ -132,9 +132,9 @@ struct ib_cq *ehca_create_cq(struct ib_device *device, int cqe, int comp_vector, if (cqe >= 0xFFFFFFFF - 64 - additional_cqe) return ERR_PTR(-EINVAL); - if (!atomic_add_unless(&shca->num_cqs, 1, ehca_max_cq)) { + if (!atomic_add_unless(&shca->num_cqs, 1, shca->max_num_cqs)) { ehca_err(device, "Unable to create CQ, max number of %i " - "CQs reached.", ehca_max_cq); + "CQs reached.", shca->max_num_cqs); ehca_err(device, "To increase the maximum number of CQs " "use the number_of_cqs module parameter.\n"); return ERR_PTR(-ENOSPC); |