mirror of
https://github.com/torvalds/linux
synced 2024-10-04 18:33:42 +00:00
RDMA/qedr: Fix endian problems around imm_data
The double swap matches what user space rdma-core does to imm_data. wc->imm_data is not used in the kernel so this change has no practical impact. Acked-by: Michal Kalderon <michal.kalderon@cavium.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
This commit is contained in:
parent
ccb8a29e7d
commit
7bed7ebcb7
|
@ -3039,7 +3039,7 @@ static int __qedr_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
|
||||||
swqe->wqe_size = 2;
|
swqe->wqe_size = 2;
|
||||||
swqe2 = qed_chain_produce(&qp->sq.pbl);
|
swqe2 = qed_chain_produce(&qp->sq.pbl);
|
||||||
|
|
||||||
swqe->inv_key_or_imm_data = cpu_to_le32(wr->ex.imm_data);
|
swqe->inv_key_or_imm_data = cpu_to_le32(be32_to_cpu(wr->ex.imm_data));
|
||||||
length = qedr_prepare_sq_send_data(dev, qp, swqe, swqe2,
|
length = qedr_prepare_sq_send_data(dev, qp, swqe, swqe2,
|
||||||
wr, bad_wr);
|
wr, bad_wr);
|
||||||
swqe->length = cpu_to_le32(length);
|
swqe->length = cpu_to_le32(length);
|
||||||
|
@ -3590,7 +3590,7 @@ static inline int qedr_set_ok_cqe_resp_wc(struct rdma_cqe_responder *resp,
|
||||||
wc->byte_len = le32_to_cpu(resp->length);
|
wc->byte_len = le32_to_cpu(resp->length);
|
||||||
|
|
||||||
if (resp->flags & QEDR_RESP_IMM) {
|
if (resp->flags & QEDR_RESP_IMM) {
|
||||||
wc->ex.imm_data = le32_to_cpu(resp->imm_data_or_inv_r_Key);
|
wc->ex.imm_data = cpu_to_be32(le32_to_cpu(resp->imm_data_or_inv_r_Key));
|
||||||
wc->wc_flags |= IB_WC_WITH_IMM;
|
wc->wc_flags |= IB_WC_WITH_IMM;
|
||||||
|
|
||||||
if (resp->flags & QEDR_RESP_RDMA)
|
if (resp->flags & QEDR_RESP_RDMA)
|
||||||
|
|
Loading…
Reference in a new issue