Proposed F19 Feature: systemd/udev Predictable Network Interface Names
Matt Domsch
Matt_Domsch at dell.com
Mon Mar 4 16:19:14 UTC 2013
On Mon, Mar 04, 2013 at 10:03:01AM -0600, Andy Gospodarek wrote:
> On Mon, Mar 04, 2013 at 09:01:35AM -0600, Matt Domsch wrote:
> > On Mon, Mar 04, 2013 at 08:44:55AM -0600, Domsch, Matt wrote:
> > > The challenge here is that because struct netdev is initialized to all
> > > zeros, code that consumes dev_id can't tell the difference between a
> > > driver _setting_ the value to 0 because it has 2 ports 0 and 1, and a
> > > default (unset) value of 0. I think the only solution here is to make
> > > sure the kernel drivers, if they need to set it, always set this
> > > non-zero, so udev, seeing a non-zero value, knows it's a valid value
> > > to use.
> >
> > These seem to be the 4 drivers currently setting dev_id:
> >
> > drivers/net/ethernet/chelsio/cxgb4/t4_hw.c: adap->port[i]->dev_id = j;
> > drivers/net/ethernet/freescale/fec.c: fep->dev_id = dev_id++;
>
> Look up a few lines:
>
> /* setup board info structure */
> fep = netdev_priv(ndev);
>
> fep is not a pointer to the net_device, but to the private device
> structure. This is why I didn't include it in the list.
Good catch.
> > drivers/net/ethernet/mellanox/mlx4/en_netdev.c: dev->dev_id = port - 1;
> > drivers/net/ethernet/sfc/siena.c: efx->net_dev->dev_id = EFX_OWORD_FIELD(reg, FRF_CZ_CS_PORT_NUM) - 1;
> >
> > of these, both the mlx4 and siena drivers set them starting at 0. I
> > think the fec driver might be doing so as well, but it's not as
> > obvious. I'm pretty sure cxgb4 starts numbering at 1 just from
> > reading the code. So, as-is in the 3.9rc1 kernel, I wouldn't be
> > comfortable relying on the value of dev_id.
>
> I agree it looks like some cleanup is needed due to the inconsistency.
>
> This is still only an issue when a single function supports multiple
> ethernet devices, right?
I believe so, yes.
--
Matt Domsch
Technology Strategist
Dell | Office of the CTO
More information about the devel
mailing list