linux/include/linux/net_tstamp.h
<<
>>
Prefs
   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 */
  15enum {
  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 */
  41struct hwtstamp_config {
  42        int flags;
  43        int tx_type;
  44        int rx_filter;
  45};
  46
  47/* possible values for hwtstamp_config->tx_type */
  48enum hwtstamp_tx_types {
  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         * Enables time stamping for outgoing packets just as
  66         * HWTSTAMP_TX_ON does, but also enables time stamp insertion
  67         * directly into Sync packets. In this case, transmitted Sync
  68         * packets will not received a time stamp via the socket error
  69         * queue.
  70         */
  71        HWTSTAMP_TX_ONESTEP_SYNC,
  72};
  73
  74/* possible values for hwtstamp_config->rx_filter */
  75enum hwtstamp_rx_filters {
  76        /* time stamp no incoming packet at all */
  77        HWTSTAMP_FILTER_NONE,
  78
  79        /* time stamp any incoming packet */
  80        HWTSTAMP_FILTER_ALL,
  81
  82        /* return value: time stamp all packets requested plus some others */
  83        HWTSTAMP_FILTER_SOME,
  84
  85        /* PTP v1, UDP, any kind of event packet */
  86        HWTSTAMP_FILTER_PTP_V1_L4_EVENT,
  87        /* PTP v1, UDP, Sync packet */
  88        HWTSTAMP_FILTER_PTP_V1_L4_SYNC,
  89        /* PTP v1, UDP, Delay_req packet */
  90        HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ,
  91        /* PTP v2, UDP, any kind of event packet */
  92        HWTSTAMP_FILTER_PTP_V2_L4_EVENT,
  93        /* PTP v2, UDP, Sync packet */
  94        HWTSTAMP_FILTER_PTP_V2_L4_SYNC,
  95        /* PTP v2, UDP, Delay_req packet */
  96        HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ,
  97
  98        /* 802.AS1, Ethernet, any kind of event packet */
  99        HWTSTAMP_FILTER_PTP_V2_L2_EVENT,
 100        /* 802.AS1, Ethernet, Sync packet */
 101        HWTSTAMP_FILTER_PTP_V2_L2_SYNC,
 102        /* 802.AS1, Ethernet, Delay_req packet */
 103        HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ,
 104
 105        /* PTP v2/802.AS1, any layer, any kind of event packet */
 106        HWTSTAMP_FILTER_PTP_V2_EVENT,
 107        /* PTP v2/802.AS1, any layer, Sync packet */
 108        HWTSTAMP_FILTER_PTP_V2_SYNC,
 109        /* PTP v2/802.AS1, any layer, Delay_req packet */
 110        HWTSTAMP_FILTER_PTP_V2_DELAY_REQ,
 111};
 112
 113#endif /* _NET_TIMESTAMPING_H */
 114
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.