]> Pileus Git - ~andy/linux/blobdiff - net/sctp/output.c
sctp: Do not reset the packet during sctp_packet_config().
[~andy/linux] / net / sctp / output.c
index fad261d41ec2f6fdbb1eb3d323b1a0445f29305a..bcc4590ccaf21bb988a7827614f71a39ffa31318 100644 (file)
@@ -92,7 +92,6 @@ struct sctp_packet *sctp_packet_config(struct sctp_packet *packet,
        SCTP_DEBUG_PRINTK("%s: packet:%p vtag:0x%x\n", __func__,
                          packet, vtag);
 
-       sctp_packet_reset(packet);
        packet->vtag = vtag;
 
        if (ecn_capable && sctp_packet_empty(packet)) {
@@ -429,24 +428,17 @@ int sctp_packet_transmit(struct sctp_packet *packet)
        list_for_each_entry_safe(chunk, tmp, &packet->chunk_list, list) {
                list_del_init(&chunk->list);
                if (sctp_chunk_is_data(chunk)) {
+                       /* 6.3.1 C4) When data is in flight and when allowed
+                        * by rule C5, a new RTT measurement MUST be made each
+                        * round trip.  Furthermore, new RTT measurements
+                        * SHOULD be made no more than once per round-trip
+                        * for a given destination transport address.
+                        */
 
-                       if (!chunk->resent) {
-
-                               /* 6.3.1 C4) When data is in flight and when allowed
-                                * by rule C5, a new RTT measurement MUST be made each
-                                * round trip.  Furthermore, new RTT measurements
-                                * SHOULD be made no more than once per round-trip
-                                * for a given destination transport address.
-                                */
-
-                               if (!tp->rto_pending) {
-                                       chunk->rtt_in_progress = 1;
-                                       tp->rto_pending = 1;
-                               }
+                       if (!tp->rto_pending) {
+                               chunk->rtt_in_progress = 1;
+                               tp->rto_pending = 1;
                        }
-
-                       chunk->resent = 1;
-
                        has_data = 1;
                }
 
@@ -681,7 +673,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;
                }