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

Commit 5022efb5 authored by Stanislaw Gruszka's avatar Stanislaw Gruszka Committed by Kalle Valo
Browse files

rt2x00: do not check for txstatus timeout every time on tasklet



Do not check for tx status timeout everytime we perform txstatus tasklet.
Perform check once per half a second.

Signed-off-by: default avatarStanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent 0b0d556e
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -1158,11 +1158,18 @@ bool rt2800_txstatus_timeout(struct rt2x00_dev *rt2x00dev)
	struct data_queue *queue;
	struct queue_entry *entry;

	if (time_before(jiffies,
			rt2x00dev->last_nostatus_check + msecs_to_jiffies(500)))
		return false;

	rt2x00dev->last_nostatus_check = jiffies;

	tx_queue_for_each(rt2x00dev, queue) {
		entry = rt2x00queue_get_entry(queue, Q_INDEX_DONE);
		if (rt2800_entry_txstatus_timeout(entry))
			return true;
	}

	return false;
}
EXPORT_SYMBOL_GPL(rt2800_txstatus_timeout);
+2 −1
Original line number Diff line number Diff line
@@ -197,6 +197,7 @@ void rt2800mmio_txstatus_tasklet(unsigned long data)

	rt2800_txdone(rt2x00dev);

	if (rt2800_txstatus_timeout(rt2x00dev))
		rt2800_txdone_nostatus(rt2x00dev);

	if (test_bit(DEVICE_STATE_ENABLED_RADIO, &rt2x00dev->flags))
+2 −0
Original line number Diff line number Diff line
@@ -980,6 +980,8 @@ struct rt2x00_dev {
	 */
	DECLARE_KFIFO_PTR(txstatus_fifo, u32);

	unsigned long last_nostatus_check;

	/*
	 * Timer to ensure tx status reports are read (rt2800usb).
	 */
+1 −0
Original line number Diff line number Diff line
@@ -1039,6 +1039,7 @@ void rt2x00queue_start_queues(struct rt2x00_dev *rt2x00dev)
	 */
	tx_queue_for_each(rt2x00dev, queue)
		rt2x00queue_start_queue(queue);
	rt2x00dev->last_nostatus_check = jiffies;

	rt2x00queue_start_queue(rt2x00dev->rx);
}