| From 5e26fb0e61c630f44d4cdd09e5c190647e4aa0f3 Mon Sep 17 00:00:00 2001 |
| From: Tom Herbert <therbert@google.com> |
| Date: Fri, 16 Nov 2012 09:04:15 +0000 |
| Subject: net-rps: Fix brokeness causing OOO packets |
| |
| |
| From: Tom Herbert <therbert@google.com> |
| |
| [ Upstream commit baefa31db2f2b13a05d1b81bdf2d20d487f58b0a ] |
| |
| In commit c445477d74ab3779 which adds aRFS to the kernel, the CPU |
| selected for RFS is not set correctly when CPU is changing. |
| This is causing OOO packets and probably other issues. |
| |
| Signed-off-by: Tom Herbert <therbert@google.com> |
| Acked-by: Eric Dumazet <edumazet@google.com> |
| Acked-by: Ben Hutchings <bhutchings@solarflare.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| net/core/dev.c | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| --- a/net/core/dev.c |
| +++ b/net/core/dev.c |
| @@ -2793,8 +2793,10 @@ static int get_rps_cpu(struct net_device |
| if (unlikely(tcpu != next_cpu) && |
| (tcpu == RPS_NO_CPU || !cpu_online(tcpu) || |
| ((int)(per_cpu(softnet_data, tcpu).input_queue_head - |
| - rflow->last_qtail)) >= 0)) |
| + rflow->last_qtail)) >= 0)) { |
| + tcpu = next_cpu; |
| rflow = set_rps_cpu(dev, skb, rflow, next_cpu); |
| + } |
| |
| if (tcpu != RPS_NO_CPU && cpu_online(tcpu)) { |
| *rflowp = rflow; |