| .. | .. |
|---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-or-later |
|---|
| 1 | 2 | /* |
|---|
| 2 | 3 | * net/dccp/timer.c |
|---|
| 3 | 4 | * |
|---|
| 4 | 5 | * An implementation of the DCCP protocol |
|---|
| 5 | 6 | * Arnaldo Carvalho de Melo <acme@conectiva.com.br> |
|---|
| 6 | | - * |
|---|
| 7 | | - * This program is free software; you can redistribute it and/or |
|---|
| 8 | | - * modify it under the terms of the GNU General Public License |
|---|
| 9 | | - * as published by the Free Software Foundation; either version |
|---|
| 10 | | - * 2 of the License, or (at your option) any later version. |
|---|
| 11 | 7 | */ |
|---|
| 12 | 8 | |
|---|
| 13 | 9 | #include <linux/dccp.h> |
|---|
| .. | .. |
|---|
| 89 | 85 | struct inet_connection_sock *icsk = inet_csk(sk); |
|---|
| 90 | 86 | |
|---|
| 91 | 87 | /* |
|---|
| 92 | | - * More than than 4MSL (8 minutes) has passed, a RESET(aborted) was |
|---|
| 88 | + * More than 4MSL (8 minutes) has passed, a RESET(aborted) was |
|---|
| 93 | 89 | * sent, no need to retransmit, this sock is dead. |
|---|
| 94 | 90 | */ |
|---|
| 95 | 91 | if (dccp_write_timeout(sk)) |
|---|
| .. | .. |
|---|
| 180 | 176 | bh_lock_sock(sk); |
|---|
| 181 | 177 | if (sock_owned_by_user(sk)) { |
|---|
| 182 | 178 | /* Try again later. */ |
|---|
| 183 | | - icsk->icsk_ack.blocked = 1; |
|---|
| 184 | 179 | __NET_INC_STATS(sock_net(sk), LINUX_MIB_DELAYEDACKLOCKED); |
|---|
| 185 | 180 | sk_reset_timer(sk, &icsk->icsk_delack_timer, |
|---|
| 186 | 181 | jiffies + TCP_DELACK_MIN); |
|---|
| .. | .. |
|---|
| 199 | 194 | icsk->icsk_ack.pending &= ~ICSK_ACK_TIMER; |
|---|
| 200 | 195 | |
|---|
| 201 | 196 | if (inet_csk_ack_scheduled(sk)) { |
|---|
| 202 | | - if (!icsk->icsk_ack.pingpong) { |
|---|
| 197 | + if (!inet_csk_in_pingpong_mode(sk)) { |
|---|
| 203 | 198 | /* Delayed ACK missed: inflate ATO. */ |
|---|
| 204 | 199 | icsk->icsk_ack.ato = min(icsk->icsk_ack.ato << 1, |
|---|
| 205 | 200 | icsk->icsk_rto); |
|---|
| .. | .. |
|---|
| 207 | 202 | /* Delayed ACK missed: leave pingpong mode and |
|---|
| 208 | 203 | * deflate ATO. |
|---|
| 209 | 204 | */ |
|---|
| 210 | | - icsk->icsk_ack.pingpong = 0; |
|---|
| 205 | + inet_csk_exit_pingpong_mode(sk); |
|---|
| 211 | 206 | icsk->icsk_ack.ato = TCP_ATO_MIN; |
|---|
| 212 | 207 | } |
|---|
| 213 | 208 | dccp_send_ack(sk); |
|---|
| .. | .. |
|---|
| 220 | 215 | |
|---|
| 221 | 216 | /** |
|---|
| 222 | 217 | * dccp_write_xmitlet - Workhorse for CCID packet dequeueing interface |
|---|
| 218 | + * @data: Socket to act on |
|---|
| 219 | + * |
|---|
| 223 | 220 | * See the comments above %ccid_dequeueing_decision for supported modes. |
|---|
| 224 | 221 | */ |
|---|
| 225 | 222 | static void dccp_write_xmitlet(unsigned long data) |
|---|