Commit 72012474 authored by Emmanuel Grumbach's avatar Emmanuel Grumbach Committed by John W. Linville

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: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: default avatarWey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 6d8f6eeb
...@@ -3059,7 +3059,6 @@ static int iwl_init_drv(struct iwl_priv *priv) ...@@ -3059,7 +3059,6 @@ static int iwl_init_drv(struct iwl_priv *priv)
int ret; int ret;
spin_lock_init(&priv->shrd->sta_lock); spin_lock_init(&priv->shrd->sta_lock);
spin_lock_init(&priv->hcmd_lock);
mutex_init(&priv->shrd->mutex); mutex_init(&priv->shrd->mutex);
......
...@@ -1178,7 +1178,6 @@ struct iwl_priv { ...@@ -1178,7 +1178,6 @@ struct iwl_priv {
u8 mgmt_tx_ant; u8 mgmt_tx_ant;
/* spinlock */ /* spinlock */
spinlock_t hcmd_lock; /* protect hcmd */
spinlock_t reg_lock; /* protect hw register access */ spinlock_t reg_lock; /* protect hw register access */
/*TODO: remove these pointers - use bus(priv) instead */ /*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) ...@@ -601,10 +601,10 @@ static int iwl_enqueue_hcmd(struct iwl_trans *trans, struct iwl_host_cmd *cmd)
return -EIO; 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)) { 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"); IWL_ERR(trans, "No space in command queue\n");
is_ct_kill = iwl_check_for_ct_kill(priv); 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) ...@@ -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); iwl_txq_update_write_ptr(priv, txq);
out: out:
spin_unlock_irqrestore(&priv->hcmd_lock, flags); spin_unlock_irqrestore(&trans->hcmd_lock, flags);
return idx; return idx;
} }
...@@ -796,7 +796,7 @@ void iwl_tx_cmd_complete(struct iwl_priv *priv, struct iwl_rx_mem_buffer *rxb) ...@@ -796,7 +796,7 @@ void iwl_tx_cmd_complete(struct iwl_priv *priv, struct iwl_rx_mem_buffer *rxb)
} else if (meta->callback) } else if (meta->callback)
meta->callback(priv, cmd, pkt); 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); 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) ...@@ -809,7 +809,7 @@ void iwl_tx_cmd_complete(struct iwl_priv *priv, struct iwl_rx_mem_buffer *rxb)
meta->flags = 0; meta->flags = 0;
spin_unlock_irqrestore(&priv->hcmd_lock, flags); spin_unlock_irqrestore(&trans->hcmd_lock, flags);
} }
const char *get_cmd_string(u8 cmd) const char *get_cmd_string(u8 cmd)
......
...@@ -1284,6 +1284,7 @@ static struct iwl_trans *iwl_trans_pcie_alloc(struct iwl_shared *shrd) ...@@ -1284,6 +1284,7 @@ static struct iwl_trans *iwl_trans_pcie_alloc(struct iwl_shared *shrd)
iwl_trans->ops = &trans_ops_pcie; iwl_trans->ops = &trans_ops_pcie;
iwl_trans->shrd = shrd; iwl_trans->shrd = shrd;
trans_pcie->trans = iwl_trans; trans_pcie->trans = iwl_trans;
spin_lock_init(&iwl_trans->hcmd_lock);
} }
return iwl_trans; return iwl_trans;
......
...@@ -146,10 +146,12 @@ struct iwl_trans_ops { ...@@ -146,10 +146,12 @@ struct iwl_trans_ops {
* struct iwl_trans - transport common data * struct iwl_trans - transport common data
* @ops - pointer to iwl_trans_ops * @ops - pointer to iwl_trans_ops
* @shrd - pointer to iwl_shared which holds shared data from the upper layer * @shrd - pointer to iwl_shared which holds shared data from the upper layer
* @hcmd_lock: protects HCMD
*/ */
struct iwl_trans { struct iwl_trans {
const struct iwl_trans_ops *ops; const struct iwl_trans_ops *ops;
struct iwl_shared *shrd; struct iwl_shared *shrd;
spinlock_t hcmd_lock;
/* pointer to trans specific struct */ /* pointer to trans specific struct */
/*Ensure that this pointer will always be aligned to sizeof pointer */ /*Ensure that this pointer will always be aligned to sizeof pointer */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment