net: dsa: Don't set skb->protocol on outgoing tagged packets
authorGuenter Roeck <linux@roeck-us.net>
Wed, 29 Oct 2014 17:44:53 +0000 (10:44 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 30 Oct 2014 18:54:10 +0000 (14:54 -0400)
commit734cbb5b6bf9ee42ab4d71690fabf486b1f44502
treed1bde24176732ff95d9ef9ecf6407a2edcb17beb
parent75fbfd33234a71556bec34b099d98f970190905d
net: dsa: Don't set skb->protocol on outgoing tagged packets

Setting skb->protocol to a private protocol type may result in warning
messages such as
e1000e 0000:00:19.0 em1: checksum_partial proto=dada!

This happens if the L3 protocol is IP or IPv6 and skb->ip_summed is set
to CHECKSUM_PARTIAL. Looking through the code, it appears that changing
skb->protocol for transmitted packets is not necessary and may actually
be harmful. For example, it prevents purposely unmodified (from a DSA
perspective) network drivers from properly setting up their transmit
checksum offload pointers since they inspect skb->protocol to set up the
IPv4 header or IPv6 header pointers. So don't unnecessarily change the
protocol field.

Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/dsa/tag_dsa.c
net/dsa/tag_edsa.c
net/dsa/tag_trailer.c