1 From 40fc3423b983b864bf70b03199191260ae9b2ea6 Mon Sep 17 00:00:00 2001
2 From: Eric Dumazet <edumazet@google.com>
3 Date: Sat, 3 Dec 2016 11:14:50 -0800
4 Subject: [PATCH 01/10] tcp: tsq: add tsq_flags / tsq_enum
6 This is a cleanup, to ease code review of following patches.
8 Old 'enum tsq_flags' is renamed, and a new enumeration is added
9 with the flags used in cmpxchg() operations as opposed to
10 single bit operations.
12 Signed-off-by: Eric Dumazet <edumazet@google.com>
13 Signed-off-by: David S. Miller <davem@davemloft.net>
15 include/linux/tcp.h | 11 ++++++++++-
16 net/ipv4/tcp_output.c | 16 ++++++++--------
17 2 files changed, 18 insertions(+), 9 deletions(-)
19 --- a/include/linux/tcp.h
20 +++ b/include/linux/tcp.h
21 @@ -368,7 +368,7 @@ struct tcp_sock {
29 TCP_TSQ_DEFERRED, /* tcp_tasklet_func() found socket was owned */
30 @@ -379,6 +379,15 @@ enum tsq_flags {
35 + TSQF_THROTTLED = (1UL << TSQ_THROTTLED),
36 + TSQF_QUEUED = (1UL << TSQ_QUEUED),
37 + TCPF_TSQ_DEFERRED = (1UL << TCP_TSQ_DEFERRED),
38 + TCPF_WRITE_TIMER_DEFERRED = (1UL << TCP_WRITE_TIMER_DEFERRED),
39 + TCPF_DELACK_TIMER_DEFERRED = (1UL << TCP_DELACK_TIMER_DEFERRED),
40 + TCPF_MTU_REDUCED_DEFERRED = (1UL << TCP_MTU_REDUCED_DEFERRED),
43 static inline struct tcp_sock *tcp_sk(const struct sock *sk)
45 return (struct tcp_sock *)sk;
46 --- a/net/ipv4/tcp_output.c
47 +++ b/net/ipv4/tcp_output.c
48 @@ -790,10 +790,10 @@ static void tcp_tasklet_func(unsigned lo
52 -#define TCP_DEFERRED_ALL ((1UL << TCP_TSQ_DEFERRED) | \
53 - (1UL << TCP_WRITE_TIMER_DEFERRED) | \
54 - (1UL << TCP_DELACK_TIMER_DEFERRED) | \
55 - (1UL << TCP_MTU_REDUCED_DEFERRED))
56 +#define TCP_DEFERRED_ALL (TCPF_TSQ_DEFERRED | \
57 + TCPF_WRITE_TIMER_DEFERRED | \
58 + TCPF_DELACK_TIMER_DEFERRED | \
59 + TCPF_MTU_REDUCED_DEFERRED)
61 * tcp_release_cb - tcp release_sock() callback
63 @@ -814,7 +814,7 @@ void tcp_release_cb(struct sock *sk)
64 nflags = flags & ~TCP_DEFERRED_ALL;
65 } while (cmpxchg(&tp->tsq_flags, flags, nflags) != flags);
67 - if (flags & (1UL << TCP_TSQ_DEFERRED))
68 + if (flags & TCPF_TSQ_DEFERRED)
71 /* Here begins the tricky part :
72 @@ -828,15 +828,15 @@ void tcp_release_cb(struct sock *sk)
74 sock_release_ownership(sk);
76 - if (flags & (1UL << TCP_WRITE_TIMER_DEFERRED)) {
77 + if (flags & TCPF_WRITE_TIMER_DEFERRED) {
78 tcp_write_timer_handler(sk);
81 - if (flags & (1UL << TCP_DELACK_TIMER_DEFERRED)) {
82 + if (flags & TCPF_DELACK_TIMER_DEFERRED) {
83 tcp_delack_timer_handler(sk);
86 - if (flags & (1UL << TCP_MTU_REDUCED_DEFERRED)) {
87 + if (flags & TCPF_MTU_REDUCED_DEFERRED) {
88 inet_csk(sk)->icsk_af_ops->mtu_reduced(sk);