X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=net%2Fcore%2Fdev.c;h=b6d0bf875a8ef59b7291d0981aefd7629cd48080;hb=9bde36afcaf0ec2ad9f03974da41875c759a4fe8;hp=24ea2d71e7eac37000285ea5cd348e1ecb14f156;hpb=f9a3d1d74bdacf8a5ef8025233e61546cb809dc8;p=~andy%2Flinux diff --git a/net/core/dev.c b/net/core/dev.c index 24ea2d71e7e..b6d0bf875a8 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -2563,7 +2563,8 @@ static int get_rps_cpu(struct net_device *dev, struct sk_buff *skb, map = rcu_dereference(rxqueue->rps_map); if (map) { - if (map->len == 1) { + if (map->len == 1 && + !rcu_dereference_raw(rxqueue->rps_flow_table)) { tcpu = map->cpus[0]; if (cpu_online(tcpu)) cpu = tcpu; @@ -3424,6 +3425,8 @@ static void napi_reuse_skb(struct napi_struct *napi, struct sk_buff *skb) __skb_pull(skb, skb_headlen(skb)); skb_reserve(skb, NET_IP_ALIGN - skb_headroom(skb)); skb->vlan_tci = 0; + skb->dev = napi->dev; + skb->skb_iif = 0; napi->skb = skb; }