RDMA/rxe: Move AV from rxe_send_wqe to rxe_send_wr
authorBob Pearson <rpearsonhpe@gmail.com>
Thu, 7 Oct 2021 20:40:47 +0000 (15:40 -0500)
committerJason Gunthorpe <jgg@nvidia.com>
Tue, 12 Oct 2021 16:25:26 +0000 (13:25 -0300)
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.com
Signed-off-by: Bob Pearson <rpearsonhpe@gmail.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/sw/rxe/rxe_av.c
drivers/infiniband/sw/rxe/rxe_verbs.c
include/uapi/rdma/rdma_user_rxe.h

index da2e867..85580ea 100644 (file)
@@ -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)
                return &pkt->qp->pri_av;
 
-       return (pkt->wqe) ? &pkt->wqe->av : NULL;
+       return (pkt->wqe) ? &pkt->wqe->wr.wr.ud.av : NULL;
 }
index c49ba03..4233fd9 100644 (file)
@@ -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 ||
            qp_type(qp) == IB_QPT_SMI ||
            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))
                copy_inline_data_to_wqe(wqe, ibwr);
index e283c22..2f1ebbe 100644 (file)
@@ -98,6 +98,9 @@ struct rxe_send_wr {
                        __u32   remote_qpn;
                        __u32   remote_qkey;
                        __u16   pkey_index;
+                       __u16   reserved;
+                       __u32   pad[5];
+                       struct rxe_av av;
                } ud;
                struct {
                        __aligned_u64   addr;
@@ -148,7 +151,6 @@ struct rxe_dma_info {
 
 struct rxe_send_wqe {
        struct rxe_send_wr      wr;
-       struct rxe_av           av;
        __u32                   status;
        __u32                   state;
        __aligned_u64           iova;