net: rps: support 802.1Q
For the 802.1Q packets, if the NIC doesn't support hw-accel-vlan-rx, RPS won't inspect the internal 4 tuples to generate skb->rxhash, so this kind of traffic can't get any benefit from RPS. This patch adds the support for 802.1Q to RPS. Signed-off-by: Changli Gao <xiaosuo@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
939cf3069d
commit
1ff1986fc9
1 changed files with 8 additions and 0 deletions
|
@ -2529,6 +2529,7 @@ void __skb_get_rxhash(struct sk_buff *skb)
|
|||
int nhoff, hash = 0, poff;
|
||||
const struct ipv6hdr *ip6;
|
||||
const struct iphdr *ip;
|
||||
const struct vlan_hdr *vlan;
|
||||
u8 ip_proto;
|
||||
u32 addr1, addr2;
|
||||
u16 proto;
|
||||
|
@ -2565,6 +2566,13 @@ void __skb_get_rxhash(struct sk_buff *skb)
|
|||
addr2 = (__force u32) ip6->daddr.s6_addr32[3];
|
||||
nhoff += 40;
|
||||
break;
|
||||
case __constant_htons(ETH_P_8021Q):
|
||||
if (!pskb_may_pull(skb, sizeof(*vlan) + nhoff))
|
||||
goto done;
|
||||
vlan = (const struct vlan_hdr *) (skb->data + nhoff);
|
||||
proto = vlan->h_vlan_encapsulated_proto;
|
||||
nhoff += sizeof(*vlan);
|
||||
goto again;
|
||||
default:
|
||||
goto done;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue