mbox series

[v3,0/5] mlx5: add timestamp format support

Message ID 20210314121302.5988-1-viacheslavo@nvidia.com (mailing list archive)
Headers
Series mlx5: add timestamp format support |

Message

Slava Ovsiienko March 14, 2021, 12:12 p.m. UTC
  There are two different timestamp formats can be provided potentially
by mlx5 supported hardware.

The free-running format provides some opaque values captured from
internal clock counter clocked by some independent oscillator.
The free-running frequency is not pre-defined and should be queried
from the NIC.

The real-time timestamps are presented in nanoseconds and captured from
the dedicated UTC counter, that can be adjusted on the fly and might be
synchronized with some external master clock.

Depending on the version and configuration the hardware might support
either FR or RT timestamps, or both in the same time on per queue basis.
Since firmware version xx.30.0256 the timestamp format can be configured
via fields in the queue context at the object creation time. For the
compatibility reasons the default zero value configures timestamps with
free-running format. The NIC ConnectX-5 and earlier ones support the
free-running format only. Since ConnectX-6 both formats might be supported
and configured. The default zero value (specified in the non-defined
yet timestamp format context field) causes the queue creation failure
(rejected by firmware) if the NIC is configured to real-time timestamp
format. 

Hence, it is crucial to check whether firmware/hardware supports
timestamp formats and configure queues accordingly, and this patchset
also must be provided for stable DPDK releases.

Compatibility affected (without this patchset) summary:
  - ConnectX-6DX or BlueField 2
  - real-time format is configured in NV settings
  - firmware is xx.30.1000 or higher
      
Viacheslav Ovsiienko (5):
  common/mlx5: add timestamp format support to DevX
  net/mlx5: add timestamp format support
  vdpa/mlx5: add timestamp format support
  regex/mlx5: add timestamp format support
  compress/mlx5: add timestamp format support

 drivers/common/mlx5/mlx5_devx_cmds.c    | 35 ++++++++++++++--
 drivers/common/mlx5/mlx5_devx_cmds.h    |  7 ++++
 drivers/common/mlx5/mlx5_prm.h          | 55 +++++++++++++++++++++++--
 drivers/compress/mlx5/mlx5_compress.c   |  3 ++
 drivers/net/mlx5/linux/mlx5_os.c        |  3 ++
 drivers/net/mlx5/mlx5.h                 |  3 ++
 drivers/net/mlx5/mlx5_devx.c            |  2 +-
 drivers/net/mlx5/mlx5_flow_age.c        |  7 +++-
 drivers/net/mlx5/mlx5_txpp.c            |  2 +
 drivers/net/mlx5/windows/mlx5_os.c      |  3 ++
 drivers/regex/mlx5/mlx5_regex.c         |  1 +
 drivers/regex/mlx5/mlx5_regex.h         |  1 +
 drivers/regex/mlx5/mlx5_regex_control.c |  1 +
 drivers/vdpa/mlx5/mlx5_vdpa.c           |  1 +
 drivers/vdpa/mlx5/mlx5_vdpa.h           |  1 +
 drivers/vdpa/mlx5/mlx5_vdpa_event.c     |  2 +
 16 files changed, 117 insertions(+), 10 deletions(-)
  

Comments

Raslan Darawsheh March 16, 2021, 2:51 p.m. UTC | #1
Hi,

> -----Original Message-----
> From: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
> Sent: Sunday, March 14, 2021 2:13 PM
> To: dev@dpdk.org
> Cc: Raslan Darawsheh <rasland@nvidia.com>; Matan Azrad
> <matan@nvidia.com>; Ori Kam <orika@nvidia.com>
> Subject: [PATCH v3 0/5] mlx5: add timestamp format support
> 
> There are two different timestamp formats can be provided potentially
> by mlx5 supported hardware.
> 
> The free-running format provides some opaque values captured from
> internal clock counter clocked by some independent oscillator.
> The free-running frequency is not pre-defined and should be queried
> from the NIC.
> 
> The real-time timestamps are presented in nanoseconds and captured from
> the dedicated UTC counter, that can be adjusted on the fly and might be
> synchronized with some external master clock.
> 
> Depending on the version and configuration the hardware might support
> either FR or RT timestamps, or both in the same time on per queue basis.
> Since firmware version xx.30.0256 the timestamp format can be configured
> via fields in the queue context at the object creation time. For the
> compatibility reasons the default zero value configures timestamps with
> free-running format. The NIC ConnectX-5 and earlier ones support the
> free-running format only. Since ConnectX-6 both formats might be
> supported
> and configured. The default zero value (specified in the non-defined
> yet timestamp format context field) causes the queue creation failure
> (rejected by firmware) if the NIC is configured to real-time timestamp
> format.
> 
> Hence, it is crucial to check whether firmware/hardware supports
> timestamp formats and configure queues accordingly, and this patchset
> also must be provided for stable DPDK releases.
> 
> Compatibility affected (without this patchset) summary:
>   - ConnectX-6DX or BlueField 2
>   - real-time format is configured in NV settings
>   - firmware is xx.30.1000 or higher
> 
> Viacheslav Ovsiienko (5):
>   common/mlx5: add timestamp format support to DevX
>   net/mlx5: add timestamp format support
>   vdpa/mlx5: add timestamp format support
>   regex/mlx5: add timestamp format support
>   compress/mlx5: add timestamp format support
> 
>  drivers/common/mlx5/mlx5_devx_cmds.c    | 35 ++++++++++++++--
>  drivers/common/mlx5/mlx5_devx_cmds.h    |  7 ++++
>  drivers/common/mlx5/mlx5_prm.h          | 55 +++++++++++++++++++++++-
> -
>  drivers/compress/mlx5/mlx5_compress.c   |  3 ++
>  drivers/net/mlx5/linux/mlx5_os.c        |  3 ++
>  drivers/net/mlx5/mlx5.h                 |  3 ++
>  drivers/net/mlx5/mlx5_devx.c            |  2 +-
>  drivers/net/mlx5/mlx5_flow_age.c        |  7 +++-
>  drivers/net/mlx5/mlx5_txpp.c            |  2 +
>  drivers/net/mlx5/windows/mlx5_os.c      |  3 ++
>  drivers/regex/mlx5/mlx5_regex.c         |  1 +
>  drivers/regex/mlx5/mlx5_regex.h         |  1 +
>  drivers/regex/mlx5/mlx5_regex_control.c |  1 +
>  drivers/vdpa/mlx5/mlx5_vdpa.c           |  1 +
>  drivers/vdpa/mlx5/mlx5_vdpa.h           |  1 +
>  drivers/vdpa/mlx5/mlx5_vdpa_event.c     |  2 +
>  16 files changed, 117 insertions(+), 10 deletions(-)
> 
> --
> v1: https://inbox.dpdk.org/dev/20210307100251.22538-1-
> viacheslavo@nvidia.com/
> v2: - remove non needed settings for hairpins
>     - the unified inline routine to set timestamp format
>     - typos and rewording commit messages
> v3: - fix minor typo bug (, -> ;) in code
>     - add missed v3 tag
> 
> --
> 2.28.0

Series applied to next-net-mlx,

Kindest regards,
Raslan Darawsheh
  
Ferruh Yigit March 17, 2021, 6:04 p.m. UTC | #2
On 3/14/2021 12:12 PM, Viacheslav Ovsiienko wrote:
> There are two different timestamp formats can be provided potentially
> by mlx5 supported hardware.
> 
> The free-running format provides some opaque values captured from
> internal clock counter clocked by some independent oscillator.
> The free-running frequency is not pre-defined and should be queried
> from the NIC.
> 
> The real-time timestamps are presented in nanoseconds and captured from
> the dedicated UTC counter, that can be adjusted on the fly and might be
> synchronized with some external master clock.
> 
> Depending on the version and configuration the hardware might support
> either FR or RT timestamps, or both in the same time on per queue basis.
> Since firmware version xx.30.0256 the timestamp format can be configured
> via fields in the queue context at the object creation time. For the
> compatibility reasons the default zero value configures timestamps with
> free-running format. The NIC ConnectX-5 and earlier ones support the
> free-running format only. Since ConnectX-6 both formats might be supported
> and configured. The default zero value (specified in the non-defined
> yet timestamp format context field) causes the queue creation failure
> (rejected by firmware) if the NIC is configured to real-time timestamp
> format.
> 
> Hence, it is crucial to check whether firmware/hardware supports
> timestamp formats and configure queues accordingly, and this patchset
> also must be provided for stable DPDK releases.
> 
> Compatibility affected (without this patchset) summary:
>    - ConnectX-6DX or BlueField 2
>    - real-time format is configured in NV settings
>    - firmware is xx.30.1000 or higher
>        

Hi Viacheslav,

The patch looks like adding real time timestamp support, I was wondering why 
this is a fix but above already describes it, thanks for it.


> Viacheslav Ovsiienko (5):
>    common/mlx5: add timestamp format support to DevX
>    net/mlx5: add timestamp format support
>    vdpa/mlx5: add timestamp format support
>    regex/mlx5: add timestamp format support
>    compress/mlx5: add timestamp format support
> 
>   drivers/common/mlx5/mlx5_devx_cmds.c    | 35 ++++++++++++++--
>   drivers/common/mlx5/mlx5_devx_cmds.h    |  7 ++++
>   drivers/common/mlx5/mlx5_prm.h          | 55 +++++++++++++++++++++++--
>   drivers/compress/mlx5/mlx5_compress.c   |  3 ++
>   drivers/net/mlx5/linux/mlx5_os.c        |  3 ++
>   drivers/net/mlx5/mlx5.h                 |  3 ++
>   drivers/net/mlx5/mlx5_devx.c            |  2 +-
>   drivers/net/mlx5/mlx5_flow_age.c        |  7 +++-
>   drivers/net/mlx5/mlx5_txpp.c            |  2 +
>   drivers/net/mlx5/windows/mlx5_os.c      |  3 ++
>   drivers/regex/mlx5/mlx5_regex.c         |  1 +
>   drivers/regex/mlx5/mlx5_regex.h         |  1 +
>   drivers/regex/mlx5/mlx5_regex_control.c |  1 +
>   drivers/vdpa/mlx5/mlx5_vdpa.c           |  1 +
>   drivers/vdpa/mlx5/mlx5_vdpa.h           |  1 +
>   drivers/vdpa/mlx5/mlx5_vdpa_event.c     |  2 +
>   16 files changed, 117 insertions(+), 10 deletions(-)
>