module_exit(e1000_exit_module);
- flags = SA_SHIRQ | SA_SAMPLE_RANDOM;
+ static int e1000_request_irq(struct e1000_adapter *adapter)
+ {
+ struct net_device *netdev = adapter->netdev;
+ int flags, err = 0;
+
++ flags = IRQF_SHARED;
+ #ifdef CONFIG_PCI_MSI
+ if (adapter->hw.mac_type > e1000_82547_rev_2) {
+ adapter->have_msi = TRUE;
+ if ((err = pci_enable_msi(adapter->pdev))) {
+ DPRINTK(PROBE, ERR,
+ "Unable to allocate MSI interrupt Error: %d\n", err);
+ adapter->have_msi = FALSE;
+ }
+ }
+ if (adapter->have_msi)
+ flags &= ~SA_SHIRQ;
+ #endif
+ if ((err = request_irq(adapter->pdev->irq, &e1000_intr, flags,
+ netdev->name, netdev)))
+ DPRINTK(PROBE, ERR,
+ "Unable to allocate interrupt Error: %d\n", err);
+
+ return err;
+ }
+
+ static void e1000_free_irq(struct e1000_adapter *adapter)
+ {
+ struct net_device *netdev = adapter->netdev;
+
+ free_irq(adapter->pdev->irq, netdev);
+
+ #ifdef CONFIG_PCI_MSI
+ if (adapter->have_msi)
+ pci_disable_msi(adapter->pdev);
+ #endif
+ }
+
/**
* e1000_irq_disable - Mask off interrupt generation on the NIC
* @adapter: board private structure