mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 02:21:52 +09:00
RDMA/vmw_pvrdma: Return the correct opcode when creating WR
[ Upstream commit6325e01b6c] Since the IB_WR_REG_MR opcode value changed, let's set the PVRDMA device opcodes explicitly. Reported-by: Ruishuang Wang <ruishuangw@vmware.com> Fixes:9a59739bd0("IB/rxe: Revise the ib_wr_opcode enum") Cc: stable@vger.kernel.org Reviewed-by: Bryan Tan <bryantan@vmware.com> Reviewed-by: Ruishuang Wang <ruishuangw@vmware.com> Reviewed-by: Vishnu Dasa <vdasa@vmware.com> Signed-off-by: Adit Ranadive <aditr@vmware.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com> Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
34572dadff
commit
fc038565f1
@@ -407,7 +407,40 @@ static inline enum ib_qp_state pvrdma_qp_state_to_ib(enum pvrdma_qp_state state)
|
||||
|
||||
static inline enum pvrdma_wr_opcode ib_wr_opcode_to_pvrdma(enum ib_wr_opcode op)
|
||||
{
|
||||
return (enum pvrdma_wr_opcode)op;
|
||||
switch (op) {
|
||||
case IB_WR_RDMA_WRITE:
|
||||
return PVRDMA_WR_RDMA_WRITE;
|
||||
case IB_WR_RDMA_WRITE_WITH_IMM:
|
||||
return PVRDMA_WR_RDMA_WRITE_WITH_IMM;
|
||||
case IB_WR_SEND:
|
||||
return PVRDMA_WR_SEND;
|
||||
case IB_WR_SEND_WITH_IMM:
|
||||
return PVRDMA_WR_SEND_WITH_IMM;
|
||||
case IB_WR_RDMA_READ:
|
||||
return PVRDMA_WR_RDMA_READ;
|
||||
case IB_WR_ATOMIC_CMP_AND_SWP:
|
||||
return PVRDMA_WR_ATOMIC_CMP_AND_SWP;
|
||||
case IB_WR_ATOMIC_FETCH_AND_ADD:
|
||||
return PVRDMA_WR_ATOMIC_FETCH_AND_ADD;
|
||||
case IB_WR_LSO:
|
||||
return PVRDMA_WR_LSO;
|
||||
case IB_WR_SEND_WITH_INV:
|
||||
return PVRDMA_WR_SEND_WITH_INV;
|
||||
case IB_WR_RDMA_READ_WITH_INV:
|
||||
return PVRDMA_WR_RDMA_READ_WITH_INV;
|
||||
case IB_WR_LOCAL_INV:
|
||||
return PVRDMA_WR_LOCAL_INV;
|
||||
case IB_WR_REG_MR:
|
||||
return PVRDMA_WR_FAST_REG_MR;
|
||||
case IB_WR_MASKED_ATOMIC_CMP_AND_SWP:
|
||||
return PVRDMA_WR_MASKED_ATOMIC_CMP_AND_SWP;
|
||||
case IB_WR_MASKED_ATOMIC_FETCH_AND_ADD:
|
||||
return PVRDMA_WR_MASKED_ATOMIC_FETCH_AND_ADD;
|
||||
case IB_WR_REG_SIG_MR:
|
||||
return PVRDMA_WR_REG_SIG_MR;
|
||||
default:
|
||||
return PVRDMA_WR_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
static inline enum ib_wc_status pvrdma_wc_status_to_ib(
|
||||
|
||||
@@ -695,6 +695,12 @@ int pvrdma_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
|
||||
wr->opcode == IB_WR_RDMA_WRITE_WITH_IMM)
|
||||
wqe_hdr->ex.imm_data = wr->ex.imm_data;
|
||||
|
||||
if (unlikely(wqe_hdr->opcode == PVRDMA_WR_ERROR)) {
|
||||
*bad_wr = wr;
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
switch (qp->ibqp.qp_type) {
|
||||
case IB_QPT_GSI:
|
||||
case IB_QPT_UD:
|
||||
|
||||
@@ -76,6 +76,7 @@ enum pvrdma_wr_opcode {
|
||||
PVRDMA_WR_MASKED_ATOMIC_FETCH_AND_ADD,
|
||||
PVRDMA_WR_BIND_MW,
|
||||
PVRDMA_WR_REG_SIG_MR,
|
||||
PVRDMA_WR_ERROR,
|
||||
};
|
||||
|
||||
enum pvrdma_wc_status {
|
||||
|
||||
Reference in New Issue
Block a user