Merge tag 'iwlwifi-next-for-kalle-2014-12-30' of https://git.kernel.org/pub/scm/linux...
[cascardo/linux.git] / net / sunrpc / xprtsock.c
index 3b305ab..87ce7e8 100644 (file)
@@ -75,7 +75,7 @@ static unsigned int xs_tcp_fin_timeout __read_mostly = XS_TCP_LINGER_TO;
  * someone else's file names!
  */
 
-#ifdef RPC_DEBUG
+#if IS_ENABLED(CONFIG_SUNRPC_DEBUG)
 
 static unsigned int min_slot_table_size = RPC_MIN_SLOT_TABLE;
 static unsigned int max_slot_table_size = RPC_MAX_SLOT_TABLE;
@@ -186,7 +186,7 @@ static struct ctl_table sunrpc_table[] = {
  */
 #define XS_IDLE_DISC_TO                (5U * 60 * HZ)
 
-#ifdef RPC_DEBUG
+#if IS_ENABLED(CONFIG_SUNRPC_DEBUG)
 # undef  RPC_DEBUG_DATA
 # define RPCDBG_FACILITY       RPCDBG_TRANS
 #endif
@@ -216,65 +216,6 @@ static inline void xs_pktdump(char *msg, u32 *packet, unsigned int count)
 }
 #endif
 
-struct sock_xprt {
-       struct rpc_xprt         xprt;
-
-       /*
-        * Network layer
-        */
-       struct socket *         sock;
-       struct sock *           inet;
-
-       /*
-        * State of TCP reply receive
-        */
-       __be32                  tcp_fraghdr,
-                               tcp_xid,
-                               tcp_calldir;
-
-       u32                     tcp_offset,
-                               tcp_reclen;
-
-       unsigned long           tcp_copied,
-                               tcp_flags;
-
-       /*
-        * Connection of transports
-        */
-       struct delayed_work     connect_worker;
-       struct sockaddr_storage srcaddr;
-       unsigned short          srcport;
-
-       /*
-        * UDP socket buffer size parameters
-        */
-       size_t                  rcvsize,
-                               sndsize;
-
-       /*
-        * Saved socket callback addresses
-        */
-       void                    (*old_data_ready)(struct sock *);
-       void                    (*old_state_change)(struct sock *);
-       void                    (*old_write_space)(struct sock *);
-       void                    (*old_error_report)(struct sock *);
-};
-
-/*
- * TCP receive state flags
- */
-#define TCP_RCV_LAST_FRAG      (1UL << 0)
-#define TCP_RCV_COPY_FRAGHDR   (1UL << 1)
-#define TCP_RCV_COPY_XID       (1UL << 2)
-#define TCP_RCV_COPY_DATA      (1UL << 3)
-#define TCP_RCV_READ_CALLDIR   (1UL << 4)
-#define TCP_RCV_COPY_CALLDIR   (1UL << 5)
-
-/*
- * TCP RPC flags
- */
-#define TCP_RPC_REPLY          (1UL << 6)
-
 static inline struct rpc_xprt *xprt_from_sock(struct sock *sk)
 {
        return (struct rpc_xprt *) sk->sk_user_data;
@@ -1415,6 +1356,7 @@ static int xs_tcp_data_recv(read_descriptor_t *rd_desc, struct sk_buff *skb, uns
 
        dprintk("RPC:       xs_tcp_data_recv started\n");
        do {
+               trace_xs_tcp_data_recv(transport);
                /* Read in a new fragment marker if necessary */
                /* Can we ever really expect to get completely empty fragments? */
                if (transport->tcp_flags & TCP_RCV_COPY_FRAGHDR) {
@@ -1439,6 +1381,7 @@ static int xs_tcp_data_recv(read_descriptor_t *rd_desc, struct sk_buff *skb, uns
                /* Skip over any trailing bytes on short reads */
                xs_tcp_read_discard(transport, &desc);
        } while (desc.count);
+       trace_xs_tcp_data_recv(transport);
        dprintk("RPC:       xs_tcp_data_recv done\n");
        return len - desc.count;
 }
@@ -1454,12 +1397,15 @@ static void xs_tcp_data_ready(struct sock *sk)
        struct rpc_xprt *xprt;
        read_descriptor_t rd_desc;
        int read;
+       unsigned long total = 0;
 
        dprintk("RPC:       xs_tcp_data_ready...\n");
 
        read_lock_bh(&sk->sk_callback_lock);
-       if (!(xprt = xprt_from_sock(sk)))
+       if (!(xprt = xprt_from_sock(sk))) {
+               read = 0;
                goto out;
+       }
        /* Any data means we had a useful conversation, so
         * the we don't need to delay the next reconnect
         */
@@ -1471,8 +1417,11 @@ static void xs_tcp_data_ready(struct sock *sk)
        do {
                rd_desc.count = 65536;
                read = tcp_read_sock(sk, &rd_desc, xs_tcp_data_recv);
+               if (read > 0)
+                       total += read;
        } while (read > 0);
 out:
+       trace_xs_tcp_data_ready(xprt, read, total);
        read_unlock_bh(&sk->sk_callback_lock);
 }
 
@@ -3042,7 +2991,7 @@ static struct xprt_class  xs_bc_tcp_transport = {
  */
 int init_socket_xprt(void)
 {
-#ifdef RPC_DEBUG
+#if IS_ENABLED(CONFIG_SUNRPC_DEBUG)
        if (!sunrpc_table_header)
                sunrpc_table_header = register_sysctl_table(sunrpc_table);
 #endif
@@ -3061,7 +3010,7 @@ int init_socket_xprt(void)
  */
 void cleanup_socket_xprt(void)
 {
-#ifdef RPC_DEBUG
+#if IS_ENABLED(CONFIG_SUNRPC_DEBUG)
        if (sunrpc_table_header) {
                unregister_sysctl_table(sunrpc_table_header);
                sunrpc_table_header = NULL;