From: Avihai Horon <avihaih@xxxxxxxxxx> Enable Relaxed Ordering for iser. Relaxed Ordering is an optional access flag and as such, it is ignored by vendors that don't support it. Signed-off-by: Avihai Horon <avihaih@xxxxxxxxxx> Reviewed-by: Max Gurtovoy <maxg@xxxxxxxxxxxx> Reviewed-by: Michael Guralnik <michaelgur@xxxxxxxxxx> Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxx> --- drivers/infiniband/ulp/iser/iser_memory.c | 10 ++++------ drivers/infiniband/ulp/iser/iser_verbs.c | 6 ++++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/infiniband/ulp/iser/iser_memory.c b/drivers/infiniband/ulp/iser/iser_memory.c index afec40da9b58..29849c9e82e8 100644 --- a/drivers/infiniband/ulp/iser/iser_memory.c +++ b/drivers/infiniband/ulp/iser/iser_memory.c @@ -271,9 +271,8 @@ iser_reg_sig_mr(struct iscsi_iser_task *iser_task, wr->wr.send_flags = 0; wr->mr = mr; wr->key = mr->rkey; - wr->access = IB_ACCESS_LOCAL_WRITE | - IB_ACCESS_REMOTE_READ | - IB_ACCESS_REMOTE_WRITE; + wr->access = IB_ACCESS_LOCAL_WRITE | IB_ACCESS_REMOTE_READ | + IB_ACCESS_REMOTE_WRITE | IB_ACCESS_RELAXED_ORDERING; rsc->mr_valid = 1; sig_reg->sge.lkey = mr->lkey; @@ -318,9 +317,8 @@ static int iser_fast_reg_mr(struct iscsi_iser_task *iser_task, wr->wr.num_sge = 0; wr->mr = mr; wr->key = mr->rkey; - wr->access = IB_ACCESS_LOCAL_WRITE | - IB_ACCESS_REMOTE_WRITE | - IB_ACCESS_REMOTE_READ; + wr->access = IB_ACCESS_LOCAL_WRITE | IB_ACCESS_REMOTE_WRITE | + IB_ACCESS_REMOTE_READ | IB_ACCESS_RELAXED_ORDERING; rsc->mr_valid = 1; diff --git a/drivers/infiniband/ulp/iser/iser_verbs.c b/drivers/infiniband/ulp/iser/iser_verbs.c index 3c370ee25f2f..1e236b1cf29b 100644 --- a/drivers/infiniband/ulp/iser/iser_verbs.c +++ b/drivers/infiniband/ulp/iser/iser_verbs.c @@ -121,7 +121,8 @@ iser_create_fastreg_desc(struct iser_device *device, else mr_type = IB_MR_TYPE_MEM_REG; - desc->rsc.mr = ib_alloc_mr(pd, mr_type, size, 0); + desc->rsc.mr = ib_alloc_mr(pd, mr_type, size, + IB_ACCESS_RELAXED_ORDERING); if (IS_ERR(desc->rsc.mr)) { ret = PTR_ERR(desc->rsc.mr); iser_err("Failed to allocate ib_fast_reg_mr err=%d\n", ret); @@ -129,7 +130,8 @@ iser_create_fastreg_desc(struct iser_device *device, } if (pi_enable) { - desc->rsc.sig_mr = ib_alloc_mr_integrity(pd, size, size, 0); + desc->rsc.sig_mr = ib_alloc_mr_integrity(pd, size, size, + IB_ACCESS_RELAXED_ORDERING); if (IS_ERR(desc->rsc.sig_mr)) { ret = PTR_ERR(desc->rsc.sig_mr); iser_err("Failed to allocate sig_mr err=%d\n", ret); -- 2.30.2