]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/4.19.51/net-thunderbolt-unregister-thunderboltip-protocol-ha.patch
Linux 4.19.51
[thirdparty/kernel/stable-queue.git] / releases / 4.19.51 / net-thunderbolt-unregister-thunderboltip-protocol-ha.patch
CommitLineData
37554d48
SL
1From f913a49caad0524831661c272fe44b70a22e251b Mon Sep 17 00:00:00 2001
2From: Mika Westerberg <mika.westerberg@linux.intel.com>
3Date: Fri, 28 Sep 2018 12:21:17 +0300
4Subject: net: thunderbolt: Unregister ThunderboltIP protocol handler when
5 suspending
6
7[ Upstream commit 9872760eb7b1d4f6066ad8b560714a5d0a728fdb ]
8
9The XDomain protocol messages may start as soon as Thunderbolt control
10channel is started. This means that if the other host starts sending
11ThunderboltIP packets early enough they will be passed to the network
12driver which then gets confused because its resume hook is not called
13yet.
14
15Fix this by unregistering the ThunderboltIP protocol handler when
16suspending and registering it back on resume.
17
18Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
19Acked-by: David S. Miller <davem@davemloft.net>
20Signed-off-by: Sasha Levin <sashal@kernel.org>
21---
22 drivers/net/thunderbolt.c | 3 +++
23 1 file changed, 3 insertions(+)
24
25diff --git a/drivers/net/thunderbolt.c b/drivers/net/thunderbolt.c
26index e0d6760f3219..4b5af2413970 100644
27--- a/drivers/net/thunderbolt.c
28+++ b/drivers/net/thunderbolt.c
29@@ -1285,6 +1285,7 @@ static int __maybe_unused tbnet_suspend(struct device *dev)
30 tbnet_tear_down(net, true);
31 }
32
33+ tb_unregister_protocol_handler(&net->handler);
34 return 0;
35 }
36
37@@ -1293,6 +1294,8 @@ static int __maybe_unused tbnet_resume(struct device *dev)
38 struct tb_service *svc = tb_to_service(dev);
39 struct tbnet *net = tb_service_get_drvdata(svc);
40
41+ tb_register_protocol_handler(&net->handler);
42+
43 netif_carrier_off(net->dev);
44 if (netif_running(net->dev)) {
45 netif_device_attach(net->dev);
46--
472.20.1
48