openvswitch: fix vlan subtraction from packet length
When the packet has its vlan tag in skb->vlan_tci, the length of the VLAN
header is not counted in skb->len. It doesn't make sense to subtract it.
Fixes: 018c1dda5f
("openvswitch: 802.1AD Flow handling, actions, vlan parsing, netlink attributes")
Signed-off-by: Jiri Benc <jbenc@redhat.com>
Acked-by: Pravin B Shelar <pshelar@ovn.org>
Acked-by: Eric Garver <e@erig.me>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
20ecf1e4e3
Коммит
72ec108d70
|
@ -485,7 +485,8 @@ static unsigned int packet_length(const struct sk_buff *skb)
|
|||
{
|
||||
unsigned int length = skb->len - ETH_HLEN;
|
||||
|
||||
if (skb_vlan_tagged(skb))
|
||||
if (!skb_vlan_tag_present(skb) &&
|
||||
eth_type_vlan(skb->protocol))
|
||||
length -= VLAN_HLEN;
|
||||
|
||||
/* Don't subtract for multiple VLAN tags. Most (all?) drivers allow
|
||||
|
|
Загрузка…
Ссылка в новой задаче