All of lore.kernel.org
 help / color / mirror / Atom feed
From: Florian Fainelli <f.fainelli@gmail.com>
To: Stas Sergeev <stsp@list.ru>, netdev <netdev@vger.kernel.org>
Cc: Linux kernel <linux-kernel@vger.kernel.org>,
	Sebastien Rannou <mxs@sbrk.org>,
	Arnaud Ebalard <arno@natisbad.org>,
	Stas Sergeev <stsp@users.sourceforge.net>
Subject: Re: [PATCH 1/3] fixed_phy: handle link-down case
Date: Tue, 14 Jul 2015 11:28:30 -0700	[thread overview]
Message-ID: <55A554CE.4010002@gmail.com> (raw)
In-Reply-To: <55A542A4.80700@list.ru>

On 14/07/15 10:11, Stas Sergeev wrote:
> 
> Currently fixed_phy driver recognizes only the link-up state.
> This simple patch adds an implementation of link-down state.
> It fixes the status registers when link is down, and also allows
> to register the fixed-phy with link down without specifying the speed.
> 
> Signed-off-by: Stas Sergeev <stsp@users.sourceforge.net>

This does not quite seem to work for me here on two different setups
that use fixed PHYs:

Before patch link up:

# ethtool moca
Settings for moca:
        Supported ports: [ TP AUI BNC MII FIBRE ]
        Supported link modes:   1000baseT/Half 1000baseT/Full
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Advertised link modes:  1000baseT/Half 1000baseT/Full
        Advertised pause frame use: No
        Advertised auto-negotiation: Yes
        Link partner advertised link modes:  1000baseT/Full
        Link partner advertised pause frame use: No
        Link partner advertised auto-negotiation: No
        Speed: 1000Mb/s
        Duplex: Full
        Port: BNC
        PHYAD: 2
        Transceiver: external
        Auto-negotiation: on
        Supports Wake-on: gs
        Wake-on: d
        SecureOn password: 00:00:00:00:00:00
        Link detected: yes
#

Before patch link down:
# ethtool moca
Settings for moca:
        Supported ports: [ TP AUI BNC MII FIBRE ]
        Supported link modes:   1000baseT/Half 1000baseT/Full
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Advertised link modes:  1000baseT/Half 1000baseT/Full
        Advertised pause frame use: No
        Advertised auto-negotiation: No
        Speed: 1000Mb/s
        Duplex: Full
        Port: BNC
        PHYAD: 2
        Transceiver: external
        Auto-negotiation: off
        Supports Wake-on: gs
        Wake-on: d
        SecureOn password: 00:00:00:00:00:00
        Link detected: no
#

After patch link up:
# ethtool moca
Settings for moca:
        Supported ports: [ TP AUI BNC MII FIBRE ]
        Supported link modes:   1000baseT/Half 1000baseT/Full
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Advertised link modes:  1000baseT/Half 1000baseT/Full
        Advertised pause frame use: No
        Advertised auto-negotiation: Yes
        Link partner advertised link modes:  10baseT/Full
        Link partner advertised pause frame use: No
        Link partner advertised auto-negotiation: No
        Speed: 10Mb/s <---- this is not quite the speed we want
        Duplex: Full
        Port: BNC
        PHYAD: 2
        Transceiver: external
        Auto-negotiation: on
        Supports Wake-on: gs
        Wake-on: d
        SecureOn password: 00:00:00:00:00:00
        Link detected: yes
#


After patch link down:

# ethtool moca
Settings for moca:
        Supported ports: [ TP AUI BNC MII FIBRE ]
        Supported link modes:   1000baseT/Half 1000baseT/Full
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Advertised link modes:  1000baseT/Half 1000baseT/Full
        Advertised pause frame use: No
        Advertised auto-negotiation: No
        Speed: 10Mb/s
        Duplex: Half
        Port: BNC
        PHYAD: 2
        Transceiver: external
        Auto-negotiation: off
        Supports Wake-on: gs
        Wake-on: d
        SecureOn password: 00:00:00:00:00:00
        Link detected: no
#


Does it behave properly for you?

> 
> CC: Florian Fainelli <f.fainelli@gmail.com>
> CC: netdev@vger.kernel.org
> CC: linux-kernel@vger.kernel.org
> ---
>  drivers/net/phy/fixed_phy.c | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/net/phy/fixed_phy.c b/drivers/net/phy/fixed_phy.c
> index 1960b46..479b93f 100644
> --- a/drivers/net/phy/fixed_phy.c
> +++ b/drivers/net/phy/fixed_phy.c
> @@ -52,6 +52,10 @@ static int fixed_phy_update_regs(struct fixed_phy *fp)
>  	u16 lpagb = 0;
>  	u16 lpa = 0;
> 
> +	if (!fp->status.link)
> +		goto done;
> +	bmsr |= BMSR_LSTATUS | BMSR_ANEGCOMPLETE;
> +
>  	if (fp->status.duplex) {
>  		bmcr |= BMCR_FULLDPLX;
> 
> @@ -96,15 +100,13 @@ static int fixed_phy_update_regs(struct fixed_phy *fp)
>  		}
>  	}
> 
> -	if (fp->status.link)
> -		bmsr |= BMSR_LSTATUS | BMSR_ANEGCOMPLETE;
> -
>  	if (fp->status.pause)
>  		lpa |= LPA_PAUSE_CAP;
> 
>  	if (fp->status.asym_pause)
>  		lpa |= LPA_PAUSE_ASYM;
> 
> +done:
>  	fp->regs[MII_PHYSID1] = 0;
>  	fp->regs[MII_PHYSID2] = 0;
> 


-- 
Florian

  reply	other threads:[~2015-07-14 18:30 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-14 17:09 [PATCH v3 0/3] net: enable inband link state negotiation only when explicitly requested Stas Sergeev
2015-07-14 17:11 ` [PATCH 1/3] fixed_phy: handle link-down case Stas Sergeev
2015-07-14 18:28   ` Florian Fainelli [this message]
     [not found]     ` <55A56D4D.5090004@list.ru>
2015-07-15 15:33       ` Fwd: " Stas Sergeev
2015-07-14 17:13 ` [PATCH 2/3] of_mdio: add new DT property 'managed' to specify the PHY management type Stas Sergeev
2015-07-14 17:13   ` Stas Sergeev
     [not found]   ` <55A5432C.1080609-cmBhpYW9OiY@public.gmane.org>
2015-07-14 17:51     ` Florian Fainelli
2015-07-14 17:51       ` Florian Fainelli
2015-07-14 20:26       ` Stas Sergeev
2015-07-14 17:14 ` [PATCH 3/3] mvneta: use inband status only when explicitly enabled Stas Sergeev
  -- strict thread matches above, loose matches on Subject: below --
2015-07-16 14:49 [PATCH v4 0/3] net: enable inband link state negotiation only when explicitly requested Stas Sergeev
2015-07-16 14:50 ` [PATCH 1/3] fixed_phy: handle link-down case Stas Sergeev
2015-07-16 23:25   ` Florian Fainelli
2015-07-17 11:26     ` Stas Sergeev
2015-07-17 18:50       ` Florian Fainelli
2015-07-17 18:50         ` Florian Fainelli
2015-07-17 20:03         ` Stas Sergeev
2015-07-17 22:01           ` Florian Fainelli
2015-07-17 23:24             ` Stas Sergeev
2015-07-17 23:35               ` Florian Fainelli
2015-07-17 23:53                 ` Stas Sergeev
2015-07-18  2:29                   ` Florian Fainelli
2015-07-18 21:16                     ` Stas Sergeev
2015-07-10 16:38 [PATCH v2 0/2] net: enable inband link state negotiation only when explicitly requested Stas Sergeev
2015-07-10 16:41 ` [PATCH 1/3] fixed_phy: handle link-down case Stas Sergeev
2015-07-10 20:44   ` Florian Fainelli
2015-07-10 21:14     ` Stas Sergeev
2015-07-11  0:15       ` Florian Fainelli
2015-07-11  8:58         ` Stas Sergeev

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=55A554CE.4010002@gmail.com \
    --to=f.fainelli@gmail.com \
    --cc=arno@natisbad.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mxs@sbrk.org \
    --cc=netdev@vger.kernel.org \
    --cc=stsp@list.ru \
    --cc=stsp@users.sourceforge.net \
    /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.