RDMA/rxe: Remove support for SMI QPs from rdma_rxe
authorBob Pearson <rpearsonhpe@gmail.com>
Thu, 7 Apr 2022 18:54:17 +0000 (13:54 -0500)
committerJason Gunthorpe <jgg@nvidia.com>
Fri, 8 Apr 2022 17:38:33 +0000 (14:38 -0300)
Currently the rdma_rxe driver supports SMI type QPs in a few places which
is incorrect. RoCE devices never should support SMI QPs.  This commit
removes SMI QP support from the driver.

Link: https://lore.kernel.org/r/20220407185416.16372-1-rpearsonhpe@gmail.com
Signed-off-by: Bob Pearson <rpearsonhpe@gmail.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/sw/rxe/rxe_opcode.c
drivers/infiniband/sw/rxe/rxe_qp.c
drivers/infiniband/sw/rxe/rxe_recv.c
drivers/infiniband/sw/rxe/rxe_req.c
drivers/infiniband/sw/rxe/rxe_resp.c
drivers/infiniband/sw/rxe/rxe_verbs.c
drivers/infiniband/sw/rxe/rxe_verbs.h

index df596ba..d4ba4d5 100644 (file)
@@ -29,7 +29,6 @@ struct rxe_wr_opcode_info rxe_wr_opcode_info[] = {
        [IB_WR_SEND]                                    = {
                .name   = "IB_WR_SEND",
                .mask   = {
-                       [IB_QPT_SMI]    = WR_INLINE_MASK | WR_SEND_MASK,
                        [IB_QPT_GSI]    = WR_INLINE_MASK | WR_SEND_MASK,
                        [IB_QPT_RC]     = WR_INLINE_MASK | WR_SEND_MASK,
                        [IB_QPT_UC]     = WR_INLINE_MASK | WR_SEND_MASK,
@@ -39,7 +38,6 @@ struct rxe_wr_opcode_info rxe_wr_opcode_info[] = {
        [IB_WR_SEND_WITH_IMM]                           = {
                .name   = "IB_WR_SEND_WITH_IMM",
                .mask   = {
-                       [IB_QPT_SMI]    = WR_INLINE_MASK | WR_SEND_MASK,
                        [IB_QPT_GSI]    = WR_INLINE_MASK | WR_SEND_MASK,
                        [IB_QPT_RC]     = WR_INLINE_MASK | WR_SEND_MASK,
                        [IB_QPT_UC]     = WR_INLINE_MASK | WR_SEND_MASK,
index 62acf89..ff58f76 100644 (file)
@@ -63,7 +63,6 @@ int rxe_qp_chk_init(struct rxe_dev *rxe, struct ib_qp_init_attr *init)
        int port_num = init->port_num;
 
        switch (init->qp_type) {
-       case IB_QPT_SMI:
        case IB_QPT_GSI:
        case IB_QPT_RC:
        case IB_QPT_UC:
@@ -81,7 +80,7 @@ int rxe_qp_chk_init(struct rxe_dev *rxe, struct ib_qp_init_attr *init)
        if (rxe_qp_chk_cap(rxe, cap, !!init->srq))
                goto err1;
 
-       if (init->qp_type == IB_QPT_SMI || init->qp_type == IB_QPT_GSI) {
+       if (init->qp_type == IB_QPT_GSI) {
                if (!rdma_is_port_valid(&rxe->ib_dev, port_num)) {
                        pr_warn("invalid port = %d\n", port_num);
                        goto err1;
@@ -89,11 +88,6 @@ int rxe_qp_chk_init(struct rxe_dev *rxe, struct ib_qp_init_attr *init)
 
                port = &rxe->port;
 
-               if (init->qp_type == IB_QPT_SMI && port->qp_smi_index) {
-                       pr_warn("SMI QP exists for port %d\n", port_num);
-                       goto err1;
-               }
-
                if (init->qp_type == IB_QPT_GSI && port->qp_gsi_index) {
                        pr_warn("GSI QP exists for port %d\n", port_num);
                        goto err1;
@@ -167,12 +161,6 @@ static void rxe_qp_init_misc(struct rxe_dev *rxe, struct rxe_qp *qp,
        port                    = &rxe->port;
 
        switch (init->qp_type) {
-       case IB_QPT_SMI:
-               qp->ibqp.qp_num         = 0;
-               port->qp_smi_index      = qpn;
-               qp->attr.port_num       = init->port_num;
-               break;
-
        case IB_QPT_GSI:
                qp->ibqp.qp_num         = 1;
                port->qp_gsi_index      = qpn;
index d09a8b6..f3ad7b6 100644 (file)
@@ -34,7 +34,6 @@ static int check_type_state(struct rxe_dev *rxe, struct rxe_pkt_info *pkt,
                }
                break;
        case IB_QPT_UD:
-       case IB_QPT_SMI:
        case IB_QPT_GSI:
                if (unlikely(pkt_type != IB_OPCODE_UD)) {
                        pr_warn_ratelimited("bad qp type\n");
index ae5fbc7..52c1d8f 100644 (file)
@@ -308,7 +308,6 @@ static int next_opcode(struct rxe_qp *qp, struct rxe_send_wqe *wqe,
        case IB_QPT_UC:
                return next_opcode_uc(qp, opcode, fits);
 
-       case IB_QPT_SMI:
        case IB_QPT_UD:
        case IB_QPT_GSI:
                switch (opcode) {
index 16fc7ea..9dc38f7 100644 (file)
@@ -277,7 +277,6 @@ static enum resp_states check_op_valid(struct rxe_qp *qp,
                break;
 
        case IB_QPT_UD:
-       case IB_QPT_SMI:
        case IB_QPT_GSI:
                break;
 
@@ -819,7 +818,6 @@ static enum resp_states execute(struct rxe_qp *qp, struct rxe_pkt_info *pkt)
 
        if (pkt->mask & RXE_SEND_MASK) {
                if (qp_type(qp) == IB_QPT_UD ||
-                   qp_type(qp) == IB_QPT_SMI ||
                    qp_type(qp) == IB_QPT_GSI) {
                        if (skb->protocol == htons(ETH_P_IP)) {
                                memset(&hdr.reserved, 0,
index 67184b0..58e4412 100644 (file)
@@ -536,7 +536,6 @@ static void init_send_wr(struct rxe_qp *qp, struct rxe_send_wr *wr,
        wr->send_flags = ibwr->send_flags;
 
        if (qp_type(qp) == IB_QPT_UD ||
-           qp_type(qp) == IB_QPT_SMI ||
            qp_type(qp) == IB_QPT_GSI) {
                struct ib_ah *ibah = ud_wr(ibwr)->ah;
 
index adae014..86068d7 100644 (file)
@@ -373,7 +373,6 @@ struct rxe_port {
        spinlock_t              port_lock; /* guard port */
        unsigned int            mtu_cap;
        /* special QPs */
-       u32                     qp_smi_index;
        u32                     qp_gsi_index;
 };