mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-26 00:41:17 +00:00
44 lines
1.3 KiB
Diff
44 lines
1.3 KiB
Diff
|
From 869dce4a7f48b0642e4c902c5d142503dbd37dda Mon Sep 17 00:00:00 2001
|
||
|
From: Jan Kiszka <jan.kiszka@siemens.com>
|
||
|
Date: Sun, 1 Jan 2017 15:43:37 +0100
|
||
|
Subject: [PATCH] ivshmem-net: Switch to reset state on each net stop and on
|
||
|
driver removal
|
||
|
|
||
|
Improves the state signaling to the remote side after ifconfig down and
|
||
|
driver removal.
|
||
|
|
||
|
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
|
||
|
(cherry picked from commit d0f632b2830146d9892a2b1ab93f866f072412bb)
|
||
|
---
|
||
|
drivers/net/ivshmem-net.c | 5 ++++-
|
||
|
1 file changed, 4 insertions(+), 1 deletion(-)
|
||
|
|
||
|
--- a/drivers/net/ivshmem-net.c
|
||
|
+++ b/drivers/net/ivshmem-net.c
|
||
|
@@ -554,6 +554,8 @@ static void ivshm_net_do_stop(struct net
|
||
|
{
|
||
|
struct ivshm_net *in = netdev_priv(ndev);
|
||
|
|
||
|
+ ivshm_net_set_state(in, IVSHM_NET_STATE_RESET);
|
||
|
+
|
||
|
if (!test_and_clear_bit(IVSHM_NET_FLAG_RUN, &in->flags))
|
||
|
return;
|
||
|
|
||
|
@@ -593,7 +595,6 @@ static void ivshm_net_state_change(struc
|
||
|
} else {
|
||
|
netif_carrier_off(ndev);
|
||
|
ivshm_net_do_stop(ndev);
|
||
|
- ivshm_net_set_state(in, IVSHM_NET_STATE_RESET);
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
@@ -899,6 +900,8 @@ static void ivshm_net_remove(struct pci_
|
||
|
struct net_device *ndev = pci_get_drvdata(pdev);
|
||
|
struct ivshm_net *in = netdev_priv(ndev);
|
||
|
|
||
|
+ writel(IVSHM_NET_STATE_RESET, &in->ivshm_regs->lstate);
|
||
|
+
|
||
|
if (in->using_msix) {
|
||
|
free_irq(in->msix.vector, ndev);
|
||
|
pci_disable_msix(pdev);
|