svn commit: r357012 - head/sys/net

Gleb Smirnoff glebius at FreeBSD.org
Thu Jan 23 01:47:44 UTC 2020


Author: glebius
Date: Thu Jan 23 01:47:43 2020
New Revision: 357012
URL: https://svnweb.freebsd.org/changeset/base/357012

Log:
  Stop entering the network epoch in ether_input(), unless driver
  is marked with IFF_NEEDSEPOCH.

Modified:
  head/sys/net/if_ethersubr.c

Modified: head/sys/net/if_ethersubr.c
==============================================================================
--- head/sys/net/if_ethersubr.c	Thu Jan 23 01:46:05 2020	(r357011)
+++ head/sys/net/if_ethersubr.c	Thu Jan 23 01:47:43 2020	(r357012)
@@ -809,7 +809,8 @@ ether_input(struct ifnet *ifp, struct mbuf *m)
 	 * them up. This allows the drivers to amortize the receive lock.
 	 */
 	CURVNET_SET_QUIET(ifp->if_vnet);
-	NET_EPOCH_ENTER(et);
+	if (__predict_false(ifp->if_flags & IFF_NEEDSEPOCH))
+		NET_EPOCH_ENTER(et);
 	while (m) {
 		mn = m->m_nextpkt;
 		m->m_nextpkt = NULL;
@@ -824,7 +825,8 @@ ether_input(struct ifnet *ifp, struct mbuf *m)
 		netisr_dispatch(NETISR_ETHER, m);
 		m = mn;
 	}
-	NET_EPOCH_EXIT(et);
+	if (__predict_false(ifp->if_flags & IFF_NEEDSEPOCH))
+		NET_EPOCH_EXIT(et);
 	CURVNET_RESTORE();
 }
 


More information about the svn-src-head mailing list