Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
[deliverable/linux.git] / net / core / dev.c
index b31d5d69a467c531d68e350d4d02fb4acc08b1d7..e904c476b1122738d4b72ae2ddab1988ee36ba2a 100644 (file)
@@ -2015,8 +2015,12 @@ static struct netdev_queue *dev_pick_tx(struct net_device *dev,
                        if (dev->real_num_tx_queues > 1)
                                queue_index = skb_tx_hash(dev, skb);
 
-                       if (sk && rcu_dereference_check(sk->sk_dst_cache, 1))
-                               sk_tx_queue_set(sk, queue_index);
+                       if (sk) {
+                               struct dst_entry *dst = rcu_dereference_check(sk->sk_dst_cache, 1);
+
+                               if (dst && skb_dst(skb) == dst)
+                                       sk_tx_queue_set(sk, queue_index);
+                       }
                }
        }
 
This page took 0.02521 seconds and 5 git commands to generate.