Module Name:    src
Committed By:   msaitoh
Date:           Fri May 26 09:17:33 UTC 2017

Modified Files:
        src/sys/dev/pci/ixgbe: ixgbe.c ixv.c

Log Message:
 Add missing {ixgbe,ixv}_stop() in the detach function. Without this change,
shutdown won't finish or panic on heay traffic.


To generate a diff of this commit:
cvs rdiff -u -r1.86 -r1.87 src/sys/dev/pci/ixgbe/ixgbe.c
cvs rdiff -u -r1.55 -r1.56 src/sys/dev/pci/ixgbe/ixv.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/pci/ixgbe/ixgbe.c
diff -u src/sys/dev/pci/ixgbe/ixgbe.c:1.86 src/sys/dev/pci/ixgbe/ixgbe.c:1.87
--- src/sys/dev/pci/ixgbe/ixgbe.c:1.86	Fri May 26 08:36:41 2017
+++ src/sys/dev/pci/ixgbe/ixgbe.c	Fri May 26 09:17:32 2017
@@ -59,7 +59,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 /*$FreeBSD: head/sys/dev/ixgbe/if_ix.c 302384 2016-07-07 03:39:18Z sbruno $*/
-/*$NetBSD: ixgbe.c,v 1.86 2017/05/26 08:36:41 msaitoh Exp $*/
+/*$NetBSD: ixgbe.c,v 1.87 2017/05/26 09:17:32 msaitoh Exp $*/
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -774,6 +774,8 @@ ixgbe_detach(device_t dev, int flags)
 	if (adapter->osdep.attached == false)
 		return 0;
 
+	/* Stop the interface. Callouts are stopped in it. */
+	ixgbe_ifstop(adapter->ifp, 1);
 #if NVLAN > 0
 	/* Make sure VLANs are not using driver */
 	if (!VLAN_ATTACHED(&adapter->osdep.ec))

Index: src/sys/dev/pci/ixgbe/ixv.c
diff -u src/sys/dev/pci/ixgbe/ixv.c:1.55 src/sys/dev/pci/ixgbe/ixv.c:1.56
--- src/sys/dev/pci/ixgbe/ixv.c:1.55	Fri Mar  3 04:37:05 2017
+++ src/sys/dev/pci/ixgbe/ixv.c	Fri May 26 09:17:32 2017
@@ -31,7 +31,7 @@
 
 ******************************************************************************/
 /*$FreeBSD: head/sys/dev/ixgbe/if_ixv.c 302384 2016-07-07 03:39:18Z sbruno $*/
-/*$NetBSD: ixv.c,v 1.55 2017/03/03 04:37:05 msaitoh Exp $*/
+/*$NetBSD: ixv.c,v 1.56 2017/05/26 09:17:32 msaitoh Exp $*/
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -87,6 +87,7 @@ static int      ixv_shutdown(device_t);
 static int      ixv_ioctl(struct ifnet *, u_long, void *);
 static int	ixv_init(struct ifnet *);
 static void	ixv_init_locked(struct adapter *);
+static void	ixv_ifstop(struct ifnet *, int);
 static void     ixv_stop(void *);
 static void     ixv_media_status(struct ifnet *, struct ifmediareq *);
 static int      ixv_media_change(struct ifnet *);
@@ -498,6 +499,9 @@ ixv_detach(device_t dev, int flags)
 	if (adapter->osdep.attached == false)
 		return 0;
 
+	/* Stop the interface. Callouts are stopped in it. */
+	ixv_ifstop(adapter->ifp, 1);
+
 #if NVLAN > 0
 	/* Make sure VLANS are not using driver */
 	if (!VLAN_ATTACHED(&adapter->osdep.ec))

Reply via email to