aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/net/sctp/structs.h3
-rw-r--r--net/sctp/output.c25
-rw-r--r--net/sctp/outqueue.c1
-rw-r--r--net/sctp/sm_make_chunk.c1
4 files changed, 10 insertions, 20 deletions
diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h
index ff3017744711..03deffb1886b 100644
--- a/include/net/sctp/structs.h
+++ b/include/net/sctp/structs.h
@@ -757,7 +757,6 @@ struct sctp_chunk {
757#define SCTP_NEED_FRTX 0x1 757#define SCTP_NEED_FRTX 0x1
758#define SCTP_DONT_FRTX 0x2 758#define SCTP_DONT_FRTX 0x2
759 __u16 rtt_in_progress:1, /* This chunk used for RTT calc? */ 759 __u16 rtt_in_progress:1, /* This chunk used for RTT calc? */
760 resent:1, /* Has this chunk ever been resent. */
761 has_tsn:1, /* Does this chunk have a TSN yet? */ 760 has_tsn:1, /* Does this chunk have a TSN yet? */
762 has_ssn:1, /* Does this chunk have a SSN yet? */ 761 has_ssn:1, /* Does this chunk have a SSN yet? */
763 singleton:1, /* Only chunk in the packet? */ 762 singleton:1, /* Only chunk in the packet? */
@@ -1065,7 +1064,7 @@ void sctp_transport_route(struct sctp_transport *, union sctp_addr *,
1065 struct sctp_sock *); 1064 struct sctp_sock *);
1066void sctp_transport_pmtu(struct sctp_transport *); 1065void sctp_transport_pmtu(struct sctp_transport *);
1067void sctp_transport_free(struct sctp_transport *); 1066void sctp_transport_free(struct sctp_transport *);
1068void sctp_transport_reset_timers(struct sctp_transport *, int); 1067void sctp_transport_reset_timers(struct sctp_transport *);
1069void sctp_transport_hold(struct sctp_transport *); 1068void sctp_transport_hold(struct sctp_transport *);
1070void sctp_transport_put(struct sctp_transport *); 1069void sctp_transport_put(struct sctp_transport *);
1071void sctp_transport_update_rto(struct sctp_transport *, __u32); 1070void sctp_transport_update_rto(struct sctp_transport *, __u32);
diff --git a/net/sctp/output.c b/net/sctp/output.c
index fad261d41ec2..35e49b9df4e0 100644
--- a/net/sctp/output.c
+++ b/net/sctp/output.c
@@ -429,24 +429,17 @@ int sctp_packet_transmit(struct sctp_packet *packet)
429 list_for_each_entry_safe(chunk, tmp, &packet->chunk_list, list) { 429 list_for_each_entry_safe(chunk, tmp, &packet->chunk_list, list) {
430 list_del_init(&chunk->list); 430 list_del_init(&chunk->list);
431 if (sctp_chunk_is_data(chunk)) { 431 if (sctp_chunk_is_data(chunk)) {
432 /* 6.3.1 C4) When data is in flight and when allowed
433 * by rule C5, a new RTT measurement MUST be made each
434 * round trip. Furthermore, new RTT measurements
435 * SHOULD be made no more than once per round-trip
436 * for a given destination transport address.
437 */
432 438
433 if (!chunk->resent) { 439 if (!tp->rto_pending) {
434 440 chunk->rtt_in_progress = 1;
435 /* 6.3.1 C4) When data is in flight and when allowed 441 tp->rto_pending = 1;
436 * by rule C5, a new RTT measurement MUST be made each
437 * round trip. Furthermore, new RTT measurements
438 * SHOULD be made no more than once per round-trip
439 * for a given destination transport address.
440 */
441
442 if (!tp->rto_pending) {
443 chunk->rtt_in_progress = 1;
444 tp->rto_pending = 1;
445 }
446 } 442 }
447
448 chunk->resent = 1;
449
450 has_data = 1; 443 has_data = 1;
451 } 444 }
452 445
diff --git a/net/sctp/outqueue.c b/net/sctp/outqueue.c
index a4fe7dee76e8..4e551ba8998c 100644
--- a/net/sctp/outqueue.c
+++ b/net/sctp/outqueue.c
@@ -1405,7 +1405,6 @@ static void sctp_check_transmitted(struct sctp_outq *q,
1405 * instance). 1405 * instance).
1406 */ 1406 */
1407 if (!tchunk->tsn_gap_acked && 1407 if (!tchunk->tsn_gap_acked &&
1408 !tchunk->resent &&
1409 tchunk->rtt_in_progress) { 1408 tchunk->rtt_in_progress) {
1410 tchunk->rtt_in_progress = 0; 1409 tchunk->rtt_in_progress = 0;
1411 rtt = jiffies - tchunk->sent_at; 1410 rtt = jiffies - tchunk->sent_at;
diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c
index 33aed1c6cbd6..24effdf471eb 100644
--- a/net/sctp/sm_make_chunk.c
+++ b/net/sctp/sm_make_chunk.c
@@ -1205,7 +1205,6 @@ struct sctp_chunk *sctp_chunkify(struct sk_buff *skb,
1205 INIT_LIST_HEAD(&retval->list); 1205 INIT_LIST_HEAD(&retval->list);
1206 retval->skb = skb; 1206 retval->skb = skb;
1207 retval->asoc = (struct sctp_association *)asoc; 1207 retval->asoc = (struct sctp_association *)asoc;
1208 retval->resent = 0;
1209 retval->has_tsn = 0; 1208 retval->has_tsn = 0;
1210 retval->has_ssn = 0; 1209 retval->has_ssn = 0;
1211 retval->rtt_in_progress = 0; 1210 retval->rtt_in_progress = 0;