2003-08-17 18:38:50

by Jeff Garzik

[permalink] [raw]
Subject: [bk patches] add ethtool_ops to net drivers

Linus,

In order to maintain backwards compatibility and minimize impact,
netdev_ops mentioned at KS was scaled back to ethtool_ops. This allows
driver-at-a-time replacement often-duplicated ioctl handling code with a
Linux-style foo_ops set of function pointers.

Also, I've been waiting on this patch to begin attacking the stack
usage problems that often occur in ethtool ioctl handlers. Since gcc
sums instead of unions disjoint stack scopes (gcc bug #9997), huge
functions that handle a bunch of ioctls wind up eating way more stack
space than the programmer (rightfully) intended. ethtool_ops not
only makes a driver smaller, but it also neatly eliminates the stack
usage problem.

I much prefer this scaled back approach, which doesn't break anything,
and DaveM is ok with it as well. Please apply.


BitKeeper repo:

bk pull http://gkernel.bkbits.net/ethtool-2.6

Patch is also available from

ftp://ftp.kernel.org/pub/linux/kernel/people/jgarzik/patchkits/2.6/2.6.0-test3-bk5-ethtool1.patch.bz2

This will update the following files:

drivers/net/tg3.c | 664 +++++++++++++++++++--------------------------
include/linux/ethtool.h | 99 ++++++
include/linux/netdevice.h | 9
net/core/Makefile | 4
net/core/dev.c | 16 -
net/core/ethtool.c | 672 ++++++++++++++++++++++++++++++++++++++++++++++
6 files changed, 1076 insertions(+), 388 deletions(-)

through these ChangeSets:

<[email protected]> (03/08/07 1.1119.10.3)
[netdrvr] add SET_ETHTOOL_OPS back-compat hook

<[email protected]> (03/08/07 1.1119.10.2)
[netdrvr tg3] convert to using ethtool_ops

<[email protected]> (03/08/07 1.1119.10.1)
[netdrvr] add ethtool_ops to struct net_device, and associated infrastructure

Contributed by Matthew Wilcox.


2003-08-18 06:21:38

by David Miller

[permalink] [raw]
Subject: Re: [bk patches] add ethtool_ops to net drivers

On Mon, 18 Aug 2003 00:15:11 -0600
Val Henson <[email protected]> wrote:

> I needed the following patch to compile netsyms.c - just a missing
> include.

It's already in Linus's tree.

2003-08-18 06:16:42

by Valerie Henson

[permalink] [raw]
Subject: Re: [bk patches] add ethtool_ops to net drivers

I needed the following patch to compile netsyms.c - just a missing
include.

Thanks,

-VAL

# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
# ChangeSet 1.1214 -> 1.1215
# net/netsyms.c 1.93 -> 1.94
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 03/08/17 [email protected] 1.1215
# Add missing include for ethtool ops
# --------------------------------------------
#
diff -Nru a/net/netsyms.c b/net/netsyms.c
--- a/net/netsyms.c Sun Aug 17 20:26:07 2003
+++ b/net/netsyms.c Sun Aug 17 20:26:07 2003
@@ -626,6 +626,7 @@
EXPORT_SYMBOL(linkwatch_fire_event);

/* ethtool.c */
+#include <linux/ethtool.h>
EXPORT_SYMBOL(ethtool_op_get_link);
EXPORT_SYMBOL(ethtool_op_get_tx_csum);
EXPORT_SYMBOL(ethtool_op_get_sg);