svn commit: r200291 - head/sys/dev/siis
Alexander Motin
mav at FreeBSD.org
Wed Dec 9 05:10:11 PST 2009
Author: mav
Date: Wed Dec 9 13:10:10 2009
New Revision: 200291
URL: http://svn.freebsd.org/changeset/base/200291
Log:
Increase Max Read Request Size for PCIe chips from 512 to 1024 bytes.
It gives those beasts additional 10% of write bandwidth.
Modified:
head/sys/dev/siis/siis.c
Modified: head/sys/dev/siis/siis.c
==============================================================================
--- head/sys/dev/siis/siis.c Wed Dec 9 11:00:00 2009 (r200290)
+++ head/sys/dev/siis/siis.c Wed Dec 9 13:10:10 2009 (r200291)
@@ -231,7 +231,20 @@ static int
siis_resume(device_t dev)
{
struct siis_controller *ctlr = device_get_softc(dev);
+ int cap;
+ uint16_t val;
+ /* Set PCIe max read request size to at least 1024 bytes */
+ if (pci_find_extcap(dev, PCIY_EXPRESS, &cap) == 0) {
+ val = pci_read_config(dev,
+ cap + PCIR_EXPRESS_DEVICE_CTL, 2);
+ if ((val & PCIM_EXP_CTL_MAX_READ_REQUEST) < 0x3000) {
+ val &= ~PCIM_EXP_CTL_MAX_READ_REQUEST;
+ val |= 0x3000;
+ pci_write_config(dev,
+ cap + PCIR_EXPRESS_DEVICE_CTL, val, 2);
+ }
+ }
/* Put controller into reset state. */
ctlr->gctl |= SIIS_GCTL_GRESET;
ATA_OUTL(ctlr->r_gmem, SIIS_GCTL, ctlr->gctl);
More information about the svn-src-head
mailing list