aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorJon Mason <jdmason@kudzu.us>2011-06-27 03:48:11 -0400
committerDavid S. Miller <davem@davemloft.net>2011-06-28 00:40:45 -0400
commit95cab7386bef62f8c7535d4726573ce230778e7b (patch)
tree03a254db0dd99fe673aa6757006b9fcc0bdff73a /drivers
parent1a10ccae9003826cee6f2c625fa4caf51cfc0f40 (diff)
vxge: remove unnecessary reads of PCI_CAP_ID_EXP
The PCIE capability offset is saved during PCI bus walking. It will remove an unnecessary search in the PCI configuration space if this value is referenced instead of reacquiring it. Signed-off-by: Jon Mason <jdmason@kudzu.us> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/vxge/vxge-config.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/drivers/net/vxge/vxge-config.c b/drivers/net/vxge/vxge-config.c
index 857618afa147..1520c574cb20 100644
--- a/drivers/net/vxge/vxge-config.c
+++ b/drivers/net/vxge/vxge-config.c
@@ -753,12 +753,11 @@ static void __vxge_hw_device_host_info_get(struct __vxge_hw_device *hldev)
753static enum vxge_hw_status 753static enum vxge_hw_status
754__vxge_hw_verify_pci_e_info(struct __vxge_hw_device *hldev) 754__vxge_hw_verify_pci_e_info(struct __vxge_hw_device *hldev)
755{ 755{
756 int exp_cap; 756 struct pci_dev *dev = hldev->pdev;
757 u16 lnk; 757 u16 lnk;
758 758
759 /* Get the negotiated link width and speed from PCI config space */ 759 /* Get the negotiated link width and speed from PCI config space */
760 exp_cap = pci_find_capability(hldev->pdev, PCI_CAP_ID_EXP); 760 pci_read_config_word(dev, dev->pcie_cap + PCI_EXP_LNKSTA, &lnk);
761 pci_read_config_word(hldev->pdev, exp_cap + PCI_EXP_LNKSTA, &lnk);
762 761
763 if ((lnk & PCI_EXP_LNKSTA_CLS) != 1) 762 if ((lnk & PCI_EXP_LNKSTA_CLS) != 1)
764 return VXGE_HW_ERR_INVALID_PCI_INFO; 763 return VXGE_HW_ERR_INVALID_PCI_INFO;
@@ -1982,13 +1981,11 @@ exit:
1982 1981
1983u16 vxge_hw_device_link_width_get(struct __vxge_hw_device *hldev) 1982u16 vxge_hw_device_link_width_get(struct __vxge_hw_device *hldev)
1984{ 1983{
1985 int link_width, exp_cap; 1984 struct pci_dev *dev = hldev->pdev;
1986 u16 lnk; 1985 u16 lnk;
1987 1986
1988 exp_cap = pci_find_capability(hldev->pdev, PCI_CAP_ID_EXP); 1987 pci_read_config_word(dev, dev->pcie_cap + PCI_EXP_LNKSTA, &lnk);
1989 pci_read_config_word(hldev->pdev, exp_cap + PCI_EXP_LNKSTA, &lnk); 1988 return (lnk & VXGE_HW_PCI_EXP_LNKCAP_LNK_WIDTH) >> 4;
1990 link_width = (lnk & VXGE_HW_PCI_EXP_LNKCAP_LNK_WIDTH) >> 4;
1991 return link_width;
1992} 1989}
1993 1990
1994/* 1991/*