diff options
author | Renato Botelho <renato@netgate.com> | 2015-08-17 13:53:14 -0300 |
---|---|---|
committer | Renato Botelho <renato@netgate.com> | 2015-08-17 13:53:14 -0300 |
commit | e9be044e401d0a0900ff9c179d20c5d66adad68c (patch) | |
tree | c50bd1c833a207e0ba64b7e756cbb7ab2ffe88c8 /sys/net/if_ethersubr.c | |
parent | 14cc93f3403d906f596ddc18d531bb13f053fa76 (diff) | |
download | FreeBSD-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.c | 8 |
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); /* |