title: Linux kernel UDP reception timestamp
body: <p>I've been reading the <a href="https://www.kernel.org/doc/Documentation/networking/timestamping.txt" rel="noreferrer">network timestamping</a> documentation of linux kernel and there is something that it's not clear to me.</p>
  
  <p>Where is the timestamp provided by <code>SO_TIMESTAMPNS</code> generated? In hardware or in the kernel? If so it is gerated as soon as an interrupt for a new packet is raised?</p>
  
  <p><code>SO_TIMESTAMPING</code> should also allow the generation of hardware timestamps. Is this supported by all the NICs? How does <code>SO_TIMESTAMPING</code> with options <code>SOF_TIMESTAMPING_RX_HARDWARE and</code> <code>SO_TIMESTAMPNS</code>?
  In that case is the hardware timestamp referring to the system clock or to the NIC clock? In the second case how to retrieve the NIC clock to compute elapsed time?</p>