#include <linux/netdevice.h>
#include <asm/uaccess.h>
-/*
+/*
* Some useful ethtool_ops methods that're device independent.
* If we find that all drivers want to do the same thing here,
* we can turn these into dev_() function calls.
return 0;
}
+
+int ethtool_op_set_tx_ipv6_csum(struct net_device *dev, u32 data)
+{
+ if (data)
+ dev->features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM;
+ else
+ dev->features &= ~(NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM);
+
+ return 0;
+}
+
u32 ethtool_op_get_sg(struct net_device *dev)
{
return (dev->features & NETIF_F_SG) != 0;
unsigned char len = dev->addr_len;
if ( addr->size < len )
return -ETOOSMALL;
-
+
addr->size = len;
memcpy(data, dev->perm_addr, len);
return 0;
}
-
+
u32 ethtool_op_get_ufo(struct net_device *dev)
{
if (copy_from_user(&edata, useraddr, sizeof(edata)))
return -EFAULT;
- if (edata.data &&
+ if (edata.data &&
!(dev->features & NETIF_F_ALL_CSUM))
return -EINVAL;
return -EPERM;
}
- if(dev->ethtool_ops->begin)
+ if (dev->ethtool_ops->begin)
if ((rc = dev->ethtool_ops->begin(dev)) < 0)
return rc;
default:
rc = -EOPNOTSUPP;
}
-
- if(dev->ethtool_ops->complete)
+
+ if (dev->ethtool_ops->complete)
dev->ethtool_ops->complete(dev);
if (old_features != dev->features)
EXPORT_SYMBOL(ethtool_op_set_tso);
EXPORT_SYMBOL(ethtool_op_set_tx_csum);
EXPORT_SYMBOL(ethtool_op_set_tx_hw_csum);
+EXPORT_SYMBOL(ethtool_op_set_tx_ipv6_csum);
EXPORT_SYMBOL(ethtool_op_set_ufo);
EXPORT_SYMBOL(ethtool_op_get_ufo);