Andrei Pelinescu-Onciul
5fdd4baef6
sctp: on T3_RTX retransmit all the in-flight chunks
...
When retransmitting due to T3 timeout, retransmit all the
in-flight chunks for the corresponding transport/path, including
chunks sent less then 1 rto ago.
This is the correct behaviour according to rfc4960 section 6.3.3
E3 and
"Note: Any DATA chunks that were sent to the address for which the
T3-rtx timer expired but did not fit in one MTU (rule E3 above)
should be marked for retransmission and sent as soon as cwnd
allows (normally, when a SACK arrives). ".
This fixes problems when more then one path is present and the T3
retransmission of the first chunk that timeouts stops the T3 timer
for the initial active path, leaving all the other in-flight
chunks waiting forever or until a new chunk is transmitted on the
same path and timeouts (and this will happen only if the cwnd
allows sending new chunks, but since cwnd was dropped to MTU by
the timeout => it will wait until the first heartbeat).
Example: 10 packets in flight, sent at 0.1 s intervals on the
primary path. The primary path is down and the first packet
timeouts. The first packet is retransmitted on another path, the
T3 timer for the primary path is stopped and cwnd is set to MTU.
All the other 9 in-flight packets will not be retransmitted
(unless more new packets are sent on the primary path which depend
on cwnd allowing it, and even in this case the 9 packets will be
retransmitted only after a new packet timeouts which even in the
best case would be more then RTO).
This commit reverts d0ce92910b and
also removes the now unused transport->last_rto, introduced in
b6157d8e03 .
p.s The problem is not only when multiple paths are there. It
can happen in a single homed environment. If the application
stops sending data, it possible to have a hung association.
Signed-off-by: Andrei Pelinescu-Onciul <andrei@iptel.org>
Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-11-29 00:14:02 -08:00
..
9p
9p: fix readdir corner cases
2009-11-02 08:43:45 -06:00
bluetooth
Bluetooth: Handle L2CAP case when the remote receiver is busy
2009-08-26 00:12:20 -07:00
irda
net: mark read-only arrays as const
2009-08-05 10:42:58 -07:00
iucv
af_iucv: Return -EAGAIN if iucv msg limit is exceeded
2009-06-19 00:10:40 -07:00
netfilter
netfilter: nf_nat: fix NAT issue in 2.6.30.4+
2009-11-06 00:43:42 -08:00
netns
netns: embed ip6_dst_ops directly
2009-09-01 17:40:31 -07:00
phonet
Phonet: sockets list through proc_fs
2009-07-23 17:58:19 -07:00
sctp
sctp: on T3_RTX retransmit all the in-flight chunks
2009-11-29 00:14:02 -08:00
tc_act
tipc
act_api.h
net: restore gnet_stats_basic to previous definition
2009-08-17 21:33:49 -07:00
addrconf.h
bonding: remap muticast addresses without using dev_close() and dev_open()
2009-09-15 02:37:40 -07:00
af_ieee802154.h
af_ieee802154: add support for WANT_ACK socket option
2009-08-12 21:54:50 -07:00
af_rxrpc.h
af_unix.h
ah.h
arp.h
net: make neigh_ops constant
2009-09-01 17:40:57 -07:00
atmclip.h
ax25.h
ax88796.h
ax88796: Add method to take MAC from platform data
2009-03-24 23:32:03 -07:00
cfg80211.h
cfg80211: fix dangling scan request checking
2009-08-20 11:36:05 -04:00
checksum.h
cipso_ipv4.h
netlabel: Label incoming TCP connections correctly in SELinux
2009-03-28 15:01:36 +11:00
compat.h
net: Make setsockopt() optlen be unsigned.
2009-09-30 16:12:20 -07:00
datalink.h
dcbnl.h
dcbnl: Add support for setapp/getapp to netdev dcbnl_rtnl_ops
2009-09-01 01:24:30 -07:00
dn.h
dn_dev.h
dn_fib.h
dn_neigh.h
dn_nsp.h
dn_route.h
dsa.h
dsa: add switch chip cascading support
2009-03-21 19:06:54 -07:00
dsfield.h
dst.h
netns: embed ip6_dst_ops directly
2009-09-01 17:40:31 -07:00
dst_ops.h
netns: embed ip6_dst_ops directly
2009-09-01 17:40:31 -07:00
esp.h
ethoc.h
net: Add support for the OpenCores 10/100 Mbps Ethernet MAC.
2009-03-27 00:16:21 -07:00
fib_rules.h
net: Remove unused parameter from fill method in fib_rules_ops.
2009-05-20 17:26:23 -07:00
flow.h
garp.h
gen_stats.h
net: restore gnet_stats_basic to previous definition
2009-08-17 21:33:49 -07:00
genetlink.h
genetlink: make netns aware
2009-07-12 14:03:27 -07:00
icmp.h
ieee80211_radiotap.h
wireless: radiotap updates
2009-03-27 20:12:52 -04:00
ieee802154.h
ieee802154: move headers out of extra directory
2009-07-23 17:08:51 +04:00
ieee802154_netdev.h
ieee802154: add support for channel pages from IEEE 802.15.4-2006
2009-08-19 23:08:22 +04:00
if_inet6.h
ipv6: reorder struct inet6_ifaddr to remove padding on 64 bit builds
2009-03-21 13:29:05 -07:00
inet6_connection_sock.h
inet6_hashtables.h
net: skb->dst accessors
2009-06-03 02:51:04 -07:00
inet_common.h
inet_connection_sock.h
net: Make setsockopt() optlen be unsigned.
2009-09-30 16:12:20 -07:00
inet_ecn.h
inet_frag.h
inet fragments: fix sparse warning: context imbalance
2009-02-26 23:13:35 -08:00
inet_hashtables.h
net: skb->dst accessors
2009-06-03 02:51:04 -07:00
inet_sock.h
Merge branch 'for-linus2' of git://git.kernel.org/pub/scm/linux/kernel/git/vegard/kmemcheck
2009-06-16 13:09:51 -07:00
inet_timewait_sock.h
net: Fix struct inet_timewait_sock bitfield annotation
2009-10-20 01:13:26 -07:00
inetpeer.h
ip.h
net: Make setsockopt() optlen be unsigned.
2009-09-30 16:12:20 -07:00
ip6_checksum.h
ip6_fib.h
xfrm: select sane defaults for xfrm[4|6] gc_thresh
2009-07-30 18:52:15 -07:00
ip6_route.h
net: skb->dst accessors
2009-06-03 02:51:04 -07:00
ip6_tunnel.h
ip_fib.h
net: Fix RPF to work with policy routing
2009-10-29 22:49:12 -07:00
ip_vs.h
net: mark read-only arrays as const
2009-08-05 10:42:58 -07:00
ipcomp.h
ipconfig.h
ipip.h
Revert "sit: stateless autoconf for isatap"
2009-09-26 20:28:07 -07:00
ipv6.h
net: Make setsockopt() optlen be unsigned.
2009-09-30 16:12:20 -07:00
ipx.h
iw_handler.h
libipw: switch from ieee80211_* to libipw_* naming policy
2009-08-28 14:40:28 -04:00
lapb.h
lib80211.h
llc.h
llc_c_ac.h
llc_c_ev.h
llc_c_st.h
llc_conn.h
llc_if.h
llc_pdu.h
llc_s_ac.h
llc_s_ev.h
llc_s_st.h
llc_sap.h
mac80211.h
mac80211: document ieee80211_rx() context requirement
2009-10-12 15:55:53 -04:00
mip6.h
ndisc.h
sysctl: remove "struct file *" argument of ->proc_handler
2009-09-24 07:21:04 -07:00
neighbour.h
net: make neigh_ops constant
2009-09-01 17:40:57 -07:00
net_namespace.h
net: explain netns notifiers a little better
2009-07-20 08:03:00 -07:00
netdma.h
netevent.h
netlabel.h
netlabel: Cleanup the Smack/NetLabel code to fix incoming TCP connections
2009-03-28 15:01:37 +11:00
netlink.h
netlink: constify nlmsghdr arguments
2009-08-25 16:07:40 +02:00
netrom.h
nexthop.h
nl802154.h
ieee802154: add support for channel pages from IEEE 802.15.4-2006
2009-08-19 23:08:22 +04:00
p8022.h
pkt_cls.h
pkt_sched.h
pkt_sched: Revert tasklet_hrtimer changes.
2009-09-01 17:59:25 -07:00
protocol.h
net: constify struct inet6_protocol
2009-09-14 17:03:05 -07:00
psnap.h
snap: use const for descriptor
2009-03-21 19:06:50 -07:00
raw.h
rawv6.h
ipv6: Use correct data types for ICMPv6 type and code
2009-06-23 04:31:07 -07:00
red.h
regulatory.h
cfg80211: clean up includes
2009-04-22 16:57:17 -04:00
request_sock.h
rose.h
NET: ROSE: Don't use static buffer.
2009-07-26 19:11:14 -07:00
route.h
net: skb->rtable accessor
2009-06-03 02:51:02 -07:00
rtnetlink.h
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-next-2.6
2009-09-10 18:17:09 -07:00
sch_generic.h
pkt_sched: Fix tx queue selection in tc_modify_qdisc
2009-09-15 02:53:07 -07:00
scm.h
cleanup: remove unused member in scm_cookie.
2009-07-05 19:16:10 -07:00
slhc_vj.h
snmp.h
snmp: add missing counters for RFC 4293
2009-04-27 02:45:02 -07:00
sock.h
net: Fix struct sock bitfield annotation
2009-10-11 23:03:52 -07:00
stp.h
tcp.h
net: Make setsockopt() optlen be unsigned.
2009-09-30 16:12:20 -07:00
tcp_states.h
timewait_sock.h
transp_v6.h
inet: inet_connection_sock_af_ops const
2009-09-02 01:03:49 -07:00
udp.h
net: Make setsockopt() optlen be unsigned.
2009-09-30 16:12:20 -07:00
udplite.h
wext.h
wext: add back wireless/ dir in sysfs for cfg80211 interfaces
2009-09-28 16:55:07 -04:00
wimax.h
rfkill: rewrite
2009-06-03 14:06:13 -04:00
wpan-phy.h
ieee802154: add a sysfs representation of WPAN master devices
2009-08-19 23:08:20 +04:00
x25.h
x25: Fix sleep from timer on socket destroy.
2009-06-16 05:40:30 -07:00
x25device.h
xfrm.h
xfrm: select sane defaults for xfrm[4|6] gc_thresh
2009-07-30 18:52:15 -07:00