Index: if_ix.c =================================================================== RCS file: /cvs/src/sys/dev/pci/if_ix.c,v retrieving revision 1.116 diff -u -p -r1.116 if_ix.c --- if_ix.c 20 Jan 2015 12:56:50 -0000 1.116 +++ if_ix.c 12 Feb 2015 03:10:24 -0000 @@ -2787,6 +2787,7 @@ ixgbe_rxeof(struct ix_queue *que) struct ix_softc *sc = que->sc; struct rx_ring *rxr = que->rxr; struct ifnet *ifp = &sc->arpcom.ac_if; + struct mbuf_list ml = MBUF_LIST_INITIALIZER(); struct mbuf *mp, *sendmp; uint8_t eop = 0; uint16_t len, vtag; @@ -2895,7 +2896,6 @@ ixgbe_rxeof(struct ix_queue *que) sendmp = NULL; mp->m_next = nxbuf->buf; } else { /* Sending this frame? */ - sendmp->m_pkthdr.rcvif = ifp; ifp->if_ipackets++; rxr->rx_packets++; /* capture data for AIM */ @@ -2904,13 +2904,7 @@ ixgbe_rxeof(struct ix_queue *que) ixgbe_rx_checksum(staterr, sendmp, ptype); -#if NBPFILTER > 0 - if (ifp->if_bpf) - bpf_mtap_ether(ifp->if_bpf, sendmp, - BPF_DIRECTION_IN); -#endif - - ether_input_mbuf(ifp, sendmp); + ml_enqueue(&ml, sendmp); } next_desc: if_rxr_put(&rxr->rx_ring, 1); @@ -2923,6 +2917,8 @@ next_desc: i = 0; } rxr->next_to_check = i; + + if_input(ifp, &ml); if (!(staterr & IXGBE_RXD_STAT_DD)) return FALSE;