diff options
author | jhb <jhb@FreeBSD.org> | 2010-07-26 17:31:15 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2010-07-26 17:31:15 +0000 |
commit | ba4940d821585f5e1e306a3daedd12beb1c6a357 (patch) | |
tree | eb4bcd3d5cc72a481c361e0104a75565ae7b4df1 /sys/dev | |
parent | 3d55aa81d7aa437aaa1df7b438629b28af4d5c16 (diff) | |
download | FreeBSD-src-ba4940d821585f5e1e306a3daedd12beb1c6a357.zip FreeBSD-src-ba4940d821585f5e1e306a3daedd12beb1c6a357.tar.gz |
- Change the warning about PCI-e links narrower than x8 to only apply to
10G cards. 1G cards are x4 only.
- Use constants from pcireg.h for reading the current link width.
- Use pci_set_max_read_req() rather than implementing it by hand.
Reviewed by: np
MFC after: 1 week
Diffstat (limited to 'sys/dev')
-rw-r--r-- | sys/dev/cxgb/cxgb_main.c | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/sys/dev/cxgb/cxgb_main.c b/sys/dev/cxgb/cxgb_main.c index be404e1..fc66d60 100644 --- a/sys/dev/cxgb/cxgb_main.c +++ b/sys/dev/cxgb/cxgb_main.c @@ -459,20 +459,18 @@ cxgb_controller_attach(device_t dev) /* find the PCIe link width and set max read request to 4KB*/ if (pci_find_extcap(dev, PCIY_EXPRESS, ®) == 0) { - uint16_t lnk, pectl; - lnk = pci_read_config(dev, reg + 0x12, 2); - sc->link_width = (lnk >> 4) & 0x3f; - - pectl = pci_read_config(dev, reg + 0x8, 2); - pectl = (pectl & ~0x7000) | (5 << 12); - pci_write_config(dev, reg + 0x8, pectl, 2); - } + uint16_t lnk; + + lnk = pci_read_config(dev, reg + PCIR_EXPRESS_LINK_STA, 2); + sc->link_width = (lnk & PCIM_LINK_STA_WIDTH) >> 4; + if (sc->link_width < 8 && + (ai->caps & SUPPORTED_10000baseT_Full)) { + device_printf(sc->dev, + "PCIe x%d Link, expect reduced performance\n", + sc->link_width); + } - if (sc->link_width != 0 && sc->link_width <= 4 && - (ai->nports0 + ai->nports1) <= 2) { - device_printf(sc->dev, - "PCIe x%d Link, expect reduced performance\n", - sc->link_width); + pci_set_max_read_req(dev, 4096); } touch_bars(dev); |