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 {
  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 */
  66enum {
  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 */
 105