This is how it behaves now with simulated loss:
1) A packet with mtu 1448 gets dropped
2) We receive 3 dup acks to let us know about the loss
3) 1st retransmit attempt with mtu 1448 which also gets dropped, t_rxtshift = 1
4) 2nd retransmit attempt with mtu 1448 which also gets dropped, t_rxtshift = 2
5) Now, we decide to trigger blackhole mtu reduction and go from 1448 to 1188.
6) 3rd retransmit attempt now with newer mtu 1188 which gets dropped rxtshift = 3
7) 4th retransmit attempt now with mtu 1188 which also gets dropped rxtshift = 4
8) At this point, we further reduce MTU to 524, 5th retransmit attempt which gets dropped rxtshift = 5
9) 6th retransmit attempt with mtu 524 which gets dropped rxtshift = 6. Now, because 524 is net.inet.tcp.mssdflt, we don't clamp down more.
10) 7th retransmit attempt with mtu 524. If this gets dropped, we assume that this is not actually a blackhole and we undo the clamping down we've done and increment net.inet.tcp.pmtud_blackhole_failed
If a valid ack comes at any time during this, t_rxtshift gets reset to 0.