Ethernet Products
Determine ramifications of Intel® Ethernet products and technologies
Announcements
FPGA community forums and blogs on community.intel.com are migrating to the new Altera Community and are read-only. For urgent support needs during this transition, please visit the FPGA Design Resources page or contact an Altera Authorized Distributor.
5685 Discussions

E810 ice 2.3.10 ts2phc no longer functional

LukeFassbinder
Beginner
191 Views

I'm having a similar problem to https://community.intel.com/t5/Ethernet-Products/Problem-with-ICE-drivers-and-ts2phc-program-E810-XXVDA4T/m-p/1710542#M42610.

It appears that the documentation for the ICE drivers is out of date. I'm trying to configure an E810 XXVDA4T with an external PPS signal. I'm referencing the user guide revision 1.7 from April 2025.

I'm running OpenSUSE Tumbleweed with kernel 6.17.0-2-default, ice 2.3.10 and DDP 1.3.49.0.

I'm primarily focused on the use-case in section 5.3 of the user guide: "PTP GrandMaster (GM) with External GNSS Clock"

Per that section, I have an external PPS signal attached to SMA1 and I'm trying to get the PHC clock accurate using ts2phc. It never succeeds (note that I've reproduced the "Example ts2phc Configuration File" from section 5.8 using command line flags):

> sudo ts2phc -c eth1 --use_syslog 0 --verbose 1 --logging_level 7 --ts2phc.pulsewidth 5000000 --ts2phc.extts_polarity rising -s generic -m
ts2phc[1911.409]: config item (null).sa_file is '(null)'
ts2phc[1911.409]: config item eth1.ts2phc.master is 0
ts2phc[1911.409]: config item eth1.ts2phc.pin_index is 0
ts2phc[1911.409]: config item eth1.ts2phc.channel is 0
ts2phc[1911.409]: config item eth1.ts2phc.extts_polarity is 2
ts2phc[1911.409]: config item eth1.ts2phc.extts_correction is 0
ts2phc[1911.409]: config item eth1.ts2phc.pulsewidth is 5000000
ts2phc[1911.409]: config item (null).clock_servo is 0
ts2phc[1911.409]: config item (null).pi_proportional_const is 0.000000
ts2phc[1911.409]: config item (null).pi_integral_const is 0.000000
ts2phc[1911.409]: config item (null).pi_proportional_scale is 0.000000
ts2phc[1911.409]: config item (null).pi_proportional_exponent is -0.300000
ts2phc[1911.409]: config item (null).pi_proportional_norm_max is 0.700000
ts2phc[1911.409]: config item (null).pi_integral_scale is 0.000000
ts2phc[1911.409]: config item (null).pi_integral_exponent is 0.400000
ts2phc[1911.409]: config item (null).pi_integral_norm_max is 0.300000
ts2phc[1911.409]: config item (null).step_threshold is 0.000000
ts2phc[1911.409]: config item (null).first_step_threshold is 0.000020
ts2phc[1911.409]: config item (null).max_frequency is 900000000
ts2phc[1911.409]: config item (null).servo_offset_threshold is 0
ts2phc[1911.409]: config item (null).servo_num_offset_values is 10
ts2phc[1911.409]: PI servo: sync interval 1.000 kp 0.700 ki 0.300000
ts2phc[1911.409]: config item (null).free_running is 0
ts2phc[1911.409]: PPS sink eth1 has ptp index 0
PTP_PIN_SETFUNC2 failed: Operation not supported
ts2phc[1911.409]: PTP_PIN_SETFUNC request failed
ts2phc[1911.409]: failed to create sink
failed to add PPS sink

The DPLL locks just fine:

> sudo cat /sys/kernel/debug/ice/0000:06:1b.0/cgu
Found ZL80032 CGU
DPLL Config ver: 1.3.0.1
DPLL FW ver: 6201

CGU Input status:
                   |            |      priority     |            |
      input (idx)  |    state   | EEC (0) | PPS (1) | ESync fail |
  ----------------------------------------------------------------
     CVL-SDP22 (0) |    invalid |     255 |       5 |     N/A    |
     CVL-SDP20 (1) |    invalid |     255 |       4 |     N/A    |
  C827_0-RCLKA (2) |    invalid |       8 |       8 |     N/A    |
  C827_0-RCLKB (3) |    invalid |       9 |       9 |     N/A    |
          SMA1 (4) |      valid |       3 |       3 |     N/A    |
    SMA2/U.FL2 (5) |    invalid |       2 |       2 |     N/A    |
     GNSS-1PPS (6) |    invalid |       0 |       0 |     N/A    |

EEC DPLL:
        Current reference:      SMA1
        Status:                 locked_ho_acq

PPS DPLL:
        Current reference:      SMA1
        Status:                 locked_ho_acq
        Phase offset [ps]:                      -8701

But no invocation of ts2phc has ever been successful.

I've been through a pretty thorough troubleshooting session with ChatGPT which has resulted in trying all kinds of things and the conclusion at the moment is that the driver is simply broken.

Before asking me to run any commands, I suggest you check the troubleshooting session with ChatGPT, it suggested a vast many things and there's a reasonable chance it's already suggested I do what you suggest.

The various errors I receive are:

  • driver cannot use function 1 and channel 0 on pin 0
  • PTP_PIN_SETFUNC2 failed: Operation not supported
  • PTP_PIN_SETFUNC request failed

The ChatGPT debugging session goes down a tangent trying to get EXTTS working. I managed this:

  • Per the debug output above, the DPLL is already phase locked with the 1PPS input on SMA1
  • I want to sync the E810 PHC to the DPLL.
  • Per Figure 1 from the user guide, the DPLL outputs 1PPS on "OUT7P", which is connected to SDP23 on the E810
  • "OUT7P" is output pin 4 in pin_cfg, which is enabled:
    > sudo cat /sys/class/net/eth1/device/pin_cfg
    in
    | pin| enabled|   state|       freq| phase_delay| eSync/Ref-sync| DPLL0 prio| DPLL1 prio|
    |   0|       1| invalid|          1|           0|              0|        255|          5|
    |   1|       1| invalid|          1|           0|              2|        255|          4|
    |   2|       1| invalid|    1953125|           0|              0|          8|          8|
    |   3|       1| invalid|    1953125|           0|              0|          9|          9|
    |   4|       1|   valid|          1|        7000|              0|          3|          3|
    |   5|       1| invalid|          1|        7000|              2|          2|          2|
    |   6|       1| invalid|          1|           0|              0|          0|          0|
    out
    | pin| enabled| dpll|       freq| esync|
    |   0|       1|    1|          1|     0|
    |   1|       1|    1|          1|     0|
    |   2|       1|    0|  156250000|     0|
    |   3|       1|    0|  156250000|     0|
    |   4|       1|    1|          1|     0|
    |   5|       1|    1|          1|     0|
  • Per section 4.6 of the user guide, I can configure SDP23 as an input on channel 0 with the command:
    echo 1 0 > /sys/class/net/$ETH/device/ptp/ptp*/pins/SDP23
  • I should enable external timestamps on channel 0 with the following command:
    echo "0 1" | sudo tee /sys/class/ptp/ptp0/extts_enable
  • Once external timestamps are enabled, I should see data in the fifo

I can now see timestamps in the FIFO and testptp monitors them in realtime.

However even with timestamps in the FIFO, ts2phc doesn't function.

I'd be happy to try reverting to an earlier version of the driver (as of April, when the guide was written, I suppose the version would have been ice-1.16.3?) but they seem to be incompatible with modern kernels. Compilation fails with errors like:

kcompat_gnss.c:224:27: error: ‘no_llseek’ undeclared here (not in a function); did you mean ‘noop_llseek’?

 

0 Kudos
5 Replies
IntelSupport
Community Manager
153 Views

Hello LukeFassbinder,


Thank you for posting in the Intel Community Forum.


As per your query, you're experiencing issues configuring the PTP Grandmaster (GM) with an external GNSS clock on the E810 XXVDA4T adapter.


To better understand your environment and assist you further, please provide the following details:

  • System specifications
  • Was the adapter shipped with the system or purchased separately?
  • A clear image of the NIC adapter with visible markings
  • Was the adapter functioning before ?


Best regards,

Shankith K P

Intel Customer Support Technician


0 Kudos
LukeFassbinder
Beginner
143 Views
The server is a Supermicro SYS-510D-4C-FN6. The NIC I'm using on this issue is an Intel E810-XXVDA4TGG1. Used but genuine.

This is my first time using the NIC.

None of this is relevant though, this is entirely a software problem as evidenced by my most recent post showing that it's possible to make everything function by changing some syscalls.
0 Kudos
IntelSupport
Community Manager
134 Views

Hello LukeFassbinder,


Thank you for writing back to us.


We are checking this internally, we will get back to you shortly.


Best regards,

Shankith K P 

Intel Customer Support Technician


0 Kudos
LukeFassbinder
Beginner
128 Views
Sorry, I apparently I forgot to post the reply I thought I'd posted.

I temporarily patched ts2phc to ignore the result of the PTP_PIN_SETFUNC2 call and invoked it with the external timestamp flag (only available in Git right now, not the latest 4.4 release). Then the PTP_EXTTS_REQUEST2 call failed. I patched ts2phc to use PTP_EXTTS_REQUEST instead.

With these changes, ts2phc is able to read timestamps and make corrections, so it's clear to me that the problem is in the ice driver.

I'm assuming this is a regression because the documentation seems to indicate that this has worked at least at some point in the past.
0 Kudos
Joha
New User
3 Views

Thank you @LukeFassbinder for starting this topic! I ran into the same problem, driver 2.3.10 breaks ptp and because I am on kernel 6.17 I cannot go back to the older driver version 1.17.8 which seems to work.

0 Kudos
Reply