[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20210929051812.3107-1-jason-ch.chen@mediatek.com>
Date: Wed, 29 Sep 2021 13:18:12 +0800
From: Jason-ch Chen <jason-ch.chen@...iatek.com>
To: <matthias.bgg@...il.com>, <hayeswang@...ltek.com>
CC: <linux-usb@...r.kernel.org>, <netdev@...r.kernel.org>,
<linux-kernel@...r.kernel.org>,
<linux-arm-kernel@...ts.infradead.org>,
<linux-mediatek@...ts.infradead.org>,
<Project_Global_Chrome_Upstream_Group@...iatek.com>,
<hsinyi@...gle.com>, Jason-ch Chen <jason-ch.chen@...iatek.com>
Subject: [PATCH] r8152: stop submitting rx for -EPROTO
When unplugging RTL8152 Fast Ethernet Adapter which is plugged
into an USB HUB, the driver would get -EPROTO for bulk transfer.
There is a high probability to get the soft/hard lockup
information if the driver continues to submit Rx before the HUB
completes the detection of all hub ports and issue the
disconnect event.
[ 644.786219] net_ratelimit: 113887 callbacks suppressed
[ 644.786239] r8152 1-1.2.4:1.0 eth0: Rx status -71
[ 644.786335] r8152 1-1.2.4:1.0 eth0: Rx status -71
[ 644.786369] r8152 1-1.2.4:1.0 eth0: Rx status -71
[ 644.786431] r8152 1-1.2.4:1.0 eth0: Rx status -71
[ 644.786493] r8152 1-1.2.4:1.0 eth0: Rx status -71
[ 644.786555] r8152 1-1.2.4:1.0 eth0: Rx status -71
[ 644.786617] r8152 1-1.2.4:1.0 eth0: Rx status -71
[ 644.786678] r8152 1-1.2.4:1.0 eth0: Rx status -71
[ 644.786740] r8152 1-1.2.4:1.0 eth0: Rx status -71
[ 644.786802] r8152 1-1.2.4:1.0 eth0: Rx status -71
[ 645.041159] mtk-scp 10500000.scp: scp_ipi_send: IPI timeout!
[ 645.041211] cros-ec-rpmsg 10500000.scp.cros-ec-rpmsg.13.-1: rpmsg send failed
[ 649.183350] watchdog: BUG: soft lockup - CPU#0 stuck for 12s! [migration/0:14]
Signed-off-by: Jason-ch Chen <jason-ch.chen@...iatek.com>
---
drivers/net/usb/r8152.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
index 60ba9b734055..250718f0dcb7 100644
--- a/drivers/net/usb/r8152.c
+++ b/drivers/net/usb/r8152.c
@@ -1771,6 +1771,7 @@ static void read_bulk_callback(struct urb *urb)
netif_device_detach(tp->netdev);
return;
case -ENOENT:
+ case -EPROTO:
return; /* the urb is in unlink state */
case -ETIME:
if (net_ratelimit())
--
2.18.0
Powered by blists - more mailing lists