Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-8]: src/sys/dev/pci/ixgbe Pull up following revision(s) (requeste...



details:   https://anonhg.NetBSD.org/src/rev/28b564dfbfd0
branches:  netbsd-8
changeset: 453878:28b564dfbfd0
user:      martin <martin%NetBSD.org@localhost>
date:      Thu Aug 29 16:31:53 2019 +0000

description:
Pull up following revision(s) (requested by knakahara in ticket #1347):

        sys/dev/pci/ixgbe/ixgbe.c: revision 1.205
        sys/dev/pci/ixgbe/ixgbe.c: revision 1.206

fix typo in error handling of ixgbe_allocate_legacy().
ok by msaitoh@n.o
pullup-8, pullup-9

 -

Fix panic when ncpu == 1 && sysctl -w hw.ixg0.txrx_workqueue=1. Reported by nonaka@n.o.

ok by msaitoh@n.o and nonaka@n.o
pullup-8, pullup-9

diffstat:

 sys/dev/pci/ixgbe/ixgbe.c |  20 +++++++++++++++++---
 1 files changed, 17 insertions(+), 3 deletions(-)

diffs (49 lines):

diff -r ea1d17b8efe6 -r 28b564dfbfd0 sys/dev/pci/ixgbe/ixgbe.c
--- a/sys/dev/pci/ixgbe/ixgbe.c Thu Aug 29 16:28:47 2019 +0000
+++ b/sys/dev/pci/ixgbe/ixgbe.c Thu Aug 29 16:31:53 2019 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: ixgbe.c,v 1.88.2.31 2019/08/01 14:14:30 martin Exp $ */
+/* $NetBSD: ixgbe.c,v 1.88.2.32 2019/08/29 16:31:53 martin Exp $ */
 
 /******************************************************************************
 
@@ -6410,7 +6410,9 @@
        int             counts[PCI_INTR_TYPE_SIZE];
        pci_intr_type_t intr_type, max_type;
        char            intrbuf[PCI_INTRSTR_LEN];
+       char            wqname[MAXCOMLEN];
        const char      *intrstr = NULL;
+       int defertx_error = 0, error;
 
        /* We allocate a single interrupt resource */
        max_type = PCI_INTR_TYPE_MSI;
@@ -6472,15 +6474,27 @@
         * Try allocating a fast interrupt and the associated deferred
         * processing contexts.
         */
-       if (!(adapter->feat_en & IXGBE_FEATURE_LEGACY_TX))
+       if (!(adapter->feat_en & IXGBE_FEATURE_LEGACY_TX)) {
                txr->txr_si =
                    softint_establish(SOFTINT_NET | IXGBE_SOFTINFT_FLAGS,
                        ixgbe_deferred_mq_start, txr);
+
+               snprintf(wqname, sizeof(wqname), "%sdeferTx", device_xname(dev));
+               defertx_error = workqueue_create(&adapter->txr_wq, wqname,
+                   ixgbe_deferred_mq_start_work, adapter, IXGBE_WORKQUEUE_PRI,
+                   IPL_NET, IXGBE_WORKQUEUE_FLAGS);
+               adapter->txr_wq_enqueued = percpu_alloc(sizeof(u_int));
+       }
        que->que_si = softint_establish(SOFTINT_NET | IXGBE_SOFTINFT_FLAGS,
            ixgbe_handle_que, que);
+       snprintf(wqname, sizeof(wqname), "%sTxRx", device_xname(dev));
+       error = workqueue_create(&adapter->que_wq, wqname,
+           ixgbe_handle_que_work, adapter, IXGBE_WORKQUEUE_PRI, IPL_NET,
+           IXGBE_WORKQUEUE_FLAGS);
 
        if ((!(adapter->feat_en & IXGBE_FEATURE_LEGACY_TX)
-               & (txr->txr_si == NULL)) || (que->que_si == NULL)) {
+               && ((txr->txr_si == NULL) || defertx_error != 0))
+           || (que->que_si == NULL) || error != 0) {
                aprint_error_dev(dev,
                    "could not establish software interrupts\n");
 



Home | Main Index | Thread Index | Old Index