Index: head/sys/dev/sfxge/sfxge_ev.c =================================================================== --- head/sys/dev/sfxge/sfxge_ev.c +++ head/sys/dev/sfxge/sfxge_ev.c @@ -84,6 +84,21 @@ sfxge_rx_qcomplete(rxq, eop); } +static struct sfxge_rxq * +sfxge_get_rxq_by_label(struct sfxge_evq *evq, uint32_t label) +{ + struct sfxge_rxq *rxq; + + KASSERT(label == 0, ("unexpected rxq label != 0")); + + rxq = evq->sc->rxq[evq->index]; + + KASSERT(rxq != NULL, ("rxq == NULL")); + KASSERT(evq->index == rxq->index, ("evq->index != rxq->index")); + + return (rxq); +} + static boolean_t sfxge_ev_rx(void *arg, uint32_t label, uint32_t id, uint32_t size, uint16_t flags) @@ -103,11 +118,7 @@ if (evq->exception) goto done; - rxq = sc->rxq[label]; - KASSERT(rxq != NULL, ("rxq == NULL")); - KASSERT(evq->index == rxq->index, - ("evq->index != rxq->index")); - + rxq = sfxge_get_rxq_by_label(evq, label); if (__predict_false(rxq->init_state != SFXGE_RXQ_STARTED)) goto done; @@ -216,7 +227,7 @@ evq = sc->evq[index]; - label = rxq_index; + label = 0; KASSERT((label & SFXGE_MAGIC_DMAQ_LABEL_MASK) == label, ("(label & SFXGE_MAGIC_DMAQ_LABEL_MASK) != level")); magic = SFXGE_MAGIC_RX_QFLUSH_DONE | label; @@ -250,7 +261,7 @@ index = rxq->index; evq = sc->evq[index]; - label = rxq_index; + label = 0; KASSERT((label & SFXGE_MAGIC_DMAQ_LABEL_MASK) == label, ("(label & SFXGE_MAGIC_DMAQ_LABEL_MASK) != label")); magic = SFXGE_MAGIC_RX_QFLUSH_FAILED | label; @@ -369,36 +380,18 @@ magic &= ~SFXGE_MAGIC_DMAQ_LABEL_MASK; switch (magic) { - case SFXGE_MAGIC_RX_QFLUSH_DONE: { - struct sfxge_rxq *rxq = sc->rxq[label]; - - KASSERT(rxq != NULL, ("rxq == NULL")); - KASSERT(evq->index == rxq->index, - ("evq->index != rxq->index")); - - sfxge_rx_qflush_done(rxq); + case SFXGE_MAGIC_RX_QFLUSH_DONE: + sfxge_rx_qflush_done(sfxge_get_rxq_by_label(evq, label)); break; - } - case SFXGE_MAGIC_RX_QFLUSH_FAILED: { - struct sfxge_rxq *rxq = sc->rxq[label]; - KASSERT(rxq != NULL, ("rxq == NULL")); - KASSERT(evq->index == rxq->index, - ("evq->index != rxq->index")); - - sfxge_rx_qflush_failed(rxq); + case SFXGE_MAGIC_RX_QFLUSH_FAILED: + sfxge_rx_qflush_failed(sfxge_get_rxq_by_label(evq, label)); break; - } - case SFXGE_MAGIC_RX_QREFILL: { - struct sfxge_rxq *rxq = sc->rxq[label]; - - KASSERT(rxq != NULL, ("rxq == NULL")); - KASSERT(evq->index == rxq->index, - ("evq->index != rxq->index")); - sfxge_rx_qrefill(rxq); + case SFXGE_MAGIC_RX_QREFILL: + sfxge_rx_qrefill(sfxge_get_rxq_by_label(evq, label)); break; - } + case SFXGE_MAGIC_TX_QFLUSH_DONE: { struct sfxge_txq *txq = sfxge_get_txq_by_label(evq, label); Index: head/sys/dev/sfxge/sfxge_rx.c =================================================================== --- head/sys/dev/sfxge/sfxge_rx.c +++ head/sys/dev/sfxge/sfxge_rx.c @@ -1024,7 +1024,7 @@ return (rc); /* Create the common code receive queue. */ - if ((rc = efx_rx_qcreate(sc->enp, index, index, EFX_RXQ_TYPE_DEFAULT, + if ((rc = efx_rx_qcreate(sc->enp, index, 0, EFX_RXQ_TYPE_DEFAULT, esmp, sc->rxq_entries, rxq->buf_base_id, evq->common, &rxq->common)) != 0) goto fail;