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
					
				| @ -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 @@ again: | ||||
| 		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 New Issue
	
	Block a user