RDMA/ocrdma: Return proper value for max_mr_size
authorMitesh Ahuja <mitesh.ahuja@emulex.Com>
Tue, 10 Jun 2014 14:02:22 +0000 (19:32 +0530)
committerRoland Dreier <roland@purestorage.com>
Fri, 1 Aug 2014 22:07:37 +0000 (15:07 -0700)
Update the max_mr_size with proper value. Corrected the response
structure of query config mailbox command.

Signed-off-by: Mitesh Ahuja <mitesh.ahuja@emulex.Com>
Signed-off-by: Selvin Xavier <selvin.xavier@emulex.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
drivers/infiniband/hw/ocrdma/ocrdma_hw.c
drivers/infiniband/hw/ocrdma/ocrdma_sli.h
drivers/infiniband/hw/ocrdma/ocrdma_verbs.c

index 5b6e9d9c779eb2ff15addec29c1fb6b6231b7e8b..105659d7ef79b2204b58f43e71d0a28da4b17d84 100644 (file)
@@ -1088,7 +1088,8 @@ static void ocrdma_get_attr(struct ocrdma_dev *dev,
            OCRDMA_MBX_QUERY_CFG_CA_ACK_DELAY_SHIFT;
        attr->max_mw = rsp->max_mw;
        attr->max_mr = rsp->max_mr;
-       attr->max_mr_size = ~0ull;
+       attr->max_mr_size = ((u64)rsp->max_mr_size_hi << 32) |
+                             rsp->max_mr_size_lo;
        attr->max_fmr = 0;
        attr->max_pages_per_frmr = rsp->max_pages_per_frmr;
        attr->max_num_mr_pbl = rsp->max_num_mr_pbl;
index 14a84b269cc057434bec33bde52d616da2bcf697..3cb88f040ca15c1a510d98aef85bb8f9ddff07c6 100644 (file)
@@ -530,8 +530,8 @@ struct ocrdma_mbx_query_config {
        u32 max_ird_ord_per_qp;
        u32 max_shared_ird_ord;
        u32 max_mr;
-       u32 max_mr_size_lo;
        u32 max_mr_size_hi;
+       u32 max_mr_size_lo;
        u32 max_num_mr_pbl;
        u32 max_mw;
        u32 max_fmr;
index 8cd16a18247534b8f0fc22d7b8ce318aab8eed1a..90152dec644703198f232a0dc08891482a557b8e 100644 (file)
@@ -69,7 +69,7 @@ int ocrdma_query_device(struct ib_device *ibdev, struct ib_device_attr *attr)
        memcpy(&attr->fw_ver, &dev->attr.fw_ver[0],
               min(sizeof(dev->attr.fw_ver), sizeof(attr->fw_ver)));
        ocrdma_get_guid(dev, (u8 *)&attr->sys_image_guid);
-       attr->max_mr_size = ~0ull;
+       attr->max_mr_size = dev->attr.max_mr_size;
        attr->page_size_cap = 0xffff000;
        attr->vendor_id = dev->nic_info.pdev->vendor;
        attr->vendor_part_id = dev->nic_info.pdev->device;