OSDN Git Service

RDMA/hns: Update the data type of immediate data
authorLijun Ou <oulijun@huawei.com>
Wed, 25 Jul 2018 07:29:40 +0000 (15:29 +0800)
committerJason Gunthorpe <jgg@mellanox.com>
Fri, 27 Jul 2018 02:10:37 +0000 (20:10 -0600)
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 <oulijun@huawei.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/hw/hns/hns_roce_hw_v2.c
drivers/infiniband/hw/hns/hns_roce_hw_v2.h

index 948b060..6fa12f2 100644 (file)
@@ -272,7 +272,8 @@ static int hns_roce_v2_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
                        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;
@@ -370,7 +371,8 @@ static int hns_roce_v2_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
                        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 =
@@ -2178,7 +2180,8 @@ static int hns_roce_v2_poll_one(struct hns_roce_cq *hr_cq,
                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;
@@ -2187,7 +2190,8 @@ static int hns_roce_v2_poll_one(struct hns_roce_cq *hr_cq,
                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;
index df95b35..f40d8c2 100644 (file)
@@ -772,7 +772,7 @@ struct hns_roce_v2_cqe {
        __le32  byte_4;
        union {
                __le32 rkey;
-               __be32 immtdata;
+               __le32 immtdata;
        };
        __le32  byte_12;
        __le32  byte_16;
@@ -930,7 +930,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;
@@ -1016,7 +1016,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;