]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/3.19.2/sh_eth-fix-lost-mac-address-on-kexec.patch
4.14-stable patches
[thirdparty/kernel/stable-queue.git] / releases / 3.19.2 / sh_eth-fix-lost-mac-address-on-kexec.patch
CommitLineData
373f9370
GKH
1From foo@baz Wed Mar 11 11:44:33 CET 2015
2From: Geert Uytterhoeven <geert+renesas@glider.be>
3Date: Fri, 27 Feb 2015 17:16:26 +0100
4Subject: sh_eth: Fix lost MAC address on kexec
5
6From: Geert Uytterhoeven <geert+renesas@glider.be>
7
8[ Upstream commit a14c7d15ca91b444e77df08b916befdce77562ab ]
9
10Commit 740c7f31c094703c ("sh_eth: Ensure DMA engines are stopped before
11freeing buffers") added a call to sh_eth_reset() to the
12sh_eth_set_ringparam() and sh_eth_close() paths.
13
14However, setting the software reset bit(s) in the EDMR register resets
15the MAC Address Registers to zero. Hence after kexec, the new kernel
16doesn't detect a valid MAC address and assigns a random MAC address,
17breaking DHCP.
18
19Set the MAC address again after the reset in sh_eth_dev_exit() to fix
20this.
21
22Tested on r8a7740/armadillo (GETHER) and r8a7791/koelsch (FAST_RCAR).
23
24Fixes: 740c7f31c094703c ("sh_eth: Ensure DMA engines are stopped before freeing buffers")
25Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
26Signed-off-by: David S. Miller <davem@davemloft.net>
27Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
28---
29 drivers/net/ethernet/renesas/sh_eth.c | 3 +++
30 1 file changed, 3 insertions(+)
31
32--- a/drivers/net/ethernet/renesas/sh_eth.c
33+++ b/drivers/net/ethernet/renesas/sh_eth.c
34@@ -1392,6 +1392,9 @@ static void sh_eth_dev_exit(struct net_d
35 msleep(2); /* max frame time at 10 Mbps < 1250 us */
36 sh_eth_get_stats(ndev);
37 sh_eth_reset(ndev);
38+
39+ /* Set MAC address again */
40+ update_mac_address(ndev);
41 }
42
43 /* free Tx skb function */