diff options
author | Steve Wise <swise@opengridcomputing.com> | 2016-11-03 12:09:38 -0700 |
---|---|---|
committer | Doug Ledford <dledford@redhat.com> | 2016-11-16 20:10:36 -0500 |
commit | 5c6b2aaf9316fd0983c0c999d920306ddc65bd2d (patch) | |
tree | f1f6f98a80c3b67904bd00dc8329f46eef32abb7 /drivers/infiniband/hw/cxgb4/mem.c | |
parent | 4ff522ea47944ffd3d4d27023ace8bc6a722c834 (diff) | |
download | linux-5c6b2aaf9316fd0983c0c999d920306ddc65bd2d.tar.bz2 |
iw_cxgb4: invalidate the mr when posting a read_w_inv wr
Also, rearrange things a bit to have a common c4iw_invalidate_mr()
function used everywhere that we need to invalidate.
Fixes: 49b53a93a64a ("iw_cxgb4: add fast-path for small REG_MR operations")
Signed-off-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'drivers/infiniband/hw/cxgb4/mem.c')
-rw-r--r-- | drivers/infiniband/hw/cxgb4/mem.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/cxgb4/mem.c b/drivers/infiniband/hw/cxgb4/mem.c index 80e27749420a..410408f886c1 100644 --- a/drivers/infiniband/hw/cxgb4/mem.c +++ b/drivers/infiniband/hw/cxgb4/mem.c @@ -770,3 +770,15 @@ int c4iw_dereg_mr(struct ib_mr *ib_mr) kfree(mhp); return 0; } + +void c4iw_invalidate_mr(struct c4iw_dev *rhp, u32 rkey) +{ + struct c4iw_mr *mhp; + unsigned long flags; + + spin_lock_irqsave(&rhp->lock, flags); + mhp = get_mhp(rhp, rkey >> 8); + if (mhp) + mhp->attr.state = 0; + spin_unlock_irqrestore(&rhp->lock, flags); +} |