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]

Reply via email to