diff options
author | Lucas Nussbaum <lucas.nussbaum@ens-lyon.fr> | 2009-02-13 08:33:41 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-02-16 00:03:09 -0800 |
commit | 06e868066e3b5828383eb40ff4d1c0029100b0b5 (patch) | |
tree | 5fb84de9aff8a0b5d225a4c1137000ef6cc00dd5 /net/sctp/input.c | |
parent | 85e8d004ecbc51ead6ae926e15973b42cf07b36e (diff) | |
download | op-kernel-dev-06e868066e3b5828383eb40ff4d1c0029100b0b5.zip op-kernel-dev-06e868066e3b5828383eb40ff4d1c0029100b0b5.tar.gz |
sctp: Allow to disable SCTP checksums via module parameter
This is a new version of my patch, now using a module parameter instead
of a sysctl, so that the option is harder to find. Please note that,
once the module is loaded, it is still possible to change the value of
the parameter in /sys/module/sctp/parameters/, which is useful if you
want to do performance comparisons without rebooting.
Computation of SCTP checksums significantly affects the performance of
SCTP. For example, using two dual-Opteron 246 connected using a Gbe
network, it was not possible to achieve more than ~730 Mbps, compared to
941 Mbps after disabling SCTP checksums.
Unfortunately, SCTP checksum offloading in NICs is not commonly
available (yet).
By default, checksums are still enabled, of course.
Signed-off-by: Lucas Nussbaum <lucas.nussbaum@ens-lyon.fr>
Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sctp/input.c')
-rw-r--r-- | net/sctp/input.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/sctp/input.c b/net/sctp/input.c index 2e4a864..693fd08 100644 --- a/net/sctp/input.c +++ b/net/sctp/input.c @@ -142,7 +142,8 @@ int sctp_rcv(struct sk_buff *skb) __skb_pull(skb, skb_transport_offset(skb)); if (skb->len < sizeof(struct sctphdr)) goto discard_it; - if (!skb_csum_unnecessary(skb) && sctp_rcv_checksum(skb) < 0) + if (!sctp_checksum_disable && !skb_csum_unnecessary(skb) && + sctp_rcv_checksum(skb) < 0) goto discard_it; skb_pull(skb, sizeof(struct sctphdr)); |