Following up to myself.
It appears that NetBSD copes with this by adding an extra 4 bytes of
padding as I suggested.
netbsd's sys/net/if_vlan.c:vlan_start() contains this code:
/*
* To cater for VLAN-aware layer 2 ethernet
* switches which may need to strip the tag
* before forwarding the packet, make sure
* the packet+tag is at least 68 bytes long.
* This is necessary because our parent will
* only pad to 64 bytes (ETHER_MIN_LEN) and
* some switches will not pad by themselves
* after deleting a tag.
*/
if (m->m_pkthdr.len <
(ETHER_MIN_LEN + ETHER_VLAN_ENCAP_LEN)) {
m_copyback(m, m->m_pkthdr.len,
(ETHER_MIN_LEN +
ETHER_VLAN_ENCAP_LEN) -
m->m_pkthdr.len,
vlan_zero_pad_buff);
}
clearly we need to do the same.
- Bill
_______________________________________________
networking-discuss mailing list
[email protected]