Skip to contentSkip to conversation

net: add support for phy speed limitation

PATCH Superseded Alexey Brodkin 3 participants 26 messages Jan 13, 2016 – Jan 29, 2016

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

v2 cover 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(-)
Signature · 1 line
2.4.3
#1 lore raw

PATCH v2 1/7 net: phy: ensure Gigabit features are masked off if requested

From: Florian Fainelli <[email protected]>

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=5273e3a5ca94fbeb8e07d31203069220d5e682aa

---

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(-)
drivers/net/phy/phy.c +26 -17
index 51b5746..084276f 100644
@@ -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;
 }
Signature · 1 line
2.4.3
#2 lore raw

PATCH v2 1/7 net: phy: ensure Gigabit features are masked off if requested

Quoted 17 lines · Alexey Brodkin

From: Florian Fainelli <[email protected]>

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.

Quoted 7 lines

This is a copy of patch from Linux kernel, see
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=5273e3a5ca94fbeb8e07d31203069220d5e682aa

---

#4 lore raw

PATCH v2 2/7 net: phy: genphy: Allow overwriting features

In reply to Alexey Brodkin

From: Sascha Hauer <[email protected]>

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=c242a47238fa2a6a54af8a16e62b54e6e031d4bc

---

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(-)
drivers/net/phy/phy.c +5 -5
index 084276f..ec9be6b 100644
@@ -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,
Signature · 1 line
2.4.3
#5 lore raw

PATCH v2 2/7 net: phy: genphy: Allow overwriting features

Quoted 11 lines · Alexey Brodkin

From: Sascha Hauer <[email protected]>

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.

Quoted 6 lines

This is a copy of the patch from Linux kernel, see
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c242a47238fa2a6a54af8a16e62b54e6e031d4bc

#7 lore raw

PATCH v2 3/7 net: phy: breakdown PHY_*_FEATURES defines

In reply to Alexey Brodkin

From: Florian Fainelli <[email protected]>

Breakdown the PHY_*_FEATURES into per speed defines such that we can easily re-use them individually.

---

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(-)
include/phy.h +15 -7
index 66cf61b..b793e90 100644
@@ -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)
 
Signature · 1 line
2.4.3
#10 lore raw

PATCH v2 4/7 drivers/net/phy: introduce phy_set_supported()

In reply to Alexey Brodkin

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.

---

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(+)
drivers/net/phy/phy.c +24 -0
index ec9be6b..4ad4e78 100644
@@ -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;
include/phy.h +1 -0
index b793e90..e030c9f 100644
@@ -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);
Signature · 1 line
2.4.3
#11 lore raw

PATCH v2 4/7 drivers/net/phy: introduce phy_set_supported()

Quoted 9 lines · Alexey Brodkin

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.

#13 lore raw

PATCH v2 5/7 include/net.h: add max_speed member in struct eth_pdata

In reply to Alexey Brodkin

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.

---

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(+)
include/net.h +2 -0
index ebed29a..7dbba09 100644
@@ -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 {
Signature · 1 line
2.4.3
#16 lore raw

PATCH v2 6/7 net/designware: do explicit port selection for 1Gb mode

In reply to Alexey Brodkin

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.

Cc Bin Meng <[email protected]>
Cc Joe Hershberger <[email protected]>
Cc Sonic Zhang <[email protected]>
cc Simon Glass <[email protected]>

---

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(+)
drivers/net/designware.c +2 -0
index 04114a1..39c7279 100644
@@ -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;
Signature · 1 line
2.4.3
#17 lore raw

PATCH v2 6/7 net/designware: do explicit port selection for 1Gb mode

Quoted 11 lines · Alexey Brodkin

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.

Cc Bin Meng <[email protected]>
Cc Joe Hershberger <[email protected]>
Cc Sonic Zhang <[email protected]>
cc Simon Glass <[email protected]>
#19 lore raw

PATCH v2 7/7 net/designware: add support of max-speed device tree property

In reply to Alexey Brodkin

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.

Cc Bin Meng <[email protected]>
Cc Joe Hershberger <[email protected]>
Cc Sonic Zhang <[email protected]>
cc Simon Glass <[email protected]>

---

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(-)
drivers/net/designware.c +13 -1
index 39c7279..66dc701 100644
@@ -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;
 }
 
drivers/net/designware.h +1 -0
index 4b9ec39..ed6344c 100644
@@ -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;
 
Signature · 1 line
2.4.3
#20 lore raw

PATCH v2 7/7 net/designware: add support of max-speed device tree property

Quoted 7 lines · Alexey Brodkin

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).

Quoted 8 lines

This property is a standard one in Linux kernel these days and some boards do already use it in their device tree descriptions.

Cc Bin Meng <[email protected]>
Cc Joe Hershberger <[email protected]>
Cc Sonic Zhang <[email protected]>
cc Simon Glass <[email protected]>
#22 lore raw

v2 cover net: add support for phy speed limitation

In reply to Alexey Brodkin

Hi Joe,

Quoted 24 lines · Alexey Brodkin

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

Quoted 6 lines
 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

#23 lore raw

v2 cover net: add support for phy speed limitation

Hi Joe,

Quoted 34 lines · Alexey Brodkin

Hi Joe,

Quoted 24 lines · Alexey Brodkin

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

Quoted 6 lines
 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(-)
Quoted 2 lines

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

#24 lore raw

v2 cover net: add support for phy speed limitation

Quoted 37 lines · Alexey Brodkin

Hi Joe,

Quoted 34 lines · Alexey Brodkin

Hi Joe,

Quoted 30 lines · Alexey Brodkin

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(-)
Quoted 5 lines
Quoted 2 lines

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

#25 lore raw

v2 cover net: add support for phy speed limitation

Hi Joe,

Quoted 39 lines · Joe Hershberger
Quoted 37 lines · Alexey Brodkin

Hi Joe,

Quoted 34 lines · Alexey Brodkin

Hi Joe,

Quoted 30 lines · Alexey Brodkin

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(-)
Quoted 7 lines
Quoted 5 lines
Quoted 2 lines

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