netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: James Chapman <jchapman@katalix.com>
To: "Kok, Auke" <auke-jan.h.kok@intel.com>
Cc: Jeff Garzik <jeff@garzik.org>,
	netdev@vger.kernel.org, Andrew Morton <akpm@linux-foundation.org>,
	Jason Lunz <lunz@reflexsecurity.com>,
	Mark McLoughlin <markmc@redhat.com>,
	e1000-devel@lists.sourceforge.net,
	Arjan van de Ven <arjan@linux.intel.com>,
	"Ronciak, John" <john.ronciak@intel.com>
Subject: Re: RFR: New e1000 driver (e1000new), was: Re: e1000: backport ich9 support from 7.5.5 ?
Date: Sat, 07 Jul 2007 13:23:11 +0100	[thread overview]
Message-ID: <468F85AF.3010603@katalix.com> (raw)
In-Reply-To: <468EDAC4.8070300@intel.com>

Kok, Auke wrote:
> Jeff Garzik wrote:
>> * The multitude of tiny, fine-grained operations for MAC, NVM, PHY, 
>> etc. is a signal that organization is backwards.  You should be 
>> creating hardware-specific high level operations (PHY layer hooks, 
>> net_device hooks, interrupt handler) that call out to more-generic 
>> functions when necessary.  Doing so eliminates the need to create a 
>> new hook for every little twirl in the code path.

I think this is the key point that needs to be addressed in the new 
driver. All of the netdevice glue such as PCI ID tables, netdev open, 
close etc should be in its own driver for each device, which calls out 
to common code where appropriate.

> are you talking about the internals of e1000_phy/mac/nvm etc? i agree 
> that the amount of forward/backward mapping in here is a bit of a 
> spaghetti and could be more clear

Make it more clear by restructuring it, not by adding comments though.

>> * The multitude of files makes it difficult to review.  Much easier in 
>> one file, or a small few.
> 
> well, at least the files are reasonably well structured by topic. 
> Combining small files just to make reviewing easier seems strange to me, 
> besides making it easier to jump around in an editor it doesn't add any 
> value to the code organization, and just encourages more forward 
> declarations and horrible ordering issues.

There's a lot of common code across the e1000 family. But all of the 
chip-specific code for an individual driver could be in one file. I 
envisage something like this:-

e1000_core.c	- common code used by all drivers of the e1000 family.
		  Exports functions used by actual drivers. Loadable
		  as a separate module when built as a module.
e1000_82541.c	- driver for 82541
e1000_82542.c	- driver for 82542
e1000_xxxxx.c	- driver for xxxxx

If phylib were used, the phy-specific parts would move out naturally 
into a phy driver for each phy device. And if e1000_core.c were 
implemented well, few changes should occur over time as more e1000 
devices are released.

There would obviously be no overlap of PCI IDs in each driver. For the 
initial version, support just one device - more can be added later. The 
important thing is to get the structure right in the initial version.

-- 
James Chapman
Katalix Systems Ltd
http://www.katalix.com
Catalysts for your Embedded Linux software development


  reply	other threads:[~2007-07-07 12:23 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-06-29 17:29 e1000: backport ich9 support from 7.5.5 ? Mark McLoughlin
2007-06-29 17:50 ` Jason Lunz
2007-06-29 19:51   ` Kok, Auke
2007-06-29 20:22     ` Jason Lunz
2007-06-29 20:59     ` Jeff Garzik
2007-06-30 21:24     ` Mark McLoughlin
2007-07-02 23:52       ` Williams, Mitch A
2007-07-03  0:10         ` Rick Jones
2007-07-03  0:55           ` Jason Lunz
2007-07-03  1:44             ` Kok, Auke
2007-07-03  7:15         ` Christoph Hellwig
2007-07-03 13:13           ` [E1000-devel] " Jeff Garzik
2007-06-29 20:55   ` Jeff Garzik
2007-06-29 21:39     ` Kok, Auke
2007-06-29 22:03       ` Andrew Morton
2007-06-29 22:11         ` Jeff Garzik
2007-06-29 23:24           ` RFR: New e1000 driver (e1000new), was: " Kok, Auke
2007-06-29 23:38             ` Arjan van de Ven
2007-07-08 18:20               ` Jeff Garzik
2007-07-08 20:14                 ` Arjan van de Ven
2007-07-08 22:01                   ` [E1000-devel] " Jonathan Lundell
2007-06-30  3:32             ` Roland Dreier
2007-07-08 18:20               ` Jeff Garzik
2007-07-06 19:07             ` Jeff Garzik
2007-07-07  0:13               ` Kok, Auke
2007-07-07 12:23                 ` James Chapman [this message]
2007-07-08 18:41                   ` James Chapman
2007-07-07 18:59               ` Andrew Grover
2007-06-29 23:57           ` Andrew Grover
2007-06-30  0:02             ` Andrew Grover
2007-06-30  0:09             ` Jeff Garzik
2007-06-30  1:29               ` Jim McCullough
2007-06-30  1:31                 ` Jim McCullough
2007-06-30  2:34                 ` [E1000-devel] " Kok, Auke
2007-06-30  2:31               ` Kok, Auke
2007-06-30  8:25                 ` Christoph Hellwig
2007-07-03 22:48                   ` Splitting e1000 (Was: Re: e1000: backport ich9 support from 7.5.5 ?) Kok, Auke
2007-07-05 18:32                     ` Kok, Auke
2007-07-06  0:22                     ` Jeff Garzik
2007-07-07  0:14                       ` Kok, Auke
2007-07-07 13:58                         ` James Chapman
2007-07-07 19:04                         ` Francois Romieu
2007-07-07 21:54                           ` Kok, Auke
2007-07-08  1:32                             ` Stephen Hemminger
2007-07-08 10:07                               ` James Chapman
2007-07-08 16:29                               ` Arjan van de Ven
2007-07-08 18:06                                 ` Jeff Garzik
2007-07-08 19:24                                   ` Andrew Grover
2007-07-09 17:56                                     ` Jeff Garzik
2007-07-08 20:05                                   ` Arjan van de Ven
2007-07-09 18:39                                     ` Jeff Garzik
2007-07-09 18:46                                       ` Stephen Hemminger
2007-07-09 19:36                                       ` Arjan van de Ven
2007-07-09 20:46                                       ` Kok, Auke
2007-07-09 22:26                                         ` Jeff Garzik
2007-07-13 21:45                                           ` Kok, Auke
2007-07-13 22:08                                             ` Jeff Garzik
2007-07-13 22:13                                               ` Kok, Auke
2007-07-08 18:08                               ` Jeff Garzik
2007-07-08 17:41                         ` Jeff Garzik
2007-06-30 14:31                 ` e1000: backport ich9 support from 7.5.5 ? James Chapman
2007-06-30 16:29                   ` Kok, Auke
2007-07-01 10:45                     ` James Chapman
2007-06-30  8:26             ` Christoph Hellwig
2007-06-29 22:16         ` Kok, Auke
2007-06-29 22:07       ` Jeff Garzik
2007-06-29 21:39   ` Andy Gospodarek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=468F85AF.3010603@katalix.com \
    --to=jchapman@katalix.com \
    --cc=akpm@linux-foundation.org \
    --cc=arjan@linux.intel.com \
    --cc=auke-jan.h.kok@intel.com \
    --cc=e1000-devel@lists.sourceforge.net \
    --cc=jeff@garzik.org \
    --cc=john.ronciak@intel.com \
    --cc=lunz@reflexsecurity.com \
    --cc=markmc@redhat.com \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).