[ovs-dev] [PATCH 4/4] datapath: Fix build with Linux 2.6.31.
Justin Pettit
jpettit at nicira.com
Thu Oct 15 01:13:39 UTC 2009
Looks good.
--Justin
On Oct 12, 2009, at 11:14 AM, Ben Pfaff wrote:
> Linux 2.6.31 breaks the network device functions pointers into a
> separate
> "netdev_ops" structure, so we need to handle this case now too.
> ---
> datapath/dp_dev.c | 35 ++++++++++++++++++++++++++++++++---
> 1 files changed, 32 insertions(+), 3 deletions(-)
>
> diff --git a/datapath/dp_dev.c b/datapath/dp_dev.c
> index b0ba301..5417114 100644
> --- a/datapath/dp_dev.c
> +++ b/datapath/dp_dev.c
> @@ -157,22 +157,47 @@ static void dp_dev_free(struct net_device
> *netdev)
> free_netdev(netdev);
> }
>
> +static int dp_dev_do_ioctl(struct net_device *dev, struct ifreq
> *ifr, int cmd)
> +{
> + if (dp_ioctl_hook)
> + return dp_ioctl_hook(dev, ifr, cmd);
> + return -EOPNOTSUPP;
> +}
> +
> +#ifdef HAVE_NET_DEVICE_OPS
> +static const struct net_device_ops dp_dev_netdev_ops = {
> + .ndo_init = dp_dev_init,
> + .ndo_open = dp_dev_open,
> + .ndo_stop = dp_dev_stop,
> + .ndo_start_xmit = dp_dev_xmit,
> + .ndo_set_mac_address = dp_dev_mac_addr,
> + .ndo_do_ioctl = dp_dev_do_ioctl,
> + .ndo_change_mtu = dp_dev_change_mtu,
> + .ndo_get_stats = dp_dev_get_stats,
> +};
> +#endif
> +
> static void
> do_setup(struct net_device *netdev)
> {
> ether_setup(netdev);
>
> - netdev->do_ioctl = dp_ioctl_hook;
> +#ifdef HAVE_NET_DEVICE_OPS
> + netdev->netdev_ops = &dp_dev_netdev_ops;
> +#else
> + netdev->do_ioctl = dp_dev_do_ioctl;
> netdev->get_stats = dp_dev_get_stats;
> netdev->hard_start_xmit = dp_dev_xmit;
> netdev->open = dp_dev_open;
> - SET_ETHTOOL_OPS(netdev, &dp_ethtool_ops);
> netdev->stop = dp_dev_stop;
> - netdev->tx_queue_len = 0;
> netdev->set_mac_address = dp_dev_mac_addr;
> netdev->change_mtu = dp_dev_change_mtu;
> netdev->init = dp_dev_init;
> +#endif
> +
> netdev->destructor = dp_dev_free;
> + SET_ETHTOOL_OPS(netdev, &dp_ethtool_ops);
> + netdev->tx_queue_len = 0;
>
> netdev->flags = IFF_BROADCAST | IFF_MULTICAST;
> netdev->features = NETIF_F_LLTX; /* XXX other features? */
> @@ -233,5 +258,9 @@ void dp_dev_destroy(struct net_device *netdev)
>
> int is_dp_dev(struct net_device *netdev)
> {
> +#ifdef HAVE_NET_DEVICE_OPS
> + return netdev->netdev_ops == &dp_dev_netdev_ops;
> +#else
> return netdev->open == dp_dev_open;
> +#endif
> }
> --
> 1.6.3.3
>
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev_openvswitch.org
More information about the dev
mailing list