4.18-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Lijun Ou <ouli...@huawei.com>

[ Upstream commit 0c4a0e2987a51415de73180ce9f389a99b3dddd1 ]

Because the data structure of hip08 is little endian, it needs to fix the
immediate field of wqe and cqe into __le32.

Signed-off-by: Lijun Ou <ouli...@huawei.com>
Signed-off-by: Jason Gunthorpe <j...@mellanox.com>
Signed-off-by: Sasha Levin <alexander.le...@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org>
---
 drivers/infiniband/hw/hns/hns_roce_hw_v2.c |   12 ++++++++----
 drivers/infiniband/hw/hns/hns_roce_hw_v2.h |    6 +++---
 2 files changed, 11 insertions(+), 7 deletions(-)

--- a/drivers/infiniband/hw/hns/hns_roce_hw_v2.c
+++ b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c
@@ -273,7 +273,8 @@ static int hns_roce_v2_post_send(struct
                        switch (wr->opcode) {
                        case IB_WR_SEND_WITH_IMM:
                        case IB_WR_RDMA_WRITE_WITH_IMM:
-                               ud_sq_wqe->immtdata = wr->ex.imm_data;
+                               ud_sq_wqe->immtdata =
+                                     cpu_to_le32(be32_to_cpu(wr->ex.imm_data));
                                break;
                        default:
                                ud_sq_wqe->immtdata = 0;
@@ -371,7 +372,8 @@ static int hns_roce_v2_post_send(struct
                        switch (wr->opcode) {
                        case IB_WR_SEND_WITH_IMM:
                        case IB_WR_RDMA_WRITE_WITH_IMM:
-                               rc_sq_wqe->immtdata = wr->ex.imm_data;
+                               rc_sq_wqe->immtdata =
+                                     cpu_to_le32(be32_to_cpu(wr->ex.imm_data));
                                break;
                        case IB_WR_SEND_WITH_INV:
                                rc_sq_wqe->inv_key =
@@ -1931,7 +1933,8 @@ static int hns_roce_v2_poll_one(struct h
                case HNS_ROCE_V2_OPCODE_RDMA_WRITE_IMM:
                        wc->opcode = IB_WC_RECV_RDMA_WITH_IMM;
                        wc->wc_flags = IB_WC_WITH_IMM;
-                       wc->ex.imm_data = cqe->immtdata;
+                       wc->ex.imm_data =
+                               cpu_to_be32(le32_to_cpu(cqe->immtdata));
                        break;
                case HNS_ROCE_V2_OPCODE_SEND:
                        wc->opcode = IB_WC_RECV;
@@ -1940,7 +1943,8 @@ static int hns_roce_v2_poll_one(struct h
                case HNS_ROCE_V2_OPCODE_SEND_WITH_IMM:
                        wc->opcode = IB_WC_RECV;
                        wc->wc_flags = IB_WC_WITH_IMM;
-                       wc->ex.imm_data = cqe->immtdata;
+                       wc->ex.imm_data =
+                               cpu_to_be32(le32_to_cpu(cqe->immtdata));
                        break;
                case HNS_ROCE_V2_OPCODE_SEND_WITH_INV:
                        wc->opcode = IB_WC_RECV;
--- a/drivers/infiniband/hw/hns/hns_roce_hw_v2.h
+++ b/drivers/infiniband/hw/hns/hns_roce_hw_v2.h
@@ -768,7 +768,7 @@ struct hns_roce_v2_cqe {
        __le32  byte_4;
        union {
                __le32 rkey;
-               __be32 immtdata;
+               __le32 immtdata;
        };
        __le32  byte_12;
        __le32  byte_16;
@@ -926,7 +926,7 @@ struct hns_roce_v2_cq_db {
 struct hns_roce_v2_ud_send_wqe {
        __le32  byte_4;
        __le32  msg_len;
-       __be32  immtdata;
+       __le32  immtdata;
        __le32  byte_16;
        __le32  byte_20;
        __le32  byte_24;
@@ -1012,7 +1012,7 @@ struct hns_roce_v2_rc_send_wqe {
        __le32          msg_len;
        union {
                __le32  inv_key;
-               __be32  immtdata;
+               __le32  immtdata;
        };
        __le32          byte_16;
        __le32          byte_20;


Reply via email to