Skip to content

Commit

Permalink
iwlagn: move hcmd_lock to transport layer
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Emmanuel Grumbach authored and John W. Linville committed Aug 29, 2011
1 parent 6d8f6ee commit 7201247
Show file tree
Hide file tree
Showing 5 changed files with 8 additions and 7 deletions.
1 change: 0 additions & 1 deletion drivers/net/wireless/iwlwifi/iwl-agn.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down
1 change: 0 additions & 1 deletion drivers/net/wireless/iwlwifi/iwl-dev.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand Down
10 changes: 5 additions & 5 deletions drivers/net/wireless/iwlwifi/iwl-trans-tx-pcie.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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;
}

Expand Down Expand Up @@ -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);

Expand All @@ -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)
Expand Down
1 change: 1 addition & 0 deletions drivers/net/wireless/iwlwifi/iwl-trans.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
2 changes: 2 additions & 0 deletions drivers/net/wireless/iwlwifi/iwl-trans.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand Down

0 comments on commit 7201247

Please sign in to comment.