Few (6) network drivers enable mwi explicitly. Fewer worry about a
failure.
It is not a fix but it should avoid some annoyance like
http://bugzilla.kernel.org/show_bug.cgi?id=15454
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Cc: Conrad Kostecki <conikost@gmx.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
{
iounmap(ioaddr);
pci_release_regions(pdev);
{
iounmap(ioaddr);
pci_release_regions(pdev);
pci_disable_device(pdev);
free_netdev(dev);
}
pci_disable_device(pdev);
free_netdev(dev);
}
goto err_out_free_dev_1;
}
goto err_out_free_dev_1;
}
- rc = pci_set_mwi(pdev);
- if (rc < 0)
- goto err_out_disable_2;
+ if (pci_set_mwi(pdev) < 0)
+ netif_info(tp, probe, dev, "Mem-Wr-Inval unavailable\n");
/* make sure PCI base addr 1 is MMIO */
if (!(pci_resource_flags(pdev, region) & IORESOURCE_MEM)) {
/* make sure PCI base addr 1 is MMIO */
if (!(pci_resource_flags(pdev, region) & IORESOURCE_MEM)) {
"region #%d not an MMIO resource, aborting\n",
region);
rc = -ENODEV;
"region #%d not an MMIO resource, aborting\n",
region);
rc = -ENODEV;
}
/* check for weird/broken PCI region reporting */
}
/* check for weird/broken PCI region reporting */
netif_err(tp, probe, dev,
"Invalid PCI region size(s), aborting\n");
rc = -ENODEV;
netif_err(tp, probe, dev,
"Invalid PCI region size(s), aborting\n");
rc = -ENODEV;
}
rc = pci_request_regions(pdev, MODULENAME);
if (rc < 0) {
netif_err(tp, probe, dev, "could not request regions\n");
}
rc = pci_request_regions(pdev, MODULENAME);
if (rc < 0) {
netif_err(tp, probe, dev, "could not request regions\n");
}
tp->cp_cmd = PCIMulRW | RxChkSum;
}
tp->cp_cmd = PCIMulRW | RxChkSum;
rc = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
if (rc < 0) {
netif_err(tp, probe, dev, "DMA configuration failed\n");
rc = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
if (rc < 0) {
netif_err(tp, probe, dev, "DMA configuration failed\n");
- goto err_out_free_res_4;
+ goto err_out_free_res_3;
if (!ioaddr) {
netif_err(tp, probe, dev, "cannot remap MMIO, aborting\n");
rc = -EIO;
if (!ioaddr) {
netif_err(tp, probe, dev, "cannot remap MMIO, aborting\n");
rc = -EIO;
- goto err_out_free_res_4;
+ goto err_out_free_res_3;
}
tp->pcie_cap = pci_find_capability(pdev, PCI_CAP_ID_EXP);
}
tp->pcie_cap = pci_find_capability(pdev, PCI_CAP_ID_EXP);
if (i == ARRAY_SIZE(rtl_chip_info)) {
dev_err(&pdev->dev,
"driver bug, MAC version not found in rtl_chip_info\n");
if (i == ARRAY_SIZE(rtl_chip_info)) {
dev_err(&pdev->dev,
"driver bug, MAC version not found in rtl_chip_info\n");
rc = register_netdev(dev);
if (rc < 0)
rc = register_netdev(dev);
if (rc < 0)
pci_set_drvdata(pdev, dev);
pci_set_drvdata(pdev, dev);
rtl_disable_msi(pdev, tp);
iounmap(ioaddr);
rtl_disable_msi(pdev, tp);
iounmap(ioaddr);
pci_release_regions(pdev);
pci_release_regions(pdev);
pci_disable_device(pdev);
err_out_free_dev_1:
free_netdev(dev);
pci_disable_device(pdev);
err_out_free_dev_1:
free_netdev(dev);