diff options
author | françois romieu <romieu@fr.zoreil.com> | 2010-04-26 07:42:06 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-04-26 18:36:47 -0400 |
commit | 87aeec767e1de60d7f76abbb44df5372b0932b7b (patch) | |
tree | c6cc319efa9212bdd1b9c843e326bddf6c4d9638 | |
parent | 4eb8b9031a0314539605733597b1e30222d4da70 (diff) |
r8169: failure to enable mwi should not be fatal
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>
-rw-r--r-- | drivers/net/r8169.c | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c index dbb1f5a1824c..2b54389c8f57 100644 --- a/drivers/net/r8169.c +++ b/drivers/net/r8169.c | |||
@@ -2759,6 +2759,7 @@ static void rtl8169_release_board(struct pci_dev *pdev, struct net_device *dev, | |||
2759 | { | 2759 | { |
2760 | iounmap(ioaddr); | 2760 | iounmap(ioaddr); |
2761 | pci_release_regions(pdev); | 2761 | pci_release_regions(pdev); |
2762 | pci_clear_mwi(pdev); | ||
2762 | pci_disable_device(pdev); | 2763 | pci_disable_device(pdev); |
2763 | free_netdev(dev); | 2764 | free_netdev(dev); |
2764 | } | 2765 | } |
@@ -3014,9 +3015,8 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
3014 | goto err_out_free_dev_1; | 3015 | goto err_out_free_dev_1; |
3015 | } | 3016 | } |
3016 | 3017 | ||
3017 | rc = pci_set_mwi(pdev); | 3018 | if (pci_set_mwi(pdev) < 0) |
3018 | if (rc < 0) | 3019 | netif_info(tp, probe, dev, "Mem-Wr-Inval unavailable\n"); |
3019 | goto err_out_disable_2; | ||
3020 | 3020 | ||
3021 | /* make sure PCI base addr 1 is MMIO */ | 3021 | /* make sure PCI base addr 1 is MMIO */ |
3022 | if (!(pci_resource_flags(pdev, region) & IORESOURCE_MEM)) { | 3022 | if (!(pci_resource_flags(pdev, region) & IORESOURCE_MEM)) { |
@@ -3024,7 +3024,7 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
3024 | "region #%d not an MMIO resource, aborting\n", | 3024 | "region #%d not an MMIO resource, aborting\n", |
3025 | region); | 3025 | region); |
3026 | rc = -ENODEV; | 3026 | rc = -ENODEV; |
3027 | goto err_out_mwi_3; | 3027 | goto err_out_mwi_2; |
3028 | } | 3028 | } |
3029 | 3029 | ||
3030 | /* check for weird/broken PCI region reporting */ | 3030 | /* check for weird/broken PCI region reporting */ |
@@ -3032,13 +3032,13 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
3032 | netif_err(tp, probe, dev, | 3032 | netif_err(tp, probe, dev, |
3033 | "Invalid PCI region size(s), aborting\n"); | 3033 | "Invalid PCI region size(s), aborting\n"); |
3034 | rc = -ENODEV; | 3034 | rc = -ENODEV; |
3035 | goto err_out_mwi_3; | 3035 | goto err_out_mwi_2; |
3036 | } | 3036 | } |
3037 | 3037 | ||
3038 | rc = pci_request_regions(pdev, MODULENAME); | 3038 | rc = pci_request_regions(pdev, MODULENAME); |
3039 | if (rc < 0) { | 3039 | if (rc < 0) { |
3040 | netif_err(tp, probe, dev, "could not request regions\n"); | 3040 | netif_err(tp, probe, dev, "could not request regions\n"); |
3041 | goto err_out_mwi_3; | 3041 | goto err_out_mwi_2; |
3042 | } | 3042 | } |
3043 | 3043 | ||
3044 | tp->cp_cmd = PCIMulRW | RxChkSum; | 3044 | tp->cp_cmd = PCIMulRW | RxChkSum; |
@@ -3051,7 +3051,7 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
3051 | rc = pci_set_dma_mask(pdev, DMA_BIT_MASK(32)); | 3051 | rc = pci_set_dma_mask(pdev, DMA_BIT_MASK(32)); |
3052 | if (rc < 0) { | 3052 | if (rc < 0) { |
3053 | netif_err(tp, probe, dev, "DMA configuration failed\n"); | 3053 | netif_err(tp, probe, dev, "DMA configuration failed\n"); |
3054 | goto err_out_free_res_4; | 3054 | goto err_out_free_res_3; |
3055 | } | 3055 | } |
3056 | } | 3056 | } |
3057 | 3057 | ||
@@ -3060,7 +3060,7 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
3060 | if (!ioaddr) { | 3060 | if (!ioaddr) { |
3061 | netif_err(tp, probe, dev, "cannot remap MMIO, aborting\n"); | 3061 | netif_err(tp, probe, dev, "cannot remap MMIO, aborting\n"); |
3062 | rc = -EIO; | 3062 | rc = -EIO; |
3063 | goto err_out_free_res_4; | 3063 | goto err_out_free_res_3; |
3064 | } | 3064 | } |
3065 | 3065 | ||
3066 | tp->pcie_cap = pci_find_capability(pdev, PCI_CAP_ID_EXP); | 3066 | tp->pcie_cap = pci_find_capability(pdev, PCI_CAP_ID_EXP); |
@@ -3102,7 +3102,7 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
3102 | if (i == ARRAY_SIZE(rtl_chip_info)) { | 3102 | if (i == ARRAY_SIZE(rtl_chip_info)) { |
3103 | dev_err(&pdev->dev, | 3103 | dev_err(&pdev->dev, |
3104 | "driver bug, MAC version not found in rtl_chip_info\n"); | 3104 | "driver bug, MAC version not found in rtl_chip_info\n"); |
3105 | goto err_out_msi_5; | 3105 | goto err_out_msi_4; |
3106 | } | 3106 | } |
3107 | tp->chipset = i; | 3107 | tp->chipset = i; |
3108 | 3108 | ||
@@ -3167,7 +3167,7 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
3167 | 3167 | ||
3168 | rc = register_netdev(dev); | 3168 | rc = register_netdev(dev); |
3169 | if (rc < 0) | 3169 | if (rc < 0) |
3170 | goto err_out_msi_5; | 3170 | goto err_out_msi_4; |
3171 | 3171 | ||
3172 | pci_set_drvdata(pdev, dev); | 3172 | pci_set_drvdata(pdev, dev); |
3173 | 3173 | ||
@@ -3190,14 +3190,13 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
3190 | out: | 3190 | out: |
3191 | return rc; | 3191 | return rc; |
3192 | 3192 | ||
3193 | err_out_msi_5: | 3193 | err_out_msi_4: |
3194 | rtl_disable_msi(pdev, tp); | 3194 | rtl_disable_msi(pdev, tp); |
3195 | iounmap(ioaddr); | 3195 | iounmap(ioaddr); |
3196 | err_out_free_res_4: | 3196 | err_out_free_res_3: |
3197 | pci_release_regions(pdev); | 3197 | pci_release_regions(pdev); |
3198 | err_out_mwi_3: | 3198 | err_out_mwi_2: |
3199 | pci_clear_mwi(pdev); | 3199 | pci_clear_mwi(pdev); |
3200 | err_out_disable_2: | ||
3201 | pci_disable_device(pdev); | 3200 | pci_disable_device(pdev); |
3202 | err_out_free_dev_1: | 3201 | err_out_free_dev_1: |
3203 | free_netdev(dev); | 3202 | free_netdev(dev); |