]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - queue-5.1/net-thunderbolt-unregister-thunderboltip-protocol-ha.patch
fixes for 5.1
[thirdparty/kernel/stable-queue.git] / queue-5.1 / net-thunderbolt-unregister-thunderboltip-protocol-ha.patch
1 From 0626e83450e77f856553ee8548d564025a5e595d Mon Sep 17 00:00:00 2001
2 From: Mika Westerberg <mika.westerberg@linux.intel.com>
3 Date: Fri, 28 Sep 2018 12:21:17 +0300
4 Subject: net: thunderbolt: Unregister ThunderboltIP protocol handler when
5 suspending
6
7 [ Upstream commit 9872760eb7b1d4f6066ad8b560714a5d0a728fdb ]
8
9 The XDomain protocol messages may start as soon as Thunderbolt control
10 channel is started. This means that if the other host starts sending
11 ThunderboltIP packets early enough they will be passed to the network
12 driver which then gets confused because its resume hook is not called
13 yet.
14
15 Fix this by unregistering the ThunderboltIP protocol handler when
16 suspending and registering it back on resume.
17
18 Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
19 Acked-by: David S. Miller <davem@davemloft.net>
20 Signed-off-by: Sasha Levin <sashal@kernel.org>
21 ---
22 drivers/net/thunderbolt.c | 3 +++
23 1 file changed, 3 insertions(+)
24
25 diff --git a/drivers/net/thunderbolt.c b/drivers/net/thunderbolt.c
26 index c48c3a1eb1f8..fcf31335a8b6 100644
27 --- a/drivers/net/thunderbolt.c
28 +++ b/drivers/net/thunderbolt.c
29 @@ -1282,6 +1282,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 @@ -1290,6 +1291,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 --
47 2.20.1
48