[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20241126035849.6441-1-milena.olech@intel.com>
Date: Tue, 26 Nov 2024 04:58:40 +0100
From: Milena Olech <milena.olech@...el.com>
To: intel-wired-lan@...ts.osuosl.org
Cc: netdev@...r.kernel.org,
anthony.l.nguyen@...el.com,
przemyslaw.kitszel@...el.com,
Milena Olech <milena.olech@...el.com>
Subject: [PATCH v2 iwl-next 00/10] add initial PTP support
This patch series introduces support for Precision Time Protocol (PTP) to
Intel(R) Infrastructure Data Path Function (IDPF) driver. PTP feature is
supported when the PTP capability is negotiated with the Control
Plane (CP). IDPF creates a PTP clock and sets a set of supported
functions.
During the PTP initialization, IDPF requests a set of PTP capabilities
and receives a writeback from the CP with the set of supported options.
These options are:
- get time of the PTP clock
- get cross timestamp
- set the time of the PTP clock
- adjust the PTP clock
- Tx timestamping
Each feature is considered to have direct access, where the operations
on PCIe BAR registers are allowed, or the mailbox access, where the
virtchnl messages are used to perform any PTP action. Mailbox access
means that PTP requests are sent to the CP through dedicated secondary
mailbox and the CP reads/writes/modifies desired resource - PTP Clock
or Tx timestamp registers.
Tx timestamp capabilities are negotiated only for vports that have
UPLINK_VPORT flag set by the CP. Capabilities provide information about
the number of available Tx timestamp latches, their indexes and size of
the Tx timestamp value. IDPF requests Tx timestamp by setting the
TSYN bit and the requested timestamp index in the context descriptor for
the PTP packets. When the completion tag for that packet is received,
IDPF schedules a worker to read the Tx timestamp value.
Current implementation of the IDPF driver does not allow to get stable
Tx timestamping, when more than 1 request per 1 second is sent to the
driver. Debug is in progress, however PTP feature seems to be affected by
the IDPF transmit flow, as the Tx timestamping relies on the completion
tag.
v1 -> v2: add stats for timestamping, use ndo_hwtamp_get/set,
fix minor spelling issues
Milena Olech (10):
idpf: add initial PTP support
virtchnl: add PTP virtchnl definitions
idpf: move virtchnl structures to the header file
idpf: negotiate PTP capabilities and get PTP clock
idpf: add mailbox access to read PTP clock time
idpf: add PTP clock configuration
idpf: add Tx timestamp capabilities negotiation
idpf: add Tx timestamp flows
idpf: add support for Rx timestamping
idpf: change the method for mailbox workqueue allocation
drivers/net/ethernet/intel/idpf/Kconfig | 1 +
drivers/net/ethernet/intel/idpf/Makefile | 3 +
drivers/net/ethernet/intel/idpf/idpf.h | 30 +
.../ethernet/intel/idpf/idpf_controlq_api.h | 3 +
drivers/net/ethernet/intel/idpf/idpf_dev.c | 14 +
.../net/ethernet/intel/idpf/idpf_ethtool.c | 65 ++
.../ethernet/intel/idpf/idpf_lan_pf_regs.h | 4 +
.../net/ethernet/intel/idpf/idpf_lan_txrx.h | 13 +-
drivers/net/ethernet/intel/idpf/idpf_lib.c | 47 +
drivers/net/ethernet/intel/idpf/idpf_main.c | 8 +-
drivers/net/ethernet/intel/idpf/idpf_ptp.c | 976 ++++++++++++++++++
drivers/net/ethernet/intel/idpf/idpf_ptp.h | 351 +++++++
drivers/net/ethernet/intel/idpf/idpf_txrx.c | 168 ++-
drivers/net/ethernet/intel/idpf/idpf_txrx.h | 17 +-
.../net/ethernet/intel/idpf/idpf_virtchnl.c | 160 ++-
.../net/ethernet/intel/idpf/idpf_virtchnl.h | 84 ++
.../ethernet/intel/idpf/idpf_virtchnl_ptp.c | 676 ++++++++++++
drivers/net/ethernet/intel/idpf/virtchnl2.h | 312 +++++-
18 files changed, 2833 insertions(+), 99 deletions(-)
create mode 100644 drivers/net/ethernet/intel/idpf/idpf_ptp.c
create mode 100644 drivers/net/ethernet/intel/idpf/idpf_ptp.h
create mode 100644 drivers/net/ethernet/intel/idpf/idpf_virtchnl_ptp.c
base-commit: be9bc5f29544142931d3958e972623a1db595af4
--
2.31.1
Powered by blists - more mailing lists