STRUCT ICE_PTP_TX(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct ice_ptp_tx(9) β€” the Kernel API Manual, but make it a group chat πŸ’–

okay bestie, gather round, because today we're looking at struct ice_ptp_tx from the Kernel API Manual β€” it's the Tracking structure for all Tx timestamp requests on a port ✨ literally the little bookkeeper that keeps tabs on every single Tx timestamp ask your port has going on. no cap, it's giving main character energy for the ice driver's timestamping. πŸŽ€


✨ SYNOPSIS ✨

struct ice_ptp_tx {
    spinlock_t lock;
    struct ice_tx_tstamp *tstamps;
    unsigned long *in_use;
    unsigned long *stale;
    u8 block;
    u8 offset;
    u8 len;
    u8 init : 1;
    u8 calibrating : 1;
    u8 has_ready_bitmap : 1;
    s8 last_ll_ts_idx_read;
 };

like, that's the whole vibe right there πŸ¦‹


🧚 MEMBERS 🧚

  • lock β€” the lock that stops everyone from touching the fields of this struct at the same time. one at a time, besties, we're not animals πŸ’…
  • tstamps β€” an array of size len where the outstanding requests get stored. it's the lil holding pen 🫢
  • in_use β€” a bitmap of size len showing which slots are currently in use. occupied vibes only πŸ”₯
  • stale β€” a bitmap of size len marking the slots that have stale timestamps. lowkey expired, highkey still hanging around πŸ’€
  • block β€” tells you which memory block (quad or port) the timestamps are captured in. important lore πŸ“
  • offset β€” the offset into the timestamp block that gets you the real index. the secret little doorway πŸšͺ✨
  • len β€” the length of the tstamps and in_use fields. the size of the whole situation.
  • init β€” if true, the tracker is initialized. we're up and running, periodt βœ…
  • calibrating β€” if true, the PHY is out here calibrating the Tx offset. during this window, timestamps are temporarily disabled 😭 so like… hold that thought, bestie, the PHY is busy.
  • has_ready_bitmap β€” if true, the hardware has a valid Tx timestamp ready bitmap register πŸ‘‘ if false, it falls back to verifying new timestamp values against a previously cached copy. plan B is plan B, iykyk πŸ™ˆ
  • last_ll_ts_idx_read β€” the index of the last LL TS read by the FW. the receipts of where we last left off 🧾
real talk: calibrating means timestamps are temporarily disabled while the PHY does its thing β€” not a bug, just the plot 🎬

🌈 SEE ALSO 🌈

kernel file ./drivers/net/ethernet/intel/ice/ice_ptp.h and its friends:

  • struct ice_tx_tstamp(9)
  • enum ice_tx_tstamp_work(9)
  • struct ice_ptp_port(9)
  • struct ice_ptp_pin_desc(9)
  • struct ice_ptp(9)

go read them, they're all linked up like the friend group 🫢✨


and that's the whole page, bestie πŸ’– this one came straight out of ./drivers/net/ethernet/intel/ice with an October 2026 date on it β€” so when you're citing your sources for the group project, that's the vibe check you need. mwah, slay, go timestamp something responsibly. πŸ’…πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from