bcma: change max PCI read request size to 128
This PCIe controller does not support a max read request size above 128 bytes. The sold card I tested this controller with used 128 as default value, but some new routers are sold with BCM4331 chips, which have a default max read request size of 512. This device fails at the first DMA reqeust whch is bigger than 126 bytes. This patch changes the max read request size to 128 for every device on the PCIe link. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
634b80595f
commit
f4a83e578e
|
@ -581,6 +581,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, bcma_core_pci_fixup_addresses);
|
||||||
int bcma_core_pci_plat_dev_init(struct pci_dev *dev)
|
int bcma_core_pci_plat_dev_init(struct pci_dev *dev)
|
||||||
{
|
{
|
||||||
struct bcma_drv_pci_host *pc_host;
|
struct bcma_drv_pci_host *pc_host;
|
||||||
|
int readrq;
|
||||||
|
|
||||||
if (dev->bus->ops->read != bcma_core_pci_hostmode_read_config) {
|
if (dev->bus->ops->read != bcma_core_pci_hostmode_read_config) {
|
||||||
/* This is not a device on the PCI-core bridge. */
|
/* This is not a device on the PCI-core bridge. */
|
||||||
|
@ -595,6 +596,11 @@ int bcma_core_pci_plat_dev_init(struct pci_dev *dev)
|
||||||
dev->irq = bcma_core_irq(pc_host->pdev->core);
|
dev->irq = bcma_core_irq(pc_host->pdev->core);
|
||||||
pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq);
|
pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq);
|
||||||
|
|
||||||
|
readrq = pcie_get_readrq(dev);
|
||||||
|
if (readrq > 128) {
|
||||||
|
pr_info("change PCIe max read request size from %i to 128\n", readrq);
|
||||||
|
pcie_set_readrq(dev, 128);
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(bcma_core_pci_plat_dev_init);
|
EXPORT_SYMBOL(bcma_core_pci_plat_dev_init);
|
||||||
|
|
Loading…
Reference in New Issue