| 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 */ |