iwlwifi: don't modify the timer if we don't Tx
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Sun, 10 Jun 2012 15:25:09 +0000 (18:25 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 13 Jun 2012 07:01:07 +0000 (09:01 +0200)
In fragmentation we don't update the write pointer of the
HW immediately. So we shouldn't modify the timer in that
case.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/iwlwifi/pcie/trans.c

index d6a73179ebf1840a89f6afeeb264f6fdeb7f8df2..b647eb4dca64d3a2d61e6ff4ed1c27daa5ed7327 100644 (file)
@@ -1354,7 +1354,8 @@ static int iwl_trans_pcie_tx(struct iwl_trans *trans, struct sk_buff *skb,
                             skb->data + hdr_len, secondlen);
 
        /* start timer if queue currently empty */
-       if (q->read_ptr == q->write_ptr && trans_pcie->wd_timeout)
+       if (txq->need_update && q->read_ptr == q->write_ptr &&
+           trans_pcie->wd_timeout)
                mod_timer(&txq->stuck_timer, jiffies + trans_pcie->wd_timeout);
 
        /* Tell device the write index *just past* this latest filled TFD */