net: Fix vlan_get_protocol for stacked vlan
authorToshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
Thu, 29 Jan 2015 11:37:07 +0000 (20:37 +0900)
committerDavid S. Miller <davem@davemloft.net>
Sat, 31 Jan 2015 02:03:47 +0000 (18:03 -0800)
vlan_get_protocol() could not get network protocol if a skb has a 802.1ad
vlan tag or multiple vlans, which caused incorrect checksum calculation
in several drivers.

Fix vlan_get_protocol() to retrieve network protocol instead of incorrect
vlan protocol.

As the logic is the same as skb_network_protocol(), create a common helper
function __vlan_get_protocol() and call it from existing functions.

Signed-off-by: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
Signed-off-by: David S. Miller <davem@davemloft.net>

No differences found