Thanks for doing this work, much appreciated. I haven't tested your patches yet, but when I was attempting this, I needed the attached patch to get it to work with bridging and netfilter, otherwise gre tries to call skb->dst->ops->update_pmtu(skb->dst, mtu); Herbert Xu wrote: > @@ -530,7 +572,13 @@ static int ipgre_rcv(struct sk_buff *skb) > dst_release(skb->dst); > skb->dst = NULL; > nf_reset(skb); > + > + if (tunnel->dev->type == ARPHRD_ETHER) > + skb->protocol = eth_type_trans(skb, skb->dev); Do you need to check pskb_may_pull(skb, ETH_HLEN)? > + > + skb_reset_network_header(skb); > ipgre_ecn_decapsulate(iph, skb); > + > netif_rx(skb); > read_unlock(&ipgre_lock); > return(0);