iw_cxgb4: cq/qp mask depends on bar2 pages in a host page
authorRaju Rangoju <rajur@chelsio.com>
Thu, 14 Feb 2019 12:10:54 +0000 (17:40 +0530)
committerJason Gunthorpe <jgg@mellanox.com>
Fri, 15 Feb 2019 16:39:39 +0000 (09:39 -0700)
commitf09ef134a7ca3f0d2ce485a757f5b79809ebb803
tree67e380a63e30f141668ef179aee523140d12058b
parentfc4144e7815b7747b6aba140d7a91da45ee9dd8c
iw_cxgb4: cq/qp mask depends on bar2 pages in a host page

Adjust the cq/qp mask based on the number of bar2 pages in a host page.

For user-mode rdma, the granularity of the BAR2 memory mapped to a user
rdma process during queue allocation must be based on the host page
size. The lld attributes udb_density and ucq_density are used to figure
out how many sge contexts are in a bar2 page. So the rdev->qpmask and
rdev->cqmask in iw_cxgb4 need to now be adjusted based on how many sge
bar2 pages are in a host page.

Otherwise the device fails to work on non 4k page size systems.

Fixes: 2391b0030e24 ("cxgb4: Remove SGE_HOST_PAGE_SIZE dependency on page size")
Signed-off-by: Raju Rangoju <rajur@chelsio.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/hw/cxgb4/device.c