Free irq in ->suspend and request irq in ->resume to be compliant with the latest PM request (Documentation/power/pci.txt). Signed-off-by: Zhu Yi -- diff -urp ipw2200-1.0.6/ipw2200.c ipw2200-1.0.6-pci_link/ipw2200.c --- ipw2200-1.0.6/ipw2200.c 2005-08-10 10:29:25.000000000 +0800 +++ ipw2200-1.0.6-pci_link/ipw2200.c 2005-08-10 10:36:06.000000000 +0800 @@ -10856,6 +10856,7 @@ static int ipw_pci_suspend(struct pci_de /* Take down the device; powers it off, etc. */ ipw_down(priv); + free_irq(pdev->irq, priv); /* Remove the PRESENT state of the device */ netif_device_detach(dev); @@ -10881,6 +10882,7 @@ static int ipw_pci_resume(struct pci_dev struct ipw_priv *priv = pci_get_drvdata(pdev); struct net_device *dev = priv->net_dev; u32 val; + int err; printk(KERN_INFO "%s: Coming out of suspend...\n", dev->name); @@ -10905,6 +10907,12 @@ static int ipw_pci_resume(struct pci_dev if ((val & 0x0000ff00) != 0) pci_write_config_dword(pdev, 0x40, val & 0xffff00ff); + err = request_irq(pdev->irq, ipw_isr, SA_SHIRQ, DRV_NAME, priv); + if (err) { + IPW_ERROR("Error allocating IRQ %d\n", pdev->irq); + return err; + } + /* Set the device back into the PRESENT state; this will also wake * the queue of needed */ netif_device_attach(dev);