> -----Original Message----- > From: Intel-wired-lan <[email protected]> On Behalf Of > Mateusz Polchlopek > Sent: Tuesday, October 22, 2024 1:41 PM > To: [email protected] > Cc: [email protected]; Keller, Jacob E <[email protected]>; > Drewek, > Wojciech <[email protected]>; Rahul Rameshbabu > <[email protected]>; Sunil Goutham <[email protected]>; Simon > Horman <[email protected]>; Polchlopek, Mateusz > <[email protected]> > Subject: [Intel-wired-lan] [PATCH iwl-next v12 14/14] iavf: add support for Rx > timestamps to hotpath > > From: Jacob Keller <[email protected]> > > Add support for receive timestamps to the Rx hotpath. This support only works > when using the flexible descriptor format, so make sure that we request this > format by default if we have receive timestamp support available in the PTP > capabilities. > > In order to report the timestamps to userspace, we need to perform timestamp > extension. The Rx descriptor does actually contain the "40 bit" timestamp. > However, upper 32 bits which contain nanoseconds are conveniently stored > separately in the descriptor. We could extract the 32bits and lower 8 bits, > then > perform a bitwise OR to calculate the 40bit value. This makes no sense, > because > the timestamp extension algorithm would simply discard the lower 8 bits > anyways. > > Thus, implement timestamp extension as iavf_ptp_extend_32b_timestamp(), and > extract and forward only the 32bits of nominal nanoseconds. > > Signed-off-by: Jacob Keller <[email protected]> > Reviewed-by: Wojciech Drewek <[email protected]> > Reviewed-by: Rahul Rameshbabu <[email protected]> > Reviewed-by: Sunil Goutham <[email protected]> > Reviewed-by: Simon Horman <[email protected]> > Signed-off-by: Mateusz Polchlopek <[email protected]> > --- > drivers/net/ethernet/intel/iavf/iavf_main.c | 9 +++ > drivers/net/ethernet/intel/iavf/iavf_ptp.c | 61 +++++++++++++++++++++ > drivers/net/ethernet/intel/iavf/iavf_ptp.h | 11 ++++ > drivers/net/ethernet/intel/iavf/iavf_txrx.c | 43 +++++++++++++++ > drivers/net/ethernet/intel/iavf/iavf_type.h | 1 + > 5 files changed, 125 insertions(+) > > diff --git a/drivers/net/ethernet/intel/iavf/iavf_main.c > b/drivers/net/ethernet/intel/iavf/iavf_main.c > index 1103c210b4e3..a25ceecf1ea7 100644 > --- a/drivers/net/ethernet/intel/iavf/iavf_main.c > +++ b/drivers/net/ethernet/intel/iavf/iavf_main.c > @@ -730,6 +730,15 @@ static u8 iavf_select_rx_desc_format(const struct
Tested-by: Rafal Romanowski <[email protected]>
