odhcp6c: filter similar RAs spammed by some ISPs
[openwrt.git] / target / linux / generic / patches-3.10 / 110-net_fix_multiqueue_selection.patch
1 From: Eric Dumazet <edumazet@google.com>
2
3 commit 416186fbf8c5b4e4465 ("net: Split core bits of netdev_pick_tx
4 into __netdev_pick_tx") added a bug that disables caching of queue
5 index in the socket.
6
7 This is the source of packet reorders for TCP flows, and
8 again this is happening more often when using FQ pacing.
9
10 Old code was doing
11
12 if (queue_index != old_index)
13         sk_tx_queue_set(sk, queue_index);
14
15 Alexander renamed the variables but forgot to change sk_tx_queue_set()
16 2nd parameter.
17
18 if (queue_index != new_index)
19         sk_tx_queue_set(sk, queue_index);
20
21 This means we store -1 over and over in sk->sk_tx_queue_mapping
22
23 Signed-off-by: Eric Dumazet <edumazet@google.com>
24 Cc: Alexander Duyck <alexander.h.duyck@intel.com>
25 Acked-by: Alexander Duyck <alexander.h.duyck@intel.com>
26
27 ---
28 net/core/flow_dissector.c |    2 +-
29  1 file changed, 1 insertion(+), 1 deletion(-)
30
31 --- a/net/core/flow_dissector.c
32 +++ b/net/core/flow_dissector.c
33 @@ -347,7 +347,7 @@ u16 __netdev_pick_tx(struct net_device *
34  
35                 if (queue_index != new_index && sk &&
36                     rcu_access_pointer(sk->sk_dst_cache))
37 -                       sk_tx_queue_set(sk, queue_index);
38 +                       sk_tx_queue_set(sk, new_index);
39  
40                 queue_index = new_index;
41         }