diff options
Diffstat (limited to 'net/sctp/sm_sideeffect.c')
-rw-r--r-- | net/sctp/sm_sideeffect.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c index 7bbc6156e455..6db77d1329f7 100644 --- a/net/sctp/sm_sideeffect.c +++ b/net/sctp/sm_sideeffect.c | |||
@@ -217,7 +217,7 @@ static int sctp_gen_sack(struct sctp_association *asoc, int force, | |||
217 | 217 | ||
218 | asoc->peer.sack_needed = 0; | 218 | asoc->peer.sack_needed = 0; |
219 | 219 | ||
220 | error = sctp_outq_tail(&asoc->outqueue, sack); | 220 | sctp_add_cmd_sf(commands, SCTP_CMD_REPLY, SCTP_CHUNK(sack)); |
221 | 221 | ||
222 | /* Stop the SACK timer. */ | 222 | /* Stop the SACK timer. */ |
223 | sctp_add_cmd_sf(commands, SCTP_CMD_TIMER_STOP, | 223 | sctp_add_cmd_sf(commands, SCTP_CMD_TIMER_STOP, |
@@ -621,7 +621,13 @@ static void sctp_cmd_transport_on(sctp_cmd_seq_t *cmds, | |||
621 | /* The receiver of the HEARTBEAT ACK should also perform an | 621 | /* The receiver of the HEARTBEAT ACK should also perform an |
622 | * RTT measurement for that destination transport address | 622 | * RTT measurement for that destination transport address |
623 | * using the time value carried in the HEARTBEAT ACK chunk. | 623 | * using the time value carried in the HEARTBEAT ACK chunk. |
624 | * If the transport's rto_pending variable has been cleared, | ||
625 | * it was most likely due to a retransmit. However, we want | ||
626 | * to re-enable it to properly update the rto. | ||
624 | */ | 627 | */ |
628 | if (t->rto_pending == 0) | ||
629 | t->rto_pending = 1; | ||
630 | |||
625 | hbinfo = (sctp_sender_hb_info_t *) chunk->skb->data; | 631 | hbinfo = (sctp_sender_hb_info_t *) chunk->skb->data; |
626 | sctp_transport_update_rto(t, (jiffies - hbinfo->sent_at)); | 632 | sctp_transport_update_rto(t, (jiffies - hbinfo->sent_at)); |
627 | 633 | ||