> Right now, each network driver which supports the ethtool > ioctl has its own implementation of everything from decoding > which ethtool ioctl it is, copying data to and from > userspace, marshalling and unmarshalling data from ethtool > packets, etc. The current setup makes it impossible to use > alternative interfaces to get at the same data (eg sysfs) and > it's not exactly typesafe. This is really cool! Thanks for doing this Matthew. Some questions: * On get_gregs, for example, would it make sense to ->get_drvinfo so you'll know regdump_len and therefore can kmalloc an ethtool_regs with enough space to pass to ->get_regs? Keep the kmalloc and kfree together. Same for self_test, get_strings, and get_stats. For get_strings, size = max{n_stats, testinfo_len)*sizeof(u64). * If the above is done, can we have one function type for the ethtool_ops functions? int f(struct netdev *, struct ethtool_cmd *). The drawback is the driver needs to cast to the specific ethtool_* struct. * Can we get an HAVE_ETHTOOL_OPS defined in netdevice.h to support backward compat? -scott - : send the line "unsubscribe linux-net" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html