Generic driver net_device_ops for kernels < 2.6.29.

This commit is contained in:
Florian Pose 2009-11-05 09:37:31 +01:00
parent 3a757b8dcc
commit f3975598ef
1 changed files with 18 additions and 8 deletions

View File

@ -114,11 +114,13 @@ void ec_gen_poll(struct net_device *dev)
/*****************************************************************************/
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29)
static const struct net_device_ops ec_gen_netdev_ops = {
.ndo_open = ec_gen_netdev_open,
.ndo_stop = ec_gen_netdev_stop,
.ndo_start_xmit = ec_gen_netdev_start_xmit,
.ndo_open = ec_gen_netdev_open,
.ndo_stop = ec_gen_netdev_stop,
.ndo_start_xmit = ec_gen_netdev_start_xmit,
};
#endif
/*****************************************************************************/
@ -135,12 +137,20 @@ int ec_gen_device_init(
dev->ecdev = NULL;
dev->socket = NULL;
dev->netdev = alloc_netdev(sizeof(ec_gen_device_t *), &null, ether_setup);
if (!dev->netdev) {
return -ENOMEM;
}
dev->netdev = alloc_netdev(sizeof(ec_gen_device_t *), &null, ether_setup);
if (!dev->netdev) {
return -ENOMEM;
}
memcpy(dev->netdev->dev_addr, real_netdev->dev_addr, ETH_ALEN);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29)
dev->netdev->netdev_ops = &ec_gen_netdev_ops;
#else
dev->netdev->open = ec_gen_netdev_open;
dev->netdev->stop = ec_gen_netdev_stop;
dev->netdev->hard_start_xmit = ec_gen_netdev_start_xmit;
#endif
priv = netdev_priv(dev->netdev);
*priv = dev;
@ -212,7 +222,7 @@ int ec_gen_device_offer(
{
int ret = 0;
dev->ecdev = ecdev_offer(dev->netdev, ec_gen_poll, THIS_MODULE);
dev->ecdev = ecdev_offer(dev->netdev, ec_gen_poll, THIS_MODULE);
if (dev->ecdev) {
if (ec_gen_device_create_socket(dev, real_netdev)) {
ecdev_withdraw(dev->ecdev);