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 | } |
