diff options
author | Marcelo Ricardo Leitner <marcelo.leitner@gmail.com> | 2016-04-01 19:05:48 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-04-05 21:39:44 +0200 |
commit | e43569e6d3c71eb266641c6297ea54f7ac66954f (patch) | |
tree | 7104bb69c8ffba181f3c296aa1534bc11bddd5fc /net/sctp/output.c | |
parent | bridge: Fix incorrect variable assignment on error path in br_sysfs_addbr (diff) | |
download | linux-e43569e6d3c71eb266641c6297ea54f7ac66954f.tar.xz linux-e43569e6d3c71eb266641c6297ea54f7ac66954f.zip |
sctp: flush if we can't fit another DATA chunk
There is no point on delaying the packet if we can't fit a single byte
of data on it anymore. So lets just reduce the threshold by the amount
that a data chunk with 4 bytes (rounding) would use.
v2: based on the right tree
Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sctp/output.c')
-rw-r--r-- | net/sctp/output.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/sctp/output.c b/net/sctp/output.c index 97745351d58c..9844fe573029 100644 --- a/net/sctp/output.c +++ b/net/sctp/output.c @@ -705,7 +705,8 @@ static sctp_xmit_t sctp_packet_can_append_data(struct sctp_packet *packet, /* Check whether this chunk and all the rest of pending data will fit * or delay in hopes of bundling a full sized packet. */ - if (chunk->skb->len + q->out_qlen >= transport->pathmtu - packet->overhead) + if (chunk->skb->len + q->out_qlen > + transport->pathmtu - packet->overhead - sizeof(sctp_data_chunk_t) - 4) /* Enough data queued to fill a packet */ return SCTP_XMIT_OK; |