aboutsummaryrefslogtreecommitdiffstats
path: root/net/sctp/sm_sideeffect.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/sctp/sm_sideeffect.c')
-rw-r--r--net/sctp/sm_sideeffect.c8
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