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.duvv...@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),
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to