aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>2017-10-14 10:04:40 -0400
committerDavid S. Miller <davem@davemloft.net>2017-10-16 16:12:32 -0400
commit2a600d97cbb2a9311e6b42547d37e0eca9b9d6d6 (patch)
tree8a03f91206a0aac5a7a7f415b41d5f6490745d43
parent9185a610f8f7f1b4e4d28c9de27d1969cf58e0f1 (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.h3
-rw-r--r--drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c42
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