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 committed Apr 5, 2018
1 parent 274cd7b commit c2eb306
Showing 1 changed file with 16 additions and 16 deletions.
32 changes: 16 additions & 16 deletions drivers/net/usb/lan78xx.c
Original file line number Diff line number Diff line change
Expand Up @@ -2093,6 +2093,22 @@ static int lan78xx_phy_init(struct lan78xx_net *dev)
mii_adv = (u32)mii_advertise_flowctrl(dev->fc_request_control);
phydev->advertising |= mii_adv_to_ethtool_adv_t(mii_adv);

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);
}

/* Set LED modes:
* led: 0=link/activity 1=link1000/activity
* 2=link100/activity 3=link10/activity
Expand Down Expand Up @@ -2557,22 +2573,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

3 comments on commit c2eb306

@agraf
Copy link
Contributor

@agraf agraf commented on c2eb306 Apr 6, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Has this been posted to the netdev ML? If not, please do so.

@pelwell
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a followup to another downstream patch, so they'll have to be squashed and tidied up, including adding the DT bindings, but it is on the To Do list.

@pelwell
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A series of DT-related lan78xx patches has been submitted.

Please sign in to comment.