On (09/20/16 18:43), Jiri Benc wrote: > > IPv6 header is certainly not 20 bytes.
vxlan encapsulates an IPv6/ethernet frame in a UDP/IPv4/ethernet packet. the ipv4 header is 20 bytes (without options). mld_newpack is dealing with the vxlan net_device in this case, which has ->hard_header_len of 14, and ->needed_headroom of 64, so hlen (used in mld_newpack) comes out to be 80. > If you see unaligned access, something is wrong. But I very much doubt > that the problem is at the place you're trying to fix. Could you share > the traces with us? Exactly what traces do you want? I think you can check this easily by using printk's predicated on IS_ALIGNED checks in vxlan_build_skb(). IPv6 MLD triggers this quite easily. I will try out Hannes' solution (which makes sense) in a moment, and report back. --Sowmini