]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - net/sunrpc/xprtrdma/transport.c
net: qrtr: fix len of skb_put_padto in qrtr_node_enqueue
[linux.git] / net / sunrpc / xprtrdma / transport.c
index 160558b4135e667aa8987f4955f751985156cb3c..7395eb2cfdeba3adb3185d8c0a6b483337707637 100644 (file)
@@ -243,16 +243,13 @@ xprt_rdma_connect_worker(struct work_struct *work)
        rc = rpcrdma_ep_connect(&r_xprt->rx_ep, &r_xprt->rx_ia);
        xprt_clear_connecting(xprt);
        if (r_xprt->rx_ep.rep_connected > 0) {
-               if (!xprt_test_and_set_connected(xprt)) {
-                       xprt->stat.connect_count++;
-                       xprt->stat.connect_time += (long)jiffies -
-                                                  xprt->stat.connect_start;
-                       xprt_wake_pending_tasks(xprt, -EAGAIN);
-               }
-       } else {
-               if (xprt_test_and_clear_connected(xprt))
-                       xprt_wake_pending_tasks(xprt, rc);
+               xprt->stat.connect_count++;
+               xprt->stat.connect_time += (long)jiffies -
+                                          xprt->stat.connect_start;
+               xprt_set_connected(xprt);
+               rc = -EAGAIN;
        }
+       xprt_wake_pending_tasks(xprt, rc);
 }
 
 /**
@@ -425,12 +422,6 @@ void xprt_rdma_close(struct rpc_xprt *xprt)
                return;
        rpcrdma_ep_disconnect(ep, ia);
 
-       /* Prepare @xprt for the next connection by reinitializing
-        * its credit grant to one (see RFC 8166, Section 3.3.3).
-        */
-       r_xprt->rx_buf.rb_credits = 1;
-       xprt->cwnd = RPC_CWNDSHIFT;
-
 out:
        xprt->reestablish_timeout = 0;
        ++xprt->connect_cookie;
@@ -450,12 +441,6 @@ xprt_rdma_set_port(struct rpc_xprt *xprt, u16 port)
        struct sockaddr *sap = (struct sockaddr *)&xprt->addr;
        char buf[8];
 
-       dprintk("RPC:       %s: setting port for xprt %p (%s:%s) to %u\n",
-               __func__, xprt,
-               xprt->address_strings[RPC_DISPLAY_ADDR],
-               xprt->address_strings[RPC_DISPLAY_PORT],
-               port);
-
        rpc_set_port(sap, port);
 
        kfree(xprt->address_strings[RPC_DISPLAY_PORT]);
@@ -465,6 +450,9 @@ xprt_rdma_set_port(struct rpc_xprt *xprt, u16 port)
        kfree(xprt->address_strings[RPC_DISPLAY_HEX_PORT]);
        snprintf(buf, sizeof(buf), "%4hx", port);
        xprt->address_strings[RPC_DISPLAY_HEX_PORT] = kstrdup(buf, GFP_KERNEL);
+
+       trace_xprtrdma_op_setport(container_of(xprt, struct rpcrdma_xprt,
+                                              rx_xprt));
 }
 
 /**
@@ -536,13 +524,12 @@ xprt_rdma_connect(struct rpc_xprt *xprt, struct rpc_task *task)
        struct rpcrdma_xprt *r_xprt = rpcx_to_rdmax(xprt);
        unsigned long delay;
 
-       trace_xprtrdma_op_connect(r_xprt);
-
        delay = 0;
        if (r_xprt->rx_ep.rep_connected != 0) {
                delay = xprt_reconnect_delay(xprt);
                xprt_reconnect_backoff(xprt, RPCRDMA_INIT_REEST_TO);
        }
+       trace_xprtrdma_op_connect(r_xprt, delay);
        queue_delayed_work(xprtiod_workqueue, &r_xprt->rx_connect_worker,
                           delay);
 }