mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-23 19:14:30 +08:00
iwlagn: move hcmd_lock to transport layer
Since it is needed for host commands only, it is needed in transport layer only Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
6d8f6eeb35
commit
72012474b0
@ -3059,7 +3059,6 @@ static int iwl_init_drv(struct iwl_priv *priv)
|
||||
int ret;
|
||||
|
||||
spin_lock_init(&priv->shrd->sta_lock);
|
||||
spin_lock_init(&priv->hcmd_lock);
|
||||
|
||||
mutex_init(&priv->shrd->mutex);
|
||||
|
||||
|
@ -1178,7 +1178,6 @@ struct iwl_priv {
|
||||
u8 mgmt_tx_ant;
|
||||
|
||||
/* spinlock */
|
||||
spinlock_t hcmd_lock; /* protect hcmd */
|
||||
spinlock_t reg_lock; /* protect hw register access */
|
||||
|
||||
/*TODO: remove these pointers - use bus(priv) instead */
|
||||
|
@ -601,10 +601,10 @@ static int iwl_enqueue_hcmd(struct iwl_trans *trans, struct iwl_host_cmd *cmd)
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&priv->hcmd_lock, flags);
|
||||
spin_lock_irqsave(&trans->hcmd_lock, flags);
|
||||
|
||||
if (iwl_queue_space(q) < ((cmd->flags & CMD_ASYNC) ? 2 : 1)) {
|
||||
spin_unlock_irqrestore(&priv->hcmd_lock, flags);
|
||||
spin_unlock_irqrestore(&trans->hcmd_lock, flags);
|
||||
|
||||
IWL_ERR(trans, "No space in command queue\n");
|
||||
is_ct_kill = iwl_check_for_ct_kill(priv);
|
||||
@ -713,7 +713,7 @@ static int iwl_enqueue_hcmd(struct iwl_trans *trans, struct iwl_host_cmd *cmd)
|
||||
iwl_txq_update_write_ptr(priv, txq);
|
||||
|
||||
out:
|
||||
spin_unlock_irqrestore(&priv->hcmd_lock, flags);
|
||||
spin_unlock_irqrestore(&trans->hcmd_lock, flags);
|
||||
return idx;
|
||||
}
|
||||
|
||||
@ -796,7 +796,7 @@ void iwl_tx_cmd_complete(struct iwl_priv *priv, struct iwl_rx_mem_buffer *rxb)
|
||||
} else if (meta->callback)
|
||||
meta->callback(priv, cmd, pkt);
|
||||
|
||||
spin_lock_irqsave(&priv->hcmd_lock, flags);
|
||||
spin_lock_irqsave(&trans->hcmd_lock, flags);
|
||||
|
||||
iwl_hcmd_queue_reclaim(priv, txq_id, index);
|
||||
|
||||
@ -809,7 +809,7 @@ void iwl_tx_cmd_complete(struct iwl_priv *priv, struct iwl_rx_mem_buffer *rxb)
|
||||
|
||||
meta->flags = 0;
|
||||
|
||||
spin_unlock_irqrestore(&priv->hcmd_lock, flags);
|
||||
spin_unlock_irqrestore(&trans->hcmd_lock, flags);
|
||||
}
|
||||
|
||||
const char *get_cmd_string(u8 cmd)
|
||||
|
@ -1284,6 +1284,7 @@ static struct iwl_trans *iwl_trans_pcie_alloc(struct iwl_shared *shrd)
|
||||
iwl_trans->ops = &trans_ops_pcie;
|
||||
iwl_trans->shrd = shrd;
|
||||
trans_pcie->trans = iwl_trans;
|
||||
spin_lock_init(&iwl_trans->hcmd_lock);
|
||||
}
|
||||
|
||||
return iwl_trans;
|
||||
|
@ -146,10 +146,12 @@ struct iwl_trans_ops {
|
||||
* struct iwl_trans - transport common data
|
||||
* @ops - pointer to iwl_trans_ops
|
||||
* @shrd - pointer to iwl_shared which holds shared data from the upper layer
|
||||
* @hcmd_lock: protects HCMD
|
||||
*/
|
||||
struct iwl_trans {
|
||||
const struct iwl_trans_ops *ops;
|
||||
struct iwl_shared *shrd;
|
||||
spinlock_t hcmd_lock;
|
||||
|
||||
/* pointer to trans specific struct */
|
||||
/*Ensure that this pointer will always be aligned to sizeof pointer */
|
||||
|
Loading…
Reference in New Issue
Block a user