[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20210605002356.3996853-1-vinicius.gomes@intel.com>
Date: Fri, 4 Jun 2021 17:23:52 -0700
From: Vinicius Costa Gomes <vinicius.gomes@...el.com>
To: intel-wired-lan@...ts.osuosl.org
Cc: Vinicius Costa Gomes <vinicius.gomes@...el.com>,
sasha.neftin@...el.com, anthony.l.nguyen@...el.com,
linux-pci@...r.kernel.org, bhelgaas@...gle.com,
netdev@...r.kernel.org, mlichvar@...hat.com,
richardcochran@...il.com, hch@...radead.org, helgaas@...nel.org
Subject: [PATCH next-queue v5 0/4] igc: Add support for PCIe PTM
Hi,
Changes from v4:
- Improved commit messages (Bjorn Helgaas);
Changes from v3:
- More descriptive commit messages and comments (Bjorn Helgaas);
- Added a pcie_ptm_enabled() helper (Bjorn Helgaas);
Changes from v2:
- Now the PTM timestamps are retrieved synchronously with the
ioctl();
- Fixed some typos in constants;
- The IGC_PTM_STAT register is write-1-to-clear, document this more
clearly;
Changes from v1:
- This now should cross compile better, convert_art_ns_to_tsc() will
only be used if CONFIG_X86_TSC is enabled;
- PCIe PTM errors reported by the NIC are logged and PTM cycles are
restarted in case an error is detected;
Original cover letter (lightly edited):
This adds support for PCIe PTM (Precision Time Measurement) to the igc
driver. PCIe PTM allows the NIC and Host clocks to be compared more
precisely, improving the clock synchronization accuracy.
Patch 1/4 reverts a commit that made pci_enable_ptm() private to the
PCI subsystem, reverting makes it possible for it to be called from
the drivers.
Patch 2/4 adds the pcie_ptm_enabled() helper.
Patch 3/4 calls pci_enable_ptm() from the igc driver.
Patch 4/4 implements the PCIe PTM support. It adds a workqueue that
reads the PTM registers periodically and collects the information so a
subsequent call to getcrosststamp() has all the timestamps needed.
Some questions are raised (also pointed out in the commit message):
1. Using convert_art_ns_to_tsc() is too x86 specific, there should be
a common way to create a 'system_counterval_t' from a timestamp.
2. convert_art_ns_to_tsc() says that it should only be used when
X86_FEATURE_TSC_KNOWN_FREQ is true, but during tests it works even
when it returns false. Should that check be done?
Cheers,
Vinicius Costa Gomes (4):
Revert "PCI: Make pci_enable_ptm() private"
PCI: Add pcie_ptm_enabled()
igc: Enable PCIe PTM
igc: Add support for PTP getcrosststamp()
drivers/net/ethernet/intel/igc/igc.h | 1 +
drivers/net/ethernet/intel/igc/igc_defines.h | 31 ++++
drivers/net/ethernet/intel/igc/igc_main.c | 6 +
drivers/net/ethernet/intel/igc/igc_ptp.c | 182 +++++++++++++++++++
drivers/net/ethernet/intel/igc/igc_regs.h | 23 +++
drivers/pci/pci.h | 3 -
drivers/pci/pcie/ptm.c | 9 +
include/linux/pci.h | 10 +
8 files changed, 262 insertions(+), 3 deletions(-)
--
2.31.1
Powered by blists - more mailing lists