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