OSDN Git Service

svcrdma: Reduce max_send_sges
[uclinux-h8/linux.git] / net / sunrpc / xprtrdma / svc_rdma_transport.c
index 2848caf..2f7ec89 100644 (file)
@@ -475,10 +475,12 @@ static struct svc_xprt *svc_rdma_accept(struct svc_xprt *xprt)
 
        /* Qualify the transport resource defaults with the
         * capabilities of this particular device */
-       newxprt->sc_max_send_sges = dev->attrs.max_send_sge;
-       /* transport hdr, head iovec, one page list entry, tail iovec */
-       if (newxprt->sc_max_send_sges < 4) {
-               pr_err("svcrdma: too few Send SGEs available (%d)\n",
+       /* Transport header, head iovec, tail iovec */
+       newxprt->sc_max_send_sges = 3;
+       /* Add one SGE per page list entry */
+       newxprt->sc_max_send_sges += svcrdma_max_req_size / PAGE_SIZE;
+       if (newxprt->sc_max_send_sges > dev->attrs.max_send_sge) {
+               pr_err("svcrdma: too few Send SGEs available (%d needed)\n",
                       newxprt->sc_max_send_sges);
                goto errout;
        }