diff options
author | Paul Mundt <lethal@linux-sh.org> | 2010-07-02 13:05:10 +0900 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2010-07-02 13:05:10 +0900 |
commit | 12462d77ec78be9fb033580b7b64ddf9d0fee44b (patch) | |
tree | a21157428d46259ed2c8a727ac12a2e658d8181a /drivers/net/wireless/iwlwifi/iwl-agn-tx.c | |
parent | 598ee698d9db7beb06e12f4ea9d9a5fbc03a3a77 (diff) | |
parent | 97e0214044d9f279a3d6286c9f859696ef0b7ebe (diff) | |
download | blackbird-op-linux-12462d77ec78be9fb033580b7b64ddf9d0fee44b.tar.gz blackbird-op-linux-12462d77ec78be9fb033580b7b64ddf9d0fee44b.zip |
Merge branches 'sh/highmem' and 'sh/stable-updates'
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-agn-tx.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn-tx.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-tx.c b/drivers/net/wireless/iwlwifi/iwl-agn-tx.c index c402bfc83f36..7d614c4d3c62 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn-tx.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn-tx.c @@ -1125,6 +1125,7 @@ static void iwlagn_tx_status(struct iwl_priv *priv, struct sk_buff *skb) struct ieee80211_sta *sta; struct iwl_station_priv *sta_priv; + rcu_read_lock(); sta = ieee80211_find_sta(priv->vif, hdr->addr1); if (sta) { sta_priv = (void *)sta->drv_priv; @@ -1133,6 +1134,7 @@ static void iwlagn_tx_status(struct iwl_priv *priv, struct sk_buff *skb) atomic_dec_return(&sta_priv->pending_frames) == 0) ieee80211_sta_block_awake(priv->hw, sta, false); } + rcu_read_unlock(); ieee80211_tx_status_irqsafe(priv->hw, skb); } @@ -1297,6 +1299,11 @@ void iwlagn_rx_reply_compressed_ba(struct iwl_priv *priv, sta_id = ba_resp->sta_id; tid = ba_resp->tid; agg = &priv->stations[sta_id].tid[tid].agg; + if (unlikely(agg->txq_id != scd_flow)) { + IWL_ERR(priv, "BA scd_flow %d does not match txq_id %d\n", + scd_flow, agg->txq_id); + return; + } /* Find index just before block-ack window */ index = iwl_queue_dec_wrap(ba_resp_scd_ssn & 0xff, txq->q.n_bd); |