The previous patch would crash on remove. pci_disable_msi has to be called after free_irq. FYI - pci_disable_msi is safe if MSI hasn't been enabled. --- a/drivers/net/wireless/mac80211/iwlwifi/base.c 2007-06-13 11:10:10.000000000 -0700 +++ b/drivers/net/wireless/mac80211/iwlwifi/base.c 2007-06-14 11:47:01.000000000 -0700 @@ -8117,10 +8117,13 @@ static int iwl_pci_probe(struct pci_dev /* If power management is turned on, default to AC mode */ priv->power_mode = IWL_POWER_AC; priv->user_txpower_limit = IWL_DEFAULT_TX_POWER; + + pci_enable_msi(pdev); + err = request_irq(pdev->irq, iwl_isr, IRQF_SHARED, DRV_NAME, priv); if (err) { IWL_ERROR("Error allocating IRQ %d\n", pdev->irq); - goto out_destroy_workqueue; + goto out_disable_msi; } mutex_lock(&priv->mutex); @@ -8157,7 +8160,8 @@ static int iwl_pci_probe(struct pci_dev out_release_irq: free_irq(pdev->irq, priv); - out_destroy_workqueue: + out_disable_msi: + pci_disable_msi(pdev); destroy_workqueue(priv->workqueue); priv->workqueue = NULL; iwl_unset_hw_setting(priv); @@ -8225,6 +8229,7 @@ static void iwl_pci_remove(struct pci_de priv->workqueue = NULL; free_irq(pdev->irq, priv); + pci_disable_msi(pdev); iounmap(priv->hw_base); pci_release_regions(pdev); pci_disable_device(pdev); - To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html