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>
        [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,
        [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,
 
        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:
        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;
 
                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;
        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;
 
                }
                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");
 
        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) {
 
                break;
 
        case IB_QPT_UD:
-       case IB_QPT_SMI:
        case IB_QPT_GSI:
                break;
 
 
        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,
 
        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;
 
 
        spinlock_t              port_lock; /* guard port */
        unsigned int            mtu_cap;
        /* special QPs */
-       u32                     qp_smi_index;
        u32                     qp_gsi_index;
 };