diff options
author | Vlad Yasevich <vladislav.yasevich@hp.com> | 2009-09-04 18:20:59 -0400 |
---|---|---|
committer | Vlad Yasevich <vladislav.yasevich@hp.com> | 2009-09-04 18:20:59 -0400 |
commit | cb95ea32a457871f72752164de8d94fa20f4703c (patch) | |
tree | 0a419cdc3fe5e7e2d5fa5036a40d93a4bb6aac42 /net/sctp/chunk.c | |
parent | b29e7907288554db9c987c36facfd0304ee8ff5a (diff) |
sctp: Don't do NAGLE delay on large writes that were fragmented small
SCTP will delay the last part of a large write due to NAGLE, if that
part is smaller then MTU. Since we are doing large writes, we might
as well send the last portion now instead of waiting untill the next
large write happens. The small portion will be sent as is regardless,
so it's better to not delay it.
This is a result of much discussions with Wei Yongjun <yjwei@cn.fujitsu.com>
and Doug Graham <dgraham@nortel.com>. Many thanks go out to them.
Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
Diffstat (limited to 'net/sctp/chunk.c')
-rw-r--r-- | net/sctp/chunk.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/net/sctp/chunk.c b/net/sctp/chunk.c index 645577ddc33e..acf7c4d128f7 100644 --- a/net/sctp/chunk.c +++ b/net/sctp/chunk.c | |||
@@ -59,6 +59,7 @@ static void sctp_datamsg_init(struct sctp_datamsg *msg) | |||
59 | msg->can_abandon = 0; | 59 | msg->can_abandon = 0; |
60 | msg->expires_at = 0; | 60 | msg->expires_at = 0; |
61 | INIT_LIST_HEAD(&msg->chunks); | 61 | INIT_LIST_HEAD(&msg->chunks); |
62 | msg->msg_size = 0; | ||
62 | } | 63 | } |
63 | 64 | ||
64 | /* Allocate and initialize datamsg. */ | 65 | /* Allocate and initialize datamsg. */ |
@@ -155,6 +156,7 @@ static void sctp_datamsg_assign(struct sctp_datamsg *msg, struct sctp_chunk *chu | |||
155 | { | 156 | { |
156 | sctp_datamsg_hold(msg); | 157 | sctp_datamsg_hold(msg); |
157 | chunk->msg = msg; | 158 | chunk->msg = msg; |
159 | msg->msg_size += chunk->skb->len; | ||
158 | } | 160 | } |
159 | 161 | ||
160 | 162 | ||