From: Avihai Horon <avih...@nvidia.com>

Enable Relaxed Ordering for smbd.

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 <avih...@nvidia.com>
Reviewed-by: Michael Guralnik <michael...@nvidia.com>
Signed-off-by: Leon Romanovsky <leo...@nvidia.com>
---
 fs/cifs/smbdirect.c | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/fs/cifs/smbdirect.c b/fs/cifs/smbdirect.c
index 647098a5cf3b..1e86dc8bbe85 100644
--- a/fs/cifs/smbdirect.c
+++ b/fs/cifs/smbdirect.c
@@ -2178,8 +2178,10 @@ static void smbd_mr_recovery_work(struct work_struct 
*work)
                                continue;
                        }
 
-                       smbdirect_mr->mr = ib_alloc_mr(info->pd, info->mr_type,
-                                                      info->max_frmr_depth, 0);
+                       smbdirect_mr->mr =
+                               ib_alloc_mr(info->pd, info->mr_type,
+                                           info->max_frmr_depth,
+                                           IB_ACCESS_RELAXED_ORDERING);
                        if (IS_ERR(smbdirect_mr->mr)) {
                                log_rdma_mr(ERR, "ib_alloc_mr failed mr_type=%x 
max_frmr_depth=%x\n",
                                            info->mr_type,
@@ -2244,7 +2246,8 @@ static int allocate_mr_list(struct smbd_connection *info)
                if (!smbdirect_mr)
                        goto out;
                smbdirect_mr->mr = ib_alloc_mr(info->pd, info->mr_type,
-                                              info->max_frmr_depth, 0);
+                                              info->max_frmr_depth,
+                                              IB_ACCESS_RELAXED_ORDERING);
                if (IS_ERR(smbdirect_mr->mr)) {
                        log_rdma_mr(ERR, "ib_alloc_mr failed mr_type=%x 
max_frmr_depth=%x\n",
                                    info->mr_type, info->max_frmr_depth);
@@ -2406,9 +2409,10 @@ struct smbd_mr *smbd_register_mr(
        reg_wr->wr.send_flags = IB_SEND_SIGNALED;
        reg_wr->mr = smbdirect_mr->mr;
        reg_wr->key = smbdirect_mr->mr->rkey;
-       reg_wr->access = writing ?
-                       IB_ACCESS_REMOTE_WRITE | IB_ACCESS_LOCAL_WRITE :
-                       IB_ACCESS_REMOTE_READ;
+       reg_wr->access =
+               (writing ? IB_ACCESS_REMOTE_WRITE | IB_ACCESS_LOCAL_WRITE :
+                          IB_ACCESS_REMOTE_READ) |
+               IB_ACCESS_RELAXED_ORDERING;
 
        /*
         * There is no need for waiting for complemtion on ib_post_send
-- 
2.30.2

Reply via email to