RDMA/mlx5: Enable querying AH for XRC QP types
authorAvihai Horon <avihaih@nvidia.com>
Sun, 15 Nov 2020 12:14:24 +0000 (14:14 +0200)
committerJason Gunthorpe <jgg@nvidia.com>
Thu, 26 Nov 2020 15:58:19 +0000 (11:58 -0400)
Address handle is set for connected QP types such as RC and UC, and thus
can also be queried.

Since XRC QP types INI and TGT are connected, it should be possible to
query their address handle as well.

Until now it was not the case, and although the firmware supported it, the
driver allowed querying the address handle only for RC and UC.

Hence, we enable it now for INI and TGT QPs as well.

Link: https://lore.kernel.org/r/20201115121425.139833-2-leon@kernel.org
Reviewed-by: Maor Gottlieb <maorg@nvidia.com>
Signed-off-by: Avihai Horon <avihaih@nvidia.com>
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/hw/mlx5/qp.c

index 8944249092663c204a5775ea9f703109fb934c74..8d40c929b2f414efbc5495840df9334696bc8e42 100644 (file)
@@ -4555,7 +4555,9 @@ static int query_qp_attr(struct mlx5_ib_dev *dev, struct mlx5_ib_qp *qp,
        pri_path = MLX5_ADDR_OF(qpc, qpc, primary_address_path);
        alt_path = MLX5_ADDR_OF(qpc, qpc, secondary_address_path);
 
-       if (qp->ibqp.qp_type == IB_QPT_RC || qp->ibqp.qp_type == IB_QPT_UC) {
+       if (qp->ibqp.qp_type == IB_QPT_RC || qp->ibqp.qp_type == IB_QPT_UC ||
+           qp->ibqp.qp_type == IB_QPT_XRC_INI ||
+           qp->ibqp.qp_type == IB_QPT_XRC_TGT) {
                to_rdma_ah_attr(dev, &qp_attr->ah_attr, pri_path);
                to_rdma_ah_attr(dev, &qp_attr->alt_ah_attr, alt_path);
                qp_attr->alt_pkey_index = MLX5_GET(ads, alt_path, pkey_index);