net: Fix some corner cases in dev_can_checksum()
authorBen Hutchings <bhutchings@solarflare.com>
Fri, 22 Oct 2010 04:12:19 +0000 (04:12 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 27 Oct 2010 18:37:29 +0000 (11:37 -0700)
commitaf1905dbec44445d75851996819ac2203670bd0f
tree0b34c62feeda057f5cb7233875b2b14b4228b2f1
parentcd0ea2419544cfc4ccbf8ee0087d0d9f109852d2
net: Fix some corner cases in dev_can_checksum()

dev_can_checksum() incorrectly returns true in these cases:

1. The skb has both out-of-band and in-band VLAN tags and the device
   supports checksum offload for the encapsulated protocol but only with
   one layer of encapsulation.
2. The skb has a VLAN tag and the device supports generic checksumming
   but not in conjunction with VLAN encapsulation.

Rearrange the VLAN tag checks to avoid these.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/dev.c