blob: 4ca74a6bc432eee131f72c0449509feacfd324f2 [file] [log] [blame]
From 860c0ea3b92bde56e16c877577dc2cf7d3bb063f Mon Sep 17 00:00:00 2001
From: Sean Wang <objelf@gmail.com>
Date: Mon, 28 Jun 2021 19:51:32 -0700
Subject: [PATCH] Revert "mt76: usb: fix crash on device removal"
This reverts commit 807982017730cfe853fce49ba26d453e31c84898.
Keep the patch order landing in upstream to help apply following patches
sucessfully.
BUG=b:178754244, b:188614537
TEST=build successfully on cherry
Signed-off-by: Sean Wang <objelf@gmail.com>
Change-Id: I41f1ef3d50eb018c4f2ee569299e1c864ac207b1
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/3010534
Reviewed-by: Joshua Emele <jemele@chromium.org>
Tested-by: Joshua Emele <jemele@chromium.org>
Commit-Queue: Joshua Emele <jemele@chromium.org>
---
drivers/net/wireless/mediatek/mt76/usb.c | 15 ++++++---------
1 file changed, 6 insertions(+), 9 deletions(-)
diff --git a/drivers/net/wireless/mediatek/mt76/usb.c b/drivers/net/wireless/mediatek/mt76/usb.c
index 1e9f60bb811a..a17977e597e3 100644
--- a/drivers/net/wireless/mediatek/mt76/usb.c
+++ b/drivers/net/wireless/mediatek/mt76/usb.c
@@ -1037,6 +1037,7 @@ void mt76u_stop_tx(struct mt76_dev *dev)
int ret;
mt76_worker_disable(&dev->usb.status_worker);
+ mt76_worker_disable(&dev->tx_worker);
ret = wait_event_timeout(dev->tx_wait, !mt76_has_tx_pending(&dev->phy),
HZ / 5);
@@ -1056,8 +1057,6 @@ void mt76u_stop_tx(struct mt76_dev *dev)
usb_kill_urb(q->entry[j].urb);
}
- mt76_worker_disable(&dev->tx_worker);
-
/* On device removal we maight queue skb's, but mt76u_tx_kick()
* will fail to submit urb, cleanup those skb's manually.
*/
@@ -1065,20 +1064,18 @@ void mt76u_stop_tx(struct mt76_dev *dev)
q = dev->phy.q_tx[i];
if (!q)
continue;
+
+ entry = q->entry[q->tail];
+ q->entry[q->tail].done = false;
- while (q->queued > 0) {
- entry = q->entry[q->tail];
- q->entry[q->tail].done = false;
- mt76_queue_tx_complete(dev, q, &entry);
- }
+ mt76_queue_tx_complete(dev, q, &entry);
}
-
- mt76_worker_enable(&dev->tx_worker);
}
cancel_work_sync(&dev->usb.stat_work);
clear_bit(MT76_READING_STATS, &dev->phy.state);
+ mt76_worker_enable(&dev->tx_worker);
mt76_worker_enable(&dev->usb.status_worker);
mt76_tx_status_check(dev, NULL, true);
--
2.17.1