Re: [PATCH v11 13/17] Add mp(mediate passthru) device.

Michael S. Tsirkin
2010-09-28T14:43:11Z

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