* pull request: wireless-2.6 2010-04-09
[not found] ` <1270762107.20845.3.camel@wwguy-ubuntu>
@ 2010-04-09 15:38 ` John W. Linville
2010-04-09 17:03 ` David Miller
0 siblings, 1 reply; 2+ messages in thread
From: John W. Linville @ 2010-04-09 15:38 UTC (permalink / raw)
To: davem-fT/PcQaiUtIeIZ0/mPfg9Q
Cc: Jeff Chua, Zhao, Shanyu, Chatre, Reinette,
stable-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, Linux Kernel,
Linus Torvalds, Al Viro, Guy, Wey-Yi,
linux-wireless-u79uwXL29TY76Z2rM5mHXA,
netdev-u79uwXL29TY76Z2rM5mHXA
Dave,
This fix is intended for 2.6.34. It resolves an issue involving an
Oops on boxes w/ iwl4965 hardware, apparently introduced by another
recent patch. The thread describing the issue and the resolution
is here:
http://marc.info/?l=linux-kernel&m=127074721531649&w=2
In order to avoid reverting that patch, please accept this fix instead.
As usual, please let me know if there are problems!
Thanks,
John
---
The following changes since commit 2626419ad5be1a054d350786b684b41d23de1538:
David S. Miller (1):
tcp: Set CHECKSUM_UNNECESSARY in tcp_init_nondata_skb
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6.git master
Wey-Yi Guy (1):
iwlwifi: need check for valid qos packet before free
drivers/net/wireless/iwlwifi/iwl-4965.c | 13 +++++++++----
1 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.c b/drivers/net/wireless/iwlwifi/iwl-4965.c
index 83c52a6..8972166 100644
--- a/drivers/net/wireless/iwlwifi/iwl-4965.c
+++ b/drivers/net/wireless/iwlwifi/iwl-4965.c
@@ -2015,7 +2015,9 @@ static void iwl4965_rx_reply_tx(struct iwl_priv *priv,
IWL_DEBUG_TX_REPLY(priv, "Retry scheduler reclaim scd_ssn "
"%d index %d\n", scd_ssn , index);
freed = iwl_tx_queue_reclaim(priv, txq_id, index);
- iwl_free_tfds_in_queue(priv, sta_id, tid, freed);
+ if (qc)
+ iwl_free_tfds_in_queue(priv, sta_id,
+ tid, freed);
if (priv->mac80211_registered &&
(iwl_queue_space(&txq->q) > txq->q.low_mark) &&
@@ -2041,14 +2043,17 @@ static void iwl4965_rx_reply_tx(struct iwl_priv *priv,
tx_resp->failure_frame);
freed = iwl_tx_queue_reclaim(priv, txq_id, index);
- iwl_free_tfds_in_queue(priv, sta_id, tid, freed);
+ if (qc && likely(sta_id != IWL_INVALID_STATION))
+ iwl_free_tfds_in_queue(priv, sta_id, tid, freed);
+ else if (sta_id == IWL_INVALID_STATION)
+ IWL_DEBUG_TX_REPLY(priv, "Station not known\n");
if (priv->mac80211_registered &&
(iwl_queue_space(&txq->q) > txq->q.low_mark))
iwl_wake_queue(priv, txq_id);
}
^ permalink raw reply related [flat|nested] 2+ messages in thread