Merge tag 'spi-v4.4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi
[firefly-linux-kernel-4.4.55.git] / net / ipv4 / tcp.c
index b8b8fa184f7576d238b7c7c0b71b7f9c4acca4ee..0cfa7c0c1e80dae18b3aa51c3d71d021dd8b4f84 100644 (file)
@@ -388,6 +388,7 @@ void tcp_init_sock(struct sock *sk)
 
        icsk->icsk_rto = TCP_TIMEOUT_INIT;
        tp->mdev_us = jiffies_to_usecs(TCP_TIMEOUT_INIT);
+       tp->rtt_min[0].rtt = ~0U;
 
        /* So many TCP implementations out there (incorrectly) count the
         * initial SYN frame in their delayed-ACK and congestion control
@@ -900,7 +901,8 @@ static ssize_t do_tcp_sendpages(struct sock *sk, struct page *page, int offset,
         */
        if (((1 << sk->sk_state) & ~(TCPF_ESTABLISHED | TCPF_CLOSE_WAIT)) &&
            !tcp_passive_fastopen(sk)) {
-               if ((err = sk_stream_wait_connect(sk, &timeo)) != 0)
+               err = sk_stream_wait_connect(sk, &timeo);
+               if (err != 0)
                        goto out_err;
        }
 
@@ -967,7 +969,8 @@ new_segment:
 
                copied += copy;
                offset += copy;
-               if (!(size -= copy)) {
+               size -= copy;
+               if (!size) {
                        tcp_tx_timestamp(sk, skb);
                        goto out;
                }
@@ -988,7 +991,8 @@ wait_for_memory:
                tcp_push(sk, flags & ~MSG_MORE, mss_now,
                         TCP_NAGLE_PUSH, size_goal);
 
-               if ((err = sk_stream_wait_memory(sk, &timeo)) != 0)
+               err = sk_stream_wait_memory(sk, &timeo);
+               if (err != 0)
                        goto do_error;
 
                mss_now = tcp_send_mss(sk, &size_goal, flags);
@@ -1111,7 +1115,8 @@ int tcp_sendmsg(struct sock *sk, struct msghdr *msg, size_t size)
         */
        if (((1 << sk->sk_state) & ~(TCPF_ESTABLISHED | TCPF_CLOSE_WAIT)) &&
            !tcp_passive_fastopen(sk)) {
-               if ((err = sk_stream_wait_connect(sk, &timeo)) != 0)
+               err = sk_stream_wait_connect(sk, &timeo);
+               if (err != 0)
                        goto do_error;
        }
 
@@ -1267,7 +1272,8 @@ wait_for_memory:
                        tcp_push(sk, flags & ~MSG_MORE, mss_now,
                                 TCP_NAGLE_PUSH, size_goal);
 
-               if ((err = sk_stream_wait_memory(sk, &timeo)) != 0)
+               err = sk_stream_wait_memory(sk, &timeo);
+               if (err != 0)
                        goto do_error;
 
                mss_now = tcp_send_mss(sk, &size_goal, flags);
@@ -1767,7 +1773,8 @@ int tcp_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, int nonblock,
 
                        /* __ Restore normal policy in scheduler __ */
 
-                       if ((chunk = len - tp->ucopy.len) != 0) {
+                       chunk = len - tp->ucopy.len;
+                       if (chunk != 0) {
                                NET_ADD_STATS_USER(sock_net(sk), LINUX_MIB_TCPDIRECTCOPYFROMBACKLOG, chunk);
                                len -= chunk;
                                copied += chunk;
@@ -1778,7 +1785,8 @@ int tcp_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, int nonblock,
 do_prequeue:
                                tcp_prequeue_process(sk);
 
-                               if ((chunk = len - tp->ucopy.len) != 0) {
+                               chunk = len - tp->ucopy.len;
+                               if (chunk != 0) {
                                        NET_ADD_STATS_USER(sock_net(sk), LINUX_MIB_TCPDIRECTCOPYFROMPREQUEUE, chunk);
                                        len -= chunk;
                                        copied += chunk;
@@ -2230,7 +2238,8 @@ int tcp_disconnect(struct sock *sk, int flags)
        sk->sk_shutdown = 0;
        sock_reset_flag(sk, SOCK_DONE);
        tp->srtt_us = 0;
-       if ((tp->write_seq += tp->max_window + 2) == 0)
+       tp->write_seq += tp->max_window + 2;
+       if (tp->write_seq == 0)
                tp->write_seq = 1;
        icsk->icsk_backoff = 0;
        tp->snd_cwnd = 2;
@@ -2253,13 +2262,6 @@ int tcp_disconnect(struct sock *sk, int flags)
 }
 EXPORT_SYMBOL(tcp_disconnect);
 
-void tcp_sock_destruct(struct sock *sk)
-{
-       inet_sock_destruct(sk);
-
-       kfree(inet_csk(sk)->icsk_accept_queue.fastopenq);
-}
-
 static inline bool tcp_can_repair_sock(const struct sock *sk)
 {
        return ns_capable(sock_net(sk)->user_ns, CAP_NET_ADMIN) &&
@@ -2581,7 +2583,7 @@ static int do_tcp_setsockopt(struct sock *sk, int level,
                    TCPF_LISTEN))) {
                        tcp_fastopen_init_key_once(true);
 
-                       err = fastopen_init_queue(sk, val);
+                       fastopen_queue_tune(sk, val);
                } else {
                        err = -EINVAL;
                }
@@ -2849,10 +2851,7 @@ static int do_tcp_getsockopt(struct sock *sk, int level,
                break;
 
        case TCP_FASTOPEN:
-               if (icsk->icsk_accept_queue.fastopenq)
-                       val = icsk->icsk_accept_queue.fastopenq->max_qlen;
-               else
-                       val = 0;
+               val = icsk->icsk_accept_queue.fastopenq.max_qlen;
                break;
 
        case TCP_TIMESTAMP: