Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Andy Shevchenko and committed by
David S. Miller
2a600d97 9185a610

+17 -28
+1 -2
drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h
··· 613 613 * @rx_ring: Pointer of Rx descriptor ring structure 614 614 * @rx_buffer_len: Receive buffer length 615 615 * @tx_queue_len: Transmit queue length 616 - * @have_msi: PCI MSI mode flag 617 616 * @pch_gbe_privdata: PCI Device ID driver_data 618 617 */ 619 618 ··· 622 623 atomic_t irq_sem; 623 624 struct net_device *netdev; 624 625 struct pci_dev *pdev; 626 + int irq; 625 627 struct net_device *polling_netdev; 626 628 struct napi_struct napi; 627 629 struct pch_gbe_hw hw; ··· 637 637 struct pch_gbe_rx_ring *rx_ring; 638 638 unsigned long rx_buffer_len; 639 639 unsigned long tx_queue_len; 640 - bool have_msi; 641 640 bool rx_stop_flag; 642 641 int hwts_tx_en; 643 642 int hwts_rx_en;
+16 -26
drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
··· 781 781 { 782 782 struct net_device *netdev = adapter->netdev; 783 783 784 - free_irq(adapter->pdev->irq, netdev); 785 - if (adapter->have_msi) { 786 - pci_disable_msi(adapter->pdev); 787 - netdev_dbg(netdev, "call pci_disable_msi\n"); 788 - } 784 + free_irq(adapter->irq, netdev); 785 + pci_free_irq_vectors(adapter->pdev); 789 786 } 790 787 791 788 /** ··· 796 799 atomic_inc(&adapter->irq_sem); 797 800 iowrite32(0, &hw->reg->INT_EN); 798 801 ioread32(&hw->reg->INT_ST); 799 - synchronize_irq(adapter->pdev->irq); 802 + synchronize_irq(adapter->irq); 800 803 801 804 netdev_dbg(adapter->netdev, "INT_EN reg : 0x%08x\n", 802 805 ioread32(&hw->reg->INT_EN)); ··· 1900 1903 { 1901 1904 struct net_device *netdev = adapter->netdev; 1902 1905 int err; 1903 - int flags; 1904 1906 1905 - flags = IRQF_SHARED; 1906 - adapter->have_msi = false; 1907 - err = pci_enable_msi(adapter->pdev); 1908 - netdev_dbg(netdev, "call pci_enable_msi\n"); 1909 - if (err) { 1910 - netdev_dbg(netdev, "call pci_enable_msi - Error: %d\n", err); 1911 - } else { 1912 - flags = 0; 1913 - adapter->have_msi = true; 1914 - } 1915 - err = request_irq(adapter->pdev->irq, &pch_gbe_intr, 1916 - flags, netdev->name, netdev); 1907 + err = pci_alloc_irq_vectors(adapter->pdev, 1, 1, PCI_IRQ_ALL_TYPES); 1908 + if (err < 0) 1909 + return err; 1910 + 1911 + adapter->irq = pci_irq_vector(adapter->pdev, 0); 1912 + 1913 + err = request_irq(adapter->irq, &pch_gbe_intr, IRQF_SHARED, 1914 + netdev->name, netdev); 1917 1915 if (err) 1918 1916 netdev_err(netdev, "Unable to allocate interrupt Error: %d\n", 1919 1917 err); 1920 - netdev_dbg(netdev, 1921 - "adapter->have_msi : %d flags : 0x%04x return : 0x%04x\n", 1922 - adapter->have_msi, flags, err); 1918 + netdev_dbg(netdev, "have_msi : %d return : 0x%04x\n", 1919 + pci_dev_msi_enabled(adapter->pdev), err); 1923 1920 return err; 1924 1921 } 1925 - 1926 1922 1927 1923 /** 1928 1924 * pch_gbe_up - Up GbE network device ··· 2389 2399 { 2390 2400 struct pch_gbe_adapter *adapter = netdev_priv(netdev); 2391 2401 2392 - disable_irq(adapter->pdev->irq); 2393 - pch_gbe_intr(adapter->pdev->irq, netdev); 2394 - enable_irq(adapter->pdev->irq); 2402 + disable_irq(adapter->irq); 2403 + pch_gbe_intr(adapter->irq, netdev); 2404 + enable_irq(adapter->irq); 2395 2405 } 2396 2406 #endif 2397 2407