aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi
diff options
context:
space:
mode:
authorTomas Winkler <tomas.winkler@intel.com>2008-08-28 05:25:04 -0400
committerJohn W. Linville <linville@tuxdriver.com>2008-09-02 17:12:49 -0400
commitcf88c433bf64b6f7395a39f840bec88a8c58b58b (patch)
tree1b39040b6859e1da4c1364aab0f5d78fd3d55e9c /drivers/net/wireless/iwlwifi
parent49898852e6aa8a6de9a5bc0bab2cf305b3583bbf (diff)
iwlwifi: workaround interrupt handling no some platforms
This patch adds workaround for an interrupt related hardware bug on some platforms. (Apparently these platforms boot-up w/ INTX_DISABLED set. -- JWL) Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> Signed-off-by: Zhu Yi <yi.zhu@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index 061ffba9c884..c0b73c4d6f44 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -2602,6 +2602,7 @@ static int iwl4965_mac_start(struct ieee80211_hw *hw)
2602{ 2602{
2603 struct iwl_priv *priv = hw->priv; 2603 struct iwl_priv *priv = hw->priv;
2604 int ret; 2604 int ret;
2605 u16 pci_cmd;
2605 2606
2606 IWL_DEBUG_MAC80211("enter\n"); 2607 IWL_DEBUG_MAC80211("enter\n");
2607 2608
@@ -2612,6 +2613,13 @@ static int iwl4965_mac_start(struct ieee80211_hw *hw)
2612 pci_restore_state(priv->pci_dev); 2613 pci_restore_state(priv->pci_dev);
2613 pci_enable_msi(priv->pci_dev); 2614 pci_enable_msi(priv->pci_dev);
2614 2615
2616 /* enable interrupts if needed: hw bug w/a */
2617 pci_read_config_word(priv->pci_dev, PCI_COMMAND, &pci_cmd);
2618 if (pci_cmd & PCI_COMMAND_INTX_DISABLE) {
2619 pci_cmd &= ~PCI_COMMAND_INTX_DISABLE;
2620 pci_write_config_word(priv->pci_dev, PCI_COMMAND, pci_cmd);
2621 }
2622
2615 ret = request_irq(priv->pci_dev->irq, iwl4965_isr, IRQF_SHARED, 2623 ret = request_irq(priv->pci_dev->irq, iwl4965_isr, IRQF_SHARED,
2616 DRV_NAME, priv); 2624 DRV_NAME, priv);
2617 if (ret) { 2625 if (ret) {