On Thu, 12 May 2016 09:47:58 +0300, Shmulik Ladkani wrote: > Would it make sense to perform this within __iptunnel_pull_header (in > case raw_proto is true) for all __iptunnel_pull_header callers?
raw_proto just denotes that inner_proto of ETH_P_TEB should not be treated specially. Guessing any other special meaning based on this flag would be unexpected and confusing. Specifically, __iptunnel_pull_header doesn't have and should not have any notion of the device type; although all current users of raw_proto == true are of ARPHRD_NONE type, it's not a requirement. > If not (meaning vxlan specific), in next few lines we have: > > if (!raw_proto) { > if (!vxlan_set_mac(vxlan, vs, skb)) > goto drop; > } else { > skb->dev = vxlan->dev; > skb->pkt_type = PACKET_HOST; > } > > Seems more appropriate to place the missing 'skb_reset_mac_header' > within the "else" part, which logically holds all "things to initialize > in the skb if raw_proto is true, thus havn't called vxlan_set_mac". I agree. I'll respin the patch. Thanks! Jiri