- 论坛徽章:
- 0
|
内核版本:2.6.34
tcp_input.c: tcp_fastretrans_alert()函数,如下:- if (icsk->icsk_ca_state <= TCP_CA_Disorder)
- tcp_try_undo_dsack(sk);
复制代码 这里判断是否需要从disorder恢复,然后我们看看tcp_try_undo_dsack这个函数:- /* Try to undo cwnd reduction, because D-SACKs acked all retransmitted data */
- static void tcp_try_undo_dsack(struct sock *sk)
- {
- struct tcp_sock *tp = tcp_sk(sk);
- if (tp->undo_marker && !tp->undo_retrans) {
- DBGUNDO(sk, "D-SACK");
- tcp_undo_cwr(sk, true);
- tp->undo_marker = 0;
- NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPDSACKUNDO);
- }
- }
复制代码 这里为什么需要调用undo_cwr? |
|