Module Name: src
Committed By: msaitoh
Date: Thu Dec 28 06:13:50 UTC 2017
Modified Files:
src/sys/dev/pci: if_wm.c
Log Message:
Don't use MSI-X if we can use only one queue to save interrupt resource.
Written by knakahara and tested by me.
To generate a diff of this commit:
cvs rdiff -u -r1.549 -r1.550 src/sys/dev/pci/if_wm.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/if_wm.c
diff -u src/sys/dev/pci/if_wm.c:1.549 src/sys/dev/pci/if_wm.c:1.550
--- src/sys/dev/pci/if_wm.c:1.549 Fri Dec 8 05:22:23 2017
+++ src/sys/dev/pci/if_wm.c Thu Dec 28 06:13:50 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: if_wm.c,v 1.549 2017/12/08 05:22:23 ozaki-r Exp $ */
+/* $NetBSD: if_wm.c,v 1.550 2017/12/28 06:13:50 msaitoh Exp $ */
/*
* Copyright (c) 2001, 2002, 2003, 2004 Wasabi Systems, Inc.
@@ -83,7 +83,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.549 2017/12/08 05:22:23 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.550 2017/12/28 06:13:50 msaitoh Exp $");
#ifdef _KERNEL_OPT
#include "opt_net_mpsafe.h"
@@ -1850,16 +1850,25 @@ wm_attach(device_t parent, device_t self
}
wm_adjust_qnum(sc, pci_msix_count(pa->pa_pc, pa->pa_tag));
-
- /* Allocation settings */
- max_type = PCI_INTR_TYPE_MSIX;
/*
- * 82583 has a MSI-X capability in the PCI configuration space but
- * it doesn't support it. At least the document doesn't say anything
- * about MSI-X.
+ * Don't use MSI-X if we can use only one queue to save interrupt
+ * resource.
*/
- counts[PCI_INTR_TYPE_MSIX]
- = (sc->sc_type == WM_T_82583) ? 0 : sc->sc_nqueues + 1;
+ if (sc->sc_nqueues > 1) {
+ max_type = PCI_INTR_TYPE_MSIX;
+ /*
+ * 82583 has a MSI-X capability in the PCI configuration space
+ * but it doesn't support it. At least the document doesn't
+ * say anything about MSI-X.
+ */
+ counts[PCI_INTR_TYPE_MSIX]
+ = (sc->sc_type == WM_T_82583) ? 0 : sc->sc_nqueues + 1;
+ } else {
+ max_type = PCI_INTR_TYPE_MSI;
+ counts[PCI_INTR_TYPE_MSIX] = 0;
+ }
+
+ /* Allocation settings */
counts[PCI_INTR_TYPE_MSI] = 1;
counts[PCI_INTR_TYPE_INTX] = 1;
/* overridden by disable flags */