Module Name:    src
Committed By:   msaitoh
Date:           Tue Sep 12 05:28:31 UTC 2017

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

Log Message:
 Fix panic caused by rev. 1.58's change. Don't if_start from interrupt context.
The restart code exists in ixv_handle_que().


To generate a diff of this commit:
cvs rdiff -u -r1.60 -r1.61 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/ixv.c
diff -u src/sys/dev/pci/ixgbe/ixv.c:1.60 src/sys/dev/pci/ixgbe/ixv.c:1.61
--- src/sys/dev/pci/ixgbe/ixv.c:1.60	Mon Sep 11 10:11:05 2017
+++ src/sys/dev/pci/ixgbe/ixv.c	Tue Sep 12 05:28:31 2017
@@ -1,4 +1,4 @@
-/*$NetBSD: ixv.c,v 1.60 2017/09/11 10:11:05 msaitoh Exp $*/
+/*$NetBSD: ixv.c,v 1.61 2017/09/12 05:28:31 msaitoh Exp $*/
 
 /******************************************************************************
 
@@ -808,7 +808,6 @@ ixv_msix_que(void *arg)
 {
 	struct ix_queue	*que = arg;
 	struct adapter  *adapter = que->adapter;
-	struct ifnet    *ifp = adapter->ifp;
 	struct tx_ring	*txr = que->txr;
 	struct rx_ring	*rxr = que->rxr;
 	bool		more;
@@ -826,19 +825,6 @@ ixv_msix_que(void *arg)
 
 	IXGBE_TX_LOCK(txr);
 	ixgbe_txeof(txr);
-	/*
-	 * Make certain that if the stack
-	 * has anything queued the task gets
-	 * scheduled to handle it.
-	 */
-	if (!(adapter->feat_en & IXGBE_FEATURE_LEGACY_TX))
-		if (!ixgbe_mq_ring_empty(ifp, txr->txr_interq))
-			ixgbe_mq_start_locked(ifp, txr);
-		/* Only for queue 0 */
-		/* NetBSD still needs this for CBQ */
-		if ((&adapter->queues[0] == que)
-		    && (!ixgbe_legacy_ring_empty(ifp, NULL)))
-			ixgbe_legacy_start_locked(ifp, txr);
 	IXGBE_TX_UNLOCK(txr);
 
 	/* Do AIM now? */
@@ -2545,6 +2531,7 @@ ixv_handle_que(void *context)
 			if (!ixgbe_mq_ring_empty(ifp, txr->txr_interq))
 				ixgbe_mq_start_locked(ifp, txr);
 		/* Only for queue 0 */
+		/* NetBSD still needs this for CBQ */
 		if ((&adapter->queues[0] == que)
 		    && (!ixgbe_legacy_ring_empty(ifp, NULL)))
 			ixgbe_legacy_start_locked(ifp, txr);

Reply via email to