1. 19 3月, 2018 3 次提交
    • A
      net: dsa: mv88e6xxx: Add number of internal PHYs · bc393155
      Andrew Lunn 提交于
      Add to the info structure the number of internal PHYs, if they generate
      interrupts. Some of the older generations of switches have internal
      PHYs, but no interrupt registers. In this case, set the count to zero.
      Signed-off-by: NAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      bc393155
    • A
      net: dsa: mv88e6xxx: Add missing g1 IRQ numbers · adfccf11
      Andrew Lunn 提交于
      With the recent change to polling for interrupts, it is important that
      the number of global 1 interrupts is listed. Without it, the driver
      requests an interrupt domain for zero interrupts, which returns
      EINVAL, and the probe fails.
      
      Add two missing entries.
      Signed-off-by: NAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      adfccf11
    • F
      net: dsa: mv88e6xxx: Fix missing register lock in serdes_get_stats · ef44d78d
      Florian Fainelli 提交于
      We can hit the register lock not held assertion with the following path:
      
      [   34.170631] mv88e6085 0.1:00: Switch registers lock not held!
      [   34.176510] CPU: 0 PID: 950 Comm: ethtool Not tainted 4.16.0-rc4 #143
      [   34.182985] Hardware name: Freescale Vybrid VF5xx/VF6xx (Device Tree)
      [   34.189519] Backtrace:
      [   34.192033] [<8010c4b4>] (dump_backtrace) from [<8010c788>] (show_stack+0x20/0x24)
      [   34.199680]  r6:9f5dc010 r5:00000011 r4:9f5dc010 r3:00000000
      [   34.205434] [<8010c768>] (show_stack) from [<80679d38>] (dump_stack+0x24/0x28)
      [   34.212719] [<80679d14>] (dump_stack) from [<804844a8>] (mv88e6xxx_read+0x70/0x7c)
      [   34.220376] [<80484438>] (mv88e6xxx_read) from [<804870dc>] (mv88e6xxx_port_get_cmode+0x34/0x4c)
      [   34.229257]  r5:a09cd128 r4:9ee31d07
      [   34.232880] [<804870a8>] (mv88e6xxx_port_get_cmode) from [<80487e6c>] (mv88e6352_port_has_serdes+0x24/0x64)
      [   34.242690]  r4:9f5dc010
      [   34.245309] [<80487e48>] (mv88e6352_port_has_serdes) from [<804880b8>] (mv88e6352_serdes_get_stats+0x28/0x12c)
      [   34.255389]  r4:00000001
      [   34.257973] [<80488090>] (mv88e6352_serdes_get_stats) from [<804811e8>] (mv88e6xxx_get_ethtool_stats+0xb0/0xc0)
      [   34.268156]  r10:00000000 r9:00000000 r8:00000000 r7:a09cd020 r6:00000001 r5:9f5dc01c
      [   34.276052]  r4:9f5dc010
      [   34.278631] [<80481138>] (mv88e6xxx_get_ethtool_stats) from [<8064f740>] (dsa_slave_get_ethtool_stats+0xbc/0xc4)
      
      mv88e6xxx_get_ethtool_stats() calls mv88e6xxx_get_stats() which calls both
      chip->info->ops->stats_get_stats(), which holds the register lock, and
      chip->info->ops->serdes_get_stats() which does not. Have
      chip->info->ops->serdes_get_stats() be running with the register lock held to
      avoid such assertions.
      
      Fixes: 436fe17d ("net: dsa: mv88e6xxx: Allow the SERDES interfaces to have statistics")
      Signed-off-by: NFlorian Fainelli <f.fainelli@gmail.com>
      Reviewed-by: NAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ef44d78d
  2. 18 3月, 2018 1 次提交
  3. 10 3月, 2018 1 次提交
  4. 05 3月, 2018 4 次提交
  5. 27 2月, 2018 1 次提交
    • A
      net: dsa: mv88e6xxx: Poll when no interrupt defined · 294d711e
      Andrew Lunn 提交于
      Not all boards have the interrupt output from the switch connected to
      a GPIO line. In such cases, phylib has to poll the internal PHYs,
      rather than receive an interrupt when there is a change in the link
      state. phylib polls once per second, and per PHY reads around 4
      words. With a switch typically having 4 internal PHYs, this means 16
      MDIO transactions per second.
      
      Rather than performing this phylib level polling, have the driver poll
      the interrupt status register. If the status register indicates an
      interrupt condition processing of interrupts in the same way as if a
      GPIO was used.
      
      Polling 10 times a second places less load on the MDIO bus. But rather
      than taking on average 0.5s to detect a link change, it takes less
      than 0.05s. Additionally, other interrupts, such as the watchdog, ATU
      and VTU violations will be reported.
      Signed-off-by: NAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      294d711e
  6. 23 2月, 2018 1 次提交
  7. 17 2月, 2018 2 次提交
  8. 15 2月, 2018 4 次提交
  9. 20 1月, 2018 1 次提交
  10. 15 1月, 2018 2 次提交
  11. 08 12月, 2017 3 次提交
  12. 06 12月, 2017 4 次提交
  13. 03 12月, 2017 2 次提交
  14. 13 11月, 2017 1 次提交
  15. 11 11月, 2017 5 次提交
  16. 27 10月, 2017 2 次提交
  17. 18 10月, 2017 2 次提交
  18. 15 10月, 2017 1 次提交
    • V
      net: dsa: mv88e6xxx: setup random mac address · 04a69a17
      Vivien Didelot 提交于
      An Ethernet switch may support having a MAC address, which can be used
      as the switch's source address in transmitted full-duplex Pause frames.
      
      If a DSA switch supports the related .set_addr operation, the DSA core
      sets the master's MAC address on the switch. This won't make sense
      anymore in a multi-CPU ports system, because there won't be a unique
      master device assigned to a switch tree.
      
      Instead, setup the switch from within the Marvell driver with a random
      MAC address, and remove the .set_addr implementation.
      Signed-off-by: NVivien Didelot <vivien.didelot@savoirfairelinux.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      04a69a17