linux/net/sctp
Neil Horman d5b9f4c083 [SCTP]: Fix persistent slowdown in sctp when a gap ack consumes rx buffer.
In the event that our entire receive buffer is full with a series of
chunks that represent a single gap-ack, and then we accept a chunk
(or chunks) that fill in the gap between the ctsn and the first gap,
we renege chunks from the end of the buffer, which effectively does
nothing but move our gap to the end of our received tsn stream. This
does little but move our missing tsns down stream a little, and, if the
sender is sending sufficiently large retransmit frames, the result is a
perpetual slowdown which can never be recovered from, since the only
chunk that can be accepted to allow progress in the tsn stream necessitates
that a new gap be created to make room for it. This leads to a constant
need for retransmits, and subsequent receiver stalls. The fix I've come up
with is to deliver the frame without reneging if we have a full receive
buffer and the receiving sockets sk_receive_queue is empty(indicating that
the receive buffer is being blocked by a missing tsn).

Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
Signed-off-by: Sridhar Samudrala <sri@us.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2006-06-17 22:59:03 -07:00
..
associola.c [SCTP]: Update SCTP_PEER_ADDR_PARAMS socket option to the latest api draft. 2006-01-03 13:11:11 -08:00
bind_addr.c [PATCH] gfp flags annotations - part 1 2005-10-08 15:00:57 -07:00
chunk.c [PATCH] gfp flags annotations - part 1 2005-10-08 15:00:57 -07:00
command.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
crc32c.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
debug.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
endpointola.c [SCTP]: Include ulpevents in socket receive buffer accounting. 2005-11-11 16:08:24 -08:00
input.c [SCTP]: Don't do CRC32C checksum over loopback. 2006-06-17 22:57:28 -07:00
inqueue.c [SCTP]: Allow spillover of receive buffer to avoid deadlock. 2006-05-05 17:02:09 -07:00
ipv6.c [SCTP]: Reject sctp packets with broadcast addresses. 2006-06-17 22:55:35 -07:00
Kconfig Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
Makefile Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
objcnt.c [SCTP]: Audit return code of create_proc_* 2005-07-18 13:38:07 -07:00
output.c [SCTP]: Don't do CRC32C checksum over loopback. 2006-06-17 22:57:28 -07:00
outqueue.c [SCTP] Reset rtt_in_progress for the chunk when processing its sack. 2006-06-17 22:56:08 -07:00
primitive.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
proc.c [PATCH] for_each_possible_cpu: network codes 2006-04-11 06:18:31 -07:00
protocol.c [SCTP]: Reject sctp packets with broadcast addresses. 2006-06-17 22:55:35 -07:00
sm_make_chunk.c [SCTP]: Fix machine check/connection hang on IA64. 2006-01-17 11:55:57 -08:00
sm_sideeffect.c [SCTP]: Set sk_err so that poll wakes up after a non-blocking connect failure. 2006-05-19 10:58:12 -07:00
sm_statefuns.c [SCTP]: Fix persistent slowdown in sctp when a gap ack consumes rx buffer. 2006-06-17 22:59:03 -07:00
sm_statetable.c [SCTP]: Fix state table entries for chunks received in CLOSED state. 2006-05-05 17:05:23 -07:00
socket.c [SCTP]: Reject sctp packets with broadcast addresses. 2006-06-17 22:55:35 -07:00
ssnmap.c [PATCH] gfp flags annotations - part 1 2005-10-08 15:00:57 -07:00
sysctl.c [SCTP]: Fix bad sysctl formatting of SCTP timeout values on 64-bit m/cs. 2006-01-17 11:55:17 -08:00
transport.c [SCTP]: Fix bad sysctl formatting of SCTP timeout values on 64-bit m/cs. 2006-01-17 11:55:17 -08:00
tsnmap.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ulpevent.c [SCTP]: Send only 1 window update SACK per message. 2006-06-17 22:58:28 -07:00
ulpqueue.c [SCTP]: Prevent possible infinite recursion with multiple bundled DATA. 2006-05-05 17:03:49 -07:00