aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-agn.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-agn.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index 0a376f720d78..f43a45d0f1dd 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -1236,7 +1236,15 @@ static void iwl_irq_tasklet(struct iwl_priv *priv)
1236 /* Ack/clear/reset pending uCode interrupts. 1236 /* Ack/clear/reset pending uCode interrupts.
1237 * Note: Some bits in CSR_INT are "OR" of bits in CSR_FH_INT_STATUS, 1237 * Note: Some bits in CSR_INT are "OR" of bits in CSR_FH_INT_STATUS,
1238 */ 1238 */
1239 iwl_write32(priv, CSR_INT, priv->_agn.inta); 1239 /* There is a hardware bug in the interrupt mask function that some
1240 * interrupts (i.e. CSR_INT_BIT_SCD) can still be generated even if
1241 * they are disabled in the CSR_INT_MASK register. Furthermore the
1242 * ICT interrupt handling mechanism has another bug that might cause
1243 * these unmasked interrupts fail to be detected. We workaround the
1244 * hardware bugs here by ACKing all the possible interrupts so that
1245 * interrupt coalescing can still be achieved.
1246 */
1247 iwl_write32(priv, CSR_INT, priv->_agn.inta | ~priv->inta_mask);
1240 1248
1241 inta = priv->_agn.inta; 1249 inta = priv->_agn.inta;
1242 1250
@@ -2611,7 +2619,7 @@ static int iwl_mac_setup_register(struct iwl_priv *priv)
2611 BIT(NL80211_IFTYPE_STATION) | 2619 BIT(NL80211_IFTYPE_STATION) |
2612 BIT(NL80211_IFTYPE_ADHOC); 2620 BIT(NL80211_IFTYPE_ADHOC);
2613 2621
2614 hw->wiphy->flags |= WIPHY_FLAG_STRICT_REGULATORY | 2622 hw->wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY |
2615 WIPHY_FLAG_DISABLE_BEACON_HINTS; 2623 WIPHY_FLAG_DISABLE_BEACON_HINTS;
2616 2624
2617 /* 2625 /*