aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/dvm/tx.c
diff options
context:
space:
mode:
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>2012-05-24 12:24:34 -0400
committerJohannes Berg <johannes.berg@intel.com>2012-06-06 07:21:22 -0400
commit59c647b6266506cbbceadfabfd01168148f026c5 (patch)
tree7fc0ea93110ea25bcbb96f42253931bc59199873 /drivers/net/wireless/iwlwifi/dvm/tx.c
parentcde5b48700bde6edc24c26d3d1bbec219e0ef2a1 (diff)
iwlwifi: allocate Tx cmd pool per device
Different transports will have different needs: New tranports need headroom for their own use before the Tx cmd. So allocate the Tx cmd pool in the transport and give it a unique name based on dev_name. Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/dvm/tx.c')
-rw-r--r--drivers/net/wireless/iwlwifi/dvm/tx.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/net/wireless/iwlwifi/dvm/tx.c b/drivers/net/wireless/iwlwifi/dvm/tx.c
index 7fdbd175c551..7e3bd6281551 100644
--- a/drivers/net/wireless/iwlwifi/dvm/tx.c
+++ b/drivers/net/wireless/iwlwifi/dvm/tx.c
@@ -295,7 +295,7 @@ int iwlagn_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
295 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); 295 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
296 struct iwl_station_priv *sta_priv = NULL; 296 struct iwl_station_priv *sta_priv = NULL;
297 struct iwl_rxon_context *ctx = &priv->contexts[IWL_RXON_CTX_BSS]; 297 struct iwl_rxon_context *ctx = &priv->contexts[IWL_RXON_CTX_BSS];
298 struct iwl_device_cmd *dev_cmd = NULL; 298 struct iwl_device_cmd *dev_cmd;
299 struct iwl_tx_cmd *tx_cmd; 299 struct iwl_tx_cmd *tx_cmd;
300 __le16 fc; 300 __le16 fc;
301 u8 hdr_len; 301 u8 hdr_len;
@@ -377,7 +377,7 @@ int iwlagn_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
377 if (info->flags & IEEE80211_TX_CTL_AMPDU) 377 if (info->flags & IEEE80211_TX_CTL_AMPDU)
378 is_agg = true; 378 is_agg = true;
379 379
380 dev_cmd = kmem_cache_alloc(iwl_tx_cmd_pool, GFP_ATOMIC); 380 dev_cmd = iwl_trans_alloc_tx_cmd(priv->trans);
381 381
382 if (unlikely(!dev_cmd)) 382 if (unlikely(!dev_cmd))
383 goto drop_unlock_priv; 383 goto drop_unlock_priv;
@@ -492,7 +492,7 @@ int iwlagn_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
492 492
493drop_unlock_sta: 493drop_unlock_sta:
494 if (dev_cmd) 494 if (dev_cmd)
495 kmem_cache_free(iwl_tx_cmd_pool, dev_cmd); 495 iwl_trans_free_tx_cmd(priv->trans, dev_cmd);
496 spin_unlock(&priv->sta_lock); 496 spin_unlock(&priv->sta_lock);
497drop_unlock_priv: 497drop_unlock_priv:
498 return -1; 498 return -1;
@@ -1193,8 +1193,8 @@ int iwlagn_rx_reply_tx(struct iwl_priv *priv, struct iwl_rx_cmd_buffer *rxb,
1193 1193
1194 info = IEEE80211_SKB_CB(skb); 1194 info = IEEE80211_SKB_CB(skb);
1195 ctx = info->driver_data[0]; 1195 ctx = info->driver_data[0];
1196 kmem_cache_free(iwl_tx_cmd_pool, 1196 iwl_trans_free_tx_cmd(priv->trans,
1197 (info->driver_data[1])); 1197 info->driver_data[1]);
1198 1198
1199 memset(&info->status, 0, sizeof(info->status)); 1199 memset(&info->status, 0, sizeof(info->status));
1200 1200
@@ -1357,7 +1357,7 @@ int iwlagn_rx_reply_compressed_ba(struct iwl_priv *priv,
1357 WARN_ON_ONCE(1); 1357 WARN_ON_ONCE(1);
1358 1358
1359 info = IEEE80211_SKB_CB(skb); 1359 info = IEEE80211_SKB_CB(skb);
1360 kmem_cache_free(iwl_tx_cmd_pool, (info->driver_data[1])); 1360 iwl_trans_free_tx_cmd(priv->trans, info->driver_data[1]);
1361 1361
1362 if (freed == 1) { 1362 if (freed == 1) {
1363 /* this is the first skb we deliver in this batch */ 1363 /* this is the first skb we deliver in this batch */