Lines Matching +full:timing +full:- +full:role
1 .. SPDX-License-Identifier: GPL-2.0
43 -------------------------------------------------------------
59 -------------------------------------------------------------------
72 ----------------------------------------------------------------------
138 over-report measurement, because the timestamp is generated when all
181 is derived from a per-socket u32 counter (that wraps). For datagram
204 cmsg->cmsg_level = SOL_SOCKET;
205 cmsg->cmsg_type = SCM_TS_OPT_ID;
206 cmsg->cmsg_len = CMSG_LEN(sizeof(__u32));
222 a timestamp with counter N-1. SOF_TIMESTAMPING_OPT_ID_TCP
272 received the packet and its length at layer 2. A valid (non-zero)
297 ignore the unexpected non-zero value. But it makes behavior subtly
324 cmsg->cmsg_level = SOL_SOCKET;
325 cmsg->cmsg_type = SO_TIMESTAMPING;
326 cmsg->cmsg_len = CMSG_LEN(sizeof(__u32));
344 -------------------------
354 correlating a timestamp with data is non-trivial. A range of bytes
369 timing of measurement are chosen correctly. This challenge is no
383 relevant sequence number in skb_shinfo(skb)->tskey. Because an skbuff
392 autocork. After linux-4.7, a better way to prevent coalescing is
414 ----------------------------
437 feature. At least one field is non-zero at any time. Most timestamps
444 as linuxptp. For the PTP clock API, see Documentation/driver-api/ptp.rst.
481 is the first if ts[2] is non-zero, the second otherwise, in which
509 Reading from the error queue is always a non-blocking operation. To
574 If the requested fine-grained filtering for incoming packets is not
581 /* possible values for hwtstamp_config->tx_type */
599 /* possible values for hwtstamp_config->rx_filter */
619 --------------------------------------------------------
640 - In hard_start_xmit(), check if (skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP)
641 is set no-zero. If yes, then the driver is expected to do hardware time
643 - If this is possible for the skb and requested, then declare
645 SKBTX_IN_PROGRESS in skb_shinfo(skb)->tx_flags , e.g. with::
647 skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;
653 - Driver should call skb_tx_timestamp() as close to passing sk_buff to hardware
656 - As soon as the driver has sent the packet and/or obtained a
668 ----------------------------------------------------------
681 (otherwise completely unaware) host Ethernet interface, and perform the role of
709 - ``.port_txtstamp()``: a hook called prior to the transmission of
711 This is required for two-step timestamping, since the hardware
714 packet so that it can re-enqueue the packet back into the socket's
717 in skb->cb and enqueue a tx skb queue. Typically, a switch will have a
720 key-value pairs of PTP sequence ID/message type/domain number and the
728 One-step TX timestamping do not require packet cloning, since there is
729 no follow-up message required by the PTP protocol (because the
732 to be re-enqueued into its socket's error queue.
734 - ``.port_rxtstamp()``: On RX, the BPF classifier is run by DSA to
739 timestamps might either be available in-band (through metadata in the
740 DSA header, or attached in other ways to the packet), or out-of-band
749 These are devices that typically fulfill a Layer 1 role in the network stack,
756 mii_timestamper`` and add a pointer to it in ``phydev->mii_ts``. The presence
764 - Checking, in ``.ndo_eth_ioctl``, whether ``phy_has_hwtstamp(netdev->phydev)``
768 - On RX, special intervention may or may not be needed, depending on the
771 ``skb_defer_rx_timestamp(skb)`` is necessary or not - and if it is, don't
773 enabled, and ``skb->dev->phydev->mii_ts`` exists, its ``.rxtstamp()`` hook
784 - On TX, again, special intervention might or might not be needed. The
785 function that calls the ``mii_ts->txtstamp()`` hook is named
796 These perform the same role as timestamping Ethernet PHYs, save for the fact
806 Stacked PHCs, especially DSA (but not only) - since that doesn't require any
808 all possible code paths - is that they uncover bugs which were impossible to
812 skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;
823 the ``.ndo_eth_ioctl`` ("``priv->hwtstamp_tx_enabled == true``") and the
824 current skb requires a TX timestamp ("``skb_shinfo(skb)->tx_flags &
826 "``skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS``" flag. Note: as
834 "``skb_shinfo(skb)->tx_flags & SKBTX_IN_PROGRESS``" was set. With a stacked
841 "``skb_shinfo(skb)->tx_flags & SKBTX_IN_PROGRESS``", but also for
842 "``priv->hwtstamp_tx_enabled == true``". Because the rest of the system ensures