Lines Matching +full:software +full:- +full:generated

1 .. SPDX-License-Identifier: GPL-2.0
43 -------------------------------------------------------------
71 ----------------------------------------------------------------------
96 Timestamps may also be generated for reasons other than being
101 Request rx timestamps generated by the network adapter.
105 are generated just after a device driver hands a packet to the
109 Request tx timestamps generated by the network adapter. This flag
114 are generated in the device driver as close as possible, but always
129 a timestamp is generated at each layer. This allows for fine
137 over-report measurement, because the timestamp is generated when all
147 generated control message. Changes to the bits take immediate
153 Report any software timestamps when available.
159 Report hardware timestamps as generated by
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)
232 Request both hardware and software timestamps for outgoing packets
234 are enabled at the same time. If both timestamps are generated,
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
309 bytestreams, we chose that a timestamp is generated only when all
320 relevant sequence number in skb_shinfo(skb)->tskey. Because an skbuff
321 has only one such field, only one timestamp can be generated.
331 These precautions ensure that the timestamp is generated only when all
345 page (`man 7 socket`) describes how timestamps generated with
350 ----------------------------
373 feature. At least one field is non-zero at any time. Most timestamps
380 as linuxptp. For the PTP clock API, see Documentation/driver-api/ptp.rst.
384 software timestamp will be generated in the recvmsg() call and passed
385 in ts[0] when a real software timestamp is missing. This happens also
417 is the first if ts[2] is non-zero, the second otherwise, in which
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]
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 --------------------------------------------------------
564 Time stamps for outgoing packets are to be generated as follows:
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;
578 software generated time stamps by the network subsystem.
579 - Driver should call skb_tx_timestamp() as close to passing sk_buff to hardware
580 as possible. skb_tx_timestamp() provides a software time stamp if requested
582 - As soon as the driver has sent the packet and/or obtained a
588 should not fall back to software time stamping. The rationale is that
590 software time stamping and therefore could lead to unexpected deltas
594 ----------------------------------------------------------
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
700 drivers already perform for software timestamping purposes. Therefore, if a
701 MAC supports software timestamping, it does not need to do anything further
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