From: Joe Perches <joe@perches.com>
To: Eric Dumazet <eric.dumazet@gmail.com>
Cc: David Miller <davem@davemloft.net>,
netdev <netdev@vger.kernel.org>,
Yuchung Cheng <ycheng@google.com>
Subject: [PATCH net-next 2/2] tcp: Remove 2 indentation levels in tcp_rcv_state_process
Date: Fri, 24 May 2013 21:06:58 -0700 [thread overview]
Message-ID: <1369454818.2080.6.camel@joe-AO722> (raw)
In-Reply-To: <1369454556.2080.4.camel@joe-AO722>
case TCP_FIN_WAIT1 can also be simplified by reversing tests
and adding breaks;
Add braces after case and move automatic definitions.
Signed-off-by: Joe Perches <joe@perches.com>
---
net/ipv4/tcp_input.c | 76 +++++++++++++++++++++++++++-------------------------
1 file changed, 39 insertions(+), 37 deletions(-)
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 71bd87d..34da5a5 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -5671,7 +5671,10 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
tcp_fast_path_on(tp);
break;
- case TCP_FIN_WAIT1:
+ case TCP_FIN_WAIT1: {
+ struct dst_entry *dst;
+ int tmo;
+
/* If we enter the TCP_FIN_WAIT1 state and we are a
* Fast Open socket and this is the first acceptable
* ACK we have received, this would have acknowledged
@@ -5690,48 +5693,47 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb,
reqsk_fastopen_remove(sk, req, false);
tcp_rearm_rto(sk);
}
- if (tp->snd_una == tp->write_seq) {
- struct dst_entry *dst;
+ if (tp->snd_una != tp->write_seq)
+ break;
- tcp_set_state(sk, TCP_FIN_WAIT2);
- sk->sk_shutdown |= SEND_SHUTDOWN;
+ tcp_set_state(sk, TCP_FIN_WAIT2);
+ sk->sk_shutdown |= SEND_SHUTDOWN;
- dst = __sk_dst_get(sk);
- if (dst)
- dst_confirm(dst);
+ dst = __sk_dst_get(sk);
+ if (dst)
+ dst_confirm(dst);
- if (!sock_flag(sk, SOCK_DEAD)) {
- /* Wake up lingering close() */
- sk->sk_state_change(sk);
- } else {
- int tmo;
-
- if (tp->linger2 < 0 ||
- (TCP_SKB_CB(skb)->end_seq != TCP_SKB_CB(skb)->seq &&
- after(TCP_SKB_CB(skb)->end_seq - th->fin, tp->rcv_nxt))) {
- tcp_done(sk);
- NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPABORTONDATA);
- return 1;
- }
+ if (!sock_flag(sk, SOCK_DEAD)) {
+ /* Wake up lingering close() */
+ sk->sk_state_change(sk);
+ break;
+ }
- tmo = tcp_fin_time(sk);
- if (tmo > TCP_TIMEWAIT_LEN) {
- inet_csk_reset_keepalive_timer(sk, tmo - TCP_TIMEWAIT_LEN);
- } else if (th->fin || sock_owned_by_user(sk)) {
- /* Bad case. We could lose such FIN otherwise.
- * It is not a big problem, but it looks confusing
- * and not so rare event. We still can lose it now,
- * if it spins in bh_lock_sock(), but it is really
- * marginal case.
- */
- inet_csk_reset_keepalive_timer(sk, tmo);
- } else {
- tcp_time_wait(sk, TCP_FIN_WAIT2, tmo);
- goto discard;
- }
- }
+ if (tp->linger2 < 0 ||
+ (TCP_SKB_CB(skb)->end_seq != TCP_SKB_CB(skb)->seq &&
+ after(TCP_SKB_CB(skb)->end_seq - th->fin, tp->rcv_nxt))) {
+ tcp_done(sk);
+ NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPABORTONDATA);
+ return 1;
+ }
+
+ tmo = tcp_fin_time(sk);
+ if (tmo > TCP_TIMEWAIT_LEN) {
+ inet_csk_reset_keepalive_timer(sk, tmo - TCP_TIMEWAIT_LEN);
+ } else if (th->fin || sock_owned_by_user(sk)) {
+ /* Bad case. We could lose such FIN otherwise.
+ * It is not a big problem, but it looks confusing
+ * and not so rare event. We still can lose it now,
+ * if it spins in bh_lock_sock(), but it is really
+ * marginal case.
+ */
+ inet_csk_reset_keepalive_timer(sk, tmo);
+ } else {
+ tcp_time_wait(sk, TCP_FIN_WAIT2, tmo);
+ goto discard;
}
break;
+ }
case TCP_CLOSING:
if (tp->snd_una == tp->write_seq) {
--
1.8.1.2.459.gbcd45b4.dirty
next prev parent reply other threads:[~2013-05-25 4:06 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-19 3:16 [PATCH net-next] tcp: remove one indentation level in tcp_rcv_state_process() Eric Dumazet
2013-04-19 17:04 ` Eric Dumazet
2013-04-19 18:22 ` David Miller
2013-05-23 15:55 ` [PATCH v2 " Eric Dumazet
2013-05-23 17:09 ` Joe Perches
2013-05-23 17:12 ` Eric Dumazet
2013-05-25 1:03 ` [PATCH v3 " Eric Dumazet
2013-05-25 4:02 ` [PATCH net-next 1/2] tcp: Remove another indentation level in tcp_rcv_state_process Joe Perches
2013-05-25 4:06 ` Joe Perches [this message]
2013-05-26 6:23 ` [PATCH net-next 2/2] tcp: Remove 2 indentation levels " David Miller
2013-05-25 4:24 ` [PATCH net-next 1/2] tcp: Remove another indentation level " Eric Dumazet
2013-05-25 4:36 ` [PATCH net-next 1/2 V2] " Joe Perches
2013-05-26 6:23 ` David Miller
2013-05-26 6:23 ` [PATCH v3 net-next] tcp: remove one indentation level in tcp_rcv_state_process() David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1369454818.2080.6.camel@joe-AO722 \
--to=joe@perches.com \
--cc=davem@davemloft.net \
--cc=eric.dumazet@gmail.com \
--cc=netdev@vger.kernel.org \
--cc=ycheng@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).