[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20180824134917.GB1999@lunn.ch>
Date: Fri, 24 Aug 2018 15:49:17 +0200
From: Andrew Lunn <andrew@...n.ch>
To: rpjday@...shcourse.ca
Cc: netdev@...r.kernel.org
Subject: Re: should __LINK_STATE_* enums really be restricted to generic
queueing layer?
On Fri, Aug 24, 2018 at 07:17:38AM -0400, rpjday@...shcourse.ca wrote:
> more curious pedantry ... in netdevice.h, one reads:
>
> /* These flag bits are private to the generic network queueing
> * layer; they may not be explicitly referenced by any other
> * code.
> */
>
> enum netdev_state_t {
> __LINK_STATE_START,
> __LINK_STATE_PRESENT,
> __LINK_STATE_NOCARRIER,
> __LINK_STATE_LINKWATCH_PENDING,
> __LINK_STATE_DORMANT,
> };
>
> ok, but there are definitely a few examples of what look like
> non-generic network queueing code referencing those enums.
>
> one example, drivers/net/ethernet/amd/sun3lance.c, which openly
> (and amusingly) admits that it shouldn't be doing this:
>
> dev->netdev_ops = &lance_netdev_ops;
> // KLUDGE -- REMOVE ME
> set_bit(__LINK_STATE_PRESENT, &dev->state);
> return 1;
> }
>
> there are a few more places (admittedly, not many) -- is this
> acceptable behaviour?
Not in a new driver.
The sun3lance is a very old driver. I have misty memories of a Sun
3/60. There is nothing in this code about a driving a PHY. Maybe using
netif_carrier_on() would work, but without having access to the
hardware to test, i would just leave it alone.
Andrew
Powered by blists - more mailing lists