if (vport->ops->type == OVS_VPORT_TYPE_INTERNAL)
                                        continue;
 
-                               if (!(vport->dev->priv_flags & IFF_OVS_DATAPATH))
+                               if (!(netif_is_ovs_port(vport->dev)))
                                        dp_detach_port_notify(vport);
                        }
                }
 
 static void netdev_destroy(struct vport *vport)
 {
        rtnl_lock();
-       if (vport->dev->priv_flags & IFF_OVS_DATAPATH)
+       if (netif_is_ovs_port(vport->dev))
                ovs_netdev_detach_dev(vport);
        rtnl_unlock();
 
 void ovs_netdev_tunnel_destroy(struct vport *vport)
 {
        rtnl_lock();
-       if (vport->dev->priv_flags & IFF_OVS_DATAPATH)
+       if (netif_is_ovs_port(vport->dev))
                ovs_netdev_detach_dev(vport);
 
        /* We can be invoked by both explicit vport deletion and
 /* Returns null if this device is not attached to a datapath. */
 struct vport *ovs_netdev_get_vport(struct net_device *dev)
 {
-       if (likely(dev->priv_flags & IFF_OVS_DATAPATH))
+       if (likely(netif_is_ovs_port(dev)))
                return (struct vport *)
                        rcu_dereference_rtnl(dev->rx_handler_data);
        else