Do packetu se musí vejít "timestamp", z kterého se po návratu odečte ten čas.
Pokud je packet příliš malý (viz kód), čas se nepočítá (timing = 0).
// iputils-20180629, ping.c
if (datalen >= sizeof(struct timeval)) /* can we time transfer */
timing = 1;
U mě je tedy sizeof(struct timeval) rovno 16, takže ping -s 16 čas ukazuje, ale ping -s 15 už ne.