i40iw: Zero-out consumer key on allocate stag for FMR
authorShiraz Saleem <shiraz.saleem@intel.com>
Fri, 12 Jan 2018 00:10:51 +0000 (18:10 -0600)
committerJason Gunthorpe <jgg@mellanox.com>
Wed, 17 Jan 2018 03:38:18 +0000 (20:38 -0700)
If the application invalidates the MR before the FMR WR, HW parses the
consumer key portion of the stag and returns an invalid stag key
Asynchronous Event (AE) that tears down the QP.

Fix this by zeroing-out the consumer key portion of the allocated stag
returned to application for FMR.

Fixes: ee855d3b93f3 ("RDMA/i40iw: Add base memory management extensions")
Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/hw/i40iw/i40iw_verbs.c

index 3c6f3ce88f892c90792f4e398c24b3813ba61fa0..9f18997b2e9e68d6f8811a6bba53c10b245fb3c3 100644 (file)
@@ -1637,6 +1637,7 @@ static struct ib_mr *i40iw_alloc_mr(struct ib_pd *pd,
                err_code = -EOVERFLOW;
                goto err;
        }
+       stag &= ~I40IW_CQPSQ_STAG_KEY_MASK;
        iwmr->stag = stag;
        iwmr->ibmr.rkey = stag;
        iwmr->ibmr.lkey = stag;