RDMA/cxgb3: Set the max_mr_size device attribute correctly
authorSteve Wise <swise@opengridcomputing.com>
Tue, 29 Apr 2008 20:46:52 +0000 (13:46 -0700)
committerRoland Dreier <rolandd@cisco.com>
Tue, 29 Apr 2008 20:46:52 +0000 (13:46 -0700)
cxgb3 only supports 4GB memory regions.  The lustre RDMA code uses
this attribute and currently has to code around our bad setting.

Signed-off-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/hw/cxgb3/cxio_hal.h
drivers/infiniband/hw/cxgb3/iwch.c
drivers/infiniband/hw/cxgb3/iwch.h
drivers/infiniband/hw/cxgb3/iwch_provider.c

index 99543d634704d93c98b1f4bcfa615a5aee7bfc0d..2bcff7f5046e3a00c10675643f40872319bb51ef 100644 (file)
@@ -53,6 +53,7 @@
 #define T3_MAX_PBL_SIZE 256
 #define T3_MAX_RQ_SIZE 1024
 #define T3_MAX_NUM_STAG (1<<15)
+#define T3_MAX_MR_SIZE 0x100000000ULL
 
 #define T3_STAG_UNSET 0xffffffff
 
index 6ba4138c8ec3a8b434526e7f7ceba7f641569d62..71554eacb13ce3f87d19b8bd582f05eabde6a8f9 100644 (file)
@@ -83,6 +83,7 @@ static void rnic_init(struct iwch_dev *rnicp)
        rnicp->attr.max_phys_buf_entries = T3_MAX_PBL_SIZE;
        rnicp->attr.max_pds = T3_MAX_NUM_PD - 1;
        rnicp->attr.mem_pgsizes_bitmask = 0x7FFF;       /* 4KB-128MB */
+       rnicp->attr.max_mr_size = T3_MAX_MR_SIZE;
        rnicp->attr.can_resize_wq = 0;
        rnicp->attr.max_rdma_reads_per_qp = 8;
        rnicp->attr.max_rdma_read_resources =
index 9ad9b1e7c8c1cced39eda9ead95d85e498018a03..d2409a505e8d5d3f6b659b4af0a07d0421cf8672 100644 (file)
@@ -66,6 +66,7 @@ struct iwch_rnic_attributes {
         * size (4k)^i.  Phys block list mode unsupported.
         */
        u32 mem_pgsizes_bitmask;
+       u64 max_mr_size;
        u8 can_resize_wq;
 
        /*
index e343e9e64844fb5c7bfa27178ed3fe6ef35bdf5b..d07d3a377b5f2b02644e2164db56b858ac898e07 100644 (file)
@@ -998,7 +998,7 @@ static int iwch_query_device(struct ib_device *ibdev,
        props->device_cap_flags = dev->device_cap_flags;
        props->vendor_id = (u32)dev->rdev.rnic_info.pdev->vendor;
        props->vendor_part_id = (u32)dev->rdev.rnic_info.pdev->device;
-       props->max_mr_size = ~0ull;
+       props->max_mr_size = dev->attr.max_mr_size;
        props->max_qp = dev->attr.max_qps;
        props->max_qp_wr = dev->attr.max_wrs;
        props->max_sge = dev->attr.max_sge_per_wr;