Commit cfc0312d authored by Bob Pearson's avatar Bob Pearson Committed by Jason Gunthorpe

RDMA/rxe: Move AV from rxe_send_wqe to rxe_send_wr

Move the struct rxe_av av from struct rxe_send_wqe to struct rxe_send_wr
placing it in wr.ud at the same offset as it was previously. This has the
effect of increasing the size of struct rxe_send_wr while keeping the size
of struct rxe_send_wqe the same. This better reflects the use of this
field which is only used for UD sends. This change has no effect on ABI
compatibility so the modified rxe driver will operate with older versions
of rdma-core.

Link: https://lore.kernel.org/r/20211007204051.10086-2-rpearsonhpe@gmail.comSigned-off-by: default avatarBob Pearson <rpearsonhpe@gmail.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@nvidia.com>
parent f4e56ec4
...@@ -107,5 +107,5 @@ struct rxe_av *rxe_get_av(struct rxe_pkt_info *pkt) ...@@ -107,5 +107,5 @@ struct rxe_av *rxe_get_av(struct rxe_pkt_info *pkt)
if (qp_type(pkt->qp) == IB_QPT_RC || qp_type(pkt->qp) == IB_QPT_UC) if (qp_type(pkt->qp) == IB_QPT_RC || qp_type(pkt->qp) == IB_QPT_UC)
return &pkt->qp->pri_av; return &pkt->qp->pri_av;
return (pkt->wqe) ? &pkt->wqe->av : NULL; return (pkt->wqe) ? &pkt->wqe->wr.wr.ud.av : NULL;
} }
...@@ -581,7 +581,8 @@ static void init_send_wqe(struct rxe_qp *qp, const struct ib_send_wr *ibwr, ...@@ -581,7 +581,8 @@ static void init_send_wqe(struct rxe_qp *qp, const struct ib_send_wr *ibwr,
if (qp_type(qp) == IB_QPT_UD || if (qp_type(qp) == IB_QPT_UD ||
qp_type(qp) == IB_QPT_SMI || qp_type(qp) == IB_QPT_SMI ||
qp_type(qp) == IB_QPT_GSI) qp_type(qp) == IB_QPT_GSI)
memcpy(&wqe->av, &to_rah(ud_wr(ibwr)->ah)->av, sizeof(wqe->av)); memcpy(&wqe->wr.wr.ud.av, &to_rah(ud_wr(ibwr)->ah)->av,
sizeof(struct rxe_av));
if (unlikely(ibwr->send_flags & IB_SEND_INLINE)) if (unlikely(ibwr->send_flags & IB_SEND_INLINE))
copy_inline_data_to_wqe(wqe, ibwr); copy_inline_data_to_wqe(wqe, ibwr);
......
...@@ -98,6 +98,9 @@ struct rxe_send_wr { ...@@ -98,6 +98,9 @@ struct rxe_send_wr {
__u32 remote_qpn; __u32 remote_qpn;
__u32 remote_qkey; __u32 remote_qkey;
__u16 pkey_index; __u16 pkey_index;
__u16 reserved;
__u32 pad[5];
struct rxe_av av;
} ud; } ud;
struct { struct {
__aligned_u64 addr; __aligned_u64 addr;
...@@ -148,7 +151,6 @@ struct rxe_dma_info { ...@@ -148,7 +151,6 @@ struct rxe_dma_info {
struct rxe_send_wqe { struct rxe_send_wqe {
struct rxe_send_wr wr; struct rxe_send_wr wr;
struct rxe_av av;
__u32 status; __u32 status;
__u32 state; __u32 state;
__aligned_u64 iova; __aligned_u64 iova;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment