From: Avihai Horon <avihaih@xxxxxxxxxx> Enable Relaxed Ordering for smc. 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: Michael Guralnik <michaelgur@xxxxxxxxxx> Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxx> --- net/smc/smc_ib.c | 3 ++- net/smc/smc_wr.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/net/smc/smc_ib.c b/net/smc/smc_ib.c index 4e91ed3dc265..6b65c5d1f957 100644 --- a/net/smc/smc_ib.c +++ b/net/smc/smc_ib.c @@ -579,7 +579,8 @@ int smc_ib_get_memory_region(struct ib_pd *pd, int access_flags, return 0; /* already done */ buf_slot->mr_rx[link_idx] = - ib_alloc_mr(pd, IB_MR_TYPE_MEM_REG, 1 << buf_slot->order, 0); + ib_alloc_mr(pd, IB_MR_TYPE_MEM_REG, 1 << buf_slot->order, + IB_ACCESS_RELAXED_ORDERING); if (IS_ERR(buf_slot->mr_rx[link_idx])) { int rc; diff --git a/net/smc/smc_wr.c b/net/smc/smc_wr.c index cbc73a7e4d59..78e9650621f1 100644 --- a/net/smc/smc_wr.c +++ b/net/smc/smc_wr.c @@ -555,7 +555,8 @@ static void smc_wr_init_sge(struct smc_link *lnk) lnk->wr_reg.wr.num_sge = 0; lnk->wr_reg.wr.send_flags = IB_SEND_SIGNALED; lnk->wr_reg.wr.opcode = IB_WR_REG_MR; - lnk->wr_reg.access = IB_ACCESS_LOCAL_WRITE | IB_ACCESS_REMOTE_WRITE; + lnk->wr_reg.access = IB_ACCESS_LOCAL_WRITE | IB_ACCESS_REMOTE_WRITE | + IB_ACCESS_RELAXED_ORDERING; } void smc_wr_free_link(struct smc_link *lnk) -- 2.30.2