Re: [PATCH v2] igb: Fix extts capture value format for 82580/i354/i350

From: Tony Nguyen
Date: Thu Jun 01 2023 - 16:45:30 EST


On 6/1/2023 10:05 AM, Keller, Jacob E wrote:


-----Original Message-----
From: Yuezhen Luan <eggcar.luan@xxxxxxxxx>
Sent: Thursday, June 1, 2023 12:01 AM
To: Brandeburg, Jesse <jesse.brandeburg@xxxxxxxxx>; Nguyen, Anthony L
<anthony.l.nguyen@xxxxxxxxx>; davem@xxxxxxxxxxxxx;
edumazet@xxxxxxxxxx; kuba@xxxxxxxxxx; pabeni@xxxxxxxxxx
Cc: intel-wired-lan@xxxxxxxxxxxxxxxx; netdev@xxxxxxxxxxxxxxx; linux-
kernel@xxxxxxxxxxxxxxx; Keller, Jacob E <jacob.e.keller@xxxxxxxxx>; Yuezhen
Luan <eggcar.luan@xxxxxxxxx>
Subject: [PATCH v2] igb: Fix extts capture value format for 82580/i354/i350

82580/i354/i350 features circle-counter-like timestamp registers
that are different with newer i210. The EXTTS capture value in
AUXTSMPx should be converted from raw circle counter value to
timestamp value in resolution of 1 nanosec by the driver.

This issue can be reproduced on i350 nics, connecting an 1PPS
signal to a SDP pin, and run 'ts2phc' command to read external
1PPS timestamp value. On i210 this works fine, but on i350 the
extts is not correctly converted.

The i350/i354/82580's SYSTIM and other timestamp registers are
40bit counters, presenting time range of 2^40 ns, that means these
registers overflows every about 1099s. This causes all these regs
can't be used directly in contrast to the newer i210/i211s.

The igb driver needs to convert these raw register values to
valid time stamp format by using kernel timecounter apis for i350s
families. Here the igb_extts() just forgot to do the convert.

Signed-off-by: Yuezhen Luan <eggcar.luan@xxxxxxxxx>

Reviewed-by: Jacob Keller <jacob.e.keller@xxxxxxxxx>

Thanks for reviewing Jake.

Thanks for fixing this!

@Nguyen, Anthony L
I think this is a worthy net fix.

Hi Yuezhen,

Could you include a Fixes: so that we can route this through net.

You should also add a target tree for your patch (net or net-next).
Here's some useful intro information for netdev [1].

Thanks,
Tony

[1] https://www.kernel.org/doc/html/latest/process/maintainer-netdev.html#netdev-faq