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