Lines Matching +full:ts +full:- +full:attached
1 .. SPDX-License-Identifier: GPL-2.0
43 -------------------------------------------------------------
71 ----------------------------------------------------------------------
137 over-report measurement, because the timestamp is generated when all
179 is derived from a per-socket u32 counter (that wraps). For datagram
226 received the packet and its length at layer 2. A valid (non-zero)
261 cmsg->cmsg_level = SOL_SOCKET;
262 cmsg->cmsg_type = SO_TIMESTAMPING;
263 cmsg->cmsg_len = CMSG_LEN(sizeof(__u32));
281 -------------------------
291 correlating a timestamp with data is non-trivial. A range of bytes
320 relevant sequence number in skb_shinfo(skb)->tskey. Because an skbuff
350 ----------------------------
358 struct timespec ts[3];
364 struct __kernel_timespec ts[3];
373 feature. At least one field is non-zero at any time. Most timestamps
374 are passed in ts[0]. Hardware timestamps are passed in ts[2].
376 ts[1] used to hold hardware timestamps converted to system time.
380 as linuxptp. For the PTP clock API, see Documentation/driver-api/ptp.rst.
385 in ts[0] when a real software timestamp is missing. This happens also
392 socket's error queue with the send timestamp(s) attached. A process
396 outgoing data packet with two ancillary messages attached.
417 is the first if ts[2] is non-zero, the second otherwise, in which
418 case the timestamp is stored in ts[0].
445 Reading from the error queue is always a non-blocking operation. To
460 implicitly defined. ts[0] holds a software timestamp if set, ts[1]
461 is again deprecated and ts[2] holds a hardware timestamp if set.
481 the requested fine-grained filtering for incoming packets is not
508 /* possible values for hwtstamp_config->tx_type */
526 /* possible values for hwtstamp_config->rx_filter */
546 --------------------------------------------------------
566 - In hard_start_xmit(), check if (skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP)
567 is set no-zero. If yes, then the driver is expected to do hardware time
569 - If this is possible for the skb and requested, then declare
571 SKBTX_IN_PROGRESS in skb_shinfo(skb)->tx_flags , e.g. with::
573 skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;
579 - Driver should call skb_tx_timestamp() as close to passing sk_buff to hardware
582 - As soon as the driver has sent the packet and/or obtained a
594 ----------------------------------------------------------
613 When a DSA switch is attached to a host port, PTP synchronization has to
625 handling in the driver for the host port it is attached to. However, when the
637 - ``.port_txtstamp()``: The driver is passed a clone of the timestampable skb
645 a pointer to its clone, in ``DSA_SKB_CB(skb)->clone``, to ease the driver's
648 - ``.port_rxtstamp()``: The original (and only) timestampable skb is provided
651 available in-band (through metadata in the DSA header, or attached in other
652 ways to the packet), or out-of-band (through another RX timestamping FIFO).
667 mii_timestamper`` and add a pointer to it in ``phydev->mii_ts``. The presence
675 - Checking, in ``.ndo_do_ioctl``, whether ``phy_has_hwtstamp(netdev->phydev)``
679 - On RX, special intervention may or may not be needed, depending on the
682 ``skb_defer_rx_timestamp(skb)`` is necessary or not - and if it is, don't
684 enabled, and ``skb->dev->phydev->mii_ts`` exists, its ``.rxtstamp()`` hook
695 - On TX, again, special intervention might or might not be needed. The
696 function that calls the ``mii_ts->txtstamp()`` hook is named
717 Stacked PHCs, especially DSA (but not only) - since that doesn't require any
719 all possible code paths - is that they uncover bugs which were impossible to
723 skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;
734 the ``.ndo_do_ioctl`` ("``priv->hwtstamp_tx_enabled == true``") and the
735 current skb requires a TX timestamp ("``skb_shinfo(skb)->tx_flags &
737 "``skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS``" flag. Note: as
745 "``skb_shinfo(skb)->tx_flags & SKBTX_IN_PROGRESS``" was set. With a stacked
752 "``skb_shinfo(skb)->tx_flags & SKBTX_IN_PROGRESS``", but also for
753 "``priv->hwtstamp_tx_enabled == true``". Because the rest of the system ensures