Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/dev/pci re-enable MSI/MSI-X, the TX timeouts were caused...
details: https://anonhg.NetBSD.org/src/rev/be5fe5621176
branches: trunk
changeset: 973908:be5fe5621176
user: jdolecek <jdolecek%NetBSD.org@localhost>
date: Fri Jul 17 09:48:21 2020 +0000
description:
re-enable MSI/MSI-X, the TX timeouts were caused by the IFF_OACTIVE handling,
which was fixed in previous revision
diffstat:
sys/dev/pci/if_bnx.c | 24 +++++++-----------------
1 files changed, 7 insertions(+), 17 deletions(-)
diffs (74 lines):
diff -r 67a25e71caa7 -r be5fe5621176 sys/dev/pci/if_bnx.c
--- a/sys/dev/pci/if_bnx.c Fri Jul 17 08:06:02 2020 +0000
+++ b/sys/dev/pci/if_bnx.c Fri Jul 17 09:48:21 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: if_bnx.c,v 1.101 2020/07/16 14:57:59 jdolecek Exp $ */
+/* $NetBSD: if_bnx.c,v 1.102 2020/07/17 09:48:21 jdolecek Exp $ */
/* $OpenBSD: if_bnx.c,v 1.101 2013/03/28 17:21:44 brad Exp $ */
/*-
@@ -35,7 +35,7 @@
#if 0
__FBSDID("$FreeBSD: src/sys/dev/bce/if_bce.c,v 1.3 2006/04/13 14:12:26 ru Exp $");
#endif
-__KERNEL_RCSID(0, "$NetBSD: if_bnx.c,v 1.101 2020/07/16 14:57:59 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_bnx.c,v 1.102 2020/07/17 09:48:21 jdolecek Exp $");
/*
* The following controllers are supported by this driver:
@@ -625,14 +625,7 @@
return;
}
- /* XXX using MSI-X causes TX timeouts, needs to be debugged */
- int counts[PCI_INTR_TYPE_SIZE] = {
- [PCI_INTR_TYPE_INTX] = 1,
- [PCI_INTR_TYPE_MSI] = 0,
- [PCI_INTR_TYPE_MSIX] = 0,
- };
-
- if (pci_intr_alloc(pa, &sc->bnx_ih, counts, PCI_INTR_TYPE_INTX)) {
+ if (pci_intr_alloc(pa, &sc->bnx_ih, NULL, 0)) {
aprint_error_dev(sc->bnx_dev, "couldn't map interrupt\n");
goto bnx_attach_fail;
}
@@ -4092,9 +4085,6 @@
&pkt->pkt_dmamap) != 0)
goto put;
- if (!ISSET(ifp->if_flags, IFF_UP))
- goto stopping;
-
mutex_enter(&sc->tx_pkt_mtx);
TAILQ_INSERT_TAIL(&sc->tx_free_pkts, pkt, pkt_entry);
sc->tx_pkt_count++;
@@ -4114,8 +4104,6 @@
return;
-stopping:
- bus_dmamap_destroy(sc->bnx_dmatag, pkt->pkt_dmamap);
put:
pool_put(bnx_tx_pool, pkt);
return;
@@ -5190,8 +5178,10 @@
bus_dmamap_sync(sc->bnx_dmatag, map, 0, map->dm_mapsize,
BUS_DMASYNC_PREWRITE);
/* Make sure there's room in the chain */
- if (map->dm_nsegs > (sc->max_tx_bd - sc->used_tx_bd))
+ if (map->dm_nsegs > (sc->max_tx_bd - sc->used_tx_bd)) {
+ error = ENOMEM;
goto nospace;
+ }
/* prod points to an empty tx_bd at this point. */
prod_bseq = sc->tx_prod_bseq;
@@ -5270,7 +5260,7 @@
TAILQ_INSERT_TAIL(&sc->tx_free_pkts, pkt, pkt_entry);
mutex_exit(&sc->tx_pkt_mtx);
- return ENOMEM;
+ return error;
}
/****************************************************************************/
Home |
Main Index |
Thread Index |
Old Index