iwlwifi: don't enable interrupt as a W/A when MSI is enabled
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Tue, 13 Nov 2012 11:35:43 +0000 (13:35 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 14 Nov 2012 10:07:45 +0000 (11:07 +0100)
This is not needed, the comment there was wrong, it
is only needed when MSI was *not* enabled.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/iwlwifi/pcie/trans.c

index a1b9d07b9d01ff5b4805afd3b2ababf3b16770cb..7eb5f483f77d048a411a947855178b9784ecef05 100644 (file)
@@ -2184,9 +2184,16 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev,
        pci_write_config_byte(pdev, PCI_CFG_RETRY_TIMEOUT, 0x00);
 
        err = pci_enable_msi(pdev);
-       if (err)
+       if (err) {
                dev_printk(KERN_ERR, &pdev->dev,
                           "pci_enable_msi failed(0X%x)\n", err);
+               /* enable rfkill interrupt: hw bug w/a */
+               pci_read_config_word(pdev, PCI_COMMAND, &pci_cmd);
+               if (pci_cmd & PCI_COMMAND_INTX_DISABLE) {
+                       pci_cmd &= ~PCI_COMMAND_INTX_DISABLE;
+                       pci_write_config_word(pdev, PCI_COMMAND, pci_cmd);
+               }
+       }
 
        trans->dev = &pdev->dev;
        trans_pcie->irq = pdev->irq;
@@ -2196,14 +2203,6 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev,
        snprintf(trans->hw_id_str, sizeof(trans->hw_id_str),
                 "PCI ID: 0x%04X:0x%04X", pdev->device, pdev->subsystem_device);
 
-       /* TODO: Move this away, not needed if not MSI */
-       /* enable rfkill interrupt: hw bug w/a */
-       pci_read_config_word(pdev, PCI_COMMAND, &pci_cmd);
-       if (pci_cmd & PCI_COMMAND_INTX_DISABLE) {
-               pci_cmd &= ~PCI_COMMAND_INTX_DISABLE;
-               pci_write_config_word(pdev, PCI_COMMAND, pci_cmd);
-       }
-
        /* Initialize the wait queue for commands */
        init_waitqueue_head(&trans_pcie->wait_command_queue);
        spin_lock_init(&trans->reg_lock);