From: Andrew Lunn <andrew@lunn.ch>
To: Paul Burton <paul.burton@mips.com>
Cc: netdev@vger.kernel.org, "David S . Miller" <davem@davemloft.net>
Subject: Re: [PATCH v7 03/11] net: pch_gbe: Probe PHY ID & initialize only once
Date: Wed, 27 Jun 2018 19:21:31 +0200 [thread overview]
Message-ID: <20180627172131.GB885@lunn.ch> (raw)
In-Reply-To: <20180627000612.27263-4-paul.burton@mips.com>
On Tue, Jun 26, 2018 at 05:06:04PM -0700, Paul Burton wrote:
> The pch_gbe driver currently probes for the PHY ID & configures the PHY
> every time the MAC is reset, even though we know that the PHY won't have
> changed since the last MAC reset [1].
>
> This patch moves the PHY probe to instead happen only once when the
> driver is probed, saving time & moving us closer to the behavior we'll
> have with phylib.
>
> [1] Please, someone patent PHY hotplugging & rigorously enforce said
> patent such that nobody can do it. At least not with an EG20T MAC.
Hi Paul
It is already possible, and probably patented. SFP cages are usually
used for fibre optical modules. But it is also possible to have copper
modules, which contain a standard PHY. And SFP modules are
hot-plugable...
>
> Signed-off-by: Paul Burton <paul.burton@mips.com>
> Cc: Andrew Lunn <andrew@lunn.ch>
> Cc: David S. Miller <davem@davemloft.net>
> Cc: netdev@vger.kernel.org
> ---
>
> Changes in v7: New patch
>
> .../ethernet/oki-semi/pch_gbe/pch_gbe_main.c | 26 ++++++++++---------
> 1 file changed, 14 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
> index 9651fa02d4bb..5157cea16773 100644
> --- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
> +++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
> @@ -617,8 +617,10 @@ static void pch_gbe_init_stats(struct pch_gbe_adapter *adapter)
> static int pch_gbe_init_phy(struct pch_gbe_adapter *adapter)
> {
> struct net_device *netdev = adapter->netdev;
> + struct pch_gbe_hw *hw = &adapter->hw;
> u32 addr;
> u16 bmcr, stat;
> + s32 ret_val;
>
> /* Discover phy addr by searching addrs in order {1,0,2,..., 31} */
> for (addr = 0; addr < PCH_GBE_PHY_REGS_LEN; addr++) {
> @@ -652,6 +654,16 @@ static int pch_gbe_init_phy(struct pch_gbe_adapter *adapter)
> adapter->mii.mdio_read = pch_gbe_mdio_read;
> adapter->mii.mdio_write = pch_gbe_mdio_write;
> adapter->mii.supports_gmii = mii_check_gmii_support(&adapter->mii);
> +
> + ret_val = pch_gbe_phy_get_id(hw);
> + if (ret_val) {
> + netdev_err(adapter->netdev, "pch_gbe_phy_get_id error\n");
> + return -EIO;
> + }
> + pch_gbe_phy_init_setting(hw);
> + /* Setup Mac interface option RGMII */
> + pch_gbe_phy_set_rgmii(hw);
> +
> return 0;
> }
>
> @@ -721,22 +733,12 @@ void pch_gbe_reset(struct pch_gbe_adapter *adapter)
> {
> struct net_device *netdev = adapter->netdev;
> struct pch_gbe_hw *hw = &adapter->hw;
> - s32 ret_val;
>
> pch_gbe_mac_reset_hw(hw);
> /* reprogram multicast address register after reset */
> pch_gbe_set_multi(netdev);
> /* Setup the receive address. */
> pch_gbe_mac_init_rx_addrs(hw, PCH_GBE_MAR_ENTRIES);
> -
> - ret_val = pch_gbe_phy_get_id(hw);
> - if (ret_val) {
> - netdev_err(adapter->netdev, "pch_gbe_phy_get_id error\n");
> - return;
> - }
> - pch_gbe_phy_init_setting(hw);
> - /* Setup Mac interface option RGMII */
> - pch_gbe_phy_set_rgmii(hw);
> }
>
> /**
Up to here, everything looks O.K.
> @@ -2577,6 +2579,8 @@ static int pch_gbe_probe(struct pci_dev *pdev,
> if (ret)
> goto err_free_netdev;
>
> + pch_gbe_check_options(adapter);
> +
> /* Initialize PHY */
> ret = pch_gbe_init_phy(adapter);
> if (ret) {
> @@ -2606,8 +2610,6 @@ static int pch_gbe_probe(struct pci_dev *pdev,
>
> INIT_WORK(&adapter->reset_task, pch_gbe_reset_task);
>
> - pch_gbe_check_options(adapter);
> -
> /* initialize the wol settings based on the eeprom settings */
> adapter->wake_up_evt = PCH_GBE_WL_INIT_SETTING;
> dev_info(&pdev->dev, "MAC address : %pM\n", netdev->dev_addr);
But these two changes seem unrelated. Should they be in a different
patch?
Andrew
next prev parent reply other threads:[~2018-06-27 17:21 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-27 0:06 [PATCH v7 00/11] net: pch_gbe: Fixes, conversion to phylib, enable for MIPS Paul Burton
2018-06-27 0:06 ` [PATCH v7 01/11] net: pch_gbe: Remove unused struct pch_gbe_adapter fields Paul Burton
2018-06-27 0:06 ` [PATCH v7 02/11] net: pch_gbe: Mask spare MAC addresses all at once Paul Burton
2018-06-27 0:06 ` [PATCH v7 03/11] net: pch_gbe: Probe PHY ID & initialize only once Paul Burton
2018-06-27 17:21 ` Andrew Lunn [this message]
2018-06-27 17:31 ` Paul Burton
2018-06-27 17:33 ` Andrew Lunn
2018-06-28 7:47 ` Andrew Lunn
2018-06-27 0:06 ` [PATCH v7 04/11] net: pch_gbe: Remove irq_sem Paul Burton
2018-06-27 0:06 ` [PATCH v7 05/11] net: pch_gbe: Move pch_gbe_watchdog lower in pch_gbe_main.c Paul Burton
2018-06-27 17:23 ` Andrew Lunn
2018-06-27 0:06 ` [PATCH v7 06/11] net: pch_gbe: Only enable MAC when PHY link is active Paul Burton
2018-06-27 17:30 ` Andrew Lunn
2018-06-27 17:54 ` Paul Burton
2018-06-28 7:36 ` Andrew Lunn
2018-06-27 17:54 ` Florian Fainelli
2018-06-27 18:15 ` Paul Burton
2018-06-27 0:06 ` [PATCH v7 07/11] net: pch_gbe: Remove AR8031 PHY hibernation disable Paul Burton
2018-06-27 17:30 ` Andrew Lunn
2018-06-27 0:06 ` [PATCH v7 08/11] net: pch_gbe: Clean up resets Paul Burton
2018-06-27 0:06 ` [PATCH v7 09/11] net: pch_gbe: Convert to mdiobus and phylib Paul Burton
2018-06-27 17:51 ` Andrew Lunn
2018-06-27 18:09 ` Paul Burton
2018-06-28 7:44 ` Andrew Lunn
2018-06-27 0:06 ` [PATCH v7 10/11] ptp: pch: Allow build on MIPS platforms Paul Burton
2018-06-27 17:53 ` Andrew Lunn
2018-06-27 0:06 ` [PATCH v7 11/11] net: pch_gbe: " Paul Burton
2018-06-27 17:54 ` Andrew Lunn
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=20180627172131.GB885@lunn.ch \
--to=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=netdev@vger.kernel.org \
--cc=paul.burton@mips.com \
/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).