diff options
Diffstat (limited to 'net/dccp/output.c')
-rw-r--r-- | net/dccp/output.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/net/dccp/output.c b/net/dccp/output.c index 992caedd7725..08ee5547a2f2 100644 --- a/net/dccp/output.c +++ b/net/dccp/output.c | |||
@@ -332,6 +332,8 @@ struct sk_buff *dccp_make_response(struct sock *sk, struct dst_entry *dst, | |||
332 | skb->dst = dst_clone(dst); | 332 | skb->dst = dst_clone(dst); |
333 | 333 | ||
334 | dreq = dccp_rsk(req); | 334 | dreq = dccp_rsk(req); |
335 | if (inet_rsk(req)->acked) /* increase ISS upon retransmission */ | ||
336 | dccp_inc_seqno(&dreq->dreq_iss); | ||
335 | DCCP_SKB_CB(skb)->dccpd_type = DCCP_PKT_RESPONSE; | 337 | DCCP_SKB_CB(skb)->dccpd_type = DCCP_PKT_RESPONSE; |
336 | DCCP_SKB_CB(skb)->dccpd_seq = dreq->dreq_iss; | 338 | DCCP_SKB_CB(skb)->dccpd_seq = dreq->dreq_iss; |
337 | 339 | ||
@@ -354,6 +356,8 @@ struct sk_buff *dccp_make_response(struct sock *sk, struct dst_entry *dst, | |||
354 | 356 | ||
355 | dccp_csum_outgoing(skb); | 357 | dccp_csum_outgoing(skb); |
356 | 358 | ||
359 | /* We use `acked' to remember that a Response was already sent. */ | ||
360 | inet_rsk(req)->acked = 1; | ||
357 | DCCP_INC_STATS(DCCP_MIB_OUTSEGS); | 361 | DCCP_INC_STATS(DCCP_MIB_OUTSEGS); |
358 | return skb; | 362 | return skb; |
359 | } | 363 | } |