diff options
Diffstat (limited to 'sys/dev/pci/if_vic.c')
-rw-r--r-- | sys/dev/pci/if_vic.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/sys/dev/pci/if_vic.c b/sys/dev/pci/if_vic.c index 93601170dca..e89b0b29254 100644 --- a/sys/dev/pci/if_vic.c +++ b/sys/dev/pci/if_vic.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_vic.c,v 1.83 2014/12/22 02:28:52 tedu Exp $ */ +/* $OpenBSD: if_vic.c,v 1.84 2015/02/10 02:57:32 pelikan Exp $ */ /* * Copyright (c) 2006 Reyk Floeter <reyk@openbsd.org> @@ -814,6 +814,7 @@ vic_rx_proc(struct vic_softc *sc, int q) struct ifnet *ifp = &sc->sc_ac.ac_if; struct vic_rxdesc *rxd; struct vic_rxbuf *rxb; + struct mbuf_list ml = MBUF_LIST_INITIALIZER(); struct mbuf *m; int len, idx; @@ -865,18 +866,14 @@ vic_rx_proc(struct vic_softc *sc, int q) ifp->if_ipackets++; -#if NBPFILTER > 0 - if (ifp->if_bpf) - bpf_mtap(ifp->if_bpf, m, BPF_DIRECTION_IN); -#endif - - ether_input_mbuf(ifp, m); + ml_enqueue(&ml, m); -nextp: + nextp: if_rxr_put(&sc->sc_rxq[q].ring, 1); VIC_INC(sc->sc_data->vd_rx[q].nextidx, sc->sc_nrxbuf); } + if_input(ifp, &ml); vic_rx_fill(sc, q); bus_dmamap_sync(sc->sc_dmat, sc->sc_dma_map, 0, sc->sc_dma_size, |