Commit be3ed486 authored by Eric Dumazet's avatar Eric Dumazet Committed by Jakub Kicinski

net: gro: no longer use skb_vlan_tag_present()

We can remove a conditional test in gro_list_prepare()
by comparing vlan_all fields of the two skbs.

Notes:

While comparing the vlan_proto is not strictly needed,
because part of the following compare_ether_header() call,
using 32bit word is actually faster than using 16bit values.

napi_reuse_skb() makes sure to clear skb->vlan_all,
as it already calls __vlan_hwaccel_clear_tag()
Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
Acked-by: default avatarMartin KaFai Lau <martin.lau@kernel.org>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 354259fa
...@@ -370,9 +370,7 @@ static void gro_list_prepare(const struct list_head *head, ...@@ -370,9 +370,7 @@ static void gro_list_prepare(const struct list_head *head,
} }
diffs = (unsigned long)p->dev ^ (unsigned long)skb->dev; diffs = (unsigned long)p->dev ^ (unsigned long)skb->dev;
diffs |= skb_vlan_tag_present(p) ^ skb_vlan_tag_present(skb); diffs |= p->vlan_all ^ skb->vlan_all;
if (skb_vlan_tag_present(p))
diffs |= skb_vlan_tag_get(p) ^ skb_vlan_tag_get(skb);
diffs |= skb_metadata_differs(p, skb); diffs |= skb_metadata_differs(p, skb);
if (maclen == ETH_HLEN) if (maclen == ETH_HLEN)
diffs |= compare_ether_header(skb_mac_header(p), diffs |= compare_ether_header(skb_mac_header(p),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment