Index: sys/dev/dpaa/if_dtsec_im.c =================================================================== --- sys/dev/dpaa/if_dtsec_im.c +++ sys/dev/dpaa/if_dtsec_im.c @@ -77,7 +77,7 @@ m = m_devget(data, length, 0, sc->sc_ifnet, NULL); if (m) - (*sc->sc_ifnet->if_input)(sc->sc_ifnet, m); + NET_EPOCH_WRAP(if_input, (sc->sc_ifnet, m)); XX_FreeSmart(data); Index: sys/dev/dpaa/if_dtsec_rm.c =================================================================== --- sys/dev/dpaa/if_dtsec_rm.c +++ sys/dev/dpaa/if_dtsec_rm.c @@ -389,7 +389,7 @@ m->m_len = DPAA_FD_GET_LENGTH(frame); m_fixhdr(m); - (*sc->sc_ifnet->if_input)(sc->sc_ifnet, m); + NET_EPOCH_WRAP(if_input, (sc->sc_ifnet, m)); return (e_RX_STORE_RESPONSE_CONTINUE); Index: sys/dev/gem/if_gem.c =================================================================== --- sys/dev/gem/if_gem.c +++ sys/dev/gem/if_gem.c @@ -1528,7 +1528,7 @@ GEM_LOCK_ASSERT(sc, MA_OWNED); - gem_rint(sc); + NET_EPOCH_WRAP(gem_rint, (sc)); } #endif Index: sys/dev/liquidio/lio_core.c =================================================================== --- sys/dev/liquidio/lio_core.c +++ sys/dev/liquidio/lio_core.c @@ -262,10 +262,13 @@ lio_push_packet(void *m_buff, uint32_t len, union octeon_rh *rh, void *rxq, void *arg) { + struct epoch_tracker et; struct mbuf *mbuf = m_buff; struct ifnet *ifp = arg; struct lio_droq *droq = rxq; + NET_EPOCH_ENTER(et); + if (ifp != NULL) { struct lio *lio = if_getsoftc(ifp); @@ -273,7 +276,7 @@ if (!lio_ifstate_check(lio, LIO_IFSTATE_RUNNING)) { lio_recv_buffer_free(mbuf); droq->stats.rx_dropped++; - return; + goto done; } if (rh->r_dh.has_hash) { @@ -377,7 +380,7 @@ if (tcp_lro_rx(&droq->lro, mbuf, 0) == 0) { droq->stats.rx_bytes_received += len; droq->stats.rx_pkts_received++; - return; + goto done; } } } @@ -391,6 +394,8 @@ lio_recv_buffer_free(mbuf); droq->stats.rx_dropped++; } +done: + NET_EPOCH_EXIT(et); } /* Index: sys/dev/neta/if_mvneta.c =================================================================== --- sys/dev/neta/if_mvneta.c +++ sys/dev/neta/if_mvneta.c @@ -2992,7 +2992,7 @@ more = 1; npkt = count; } - mvneta_rx_queue(sc, q, npkt); + NET_EPOCH_WRAP(mvneta_rx_queue, (sc, q, npkt)); out: mvneta_rx_unlockq(sc, q); return more; Index: sys/dev/nge/if_nge.c =================================================================== --- sys/dev/nge/if_nge.c +++ sys/dev/nge/if_nge.c @@ -550,7 +550,7 @@ device_printf(sc->nge_dev, "%s: unable to stop Tx/Rx MAC\n", __func__); nge_txeof(sc); - nge_rxeof(sc); + NET_EPOCH_WRAP(nge_rxeof, (sc)); if (sc->nge_head != NULL) { m_freem(sc->nge_head); sc->nge_head = sc->nge_tail = NULL; Index: sys/dev/re/if_re.c =================================================================== --- sys/dev/re/if_re.c +++ sys/dev/re/if_re.c @@ -3579,7 +3579,7 @@ if_printf(ifp, "watchdog timeout\n"); if_inc_counter(ifp, IFCOUNTER_OERRORS, 1); - re_rxeof(sc, NULL); + NET_EPOCH_WRAP(re_rxeof, (sc, NULL)); ifp->if_drv_flags &= ~IFF_DRV_RUNNING; re_init_locked(sc); if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) Index: sys/dev/rl/if_rl.c =================================================================== --- sys/dev/rl/if_rl.c +++ sys/dev/rl/if_rl.c @@ -1904,7 +1904,7 @@ if_inc_counter(sc->rl_ifp, IFCOUNTER_OERRORS, 1); rl_txeof(sc); - rl_rxeof(sc); + NET_EPOCH_WRAP(rl_rxeof, (sc)); sc->rl_ifp->if_drv_flags &= ~IFF_DRV_RUNNING; rl_init_locked(sc); } Index: sys/dev/sfxge/sfxge_rx.c =================================================================== --- sys/dev/sfxge/sfxge_rx.c +++ sys/dev/sfxge/sfxge_rx.c @@ -992,7 +992,7 @@ } rxq->pending = rxq->added; - sfxge_rx_qcomplete(rxq, B_TRUE); + NET_EPOCH_WRAP(sfxge_rx_qcomplete, (rxq, B_TRUE)); KASSERT(rxq->completed == rxq->pending, ("rxq->completed != rxq->pending")); Index: sys/dev/ste/if_ste.c =================================================================== --- sys/dev/ste/if_ste.c +++ sys/dev/ste/if_ste.c @@ -1969,7 +1969,7 @@ ste_txeof(sc); ste_txeoc(sc); - ste_rxeof(sc, -1); + NET_EPOCH_WRAP(ste_rxeof, (sc, -1)); ifp->if_drv_flags &= ~IFF_DRV_RUNNING; ste_init_locked(sc); Index: sys/dev/vge/if_vge.c =================================================================== --- sys/dev/vge/if_vge.c +++ sys/dev/vge/if_vge.c @@ -2393,7 +2393,7 @@ if_inc_counter(ifp, IFCOUNTER_OERRORS, 1); vge_txeof(sc); - vge_rxeof(sc, VGE_RX_DESC_CNT); + NET_EPOCH_WRAP(vge_rxeof, (sc, VGE_RX_DESC_CNT)); ifp->if_drv_flags &= ~IFF_DRV_RUNNING; vge_init_locked(sc); Index: sys/dev/xen/netfront/netfront.c =================================================================== --- sys/dev/xen/netfront/netfront.c +++ sys/dev/xen/netfront/netfront.c @@ -1722,7 +1722,7 @@ xn_alloc_rx_buffers(rxq); rxq->ring.sring->rsp_event = rxq->ring.rsp_cons + 1; if (RING_HAS_UNCONSUMED_RESPONSES(&rxq->ring)) - xn_rxeof(rxq); + NET_EPOCH_WRAP(xn_rxeof, (rxq)); XN_RX_UNLOCK(rxq); } Index: sys/dev/xilinx/if_xae.c =================================================================== --- sys/dev/xilinx/if_xae.c +++ sys/dev/xilinx/if_xae.c @@ -210,6 +210,7 @@ static int xae_xdma_rx_intr(void *arg, xdma_transfer_status_t *status) { + struct epoch_tracker et; xdma_transfer_status_t st; struct xae_softc *sc; struct ifnet *ifp; @@ -223,6 +224,7 @@ XAE_LOCK(sc); + NET_EPOCH_ENTER(et); ifp = sc->ifp; cnt_processed = 0; @@ -247,6 +249,7 @@ } xae_rx_enqueue(sc, cnt_processed); + NET_EPOCH_EXIT(et); XAE_UNLOCK(sc); Index: sys/dev/xl/if_xl.c =================================================================== --- sys/dev/xl/if_xl.c +++ sys/dev/xl/if_xl.c @@ -3107,7 +3107,7 @@ if (sc->xl_wdog_timer == 0 || --sc->xl_wdog_timer != 0) return (0); - xl_rxeof(sc); + NET_EPOCH_WRAP(xl_rxeof, (sc)); xl_txeoc(sc); misintr = 0; if (sc->xl_type == XL_TYPE_905B) {