aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>2011-08-26 02:11:07 -0400
committerJohn W. Linville <linville@tuxdriver.com>2011-08-29 15:30:27 -0400
commit72012474b01e2f2d433e4253505f5dcfb3345d17 (patch)
treeab5453126e619bdfc8fab5584fe4a3df8ee795e7
parent6d8f6eeb350696050a1f5cf8f9d0daabab68eaf5 (diff)
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>
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.c1
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-dev.h1
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-trans-tx-pcie.c10
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-trans.c1
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-trans.h2
5 files changed, 8 insertions, 7 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index f559c6362a00..9c5f08a938eb 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -3059,7 +3059,6 @@ static int iwl_init_drv(struct iwl_priv *priv)
3059 int ret; 3059 int ret;
3060 3060
3061 spin_lock_init(&priv->shrd->sta_lock); 3061 spin_lock_init(&priv->shrd->sta_lock);
3062 spin_lock_init(&priv->hcmd_lock);
3063 3062
3064 mutex_init(&priv->shrd->mutex); 3063 mutex_init(&priv->shrd->mutex);
3065 3064
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h
index eac25c507d30..de293cf02177 100644
--- a/drivers/net/wireless/iwlwifi/iwl-dev.h
+++ b/drivers/net/wireless/iwlwifi/iwl-dev.h
@@ -1178,7 +1178,6 @@ struct iwl_priv {
1178 u8 mgmt_tx_ant; 1178 u8 mgmt_tx_ant;
1179 1179
1180 /* spinlock */ 1180 /* spinlock */
1181 spinlock_t hcmd_lock; /* protect hcmd */
1182 spinlock_t reg_lock; /* protect hw register access */ 1181 spinlock_t reg_lock; /* protect hw register access */
1183 1182
1184 /*TODO: remove these pointers - use bus(priv) instead */ 1183 /*TODO: remove these pointers - use bus(priv) instead */
diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-tx-pcie.c b/drivers/net/wireless/iwlwifi/iwl-trans-tx-pcie.c
index 1704eab8ddf2..835e3edb9cce 100644
--- a/drivers/net/wireless/iwlwifi/iwl-trans-tx-pcie.c
+++ b/drivers/net/wireless/iwlwifi/iwl-trans-tx-pcie.c
@@ -601,10 +601,10 @@ static int iwl_enqueue_hcmd(struct iwl_trans *trans, struct iwl_host_cmd *cmd)
601 return -EIO; 601 return -EIO;
602 } 602 }
603 603
604 spin_lock_irqsave(&priv->hcmd_lock, flags); 604 spin_lock_irqsave(&trans->hcmd_lock, flags);
605 605
606 if (iwl_queue_space(q) < ((cmd->flags & CMD_ASYNC) ? 2 : 1)) { 606 if (iwl_queue_space(q) < ((cmd->flags & CMD_ASYNC) ? 2 : 1)) {
607 spin_unlock_irqrestore(&priv->hcmd_lock, flags); 607 spin_unlock_irqrestore(&trans->hcmd_lock, flags);
608 608
609 IWL_ERR(trans, "No space in command queue\n"); 609 IWL_ERR(trans, "No space in command queue\n");
610 is_ct_kill = iwl_check_for_ct_kill(priv); 610 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 iwl_txq_update_write_ptr(priv, txq); 713 iwl_txq_update_write_ptr(priv, txq);
714 714
715 out: 715 out:
716 spin_unlock_irqrestore(&priv->hcmd_lock, flags); 716 spin_unlock_irqrestore(&trans->hcmd_lock, flags);
717 return idx; 717 return idx;
718} 718}
719 719
@@ -796,7 +796,7 @@ void iwl_tx_cmd_complete(struct iwl_priv *priv, struct iwl_rx_mem_buffer *rxb)
796 } else if (meta->callback) 796 } else if (meta->callback)
797 meta->callback(priv, cmd, pkt); 797 meta->callback(priv, cmd, pkt);
798 798
799 spin_lock_irqsave(&priv->hcmd_lock, flags); 799 spin_lock_irqsave(&trans->hcmd_lock, flags);
800 800
801 iwl_hcmd_queue_reclaim(priv, txq_id, index); 801 iwl_hcmd_queue_reclaim(priv, txq_id, index);
802 802
@@ -809,7 +809,7 @@ void iwl_tx_cmd_complete(struct iwl_priv *priv, struct iwl_rx_mem_buffer *rxb)
809 809
810 meta->flags = 0; 810 meta->flags = 0;
811 811
812 spin_unlock_irqrestore(&priv->hcmd_lock, flags); 812 spin_unlock_irqrestore(&trans->hcmd_lock, flags);
813} 813}
814 814
815const char *get_cmd_string(u8 cmd) 815const char *get_cmd_string(u8 cmd)
diff --git a/drivers/net/wireless/iwlwifi/iwl-trans.c b/drivers/net/wireless/iwlwifi/iwl-trans.c
index b448e79c259b..73883fe1c2d1 100644
--- a/drivers/net/wireless/iwlwifi/iwl-trans.c
+++ b/drivers/net/wireless/iwlwifi/iwl-trans.c
@@ -1284,6 +1284,7 @@ static struct iwl_trans *iwl_trans_pcie_alloc(struct iwl_shared *shrd)
1284 iwl_trans->ops = &trans_ops_pcie; 1284 iwl_trans->ops = &trans_ops_pcie;
1285 iwl_trans->shrd = shrd; 1285 iwl_trans->shrd = shrd;
1286 trans_pcie->trans = iwl_trans; 1286 trans_pcie->trans = iwl_trans;
1287 spin_lock_init(&iwl_trans->hcmd_lock);
1287 } 1288 }
1288 1289
1289 return iwl_trans; 1290 return iwl_trans;
diff --git a/drivers/net/wireless/iwlwifi/iwl-trans.h b/drivers/net/wireless/iwlwifi/iwl-trans.h
index da6cc59dfa2b..78bd2f636452 100644
--- a/drivers/net/wireless/iwlwifi/iwl-trans.h
+++ b/drivers/net/wireless/iwlwifi/iwl-trans.h
@@ -146,10 +146,12 @@ struct iwl_trans_ops {
146 * struct iwl_trans - transport common data 146 * struct iwl_trans - transport common data
147 * @ops - pointer to iwl_trans_ops 147 * @ops - pointer to iwl_trans_ops
148 * @shrd - pointer to iwl_shared which holds shared data from the upper layer 148 * @shrd - pointer to iwl_shared which holds shared data from the upper layer
149 * @hcmd_lock: protects HCMD
149 */ 150 */
150struct iwl_trans { 151struct iwl_trans {
151 const struct iwl_trans_ops *ops; 152 const struct iwl_trans_ops *ops;
152 struct iwl_shared *shrd; 153 struct iwl_shared *shrd;
154 spinlock_t hcmd_lock;
153 155
154 /* pointer to trans specific struct */ 156 /* pointer to trans specific struct */
155 /*Ensure that this pointer will always be aligned to sizeof pointer */ 157 /*Ensure that this pointer will always be aligned to sizeof pointer */