goto out;
        }
  
 -      if (!rcu_dereference(tun->steering_prog))
 +      if (!rcu_dereference(tun->steering_prog) && tun->numqueues > 1 &&
 +          !tfile->detached)
                rxhash = __skb_get_hash_symmetric(skb);
  
+       skb_record_rx_queue(skb, tfile->queue_index);
        netif_receive_skb(skb);
  
        stats = get_cpu_ptr(tun->pcpu_stats);
 
        __skb_pull(skb, skb_headlen(skb));
        /* restore the reserve we had after netdev_alloc_skb_ip_align() */
        skb_reserve(skb, NET_SKB_PAD + NET_IP_ALIGN - skb_headroom(skb));
 -      skb->vlan_tci = 0;
 +      __vlan_hwaccel_clear_tag(skb);
        skb->dev = napi->dev;
        skb->skb_iif = 0;
+ 
+       /* eth_type_trans() assumes pkt_type is PACKET_HOST */
+       skb->pkt_type = PACKET_HOST;
+ 
        skb->encapsulation = 0;
        skb_shinfo(skb)->gso_type = 0;
        skb->truesize = SKB_TRUESIZE(skb_end_offset(skb));