Received: by 10.192.165.148 with SMTP id m20csp2248720imm; Thu, 3 May 2018 13:01:21 -0700 (PDT) X-Google-Smtp-Source: AB8JxZqPJAbGXvJWn7HJ+mpMlEtBd7Nfe46w6hvI9ij2yXo/pbgaK/u8jsRLhz8cEITbRWKifhUX X-Received: by 2002:a17:902:3381:: with SMTP id b1-v6mr25263531plc.248.1525377681910; Thu, 03 May 2018 13:01:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525377681; cv=none; d=google.com; s=arc-20160816; b=pKMT8Yh2wGaOIGQBrVna1eYD+v/NWKGApMa3s/lw3M1tHO3h1aAwXeViGFF/zXnzrN VjjvDPkoelnaagMei0dyzWmo66Nc4YyXqVH3mz+V5puZnAsKsXZOT2KGG4ZlCJHdhCyj s+6wfH0Ps5XG+hKWC5SV8siOBU0XDiQSzwTo5EbVwWmyveb0UcQI823GEzWqzaY4nF5Z uXzYOsD005Yn8VvEwUu4nP3Rvh5avB5FG3el9e6mFoyCyizgH2tVSuJUz6R9/Yarwh0U fZUuDe43geb4xH4kIJQrYE+Rzo2Zl4ReGhOIPOC3DS1X3ytpNbq4aS7KHq9o5MdmcKrg juoA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:cc:to:from :subject:dkim-signature:arc-authentication-results; bh=2UFau5J+O8L4ju7Nj/NxO62sr1zkd96tatJD2eO27Rw=; b=KZcNW70Rkm/bSZsdVC0gdi7ekBgrOC7Y5NdkPElhWB2LUE7xY6yaVzgJP1N2LUcrgC D2tNFm8+VDFX8ci61C3KpxAXOuIQ/kaCC0JK9teI7rCuu9CoqY+cdiaYlOLEeP9H4+68 woIRMcjNY5NaRbYTskCRmvpwiMgkWZsdqUqSfUv43E2EjoKb7p8ngQOxTBSxnjf/3LCD Z0NX5fInH9UFOul/wFYTRgTpmfHMf1dhpcpSpLgpzB1uAWig4Qz0XfAs/ZT1E5ICv+9u NHHhom1e5LRd6f+cd/c6X07Y+YtOnsgU0f9KfaLolqm7ZXNTvUizBHqAD6HxMJ+Ww6J2 gd2w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=YcN1du8H; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r18-v6si1558272pge.7.2018.05.03.13.01.07; Thu, 03 May 2018 13:01:21 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=YcN1du8H; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751572AbeECUAs (ORCPT + 99 others); Thu, 3 May 2018 16:00:48 -0400 Received: from mail.kernel.org ([198.145.29.99]:34456 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751525AbeECUAp (ORCPT ); Thu, 3 May 2018 16:00:45 -0400 Received: from localhost (unknown [69.71.5.252]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 76A0821771; Thu, 3 May 2018 20:00:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1525377644; bh=jwvTJdDcuB+oni8Je/9wtyq+byacShltB/5oHafc+Ec=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=YcN1du8HJAUCbwU/upmSRsPZaULPa7V0R/EqvMwgc0mWpjU1aKctcKbEHkztaSf/b /gqPRIGaUJdGA3ZlLdaYRuQtdub5HvTq8Fu5XATjVaciyb8mqhJU3EYFEH+/MRM4vP Mdjs8SOdtRJyj+3UKAznjG3U2CNiQ+wT4PJhsTPk= Subject: [PATCH v6 5/5] PCI: Remove unused pcie_get_minimum_link() From: Bjorn Helgaas To: Jeff Kirsher , Ganesh Goudar , Michael Chan , Ariel Elior Cc: linux-pci@vger.kernel.org, everest-linux-l2@cavium.com, intel-wired-lan@lists.osuosl.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Tal Gilboa , Tariq Toukan , Jacob Keller , Jakub Kicinski Date: Thu, 03 May 2018 15:00:43 -0500 Message-ID: <152537764322.62474.552711932384023140.stgit@bhelgaas-glaptop.roam.corp.google.com> In-Reply-To: <152537719056.62474.2571390812509425478.stgit@bhelgaas-glaptop.roam.corp.google.com> References: <152537719056.62474.2571390812509425478.stgit@bhelgaas-glaptop.roam.corp.google.com> User-Agent: StGit/0.18 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Bjorn Helgaas In some cases pcie_get_minimum_link() returned misleading information because it found the slowest link and the narrowest link without considering the total bandwidth of the link. For example, consider a path with these two links: - 16.0 GT/s x1 link (16.0 * 10^9 * 128 / 130) * 1 / 8 = 1969 MB/s - 2.5 GT/s x16 link ( 2.5 * 10^9 * 8 / 10) * 16 / 8 = 4000 MB/s The available bandwidth of the path is limited by the 16 GT/s link to about 1969 MB/s, but pcie_get_minimum_link() returned 2.5 GT/s x1, which corresponds to only 250 MB/s. Callers should use pcie_print_link_status() instead, or pcie_bandwidth_available() if they need more detailed information. Remove pcie_get_minimum_link() since there are no callers left. Signed-off-by: Bjorn Helgaas --- drivers/pci/pci.c | 43 ------------------------------------------- include/linux/pci.h | 2 -- 2 files changed, 45 deletions(-) diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index e597655a5643..4bafa817c40a 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -5069,49 +5069,6 @@ int pcie_set_mps(struct pci_dev *dev, int mps) } EXPORT_SYMBOL(pcie_set_mps); -/** - * pcie_get_minimum_link - determine minimum link settings of a PCI device - * @dev: PCI device to query - * @speed: storage for minimum speed - * @width: storage for minimum width - * - * This function will walk up the PCI device chain and determine the minimum - * link width and speed of the device. - */ -int pcie_get_minimum_link(struct pci_dev *dev, enum pci_bus_speed *speed, - enum pcie_link_width *width) -{ - int ret; - - *speed = PCI_SPEED_UNKNOWN; - *width = PCIE_LNK_WIDTH_UNKNOWN; - - while (dev) { - u16 lnksta; - enum pci_bus_speed next_speed; - enum pcie_link_width next_width; - - ret = pcie_capability_read_word(dev, PCI_EXP_LNKSTA, &lnksta); - if (ret) - return ret; - - next_speed = pcie_link_speed[lnksta & PCI_EXP_LNKSTA_CLS]; - next_width = (lnksta & PCI_EXP_LNKSTA_NLW) >> - PCI_EXP_LNKSTA_NLW_SHIFT; - - if (next_speed < *speed) - *speed = next_speed; - - if (next_width < *width) - *width = next_width; - - dev = dev->bus->self; - } - - return 0; -} -EXPORT_SYMBOL(pcie_get_minimum_link); - /** * pcie_bandwidth_available - determine minimum link settings of a PCIe * device and its bandwidth limitation diff --git a/include/linux/pci.h b/include/linux/pci.h index 73178a2fcee0..230615620a4a 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -1079,8 +1079,6 @@ int pcie_get_readrq(struct pci_dev *dev); int pcie_set_readrq(struct pci_dev *dev, int rq); int pcie_get_mps(struct pci_dev *dev); int pcie_set_mps(struct pci_dev *dev, int mps); -int pcie_get_minimum_link(struct pci_dev *dev, enum pci_bus_speed *speed, - enum pcie_link_width *width); u32 pcie_bandwidth_available(struct pci_dev *dev, struct pci_dev **limiting_dev, enum pci_bus_speed *speed, enum pcie_link_width *width);