On Tue, Sep 28, 2010 at 04:39:59PM +0200, Arnd Bergmann wrote: > On Tuesday 28 September 2010, Michael S. Tsirkin wrote: > > > > + skb_reserve(skb, NET_IP_ALIGN); > > > > + skb_put(skb, len); > > > > + > > > > + if (skb_copy_datagram_from_iovec(skb, 0, iov, 0, len)) { > > > > + kfree_skb(skb); > > > > + return -EAGAIN; > > > > + } > > > > + > > > > + skb->protocol = eth_type_trans(skb, mp->dev); > > > > > > Why are you calling eth_type_trans() on transmit? > > > > So that GSO can work. BTW macvtap does: > > > > skb_set_network_header(skb, ETH_HLEN); > > skb_reset_mac_header(skb); > > skb->protocol = eth_hdr(skb)->h_proto; > > > > and I think this is broken for vlans. Arnd? > > Hmm, that code (besides set_network_header) was added by Sridhar > for GSO support. I believe I originally did eth_type_trans but > had to change it before that time because it broke something. > Unfortunately, my memory on that is not very good any more. > > Can you be more specific what the problem is? Do you think > it breaks when a guest sends VLAN tagged frames or when macvtap > is connected to a VLAN interface that adds another tag (or > only the combination)? > > Arnd I expect the protocol value to be wrong when guest sends vlan tagged frames as 802.1q frames have a different format. -- MST -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html