]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/commit
net-timestamp: add key to disambiguate concurrent datagrams
authorWillem de Bruijn <willemb@google.com>
Tue, 5 Aug 2014 02:11:47 +0000 (22:11 -0400)
committerDavid S. Miller <davem@davemloft.net>
Tue, 5 Aug 2014 23:35:54 +0000 (16:35 -0700)
commit09c2d251b70723650ba47e83571ff49281320f7c
treeb40d8ab4ed6533a357b885ca6184ab7e86537c22
parentb9f40e21ef4298650ab33e35740fa85bd57706d5
net-timestamp: add key to disambiguate concurrent datagrams

Datagrams timestamped on transmission can coexist in the kernel stack
and be reordered in packet scheduling. When reading looped datagrams
from the socket error queue it is not always possible to unique
correlate looped data with original send() call (for application
level retransmits). Even if possible, it may be expensive and complex,
requiring packet inspection.

Introduce a data-independent ID mechanism to associate timestamps with
send calls. Pass an ID alongside the timestamp in field ee_data of
sock_extended_err.

The ID is a simple 32 bit unsigned int that is associated with the
socket and incremented on each send() call for which software tx
timestamp generation is enabled.

The feature is enabled only if SOF_TIMESTAMPING_OPT_ID is set, to
avoid changing ee_data for existing applications that expect it 0.
The counter is reset each time the flag is reenabled. Reenabling
does not change the ID of already submitted data. It is possible
to receive out of order IDs if the timestamp stream is not quiesced
first.

Signed-off-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/skbuff.h
include/net/sock.h
include/uapi/linux/net_tstamp.h
net/core/skbuff.c
net/core/sock.c
net/ipv4/ip_output.c
net/ipv6/ip6_output.c