Track success and failure of TCP PMTU probing.
Unified · Split
| @@ -278,6 +278,8 @@ enum · 277 unmodified lines | |||
| 278 | LINUX_MIB_TCPACKSKIPPEDCHALLENGE, /* TCPACKSkippedChallenge */ | 278 | LINUX_MIB_TCPACKSKIPPEDCHALLENGE, /* TCPACKSkippedChallenge */ |
| 279 | LINUX_MIB_TCPWINPROBE, /* TCPWinProbe */ | 279 | LINUX_MIB_TCPWINPROBE, /* TCPWinProbe */ |
| 280 | LINUX_MIB_TCPKEEPALIVE, /* TCPKeepAlive */ | 280 | LINUX_MIB_TCPKEEPALIVE, /* TCPKeepAlive */ |
| 281 | LINUX_MIB_TCPMTUPFAIL, /* TCPMTUPFail */ | ||
| 282 | LINUX_MIB_TCPMTUPSUCCESS, /* TCPMTUPSuccess */ | ||
| 281 | __LINUX_MIB_MAX | 283 | __LINUX_MIB_MAX |
| 282 | }; | 284 | }; |
| 283 | 285 | ||
| @@ -300,6 +300,8 @@ static const struct snmp_mib snmp4_net_list[] = { · 299 unmodified lines | |||
| 300 | SNMP_MIB_ITEM("TCPACKSkippedChallenge", LINUX_MIB_TCPACKSKIPPEDCHALLENGE), | 300 | SNMP_MIB_ITEM("TCPACKSkippedChallenge", LINUX_MIB_TCPACKSKIPPEDCHALLENGE), |
| 301 | SNMP_MIB_ITEM("TCPWinProbe", LINUX_MIB_TCPWINPROBE), | 301 | SNMP_MIB_ITEM("TCPWinProbe", LINUX_MIB_TCPWINPROBE), |
| 302 | SNMP_MIB_ITEM("TCPKeepAlive", LINUX_MIB_TCPKEEPALIVE), | 302 | SNMP_MIB_ITEM("TCPKeepAlive", LINUX_MIB_TCPKEEPALIVE), |
| 303 | SNMP_MIB_ITEM("TCPMTUPFail", LINUX_MIB_TCPMTUPFAIL), | ||
| 304 | SNMP_MIB_ITEM("TCPMTUPSuccess", LINUX_MIB_TCPMTUPSUCCESS), | ||
| 303 | SNMP_MIB_SENTINEL | 305 | SNMP_MIB_SENTINEL |
| 304 | }; | 306 | }; |
| 305 | 307 | ||
| @@ -2593,6 +2593,7 @@ static void tcp_mtup_probe_failed(struct sock *sk) · 2592 unmodified lines | |||
| 2593 | 2593 | ||
| 2594 | icsk->icsk_mtup.search_high = icsk->icsk_mtup.probe_size - 1; | 2594 | icsk->icsk_mtup.search_high = icsk->icsk_mtup.probe_size - 1; |
| 2595 | icsk->icsk_mtup.probe_size = 0; | 2595 | icsk->icsk_mtup.probe_size = 0; |
| 2596 | NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPMTUPFAIL); | ||
| 2596 | } | 2597 | } |
| 2597 | 2598 | ||
| 2598 | static void tcp_mtup_probe_success(struct sock *sk) | 2599 | static void tcp_mtup_probe_success(struct sock *sk) |
| @@ -2612,6 +2613,7 @@ static void tcp_mtup_probe_success(struct sock *sk) · 13 unmodified lines | |||
| 2612 | icsk->icsk_mtup.search_low = icsk->icsk_mtup.probe_size; | 2613 | icsk->icsk_mtup.search_low = icsk->icsk_mtup.probe_size; |
| 2613 | icsk->icsk_mtup.probe_size = 0; | 2614 | icsk->icsk_mtup.probe_size = 0; |
| 2614 | tcp_sync_mss(sk, icsk->icsk_pmtu_cookie); | 2615 | tcp_sync_mss(sk, icsk->icsk_pmtu_cookie); |
| 2616 | NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPMTUPSUCCESS); | ||
| 2615 | } | 2617 | } |
| 2616 | 2618 | ||
| 2617 | /* Do a simple retransmit without using the backoff mechanisms in | 2619 | /* Do a simple retransmit without using the backoff mechanisms in |