diff options
author | Andy Shevchenko <andriy.shevchenko@linux.intel.com> | 2017-10-14 10:04:40 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-10-16 16:12:32 -0400 |
commit | 2a600d97cbb2a9311e6b42547d37e0eca9b9d6d6 (patch) | |
tree | 8a03f91206a0aac5a7a7f415b41d5f6490745d43 | |
parent | 9185a610f8f7f1b4e4d28c9de27d1969cf58e0f1 (diff) |
pch_gbe: Switch to new PCI IRQ allocation API
This removes custom flag handling.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h | 3 | ||||
-rw-r--r-- | drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c | 42 |
2 files changed, 17 insertions, 28 deletions
diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h index 8d710a3b4db0..697e29dd4bd3 100644 --- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h +++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h | |||
@@ -613,7 +613,6 @@ struct pch_gbe_privdata { | |||
613 | * @rx_ring: Pointer of Rx descriptor ring structure | 613 | * @rx_ring: Pointer of Rx descriptor ring structure |
614 | * @rx_buffer_len: Receive buffer length | 614 | * @rx_buffer_len: Receive buffer length |
615 | * @tx_queue_len: Transmit queue length | 615 | * @tx_queue_len: Transmit queue length |
616 | * @have_msi: PCI MSI mode flag | ||
617 | * @pch_gbe_privdata: PCI Device ID driver_data | 616 | * @pch_gbe_privdata: PCI Device ID driver_data |
618 | */ | 617 | */ |
619 | 618 | ||
@@ -623,6 +622,7 @@ struct pch_gbe_adapter { | |||
623 | atomic_t irq_sem; | 622 | atomic_t irq_sem; |
624 | struct net_device *netdev; | 623 | struct net_device *netdev; |
625 | struct pci_dev *pdev; | 624 | struct pci_dev *pdev; |
625 | int irq; | ||
626 | struct net_device *polling_netdev; | 626 | struct net_device *polling_netdev; |
627 | struct napi_struct napi; | 627 | struct napi_struct napi; |
628 | struct pch_gbe_hw hw; | 628 | struct pch_gbe_hw hw; |
@@ -637,7 +637,6 @@ struct pch_gbe_adapter { | |||
637 | struct pch_gbe_rx_ring *rx_ring; | 637 | struct pch_gbe_rx_ring *rx_ring; |
638 | unsigned long rx_buffer_len; | 638 | unsigned long rx_buffer_len; |
639 | unsigned long tx_queue_len; | 639 | unsigned long tx_queue_len; |
640 | bool have_msi; | ||
641 | bool rx_stop_flag; | 640 | bool rx_stop_flag; |
642 | int hwts_tx_en; | 641 | int hwts_tx_en; |
643 | int hwts_rx_en; | 642 | int hwts_rx_en; |
diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c index 5ae9681a2da7..457ee80307ea 100644 --- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c +++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c | |||
@@ -781,11 +781,8 @@ static void pch_gbe_free_irq(struct pch_gbe_adapter *adapter) | |||
781 | { | 781 | { |
782 | struct net_device *netdev = adapter->netdev; | 782 | struct net_device *netdev = adapter->netdev; |
783 | 783 | ||
784 | free_irq(adapter->pdev->irq, netdev); | 784 | free_irq(adapter->irq, netdev); |
785 | if (adapter->have_msi) { | 785 | pci_free_irq_vectors(adapter->pdev); |
786 | pci_disable_msi(adapter->pdev); | ||
787 | netdev_dbg(netdev, "call pci_disable_msi\n"); | ||
788 | } | ||
789 | } | 786 | } |
790 | 787 | ||
791 | /** | 788 | /** |
@@ -799,7 +796,7 @@ static void pch_gbe_irq_disable(struct pch_gbe_adapter *adapter) | |||
799 | atomic_inc(&adapter->irq_sem); | 796 | atomic_inc(&adapter->irq_sem); |
800 | iowrite32(0, &hw->reg->INT_EN); | 797 | iowrite32(0, &hw->reg->INT_EN); |
801 | ioread32(&hw->reg->INT_ST); | 798 | ioread32(&hw->reg->INT_ST); |
802 | synchronize_irq(adapter->pdev->irq); | 799 | synchronize_irq(adapter->irq); |
803 | 800 | ||
804 | netdev_dbg(adapter->netdev, "INT_EN reg : 0x%08x\n", | 801 | netdev_dbg(adapter->netdev, "INT_EN reg : 0x%08x\n", |
805 | ioread32(&hw->reg->INT_EN)); | 802 | ioread32(&hw->reg->INT_EN)); |
@@ -1903,30 +1900,23 @@ static int pch_gbe_request_irq(struct pch_gbe_adapter *adapter) | |||
1903 | { | 1900 | { |
1904 | struct net_device *netdev = adapter->netdev; | 1901 | struct net_device *netdev = adapter->netdev; |
1905 | int err; | 1902 | int err; |
1906 | int flags; | ||
1907 | 1903 | ||
1908 | flags = IRQF_SHARED; | 1904 | err = pci_alloc_irq_vectors(adapter->pdev, 1, 1, PCI_IRQ_ALL_TYPES); |
1909 | adapter->have_msi = false; | 1905 | if (err < 0) |
1910 | err = pci_enable_msi(adapter->pdev); | 1906 | return err; |
1911 | netdev_dbg(netdev, "call pci_enable_msi\n"); | 1907 | |
1912 | if (err) { | 1908 | adapter->irq = pci_irq_vector(adapter->pdev, 0); |
1913 | netdev_dbg(netdev, "call pci_enable_msi - Error: %d\n", err); | 1909 | |
1914 | } else { | 1910 | err = request_irq(adapter->irq, &pch_gbe_intr, IRQF_SHARED, |
1915 | flags = 0; | 1911 | netdev->name, netdev); |
1916 | adapter->have_msi = true; | ||
1917 | } | ||
1918 | err = request_irq(adapter->pdev->irq, &pch_gbe_intr, | ||
1919 | flags, netdev->name, netdev); | ||
1920 | if (err) | 1912 | if (err) |
1921 | netdev_err(netdev, "Unable to allocate interrupt Error: %d\n", | 1913 | netdev_err(netdev, "Unable to allocate interrupt Error: %d\n", |
1922 | err); | 1914 | err); |
1923 | netdev_dbg(netdev, | 1915 | netdev_dbg(netdev, "have_msi : %d return : 0x%04x\n", |
1924 | "adapter->have_msi : %d flags : 0x%04x return : 0x%04x\n", | 1916 | pci_dev_msi_enabled(adapter->pdev), err); |
1925 | adapter->have_msi, flags, err); | ||
1926 | return err; | 1917 | return err; |
1927 | } | 1918 | } |
1928 | 1919 | ||
1929 | |||
1930 | /** | 1920 | /** |
1931 | * pch_gbe_up - Up GbE network device | 1921 | * pch_gbe_up - Up GbE network device |
1932 | * @adapter: Board private structure | 1922 | * @adapter: Board private structure |
@@ -2399,9 +2389,9 @@ static void pch_gbe_netpoll(struct net_device *netdev) | |||
2399 | { | 2389 | { |
2400 | struct pch_gbe_adapter *adapter = netdev_priv(netdev); | 2390 | struct pch_gbe_adapter *adapter = netdev_priv(netdev); |
2401 | 2391 | ||
2402 | disable_irq(adapter->pdev->irq); | 2392 | disable_irq(adapter->irq); |
2403 | pch_gbe_intr(adapter->pdev->irq, netdev); | 2393 | pch_gbe_intr(adapter->irq, netdev); |
2404 | enable_irq(adapter->pdev->irq); | 2394 | enable_irq(adapter->irq); |
2405 | } | 2395 | } |
2406 | #endif | 2396 | #endif |
2407 | 2397 | ||