diff mbox

[net-next,3/9] phy: fixed_phy: Set supported speed in phydev

Message ID 1440323220-20438-4-git-send-email-andrew@lunn.ch
State Changes Requested, archived
Delegated to: David Miller
Headers show

Commit Message

Andrew Lunn Aug. 23, 2015, 9:46 a.m. UTC
Set the supported field of the phydev to indicate the speed features
of the phy. If the phy is never attached to a netdev, but used in an
adjust_link() function, the speed will be incorrectly evaluated to
10/half rather than the correct speed/duplex.

Signed-off-by: Andrew Lunn <andrew@lunn.ch>
---
 drivers/net/phy/fixed_phy.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

Comments

Florian Fainelli Aug. 23, 2015, 6:54 p.m. UTC | #1
Le 08/23/15 02:46, Andrew Lunn a écrit :
> Set the supported field of the phydev to indicate the speed features
> of the phy. If the phy is never attached to a netdev, but used in an
> adjust_link() function, the speed will be incorrectly evaluated to
> 10/half rather than the correct speed/duplex.

As mentioned in patch 4, the behavior is not really specified before you
attach to the PHY device, and therefore configured by the PHY library,
still:

> 
> Signed-off-by: Andrew Lunn <andrew@lunn.ch>

Acked-by: Florian Fainelli <f.fainelli@gmail.com>
diff mbox

Patch

diff --git a/drivers/net/phy/fixed_phy.c b/drivers/net/phy/fixed_phy.c
index 1a400ef92d65..7244336dee7a 100644
--- a/drivers/net/phy/fixed_phy.c
+++ b/drivers/net/phy/fixed_phy.c
@@ -296,6 +296,18 @@  struct phy_device *fixed_phy_register(unsigned int irq,
 	phy->dev.of_node = np;
 	phy->is_pseudo_fixed_link = true;
 
+	switch (status->speed) {
+	case SPEED_1000:
+		phy->supported = PHY_1000BT_FEATURES;
+		break;
+	case SPEED_100:
+		phy->supported = PHY_100BT_FEATURES;
+		break;
+	case SPEED_10:
+	default:
+		phy->supported = PHY_10BT_FEATURES;
+	}
+
 	ret = phy_device_register(phy);
 	if (ret) {
 		phy_device_free(phy);