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

Commit 14623787 authored by Arik Nemtsov's avatar Arik Nemtsov Committed by Luciano Coelho
Browse files

wl12xx: don't queue a new dummy packet if one is already pending



The firmware only asks for one dummy packet at a time, but sometimes we
are unable to provide it before a FW timer expires. When this happens,
the FW will re-request the dummy packet. If a packet is still queued in
the driver queues, do nothing in this case.

This prevents spurious dummy packets from clogging up the VO AC.

Signed-off-by: default avatarArik Nemtsov <arik@wizery.com>
Signed-off-by: default avatarEliad Peller <eliad@wizery.com>
Signed-off-by: default avatarLuciano Coelho <coelho@ti.com>
parent 9487775c
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -1540,7 +1540,13 @@ out:
int wl1271_tx_dummy_packet(struct wl1271 *wl)
{
	unsigned long flags;
	int q = wl1271_tx_get_queue(skb_get_queue_mapping(wl->dummy_packet));
	int q;

	/* no need to queue a new dummy packet if one is already pending */
	if (test_bit(WL1271_FLAG_DUMMY_PACKET_PENDING, &wl->flags))
		return 0;

	q = wl1271_tx_get_queue(skb_get_queue_mapping(wl->dummy_packet));

	spin_lock_irqsave(&wl->wl_lock, flags);
	set_bit(WL1271_FLAG_DUMMY_PACKET_PENDING, &wl->flags);