Re: [PATCH 3/4] atl1: Main C file for Attansic L1 driver

Stephen Hemminger
2006-11-20T22:01:43Z

On Mon, 20 Nov 2006 16:36:43 -0500
Jeff Garzik <jeff@garzik.org> wrote:

> Stephen Hemminger wrote:
> > On Mon, 20 Nov 2006 14:35:10 -0500
> > Jeff Garzik <jeff@garzik.org> wrote:
> >
> >> Stephen Hemminger wrote:
> >>> Using common MII code is good, but one problem with the existing MII code is that
> >>> it doesn't work when device is down. This makes it impossible to set speed/duplex
> >>> before device comes up.
> >>
> >> That's not true at all. drivers/net/mii.c uses caller-provided locking
> >> in all cases, and there is nothing that prevents the common code from
> >> being called when the interface is down.
> >>
> >> You are probably thinking about all the netif_running() checks found in
> >> the drivers, particularly in the ->begin() hook.
> >>
> >> Jeff
> >>
> >>
> >
> > Yeah it is a driver specific thing. All users of mii seem to block changes so
> > I thought it was in base code.
>
> Yeah. As a bit of history, a lot of drivers would power down the phy
> when the interface was down, and so MII would need to be inaccessible.
> But that's really a driver policy thing. If the driver provides a
> "don't power down phy, when interface is downed" knob, maybe it would
> want to support MII operations when !netif_running().
>
> Jeff

What I would like is for the mii core to maintain the bits (like advertising)
in the mii structure and if not running, it should just change the offline
copy, then when link is brought up use the changes that were requested while
link was down. Understand?

That's why in the skge/sky2, I keep state bits and don't apply them until
link is started. If mii (and phylib) did this, I could use them; but as it
is they require PHY to be powered all the time.

--
Stephen Hemminger <shemminger@osdl.org>