- struct netdev_vport *netdev_vport = netdev_vport_priv(vport);
-
- dev_put(netdev_vport->dev);
- vport_free(vport);
-
- return 0;
-}
-
-static int netdev_attach(struct vport *vport)
-{
- struct netdev_vport *netdev_vport = netdev_vport_priv(vport);
- int err;
-
- err = netdev_rx_handler_register(netdev_vport->dev, netdev_frame_hook,
- vport);
- if (err)
- return err;
-
- dev_set_promiscuity(netdev_vport->dev, 1);
- dev_disable_lro(netdev_vport->dev);
- netdev_vport->dev->priv_flags |= IFF_OVS_DATAPATH;
-
- return 0;
-}
-
-static int netdev_detach(struct vport *vport)
-{
- struct netdev_vport *netdev_vport = netdev_vport_priv(vport);
-
- netdev_vport->dev->priv_flags &= ~IFF_OVS_DATAPATH;
- netdev_rx_handler_unregister(netdev_vport->dev);
- dev_set_promiscuity(netdev_vport->dev, -1);
-
- return 0;
-}
-
-int netdev_set_mtu(struct vport *vport, int mtu)
-{
- struct netdev_vport *netdev_vport = netdev_vport_priv(vport);
- return dev_set_mtu(netdev_vport->dev, mtu);
-}
-
-int netdev_set_addr(struct vport *vport, const unsigned char *addr)
-{
- struct netdev_vport *netdev_vport = netdev_vport_priv(vport);
- struct sockaddr sa;
-
- sa.sa_family = ARPHRD_ETHER;
- memcpy(sa.sa_data, addr, ETH_ALEN);
-
- return dev_set_mac_address(netdev_vport->dev, &sa);
-}
-
-const char *netdev_get_name(const struct vport *vport)
-{
- const struct netdev_vport *netdev_vport = netdev_vport_priv(vport);
- return netdev_vport->dev->name;
-}
-
-const unsigned char *netdev_get_addr(const struct vport *vport)
-{
- const struct netdev_vport *netdev_vport = netdev_vport_priv(vport);
- return netdev_vport->dev->dev_addr;
-}
-
-struct kobject *netdev_get_kobj(const struct vport *vport)
-{
- const struct netdev_vport *netdev_vport = netdev_vport_priv(vport);
- return &netdev_vport->dev->NETDEV_DEV_MEMBER.kobj;
-}
-
-int netdev_get_stats(const struct vport *vport, struct odp_vport_stats *stats)
-{
- const struct netdev_vport *netdev_vport = netdev_vport_priv(vport);
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)
- struct rtnl_link_stats64 *netdev_stats, storage;
-
- netdev_stats = dev_get_stats(netdev_vport->dev, &storage);
-#else
- const struct net_device_stats *netdev_stats;
-
- netdev_stats = dev_get_stats(netdev_vport->dev);
-#endif