diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2009-02-08 13:00:37 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-02-08 23:22:18 -0500 |
commit | aa4b9f533ed5a22952e038b9fac2447ccc682124 (patch) | |
tree | 91722b13a63dcd0e49695388e633cfa91b856b80 /net/8021q | |
parent | 4ae5544f9a33e4ae306e337f96951eb3ff2df6d9 (diff) |
gro: Optimise Ethernet header comparison
This patch optimises the Ethernet header comparison to use 2-byte
and 4-byte xors instead of memcmp. In order to facilitate this,
the actual comparison is now carried out by the callers of the
shared dev_gro_receive function.
This has a significant impact when receiving 1500B packets through
10GbE.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/8021q')
-rw-r--r-- | net/8021q/vlan_core.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/net/8021q/vlan_core.c b/net/8021q/vlan_core.c index 378fa69d625a..70435af153f2 100644 --- a/net/8021q/vlan_core.c +++ b/net/8021q/vlan_core.c | |||
@@ -85,7 +85,9 @@ static int vlan_gro_common(struct napi_struct *napi, struct vlan_group *grp, | |||
85 | goto drop; | 85 | goto drop; |
86 | 86 | ||
87 | for (p = napi->gro_list; p; p = p->next) { | 87 | for (p = napi->gro_list; p; p = p->next) { |
88 | NAPI_GRO_CB(p)->same_flow = p->dev == skb->dev; | 88 | NAPI_GRO_CB(p)->same_flow = |
89 | p->dev == skb->dev && !compare_ether_header( | ||
90 | skb_mac_header(p), skb_gro_mac_header(skb)); | ||
89 | NAPI_GRO_CB(p)->flush = 0; | 91 | NAPI_GRO_CB(p)->flush = 0; |
90 | } | 92 | } |
91 | 93 | ||