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 da2e867a1ed93b2447e3e6cb0a3cc1e621c05458..85580ea5eed0d0b65e94570edd75d1ef9bb53903 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 c49ba03819647fb8e16fded1030577ee21a0e984..4233fd9edfd18e0ae2633453a7c5920d5a8a65da 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 e283c2220abaf1ae5f2babce9b959c2ccc400aa5..2f1ebbe964345d9fe3cf84e65ec91647b2468e0f 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;