All of lore.kernel.org
 help / color / mirror / Atom feed
From: Florian Fainelli <florian@openwrt.org>
To: "Lambrecht Jürgen" <J.Lambrecht@televic.com>
Cc: "netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"linux-embedded@vger.kernel.org" <linux-embedded@vger.kernel.org>
Subject: Re: [PATCH] net: phy: Add config option to specify external switch port to be used if switch is used as PHY
Date: Thu, 8 Sep 2011 10:39:35 +0200	[thread overview]
Message-ID: <201109081039.35272.florian@openwrt.org> (raw)
In-Reply-To: <4E68668F.9060008@televic.com>

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@televic.com>
> ---
>   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*\x1fjg���\x1e�����ݢj/���z�ޖ��2�ޙ����
> &�)ߡ�a��\x7f��\x1e�G���h�\x0f�j:+v���w��٥

-- 
Florian

WARNING: multiple messages have this Message-ID (diff)
From: Florian Fainelli <florian@openwrt.org>
To: "Lambrecht Jürgen" <J.Lambrecht@televic.com>
Cc: "netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"linux-embedded@vger.kernel.org" <linux-embedded@vger.kernel.org>
Subject: Re: [PATCH] net: phy: Add config option to specify external switch port to be used if switch is used as PHY
Date: Thu, 8 Sep 2011 10:39:35 +0200	[thread overview]
Message-ID: <201109081039.35272.florian@openwrt.org> (raw)
In-Reply-To: <4E68668F.9060008@televic.com>

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@televic.com>
> ---
>   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*\x1fjg���\x1e�����ݢj/���z�ޖ��2�ޙ����
> &�)ߡ�a��\x7f��\x1e�G���h�\x0f�j:+v���w��٥

-- 
Florian

  reply	other threads:[~2011-09-08  8:39 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-08  6:54 [PATCH] net: phy: Add config option to specify external switch port to be used if switch is used as PHY Lambrecht Jürgen
2011-09-08  8:39 ` Florian Fainelli [this message]
2011-09-08  8:39   ` Florian Fainelli
2011-09-08 10:00   ` Lambrecht Jürgen
2011-09-08 10:00     ` Lambrecht Jürgen
2011-09-08 10:13 ` Francois Romieu
2011-09-08 10:13   ` Francois Romieu
2011-09-08 11:59   ` Lambrecht Jürgen
2011-09-08 21:24     ` Francois Romieu
2011-09-08 21:24       ` Francois Romieu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201109081039.35272.florian@openwrt.org \
    --to=florian@openwrt.org \
    --cc=J.Lambrecht@televic.com \
    --cc=linux-embedded@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.