linux/net/sctp
Vlad Yasevich b9f8478682 sctp: Fix error count increments that were results of HEARTBEATS
SCTP RFC 4960 states that unacknowledged HEARTBEATS count as
errors agains a given transport or endpoint.  As such, we
should increment the error counts for only for unacknowledged
HB, otherwise we detect failure too soon.  This goes for both
the overall error count and the path error count.

Now, there is a difference in how the detection is done
between the two.  The path error detection is done after
the increment, so to detect it properly, we actually need
to exceed the path threshold.  The overall error detection
is done _BEFORE_ the increment.  Thus to detect the failure,
it's enough for the error count to match the threshold.
This is why all the state functions use '>=' to detect failure,
while path detection uses '>'.

Thanks goes to Chunbo Luo <chunbo.luo@windriver.com> who first
proposed patches to fix this issue and made me re-read the spec
and the code to figure out how this cruft really works.

Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
2009-09-04 18:20:58 -04:00
..
Kconfig sctp: Don't abort initialization when CONFIG_PROC_FS=n 2008-07-18 23:03:44 -07:00
Makefile sctp: Don't abort initialization when CONFIG_PROC_FS=n 2008-07-18 23:03:44 -07:00
associola.c sctp: release cached route when the transport goes down. 2009-09-04 18:20:55 -04:00
auth.c fix similar typos to successfull 2009-01-08 08:31:15 -08:00
bind_addr.c sctp: try harder to figure out address family when checking wildcards 2008-10-01 11:33:06 -04:00
chunk.c sctp: Send user messages to the lower layer as one 2009-09-04 18:20:57 -04:00
command.c [SCTP]: Remove sctp_add_cmd_sf wrapper bloat 2008-03-27 17:54:29 -07:00
debug.c net: mark read-only arrays as const 2009-08-05 10:42:58 -07:00
endpointola.c net: fix sctp breakage 2009-03-18 19:12:42 -07:00
input.c sctp: Use frag list abstraction interfaces. 2009-06-09 00:24:07 -07:00
inqueue.c [SCTP]: Stop claiming that this is a "reference implementation" 2008-02-05 10:59:07 -05:00
ipv6.c ipv6: Use correct data types for ICMPv6 type and code 2009-06-23 04:31:07 -07:00
objcnt.c [NET]: Fix heavy stack usage in seq_file output routines. 2008-04-24 01:02:16 -07:00
output.c sctp: Generate SACKs when actually sending outbound DATA 2009-09-04 18:20:56 -04:00
outqueue.c sctp: fix to send FORWARD-TSN chunk only if peer has such capable 2009-03-13 11:37:58 -07:00
primitive.c [SCTP]: Stop claiming that this is a "reference implementation" 2008-02-05 10:59:07 -05:00
proc.c sctp: use proc_create() 2009-09-04 18:20:58 -04:00
protocol.c sctp: fix missing destroy of percpu counter variable in sctp_proc_exit() 2009-08-09 21:45:43 -07:00
sm_make_chunk.c sctp: update the route for non-active transports after addresses are added 2009-09-04 18:20:55 -04:00
sm_sideeffect.c sctp: Fix error count increments that were results of HEARTBEATS 2009-09-04 18:20:58 -04:00
sm_statefuns.c sctp: Fix error count increments that were results of HEARTBEATS 2009-09-04 18:20:58 -04:00
sm_statetable.c sctp: fix a typo in net/sctp/sm_statetable.c 2009-06-03 09:14:45 -04:00
socket.c sctp: Send user messages to the lower layer as one 2009-09-04 18:20:57 -04:00
ssnmap.c [SCTP]: Stop claiming that this is a "reference implementation" 2008-02-05 10:59:07 -05:00
sysctl.c sctp: fix sack_timeout sysctl min and max types 2009-06-03 09:14:46 -04:00
transport.c sctp: use time_before or time_after for comparing jiffies 2009-03-02 22:49:18 -08:00
tsnmap.c trivial: fix then -> than typos in comments and documentation 2009-01-06 11:28:06 +01:00
ulpevent.c sctp: Use frag list abstraction interfaces. 2009-06-09 00:24:07 -07:00
ulpqueue.c net: Remove __skb_insert() calls outside of skbuff internals. 2008-09-21 21:28:51 -07:00