diff options
author | Jack Morgenstein <jackm@mellanox.co.il> | 2005-10-10 16:48:07 -0400 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2005-10-17 18:20:29 -0400 |
commit | efaae8f71f3088cc73c9e5ceabbd314aa82ac768 (patch) | |
tree | b19084ae0a9dc6837cb2837cbd21386c9f1b2e0e /drivers/infiniband/hw/mthca/mthca_cmd.c | |
parent | 4ab6fb7e5b3d34b65a1c3473d80d9d1a462d3a49 (diff) |
[IB] mthca: Better limit checking and reporting
Check the sizes of CQs, QPs and SRQs when creating objects, and fail
instead of creating too-big queues. Also return real limits instead
of just plausible-sounding values from mthca_query_device().
Signed-off-by: Jack Morgenstein <jackm@mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband/hw/mthca/mthca_cmd.c')
-rw-r--r-- | drivers/infiniband/hw/mthca/mthca_cmd.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/infiniband/hw/mthca/mthca_cmd.c b/drivers/infiniband/hw/mthca/mthca_cmd.c index f6a8ac026557..1bd7dc8f778c 100644 --- a/drivers/infiniband/hw/mthca/mthca_cmd.c +++ b/drivers/infiniband/hw/mthca/mthca_cmd.c | |||
@@ -933,9 +933,9 @@ int mthca_QUERY_DEV_LIM(struct mthca_dev *dev, | |||
933 | goto out; | 933 | goto out; |
934 | 934 | ||
935 | MTHCA_GET(field, outbox, QUERY_DEV_LIM_MAX_SRQ_SZ_OFFSET); | 935 | MTHCA_GET(field, outbox, QUERY_DEV_LIM_MAX_SRQ_SZ_OFFSET); |
936 | dev_lim->max_srq_sz = 1 << field; | 936 | dev_lim->max_srq_sz = (1 << field) - 1; |
937 | MTHCA_GET(field, outbox, QUERY_DEV_LIM_MAX_QP_SZ_OFFSET); | 937 | MTHCA_GET(field, outbox, QUERY_DEV_LIM_MAX_QP_SZ_OFFSET); |
938 | dev_lim->max_qp_sz = 1 << field; | 938 | dev_lim->max_qp_sz = (1 << field) - 1; |
939 | MTHCA_GET(field, outbox, QUERY_DEV_LIM_RSVD_QP_OFFSET); | 939 | MTHCA_GET(field, outbox, QUERY_DEV_LIM_RSVD_QP_OFFSET); |
940 | dev_lim->reserved_qps = 1 << (field & 0xf); | 940 | dev_lim->reserved_qps = 1 << (field & 0xf); |
941 | MTHCA_GET(field, outbox, QUERY_DEV_LIM_MAX_QP_OFFSET); | 941 | MTHCA_GET(field, outbox, QUERY_DEV_LIM_MAX_QP_OFFSET); |
@@ -1045,6 +1045,8 @@ int mthca_QUERY_DEV_LIM(struct mthca_dev *dev, | |||
1045 | dev_lim->max_pds, dev_lim->reserved_pds, dev_lim->reserved_uars); | 1045 | dev_lim->max_pds, dev_lim->reserved_pds, dev_lim->reserved_uars); |
1046 | mthca_dbg(dev, "Max QP/MCG: %d, reserved MGMs: %d\n", | 1046 | mthca_dbg(dev, "Max QP/MCG: %d, reserved MGMs: %d\n", |
1047 | dev_lim->max_pds, dev_lim->reserved_mgms); | 1047 | dev_lim->max_pds, dev_lim->reserved_mgms); |
1048 | mthca_dbg(dev, "Max CQEs: %d, max WQEs: %d, max SRQ WQEs: %d\n", | ||
1049 | dev_lim->max_cq_sz, dev_lim->max_qp_sz, dev_lim->max_srq_sz); | ||
1048 | 1050 | ||
1049 | mthca_dbg(dev, "Flags: %08x\n", dev_lim->flags); | 1051 | mthca_dbg(dev, "Flags: %08x\n", dev_lim->flags); |
1050 | 1052 | ||