i40e_ptp_restore_hw_time(9)
β¨ i40e_ptp_restore_hw_time β¨
okay bestie, quick vibe check before we dive in: this is a page from the Kernel API Manual, and the star of the show is i40e_ptp_restore_hw_time(9). she's a tiny function with one job and honestly? she ate. π
π NAME π
i40e_ptp_restore_hw_time β put the ptp_prev_hw_time plus the delta back into the PTP regs π«Ά
πΈ SYNOPSIS πΈ
void i40e_ptp_restore_hw_time (struct i40e_pf *pf );
π¦ ARGUMENTS π¦
pfβ the board private structure, aka the main character of this whole situation β¨
π DESCRIPTION π
so what are we actually doing here? we're restoring the PTP hardware clock registers, no cap. earlier in the timeline we cached the PTP hardware time as pf->ptp_prev_hw_time β that's the saved snapshot, our little screenshot of the past πΈ
and like, to be as accurate as possible, we update that value based on the time delta since the time was saved. the way we do that is with CLOCK_MONOTONIC (via ktime_get) to calculate the time difference. lowkey genius tbh π§
this ensures that the hardware clock is restored to nearly what it should have been if a reset had not occurred. so like, the vibe is preserved even when the hardware decided to have a moment π
π₯ SEE ALSO π₯
Kernel file ./drivers/net/ethernet/intel/i40e/i40e_ptp.c β the source, the mothership, the whole reason we're here π
and the full friend group, in order because we don't do chaos (well, mostly):
i40e_ptp_extts0_work(9)i40e_is_ptp_pin_dev(9)i40e_can_set_pins(9)i40_ptp_reset_timing_events(9)i40e_ptp_verify(9)i40e_ptp_read(9)i40e_ptp_write(9)i40e_ptp_convert_to_hwtstamp(9)i40e_ptp_adjfine(9)i40e_ptp_set_1pps_signal_hw(9)i40e_ptp_adjtime(9)i40e_ptp_gettimex(9)i40e_ptp_settime(9)i40e_pps_configure(9)i40e_pin_state(9)i40e_ptp_enable_pin(9)i40e_ptp_feature_enable(9)i40e_ptp_get_rx_events(9)i40e_ptp_rx_hang(9)i40e_ptp_tx_hang(9)i40e_ptp_tx_hwtstamp(9)i40e_ptp_rx_hwtstamp(9)i40e_ptp_set_increment(9)i40e_ptp_hwtstamp_get(9)i40e_ptp_free_pins(9)i40e_ptp_set_pin_hw(9)i40e_ptp_set_led_hw(9)i40e_ptp_init_leds_hw(9)i40e_ptp_set_pins_hw(9)i40e_ptp_set_pins(9)i40e_ptp_alloc_pins(9)i40e_ptp_set_timestamp_mode(9)i40e_ptp_hwtstamp_set(9)i40e_init_pin_config(9)i40e_ptp_create_clock(9)i40e_ptp_save_hw_time(9)i40e_ptp_init(9)i40e_ptp_stop(9)
ngl, that's a lot of cross-references, but every single one is here and accounted for β nothing got left on read π
and that's the whole page, bestie! π this one lives in ./drivers/net/ethernet/intel/i40e, dated October 2026, in the Kernel API Manual β go off, timestamps ππ
mwah, ty for reading, ily, stan PTP π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms