Skip to content
  • Eric Dumazet's avatar
    net: Consistent skb timestamping · 3b098e2d
    Eric Dumazet authored
    
    
    With RPS inclusion, skb timestamping is not consistent in RX path.
    
    If netif_receive_skb() is used, its deferred after RPS dispatch.
    
    If netif_rx() is used, its done before RPS dispatch.
    
    This can give strange tcpdump timestamps results.
    
    I think timestamping should be done as soon as possible in the receive
    path, to get meaningful values (ie timestamps taken at the time packet
    was delivered by NIC driver to our stack), even if NAPI already can
    defer timestamping a bit (RPS can help to reduce the gap)
    
    Tom Herbert prefer to sample timestamps after RPS dispatch. In case
    sampling is expensive (HPET/acpi_pm on x86), this makes sense.
    
    Let admins switch from one mode to another, using a new
    sysctl, /proc/sys/net/core/netdev_tstamp_prequeue
    
    Its default value (1), means timestamps are taken as soon as possible,
    before backlog queueing, giving accurate timestamps.
    
    Setting a 0 value permits to sample timestamps when processing backlog,
    after RPS dispatch, to lower the load of the pre-RPS cpu.
    
    Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    3b098e2d