PLPMTU Discovery

We are trying to enable PLPMTU discovery using the options
net.inet.tcp.path_mtu_discovery=1
net.inet.tcp.pmtud_blackhole_detection=1

Is the discovery expected to work with TCP timestamp option enabled? It does not seem to work. If we disable TCP timestamp, then path MTU gets discovered.

By default TCP timestamp is enabled and the below code in tcp_outpu.c seems to be setting the flag TF2_PLPMTU_MAXSEGSNT before TCP option length is figured out.
Code:
if (len > 0) {
        if (len >= tp->t_maxseg)
            tp->t_flags2 |= TF2_PLPMTU_MAXSEGSNT;
        else
            tp->t_flags2 &= ~TF2_PLPMTU_MAXSEGSNT;
  }
Moving this code to post option len calculation, then discovery works. Is this correct or am I missing something?
 
Back
Top