iwlwifi: complete STATUS_READY refactoring
When WiMax takes over the RF, inform the op_mode. Signed-off-by: Don Fry <donald.h.fry@intel.com> Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
This commit is contained in:
parent
dec63ce62b
commit
8a8bbdb4de
@ -2250,6 +2250,14 @@ static void iwl_nic_config(struct iwl_op_mode *op_mode)
|
||||
priv->lib->nic_config(priv);
|
||||
}
|
||||
|
||||
static void iwl_wimax_active(struct iwl_op_mode *op_mode)
|
||||
{
|
||||
struct iwl_priv *priv = IWL_OP_MODE_GET_DVM(op_mode);
|
||||
|
||||
clear_bit(STATUS_READY, &priv->status);
|
||||
IWL_ERR(priv, "RF is used by WiMAX\n");
|
||||
}
|
||||
|
||||
static void iwl_stop_sw_queue(struct iwl_op_mode *op_mode, int queue)
|
||||
{
|
||||
struct iwl_priv *priv = IWL_OP_MODE_GET_DVM(op_mode);
|
||||
@ -2341,6 +2349,7 @@ const struct iwl_op_mode_ops iwl_dvm_ops = {
|
||||
.nic_error = iwl_nic_error,
|
||||
.cmd_queue_full = iwl_cmd_queue_full,
|
||||
.nic_config = iwl_nic_config,
|
||||
.wimax_active = iwl_wimax_active,
|
||||
};
|
||||
|
||||
/*****************************************************************************
|
||||
|
@ -125,6 +125,7 @@ struct iwl_fw;
|
||||
* @cmd_queue_full: Called when the command queue gets full. Must be atomic.
|
||||
* @nic_config: configure NIC, called before firmware is started.
|
||||
* May sleep
|
||||
* @wimax_active: invoked when WiMax becomes active. Must be atomic.
|
||||
*/
|
||||
struct iwl_op_mode_ops {
|
||||
struct iwl_op_mode *(*start)(struct iwl_trans *trans,
|
||||
@ -139,6 +140,7 @@ struct iwl_op_mode_ops {
|
||||
void (*nic_error)(struct iwl_op_mode *op_mode);
|
||||
void (*cmd_queue_full)(struct iwl_op_mode *op_mode);
|
||||
void (*nic_config)(struct iwl_op_mode *op_mode);
|
||||
void (*wimax_active)(struct iwl_op_mode *op_mode);
|
||||
};
|
||||
|
||||
/**
|
||||
@ -209,6 +211,11 @@ static inline void iwl_op_mode_nic_config(struct iwl_op_mode *op_mode)
|
||||
op_mode->ops->nic_config(op_mode);
|
||||
}
|
||||
|
||||
static inline void iwl_op_mode_wimax_active(struct iwl_op_mode *op_mode)
|
||||
{
|
||||
op_mode->ops->wimax_active(op_mode);
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
* Op mode layers implementations
|
||||
******************************************************/
|
||||
|
@ -547,14 +547,9 @@ static void iwl_irq_handle_error(struct iwl_trans *trans)
|
||||
APMS_CLK_VAL_MRB_FUNC_MODE) ||
|
||||
(iwl_read_prph(trans, APMG_PS_CTRL_REG) &
|
||||
APMG_PS_CTRL_VAL_RESET_REQ))) {
|
||||
/*
|
||||
* Keep the restart process from trying to send host
|
||||
* commands by clearing the ready bit.
|
||||
*/
|
||||
clear_bit(STATUS_READY, &trans->shrd->status);
|
||||
clear_bit(STATUS_HCMD_ACTIVE, &trans->shrd->status);
|
||||
iwl_op_mode_wimax_active(trans->op_mode);
|
||||
wake_up(&trans->wait_command_queue);
|
||||
IWL_ERR(trans, "RF is used by WiMAX\n");
|
||||
return;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user