]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
atl1e: drop pci-msi support because of packet corruption
authorHannes Frederic Sowa <hannes@stressinduktion.org>
Thu, 28 Mar 2013 18:10:50 +0000 (18:10 +0000)
committerBen Hutchings <ben@decadent.org.uk>
Wed, 10 Apr 2013 02:20:13 +0000 (03:20 +0100)
[ Upstream commit 188ab1b105c96656f6bcfb49d0d8bb1b1936b632 ]

Usage of pci-msi results in corrupted dma packet transfers to the host.

Reported-by: rebelyouth <rebelyouth.hacklab@gmail.com>
Cc: Huang, Xiong <xiong@qca.qualcomm.com>
Tested-by: Christian Sünkenberg <christian.suenkenberg@student.kit.edu>
Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
drivers/net/ethernet/atheros/atl1e/atl1e.h
drivers/net/ethernet/atheros/atl1e/atl1e_main.c

index 829b5ad71d0da0a4634cd211bc3f5ffc67215db6..edfdf6b950e73ad82f8c1e3749a973c113237bb7 100644 (file)
@@ -438,7 +438,6 @@ struct atl1e_adapter {
        struct atl1e_hw        hw;
        struct atl1e_hw_stats  hw_stats;
 
-       bool have_msi;
        u32 wol;
        u16 link_speed;
        u16 link_duplex;
index 95483bcac1d029c38764385507d8a6824b4f504f..c69dc29ba208612ea6adaf45473c7345c63f5830 100644 (file)
@@ -1867,37 +1867,19 @@ static void atl1e_free_irq(struct atl1e_adapter *adapter)
        struct net_device *netdev = adapter->netdev;
 
        free_irq(adapter->pdev->irq, netdev);
-
-       if (adapter->have_msi)
-               pci_disable_msi(adapter->pdev);
 }
 
 static int atl1e_request_irq(struct atl1e_adapter *adapter)
 {
        struct pci_dev    *pdev   = adapter->pdev;
        struct net_device *netdev = adapter->netdev;
-       int flags = 0;
        int err = 0;
 
-       adapter->have_msi = true;
-       err = pci_enable_msi(adapter->pdev);
-       if (err) {
-               netdev_dbg(adapter->netdev,
-                          "Unable to allocate MSI interrupt Error: %d\n", err);
-               adapter->have_msi = false;
-       } else
-               netdev->irq = pdev->irq;
-
-
-       if (!adapter->have_msi)
-               flags |= IRQF_SHARED;
-       err = request_irq(adapter->pdev->irq, atl1e_intr, flags,
-                       netdev->name, netdev);
+       err = request_irq(pdev->irq, atl1e_intr, IRQF_SHARED,
+                         netdev->name, netdev);
        if (err) {
                netdev_dbg(adapter->netdev,
                           "Unable to allocate interrupt Error: %d\n", err);
-               if (adapter->have_msi)
-                       pci_disable_msi(adapter->pdev);
                return err;
        }
        netdev_dbg(adapter->netdev, "atl1e_request_irq OK\n");