Index: net/if.c =================================================================== RCS file: /cvs/src/sys/net/if.c,v retrieving revision 1.469 diff -u -p -r1.469 if.c --- net/if.c 29 Dec 2016 12:12:43 -0000 1.469 +++ net/if.c 3 Jan 2017 06:29:21 -0000 @@ -624,6 +624,9 @@ if_input(struct ifnet *ifp, struct mbuf_ caddr_t if_bpf; #endif + if (ml_empty(ml)) + return; + MBUF_LIST_FOREACH(ml, m) { m->m_pkthdr.ph_ifidx = ifp->if_index; m->m_pkthdr.ph_rtableid = ifp->if_rdomain; @@ -649,6 +652,9 @@ if_input(struct ifnet *ifp, struct mbuf_ ml_enqueue(ml, m); } } + + if (ml_empty(ml)) + return; #endif mq_enlist(&ifp->if_inputqueue, ml); Index: dev/ic/re.c =================================================================== RCS file: /cvs/src/sys/dev/ic/re.c,v retrieving revision 1.198 diff -u -p -r1.198 re.c --- dev/ic/re.c 16 Nov 2016 06:06:04 -0000 1.198 +++ dev/ic/re.c 3 Jan 2017 06:29:21 -0000 @@ -1213,7 +1213,8 @@ re_rx_list_init(struct rl_softc *sc) sc->rl_ldata.rl_rx_considx = 0; sc->rl_head = sc->rl_tail = NULL; - if_rxr_init(&sc->rl_ldata.rl_rx_ring, 2, sc->rl_ldata.rl_rx_desc_cnt); + if_rxr_init(&sc->rl_ldata.rl_rx_ring, 2, + sc->rl_ldata.rl_rx_desc_cnt - 1); re_rx_list_fill(sc); return (0); @@ -1520,7 +1521,8 @@ re_intr(void *arg) claimed = 1; if (status & RL_INTRS_CPLUS) { - if (status & (sc->rl_rx_ack | RL_ISR_RX_ERR)) { + if (status & + (sc->rl_rx_ack | RL_ISR_RX_ERR | RL_ISR_FIFO_OFLOW)) { rx |= re_rxeof(sc); claimed = 1; }