Re: [patch] ip autoconfig for PCMCIA NICs

David Hinds
2001-10-20T03:25:05Z

On Fri, Oct 19, 2001 at 01:52:54PM -0700, Andrew Morton wrote:
>
> This all works fine. However it probably breaks something, but the rather
> unilluminating comment
>
> #ifdef CONFIG_PCMCIA
> init_pcmcia_ds(); /* Do this last */
> #endif
>
> doesn't tell us what.

I'm not sure about the origin of the comment. But I can think of one
reason for starting PCMCIA after at least other device drivers have
started: since the kernel generally relies on individual drivers to
announce their resource allocations, there is no way to reliably do
resource allocation for hot plug devices before non-hot-plug devices
have enumerated what resources they're already using.

> Now, every time I try to understand the relationship between socket
> services, card services, socket drivers and driver services my brain
> bursts. Could some kind soul please what these things do, and how
> they fit together? Thanks.

Card services manages a few things for PCMCIA client drivers: hot plug
event handling, resource allocation, PCMCIA bus configuration, Card
Information Structure parsing, and some abstractions for talking to
memory cards. The Linux version, in the pcmcia_core module, is based
heavily on the PCMCIA standard documents. Socket services is the
PCMCIA standard API for talking to socket drivers; Linux does not
really implement this API and there's a simpler interface between
pcmcia_core and socket drivers. The Linux driver services layer, in
the "ds" module, supplies a few things for managing device drivers:
stuff for keeping track of which drivers manage which cards, and which
logical devices are associated with which cards and drivers. It also
provides a user mode pseudo-device for some Card Services functions.

This stuff is also explained in the intro of the Linux PCMCIA
Programmer's Guide.

-- Dave