diff --git a/embedded/esp32p4_smv_injector/main/ptp_lab_task.cpp b/embedded/esp32p4_smv_injector/main/ptp_lab_task.cpp index 64f2ab6e9..bdbce7dcc 100644 --- a/embedded/esp32p4_smv_injector/main/ptp_lab_task.cpp +++ b/embedded/esp32p4_smv_injector/main/ptp_lab_task.cpp @@ -313,10 +313,12 @@ void seed_hardware_clock(const esp_eth_handle_t eth_handle) noexcept { PtpTimestamp& timestamp) noexcept { if (frame.empty()) return false; eth_mac_time_t tx_timestamp{}; + // esp_eth_transmit_ctrl_vargs argc counts buffer/length pairs. One PTP + // Ethernet frame is exactly one pair. const auto result = esp_eth_transmit_ctrl_vargs( eth_handle, &tx_timestamp, - 2U, + 1U, frame.data(), frame.size()); if (result != ESP_OK || !valid_hw_timestamp(tx_timestamp)) { diff --git a/embedded/esp32p4_smv_injector/main/ptp_receiver_task.cpp b/embedded/esp32p4_smv_injector/main/ptp_receiver_task.cpp index 691d0b35e..7a248d57e 100644 --- a/embedded/esp32p4_smv_injector/main/ptp_receiver_task.cpp +++ b/embedded/esp32p4_smv_injector/main/ptp_receiver_task.cpp @@ -176,10 +176,12 @@ void seed_hardware_clock(const esp_eth_handle_t handle) noexcept { PtpTimestamp& timestamp) noexcept { if (frame.empty()) return false; eth_mac_time_t tx_timestamp{}; + // esp_eth_transmit_ctrl_vargs argc counts buffer/length pairs. One PTP + // Ethernet frame is exactly one pair. const auto result = esp_eth_transmit_ctrl_vargs( handle, &tx_timestamp, - 2U, + 1U, frame.data(), frame.size()); if (result != ESP_OK || !valid_hw_timestamp(tx_timestamp)) return false;