Index: tcp_subr.c =================================================================== --- tcp_subr.c +++ tcp_subr.c @@ -1677,6 +1677,7 @@ { struct tcpcb *tp; struct socket *so; + u_int oldmaxseg; INP_WLOCK_ASSERT(inp); if ((inp->inp_flags & INP_TIMEWAIT) || @@ -1686,6 +1687,7 @@ tp = intotcpcb(inp); KASSERT(tp != NULL, ("tcp_mtudisc: tp == NULL")); + oldmaxseg = tp->t_maxseg; tcp_mss_update(tp, -1, mtuoffer, NULL, NULL); so = inp->inp_socket; @@ -1694,6 +1696,11 @@ if (so->so_snd.sb_hiwat < tp->t_maxseg) tp->t_maxseg = so->so_snd.sb_hiwat; SOCKBUF_UNLOCK(&so->so_snd); + + if (tp->t_maxseg >= oldmaxseg) { + //TCPSTAT_INC(tcps_mtuignore); + return (inp); + } TCPSTAT_INC(tcps_mturesent); tp->t_rtttime = 0;