1. 24 5月, 2018 1 次提交
    • F
      net: phy: broadcom: Fix bcm_write_exp() · 79fb218d
      Florian Fainelli 提交于
      On newer PHYs, we need to select the expansion register to write with
      setting bits [11:8] to 0xf. This was done correctly by bcm7xxx.c prior
      to being migrated to generic code under bcm-phy-lib.c which
      unfortunately used the older implementation from the BCM54xx days.
      
      Fix this by creating an inline stub: bcm_write_exp_sel() which adds the
      correct value (MII_BCM54XX_EXP_SEL_ER) and update both the Cygnus PHY
      and BCM7xxx PHY drivers which require setting these bits.
      
      broadcom.c is unchanged because some PHYs even use a different selector
      method, so let them specify it directly (e.g: SerDes secondary selector).
      
      Fixes: a1cba561 ("net: phy: Add Broadcom phy library for common interfaces")
      Signed-off-by: NFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      79fb218d
  2. 05 3月, 2018 1 次提交
  3. 02 12月, 2017 1 次提交
  4. 02 9月, 2017 1 次提交
  5. 14 3月, 2017 1 次提交
  6. 08 2月, 2017 1 次提交
  7. 23 1月, 2017 2 次提交
  8. 11 12月, 2016 1 次提交
    • T
      net: phy: phy drivers should not set SUPPORTED_[Asym_]Pause · 529ed127
      Timur Tabi 提交于
      Instead of having individual PHY drivers set the SUPPORTED_Pause and
      SUPPORTED_Asym_Pause flags, phylib itself should set those flags,
      unless there is a hardware erratum or other special case.  During
      autonegotiation, the PHYs will determine whether to enable pause
      frame support.
      
      Pause frames are a feature that is supported by the MAC.  It is the MAC
      that generates the frames and that processes them.  The PHY can only be
      configured to allow them to pass through.
      
      This commit also effectively reverts the recently applied c7a61319
      ("net: phy: dp83848: Support ethernet pause frames").
      
      So the new process is:
      
      1) Unless the PHY driver overrides it, phylib sets the SUPPORTED_Pause
      and SUPPORTED_AsymPause bits in phydev->supported.  This indicates that
      the PHY supports pause frames.
      
      2) The MAC driver checks phydev->supported before it calls phy_start().
      If (SUPPORTED_Pause | SUPPORTED_AsymPause) is set, then the MAC driver
      sets those bits in phydev->advertising, if it wants to enable pause
      frame support.
      
      3) When the link state changes, the MAC driver checks phydev->pause and
      phydev->asym_pause,  If the bits are set, then it enables the corresponding
      features in the MAC.  The algorithm is:
      
      	if (phydev->pause)
      		The MAC should be programmed to receive and honor
                      pause frames it receives, i.e. enable receive flow control.
      
      	if (phydev->pause != phydev->asym_pause)
      		The MAC should be programmed to transmit pause
      		frames when needed, i.e. enable transmit flow control.
      Signed-off-by: NTimur Tabi <timur@codeaurora.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      529ed127
  9. 30 11月, 2016 1 次提交
  10. 25 11月, 2016 2 次提交
  11. 25 3月, 2016 1 次提交
  12. 17 2月, 2016 6 次提交
  13. 08 1月, 2016 2 次提交
  14. 26 11月, 2015 1 次提交
  15. 08 10月, 2015 2 次提交
  16. 29 6月, 2015 1 次提交
  17. 09 6月, 2015 1 次提交
  18. 25 5月, 2015 1 次提交
  19. 10 3月, 2015 1 次提交
  20. 09 12月, 2014 1 次提交
  21. 13 11月, 2014 6 次提交
  22. 02 10月, 2014 1 次提交
  23. 20 9月, 2014 2 次提交
  24. 28 8月, 2014 2 次提交