Index: sys/netgraph/ng_ether.c =================================================================== --- sys/netgraph/ng_ether.c +++ sys/netgraph/ng_ether.c @@ -663,10 +663,12 @@ static int ng_ether_rcv_lower(hook_p hook, item_p item) { + struct epoch_tracker et; struct mbuf *m; const node_p node = NG_HOOK_NODE(hook); const priv_p priv = NG_NODE_PRIVATE(node); struct ifnet *const ifp = priv->ifp; + int ret; NGI_GET_M(item, m); NG_FREE_ITEM(item); @@ -702,8 +704,12 @@ ETHER_ADDR_LEN); } + NET_EPOCH_ENTER(et); /* Send it on its way */ - return ether_output_frame(ifp, m); + ret = ether_output_frame(ifp, m); + NET_EPOCH_EXIT(et); + + return (ret); } /* @@ -732,15 +738,17 @@ m->m_pkthdr.rcvif = ifp; + NET_EPOCH_ENTER(et); /* Pass the packet to the bridge, it may come back to us */ if (ifp->if_bridge) { BRIDGE_INPUT(ifp, m); - if (m == NULL) + if (m == NULL) { + NET_EPOCH_EXIT(et); return (0); + } } /* Route packet back in */ - NET_EPOCH_ENTER(et); ether_demux(ifp, m); NET_EPOCH_EXIT(et); return (0);