diff --git a/net/sctp/output.c b/net/sctp/output.c
index e25e2e20b63d4ef493b609596a02b0026a51d8f0..d0b84f6eba4dd49b9de2536707784c97b89a2102 100644
--- a/net/sctp/output.c
+++ b/net/sctp/output.c
@@ -697,13 +697,14 @@ static sctp_xmit_t sctp_packet_can_append_data(struct sctp_packet *packet,
 	 */
 	if (!sctp_sk(asoc->base.sk)->nodelay && sctp_packet_empty(packet) &&
 	    inflight && sctp_state(asoc, ESTABLISHED)) {
-		unsigned len = datasize + q->out_qlen;
+		unsigned max = transport->pathmtu - packet->overhead;
+		unsigned len = chunk->skb->len + q->out_qlen;
 
 		/* Check whether this chunk and all the rest of pending
 		 * data will fit or delay in hopes of bundling a full
 		 * sized packet.
 		 */
-		if (len < asoc->frag_point) {
+		if (len < max) {
 			retval = SCTP_XMIT_NAGLE_DELAY;
 			goto finish;
 		}