Lines Matching refs:tunnel
275 struct ip_tunnel *tunnel; in erspan_rcv() local
288 tunnel = ip_tunnel_lookup(itn, skb->dev->ifindex, flags, in erspan_rcv()
299 tunnel = ip_tunnel_lookup(itn, skb->dev->ifindex, flags, in erspan_rcv()
303 if (tunnel) { in erspan_rcv()
318 if (tunnel->collect_md) { in erspan_rcv()
356 ip_tunnel_rcv(tunnel, skb, tpi, tun_dst, log_ecn_error); in erspan_rcv()
371 struct ip_tunnel *tunnel; in __ipgre_rcv() local
374 tunnel = ip_tunnel_lookup(itn, skb->dev->ifindex, tpi->flags, in __ipgre_rcv()
377 if (tunnel) { in __ipgre_rcv()
387 if (tunnel->dev->header_ops == &ipgre_header_ops) in __ipgre_rcv()
392 tnl_params = &tunnel->parms.iph; in __ipgre_rcv()
393 if (tunnel->collect_md || tnl_params->daddr == 0) { in __ipgre_rcv()
407 ip_tunnel_rcv(tunnel, skb, tpi, tun_dst, log_ecn_error); in __ipgre_rcv()
479 struct ip_tunnel *tunnel = netdev_priv(dev); in __gre_xmit() local
482 ip_tunnel_flags_copy(flags, tunnel->parms.o_flags); in __gre_xmit()
485 gre_build_header(skb, tunnel->tun_hlen, in __gre_xmit()
486 flags, proto, tunnel->parms.o_key, in __gre_xmit()
488 htonl(atomic_fetch_inc(&tunnel->o_seqno)) : 0); in __gre_xmit()
501 struct ip_tunnel *tunnel = netdev_priv(dev); in gre_fb_xmit() local
520 tunnel->parms.o_flags))) in gre_fb_xmit()
531 htonl(atomic_fetch_inc(&tunnel->o_seqno)) : 0); in gre_fb_xmit()
544 struct ip_tunnel *tunnel = netdev_priv(dev); in erspan_fb_xmit() local
616 htonl(atomic_fetch_inc(&tunnel->o_seqno))); in erspan_fb_xmit()
654 struct ip_tunnel *tunnel = netdev_priv(dev); in ipgre_xmit() local
660 if (tunnel->collect_md) { in ipgre_xmit()
666 int pull_len = tunnel->hlen + sizeof(struct iphdr); in ipgre_xmit()
687 tnl_params = &tunnel->parms.iph; in ipgre_xmit()
691 tunnel->parms.o_flags))) in ipgre_xmit()
706 struct ip_tunnel *tunnel = netdev_priv(dev); in erspan_xmit() local
713 if (tunnel->collect_md) { in erspan_xmit()
731 if (tunnel->erspan_ver == 0) { in erspan_xmit()
733 __clear_bit(IP_TUNNEL_SEQ_BIT, tunnel->parms.o_flags); in erspan_xmit()
734 } else if (tunnel->erspan_ver == 1) { in erspan_xmit()
735 erspan_build_header(skb, ntohl(tunnel->parms.o_key), in erspan_xmit()
736 tunnel->index, in erspan_xmit()
739 } else if (tunnel->erspan_ver == 2) { in erspan_xmit()
740 erspan_build_header_v2(skb, ntohl(tunnel->parms.o_key), in erspan_xmit()
741 tunnel->dir, tunnel->hwid, in erspan_xmit()
748 __clear_bit(IP_TUNNEL_KEY_BIT, tunnel->parms.o_flags); in erspan_xmit()
749 __gre_xmit(skb, dev, &tunnel->parms.iph, proto); in erspan_xmit()
761 struct ip_tunnel *tunnel = netdev_priv(dev); in gre_tap_xmit() local
766 if (tunnel->collect_md) { in gre_tap_xmit()
772 tunnel->parms.o_flags))) in gre_tap_xmit()
778 __gre_xmit(skb, dev, &tunnel->parms.iph, htons(ETH_P_TEB)); in gre_tap_xmit()
789 struct ip_tunnel *tunnel = netdev_priv(dev); in ipgre_link_update() local
792 len = tunnel->tun_hlen; in ipgre_link_update()
793 tunnel->tun_hlen = gre_calc_hlen(tunnel->parms.o_flags); in ipgre_link_update()
794 len = tunnel->tun_hlen - len; in ipgre_link_update()
795 tunnel->hlen = tunnel->hlen + len; in ipgre_link_update()
805 if (test_bit(IP_TUNNEL_SEQ_BIT, tunnel->parms.o_flags) || in ipgre_link_update()
806 (test_bit(IP_TUNNEL_CSUM_BIT, tunnel->parms.o_flags) && in ipgre_link_update()
807 tunnel->encap.type != TUNNEL_ENCAP_NONE)) { in ipgre_link_update()
1000 struct ip_tunnel *tunnel; in __gre_tunnel_init() local
1002 tunnel = netdev_priv(dev); in __gre_tunnel_init()
1003 tunnel->tun_hlen = gre_calc_hlen(tunnel->parms.o_flags); in __gre_tunnel_init()
1004 tunnel->parms.iph.protocol = IPPROTO_GRE; in __gre_tunnel_init()
1006 tunnel->hlen = tunnel->tun_hlen + tunnel->encap_hlen; in __gre_tunnel_init()
1007 dev->needed_headroom = tunnel->hlen + sizeof(tunnel->parms.iph); in __gre_tunnel_init()
1015 if (test_bit(IP_TUNNEL_SEQ_BIT, tunnel->parms.o_flags)) in __gre_tunnel_init()
1017 if (test_bit(IP_TUNNEL_CSUM_BIT, tunnel->parms.o_flags) && in __gre_tunnel_init()
1018 tunnel->encap.type != TUNNEL_ENCAP_NONE) in __gre_tunnel_init()
1029 struct ip_tunnel *tunnel = netdev_priv(dev); in ipgre_tunnel_init() local
1030 struct iphdr *iph = &tunnel->parms.iph; in ipgre_tunnel_init()
1041 if (iph->daddr && !tunnel->collect_md) { in ipgre_tunnel_init()
1048 dev->hard_header_len = tunnel->hlen + sizeof(*iph); in ipgre_tunnel_init()
1052 } else if (!tunnel->collect_md) { in ipgre_tunnel_init()
1054 dev->hard_header_len = tunnel->hlen + sizeof(*iph); in ipgre_tunnel_init()
1343 struct ip_tunnel *tunnel = netdev_priv(dev); in erspan_tunnel_init() local
1345 if (tunnel->erspan_ver == 0) in erspan_tunnel_init()
1346 tunnel->tun_hlen = 4; /* 4-byte GRE hdr. */ in erspan_tunnel_init()
1348 tunnel->tun_hlen = 8; /* 8-byte GRE hdr. */ in erspan_tunnel_init()
1350 tunnel->parms.iph.protocol = IPPROTO_GRE; in erspan_tunnel_init()
1351 tunnel->hlen = tunnel->tun_hlen + tunnel->encap_hlen + in erspan_tunnel_init()
1352 erspan_hdr_len(tunnel->erspan_ver); in erspan_tunnel_init()