iph->saddr, iph->daddr, tpi->key);
  
        if (tunnel) {
-               skb_pop_mac_header(skb);
 +              if (__iptunnel_pull_header(skb, hdr_len, tpi->proto,
 +                                         raw_proto, false) < 0)
 +                      goto drop;
 +
+               if (tunnel->dev->type != ARPHRD_NONE)
+                       skb_pop_mac_header(skb);
+               else
+                       skb_reset_mac_header(skb);
                if (tunnel->collect_md) {
                        __be16 flags;
                        __be64 tun_id;
 
  __cacheline_aligned_in_smp DEFINE_SPINLOCK(nf_conntrack_expect_lock);
  EXPORT_SYMBOL_GPL(nf_conntrack_expect_lock);
  
 +struct hlist_nulls_head *nf_conntrack_hash __read_mostly;
 +EXPORT_SYMBOL_GPL(nf_conntrack_hash);
 +
 +static __read_mostly struct kmem_cache *nf_conntrack_cachep;
 +static __read_mostly spinlock_t nf_conntrack_locks_all_lock;
 +static __read_mostly seqcount_t nf_conntrack_generation;
+ static __read_mostly DEFINE_SPINLOCK(nf_conntrack_locks_all_lock);
  static __read_mostly bool nf_conntrack_locks_all;
  
  void nf_conntrack_lock(spinlock_t *lock) __acquires(lock)