Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 30 Nov 2022 22:39:12 GMT
From:      John Baldwin <jhb@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 79b679942352 - main - ether_demux: Defer stripping the Ethernet header.
Message-ID:  <202211302239.2AUMdCcG029839@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by jhb:

URL: https://cgit.FreeBSD.org/src/commit/?id=79b679942352a7f10d759fdee1892aa251e0f439

commit 79b679942352a7f10d759fdee1892aa251e0f439
Author:     John Baldwin <jhb@FreeBSD.org>
AuthorDate: 2022-11-30 22:38:51 +0000
Commit:     John Baldwin <jhb@FreeBSD.org>
CommitDate: 2022-11-30 22:38:51 +0000

    ether_demux: Defer stripping the Ethernet header.
    
    This avoids having to undo it before invoking NetGraph's orphan input
    hook.
    
    Reviewed by:    ae, melifaro
    Sponsored by:   Chelsio Communications
    Differential Revision:  https://reviews.freebsd.org/D37510
---
 sys/net/if_ethersubr.c | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/sys/net/if_ethersubr.c b/sys/net/if_ethersubr.c
index d92c49b6f39c..a42e15dda97a 100644
--- a/sys/net/if_ethersubr.c
+++ b/sys/net/if_ethersubr.c
@@ -890,11 +890,9 @@ ether_demux(struct ifnet *ifp, struct mbuf *m)
 
 	/*
 	 * Reset layer specific mbuf flags to avoid confusing upper layers.
-	 * Strip off Ethernet header.
 	 */
 	m->m_flags &= ~M_VLANTAG;
 	m_clrprotoflags(m);
-	m_adj(m, ETHER_HDR_LEN);
 
 	/*
 	 * Dispatch frame to upper layer.
@@ -922,6 +920,10 @@ ether_demux(struct ifnet *ifp, struct mbuf *m)
 	default:
 		goto discard;
 	}
+
+	/* Strip off Ethernet header. */
+	m_adj(m, ETHER_HDR_LEN);
+
 	netisr_dispatch(isr, m);
 	return;
 
@@ -934,11 +936,6 @@ discard:
 	if (ifp->if_l2com != NULL) {
 		KASSERT(ng_ether_input_orphan_p != NULL,
 		    ("ng_ether_input_orphan_p is NULL"));
-		/*
-		 * Put back the ethernet header so netgraph has a
-		 * consistent view of inbound packets.
-		 */
-		M_PREPEND(m, ETHER_HDR_LEN, M_NOWAIT);
 		(*ng_ether_input_orphan_p)(ifp, m);
 		return;
 	}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202211302239.2AUMdCcG029839>