PCI: Add builtin_pci_driver() to avoid registration boilerplate
[firefly-linux-kernel-4.4.55.git] / net / mpls / mpls_iptunnel.c
index 276f8c9922184ada1e505cd31cf028552906f217..21e70bc9af989355521f8fd99ea3bc07730626c8 100644 (file)
@@ -48,7 +48,6 @@ int mpls_output(struct sock *sk, struct sk_buff *skb)
        struct dst_entry *dst = skb_dst(skb);
        struct rtable *rt = NULL;
        struct rt6_info *rt6 = NULL;
-       struct lwtunnel_state *lwtstate = NULL;
        int err = 0;
        bool bos;
        int i;
@@ -58,11 +57,9 @@ int mpls_output(struct sock *sk, struct sk_buff *skb)
        if (skb->protocol == htons(ETH_P_IP)) {
                ttl = ip_hdr(skb)->ttl;
                rt = (struct rtable *)dst;
-               lwtstate = rt->rt_lwtstate;
        } else if (skb->protocol == htons(ETH_P_IPV6)) {
                ttl = ipv6_hdr(skb)->hop_limit;
                rt6 = (struct rt6_info *)dst;
-               lwtstate = rt6->rt6i_lwtstate;
        } else {
                goto drop;
        }
@@ -72,12 +69,12 @@ int mpls_output(struct sock *sk, struct sk_buff *skb)
        /* Find the output device */
        out_dev = dst->dev;
        if (!mpls_output_possible(out_dev) ||
-           !lwtstate || skb_warn_if_lro(skb))
+           !dst->lwtstate || skb_warn_if_lro(skb))
                goto drop;
 
        skb_forward_csum(skb);
 
-       tun_encap_info = mpls_lwtunnel_encap(lwtstate);
+       tun_encap_info = mpls_lwtunnel_encap(dst->lwtstate);
 
        /* Verify the destination can hold the packet */
        new_header_size = mpls_encap_size(tun_encap_info);
@@ -126,6 +123,7 @@ drop:
 }
 
 static int mpls_build_state(struct net_device *dev, struct nlattr *nla,
+                           unsigned int family, const void *cfg,
                            struct lwtunnel_state **ts)
 {
        struct mpls_iptunnel_encap *tun_encap_info;