OpenWrt – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | From b3fe724c76c37a1a3b7744b616a275b44754505f Mon Sep 17 00:00:00 2001 |
2 | From: Phil Elwell <phil@raspberrypi.org> |
||
3 | Date: Thu, 5 Apr 2018 14:46:11 +0100 |
||
4 | Subject: [PATCH 268/454] lan78xx: Move enabling of EEE into PHY init code |
||
5 | |||
6 | Enable EEE mode as soon as possible after connecting to the PHY, and |
||
7 | before phy_start. This avoids a second link negotiation, which speeds |
||
8 | up booting and stops the interface failing to become ready. |
||
9 | |||
10 | See: https://github.com/raspberrypi/linux/issues/2437 |
||
11 | |||
12 | Signed-off-by: Phil Elwell <phil@raspberrypi.org> |
||
13 | --- |
||
14 | drivers/net/usb/lan78xx.c | 32 ++++++++++++++++---------------- |
||
15 | 1 file changed, 16 insertions(+), 16 deletions(-) |
||
16 | |||
17 | --- a/drivers/net/usb/lan78xx.c |
||
18 | +++ b/drivers/net/usb/lan78xx.c |
||
19 | @@ -2073,6 +2073,22 @@ static int lan78xx_phy_init(struct lan78 |
||
20 | mii_adv = (u32)mii_advertise_flowctrl(dev->fc_request_control); |
||
21 | phydev->advertising |= mii_adv_to_ethtool_adv_t(mii_adv); |
||
22 | |||
23 | + if (of_property_read_bool(dev->udev->dev.of_node, |
||
24 | + "microchip,eee-enabled")) { |
||
25 | + struct ethtool_eee edata; |
||
26 | + memset(&edata, 0, sizeof(edata)); |
||
27 | + edata.cmd = ETHTOOL_SEEE; |
||
28 | + edata.advertised = ADVERTISED_1000baseT_Full | |
||
29 | + ADVERTISED_100baseT_Full; |
||
30 | + edata.eee_enabled = true; |
||
31 | + edata.tx_lpi_enabled = true; |
||
32 | + if (of_property_read_u32(dev->udev->dev.of_node, |
||
33 | + "microchip,tx-lpi-timer", |
||
34 | + &edata.tx_lpi_timer)) |
||
35 | + edata.tx_lpi_timer = 600; /* non-aggressive */ |
||
36 | + (void)lan78xx_set_eee(dev->net, &edata); |
||
37 | + } |
||
38 | + |
||
39 | /* Set LED modes: |
||
40 | * led: 0=link/activity 1=link1000/activity |
||
41 | * 2=link100/activity 3=link10/activity |
||
42 | @@ -2540,22 +2556,6 @@ static int lan78xx_open(struct net_devic |
||
43 | |||
44 | netif_dbg(dev, ifup, dev->net, "phy initialised successfully"); |
||
45 | |||
46 | - if (of_property_read_bool(dev->udev->dev.of_node, |
||
47 | - "microchip,eee-enabled")) { |
||
48 | - struct ethtool_eee edata; |
||
49 | - memset(&edata, 0, sizeof(edata)); |
||
50 | - edata.cmd = ETHTOOL_SEEE; |
||
51 | - edata.advertised = ADVERTISED_1000baseT_Full | |
||
52 | - ADVERTISED_100baseT_Full; |
||
53 | - edata.eee_enabled = true; |
||
54 | - edata.tx_lpi_enabled = true; |
||
55 | - if (of_property_read_u32(dev->udev->dev.of_node, |
||
56 | - "microchip,tx-lpi-timer", |
||
57 | - &edata.tx_lpi_timer)) |
||
58 | - edata.tx_lpi_timer = 600; /* non-aggressive */ |
||
59 | - (void)lan78xx_set_eee(net, &edata); |
||
60 | - } |
||
61 | - |
||
62 | /* for Link Check */ |
||
63 | if (dev->urb_intr) { |
||
64 | ret = usb_submit_urb(dev->urb_intr, GFP_KERNEL); |