summaryrefslogtreecommitdiffstats
path: root/sys/net/if_ethersubr.c
diff options
context:
space:
mode:
authorRenato Botelho <renato@netgate.com>2015-08-17 13:53:14 -0300
committerRenato Botelho <renato@netgate.com>2015-08-17 13:53:14 -0300
commite9be044e401d0a0900ff9c179d20c5d66adad68c (patch)
treec50bd1c833a207e0ba64b7e756cbb7ab2ffe88c8 /sys/net/if_ethersubr.c
parent14cc93f3403d906f596ddc18d531bb13f053fa76 (diff)
downloadFreeBSD-src-e9be044e401d0a0900ff9c179d20c5d66adad68c.zip
FreeBSD-src-e9be044e401d0a0900ff9c179d20c5d66adad68c.tar.gz
Importing pfSense patch CP_speedup.diff
Diffstat (limited to 'sys/net/if_ethersubr.c')
-rw-r--r--sys/net/if_ethersubr.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/sys/net/if_ethersubr.c b/sys/net/if_ethersubr.c
index 5e2499d..20689a8 100644
--- a/sys/net/if_ethersubr.c
+++ b/sys/net/if_ethersubr.c
@@ -742,7 +742,11 @@ ether_demux(struct ifnet *ifp, struct mbuf *m)
if (i != 0 || m == NULL)
return;
- }
+
+ /* M_PROTO2 is for M_IP[6]_NEXTHOP */
+ i = m->m_flags & (M_FASTFWD_OURS|M_PROTO2);
+ } else
+ i = 0;
eh = mtod(m, struct ether_header *);
ether_type = ntohs(eh->ether_type);
@@ -781,6 +785,8 @@ ether_demux(struct ifnet *ifp, struct mbuf *m)
*/
m->m_flags &= ~M_VLANTAG;
m_clrprotoflags(m);
+ if (i)
+ m->m_flags |= M_FASTFWD_OURS|M_PROTO2;
m_adj(m, ETHER_HDR_LEN);
/*
OpenPOWER on IntegriCloud