[SCTP]: Force update of the rto when processing HB-ACK
When processing a HEARTBEAT-ACK it's possible that the transport rto timers will not be updated because a prior T3-RTX processing would have cleared the rto_pending flag on the transport. However, if we received a valid HEARTBEAT-ACK, we want to force update the rto variables, so re-set the rto_pending flag before calling sctp_transport_update_rto(). Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com> Signed-off-by: Sridhar Samudrala <sri@us.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
29556526b9
commit
e533ca16f3
|
@ -621,7 +621,13 @@ static void sctp_cmd_transport_on(sctp_cmd_seq_t *cmds,
|
||||||
/* The receiver of the HEARTBEAT ACK should also perform an
|
/* The receiver of the HEARTBEAT ACK should also perform an
|
||||||
* RTT measurement for that destination transport address
|
* RTT measurement for that destination transport address
|
||||||
* using the time value carried in the HEARTBEAT ACK chunk.
|
* using the time value carried in the HEARTBEAT ACK chunk.
|
||||||
|
* If the transport's rto_pending variable has been cleared,
|
||||||
|
* it was most likely due to a retransmit. However, we want
|
||||||
|
* to re-enable it to properly update the rto.
|
||||||
*/
|
*/
|
||||||
|
if (t->rto_pending == 0)
|
||||||
|
t->rto_pending = 1;
|
||||||
|
|
||||||
hbinfo = (sctp_sender_hb_info_t *) chunk->skb->data;
|
hbinfo = (sctp_sender_hb_info_t *) chunk->skb->data;
|
||||||
sctp_transport_update_rto(t, (jiffies - hbinfo->sent_at));
|
sctp_transport_update_rto(t, (jiffies - hbinfo->sent_at));
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue