[Intel-wired-lan] [PATCH v1 1/1] igc: enable multiple TXSTMP registers reporting TX timestamp.

Paul Menzel pmenzel at molgen.mpg.de
Mon Apr 24 19:01:27 UTC 2023


Dear  Xiao Yan,


Am 23.04.23 um 09:53 schrieb gongxiao-intel:

Your name is incorrectly configured. Please do (please correct the 
spelling):

     $ git config --global user.name "Xiao Yan Gong"
     $ git commit --amend -s --author="Xiao Yan Gong 
<xiaoyan.gong at intel.com>"

Also, please remove the dot/period from the end of the commit message 
summary.

> The HW TX timestamps created by the NIC via socket options can be
> requested using the current network timestamps generation capability of
> SOF_TIMESTAMPING_TX_HARDWARE. The most common users of this socket flag
> is PTP, however other packet applications that require tx timestamps might
> also ask for it.
> 
> The problem is that, when there is a lot of traffic, there is a high chance
> that the timestamps for a PTP packet will be lost if both PTP and Non-PTP

non-PTP

> packets use the same SOF_TIMESTAMPING_TX_HARDWARE causing the tx timeout.

Is Linux logging this? If so, please paste such a message.

> The root cause of this problem is that igc only use one TXSTMP register to

use*s*

> report TX timestamp. Such implementation intensify the race of TX timestamp

intensif*ies*

> query from multiple sockets.
> 
> However, Intel i225/i226 controller has 4 TXSTMP registers. This patch fully
> utilizes 4 TXSTMP registers to reduce the race of TX timestamp query.
> 
> This patch dedicates TXSTMP register 0 to all PTP packets. In most case, only
> one PTP sync process will run on a network port. So, one TXSTMP register is
> enough for PTP stream.
> 
> For TXSTMP register 1 - 3, they are allocated to sockets round robin. And each

register*s*

> socket can only occupy one register at a time. So, at least 3 sockets can requiest

request

> TX timestamp simultaneously.

Please add Signed-off-by line.

How did you test your patch?

> ---
>   drivers/net/ethernet/intel/igc/igc.h         | 24 +++--
>   drivers/net/ethernet/intel/igc/igc_base.h    |  2 +-
>   drivers/net/ethernet/intel/igc/igc_defines.h |  2 +-
>   drivers/net/ethernet/intel/igc/igc_main.c    | 55 +++++++++--
>   drivers/net/ethernet/intel/igc/igc_ptp.c     | 97 +++++++++++++-------
>   drivers/net/ethernet/intel/igc/igc_regs.h    |  4 +-
>   6 files changed, 129 insertions(+), 55 deletions(-)

[…]


Kind regards,

Paul


More information about the Intel-wired-lan mailing list