tunnel: Correctly check for internal device.
[sliver-openvswitch.git] / datapath / tunnel.c
index 77f976f..ad45228 100644 (file)
@@ -1266,17 +1266,15 @@ int tnl_send(struct vport *vport, struct sk_buff *skb)
 
                if (likely(cache)) {
                        int orig_len = skb->len - cache->len;
-                       struct vport *cache_vport = internal_dev_get_vport(rt_dst(rt).dev);
 
                        skb->protocol = htons(ETH_P_IP);
-
                        iph->tot_len = htons(skb->len - skb_network_offset(skb));
                        ip_send_check(iph);
 
-                       if (likely(cache_vport)) {
+                       if (is_internal_dev(rt_dst(rt).dev)) {
                                OVS_CB(skb)->flow = cache->flow;
                                compute_ip_summed(skb, true);
-                               vport_receive(cache_vport, skb);
+                               vport_receive(internal_dev_get_vport(rt_dst(rt).dev), skb);
                                sent_len += orig_len;
                        } else {
                                int err;