linux-embedded.vger.kernel.org archive mirror
 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

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

Thread overview: 6+ 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 10:00   ` Lambrecht Jürgen
2011-09-08 10:13 ` Francois Romieu
2011-09-08 11:59   ` Lambrecht Jürgen
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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).