svcrdma: Clean up after converting svc_rdma_recvfrom to rdma_rw API
authorChuck Lever <chuck.lever@oracle.com>
Fri, 23 Jun 2017 21:19:13 +0000 (17:19 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Wed, 12 Jul 2017 19:54:59 +0000 (15:54 -0400)
Clean up: Registration mode details are now handled by the rdma_rw
API, and thus can be removed from svcrdma.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
include/linux/sunrpc/svc_rdma.h
net/sunrpc/xprtrdma/svc_rdma_transport.c

index fd7775f70bb5e058576c2569269e7a51d00eadf1..995c6fe9ee907ff335d6be33ce68a5107abf06c4 100644 (file)
@@ -90,9 +90,6 @@ struct svc_rdma_op_ctxt {
        struct page *pages[RPCSVC_MAXPAGES];
 };
 
-#define        SVCRDMA_DEVCAP_FAST_REG         1       /* fast mr registration */
-#define        SVCRDMA_DEVCAP_READ_W_INV       2       /* read w/ invalidate */
-
 struct svcxprt_rdma {
        struct svc_xprt      sc_xprt;           /* SVC transport structure */
        struct rdma_cm_id    *sc_cm_id;         /* RDMA connection id */
@@ -123,7 +120,6 @@ struct svcxprt_rdma {
        struct ib_qp         *sc_qp;
        struct ib_cq         *sc_rq_cq;
        struct ib_cq         *sc_sq_cq;
-       u32                  sc_dev_caps;       /* distilled device caps */
 
        spinlock_t           sc_lock;           /* transport lock */
 
index 75bd11f2b69eefa495ee260a421759d0e33f7caf..e660d4965b18aa2b40af11576405d4d14c283d9d 100644 (file)
@@ -783,7 +783,7 @@ static struct svc_xprt *svc_rdma_accept(struct svc_xprt *xprt)
        memset(&qp_attr, 0, sizeof qp_attr);
        qp_attr.event_handler = qp_event_handler;
        qp_attr.qp_context = &newxprt->sc_xprt;
-       qp_attr.port_num = newxprt->sc_cm_id->port_num;
+       qp_attr.port_num = newxprt->sc_port_num;
        qp_attr.cap.max_rdma_ctxs = newxprt->sc_max_requests;
        qp_attr.cap.max_send_wr = newxprt->sc_sq_depth;
        qp_attr.cap.max_recv_wr = newxprt->sc_rq_depth;
@@ -807,43 +807,12 @@ static struct svc_xprt *svc_rdma_accept(struct svc_xprt *xprt)
        }
        newxprt->sc_qp = newxprt->sc_cm_id->qp;
 
-       /*
-        * Use the most secure set of MR resources based on the
-        * transport type and available memory management features in
-        * the device. Here's the table implemented below:
-        *
-        *              Fast    Global  DMA     Remote WR
-        *              Reg     LKEY    MR      Access
-        *              Sup'd   Sup'd   Needed  Needed
-        *
-        * IWARP        N       N       Y       Y
-        *              N       Y       Y       Y
-        *              Y       N       Y       N
-        *              Y       Y       N       -
-        *
-        * IB           N       N       Y       N
-        *              N       Y       N       -
-        *              Y       N       Y       N
-        *              Y       Y       N       -
-        *
-        * NB:  iWARP requires remote write access for the data sink
-        *      of an RDMA_READ. IB does not.
-        */
-       if (dev->attrs.device_cap_flags & IB_DEVICE_MEM_MGT_EXTENSIONS) {
-               newxprt->sc_dev_caps |= SVCRDMA_DEVCAP_FAST_REG;
-       } else
+       if (!(dev->attrs.device_cap_flags & IB_DEVICE_MEM_MGT_EXTENSIONS))
                newxprt->sc_snd_w_inv = false;
-
-       /*
-        * Determine if a DMA MR is required and if so, what privs are required
-        */
-       if (!rdma_protocol_iwarp(dev, newxprt->sc_cm_id->port_num) &&
-           !rdma_ib_or_roce(dev, newxprt->sc_cm_id->port_num))
+       if (!rdma_protocol_iwarp(dev, newxprt->sc_port_num) &&
+           !rdma_ib_or_roce(dev, newxprt->sc_port_num))
                goto errout;
 
-       if (rdma_protocol_iwarp(dev, newxprt->sc_cm_id->port_num))
-               newxprt->sc_dev_caps |= SVCRDMA_DEVCAP_READ_W_INV;
-
        /* Post receive buffers */
        for (i = 0; i < newxprt->sc_max_requests; i++) {
                ret = svc_rdma_post_recv(newxprt, GFP_KERNEL);