diff options
| author | David S. Miller <davem@davemloft.net> | 2020-09-30 14:21:30 -0700 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2020-09-30 14:21:30 -0700 |
| commit | 9b5cbf469d7efb8553635b1f25a6337101dd5f00 (patch) | |
| tree | f1ce9d23e66fd51f5efcd7ea38663db68f27d5ca /include | |
| parent | 20c168be684a97b084525906eb7ed017b7f9c0b8 (diff) | |
| parent | a37c2134bed6f28c6d6aefa2699331e6e4e9c4f1 (diff) | |
Merge branch 'tcp-exponential-backoff-in-tcp_send_ack'
Eric Dumazet says:
====================
tcp: exponential backoff in tcp_send_ack()
We had outages caused by repeated skb allocation failures in tcp_send_ack()
It is time to add exponential backoff to reduce number of attempts.
Before doing so, first patch removes icsk_ack.blocked to make
room for a new field (icsk_ack.retry)
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
| -rw-r--r-- | include/net/inet_connection_sock.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/include/net/inet_connection_sock.h b/include/net/inet_connection_sock.h index dc763ca9413c..7338b3865a2a 100644 --- a/include/net/inet_connection_sock.h +++ b/include/net/inet_connection_sock.h @@ -110,7 +110,7 @@ struct inet_connection_sock { __u8 pending; /* ACK is pending */ __u8 quick; /* Scheduled number of quick acks */ __u8 pingpong; /* The session is interactive */ - __u8 blocked; /* Delayed ACK was blocked by socket lock */ + __u8 retry; /* Number of attempts */ __u32 ato; /* Predicted tick of soft clock */ unsigned long timeout; /* Currently scheduled timeout */ __u32 lrcvtime; /* timestamp of last received data packet */ @@ -198,7 +198,8 @@ static inline void inet_csk_clear_xmit_timer(struct sock *sk, const int what) sk_stop_timer(sk, &icsk->icsk_retransmit_timer); #endif } else if (what == ICSK_TIME_DACK) { - icsk->icsk_ack.blocked = icsk->icsk_ack.pending = 0; + icsk->icsk_ack.pending = 0; + icsk->icsk_ack.retry = 0; #ifdef INET_CSK_CLEAR_TIMERS sk_stop_timer(sk, &icsk->icsk_delack_timer); #endif |
