sowmini.varadhan at sun.com wrote:
> On (06/17/07 08:09), Masayuki Murayama wrote:
>
>> I recommend to make a new common layer for managing tx/rx
>> buffers, tx/rx descriptor rings, and MII link. In my experience
>> on writing various nic drivers, they were common.
>> Actually I tried to make such a common layer, and it reduced
>> the lines in hardware depend section. Typically it was 1500 - 2500
>> lines for a driver.
>>
>
> Could you elaborate on the details of your own effort? Having such a
> layer may open up new possibilities for Brussels..
>
Actually, this project, the idea of having a common layer, would really
really help drivers and is on my personal wish list for a Nemo 2
(GLDv3.1? GLDv4?) project. I've been pitching a Nemo 2 project around
for a few weeks now, but so far I can't seem to get management to hear
my clarion call. :-)
Part of the reason I want to centralize this, apart from simplifying
device drivers, is that it can allow the framework to make decisions on
the drivers behalf, to get optimum performance. (For example, the
choice as to when to bcopy, vs. dma, vs. dvma is one that device driver
authors often are faced with, and often have answered poorly. It would
be nice if the framework could provide answers based on observed system
performance.)
The MII layer is another thing that I proposed, because I can see a lot
of (in some cases badly written) replicated code across all drivers, for
dealing with MII. Often that code is inconsistent. For example, iprb
uses a common MII module that doesn't support tuning of autonegotiation,
whereas e1000g uses its own code to do this, whereas hme have yet an
entirely different code. This anarchy really, really needs to end.
-- Garrett