[U-Boot] [PATCH v2 0/7] net: add support for phy speed limitation

In some cases Ethernet PHY and network itself might support speeds which are not supported by Ethernet controller (MAC).
To support that kind of situation it is required to force limit PHY so it is not configured for unsupported mode or even if PHY autonegotiated too high speed it will be reconfigured for slower mode.
Note this series is v2 because v1 patches were sent separately not being aranged in series. And now I'm putting all patches in one series and marking it v2 even though no changes were done in patches itself.
Alexey Brodkin (4): drivers/net/phy: introduce phy_set_supported() include/net.h: add max_speed member in struct eth_pdata net/designware: do explicit port selection for 1Gb mode net/designware: add support of max-speed device tree property
Florian Fainelli (2): net: phy: ensure Gigabit features are masked off if requested net: phy: breakdown PHY_*_FEATURES defines
Sascha Hauer (1): net: phy: genphy: Allow overwriting features
drivers/net/designware.c | 16 +++++++++- drivers/net/designware.h | 1 + drivers/net/phy/phy.c | 77 ++++++++++++++++++++++++++++++++++-------------- include/net.h | 2 ++ include/phy.h | 23 ++++++++++----- 5 files changed, 89 insertions(+), 30 deletions(-)

From: Florian Fainelli f.fainelli@gmail.com
When a Gigabit PHY device is connected to a 10/100Mbits capable Ethernet MAC, the driver will restrict the phydev->supported modes to mask off Gigabit. If the Gigabit PHY comes out of reset with the Gigabit features set by default in MII_CTRL1000, it will keep advertising these feature, so by the time we call genphy_config_advert(), the condition on phydev->supported having the Gigabit features on is false, and we do not update MII_CTRL1000 with updated values, and we keep advertising Gigabit features, eventually configuring the PHY for Gigabit whilst the Ethernet MAC does not support that.
This patches fixes the problem by ensuring that the Gigabit feature bits are always cleared in MII_CTRL1000, if the PHY happens to be a Gigabit PHY, and then, if Gigabit features are supported, setting those and updating MII_CTRL1000 accordingly.
This is a copy of patch from Linux kernel, see http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=52...
Signed-off-by: Florian Fainelli f.fainelli@gmail.com Signed-off-by: Alexey Brodkin abrodkin@synopsys.com Cc: Joe Hershberger joe.hershberger@ni.com ---
Changes v1 -> v2: No changes, this is just a resent in series with other related patches.
drivers/net/phy/phy.c | 43 ++++++++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 17 deletions(-)
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index 51b5746..084276f 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -38,11 +38,10 @@ DECLARE_GLOBAL_DATA_PTR; static int genphy_config_advert(struct phy_device *phydev) { u32 advertise; - int oldadv, adv; + int oldadv, adv, bmsr; int err, changed = 0;
- /* Only allow advertising what - * this PHY supports */ + /* Only allow advertising what this PHY supports */ phydev->advertising &= phydev->supported; advertise = phydev->advertising;
@@ -79,29 +78,39 @@ static int genphy_config_advert(struct phy_device *phydev) changed = 1; }
+ bmsr = phy_read(phydev, MDIO_DEVAD_NONE, MII_BMSR); + if (bmsr < 0) + return bmsr; + + /* Per 802.3-2008, Section 22.2.4.2.16 Extended status all + * 1000Mbits/sec capable PHYs shall have the BMSR_ESTATEN bit set to a + * logical 1. + */ + if (!(bmsr & BMSR_ESTATEN)) + return changed; + /* Configure gigabit if it's supported */ - if (phydev->supported & (SUPPORTED_1000baseT_Half | - SUPPORTED_1000baseT_Full)) { - oldadv = adv = phy_read(phydev, MDIO_DEVAD_NONE, MII_CTRL1000); + oldadv = adv = phy_read(phydev, MDIO_DEVAD_NONE, MII_CTRL1000); + + if (adv < 0) + return adv;
- if (adv < 0) - return adv; + adv &= ~(ADVERTISE_1000FULL | ADVERTISE_1000HALF);
- adv &= ~(ADVERTISE_1000FULL | ADVERTISE_1000HALF); + if (phydev->supported & (SUPPORTED_1000baseT_Half | + SUPPORTED_1000baseT_Full)) { if (advertise & SUPPORTED_1000baseT_Half) adv |= ADVERTISE_1000HALF; if (advertise & SUPPORTED_1000baseT_Full) adv |= ADVERTISE_1000FULL; + }
- if (adv != oldadv) { - err = phy_write(phydev, MDIO_DEVAD_NONE, MII_CTRL1000, - adv); + if (adv != oldadv) + changed = 1;
- if (err < 0) - return err; - changed = 1; - } - } + err = phy_write(phydev, MDIO_DEVAD_NONE, MII_CTRL1000, adv); + if (err < 0) + return err;
return changed; }

On Wed, Jan 13, 2016 at 7:59 AM, Alexey Brodkin Alexey.Brodkin@synopsys.com wrote:
From: Florian Fainelli f.fainelli@gmail.com
When a Gigabit PHY device is connected to a 10/100Mbits capable Ethernet MAC, the driver will restrict the phydev->supported modes to mask off Gigabit. If the Gigabit PHY comes out of reset with the Gigabit features set by default in MII_CTRL1000, it will keep advertising these feature, so by the time we call genphy_config_advert(), the condition on phydev->supported having the Gigabit features on is false, and we do not update MII_CTRL1000 with updated values, and we keep advertising Gigabit features, eventually configuring the PHY for Gigabit whilst the Ethernet MAC does not support that.
This patches fixes the problem by ensuring that the Gigabit feature bits are always cleared in MII_CTRL1000, if the PHY happens to be a Gigabit PHY, and then, if Gigabit features are supported, setting those and updating MII_CTRL1000 accordingly.
This is a copy of patch from Linux kernel, see http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=52...
Signed-off-by: Florian Fainelli f.fainelli@gmail.com Signed-off-by: Alexey Brodkin abrodkin@synopsys.com Cc: Joe Hershberger joe.hershberger@ni.com
Acked-by: Joe Hershberger joe.hershberger@ni.com


From: Sascha Hauer s.hauer@pengutronix.de
of_set_phy_supported allows overwiting hardware capabilities of a phy with values from the devicetree. This does not work with the genphy driver though because the genphys config_init function will overwrite all values adjusted by of_set_phy_supported. Fix this by initialising the genphy features in the phy_driver struct and in config_init just limit the features to the ones the hardware can actually support. The resulting features are a subset of the devicetree specified features and the hardware features.
This is a copy of the patch from Linux kernel, see http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c2...
Signed-off-by: Sascha Hauer s.hauer@pengutronix.de Signed-off-by: Alexey Brodkin abrodkin@synopsys.com Cc: Joe Hershberger joe.hershberger@ni.com ---
Changes v1 -> v2: No changes, this is just a resent in series with other related patches.
drivers/net/phy/phy.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index 084276f..ec9be6b 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -380,8 +380,6 @@ int genphy_config(struct phy_device *phydev) int val; u32 features;
- /* For now, I'll claim that the generic driver supports - * all possible port types */ features = (SUPPORTED_TP | SUPPORTED_MII | SUPPORTED_AUI | SUPPORTED_FIBRE | SUPPORTED_BNC); @@ -420,8 +418,8 @@ int genphy_config(struct phy_device *phydev) features |= SUPPORTED_1000baseX_Half; }
- phydev->supported = features; - phydev->advertising = features; + phydev->supported &= features; + phydev->advertising &= features;
genphy_config_aneg(phydev);
@@ -445,7 +443,9 @@ static struct phy_driver genphy_driver = { .uid = 0xffffffff, .mask = 0xffffffff, .name = "Generic PHY", - .features = 0, + .features = PHY_GBIT_FEATURES | SUPPORTED_MII | + SUPPORTED_AUI | SUPPORTED_FIBRE | + SUPPORTED_BNC, .config = genphy_config, .startup = genphy_startup, .shutdown = genphy_shutdown,

On Wed, Jan 13, 2016 at 7:59 AM, Alexey Brodkin Alexey.Brodkin@synopsys.com wrote:
From: Sascha Hauer s.hauer@pengutronix.de
of_set_phy_supported allows overwiting hardware capabilities of a phy with values from the devicetree. This does not work with the genphy driver though because the genphys config_init function will overwrite all values adjusted by of_set_phy_supported. Fix this by initialising the genphy features in the phy_driver struct and in config_init just limit the features to the ones the hardware can actually support. The resulting features are a subset of the devicetree specified features and the hardware features.
This is a copy of the patch from Linux kernel, see http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c2...
Signed-off-by: Sascha Hauer s.hauer@pengutronix.de Signed-off-by: Alexey Brodkin abrodkin@synopsys.com Cc: Joe Hershberger joe.hershberger@ni.com
Acked-by: Joe Hershberger joe.hershberger@ni.com


From: Florian Fainelli f.fainelli@gmail.com
Breakdown the PHY_*_FEATURES into per speed defines such that we can easily re-use them individually.
Signed-off-by: Florian Fainelli f.fainelli@gmail.com Signed-off-by: Alexey Brodkin abrodkin@synopsys.com Cc: Joe Hershberger joe.hershberger@ni.com ---
Changes v1 -> v2: No changes, this is just a resent in series with other related patches.
include/phy.h | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-)
diff --git a/include/phy.h b/include/phy.h index 66cf61b..b793e90 100644 --- a/include/phy.h +++ b/include/phy.h @@ -17,18 +17,26 @@
#define PHY_MAX_ADDR 32
-#define PHY_BASIC_FEATURES (SUPPORTED_10baseT_Half | \ - SUPPORTED_10baseT_Full | \ - SUPPORTED_100baseT_Half | \ - SUPPORTED_100baseT_Full | \ - SUPPORTED_Autoneg | \ +#define PHY_DEFAULT_FEATURES (SUPPORTED_Autoneg | \ SUPPORTED_TP | \ SUPPORTED_MII)
-#define PHY_GBIT_FEATURES (PHY_BASIC_FEATURES | \ - SUPPORTED_1000baseT_Half | \ +#define PHY_10BT_FEATURES (SUPPORTED_10baseT_Half | \ + SUPPORTED_10baseT_Full) + +#define PHY_100BT_FEATURES (SUPPORTED_100baseT_Half | \ + SUPPORTED_100baseT_Full) + +#define PHY_1000BT_FEATURES (SUPPORTED_1000baseT_Half | \ SUPPORTED_1000baseT_Full)
+#define PHY_BASIC_FEATURES (PHY_10BT_FEATURES | \ + PHY_100BT_FEATURES | \ + PHY_DEFAULT_FEATURES) + +#define PHY_GBIT_FEATURES (PHY_BASIC_FEATURES | \ + PHY_1000BT_FEATURES) + #define PHY_10G_FEATURES (PHY_GBIT_FEATURES | \ SUPPORTED_10000baseT_Full)

On Wed, Jan 13, 2016 at 7:59 AM, Alexey Brodkin Alexey.Brodkin@synopsys.com wrote:
From: Florian Fainelli f.fainelli@gmail.com
Breakdown the PHY_*_FEATURES into per speed defines such that we can easily re-use them individually.
Signed-off-by: Florian Fainelli f.fainelli@gmail.com Signed-off-by: Alexey Brodkin abrodkin@synopsys.com Cc: Joe Hershberger joe.hershberger@ni.com
Acked-by: Joe Hershberger joe.hershberger@ni.com


This new function will allow MAC drivers to override supported capabilities of the phy. It is required when MAC cannot handle all speeds supported by phy.
For example phy supports up-to 1Gb connections while MAC may only work in modes up to 100 or even 10 Mbit/sec.
Signed-off-by: Alexey Brodkin abrodkin@synopsys.com Cc: Joe Hershberger joe.hershberger@ni.com ---
Changes v1 -> v2: No changes, this is just a resent in series with other related patches.
drivers/net/phy/phy.c | 24 ++++++++++++++++++++++++ include/phy.h | 1 + 2 files changed, 25 insertions(+)
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index ec9be6b..4ad4e78 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -526,6 +526,30 @@ int phy_register(struct phy_driver *drv) return 0; }
+int phy_set_supported(struct phy_device *phydev, u32 max_speed) +{ + /* The default values for phydev->supported are provided by the PHY + * driver "features" member, we want to reset to sane defaults first + * before supporting higher speeds. + */ + phydev->supported &= PHY_DEFAULT_FEATURES; + + switch (max_speed) { + default: + return -ENOTSUPP; + case SPEED_1000: + phydev->supported |= PHY_1000BT_FEATURES; + /* fall through */ + case SPEED_100: + phydev->supported |= PHY_100BT_FEATURES; + /* fall through */ + case SPEED_10: + phydev->supported |= PHY_10BT_FEATURES; + } + + return 0; +} + static int phy_probe(struct phy_device *phydev) { int err = 0; diff --git a/include/phy.h b/include/phy.h index b793e90..e030c9f 100644 --- a/include/phy.h +++ b/include/phy.h @@ -234,6 +234,7 @@ int phy_startup(struct phy_device *phydev); int phy_config(struct phy_device *phydev); int phy_shutdown(struct phy_device *phydev); int phy_register(struct phy_driver *drv); +int phy_set_supported(struct phy_device *phydev, u32 max_speed); int genphy_config_aneg(struct phy_device *phydev); int genphy_restart_aneg(struct phy_device *phydev); int genphy_update_link(struct phy_device *phydev);

On Wed, Jan 13, 2016 at 7:59 AM, Alexey Brodkin Alexey.Brodkin@synopsys.com wrote:
This new function will allow MAC drivers to override supported capabilities of the phy. It is required when MAC cannot handle all speeds supported by phy.
For example phy supports up-to 1Gb connections while MAC may only work in modes up to 100 or even 10 Mbit/sec.
Signed-off-by: Alexey Brodkin abrodkin@synopsys.com Cc: Joe Hershberger joe.hershberger@ni.com
Acked-by: Joe Hershberger joe.hershberger@ni.com


This will be used for getting max speed mode of Ethernet interface that a particular MAC supports from Device Tree blob and later being used for phy configuration.
Signed-off-by: Alexey Brodkin abrodkin@synopsys.com Cc: Joe Hershberger joe.hershberger@ni.com ---
Changes v1 -> v2: No changes, this is just a resent in series with other related patches.
include/net.h | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/include/net.h b/include/net.h index ebed29a..7dbba09 100644 --- a/include/net.h +++ b/include/net.h @@ -86,11 +86,13 @@ enum eth_state_t { * @iobase: The base address of the hardware registers * @enetaddr: The Ethernet MAC address that is loaded from EEPROM or env * @phy_interface: PHY interface to use - see PHY_INTERFACE_MODE_... + * @max_speed: Maximum speed of Ethernet connection supported by MAC */ struct eth_pdata { phys_addr_t iobase; unsigned char enetaddr[6]; int phy_interface; + int max_speed; };
enum eth_recv_flags {

On Wed, Jan 13, 2016 at 7:59 AM, Alexey Brodkin Alexey.Brodkin@synopsys.com wrote:
This will be used for getting max speed mode of Ethernet interface that a particular MAC supports from Device Tree blob and later being used for phy configuration.
Signed-off-by: Alexey Brodkin abrodkin@synopsys.com Cc: Joe Hershberger joe.hershberger@ni.com
Acked-by: Joe Hershberger joe.hershberger@ni.com


Current implementation only sets "port select" bit for non-1Gb mode. That works fine if GMAC has just exited reset state but we may as well change connection mode in runtime. Then we'll need to reprogram GMAC for that new mode of operation and if previous mode was 10 or 100 Mb and new one is 1 Gb we'll need to reset port mode bit.
Signed-off-by: Alexey Brodkin abrodkin@synopsys.com Cc: Bin Meng bmeng.cn@gmail.com Cc: Joe Hershberger joe.hershberger@ni.com Cc: Sonic Zhang sonic.zhang@analog.com cc: Simon Glass sjg@chromium.org ---
Changes v1 -> v2: No changes, this is just a resent in series with other related patches.
drivers/net/designware.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/drivers/net/designware.c b/drivers/net/designware.c index 04114a1..39c7279 100644 --- a/drivers/net/designware.c +++ b/drivers/net/designware.c @@ -196,6 +196,8 @@ static void dw_adjust_link(struct eth_mac_regs *mac_p,
if (phydev->speed != 1000) conf |= MII_PORTSELECT; + else + conf &= ~MII_PORTSELECT;
if (phydev->speed == 100) conf |= FES_100;

On Wed, Jan 13, 2016 at 7:59 AM, Alexey Brodkin Alexey.Brodkin@synopsys.com wrote:
Current implementation only sets "port select" bit for non-1Gb mode. That works fine if GMAC has just exited reset state but we may as well change connection mode in runtime. Then we'll need to reprogram GMAC for that new mode of operation and if previous mode was 10 or 100 Mb and new one is 1 Gb we'll need to reset port mode bit.
Signed-off-by: Alexey Brodkin abrodkin@synopsys.com Cc: Bin Meng bmeng.cn@gmail.com Cc: Joe Hershberger joe.hershberger@ni.com Cc: Sonic Zhang sonic.zhang@analog.com cc: Simon Glass sjg@chromium.org
Acked-by: Joe Hershberger joe.hershberger@ni.com


This property allows to specify fastest connection mode supported by the MAC (as opposed to features of the phy).
There are situations when phy may handle faster modes than the MAC (or even it's particular implementation or even due to CPU being too slow).
This property is a standard one in Linux kernel these days and some boards do already use it in their device tree descriptions.
Signed-off-by: Alexey Brodkin abrodkin@synopsys.com Cc: Bin Meng bmeng.cn@gmail.com Cc: Joe Hershberger joe.hershberger@ni.com Cc: Sonic Zhang sonic.zhang@analog.com cc: Simon Glass sjg@chromium.org ---
Changes v1 -> v2: No changes, this is just a resent in series with other related patches.
drivers/net/designware.c | 14 +++++++++++++- drivers/net/designware.h | 1 + 2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/drivers/net/designware.c b/drivers/net/designware.c index 39c7279..66dc701 100644 --- a/drivers/net/designware.c +++ b/drivers/net/designware.c @@ -406,7 +406,7 @@ static int _dw_free_pkt(struct dw_eth_dev *priv) static int dw_phy_init(struct dw_eth_dev *priv, void *dev) { struct phy_device *phydev; - int mask = 0xffffffff; + int mask = 0xffffffff, ret;
#ifdef CONFIG_PHY_ADDR mask = 1 << CONFIG_PHY_ADDR; @@ -419,6 +419,11 @@ static int dw_phy_init(struct dw_eth_dev *priv, void *dev) phy_connect_dev(phydev, dev);
phydev->supported &= PHY_GBIT_FEATURES; + if (priv->max_speed) { + ret = phy_set_supported(phydev, priv->max_speed); + if (ret) + return ret; + } phydev->advertising = phydev->supported;
priv->phydev = phydev; @@ -601,6 +606,7 @@ static int designware_eth_probe(struct udevice *dev) priv->mac_regs_p = (struct eth_mac_regs *)iobase; priv->dma_regs_p = (struct eth_dma_regs *)(iobase + DW_DMA_BASE_OFFSET); priv->interface = pdata->phy_interface; + priv->max_speed = pdata->max_speed;
dw_mdio_init(dev->name, priv->mac_regs_p); priv->bus = miiphy_get_dev_by_name(dev->name); @@ -635,6 +641,7 @@ static int designware_eth_ofdata_to_platdata(struct udevice *dev) { struct eth_pdata *pdata = dev_get_platdata(dev); const char *phy_mode; + const fdt32_t *cell;
pdata->iobase = dev_get_addr(dev); pdata->phy_interface = -1; @@ -646,6 +653,11 @@ static int designware_eth_ofdata_to_platdata(struct udevice *dev) return -EINVAL; }
+ pdata->max_speed = 0; + cell = fdt_getprop(gd->fdt_blob, dev->of_offset, "max-speed", NULL); + if (cell) + pdata->max_speed = fdt32_to_cpu(*cell); + return 0; }
diff --git a/drivers/net/designware.h b/drivers/net/designware.h index 4b9ec39..ed6344c 100644 --- a/drivers/net/designware.h +++ b/drivers/net/designware.h @@ -223,6 +223,7 @@ struct dw_eth_dev { char rxbuffs[RX_TOTAL_BUFSIZE] __aligned(ARCH_DMA_MINALIGN);
u32 interface; + u32 max_speed; u32 tx_currdescnum; u32 rx_currdescnum;

On Wed, Jan 13, 2016 at 7:59 AM, Alexey Brodkin Alexey.Brodkin@synopsys.com wrote:
This property allows to specify fastest connection mode supported by the MAC (as opposed to features of the phy).
There are situations when phy may handle faster modes than the MAC (or even it's particular implementation or even due to CPU being too slow).
This property is a standard one in Linux kernel these days and some boards do already use it in their device tree descriptions.
Signed-off-by: Alexey Brodkin abrodkin@synopsys.com Cc: Bin Meng bmeng.cn@gmail.com Cc: Joe Hershberger joe.hershberger@ni.com Cc: Sonic Zhang sonic.zhang@analog.com cc: Simon Glass sjg@chromium.org
Acked-by: Joe Hershberger joe.hershberger@ni.com


Hi Joe,
On Wed, 2016-01-13 at 16:59 +0300, Alexey Brodkin wrote:
In some cases Ethernet PHY and network itself might support speeds which are not supported by Ethernet controller (MAC).
To support that kind of situation it is required to force limit PHY so it is not configured for unsupported mode or even if PHY autonegotiated too high speed it will be reconfigured for slower mode.
Note this series is v2 because v1 patches were sent separately not being aranged in series. And now I'm putting all patches in one series and marking it v2 even though no changes were done in patches itself.
Alexey Brodkin (4): drivers/net/phy: introduce phy_set_supported() include/net.h: add max_speed member in struct eth_pdata net/designware: do explicit port selection for 1Gb mode net/designware: add support of max-speed device tree property
Florian Fainelli (2): net: phy: ensure Gigabit features are masked off if requested net: phy: breakdown PHY_*_FEATURES defines
Sascha Hauer (1): net: phy: genphy: Allow overwriting features
drivers/net/designware.c | 16 +++++++++- drivers/net/designware.h | 1 + drivers/net/phy/phy.c | 77 ++++++++++++++++++++++++++++++++++-------------- include/net.h | 2 ++ include/phy.h | 23 ++++++++++----- 5 files changed, 89 insertions(+), 30 deletions(-)
Please treat this as a polite reminder to review that series sometime soon.
-Alexey

Hi Joe,
On Tue, 2016-01-19 at 07:02 +0000, Alexey Brodkin wrote:
Hi Joe,
On Wed, 2016-01-13 at 16:59 +0300, Alexey Brodkin wrote:
In some cases Ethernet PHY and network itself might support speeds which are not supported by Ethernet controller (MAC).
To support that kind of situation it is required to force limit PHY so it is not configured for unsupported mode or even if PHY autonegotiated too high speed it will be reconfigured for slower mode.
Note this series is v2 because v1 patches were sent separately not being aranged in series. And now I'm putting all patches in one series and marking it v2 even though no changes were done in patches itself.
Alexey Brodkin (4): drivers/net/phy: introduce phy_set_supported() include/net.h: add max_speed member in struct eth_pdata net/designware: do explicit port selection for 1Gb mode net/designware: add support of max-speed device tree property
Florian Fainelli (2): net: phy: ensure Gigabit features are masked off if requested net: phy: breakdown PHY_*_FEATURES defines
Sascha Hauer (1): net: phy: genphy: Allow overwriting features
drivers/net/designware.c | 16 +++++++++- drivers/net/designware.h | 1 + drivers/net/phy/phy.c | 77 ++++++++++++++++++++++++++++++++++-------------- include/net.h | 2 ++ include/phy.h | 23 ++++++++++----- 5 files changed, 89 insertions(+), 30 deletions(-)
Please treat this as a polite reminder to review that series sometime soon.
Thank you for reviewing that series. I'm wondering who's going to pick it up?
-Alexey

On Wed, Jan 27, 2016 at 10:23 AM, Alexey Brodkin Alexey.Brodkin@synopsys.com wrote:
Hi Joe,
On Tue, 2016-01-19 at 07:02 +0000, Alexey Brodkin wrote:
Hi Joe,
On Wed, 2016-01-13 at 16:59 +0300, Alexey Brodkin wrote:
In some cases Ethernet PHY and network itself might support speeds which are not supported by Ethernet controller (MAC).
To support that kind of situation it is required to force limit PHY so it is not configured for unsupported mode or even if PHY autonegotiated too high speed it will be reconfigured for slower mode.
Note this series is v2 because v1 patches were sent separately not being aranged in series. And now I'm putting all patches in one series and marking it v2 even though no changes were done in patches itself.
Alexey Brodkin (4): drivers/net/phy: introduce phy_set_supported() include/net.h: add max_speed member in struct eth_pdata net/designware: do explicit port selection for 1Gb mode net/designware: add support of max-speed device tree property
Florian Fainelli (2): net: phy: ensure Gigabit features are masked off if requested net: phy: breakdown PHY_*_FEATURES defines
Sascha Hauer (1): net: phy: genphy: Allow overwriting features
drivers/net/designware.c | 16 +++++++++- drivers/net/designware.h | 1 + drivers/net/phy/phy.c | 77 ++++++++++++++++++++++++++++++++++-------------- include/net.h | 2 ++ include/phy.h | 23 ++++++++++----- 5 files changed, 89 insertions(+), 30 deletions(-)
Please treat this as a polite reminder to review that series sometime soon.
Thank you for reviewing that series. I'm wondering who's going to pick it up?
I'm picking it up now and build testing it.
Thanks, -Joe

Hi Joe,
On Wed, 2016-01-27 at 12:48 -0600, Joe Hershberger wrote:
On Wed, Jan 27, 2016 at 10:23 AM, Alexey Brodkin Alexey.Brodkin@synopsys.com wrote:
Hi Joe,
On Tue, 2016-01-19 at 07:02 +0000, Alexey Brodkin wrote:
Hi Joe,
On Wed, 2016-01-13 at 16:59 +0300, Alexey Brodkin wrote:
In some cases Ethernet PHY and network itself might support speeds which are not supported by Ethernet controller (MAC).
To support that kind of situation it is required to force limit PHY so it is not configured for unsupported mode or even if PHY autonegotiated too high speed it will be reconfigured for slower mode.
Note this series is v2 because v1 patches were sent separately not being aranged in series. And now I'm putting all patches in one series and marking it v2 even though no changes were done in patches itself.
Alexey Brodkin (4): drivers/net/phy: introduce phy_set_supported() include/net.h: add max_speed member in struct eth_pdata net/designware: do explicit port selection for 1Gb mode net/designware: add support of max-speed device tree property
Florian Fainelli (2): net: phy: ensure Gigabit features are masked off if requested net: phy: breakdown PHY_*_FEATURES defines
Sascha Hauer (1): net: phy: genphy: Allow overwriting features
drivers/net/designware.c | 16 +++++++++- drivers/net/designware.h | 1 + drivers/net/phy/phy.c | 77 ++++++++++++++++++++++++++++++++++-------------- include/net.h | 2 ++ include/phy.h | 23 ++++++++++----- 5 files changed, 89 insertions(+), 30 deletions(-)
Please treat this as a polite reminder to review that series sometime soon.
Thank you for reviewing that series. I'm wondering who's going to pick it up?
I'm picking it up now and build testing it.
Thanks for doing that!
-Alexey
participants (3)
-
Alexey Brodkin
-
Joe Hershberger
-
Joe Hershberger