IB/mthca: Check that SRQ WQE size does not exceed device's max value
authorJack Morgenstein <jackm@mellanox.co.il>
Mon, 20 Mar 2006 10:35:34 +0000 (12:35 +0200)
committerRoland Dreier <rolandd@cisco.com>
Fri, 24 Mar 2006 23:47:27 +0000 (15:47 -0800)
Guarantee the calculated work queue entry size does not exceed the max
allowable WQE size when creating an SRQ.  This is a problem with Arbel
in Tavor-compatibility mode because the current WQE size computation
method rounds up to next power of 2.

Signed-off-by: Jack Morgenstein <jackm@mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/hw/mthca/mthca_srq.c

index 47a6a754a591562e1432f8c859851ca05f75b24a..4e671e00e42b5fa25b8c6e9a57249be0f0b41953 100644 (file)
@@ -205,6 +205,10 @@ int mthca_alloc_srq(struct mthca_dev *dev, struct mthca_pd *pd,
        ds = max(64UL,
                 roundup_pow_of_two(sizeof (struct mthca_next_seg) +
                                    srq->max_gs * sizeof (struct mthca_data_seg)));
+
+       if (ds > dev->limits.max_desc_sz)
+               return -EINVAL;
+
        srq->wqe_shift = long_log2(ds);
 
        srq->srqn = mthca_alloc(&dev->srq_table.alloc);