Skip to content

Commit

Permalink
tsnep: Select speed for loopback
Browse files Browse the repository at this point in the history
Use 100 Mbps only if the PHY is configured to this speed. Otherwise use
always the maximum speed of 1000 Mbps.

Also remove explicit setting of carrier on and link mode after loopback.
This is not needed anymore, because phy_loopback() with selected speed
signals the link and the speed to the MAC.

Signed-off-by: Gerhard Engleder <gerhard@engleder-embedded.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://patch.msgid.link/20250312203010.47429-6-gerhard@engleder-embedded.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
  • Loading branch information
Gerhard Engleder authored and Paolo Abeni committed Mar 20, 2025
1 parent 1a0df6c commit 163d744
Showing 1 changed file with 10 additions and 11 deletions.
21 changes: 10 additions & 11 deletions drivers/net/ethernet/engleder/tsnep_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -221,20 +221,19 @@ static void tsnep_phy_link_status_change(struct net_device *netdev)

static int tsnep_phy_loopback(struct tsnep_adapter *adapter, bool enable)
{
int retval;

retval = phy_loopback(adapter->phydev, enable, 0);
int speed;

/* PHY link state change is not signaled if loopback is enabled, it
* would delay a working loopback anyway, let's ensure that loopback
* is working immediately by setting link mode directly
*/
if (!retval && enable) {
netif_carrier_on(adapter->netdev);
tsnep_set_link_mode(adapter);
if (enable) {
if (adapter->phydev->autoneg == AUTONEG_DISABLE &&
adapter->phydev->speed == SPEED_100)
speed = SPEED_100;
else
speed = SPEED_1000;
} else {
speed = 0;
}

return retval;
return phy_loopback(adapter->phydev, enable, speed);
}

static int tsnep_phy_open(struct tsnep_adapter *adapter)
Expand Down

0 comments on commit 163d744

Please sign in to comment.