we used to handle the vlan tag etc insertion very very very late,
authorhenning <henning@openbsd.org>
Tue, 22 Apr 2014 11:43:07 +0000 (11:43 +0000)
committerhenning <henning@openbsd.org>
Tue, 22 Apr 2014 11:43:07 +0000 (11:43 +0000)
commitb6164cab1eb5c5dff5b240e99729c422b456f7c5
tree9524b72640ef17f9687e37c24d29b31d8158ab00
parent0f7f0c5e11b5cf8ac77c35c99b286ba20c8bfd4d
we used to handle the vlan tag etc insertion very very very late,
on al already ass embed ethernet frame, which meant:
-copy (most of) the existing ethernet header into a ether_vlan_header
on the stack
-fill the extra fields in ether_vlan_header
-set the ether type
-m_adj() to make room for the extra space ether_vlan_header needs
-m_copyback the ether_vlan_header into the mbuf
that involves moving data around, which isn't all that cheap.
cleaner & easier to have ether_output prepend the ether_vlan_header instead
of the regular ethernet header, which makes the vlan tagging essentially
free in most cases.
help & ok reyk, naddy; waste of time bikeshedding tech@
sys/net/if_ethersubr.c
sys/net/if_vlan.c