svn commit: r316581 - head/sys/dev/bnxt
Sean Bruno
sbruno at FreeBSD.org
Thu Apr 6 16:22:55 UTC 2017
Author: sbruno
Date: Thu Apr 6 16:22:54 2017
New Revision: 316581
URL: https://svnweb.freebsd.org/changeset/base/316581
Log:
tx and rx interrupts are not combined in bnxt(4) and should be handled
independantly.
Submitted by: venkatkumar.duvvuru at broadcom.com>
Differential Revision: https://reviews.freebsd.org/D10297
Modified:
head/sys/dev/bnxt/if_bnxt.c
Modified: head/sys/dev/bnxt/if_bnxt.c
==============================================================================
--- head/sys/dev/bnxt/if_bnxt.c Thu Apr 6 16:19:19 2017 (r316580)
+++ head/sys/dev/bnxt/if_bnxt.c Thu Apr 6 16:22:54 2017 (r316581)
@@ -177,7 +177,8 @@ static void bnxt_update_admin_status(if_
/* Interrupt enable / disable */
static void bnxt_intr_enable(if_ctx_t ctx);
-static int bnxt_queue_intr_enable(if_ctx_t ctx, uint16_t qid);
+static int bnxt_rx_queue_intr_enable(if_ctx_t ctx, uint16_t qid);
+static int bnxt_tx_queue_intr_enable(if_ctx_t ctx, uint16_t qid);
static void bnxt_disable_intr(if_ctx_t ctx);
static int bnxt_msix_intr_assign(if_ctx_t ctx, int msix);
@@ -253,8 +254,8 @@ static device_method_t bnxt_iflib_method
DEVMETHOD(ifdi_update_admin_status, bnxt_update_admin_status),
DEVMETHOD(ifdi_intr_enable, bnxt_intr_enable),
- DEVMETHOD(ifdi_tx_queue_intr_enable, bnxt_queue_intr_enable),
- DEVMETHOD(ifdi_rx_queue_intr_enable, bnxt_queue_intr_enable),
+ DEVMETHOD(ifdi_tx_queue_intr_enable, bnxt_tx_queue_intr_enable),
+ DEVMETHOD(ifdi_rx_queue_intr_enable, bnxt_rx_queue_intr_enable),
DEVMETHOD(ifdi_intr_disable, bnxt_disable_intr),
DEVMETHOD(ifdi_msix_intr_assign, bnxt_msix_intr_assign),
@@ -1437,7 +1438,16 @@ bnxt_intr_enable(if_ctx_t ctx)
/* Enable interrupt for a single queue */
static int
-bnxt_queue_intr_enable(if_ctx_t ctx, uint16_t qid)
+bnxt_tx_queue_intr_enable(if_ctx_t ctx, uint16_t qid)
+{
+ struct bnxt_softc *softc = iflib_get_softc(ctx);
+
+ bnxt_do_enable_intr(&softc->tx_cp_rings[qid]);
+ return 0;
+}
+
+static int
+bnxt_rx_queue_intr_enable(if_ctx_t ctx, uint16_t qid)
{
struct bnxt_softc *softc = iflib_get_softc(ctx);
@@ -1482,7 +1492,7 @@ bnxt_msix_intr_assign(if_ctx_t ctx, int
for (i=0; i<softc->scctx->isc_nrxqsets; i++) {
rc = iflib_irq_alloc_generic(ctx, &softc->rx_cp_rings[i].irq,
- softc->rx_cp_rings[i].ring.id + 1, IFLIB_INTR_RXTX,
+ softc->rx_cp_rings[i].ring.id + 1, IFLIB_INTR_RX,
bnxt_handle_rx_cp, &softc->rx_cp_rings[i], i, "rx_cp");
if (rc) {
device_printf(iflib_get_dev(ctx),
More information about the svn-src-all
mailing list