/*
- * Copyright (c) 2009, 2010 Nicira Networks.
+ * Copyright (c) 2009, 2010, 2011 Nicira Networks.
* Distributed under the terms of the GNU GPL version 2.
*
* Significant portions of this file may be copied from parts of the Linux
static void internal_dev_getinfo(struct net_device *netdev,
struct ethtool_drvinfo *info)
{
- struct vport *vport = internal_dev_get_vport(netdev);
-
strcpy(info->driver, "openvswitch");
- sprintf(info->bus_info, "%d.%d", vport->dp->dp_idx, vport->port_no);
}
static const struct ethtool_ops internal_dev_ethtool_ops = {
netif_stop_queue(netdev_vport->dev);
dev_set_promiscuity(netdev_vport->dev, -1);
- synchronize_rcu();
-
unregister_netdevice(netdev_vport->dev);
+ /* unregister_netdevice() waits for an RCU grace period. */
vport_free(vport);
return 0;
}
const struct vport_ops internal_vport_ops = {
- .type = "internal",
+ .type = ODP_VPORT_TYPE_INTERNAL,
.flags = VPORT_F_REQUIRED | VPORT_F_GEN_STATS | VPORT_F_FLOW,
.create = internal_dev_create,
.destroy = internal_dev_destroy,