|
@@ -341,13 +341,10 @@ int iwlagn_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
|
|
|
if (info->flags & IEEE80211_TX_CTL_AMPDU)
|
|
|
is_agg = true;
|
|
|
|
|
|
- /* irqs already disabled/saved above when locking priv->shrd->lock */
|
|
|
- spin_lock(&priv->shrd->sta_lock);
|
|
|
-
|
|
|
dev_cmd = kmem_cache_alloc(priv->tx_cmd_pool, GFP_ATOMIC);
|
|
|
|
|
|
if (unlikely(!dev_cmd))
|
|
|
- goto drop_unlock_sta;
|
|
|
+ goto drop_unlock_priv;
|
|
|
|
|
|
memset(dev_cmd, 0, sizeof(*dev_cmd));
|
|
|
tx_cmd = (struct iwl_tx_cmd *) dev_cmd->payload;
|
|
@@ -372,6 +369,9 @@ int iwlagn_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
|
|
|
info->driver_data[0] = ctx;
|
|
|
info->driver_data[1] = dev_cmd;
|
|
|
|
|
|
+ /* irqs already disabled/saved above when locking priv->shrd->lock */
|
|
|
+ spin_lock(&priv->shrd->sta_lock);
|
|
|
+
|
|
|
if (ieee80211_is_data_qos(fc) && !ieee80211_is_qos_nullfunc(fc)) {
|
|
|
u8 *qc = NULL;
|
|
|
struct iwl_tid_data *tid_data;
|