diff options
| -rw-r--r-- | drivers/infiniband/hw/mthca/mthca_qp.c | 40 |
1 files changed, 22 insertions, 18 deletions
diff --git a/drivers/infiniband/hw/mthca/mthca_qp.c b/drivers/infiniband/hw/mthca/mthca_qp.c index 43d4d771f2d2..b5bd704ca55d 100644 --- a/drivers/infiniband/hw/mthca/mthca_qp.c +++ b/drivers/infiniband/hw/mthca/mthca_qp.c | |||
| @@ -1599,6 +1599,24 @@ static __always_inline void set_atomic_seg(struct mthca_atomic_seg *aseg, | |||
| 1599 | 1599 | ||
| 1600 | } | 1600 | } |
| 1601 | 1601 | ||
| 1602 | static void set_tavor_ud_seg(struct mthca_tavor_ud_seg *useg, | ||
| 1603 | struct ib_send_wr *wr) | ||
| 1604 | { | ||
| 1605 | useg->lkey = cpu_to_be32(to_mah(wr->wr.ud.ah)->key); | ||
| 1606 | useg->av_addr = cpu_to_be64(to_mah(wr->wr.ud.ah)->avdma); | ||
| 1607 | useg->dqpn = cpu_to_be32(wr->wr.ud.remote_qpn); | ||
| 1608 | useg->qkey = cpu_to_be32(wr->wr.ud.remote_qkey); | ||
| 1609 | |||
| 1610 | } | ||
| 1611 | |||
| 1612 | static void set_arbel_ud_seg(struct mthca_arbel_ud_seg *useg, | ||
| 1613 | struct ib_send_wr *wr) | ||
| 1614 | { | ||
| 1615 | memcpy(useg->av, to_mah(wr->wr.ud.ah)->av, MTHCA_AV_SIZE); | ||
| 1616 | useg->dqpn = cpu_to_be32(wr->wr.ud.remote_qpn); | ||
| 1617 | useg->qkey = cpu_to_be32(wr->wr.ud.remote_qkey); | ||
| 1618 | } | ||
| 1619 | |||
| 1602 | int mthca_tavor_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr, | 1620 | int mthca_tavor_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr, |
| 1603 | struct ib_send_wr **bad_wr) | 1621 | struct ib_send_wr **bad_wr) |
| 1604 | { | 1622 | { |
| @@ -1707,16 +1725,8 @@ int mthca_tavor_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr, | |||
| 1707 | break; | 1725 | break; |
| 1708 | 1726 | ||
| 1709 | case UD: | 1727 | case UD: |
| 1710 | ((struct mthca_tavor_ud_seg *) wqe)->lkey = | 1728 | set_tavor_ud_seg(wqe, wr); |
| 1711 | cpu_to_be32(to_mah(wr->wr.ud.ah)->key); | 1729 | wqe += sizeof (struct mthca_tavor_ud_seg); |
| 1712 | ((struct mthca_tavor_ud_seg *) wqe)->av_addr = | ||
| 1713 | cpu_to_be64(to_mah(wr->wr.ud.ah)->avdma); | ||
| 1714 | ((struct mthca_tavor_ud_seg *) wqe)->dqpn = | ||
| 1715 | cpu_to_be32(wr->wr.ud.remote_qpn); | ||
| 1716 | ((struct mthca_tavor_ud_seg *) wqe)->qkey = | ||
| 1717 | cpu_to_be32(wr->wr.ud.remote_qkey); | ||
| 1718 | |||
| 1719 | wqe += sizeof (struct mthca_tavor_ud_seg); | ||
| 1720 | size += sizeof (struct mthca_tavor_ud_seg) / 16; | 1730 | size += sizeof (struct mthca_tavor_ud_seg) / 16; |
| 1721 | break; | 1731 | break; |
| 1722 | 1732 | ||
| @@ -2064,14 +2074,8 @@ int mthca_arbel_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr, | |||
| 2064 | break; | 2074 | break; |
| 2065 | 2075 | ||
| 2066 | case UD: | 2076 | case UD: |
| 2067 | memcpy(((struct mthca_arbel_ud_seg *) wqe)->av, | 2077 | set_arbel_ud_seg(wqe, wr); |
| 2068 | to_mah(wr->wr.ud.ah)->av, MTHCA_AV_SIZE); | 2078 | wqe += sizeof (struct mthca_arbel_ud_seg); |
| 2069 | ((struct mthca_arbel_ud_seg *) wqe)->dqpn = | ||
| 2070 | cpu_to_be32(wr->wr.ud.remote_qpn); | ||
| 2071 | ((struct mthca_arbel_ud_seg *) wqe)->qkey = | ||
| 2072 | cpu_to_be32(wr->wr.ud.remote_qkey); | ||
| 2073 | |||
| 2074 | wqe += sizeof (struct mthca_arbel_ud_seg); | ||
| 2075 | size += sizeof (struct mthca_arbel_ud_seg) / 16; | 2079 | size += sizeof (struct mthca_arbel_ud_seg) / 16; |
| 2076 | break; | 2080 | break; |
| 2077 | 2081 | ||
