diff options
author | Tom Herbert <therbert@google.com> | 2011-08-14 21:46:12 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-08-18 05:06:03 +0200 |
commit | e971b7225bcb1f318811ef04628c441497372999 (patch) | |
tree | 0c860fe9fe988cc117a5275168833a585211be17 | |
parent | rps: Add flag to skb to indicate rxhash is based on L4 tuple (diff) | |
download | linux-e971b7225bcb1f318811ef04628c441497372999.tar.xz linux-e971b7225bcb1f318811ef04628c441497372999.zip |
rps: Infrastructure in __skb_get_rxhash for deep inspection
Basics for looking for ports in encapsulated packets in tunnels.
Signed-off-by: Tom Herbert <therbert@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/core/dev.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index e485cb37228f..4bee9a9aeef6 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -133,6 +133,7 @@ #include <linux/pci.h> #include <linux/inetdevice.h> #include <linux/cpu_rmap.h> +#include <linux/if_tunnel.h> #include "net-sysfs.h" @@ -2539,6 +2540,7 @@ void __skb_get_rxhash(struct sk_buff *skb) nhoff = skb_network_offset(skb); proto = skb->protocol; +again: switch (proto) { case __constant_htons(ETH_P_IP): if (!pskb_may_pull(skb, sizeof(*ip) + nhoff)) @@ -2567,6 +2569,11 @@ void __skb_get_rxhash(struct sk_buff *skb) goto done; } + switch (ip_proto) { + default: + break; + } + ports.v32 = 0; poff = proto_ports_offset(ip_proto); if (poff >= 0) { |