diff --git a/[refs] b/[refs] index c0d3a7ecfc85..12a5708e5069 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7a67e56fd362d3edfde1f19170893508c3940d3a +refs/heads/master: ec581f6a42bbbea5271c66da9769a41b46c74e10 diff --git a/trunk/net/core/dev.c b/trunk/net/core/dev.c index 308a7d0c277f..e2e9e4af3ace 100644 --- a/trunk/net/core/dev.c +++ b/trunk/net/core/dev.c @@ -1735,11 +1735,12 @@ u16 skb_tx_hash(const struct net_device *dev, const struct sk_buff *skb) { u32 hash; - if (skb_rx_queue_recorded(skb)) { - hash = skb_get_rx_queue(skb); - } else if (skb->sk && skb->sk->sk_hash) { + if (skb_rx_queue_recorded(skb)) + return skb_get_rx_queue(skb) % dev->real_num_tx_queues; + + if (skb->sk && skb->sk->sk_hash) hash = skb->sk->sk_hash; - } else + else hash = skb->protocol; hash = jhash_1word(hash, skb_tx_hashrnd);