Skip to content

Commit

Permalink
lan78xx: Move enabling of EEE into PHY init code
Browse files Browse the repository at this point in the history
Enable EEE mode as soon as possible after connecting to the PHY, and
before phy_start. This avoids a second link negotiation, which speeds
up booting and stops the interface failing to become ready.

See: #2437

Signed-off-by: Phil Elwell <phil@raspberrypi.org>
  • Loading branch information
Phil Elwell authored and popcornmix committed Feb 6, 2024
1 parent decdb41 commit 788ff6b
Showing 1 changed file with 16 additions and 16 deletions.
32 changes: 16 additions & 16 deletions drivers/net/usb/lan78xx.c
Expand Up @@ -2415,6 +2415,22 @@ static int lan78xx_phy_init(struct lan78xx_net *dev)
mii_adv_to_linkmode_adv_t(fc, mii_adv);
linkmode_or(phydev->advertising, fc, phydev->advertising);

if (of_property_read_bool(dev->udev->dev.of_node,
"microchip,eee-enabled")) {
struct ethtool_eee edata;
memset(&edata, 0, sizeof(edata));
edata.cmd = ETHTOOL_SEEE;
edata.advertised = ADVERTISED_1000baseT_Full |
ADVERTISED_100baseT_Full;
edata.eee_enabled = true;
edata.tx_lpi_enabled = true;
if (of_property_read_u32(dev->udev->dev.of_node,
"microchip,tx-lpi-timer",
&edata.tx_lpi_timer))
edata.tx_lpi_timer = 600; /* non-aggressive */
(void)lan78xx_set_eee(dev->net, &edata);
}

if (phydev->mdio.dev.of_node) {
u32 reg;
int len;
Expand Down Expand Up @@ -3115,22 +3131,6 @@ static int lan78xx_open(struct net_device *net)

netif_dbg(dev, ifup, dev->net, "phy initialised successfully");

if (of_property_read_bool(dev->udev->dev.of_node,
"microchip,eee-enabled")) {
struct ethtool_eee edata;
memset(&edata, 0, sizeof(edata));
edata.cmd = ETHTOOL_SEEE;
edata.advertised = ADVERTISED_1000baseT_Full |
ADVERTISED_100baseT_Full;
edata.eee_enabled = true;
edata.tx_lpi_enabled = true;
if (of_property_read_u32(dev->udev->dev.of_node,
"microchip,tx-lpi-timer",
&edata.tx_lpi_timer))
edata.tx_lpi_timer = 600; /* non-aggressive */
(void)lan78xx_set_eee(net, &edata);
}

/* for Link Check */
if (dev->urb_intr) {
ret = usb_submit_urb(dev->urb_intr, GFP_KERNEL);
Expand Down

0 comments on commit 788ff6b

Please sign in to comment.