Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 291244
b: refs/heads/master
c: c9eec95
h: refs/heads/master
v: v3
  • Loading branch information
Johannes Berg authored and John W. Linville committed Mar 7, 2012
1 parent 126c815 commit e4324b9
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 47 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b1eea297d6b522b801c95b60b1e64fb61228c6c7
refs/heads/master: c9eec95cb429359efd39a3c87fb1544fe2b77bc5
5 changes: 5 additions & 0 deletions trunk/drivers/net/wireless/iwlwifi/iwl-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -1460,6 +1460,11 @@ void iwl_set_hw_rfkill_state(struct iwl_op_mode *op_mode, bool state)
{
struct iwl_priv *priv = IWL_OP_MODE_GET_DVM(op_mode);

if (state)
set_bit(STATUS_RF_KILL_HW, &priv->shrd->status);
else
clear_bit(STATUS_RF_KILL_HW, &priv->shrd->status);

wiphy_rfkill_set_hw_state(priv->hw->wiphy, state);
}

Expand Down
24 changes: 5 additions & 19 deletions trunk/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c
Original file line number Diff line number Diff line change
Expand Up @@ -1016,30 +1016,16 @@ void iwl_irq_tasklet(struct iwl_trans *trans)

/* HW RF KILL switch toggled */
if (inta & CSR_INT_BIT_RF_KILL) {
int hw_rf_kill = 0;
if (!(iwl_read32(trans, CSR_GP_CNTRL) &
CSR_GP_CNTRL_REG_FLAG_HW_RF_KILL_SW))
hw_rf_kill = 1;
bool hw_rfkill;

hw_rfkill = !(iwl_read32(trans, CSR_GP_CNTRL) &
CSR_GP_CNTRL_REG_FLAG_HW_RF_KILL_SW);
IWL_WARN(trans, "RF_KILL bit toggled to %s.\n",
hw_rf_kill ? "disable radio" : "enable radio");
hw_rfkill ? "disable radio" : "enable radio");

isr_stats->rfkill++;

/* driver only loads ucode once setting the interface up.
* the driver allows loading the ucode even if the radio
* is killed. Hence update the killswitch state here. The
* rfkill handler will care about restarting if needed.
*/
if (!test_bit(STATUS_ALIVE, &trans->shrd->status)) {
if (hw_rf_kill)
set_bit(STATUS_RF_KILL_HW,
&trans->shrd->status);
else
clear_bit(STATUS_RF_KILL_HW,
&trans->shrd->status);
iwl_op_mode_hw_rf_kill(trans->op_mode, hw_rf_kill);
}
iwl_op_mode_hw_rf_kill(trans->op_mode, hw_rfkill);

handled |= CSR_INT_BIT_RF_KILL;
}
Expand Down
39 changes: 12 additions & 27 deletions trunk/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c
Original file line number Diff line number Diff line change
Expand Up @@ -1021,6 +1021,7 @@ static int iwl_trans_pcie_start_fw(struct iwl_trans *trans,
int ret;
struct iwl_trans_pcie *trans_pcie =
IWL_TRANS_GET_PCIE_TRANS(trans);
bool hw_rfkill;

trans->shrd->ucode_owner = IWL_OWNERSHIP_DRIVER;
trans_pcie->ac_to_queue[IWL_RXON_CTX_BSS] = iwlagn_bss_ac_to_queue;
Expand All @@ -1039,14 +1040,11 @@ static int iwl_trans_pcie_start_fw(struct iwl_trans *trans,
}

/* If platform's RF_KILL switch is NOT set to KILL */
if (iwl_read32(trans, CSR_GP_CNTRL) &
CSR_GP_CNTRL_REG_FLAG_HW_RF_KILL_SW)
clear_bit(STATUS_RF_KILL_HW, &trans->shrd->status);
else
set_bit(STATUS_RF_KILL_HW, &trans->shrd->status);
hw_rfkill = !(iwl_read32(trans, CSR_GP_CNTRL) &
CSR_GP_CNTRL_REG_FLAG_HW_RF_KILL_SW);
iwl_op_mode_hw_rf_kill(trans->op_mode, hw_rfkill);

if (iwl_is_rfkill(trans->shrd)) {
iwl_op_mode_hw_rf_kill(trans->op_mode, true);
if (hw_rfkill) {
iwl_enable_interrupts(trans);
return -ERFKILL;
}
Expand Down Expand Up @@ -1506,6 +1504,7 @@ static int iwl_trans_pcie_start_hw(struct iwl_trans *trans)
struct iwl_trans_pcie *trans_pcie =
IWL_TRANS_GET_PCIE_TRANS(trans);
int err;
bool hw_rfkill;

trans_pcie->inta_mask = CSR_INI_SET_MASK;

Expand Down Expand Up @@ -1535,16 +1534,9 @@ static int iwl_trans_pcie_start_hw(struct iwl_trans *trans)

iwl_apm_init(trans);

/* If platform's RF_KILL switch is NOT set to KILL */
if (iwl_read32(trans,
CSR_GP_CNTRL) & CSR_GP_CNTRL_REG_FLAG_HW_RF_KILL_SW)
clear_bit(STATUS_RF_KILL_HW, &trans->shrd->status);
else
set_bit(STATUS_RF_KILL_HW, &trans->shrd->status);

iwl_op_mode_hw_rf_kill(trans->op_mode,
test_bit(STATUS_RF_KILL_HW,
&trans->shrd->status));
hw_rfkill = !(iwl_read32(trans, CSR_GP_CNTRL) &
CSR_GP_CNTRL_REG_FLAG_HW_RF_KILL_SW);
iwl_op_mode_hw_rf_kill(trans->op_mode, hw_rfkill);

return err;

Expand Down Expand Up @@ -1659,19 +1651,12 @@ static int iwl_trans_pcie_suspend(struct iwl_trans *trans)

static int iwl_trans_pcie_resume(struct iwl_trans *trans)
{
bool hw_rfkill = false;
bool hw_rfkill;

iwl_enable_interrupts(trans);

if (!(iwl_read32(trans, CSR_GP_CNTRL) &
CSR_GP_CNTRL_REG_FLAG_HW_RF_KILL_SW))
hw_rfkill = true;

if (hw_rfkill)
set_bit(STATUS_RF_KILL_HW, &trans->shrd->status);
else
clear_bit(STATUS_RF_KILL_HW, &trans->shrd->status);

hw_rfkill = !(iwl_read32(trans, CSR_GP_CNTRL) &
CSR_GP_CNTRL_REG_FLAG_HW_RF_KILL_SW);
iwl_op_mode_hw_rf_kill(trans->op_mode, hw_rfkill);

return 0;
Expand Down

0 comments on commit e4324b9

Please sign in to comment.