Yuchung Cheng
0eb96bf754
tcp: fix tcp_fastretrans_alert warning
...
This patch fixes the cause of an WARNING indicatng TCP has pending
retransmission in Open state in tcp_fastretrans_alert().
The root cause is a bad interaction between path mtu probing,
if enabled, and the RACK loss detection. Upong receiving a SACK
above the sequence of the MTU probing packet, RACK could mark the
probe packet lost in tcp_fastretrans_alert(), prior to calling
tcp_simple_retransmit().
tcp_simple_retransmit() only enters Loss state if it newly marks
the probe packet lost. If the probe packet is already identified as
lost by RACK, the sender remains in Open state with some packets
marked lost and retransmitted. Then the next SACK would trigger
the warning. The likely scenario is that the probe packet was
lost due to its size or network congestion. The actual impact of
this warning is small by potentially entering fast recovery an
ACK later.
The simple fix is always entering recovery (Loss) state if some
packet is marked lost during path MTU probing.
Fixes: a0370b3f3f ("tcp: enable RACK loss detection to trigger recovery")
Reported-by: Oleksandr Natalenko <oleksandr@natalenko.name>
Reported-by: Alexei Starovoitov <alexei.starovoitov@gmail.com>
Reported-by: Roman Gushchin <guro@fb.com>
Signed-off-by: Yuchung Cheng <ycheng@google.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Acked-by: Neal Cardwell <ncardwell@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2017-11-10 18:09:19 +09:00
..
netfilter
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2017-11-03 09:09:21 -07:00
af_inet.c
net: Add comment that early_demux can change via sysctl
2017-08-28 15:17:29 -07:00
ah4.c
arp.c
neigh: increase queue_len_bytes to match wmem_default
2017-08-29 16:10:50 -07:00
cipso_ipv4.c
tcp/dccp: fix ireq->opt races
2017-10-21 01:33:19 +01:00
datagram.c
devinet.c
esp4.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2017-09-01 17:42:05 -07:00
esp4_offload.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2017-09-01 17:42:05 -07:00
fib_frontend.c
fib_lookup.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
fib_notifier.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
fib_rules.c
fib_semantics.c
fib: fib_dump_info can no longer use __in_dev_get_rtnl
2017-11-03 14:27:46 +09:00
fib_trie.c
ipv4: do metrics match when looking up and deleting a route
2017-08-23 20:37:10 -07:00
fou.c
gre_demux.c
gre_offload.c
gso: fix payload length when gso_size is zero
2017-10-08 10:12:15 -07:00
icmp.c
igmp.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2017-08-21 17:06:42 -07:00
inet_connection_sock.c
tcp/dccp: fix other lockdep splats accessing ireq_opt
2017-10-26 17:41:32 +09:00
inet_diag.c
inet_diag: allow protocols to provide additional data
2017-09-01 18:38:09 -07:00
inet_fragment.c
Revert "net: use lib/percpu_counter API for fragmentation mem accounting"
2017-09-03 11:01:05 -07:00
inet_hashtables.c
soreuseport: fix initialization race
2017-10-22 02:03:51 +01:00
inet_timewait_sock.c
inetpeer.c
inetpeer: fix RCU lookup() again
2017-09-28 09:39:34 -07:00
ip_forward.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
ip_fragment.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
ip_gre.c
ip_gre: erspan device should keep dst
2017-10-01 22:30:32 -07:00
ip_input.c
IPv4: early demux can return an error code
2017-10-01 03:55:47 +01:00
ip_options.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
ip_output.c
udp: remove unreachable ufo branches
2017-08-22 14:27:18 -07:00
ip_sockglue.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
ip_tunnel.c
ip_tunnel: fix ip tunnel lookup in collect_md mode
2017-09-12 20:45:31 -07:00
ip_tunnel_core.c
ip_vti.c
vti: fix use after free in vti_tunnel_xmit/vti6_tnl_xmit
2017-09-26 09:58:21 -07:00
ipcomp.c
ipconfig.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
ipip.c
ipip: only increase err_count for some certain type icmp in ipip_err
2017-10-27 23:43:31 +09:00
ipmr.c
Kconfig
ip: update policy routing config help
2017-10-12 22:57:11 -07:00
Makefile
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
netfilter.c
ping.c
proc.c
tcp: Revert "tcp: remove header prediction"
2017-08-30 11:20:09 -07:00
protocol.c
raw.c
raw_diag.c
route.c
ipv4: Fix traffic triggered IPsec connections.
2017-10-09 09:39:50 -07:00
syncookies.c
tcp/dccp: fix ireq->opt races
2017-10-21 01:33:19 +01:00
sysctl_net_ipv4.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
tcp.c
net: prepare (struct ubuf_info)->refcnt conversion
2017-09-01 20:22:03 -07:00
tcp_bbr.c
tcp_bic.c
tcp_cdg.c
tcp_cong.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2017-09-01 17:42:05 -07:00
tcp_cubic.c
tcp_dctcp.c
tcp_diag.c
tcp_diag: report TCP MD5 signing keys and addresses
2017-09-01 18:38:09 -07:00
tcp_fastopen.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
tcp_highspeed.c
tcp_htcp.c
tcp_hybla.c
tcp_illinois.c
tcp_input.c
tcp: fix tcp_fastretrans_alert warning
2017-11-10 18:09:19 +09:00
tcp_ipv4.c
tcp/dccp: fix other lockdep splats accessing ireq_opt
2017-10-26 17:41:32 +09:00
tcp_lp.c
tcp_metrics.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
tcp_minisocks.c
tcp: Revert "tcp: remove header prediction"
2017-08-30 11:20:09 -07:00
tcp_nv.c
tcp_nv: fix division by zero in tcpnv_acked()
2017-11-02 16:16:27 +09:00
tcp_offload.c
tcp: gso: avoid refcount_t warning from tcp_gso_segment()
2017-11-10 18:07:15 +09:00
tcp_output.c
tcp: do not mangle skb->cb[] in tcp_make_synack()
2017-11-03 14:29:01 +09:00
tcp_probe.c
tcp_rate.c
tcp_recovery.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
tcp_scalable.c
tcp_timer.c
tcp_ulp.c
tcp_vegas.c
tcp_vegas.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
tcp_veno.c
tcp_westwood.c
tcp: Revert "tcp: remove CA_ACK_SLOWPATH"
2017-08-30 11:20:08 -07:00
tcp_yeah.c
tunnel4.c
udp.c
soreuseport: fix initialization race
2017-10-22 02:03:51 +01:00
udp_diag.c
udp_impl.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
udp_offload.c
gso: fix payload length when gso_size is zero
2017-10-08 10:12:15 -07:00
udp_tunnel.c
udplite.c
xfrm4_input.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
xfrm4_mode_beet.c
xfrm4_mode_transport.c
xfrm4_mode_tunnel.c
xfrm4_output.c
xfrm4_policy.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
xfrm4_protocol.c
xfrm4_state.c
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
xfrm4_tunnel.c