Функция tcp_mtu_probe в начале своей работы проводит ряд проверок: не используется ли SACK, не восстанавливаемся ли после перегрузки и т.д. Вот соответствующий кусок кода:
/* Not currently probing/verifying,
* not in recovery,
* have enough cwnd, and
* not SACKing (the variable headers throw things off) */
if (!icsk->icsk_mtup.enabled ||
icsk->icsk_mtup.probe_size ||
inet_csk(sk)->icsk_ca_state != TCP_CA_Open ||
tp->snd_cwnd < 11 ||
tp->rx_opt.num_sacks || tp->rx_opt.dsack)
return -1;