Eric Dumazet
e6c022a4fa
tcp: better retrans tracking for defer-accept
...
For passive TCP connections using TCP_DEFER_ACCEPT facility,
we incorrectly increment req->retrans each time timeout triggers
while no SYNACK is sent.
SYNACK are not sent for TCP_DEFER_ACCEPT that were established (for
which we received the ACK from client). Only the last SYNACK is sent
so that we can receive again an ACK from client, to move the req into
accept queue. We plan to change this later to avoid the useless
retransmit (and potential problem as this SYNACK could be lost)
TCP_INFO later gives wrong information to user, claiming imaginary
retransmits.
Decouple req->retrans field into two independent fields :
num_retrans : number of retransmit
num_timeout : number of timeouts
num_timeout is the counter that is incremented at each timeout,
regardless of actual SYNACK being sent or not, and used to
compute the exponential timeout.
Introduce inet_rtx_syn_ack() helper to increment num_retrans
only if ->rtx_syn_ack() succeeded.
Use inet_rtx_syn_ack() from tcp_check_req() to increment num_retrans
when we re-send a SYNACK in answer to a (retransmitted) SYN.
Prior to this patch, we were not counting these retransmits.
Change tcp_v[46]_rtx_synack() to increment TCP_MIB_RETRANSSEGS
only if a synack packet was successfully queued.
Reported-by: Yuchung Cheng <ycheng@google.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Julian Anastasov <ja@ssi.bg>
Cc: Vijay Subramanian <subramanian.vijay@gmail.com>
Cc: Elliott Hughes <enh@google.com>
Cc: Neal Cardwell <ncardwell@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2012-11-03 14:45:00 -04:00
..
9p
bluetooth
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next
2012-09-24 14:39:16 -04:00
caif
caif-hsi: Remove use of module parameters
2012-06-25 16:44:12 -07:00
irda
TTY: ircomm, use tty from tty_port
2012-06-12 15:50:24 -07:00
iucv
netfilter
netlink: Rename pid to portid to avoid confusion
2012-09-10 15:30:41 -04:00
netns
sctp: Make hmac algorithm selection for cookie generation dynamic
2012-10-26 02:22:18 -04:00
nfc
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem
2012-09-28 11:11:16 -04:00
phonet
net: remove my future former mail address
2012-06-17 16:29:38 -07:00
sctp
sctp: Make hmac algorithm selection for cookie generation dynamic
2012-10-26 02:22:18 -04:00
tc_act
act_api.h
addrconf.h
netfilter: ip6tables: add MASQUERADE target
2012-08-30 03:00:18 +02:00
af_ieee802154.h
af_rxrpc.h
af_unix.h
unix: Remove unused field from unix_sock
2012-10-21 20:37:06 -04:00
ah.h
arp.h
net: Dont use ifindices in hash fns
2012-08-09 16:18:06 -07:00
atmclip.h
ax25.h
userns: Convert net/ax25 to use kuid_t where appropriate
2012-08-14 21:49:42 -07:00
ax88796.h
cfg80211-wext.h
cfg80211.h
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem
2012-09-28 11:11:16 -04:00
checksum.h
net: core: add function for incremental IPv6 pseudo header checksum updates
2012-08-30 03:00:16 +02:00
cipso_ipv4.h
cipso: handle CIPSO options correctly when NetLabel is disabled
2012-06-01 14:18:29 -04:00
cls_cgroup.h
net: Update args to dummy sock_update_classid().
2012-10-26 05:07:00 -04:00
codel.h
codel: refine one condition to avoid a nul rec_inv_sqrt
2012-08-10 16:52:54 -07:00
compat.h
net: cleanup unsigned to unsigned int
2012-04-15 12:44:40 -04:00
datalink.h
dcbevent.h
dcbnl.h
net/dcb: Add an optional max rate attribute
2012-04-05 05:08:04 -04:00
dn.h
net: cleanup unsigned to unsigned int
2012-04-15 12:44:40 -04:00
dn_dev.h
dn_fib.h
net: cleanup unsigned to unsigned int
2012-04-15 12:44:40 -04:00
dn_neigh.h
dn_nsp.h
dn_route.h
decnet: Use neighbours privately in dn_route struct.
2012-07-05 01:12:14 -07:00
dsa.h
dsfield.h
dst.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2012-08-22 14:21:38 -07:00
dst_ops.h
net: Fix warnings in dst_ops.h
2012-07-19 10:43:03 -07:00
esp.h
ethoc.h
fib_rules.h
ipv4: Elide fib_validate_source() completely when possible.
2012-06-29 01:36:36 -07:00
flow.h
ipv4: Add FLOWI_FLAG_KNOWN_NH
2012-10-08 17:42:36 -04:00
flow_keys.h
garp.h
gen_stats.h
genetlink.h
netlink: Rename pid to portid to avoid confusion
2012-09-10 15:30:41 -04:00
gre.h
gro_cells.h
net: add gro_cells infrastructure
2012-10-01 17:01:46 -04:00
icmp.h
net: cleanup unsigned to unsigned int
2012-04-15 12:44:40 -04:00
ieee80211_radiotap.h
wireless: add radiotap A-MPDU status field
2012-08-20 13:53:09 +02:00
ieee802154.h
ieee802154_netdev.h
mac802154: declare reduced mlme operations
2012-05-16 15:16:56 -04:00
if_inet6.h
net: delete all instances of special processing for token ring
2012-05-15 20:14:35 -04:00
inet6_connection_sock.h
ipv6: Add helper inet6_csk_update_pmtu().
2012-07-16 03:44:56 -07:00
inet6_hashtables.h
ipv6: Early TCP socket demux
2012-07-26 15:50:39 -07:00
inet_common.h
net-tcp: Fast Open client - sendmsg(MSG_FASTOPEN)
2012-07-19 11:02:03 -07:00
inet_connection_sock.h
net: ipv6: fix TCP early demux
2012-08-06 13:33:21 -07:00
inet_ecn.h
tunnel: drop packet if ECN present with not-ECT
2012-09-27 18:12:37 -04:00
inet_frag.h
ipv6: unify fragment thresh handling code
2012-09-19 17:23:28 -04:00
inet_hashtables.h
ipv4: Early TCP socket demux.
2012-06-19 21:22:05 -07:00
inet_sock.h
net: use a per task frag allocator
2012-09-24 16:31:37 -04:00
inet_timewait_sock.h
inetpeer.h
ipv4: Maintain redirect and PMTU info in struct rtable again.
2012-07-10 22:40:14 -07:00
ip.h
ipv4: fix path MTU discovery with connection tracking
2012-08-26 19:13:55 +02:00
ip6_checksum.h
ip6_fib.h
ipv6: add support of equal cost multipath (ECMP)
2012-10-23 02:38:32 -04:00
ip6_route.h
ipv6: fix inet6_csk_xmit()
2012-07-18 08:59:58 -07:00
ip6_tunnel.h
gre: Support GRE over IPv6
2012-08-14 14:28:32 -07:00
ip_fib.h
ipv4: add a fib_type to fib_info
2012-10-04 13:58:26 -04:00
ip_vs.h
ipvs: fix build errors related to config option combinations
2012-10-23 09:23:40 +09:00
ipcomp.h
ipconfig.h
ipip.h
ipv4: gre: add GRO capability
2012-10-01 17:01:57 -04:00
ipv6.h
ipv6: make ip6_frag_nqueues() and ip6_frag_mem() static inline
2012-09-19 17:23:28 -04:00
ipx.h
iw_handler.h
lapb.h
lapb: Neaten debugging
2012-05-17 18:45:20 -04:00
lib80211.h
llc.h
llc: Remove stray reference to sysctl_llc_station_ack_timeout.
2012-09-17 13:13:24 -04:00
llc_c_ac.h
llc_c_ev.h
net: cleanup unsigned to unsigned int
2012-04-15 12:44:40 -04:00
llc_c_st.h
llc_conn.h
llc_if.h
llc_pdu.h
net: delete all instances of special processing for token ring
2012-05-15 20:14:35 -04:00
llc_s_ac.h
llc_s_ev.h
llc_s_st.h
llc_sap.h
mac80211.h
mac80211: add key flag for management keys
2012-09-10 11:29:17 +02:00
mac802154.h
mac802154: add wpan device-class support
2012-06-26 21:06:11 -07:00
mip6.h
mld.h
ndisc.h
net: Dont use ifindices in hash fns
2012-08-09 16:18:06 -07:00
neighbour.h
net: output path optimizations
2012-08-07 16:24:55 -07:00
net_namespace.h
sections: fix section conflicts in net
2012-10-06 03:04:45 +09:00
net_ratelimit.h
netdma.h
netevent.h
net: Pass neighbours and dest address into NETEVENT_REDIRECT events.
2012-07-05 02:21:55 -07:00
netlabel.h
userns: Convert the audit loginuid to be a kuid
2012-09-17 18:08:54 -07:00
netlink.h
netlink: Rename pid to portid to avoid confusion
2012-09-10 15:30:41 -04:00
netprio_cgroup.h
cgroup: Assign subsystem IDs during compile time
2012-09-14 09:57:43 -07:00
netrom.h
nexthop.h
nl802154.h
p8022.h
ping.h
pkt_cls.h
pkt_sched.h
net: cleanup unsigned to unsigned int
2012-04-15 12:44:40 -04:00
protocol.h
ipv6: Early TCP socket demux
2012-07-26 15:50:39 -07:00
psnap.h
raw.h
rawv6.h
ipv6: bool/const conversions phase2
2012-05-19 01:08:16 -04:00
red.h
net_sched: red: Make minor corrections to comments
2012-04-16 23:53:11 -04:00
regulatory.h
cfg80211: add cellular base station regulatory hint support
2012-07-17 12:16:39 +02:00
request_sock.h
tcp: better retrans tracking for defer-accept
2012-11-03 14:45:00 -04:00
rose.h
route.h
ipv4: introduce rt_uses_gateway
2012-10-08 17:42:36 -04:00
rtnetlink.h
rtnl: allow to specify different num for rx and tx queue count
2012-07-20 11:06:59 -07:00
sch_generic.h
net sched: Pass the skb into change so it can access NETLINK_CB
2012-08-14 21:55:28 -07:00
scm.h
net: Remove unnecessary NULL check in scm_destroy().
2012-09-24 15:52:33 -04:00
secure_seq.h
slhc_vj.h
snmp.h
net: avoid reloads in SNMP_UPD_PO_STATS
2012-08-06 13:40:47 -07:00
sock.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
2012-10-02 13:38:27 -07:00
stp.h
tcp.h
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace
2012-10-02 11:11:09 -07:00
tcp_memcontrol.h
cgroup: pass struct mem_cgroup instead of struct cgroup to socket memcg
2012-04-10 10:04:07 -07:00
tcp_states.h
timewait_sock.h
[PATCH] tcp: Cache inetpeer in timewait socket, and only when necessary.
2012-06-09 14:56:12 -07:00
transp_v6.h
udp.h
net/ipv6/udp: UDP encapsulation: introduce encap_rcv hook into IPv6
2012-04-28 22:21:51 -04:00
udplite.h
wext.h
wimax.h
net: cleanup unsigned to unsigned int
2012-04-15 12:44:40 -04:00
wpan-phy.h
mac802154: monitor device support
2012-05-16 15:17:08 -04:00
x25.h
net: cleanup unsigned to unsigned int
2012-04-15 12:44:40 -04:00
x25device.h
xfrm.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
2012-10-02 13:38:27 -07:00