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

Commit 05db221e authored by Anthony Romano's avatar Anthony Romano Committed by Kalle Valo
Browse files

mt7601u: wait for clear rxq when stopping mac



mt7601u_mac_stop_hw should stop polling the rxq once it remains empty
but instead continues polling after the rxq status stays clear; bringing
down the interface takes about six seconds from this alone.

Speed up path by exiting rxq loop once status repeatedly polls empty.

Signed-off-by: default avatarAnthony Romano <anthony.romano@coreos.com>
Reviewed-by: default avatarJakub Kicinski <kubakici@wp.pl>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent 53e3a80d
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -293,13 +293,13 @@ static void mt7601u_mac_stop_hw(struct mt7601u_dev *dev)
	ok = 0;
	i = 200;
	while (i--) {
		if ((mt76_rr(dev, 0x0430) & 0x00ff0000) ||
		    (mt76_rr(dev, 0x0a30) & 0xffffffff) ||
		    (mt76_rr(dev, 0x0a34) & 0xffffffff))
			ok++;
		if (ok > 6)
		if (!(mt76_rr(dev, MT_RXQ_STA) & 0x00ff0000) &&
		    !mt76_rr(dev, 0x0a30) &&
		    !mt76_rr(dev, 0x0a34)) {
			if (ok++ > 5)
				break;

			continue;
		}
		msleep(1);
	}

+3 −0
Original line number Diff line number Diff line
@@ -192,6 +192,9 @@
#define MT_BCN_OFFSET_BASE		0x041c
#define MT_BCN_OFFSET(_n)		(MT_BCN_OFFSET_BASE + ((_n) << 2))

#define MT_RXQ_STA			0x0430
#define MT_TXQ_STA			0x0434

#define	MT_RF_CSR_CFG			0x0500
#define MT_RF_CSR_CFG_DATA		GENMASK(7, 0)
#define MT_RF_CSR_CFG_REG_ID		GENMASK(13, 8)