diff options
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h | 6 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c | 6 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-trans-pcie.c | 13 |
3 files changed, 16 insertions, 9 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h index 4f73a6d06509..93d89a375a1c 100644 --- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h +++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h | |||
@@ -376,6 +376,12 @@ static inline void iwl_enable_interrupts(struct iwl_trans *trans) | |||
376 | iwl_write32(trans, CSR_INT_MASK, trans_pcie->inta_mask); | 376 | iwl_write32(trans, CSR_INT_MASK, trans_pcie->inta_mask); |
377 | } | 377 | } |
378 | 378 | ||
379 | static inline void iwl_enable_rfkill_int(struct iwl_trans *trans) | ||
380 | { | ||
381 | IWL_DEBUG_ISR(trans, "Enabling rfkill interrupt\n"); | ||
382 | iwl_write32(trans, CSR_INT_MASK, CSR_INT_BIT_RF_KILL); | ||
383 | } | ||
384 | |||
379 | /* | 385 | /* |
380 | * we have 8 bits used like this: | 386 | * we have 8 bits used like this: |
381 | * | 387 | * |
diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c index 787229b352f6..2d6ea42b0d8e 100644 --- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c +++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c | |||
@@ -1134,10 +1134,8 @@ void iwl_irq_tasklet(struct iwl_trans *trans) | |||
1134 | if (test_bit(STATUS_INT_ENABLED, &trans->shrd->status)) | 1134 | if (test_bit(STATUS_INT_ENABLED, &trans->shrd->status)) |
1135 | iwl_enable_interrupts(trans); | 1135 | iwl_enable_interrupts(trans); |
1136 | /* Re-enable RF_KILL if it occurred */ | 1136 | /* Re-enable RF_KILL if it occurred */ |
1137 | else if (handled & CSR_INT_BIT_RF_KILL) { | 1137 | else if (handled & CSR_INT_BIT_RF_KILL) |
1138 | IWL_DEBUG_ISR(trans, "Enabling rfkill interrupt\n"); | 1138 | iwl_enable_rfkill_int(trans); |
1139 | iwl_write32(trans, CSR_INT_MASK, CSR_INT_BIT_RF_KILL); | ||
1140 | } | ||
1141 | } | 1139 | } |
1142 | 1140 | ||
1143 | /****************************************************************************** | 1141 | /****************************************************************************** |
diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c b/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c index aced6f8ae1e9..88e1c427f8f5 100644 --- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c +++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c | |||
@@ -1044,7 +1044,7 @@ static int iwl_trans_pcie_start_fw(struct iwl_trans *trans, | |||
1044 | iwl_op_mode_hw_rf_kill(trans->op_mode, hw_rfkill); | 1044 | iwl_op_mode_hw_rf_kill(trans->op_mode, hw_rfkill); |
1045 | 1045 | ||
1046 | if (hw_rfkill) { | 1046 | if (hw_rfkill) { |
1047 | iwl_enable_interrupts(trans); | 1047 | iwl_enable_rfkill_int(trans); |
1048 | return -ERFKILL; | 1048 | return -ERFKILL; |
1049 | } | 1049 | } |
1050 | 1050 | ||
@@ -1553,8 +1553,7 @@ static void iwl_trans_pcie_stop_hw(struct iwl_trans *trans) | |||
1553 | iwl_write32(trans, CSR_INT, 0xFFFFFFFF); | 1553 | iwl_write32(trans, CSR_INT, 0xFFFFFFFF); |
1554 | 1554 | ||
1555 | /* Even if we stop the HW, we still want the RF kill interrupt */ | 1555 | /* Even if we stop the HW, we still want the RF kill interrupt */ |
1556 | IWL_DEBUG_ISR(trans, "Enabling rfkill interrupt\n"); | 1556 | iwl_enable_rfkill_int(trans); |
1557 | iwl_write32(trans, CSR_INT_MASK, CSR_INT_BIT_RF_KILL); | ||
1558 | } | 1557 | } |
1559 | 1558 | ||
1560 | static int iwl_trans_pcie_reclaim(struct iwl_trans *trans, int sta_id, int tid, | 1559 | static int iwl_trans_pcie_reclaim(struct iwl_trans *trans, int sta_id, int tid, |
@@ -1647,10 +1646,14 @@ static int iwl_trans_pcie_resume(struct iwl_trans *trans) | |||
1647 | { | 1646 | { |
1648 | bool hw_rfkill; | 1647 | bool hw_rfkill; |
1649 | 1648 | ||
1650 | iwl_enable_interrupts(trans); | ||
1651 | |||
1652 | hw_rfkill = !(iwl_read32(trans, CSR_GP_CNTRL) & | 1649 | hw_rfkill = !(iwl_read32(trans, CSR_GP_CNTRL) & |
1653 | CSR_GP_CNTRL_REG_FLAG_HW_RF_KILL_SW); | 1650 | CSR_GP_CNTRL_REG_FLAG_HW_RF_KILL_SW); |
1651 | |||
1652 | if (hw_rfkill) | ||
1653 | iwl_enable_rfkill_int(trans); | ||
1654 | else | ||
1655 | iwl_enable_interrupts(trans); | ||
1656 | |||
1654 | iwl_op_mode_hw_rf_kill(trans->op_mode, hw_rfkill); | 1657 | iwl_op_mode_hw_rf_kill(trans->op_mode, hw_rfkill); |
1655 | 1658 | ||
1656 | return 0; | 1659 | return 0; |