aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/dev.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2015-01-27 19:59:56 -0500
committerDavid S. Miller <davem@davemloft.net>2015-01-27 19:59:56 -0500
commit95f873f2fff96c592c5d863e2a39825bd8bf0500 (patch)
tree0d2dd664964ba2c701aefea5b4d1e85b481045e1 /net/core/dev.c
parent8ea65f4a2dfaaf494ef42a16cbf2fea39b07450f (diff)
parent59343cd7c4809cf7598789e1cd14563780ae4239 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts: arch/arm/boot/dts/imx6sx-sdb.dts net/sched/cls_bpf.c Two simple sets of overlapping changes. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core/dev.c')
-rw-r--r--net/core/dev.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/net/core/dev.c b/net/core/dev.c
index 1e325adc4367..7f028d441e98 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -7075,10 +7075,20 @@ static int dev_cpu_callback(struct notifier_block *nfb,
7075 oldsd->output_queue = NULL; 7075 oldsd->output_queue = NULL;
7076 oldsd->output_queue_tailp = &oldsd->output_queue; 7076 oldsd->output_queue_tailp = &oldsd->output_queue;
7077 } 7077 }
7078 /* Append NAPI poll list from offline CPU. */ 7078 /* Append NAPI poll list from offline CPU, with one exception :
7079 if (!list_empty(&oldsd->poll_list)) { 7079 * process_backlog() must be called by cpu owning percpu backlog.
7080 list_splice_init(&oldsd->poll_list, &sd->poll_list); 7080 * We properly handle process_queue & input_pkt_queue later.
7081 raise_softirq_irqoff(NET_RX_SOFTIRQ); 7081 */
7082 while (!list_empty(&oldsd->poll_list)) {
7083 struct napi_struct *napi = list_first_entry(&oldsd->poll_list,
7084 struct napi_struct,
7085 poll_list);
7086
7087 list_del_init(&napi->poll_list);
7088 if (napi->poll == process_backlog)
7089 napi->state = 0;
7090 else
7091 ____napi_schedule(sd, napi);
7082 } 7092 }
7083 7093
7084 raise_softirq_irqoff(NET_TX_SOFTIRQ); 7094 raise_softirq_irqoff(NET_TX_SOFTIRQ);
@@ -7089,7 +7099,7 @@ static int dev_cpu_callback(struct notifier_block *nfb,
7089 netif_rx_internal(skb); 7099 netif_rx_internal(skb);
7090 input_queue_head_incr(oldsd); 7100 input_queue_head_incr(oldsd);
7091 } 7101 }
7092 while ((skb = __skb_dequeue(&oldsd->input_pkt_queue))) { 7102 while ((skb = skb_dequeue(&oldsd->input_pkt_queue))) {
7093 netif_rx_internal(skb); 7103 netif_rx_internal(skb);
7094 input_queue_head_incr(oldsd); 7104 input_queue_head_incr(oldsd);
7095 } 7105 }