From patchwork Fri Sep 25 23:28:31 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vinicius Costa Gomes X-Patchwork-Id: 1371661 Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=intel.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4Byp614pVjz9sTR for ; Sat, 26 Sep 2020 09:29:29 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729490AbgIYX32 (ORCPT ); Fri, 25 Sep 2020 19:29:28 -0400 Received: from mga18.intel.com ([134.134.136.126]:29551 "EHLO mga18.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729374AbgIYX3V (ORCPT ); Fri, 25 Sep 2020 19:29:21 -0400 IronPort-SDR: cBTUvAgyNrH62XqEpvzXSNpQf8tcUMaw0ePe2ykiyk5V28cYd2T0GbYKOPlTn9g00C7WxqufTo c+49bP7xTt9g== X-IronPort-AV: E=McAfee;i="6000,8403,9755"; a="149433238" X-IronPort-AV: E=Sophos;i="5.77,303,1596524400"; d="scan'208";a="149433238" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Sep 2020 16:29:19 -0700 IronPort-SDR: jJ/NDNiHHHcVPeOAku2Bzx5ELAK98P6o2haesSwEk2mePU/i3grj4VErFEwP+6WEedbY8cYQkU i3Q883OEFmKA== X-IronPort-AV: E=Sophos;i="5.77,303,1596524400"; d="scan'208";a="337051730" Received: from msbergin-mobl.amr.corp.intel.com (HELO localhost.localdomain) ([10.212.110.90]) by fmsmga004-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Sep 2020 16:29:15 -0700 From: Vinicius Costa Gomes To: intel-wired-lan@lists.osuosl.org Cc: Vinicius Costa Gomes , sasha.neftin@intel.com, andre.guedes@intel.com, anthony.l.nguyen@intel.com, linux-pci@vger.kernel.org, bhelgaas@google.com, netdev@vger.kernel.org Subject: [PATCH next-queue v1 0/3] igc: Add support for PCIe PTM Date: Fri, 25 Sep 2020 16:28:31 -0700 Message-Id: <20200925232834.2704711-1-vinicius.gomes@intel.com> X-Mailer: git-send-email 2.28.0 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Hi, 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/3 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/3 calls pci_enable_ptm() from the igc driver. Patch 3/3 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 (3): Revert "PCI: Make pci_enable_ptm() private" igc: Enable PCIe PTM igc: Add support for PTP getcrosststamp() drivers/net/ethernet/intel/igc/igc.h | 7 + drivers/net/ethernet/intel/igc/igc_defines.h | 22 +++ drivers/net/ethernet/intel/igc/igc_main.c | 7 + drivers/net/ethernet/intel/igc/igc_ptp.c | 166 +++++++++++++++++++ drivers/net/ethernet/intel/igc/igc_regs.h | 23 +++ drivers/pci/pci.h | 3 - include/linux/pci.h | 7 + 7 files changed, 232 insertions(+), 3 deletions(-)