On Fri, Apr 17, 2015 at 10:15:01AM +0800, Herbert Xu wrote: > > seems the cleaner fix will be to push skb->mac_len instead? > > No skb->mac_len is the same as skb2->dev->hard_header_len.
hmm. please help me understand the problem then. In the commit log you mentioned that your vlan dev and ifb have unequal hard header length. I think that can only happen if your master dev used to create vlan, didn't have vlan offload, so vlandev->hhl = 18 and ifb->hhl = 14. Then when tagged packet arrives on master device we call skb_vlan_untag() and skb->mac_len becomes 14, then vlan_do_receive() will do another_round, ingress qdisc will trigger and act_mirred eventually will be called. So existing act_mirred will be pushing 18 bytes, whereas only 14 bytes are valid and the lowest 4 have junk. By 'fixing it' using ifb's 14 byte the patch is only masking the problem, no? -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html