| 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 |
| |