From 6fe5d9edd73669b003a295095d16970cbcf06665 Mon Sep 17 00:00:00 2001 From: Vlad Yasevich Date: Fri, 30 Apr 2010 22:41:10 -0400 Subject: [PATCH] --- yaml --- r: 194648 b: refs/heads/master c: 0e3aef8d09a8c11e3fb83cdcb24b5bc7421b3726 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/include/net/sctp/structs.h | 8 +++----- trunk/net/sctp/chunk.c | 4 ++-- trunk/net/sctp/output.c | 2 +- 4 files changed, 7 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index d31d66246c23..2e1b6057a626 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: bfa0d9843ac5feb9667990706b4524390fee4df9 +refs/heads/master: 0e3aef8d09a8c11e3fb83cdcb24b5bc7421b3726 diff --git a/trunk/include/net/sctp/structs.h b/trunk/include/net/sctp/structs.h index d463296d9f79..9d44aef365da 100644 --- a/trunk/include/net/sctp/structs.h +++ b/trunk/include/net/sctp/structs.h @@ -643,17 +643,15 @@ struct sctp_pf { struct sctp_datamsg { /* Chunks waiting to be submitted to lower layer. */ struct list_head chunks; - /* Chunks that have been transmitted. */ - size_t msg_size; /* Reference counting. */ atomic_t refcnt; /* When is this message no longer interesting to the peer? */ unsigned long expires_at; /* Did the messenge fail to send? */ int send_error; - char send_failed; - /* Control whether chunks from this message can be abandoned. */ - char can_abandon; + u8 send_failed:1, + can_abandon:1, /* can chunks from this message can be abandoned. */ + can_delay; /* should this message be Nagle delayed */ }; struct sctp_datamsg *sctp_datamsg_from_user(struct sctp_association *, diff --git a/trunk/net/sctp/chunk.c b/trunk/net/sctp/chunk.c index 3eab6db59a37..476caaf100ed 100644 --- a/trunk/net/sctp/chunk.c +++ b/trunk/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? */ diff --git a/trunk/net/sctp/output.c b/trunk/net/sctp/output.c index 35e49b9df4e0..a646681f5acd 100644 --- a/trunk/net/sctp/output.c +++ b/trunk/net/sctp/output.c @@ -674,7 +674,7 @@ static sctp_xmit_t sctp_packet_can_append_data(struct sctp_packet *packet, * Don't delay large message writes that may have been * fragmeneted into small peices. */ - if ((len < max) && (chunk->msg->msg_size < max)) { + if ((len < max) && chunk->msg->can_delay) { retval = SCTP_XMIT_NAGLE_DELAY; goto finish; }