Hello Jurgen, On Thursday 08 September 2011 08:54:07 Lambrecht Jürgen wrote: > Hello, > > In our embedded designs, this is a useful patch. Maybe it can be useful > for somebody else too. > Or maybe there are already better solutions? > I know I could also write a driver for our switch, but that is too much > effort just to select the active port. This is not going to work well with all switches out there. You could use the fixed-PHY driver to make your ethernet driver see the link as always up between the MAC and switch CPU port. A better solution would be to have proper switch drivers and user-space, which reminds me that we (OpenWrt) should at some point propose our switch drivers [1] for review. [1]: https://dev.openwrt.org/browser/trunk/target/linux/generic/files/drivers/net/phy/ > > Kind regards, > Jürgen > > In embedded design, instead of a PHY, sometimes a switch is used that > behaves as a PHY through its MII port. For example to use a > daisy chain network configuration instead of an expensive star config. In > that case, many phy ports are available, but only 1 should be used > to check link status, and not the first one available as is > the case > without this configuration (that is, set to its default value > 0). So this options specifies the switch port number to be used to check > link status, because if the link is down, no data is sent by the > TCP/IP stack. > > Signed-off-by: Jürgen Lambrecht <J.Lambrecht@xxxxxxxxxxx> > --- > drivers/net/phy/Kconfig | 14 ++++++++++++++ > drivers/net/phy/mdio_bus.c | 9 +++++++++ > 2 files changed, 23 insertions(+), 0 deletions(-) > > diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig > index a702443..554561f 100644 > --- a/drivers/net/phy/Kconfig > +++ b/drivers/net/phy/Kconfig > @@ -13,6 +13,20 @@ menuconfig PHYLIB > > if PHYLIB > > +config SWITCH_PHY > + int "External switch port to be used if switch is used as PHY" > + default "0" > + help > + In embedded design, instead of a PHY, sometimes a switch is > used that > + behaves as a PHY through its MII port. For example to use a daisy > + chain network configuration instead of an expensive star config. > + In that case, many phy ports are available, but only 1 should > be used > + to check link status, and not the first one available as is > the case > + without this configuration (that is, set to its default value 0). > + So this options specifies the switch port number to be used to > check > + link status, because if the link is down, no data is sent by the > + TCP/IP stack. > + > comment "MII PHY device drivers" > > config MARVELL_PHY > diff --git a/drivers/net/phy/mdio_bus.c b/drivers/net/phy/mdio_bus.c > index 6c58da2..016437a 100644 > --- a/drivers/net/phy/mdio_bus.c > +++ b/drivers/net/phy/mdio_bus.c > @@ -112,7 +112,14 @@ int mdiobus_register(struct mii_bus *bus) > if (bus->reset) > bus->reset(bus); > > + /* The config below is always availble with CONFIG_PHYLIB. If 0, > the + behavior is as before without this patch (or P0 of the > switch is + taken because it is the first one found). */ > +#if CONFIG_SWITCH_PHY > + i = CONFIG_SWITCH_PHY; > +#else > for (i = 0; i < PHY_MAX_ADDR; i++) { > +#endif > if ((bus->phy_mask & (1 << i)) == 0) { > struct phy_device *phydev; > > @@ -122,7 +129,9 @@ int mdiobus_register(struct mii_bus *bus) > goto error; > } > } > +#if !CONFIG_SWITCH_PHY > } > +#endif > > bus->state = MDIOBUS_REGISTERED; > pr_info("%s: probed\n", bus->name); > -- > 1.7.1 > N�����r��y����b�X��ǧv�^�){.n�+���z�^�)����w*jg��������ݢj/���z�ޖ��2�ޙ���� > &�)ߡ�a�����G���h��j:+v���w��٥ -- Florian -- To unsubscribe from this list: send the line "unsubscribe linux-embedded" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html