Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 26b6da6b authored by Paul Bolle's avatar Paul Bolle Committed by John W. Linville
Browse files

iwlegacy: print how long queue was actually stuck



Every now and then, after resuming from suspend, the iwlegacy driver
prints
    iwl4965 0000:03:00.0: Queue 2 stuck for 2000 ms.
    iwl4965 0000:03:00.0: On demand firmware reload

I have no idea what causes these errors. But the code currently uses
wd_timeout in the first error. wd_timeout will generally be set at
IL_DEF_WD_TIMEOUT (ie, 2000). Perhaps printing for how long the queue
was actually stuck can clarify the cause of these errors.

Signed-off-by: default avatarPaul Bolle <pebolle@tiscali.nl>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent bf52592f
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -4717,10 +4717,11 @@ il_check_stuck_queue(struct il_priv *il, int cnt)
	struct il_tx_queue *txq = &il->txq[cnt];
	struct il_queue *q = &txq->q;
	unsigned long timeout;
	unsigned long now = jiffies;
	int ret;

	if (q->read_ptr == q->write_ptr) {
		txq->time_stamp = jiffies;
		txq->time_stamp = now;
		return 0;
	}

@@ -4728,9 +4729,9 @@ il_check_stuck_queue(struct il_priv *il, int cnt)
	    txq->time_stamp +
	    msecs_to_jiffies(il->cfg->wd_timeout);

	if (time_after(jiffies, timeout)) {
	if (time_after(now, timeout)) {
		IL_ERR("Queue %d stuck for %u ms.\n", q->id,
		       il->cfg->wd_timeout);
		       jiffies_to_msecs(now - txq->time_stamp));
		ret = il_force_reset(il, false);
		return (ret == -EAGAIN) ? 0 : 1;
	}