diff options
-rw-r--r-- | net/core/flow_dissector.c | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/net/core/flow_dissector.c b/net/core/flow_dissector.c index b84a1b155bc1..d12e3a9a5356 100644 --- a/net/core/flow_dissector.c +++ b/net/core/flow_dissector.c | |||
@@ -346,14 +346,9 @@ u16 __netdev_pick_tx(struct net_device *dev, struct sk_buff *skb) | |||
346 | if (new_index < 0) | 346 | if (new_index < 0) |
347 | new_index = skb_tx_hash(dev, skb); | 347 | new_index = skb_tx_hash(dev, skb); |
348 | 348 | ||
349 | if (queue_index != new_index && sk) { | 349 | if (queue_index != new_index && sk && |
350 | struct dst_entry *dst = | 350 | rcu_access_pointer(sk->sk_dst_cache)) |
351 | rcu_dereference_check(sk->sk_dst_cache, 1); | 351 | sk_tx_queue_set(sk, queue_index); |
352 | |||
353 | if (dst && skb_dst(skb) == dst) | ||
354 | sk_tx_queue_set(sk, queue_index); | ||
355 | |||
356 | } | ||
357 | 352 | ||
358 | queue_index = new_index; | 353 | queue_index = new_index; |
359 | } | 354 | } |