Blame view

include/linux/net_tstamp.h 3.29 KB
cb9eff097   Patrick Ohly   net: new user spa...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
  /*
   * Userspace API for hardware time stamping of network packets
   *
   * Copyright (C) 2008,2009 Intel Corporation
   * Author: Patrick Ohly <patrick.ohly@intel.com>
   *
   */
  
  #ifndef _NET_TIMESTAMPING_H
  #define _NET_TIMESTAMPING_H
  
  #include <linux/socket.h>   /* for SO_TIMESTAMPING */
  
  /* SO_TIMESTAMPING gets an integer bit field comprised of these values */
  enum {
  	SOF_TIMESTAMPING_TX_HARDWARE = (1<<0),
  	SOF_TIMESTAMPING_TX_SOFTWARE = (1<<1),
  	SOF_TIMESTAMPING_RX_HARDWARE = (1<<2),
  	SOF_TIMESTAMPING_RX_SOFTWARE = (1<<3),
  	SOF_TIMESTAMPING_SOFTWARE = (1<<4),
  	SOF_TIMESTAMPING_SYS_HARDWARE = (1<<5),
  	SOF_TIMESTAMPING_RAW_HARDWARE = (1<<6),
  	SOF_TIMESTAMPING_MASK =
  	(SOF_TIMESTAMPING_RAW_HARDWARE - 1) |
  	SOF_TIMESTAMPING_RAW_HARDWARE
  };
  
  /**
   * struct hwtstamp_config - %SIOCSHWTSTAMP parameter
   *
   * @flags:	no flags defined right now, must be zero
   * @tx_type:	one of HWTSTAMP_TX_*
   * @rx_type:	one of one of HWTSTAMP_FILTER_*
   *
   * %SIOCSHWTSTAMP expects a &struct ifreq with a ifr_data pointer to
   * this structure. dev_ifsioc() in the kernel takes care of the
   * translation between 32 bit userspace and 64 bit kernel. The
   * structure is intentionally chosen so that it has the same layout on
   * 32 and 64 bit systems, don't break this!
   */
  struct hwtstamp_config {
  	int flags;
  	int tx_type;
  	int rx_filter;
  };
  
  /* possible values for hwtstamp_config->tx_type */
4dc360c5e   Richard Cochran   net: validate HWT...
48
  enum hwtstamp_tx_types {
cb9eff097   Patrick Ohly   net: new user spa...
49
50
51
52
53
54
55
56
57
58
59
60
61
62
  	/*
  	 * No outgoing packet will need hardware time stamping;
  	 * should a packet arrive which asks for it, no hardware
  	 * time stamping will be done.
  	 */
  	HWTSTAMP_TX_OFF,
  
  	/*
  	 * Enables hardware time stamping for outgoing packets;
  	 * the sender of the packet decides which are to be
  	 * time stamped by setting %SOF_TIMESTAMPING_TX_SOFTWARE
  	 * before sending the packet.
  	 */
  	HWTSTAMP_TX_ON,
3ce23fa97   Richard Cochran   net: introduce pt...
63
64
65
66
67
68
69
70
71
  
  	/*
  	 * Enables time stamping for outgoing packets just as
  	 * HWTSTAMP_TX_ON does, but also enables time stamp insertion
  	 * directly into Sync packets. In this case, transmitted Sync
  	 * packets will not received a time stamp via the socket error
  	 * queue.
  	 */
  	HWTSTAMP_TX_ONESTEP_SYNC,
cb9eff097   Patrick Ohly   net: new user spa...
72
73
74
  };
  
  /* possible values for hwtstamp_config->rx_filter */
4dc360c5e   Richard Cochran   net: validate HWT...
75
  enum hwtstamp_rx_filters {
cb9eff097   Patrick Ohly   net: new user spa...
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
  	/* time stamp no incoming packet at all */
  	HWTSTAMP_FILTER_NONE,
  
  	/* time stamp any incoming packet */
  	HWTSTAMP_FILTER_ALL,
  
  	/* return value: time stamp all packets requested plus some others */
  	HWTSTAMP_FILTER_SOME,
  
  	/* PTP v1, UDP, any kind of event packet */
  	HWTSTAMP_FILTER_PTP_V1_L4_EVENT,
  	/* PTP v1, UDP, Sync packet */
  	HWTSTAMP_FILTER_PTP_V1_L4_SYNC,
  	/* PTP v1, UDP, Delay_req packet */
  	HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ,
  	/* PTP v2, UDP, any kind of event packet */
  	HWTSTAMP_FILTER_PTP_V2_L4_EVENT,
  	/* PTP v2, UDP, Sync packet */
  	HWTSTAMP_FILTER_PTP_V2_L4_SYNC,
  	/* PTP v2, UDP, Delay_req packet */
  	HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ,
  
  	/* 802.AS1, Ethernet, any kind of event packet */
  	HWTSTAMP_FILTER_PTP_V2_L2_EVENT,
  	/* 802.AS1, Ethernet, Sync packet */
  	HWTSTAMP_FILTER_PTP_V2_L2_SYNC,
  	/* 802.AS1, Ethernet, Delay_req packet */
  	HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ,
  
  	/* PTP v2/802.AS1, any layer, any kind of event packet */
  	HWTSTAMP_FILTER_PTP_V2_EVENT,
  	/* PTP v2/802.AS1, any layer, Sync packet */
  	HWTSTAMP_FILTER_PTP_V2_SYNC,
  	/* PTP v2/802.AS1, any layer, Delay_req packet */
  	HWTSTAMP_FILTER_PTP_V2_DELAY_REQ,
  };
  
  #endif /* _NET_TIMESTAMPING_H */