aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorTomas Winkler <tomas.winkler@intel.com>2008-07-24 14:33:42 -0400
committerJohn W. Linville <linville@tuxdriver.com>2008-08-01 15:31:33 -0400
commit143b09efb74efd3328f57d7a4bd6d7663c1d6497 (patch)
tree1f78779f1b34fc51c38a1f1a16df81157aebf29e /drivers/net
parent8de394f60235a825b32f30441290a44251eca45d (diff)
iwlwifi: don't stop queue in the middle of fragmented packet
This patch avoids stopping queue in the middle of the fragmented packet. It is required that there will be ~10 (max packet/min fragment) or 16 (4 bits of frag number) free tfds all the time. Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-tx.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-tx.c b/drivers/net/wireless/iwlwifi/iwl-tx.c
index f72cd0bf6aa3..0182e4da8e35 100644
--- a/drivers/net/wireless/iwlwifi/iwl-tx.c
+++ b/drivers/net/wireless/iwlwifi/iwl-tx.c
@@ -962,16 +962,16 @@ int iwl_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
962 if (ret) 962 if (ret)
963 return ret; 963 return ret;
964 964
965 if ((iwl_queue_space(q) < q->high_mark) 965 if ((iwl_queue_space(q) < q->high_mark) && priv->mac80211_registered) {
966 && priv->mac80211_registered) {
967 if (wait_write_ptr) { 966 if (wait_write_ptr) {
968 spin_lock_irqsave(&priv->lock, flags); 967 spin_lock_irqsave(&priv->lock, flags);
969 txq->need_update = 1; 968 txq->need_update = 1;
970 iwl_txq_update_write_ptr(priv, txq); 969 iwl_txq_update_write_ptr(priv, txq);
971 spin_unlock_irqrestore(&priv->lock, flags); 970 spin_unlock_irqrestore(&priv->lock, flags);
971 } else {
972 ieee80211_stop_queue(priv->hw,
973 skb_get_queue_mapping(skb));
972 } 974 }
973
974 ieee80211_stop_queue(priv->hw, skb_get_queue_mapping(skb));
975 } 975 }
976 976
977 return 0; 977 return 0;