Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1ff1986f authored by Changli Gao's avatar Changli Gao Committed by David S. Miller
Browse files

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: default avatarChangli Gao <xiaosuo@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 939cf306
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -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;
	}