diff options
author | Takashi Iwai <tiwai@suse.de> | 2010-04-16 15:20:06 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2010-04-16 15:20:06 +0200 |
commit | cf0dbba515415bb19b11f9323d5f7bebd7f24fd6 (patch) | |
tree | 375bbc1ade1a92acd6493d224dd701fd7f209014 /drivers/net/wireless/iwlwifi/iwl-agn.c | |
parent | 1cff399ecd9125d8e6a634a1957be1aeb3195a12 (diff) | |
parent | 0340c7dccd80d8706c636e030a6ebbddbddca690 (diff) | |
download | op-kernel-dev-cf0dbba515415bb19b11f9323d5f7bebd7f24fd6.zip op-kernel-dev-cf0dbba515415bb19b11f9323d5f7bebd7f24fd6.tar.gz |
Merge remote branch 'alsa/devel' into topic/misc
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-agn.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c index 818367b..8b8e3e1 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn.c @@ -31,6 +31,7 @@ #include <linux/module.h> #include <linux/init.h> #include <linux/pci.h> +#include <linux/slab.h> #include <linux/dma-mapping.h> #include <linux/delay.h> #include <linux/sched.h> @@ -1258,7 +1259,15 @@ static void iwl_irq_tasklet(struct iwl_priv *priv) /* Ack/clear/reset pending uCode interrupts. * Note: Some bits in CSR_INT are "OR" of bits in CSR_FH_INT_STATUS, */ - iwl_write32(priv, CSR_INT, priv->inta); + /* There is a hardware bug in the interrupt mask function that some + * interrupts (i.e. CSR_INT_BIT_SCD) can still be generated even if + * they are disabled in the CSR_INT_MASK register. Furthermore the + * ICT interrupt handling mechanism has another bug that might cause + * these unmasked interrupts fail to be detected. We workaround the + * hardware bugs here by ACKing all the possible interrupts so that + * interrupt coalescing can still be achieved. + */ + iwl_write32(priv, CSR_INT, priv->inta | ~priv->inta_mask); inta = priv->inta; @@ -2644,7 +2653,7 @@ static int iwl_mac_setup_register(struct iwl_priv *priv) BIT(NL80211_IFTYPE_STATION) | BIT(NL80211_IFTYPE_ADHOC); - hw->wiphy->flags |= WIPHY_FLAG_STRICT_REGULATORY | + hw->wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY | WIPHY_FLAG_DISABLE_BEACON_HINTS; /* |