summaryrefslogtreecommitdiffstats
path: root/net/sctp/chunk.c
diff options
context:
space:
mode:
authorVlad Yasevich2010-05-01 04:41:10 +0200
committerVlad Yasevich2010-05-01 04:41:10 +0200
commit0e3aef8d09a8c11e3fb83cdcb24b5bc7421b3726 (patch)
tree62e19d24380a9a8308d0ef3f2186742944971a5c /net/sctp/chunk.c
parentsctp: Optimize computation of highest new tsn in SACK. (diff)
downloadkernel-qcow2-linux-0e3aef8d09a8c11e3fb83cdcb24b5bc7421b3726.tar.gz
kernel-qcow2-linux-0e3aef8d09a8c11e3fb83cdcb24b5bc7421b3726.tar.xz
kernel-qcow2-linux-0e3aef8d09a8c11e3fb83cdcb24b5bc7421b3726.zip
sctp: Tag messages that can be Nagle delayed at creation.
When we create the sctp_datamsg and fragment the user data, we know exactly if we are sending full segments or not and how they might be bundled. During this time, we can mark messages a Nagle capable or not. This makes the check at transmit time much simpler. Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
Diffstat (limited to 'net/sctp/chunk.c')
-rw-r--r--net/sctp/chunk.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/net/sctp/chunk.c b/net/sctp/chunk.c
index 3eab6db59a37..476caaf100ed 100644
--- a/net/sctp/chunk.c
+++ b/net/sctp/chunk.c
@@ -58,9 +58,9 @@ static void sctp_datamsg_init(struct sctp_datamsg *msg)
msg->send_failed = 0;
msg->send_error = 0;
msg->can_abandon = 0;
+ msg->can_delay = 1;
msg->expires_at = 0;
INIT_LIST_HEAD(&msg->chunks);
- msg->msg_size = 0;
}
/* Allocate and initialize datamsg. */
@@ -157,7 +157,6 @@ static void sctp_datamsg_assign(struct sctp_datamsg *msg, struct sctp_chunk *chu
{
sctp_datamsg_hold(msg);
chunk->msg = msg;
- msg->msg_size += chunk->skb->len;
}
@@ -247,6 +246,7 @@ struct sctp_datamsg *sctp_datamsg_from_user(struct sctp_association *asoc,
if (msg_len >= first_len) {
msg_len -= first_len;
whole = 1;
+ msg->can_delay = 0;
}
/* How many full sized? How many bytes leftover? */