The changelog after March 2005 can be obtained from the git repository
at <git://git.kernel.org/pub/scm/network/ethtool/ethtool.git>.

The changelog after version 2 up to March 2005 can be obtained from the
BitKeeper repository at <bk://gkernel.bkbits.net/ethtool>.


Tue Aug 17 2004  Jeff Garzik <jgarzik@pobox.com>

	* NEWS, configure.ac:  Release version 2

Fri Jul  2 2004  Jeff Garzik <jgarzik@pobox.com>

	Merged
	* fec_8xx.c, ethtool-util.h, Makefile.am: Add fec_8xx register dump.
	Contributed by Pantelis Antoniou <panto@intracom.gr>

	* Update ethtool.c to iterate through a list of drivers
	* Fixed fec_8xx.c warnings on 64-bit

Fri Jul  2 2004  Jim Lewis <jim@jklewis.com>

	* pcnet32.c, ethtool-util.h, Makefile.am: Add pcnet32 register dump.

Fri Apr  9 2004  Jason Lunz <lunz@reflexsecurity.com>

	* ethtool.c: Remove incorrect restriction on ethernet interface
	names.

Fri Apr  9 2004  OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>

	* ethtool.c: This fixes the bogus tail backslash that I did.

Fri Apr  9 2004  Jim Lewis <jim@jklewis.com>

	* ethtool.c:  Return results of self-test back to OS,
	via exit(2).

Fri Apr  9 2004  Jeb Cramer  <cramerj@intel.com>

	* e1000.c: Update device id list and add printout of phy type in
	register dump.  Set default mac_type to 82543 since register offsets
	haven't changed.

Fri Apr  9 2004  Jeff Garzik  <jgarzik@pobox.com>

	* configure.ac, Makefile.am, ethtool.c, etc.:
	convert to more recent autoconf.

Sat Aug 30 2003  OGAWA Hirofumi  <hirofumi@mail.parknet.co.jp>

	* ethtool.8, ethtool.c: ethtool register dump raw mode

Sat Jul 19 2003  Scott Feldman  <scott.feldman@intel.com>

	* ethtool.8, ethtool.c, ethtool-copy.h:
	Add support for TSO get/set.  Corresponds to NETIF_F_TSO.
	Extended -k|K option to included tso, and changed meaning from
	just "checksum/sg" to more general "offload".  Now covers Rx/Tx
	csum, SG, and TSO.

Thu May 28 2003  Ganesh Venkatesan  <ganesh.venkatesan@intel.com>

	* ethtool-copy.h: new definitions for 10GbE

Thu May 28 2003  Scott Feldman  <scott.feldman@intel.com>

	* ethtool.c: Add ethtool -E to write EEPROM byte.
	* e100.c: Added MDI/MDI-X status to register dump.

Thu May 28 2003   Reeja John  <reeja.john@amd.com>

	* amd8111e.c: new file, support for AMD-8111e NICs
	* ethtool.c: properly set ecmd.advertising

Sat Mar 29 2003   OGAWA Hirofumi  <hirofumi@mail.parknet.co.jp>

	* realtek.c: clean up chip enumeration, support additional chips

Fri Mar 28 2003   Jeb Cramer  <cramerj@intel.com>

	* e1000.c: Update supported devices (82541 & 82547).  Add bus type,
	speed and width to register dump printout.
	* ethtool.c (show_usage): Add -S to printout of supported commands.

Tue Jan 22 2003   Jeff Garzik  <jgarzik@pobox.com>

	* natsemi.c (PRINT_INTR, __print_intr): Decompose PRINT_INTR
	macro into macro abuse and function call portions.  Move the
	actual function body to new static functoin __print_intr.

	This eliminates the annoying build warning :)

Thu Jan 16 2003   Jeb Cramer  <jeb.j.cramer@intel.com>

	* ethtool.c (do_regs, dump_eeprom): Fix memory leaks on failed
	operations.  Add error handling of dump_regs().  Modify printout of
	eeprom dump to accomodate larger eeproms.
	* e1000.c: Update supported devices.  Add error conditions for
	unsupported devices.

Mon Oct 21 2002   Ben Collins  <bcollins@debian.org>

	* ethtool.c: Add new parameters to -e, for raw EEPROM output, and
	offset and length options.
	* natsemi.c (natsemi_dump_eeprom): Show correct offset using new
	offset feature above.
	* tg3.c: New file, implements tg3_dump_eeprom.
	* Makefile.am: Add it to the build sources.
	* ethtool-util.h: Prototype tg3_dump_eeprom.
	* ethtool.8: Document new -e options.

Thu Oct 17 2002   Tim Hockin  <thockin@sun.com>

	* ethtool.c: make calls to strtol() use base 0

Wed Sep 18 2002   Scott Feldman  <scott.feldman@intel.com>

	* ethtool.c (dump_regs): call e100_dump_regs if e100
	* e100.c: new file
	* ethtool-util.h: prototype e100_dump_regs

Thu Jun 20 2002   Jeff Garzik  <jgarzik@mandrakesoft.com>

	* ethtool.8: document new -S stats dump argument
	* configure.in, NEWS: release version 1.6

Fri Jun 14 2002   Jeff Garzik  <jgarzik@mandrakesoft.com>

	* realtek.c (realtek_dump_regs): dump legacy 8139 registers
	* ethtool.c (do_gstats, doit, parse_cmdline):
	support dumping of NIC-specific statistics

Fri Jun 14 2002   Jeff Garzik  <jgarzik@mandrakesoft.com>

	* realtek.c (realtek_dump_regs): dump RTL8139C+ registers

Fri Jun 14 2002   Jeff Garzik  <jgarzik@mandrakesoft.com>

	* realtek.c: new file, dumps RealTek RTL8169 PCI NIC's registers
	* Makefile.am, ethtool.c, ethtool-util.h: use it

Tue Jun 11 2002   Jeff Garzik  <jgarzik@mandrakesoft.com>

	* NEWS: list new commands added recently
	* ethtool.c (do_gcoalesce, do_scoalesce, dump_coalesce): new
	(parse_cmdline, doit): handle get/set coalesce parameters (-c,-C)
	(do_[gs]*): convert to use table-driven cmd line parsing
	* ethtool.8: document -c and -C

Tue Jun 11 2002   Jeff Garzik  <jgarzik@mandrakesoft.com>

	* ethtool.c (do_gring, do_sring, dump_ring,
	parse_ring_cmdline): new functions
	(parse_cmdline, doit): handle get/set ring parameters (-g,-G)
	(do_spause): fix off-by-one bugs
	* ethtool.8: document -g and -G

Tue Jun 11 2002   Jeff Garzik  <jgarzik@mandrakesoft.com>

	* ethtool.c (do_gpause, do_spause, dump_pause,
	parse_pause_cmdline): new functions
	(parse_cmdline, doit): handle get/set pause parameters (-a,-A)
	* ethtool.8: document -a, -A, -e, and -p

Wed May 22 2002  Chris Leech <christopher.leech@intel.com>
            Scott Feldman <scott.feldman@intel.com>

	* ethtool-copy.h: add support for ETHTOOL_PHYS_ID function.
	* ethtool.c: add support for ETHTOOL_PHYS_ID function, add
	  support for e1000 reg dump.
	* Makefile.am: add e1000.c
	* e1000.c: reg dump support for Intel(R) PRO/1000 adapters.
	* ethtool-util.h: add e1000 reg dump support.

Sat May 11 2002  Eli Kupermann  <eli.kupermann@intel.com>

	* ethtool.c (do_test): add support for online/offline test modes
	Elsewhere: document "-t" arg usage, and handle usage

Sat May 11 2002  Jes Sorensen  <jes@wildopensource.com>

	* ethtool.c (dump_ecmd): If unknown value is
	encountered in speed, duplex, or port ETHTOOL_GSET
	return data, print the numeric value returned.

Wed May 1 2002  Eli Kupermann  <eli.kupermann@intel.com>

	* ethtool.8: document new -t test option

Wed May 1 2002  Christoph Hellwig  <hch@lst.de>

	* Makefile.am (dist-hook): Use $(top-srcdir) for refering to sources.

Mon Apr 29 2002  Christoph Hellwig  <hch@lst.de>

	* Makefile.am (SUBDIRS): Remove.
	(RPMSRCS): Likewise.
	(TMPDIR): Likewise.
	(rpm): Likewise.
	(EXTRA_DIST): Add ethtool.spec.in.
	(dist-hook): New rule.  Create rpm specfile.
	* configure.in (AC_OUTPUT): Add ethtool.spec.
	* ethtool.spec.in: New file.  Rpm specfile template.
	* redhat/ethtool.spec.in: Removed.
	* redhat/Makefile.am: Removed.

Wed Mar 20 2002   Jeff Garzik  <jgarzik@mandrakesoft.com>

	* ethtool-copy.h: Merge coalescing param, ring
	param, and pause param ioctl structs from kernel 2.5.7.
	Merge ethtool_test changes fromkernel 2.5.7.
	* ethtool: Update for ethtool_test cleanups.

Wed Mar 20 2002   Eli Kupermann  <eli.kupermann@intel.com>

	* ethtool.c: (do_test): new function
	Elsewhere: add support for 'perform test' function,
	via a new "-t" arg, by calling do_test.

Sun Mar  3 2002   Brad Hards  <bhards@bigpond.net.au>

	* ethtool.c (parse_cmdline): Support "usb"
	as well as "eth" network interfaces.  USB networking
	uses a different prefix.

Fri Feb  8 2002  "Noam, Amir" <amir.noam@intel.com>,
		 "Kupermann, Eli" <eli.kupermann@intel.com>

	* ethtool.c (dump_advertised): new function.
	(dump_ecmd): Call it.
	Elsewhere: reformat code.

Wed Nov 28 2001  Jeff Garzik  <jgarzik@mandrakesoft.com>

	* configure.in, Makefile.am, redhat/Makefile.am:
	make sure redhat spec is included in dist tarball.

Tue Nov 27 2001  Tim Hockin  <thockin@sun.com>

	* natsemi.c: strings changes
	* ethtool.c: print messagelevel as hex (netif_msg_* shows better :)

Sun Nov 18 2001  Jeff Garzik  <jgarzik@mandrakesoft.com>

	* NEWS: update with recent changes
	* ethtool.8: phy address can be used if implemented in the
	  driver, so remove "Not used yet" remark.

Sun Nov 18 2001  Jeff Garzik  <jgarzik@mandrakesoft.com>

	* Makefile.am, de2104x.c, ethtool-util.h, ethtool.c:
	  Support register dumps for de2104x driver.

Tue Nov 13 2001  Tim Hockin  <thockin@sun.com>

	* natsemi.c, ethtool.c: use u8 data for ethtool_regs
	* ethtool-copy.h: latest from kernel
	* natsemi.c, ethtool.c: support ETHTOOL_GEEPROM via -e param

Mon Nov 12 2001  Tim Hockin  <thockin@sun.com>

	* natsemi.c: check version, conditionally print RFCR-indexed data

Wed Nov 07 2001  Tim Hockin  <thockin@sun.com>

	* ethtool.c: print less errors for unsupported ioctl()s
	* ethtool.c: warn if all ioctl()s are unsupported or failed
	* ethtool.c: change autoneg-restart mechanism to -r (as per jgarzik)
	* ethtool.c: check for "eth" in devicename (per jg)
	* ethtool.c: remove 'extraneous' braces

Wed Nov 07 2001  Jeff Garzik  <jgarzik@mandrakesoft.com>

	* ethtool.c, ethtool.8: support bnc port/media

Tue Nov 06 2001  Tim Hockin  <thockin@sun.com>

	* ethtool.c: clean up output for unhandled register dumps
	* natsemi.c: finish pretty-printing register dumps
	* ethtool.8: document -d option
	* various: add copyright info, where applicable
	* ethtool.c: be nicer about unsupported ioctl()s where possible
	  and be more verbose where nice is not an option.

Mon Nov 05 2001  Tim Hockin  <thockin@sun.com>

	* natsemi.c: first cut at 'pretty-printing' register dumps

Fri Nov 02 2001  Tim Hockin  <thockin@sun.com>

	* ethtool.c: add support for ETHTOOL_GREGS via -d (dump) flag
	* ethtool.c: add support for device-specific dumps for known devices
	* ethtool.c: make mode-specific handling allocate ifr_data
	* Makefile.am: import ChangeLog to rpm specfile
	* natsemi.c: added
	* ethtool-util.h: added

Thu Nov 01 2001  Tim Hockin  <thockin@sun.com>

	* ethtool.c: add support for ETHTOOL_GLINK in output
	* ethtool.c: add support for ETHTOOL_NWAY_RST via 'autoneg restart'
	* ethtool.c: add support for ETHTOOL_[GS]MSGLVL via 'msglvl' param
	* ethtool.8: add documentation for above
	* ethtool-copy.h: updated to sync with kernel

Fri Oct 26 2001  Jeff Garzik  <jgarzik@mandrakesoft.com>

	* ethtool.8: Update contributors list, home page URL.
	* ethtool.8: Much cleanup, no content change.
	Contributed by Andre Majorel.
	* ethtool.c: Clean up '-h' usage message.
	Contributed by Andre Majorel.

Fri Oct 26 2001  Jeff Garzik  <jgarzik@mandrakesoft.com>

	* Configure.in: bump version to 1.4cvs
	* Makefile.am: include ethtool-copy.h in list of sources
	* ethtool-copy.h:
	Import ethtool.h from kernel 2.4.13.
	* ethtool.c:
	Define SIOCETHTOOL if it is missing,
	trim trailing whitespace.
	* NEWS: update for these changes

Wed Sep 19 2001  Jeff Garzik  <jgarzik@mandrakesoft.com>

	* ethtool.c, ethtool-copy.h:
	Import copy of kernel 2.4.10-pre12's ethtool.h.

Wed Sep 19 2001  Tim Hockin  <thockin@sun.com>

	* Makefile.am, redhat/ethtool.spec.in:
	Basic "make rpm" support.

Wed Sep 19 2001  Tim Hockin  <thockin@sun.com>

	* AUTHORS, NEWS, ethtool.8, ethtool.c:
	Wake-on-LAN support.

Thu May 17 2001  Jeff Garzik  <jgarzik@mandrakesoft.com>

	* configure.in, NEWS, README: Version 1.2 release

	* ethtool.c: Support ETHTOOL_GDRVINFO.
	* ethtool.8: Document it.

Fri Mar 20 2001  Jeff Garzik  <jgarzik@mandrakesoft.com>

	* Makefile.am, configure.in, autogen.sh, NEWS,
	  ChangeLog, AUTHORS, README:
	  Add autoconf/automake support.

