* [PATCH -MM] e1000: rewrite hardware initialization code
@ 2007-01-09 17:36 Auke Kok
2007-01-09 18:33 ` Stephen Hemminger
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Auke Kok @ 2007-01-09 17:36 UTC (permalink / raw)
To: Andrew Morton
Cc: Jeff Garzik, NetDev, Linux Kernel Mailing List, Arjan van de Ven
Andrew, All,
This patch contains a major rewrite to the e1000 driver that groups and separates e1000
hardware by chipset family. It abstracts the hardware specific code into an API that
will allow us to continue to maintain the complex e1000 driver and add new hardware
support to it without touching code that affects older chipsets. It de-complexifies a
significant part of the e1000 driver.
This is the first and largest part of e1000 changes that have been long overdue. Thanks
to Jeb Cramer working on this, as well as our validation team, this code is getting
ready for general consumption. We hope to get started on adding a better way of handling
feature flags and workarounds to the complex e1000 driver quickly.
We're submitting this code to -mm for obvious reasons: we are still testing the code and
want the community feedback on this large change, while giving the linux community an
early chance to test and use the new driver before it goes mainstream.
The patch addresses the following issues:
* separates hardware-specific code by chipset family and provides a single API for all
chipsets (effectively a lib-e1000)
* maintains a single driver for the user, no external changes
* will allow the user in the future to select specific hardware support instead of all
Some cosmetic changes were also made. This driver adds more header and code files to
separate the new parts of the code (chipsets, api, nvm, mac & phy layers). All
whitespace was changed to linux indentation and integer data types were converted to
{u,s}{8,16,32,64} types instead of uintNN_t types.
The total size of the patch is 1.2mb plaintext, and too large to post to any of the
lists. I've provided several ways of receiving the patch:
(1)
git-pull git://lost.foo-projects.org/~ahkok/git/linux-2.6 e1000
The patch here applies against 2.6.20-rc3-mm1.
(2)
http://foo-projects.org/~sofar/e1000_hw_init_layer_rewrite.patch (1.2mb)
or
http://foo-projects.org/~sofar/e1000_hw_init_layer_rewrite.patch.bz2 (162k)
I'll gladly e-mail the patch to anyone who wishes to receive it by e-mail.
Andrew, please pull from our git tree listed above to receive the patch. I expect in the
coming few weeks to provide updates to this patch as issues that come up are resolved.
Cheers,
Auke
---
e1000: rewrite of HW code library
From: Jeb Cramer <cramerj@intel.com>
This rewrite of the hardware initialization code splits up the driver
low-level initialization code per chipset family. Several families exist
with different initialization code per chipset, revision, and this allows
us later to select only enable certain devices in the driver. The current
code enables all previous drivers and thus doesn't change anything to the
user, but is radically different internally.
Mac and phy layers are also split, and everything is grouped in an API
layer that the driver uses to interface the hardware.
Support was added for a PCI-e 4-port Fibre version of the PRO/1000 PT quad
port adapter (device 0x10a5). MTU changes on a downed interface require
a phy commit to enact the new size immediately.
Signed-off-by: Jeb Cramer <cramerj@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
---
drivers/net/e1000/Makefile | 19
drivers/net/e1000/e1000.h | 95
drivers/net/e1000/e1000_80003es2lan.c | 1330 +++++
drivers/net/e1000/e1000_80003es2lan.h | 89
drivers/net/e1000/e1000_82540.c | 586 ++
drivers/net/e1000/e1000_82541.c | 1164 ++++
drivers/net/e1000/e1000_82541.h | 86
drivers/net/e1000/e1000_82542.c | 466 ++
drivers/net/e1000/e1000_82543.c | 1397 +++++
drivers/net/e1000/e1000_82543.h | 45
drivers/net/e1000/e1000_82571.c | 1132 ++++
drivers/net/e1000/e1000_82571.h | 42
drivers/net/e1000/e1000_api.c | 1077 ++++
drivers/net/e1000/e1000_api.h | 159 +
drivers/net/e1000/e1000_defines.h | 1289 +++++
drivers/net/e1000/e1000_ethtool.c | 470 +-
drivers/net/e1000/e1000_hw.c | 9038 ---------------------------------
drivers/net/e1000/e1000_hw.h | 3859 ++------------
drivers/net/e1000/e1000_ich8lan.c | 2353 +++++++++
drivers/net/e1000/e1000_ich8lan.h | 108
drivers/net/e1000/e1000_mac.c | 1921 +++++++
drivers/net/e1000/e1000_mac.h | 84
drivers/net/e1000/e1000_main.c | 1002 ++--
drivers/net/e1000/e1000_manage.c | 387 +
drivers/net/e1000/e1000_manage.h | 83
drivers/net/e1000/e1000_nvm.c | 860 +++
drivers/net/e1000/e1000_nvm.h | 61
drivers/net/e1000/e1000_osdep.h | 56
drivers/net/e1000/e1000_param.c | 115
drivers/net/e1000/e1000_phy.c | 1932 +++++++
drivers/net/e1000/e1000_phy.h | 157 +
drivers/net/e1000/e1000_regs.h | 236 +
32 files changed, 18538 insertions(+), 13160 deletions(-)
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH -MM] e1000: rewrite hardware initialization code
2007-01-09 17:36 [PATCH -MM] e1000: rewrite hardware initialization code Auke Kok
@ 2007-01-09 18:33 ` Stephen Hemminger
2007-01-09 18:48 ` Auke Kok
2007-01-09 18:45 ` Andrew Morton
2007-01-09 19:16 ` Krzysztof Halasa
2 siblings, 1 reply; 9+ messages in thread
From: Stephen Hemminger @ 2007-01-09 18:33 UTC (permalink / raw)
To: Auke Kok
Cc: Andrew Morton, Jeff Garzik, NetDev, Linux Kernel Mailing List,
Arjan van de Ven
On Tue, 09 Jan 2007 09:36:29 -0800
Auke Kok <auke-jan.h.kok@intel.com> wrote:
>
> Andrew, All,
>
> This patch contains a major rewrite to the e1000 driver that groups and separates e1000
> hardware by chipset family. It abstracts the hardware specific code into an API that
> will allow us to continue to maintain the complex e1000 driver and add new hardware
> support to it without touching code that affects older chipsets.
Thats good. but:
> drivers/net/e1000/Makefile | 19
> drivers/net/e1000/e1000.h | 95
> drivers/net/e1000/e1000_80003es2lan.c | 1330 +++++
> drivers/net/e1000/e1000_80003es2lan.h | 89
> drivers/net/e1000/e1000_82540.c | 586 ++
> drivers/net/e1000/e1000_82541.c | 1164 ++++
> drivers/net/e1000/e1000_82541.h | 86
> drivers/net/e1000/e1000_82542.c | 466 ++
> drivers/net/e1000/e1000_82543.c | 1397 +++++
> drivers/net/e1000/e1000_82543.h | 45
> drivers/net/e1000/e1000_82571.c | 1132 ++++
> drivers/net/e1000/e1000_82571.h | 42
> drivers/net/e1000/e1000_api.c | 1077 ++++
> drivers/net/e1000/e1000_api.h | 159 +
> drivers/net/e1000/e1000_defines.h | 1289 +++++
> drivers/net/e1000/e1000_ethtool.c | 470 +-
> drivers/net/e1000/e1000_hw.c | 9038 ---------------------------------
> drivers/net/e1000/e1000_hw.h | 3859 ++------------
> drivers/net/e1000/e1000_ich8lan.c | 2353 +++++++++
> drivers/net/e1000/e1000_ich8lan.h | 108
> drivers/net/e1000/e1000_mac.c | 1921 +++++++
> drivers/net/e1000/e1000_mac.h | 84
> drivers/net/e1000/e1000_main.c | 1002 ++--
> drivers/net/e1000/e1000_manage.c | 387 +
> drivers/net/e1000/e1000_manage.h | 83
> drivers/net/e1000/e1000_nvm.c | 860 +++
> drivers/net/e1000/e1000_nvm.h | 61
> drivers/net/e1000/e1000_osdep.h | 56
> drivers/net/e1000/e1000_param.c | 115
> drivers/net/e1000/e1000_phy.c | 1932 +++++++
> drivers/net/e1000/e1000_phy.h | 157 +
> drivers/net/e1000/e1000_regs.h | 236 +
> 32 files changed, 18538 insertions(+), 13160 deletions(-)
Is lots of little files really progress?
--
Stephen Hemminger <shemminger@osdl.org>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH -MM] e1000: rewrite hardware initialization code
2007-01-09 17:36 [PATCH -MM] e1000: rewrite hardware initialization code Auke Kok
2007-01-09 18:33 ` Stephen Hemminger
@ 2007-01-09 18:45 ` Andrew Morton
2007-01-09 19:10 ` Auke Kok
2007-01-09 22:24 ` Auke Kok
2007-01-09 19:16 ` Krzysztof Halasa
2 siblings, 2 replies; 9+ messages in thread
From: Andrew Morton @ 2007-01-09 18:45 UTC (permalink / raw)
To: Auke Kok; +Cc: Jeff Garzik, NetDev, Linux Kernel Mailing List, Arjan van de Ven
On Tue, 09 Jan 2007 09:36:29 -0800
Auke Kok <auke-jan.h.kok@intel.com> wrote:
> git-pull git://lost.foo-projects.org/~ahkok/git/linux-2.6 e1000
That tree appears to be based on the -mm git tree?
That's a somewhat unusual thing to do - a tree which is based on current
Linus mainline would be preferred, please. Or on Jeff's netdev tree.
Thanks.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH -MM] e1000: rewrite hardware initialization code
2007-01-09 18:33 ` Stephen Hemminger
@ 2007-01-09 18:48 ` Auke Kok
0 siblings, 0 replies; 9+ messages in thread
From: Auke Kok @ 2007-01-09 18:48 UTC (permalink / raw)
To: Stephen Hemminger
Cc: Andrew Morton, Jeff Garzik, NetDev, Linux Kernel Mailing List,
Arjan van de Ven
Stephen Hemminger wrote:
> On Tue, 09 Jan 2007 09:36:29 -0800
> Auke Kok <auke-jan.h.kok@intel.com> wrote:
>
>> Andrew, All,
>>
>> This patch contains a major rewrite to the e1000 driver that groups and separates e1000
>> hardware by chipset family. It abstracts the hardware specific code into an API that
>> will allow us to continue to maintain the complex e1000 driver and add new hardware
>> support to it without touching code that affects older chipsets.
>
> Thats good. but:
>
>> drivers/net/e1000/Makefile | 19
>> drivers/net/e1000/e1000.h | 95
>> drivers/net/e1000/e1000_80003es2lan.c | 1330 +++++
>> drivers/net/e1000/e1000_80003es2lan.h | 89
>> drivers/net/e1000/e1000_82540.c | 586 ++
>> drivers/net/e1000/e1000_82541.c | 1164 ++++
>> drivers/net/e1000/e1000_82541.h | 86
>> drivers/net/e1000/e1000_82542.c | 466 ++
>> drivers/net/e1000/e1000_82543.c | 1397 +++++
>> drivers/net/e1000/e1000_82543.h | 45
>> drivers/net/e1000/e1000_82571.c | 1132 ++++
>> drivers/net/e1000/e1000_82571.h | 42
>> drivers/net/e1000/e1000_api.c | 1077 ++++
>> drivers/net/e1000/e1000_api.h | 159 +
>> drivers/net/e1000/e1000_defines.h | 1289 +++++
>> drivers/net/e1000/e1000_ethtool.c | 470 +-
>> drivers/net/e1000/e1000_hw.c | 9038 ---------------------------------
>> drivers/net/e1000/e1000_hw.h | 3859 ++------------
>> drivers/net/e1000/e1000_ich8lan.c | 2353 +++++++++
>> drivers/net/e1000/e1000_ich8lan.h | 108
>> drivers/net/e1000/e1000_mac.c | 1921 +++++++
>> drivers/net/e1000/e1000_mac.h | 84
>> drivers/net/e1000/e1000_main.c | 1002 ++--
>> drivers/net/e1000/e1000_manage.c | 387 +
>> drivers/net/e1000/e1000_manage.h | 83
>> drivers/net/e1000/e1000_nvm.c | 860 +++
>> drivers/net/e1000/e1000_nvm.h | 61
>> drivers/net/e1000/e1000_osdep.h | 56
>> drivers/net/e1000/e1000_param.c | 115
>> drivers/net/e1000/e1000_phy.c | 1932 +++++++
>> drivers/net/e1000/e1000_phy.h | 157 +
>> drivers/net/e1000/e1000_regs.h | 236 +
>> 32 files changed, 18538 insertions(+), 13160 deletions(-)
>
> Is lots of little files really progress?
>
I can think of a few files that we could merge myself, but we really wanted to get away
from the two large (e1000_hw) files that we had, which was far worse.
We're open to suggestions as to reduce the amount of files, but since e1000 has it's own
subdirectory, and supports a large amount of files, I think we're in the right direction
with the amount. We approached it this from a rather superfluous amount of files
standpoint knowing we can merge some later anyway.
One thing we've contemplated ourselves was to merge the smaller .h files into the .c
files where applicable, so your comment goes duly noted
Thanks,
Auke
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH -MM] e1000: rewrite hardware initialization code
2007-01-09 18:45 ` Andrew Morton
@ 2007-01-09 19:10 ` Auke Kok
2007-01-09 22:24 ` Auke Kok
1 sibling, 0 replies; 9+ messages in thread
From: Auke Kok @ 2007-01-09 19:10 UTC (permalink / raw)
To: Andrew Morton
Cc: Auke Kok, Jeff Garzik, NetDev, Linux Kernel Mailing List,
Arjan van de Ven
Andrew Morton wrote:
> On Tue, 09 Jan 2007 09:36:29 -0800
> Auke Kok <auke-jan.h.kok@intel.com> wrote:
>
>> git-pull git://lost.foo-projects.org/~ahkok/git/linux-2.6 e1000
>
> That tree appears to be based on the -mm git tree?
>
> That's a somewhat unusual thing to do - a tree which is based on current
> Linus mainline would be preferred, please. Or on Jeff's netdev tree.
those are not in sync atm, but I'll get you one against Jeff's upstream tree, that'll
take a minute, or five.
Auke
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH -MM] e1000: rewrite hardware initialization code
2007-01-09 17:36 [PATCH -MM] e1000: rewrite hardware initialization code Auke Kok
2007-01-09 18:33 ` Stephen Hemminger
2007-01-09 18:45 ` Andrew Morton
@ 2007-01-09 19:16 ` Krzysztof Halasa
2007-01-09 19:24 ` Randy Dunlap
2 siblings, 1 reply; 9+ messages in thread
From: Krzysztof Halasa @ 2007-01-09 19:16 UTC (permalink / raw)
To: Auke Kok
Cc: Andrew Morton, Jeff Garzik, NetDev, Linux Kernel Mailing List,
Arjan van de Ven
Auke Kok <auke-jan.h.kok@intel.com> writes:
> drivers/net/e1000/Makefile | 19
> drivers/net/e1000/e1000.h | 95
> drivers/net/e1000/e1000_80003es2lan.c | 1330 +++++
> drivers/net/e1000/e1000_80003es2lan.h | 89
> drivers/net/e1000/e1000_82540.c | 586 ++
> drivers/net/e1000/e1000_82541.c | 1164 ++++
> drivers/net/e1000/e1000_82541.h | 86
> drivers/net/e1000/e1000_82542.c | 466 ++
> drivers/net/e1000/e1000_82543.c | 1397 +++++
> drivers/net/e1000/e1000_82543.h | 45
> drivers/net/e1000/e1000_82571.c | 1132 ++++
> drivers/net/e1000/e1000_82571.h | 42
Perhaps the "e1000_" prefix could be dropped as redundant?
--
Krzysztof Halasa
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH -MM] e1000: rewrite hardware initialization code
2007-01-09 19:16 ` Krzysztof Halasa
@ 2007-01-09 19:24 ` Randy Dunlap
2007-01-09 19:45 ` Auke Kok
0 siblings, 1 reply; 9+ messages in thread
From: Randy Dunlap @ 2007-01-09 19:24 UTC (permalink / raw)
To: Krzysztof Halasa
Cc: Auke Kok, Andrew Morton, Jeff Garzik, NetDev,
Linux Kernel Mailing List, Arjan van de Ven
On Tue, 09 Jan 2007 20:16:27 +0100 Krzysztof Halasa wrote:
> Auke Kok <auke-jan.h.kok@intel.com> writes:
>
> > drivers/net/e1000/Makefile | 19
> > drivers/net/e1000/e1000.h | 95
> > drivers/net/e1000/e1000_80003es2lan.c | 1330 +++++
> > drivers/net/e1000/e1000_80003es2lan.h | 89
> > drivers/net/e1000/e1000_82540.c | 586 ++
> > drivers/net/e1000/e1000_82541.c | 1164 ++++
> > drivers/net/e1000/e1000_82541.h | 86
> > drivers/net/e1000/e1000_82542.c | 466 ++
> > drivers/net/e1000/e1000_82543.c | 1397 +++++
> > drivers/net/e1000/e1000_82543.h | 45
> > drivers/net/e1000/e1000_82571.c | 1132 ++++
> > drivers/net/e1000/e1000_82571.h | 42
>
> Perhaps the "e1000_" prefix could be dropped as redundant?
> --
Yes, that suggestion would agree with what Linus told us about
usb file names 7 years ago. (huh? that long?)
---
~Randy
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH -MM] e1000: rewrite hardware initialization code
2007-01-09 19:24 ` Randy Dunlap
@ 2007-01-09 19:45 ` Auke Kok
0 siblings, 0 replies; 9+ messages in thread
From: Auke Kok @ 2007-01-09 19:45 UTC (permalink / raw)
To: Randy Dunlap
Cc: Krzysztof Halasa, Auke Kok, Andrew Morton, Jeff Garzik, NetDev,
Linux Kernel Mailing List, Arjan van de Ven
Randy Dunlap wrote:
> On Tue, 09 Jan 2007 20:16:27 +0100 Krzysztof Halasa wrote:
>
>> Auke Kok <auke-jan.h.kok@intel.com> writes:
>>
>>> drivers/net/e1000/Makefile | 19
>>> drivers/net/e1000/e1000.h | 95
>>> drivers/net/e1000/e1000_80003es2lan.c | 1330 +++++
>>> drivers/net/e1000/e1000_80003es2lan.h | 89
>>> drivers/net/e1000/e1000_82540.c | 586 ++
>>> drivers/net/e1000/e1000_82541.c | 1164 ++++
>>> drivers/net/e1000/e1000_82541.h | 86
>>> drivers/net/e1000/e1000_82542.c | 466 ++
>>> drivers/net/e1000/e1000_82543.c | 1397 +++++
>>> drivers/net/e1000/e1000_82543.h | 45
>>> drivers/net/e1000/e1000_82571.c | 1132 ++++
>>> drivers/net/e1000/e1000_82571.h | 42
>> Perhaps the "e1000_" prefix could be dropped as redundant?
>> --
>
> Yes, that suggestion would agree with what Linus told us about
> usb file names 7 years ago. (huh? that long?)
You'll have to excuse me that I don't remember that anymore, but I'll note the
suggestion and see what the team thinks.
Thanks,
Auke
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH -MM] e1000: rewrite hardware initialization code
2007-01-09 18:45 ` Andrew Morton
2007-01-09 19:10 ` Auke Kok
@ 2007-01-09 22:24 ` Auke Kok
1 sibling, 0 replies; 9+ messages in thread
From: Auke Kok @ 2007-01-09 22:24 UTC (permalink / raw)
To: Andrew Morton
Cc: Jeff Garzik, NetDev, Linux Kernel Mailing List, Arjan van de Ven
Andrew Morton wrote:
> On Tue, 09 Jan 2007 09:36:29 -0800
> Auke Kok <auke-jan.h.kok@intel.com> wrote:
>
>> git-pull git://lost.foo-projects.org/~ahkok/git/linux-2.6 e1000
>
> That tree appears to be based on the -mm git tree?
>
> That's a somewhat unusual thing to do - a tree which is based on current
> Linus mainline would be preferred, please. Or on Jeff's netdev tree.
An updated patch is available from git, and applies against netdev-2.6's upstream branch
(as of commit 77aab8bf22042d1658d4adbca8b71779e7f2d0ff )
git-pull git://lost.foo-projects.org/~ahkok/git/netdev-2.6 e1000
Again, also available per http:
http://foo-projects.org/~sofar/e1000_hw_init_layer_rewrite-v2-upstream.patch
http://foo-projects.org/~sofar/e1000_hw_init_layer_rewrite-v2-upstream.patch.bz2
This version contains a few minor adjustments and updates to the one posted earlier this
morning (and replaces that patch):
1) 82541 bitmask issue
2) 80003es2lan timeout value fix
3) added some more kdoc headers to functions
4) removed #ifdef NETIF_F_TSO6 forgotten by cleanup patch
I hope this patch works for everyone, please let me know if there are still problems.
Cheers,
Auke
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2007-01-09 22:24 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-01-09 17:36 [PATCH -MM] e1000: rewrite hardware initialization code Auke Kok
2007-01-09 18:33 ` Stephen Hemminger
2007-01-09 18:48 ` Auke Kok
2007-01-09 18:45 ` Andrew Morton
2007-01-09 19:10 ` Auke Kok
2007-01-09 22:24 ` Auke Kok
2007-01-09 19:16 ` Krzysztof Halasa
2007-01-09 19:24 ` Randy Dunlap
2007-01-09 19:45 ` Auke Kok
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).