Dear Richard, Ah yes I have figured out that the problem is not ts2phc, it should be fixed in igb_extts() at igb_main.c
if (hw->mac <https://elixir.bootlin.com/linux/v5.19.17/C/ident/mac>.type == e1000_82580 <https://elixir.bootlin.com/linux/v5.19.17/C/ident/e1000_82580> || > hw->mac > <https://elixir.bootlin.com/linux/v5.19.17/C/ident/mac>.type == e1000_i354 > <https://elixir.bootlin.com/linux/v5.19.17/C/ident/e1000_i354> || > hw->mac > <https://elixir.bootlin.com/linux/v5.19.17/C/ident/mac>.type == e1000_i350 > <https://elixir.bootlin.com/linux/v5.19.17/C/ident/e1000_i350>) { > s64 <https://elixir.bootlin.com/linux/v5.19.17/C/ident/s64> ns > <https://elixir.bootlin.com/linux/v5.19.17/C/ident/ns> = rd32 > <https://elixir.bootlin.com/linux/v5.19.17/C/ident/rd32>(auxstmpl); > > ns <https://elixir.bootlin.com/linux/v5.19.17/C/ident/ns> += > ((s64 <https://elixir.bootlin.com/linux/v5.19.17/C/ident/s64>)(rd32 > <https://elixir.bootlin.com/linux/v5.19.17/C/ident/rd32>(auxstmph) & 0xFF)) > << 32; > ts <https://elixir.bootlin.com/linux/v5.19.17/C/ident/ts> = > ns_to_timespec64 > <https://elixir.bootlin.com/linux/v5.19.17/C/ident/ns_to_timespec64>(ns > <https://elixir.bootlin.com/linux/v5.19.17/C/ident/ns>); > } else { > ts > <https://elixir.bootlin.com/linux/v5.19.17/C/ident/ts>.tv_nsec > <https://elixir.bootlin.com/linux/v5.19.17/C/ident/tv_nsec> = rd32 > <https://elixir.bootlin.com/linux/v5.19.17/C/ident/rd32>(auxstmpl); > ts > <https://elixir.bootlin.com/linux/v5.19.17/C/ident/ts>.tv_sec > <https://elixir.bootlin.com/linux/v5.19.17/C/ident/tv_sec> = rd32 > <https://elixir.bootlin.com/linux/v5.19.17/C/ident/rd32>(auxstmph); > } > > here the driver does treat the AUXSTMPH resolution and valid bits in the right way, but forgot to convert the raw circle counter value to valid time stamp value. I'll test the patch next week Thanks for your attention Richard Cochran <richardcoch...@gmail.com> 于2023年5月26日周五 22:09写道: > On Fri, May 26, 2023 at 03:02:43PM +0800, egg car wrote: > > > It's a bit complicated to use, I see why they use 'struct timecounter' > > instead of hardware PHC > > counter, and in this case all the timestamp regs cannot be used directly. > > Needs more time to find out how to fix this, either the driver or > 'ts2phc' > > program. > > Don't try to "fix" ts2phc. That won't make the device driver work any > better. > > Thanks, > Richard > > >
_______________________________________________ Linuxptp-devel mailing list Linuxptp-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxptp-devel