Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[firefly-linux-kernel-4.4.55.git] / net / core / dev.c
index cf105e886ccad8a78ab386f60b8ab1a94f934288..974199daa911488df13c8902344ee857f23440e4 100644 (file)
@@ -513,7 +513,7 @@ void __dev_remove_offload(struct packet_offload *po)
        struct list_head *head = &offload_base;
        struct packet_offload *po1;
 
-       spin_lock(&ptype_lock);
+       spin_lock(&offload_lock);
 
        list_for_each_entry(po1, head, list) {
                if (po == po1) {
@@ -524,7 +524,7 @@ void __dev_remove_offload(struct packet_offload *po)
 
        pr_warn("dev_remove_offload: %p not found\n", po);
 out:
-       spin_unlock(&ptype_lock);
+       spin_unlock(&offload_lock);
 }
 EXPORT_SYMBOL(__dev_remove_offload);
 
@@ -2895,8 +2895,10 @@ static int get_rps_cpu(struct net_device *dev, struct sk_buff *skb,
                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;