diff options
-rw-r--r-- | include/net/sctp/structs.h | 3 | ||||
-rw-r--r-- | net/sctp/output.c | 25 | ||||
-rw-r--r-- | net/sctp/outqueue.c | 1 | ||||
-rw-r--r-- | net/sctp/sm_make_chunk.c | 1 |
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 *); |
1066 | void sctp_transport_pmtu(struct sctp_transport *); | 1065 | void sctp_transport_pmtu(struct sctp_transport *); |
1067 | void sctp_transport_free(struct sctp_transport *); | 1066 | void sctp_transport_free(struct sctp_transport *); |
1068 | void sctp_transport_reset_timers(struct sctp_transport *, int); | 1067 | void sctp_transport_reset_timers(struct sctp_transport *); |
1069 | void sctp_transport_hold(struct sctp_transport *); | 1068 | void sctp_transport_hold(struct sctp_transport *); |
1070 | void sctp_transport_put(struct sctp_transport *); | 1069 | void sctp_transport_put(struct sctp_transport *); |
1071 | void sctp_transport_update_rto(struct sctp_transport *, __u32); | 1070 | void 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; |